squish-memory 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.mcp.example +18 -11
- package/README.md +59 -24
- package/bin/squish-add.mjs +32 -0
- package/bin/squish-rm.mjs +21 -0
- package/config/plugin-manifest.json +1 -1
- package/config/settings.json +51 -0
- package/dist/api/web/web.js +479 -452
- package/dist/commands/mcp-server.js +7 -3
- package/dist/config.d.ts +10 -10
- package/dist/config.js +78 -23
- package/dist/core/embeddings.d.ts +1 -1
- package/dist/core/embeddings.js +10 -67
- package/dist/core/local-embeddings.d.ts +3 -11
- package/dist/core/local-embeddings.js +2 -76
- package/dist/core/mcp/server.js +27 -1
- package/dist/core/mcp/types.d.ts +4 -4
- package/dist/core/memory/context-collector.js +3 -2
- package/dist/core/memory/feedback-tracker.js +10 -6
- package/dist/core/memory/hybrid-search.js +32 -32
- package/dist/core/memory/memories.js +55 -52
- package/dist/core/memory/query-rewriter.js +9 -9
- package/dist/core/memory/stats.js +5 -5
- package/dist/core/namespaces/index.js +20 -11
- package/dist/core/scheduler/cron-scheduler.js +78 -20
- package/dist/core/scheduler/job-runner.js +8 -5
- package/dist/core/search/conversations.js +33 -33
- package/dist/core/session-hooks/self-iteration-job.js +43 -39
- package/dist/core/session-hooks/session-hooks.js +6 -3
- package/dist/core/tracing/collector.js +25 -13
- package/dist/db/adapter.d.ts +6 -1
- package/dist/db/adapter.js +122 -126
- package/dist/db/bootstrap.js +622 -548
- package/dist/db/index.d.ts +5 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +195 -49
- package/generated/mcp/manifest.json +23 -23
- package/package.json +72 -59
- package/scripts/install-interactive.mjs +7 -4
- package/skills/memory-guide/SKILL.md +94 -18
- package/skills/squish-cli/SKILL.md +61 -21
- package/skills/squish-mcp/SKILL.md +46 -2
- package/skills/squish-memory/SKILL.md +30 -16
- package/dist/algorithms/analytics/token-estimator.d.ts.map +0 -1
- package/dist/algorithms/analytics/token-estimator.js.map +0 -1
- package/dist/algorithms/detection/hash-filters.d.ts.map +0 -1
- package/dist/algorithms/detection/hash-filters.js.map +0 -1
- package/dist/algorithms/detection/semantic-ranker.d.ts.map +0 -1
- package/dist/algorithms/detection/semantic-ranker.js.map +0 -1
- package/dist/algorithms/detection/two-stage-detector.d.ts.map +0 -1
- package/dist/algorithms/detection/two-stage-detector.js.map +0 -1
- package/dist/algorithms/handlers/approve-merge.d.ts.map +0 -1
- package/dist/algorithms/handlers/approve-merge.js.map +0 -1
- package/dist/algorithms/handlers/detect-duplicates.d.ts.map +0 -1
- package/dist/algorithms/handlers/detect-duplicates.js.map +0 -1
- package/dist/algorithms/handlers/get-stats.d.ts.map +0 -1
- package/dist/algorithms/handlers/get-stats.js.map +0 -1
- package/dist/algorithms/handlers/list-proposals.d.ts.map +0 -1
- package/dist/algorithms/handlers/list-proposals.js.map +0 -1
- package/dist/algorithms/handlers/preview-merge.d.ts.map +0 -1
- package/dist/algorithms/handlers/preview-merge.js.map +0 -1
- package/dist/algorithms/handlers/reject-merge.d.ts.map +0 -1
- package/dist/algorithms/handlers/reject-merge.js.map +0 -1
- package/dist/algorithms/handlers/reverse-merge.d.ts.map +0 -1
- package/dist/algorithms/handlers/reverse-merge.js.map +0 -1
- package/dist/algorithms/safety/safety-checks.d.ts.map +0 -1
- package/dist/algorithms/safety/safety-checks.js.map +0 -1
- package/dist/algorithms/strategies/merge-strategies.d.ts.map +0 -1
- package/dist/algorithms/strategies/merge-strategies.js.map +0 -1
- package/dist/algorithms/utils/response-builder.d.ts.map +0 -1
- package/dist/algorithms/utils/response-builder.js.map +0 -1
- package/dist/api/web/index.d.ts.map +0 -1
- package/dist/api/web/index.js.map +0 -1
- package/dist/api/web/web-server.d.ts.map +0 -1
- package/dist/api/web/web-server.js.map +0 -1
- package/dist/api/web/web.d.ts.map +0 -1
- package/dist/api/web/web.js.map +0 -1
- package/dist/commands/managed-sync.d.ts.map +0 -1
- package/dist/commands/managed-sync.js.map +0 -1
- package/dist/commands/mcp-server.d.ts.map +0 -1
- package/dist/commands/mcp-server.js.map +0 -1
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js.map +0 -1
- package/dist/core/agent-memory.d.ts.map +0 -1
- package/dist/core/agent-memory.js.map +0 -1
- package/dist/core/associations.d.ts.map +0 -1
- package/dist/core/associations.js.map +0 -1
- package/dist/core/cache.d.ts.map +0 -1
- package/dist/core/cache.js.map +0 -1
- package/dist/core/consolidation.d.ts.map +0 -1
- package/dist/core/consolidation.js.map +0 -1
- package/dist/core/context-paging.d.ts.map +0 -1
- package/dist/core/context-paging.js.map +0 -1
- package/dist/core/context.d.ts.map +0 -1
- package/dist/core/context.js.map +0 -1
- package/dist/core/core-memory.d.ts.map +0 -1
- package/dist/core/core-memory.js.map +0 -1
- package/dist/core/database.d.ts.map +0 -1
- package/dist/core/database.js.map +0 -1
- package/dist/core/embeddings/google-multimodal.d.ts.map +0 -1
- package/dist/core/embeddings/google-multimodal.js.map +0 -1
- package/dist/core/embeddings/qmd-client.d.ts.map +0 -1
- package/dist/core/embeddings/qmd-client.js.map +0 -1
- package/dist/core/embeddings.d.ts.map +0 -1
- package/dist/core/embeddings.js.map +0 -1
- package/dist/core/governance.d.ts.map +0 -1
- package/dist/core/governance.js.map +0 -1
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js.map +0 -1
- package/dist/core/layers/generator.d.ts.map +0 -1
- package/dist/core/layers/generator.js.map +0 -1
- package/dist/core/lifecycle.d.ts.map +0 -1
- package/dist/core/lifecycle.js.map +0 -1
- package/dist/core/local-embeddings.d.ts.map +0 -1
- package/dist/core/local-embeddings.js.map +0 -1
- package/dist/core/logger.d.ts.map +0 -1
- package/dist/core/logger.js.map +0 -1
- package/dist/core/mcp/client.d.ts.map +0 -1
- package/dist/core/mcp/client.js.map +0 -1
- package/dist/core/mcp/index.d.ts.map +0 -1
- package/dist/core/mcp/index.js.map +0 -1
- package/dist/core/mcp/server.d.ts.map +0 -1
- package/dist/core/mcp/server.js.map +0 -1
- package/dist/core/mcp/standalone-server.d.ts.map +0 -1
- package/dist/core/mcp/standalone-server.js.map +0 -1
- package/dist/core/mcp/tools.d.ts.map +0 -1
- package/dist/core/mcp/tools.js.map +0 -1
- package/dist/core/mcp/types.d.ts.map +0 -1
- package/dist/core/mcp/types.js.map +0 -1
- package/dist/core/memory/bridge-discovery.d.ts.map +0 -1
- package/dist/core/memory/bridge-discovery.js.map +0 -1
- package/dist/core/memory/categorizer.d.ts.map +0 -1
- package/dist/core/memory/categorizer.js.map +0 -1
- package/dist/core/memory/conflict-detector.d.ts.map +0 -1
- package/dist/core/memory/conflict-detector.js.map +0 -1
- package/dist/core/memory/consolidation.d.ts.map +0 -1
- package/dist/core/memory/consolidation.js.map +0 -1
- package/dist/core/memory/context-collector.d.ts.map +0 -1
- package/dist/core/memory/context-collector.js.map +0 -1
- package/dist/core/memory/contradiction-resolver.d.ts.map +0 -1
- package/dist/core/memory/contradiction-resolver.js.map +0 -1
- package/dist/core/memory/edit-workflow.d.ts.map +0 -1
- package/dist/core/memory/edit-workflow.js.map +0 -1
- package/dist/core/memory/entity-extractor.d.ts.map +0 -1
- package/dist/core/memory/entity-extractor.js.map +0 -1
- package/dist/core/memory/entity-resolver.d.ts.map +0 -1
- package/dist/core/memory/entity-resolver.js.map +0 -1
- package/dist/core/memory/fact-extractor.d.ts.map +0 -1
- package/dist/core/memory/fact-extractor.js.map +0 -1
- package/dist/core/memory/feedback-tracker.d.ts.map +0 -1
- package/dist/core/memory/feedback-tracker.js.map +0 -1
- package/dist/core/memory/hybrid-retrieval.d.ts.map +0 -1
- package/dist/core/memory/hybrid-retrieval.js.map +0 -1
- package/dist/core/memory/hybrid-scorer.d.ts.map +0 -1
- package/dist/core/memory/hybrid-scorer.js.map +0 -1
- package/dist/core/memory/hybrid-search.d.ts.map +0 -1
- package/dist/core/memory/hybrid-search.js.map +0 -1
- package/dist/core/memory/importance.d.ts.map +0 -1
- package/dist/core/memory/importance.js.map +0 -1
- package/dist/core/memory/index.d.ts.map +0 -1
- package/dist/core/memory/index.js.map +0 -1
- package/dist/core/memory/memories.d.ts.map +0 -1
- package/dist/core/memory/memories.js.map +0 -1
- package/dist/core/memory/memory-manager.d.ts.map +0 -1
- package/dist/core/memory/memory-manager.js.map +0 -1
- package/dist/core/memory/progressive-disclosure.d.ts.map +0 -1
- package/dist/core/memory/progressive-disclosure.js.map +0 -1
- package/dist/core/memory/query-processor.d.ts.map +0 -1
- package/dist/core/memory/query-processor.js.map +0 -1
- package/dist/core/memory/query-rewriter.d.ts.map +0 -1
- package/dist/core/memory/query-rewriter.js.map +0 -1
- package/dist/core/memory/response-analyzer.d.ts.map +0 -1
- package/dist/core/memory/response-analyzer.js.map +0 -1
- package/dist/core/memory/serialization.d.ts.map +0 -1
- package/dist/core/memory/serialization.js.map +0 -1
- package/dist/core/memory/stats.d.ts.map +0 -1
- package/dist/core/memory/stats.js.map +0 -1
- package/dist/core/memory/telemetry.d.ts.map +0 -1
- package/dist/core/memory/telemetry.js.map +0 -1
- package/dist/core/memory/temporal-facts.d.ts.map +0 -1
- package/dist/core/memory/temporal-facts.js.map +0 -1
- package/dist/core/memory/temporal-parser.d.ts.map +0 -1
- package/dist/core/memory/temporal-parser.js.map +0 -1
- package/dist/core/memory/trigger-detector.d.ts.map +0 -1
- package/dist/core/memory/trigger-detector.js.map +0 -1
- package/dist/core/memory/write-gate.d.ts.map +0 -1
- package/dist/core/memory/write-gate.js.map +0 -1
- package/dist/core/namespaces/index.d.ts.map +0 -1
- package/dist/core/namespaces/index.js.map +0 -1
- package/dist/core/namespaces/uri-parser.d.ts.map +0 -1
- package/dist/core/namespaces/uri-parser.js.map +0 -1
- package/dist/core/observations.d.ts.map +0 -1
- package/dist/core/observations.js.map +0 -1
- package/dist/core/privacy.d.ts.map +0 -1
- package/dist/core/privacy.js.map +0 -1
- package/dist/core/projects.d.ts.map +0 -1
- package/dist/core/projects.js.map +0 -1
- package/dist/core/redis.d.ts.map +0 -1
- package/dist/core/redis.js.map +0 -1
- package/dist/core/requirements.d.ts.map +0 -1
- package/dist/core/requirements.js.map +0 -1
- package/dist/core/scheduler/cron-scheduler.d.ts.map +0 -1
- package/dist/core/scheduler/cron-scheduler.js.map +0 -1
- package/dist/core/scheduler/heartbeat.d.ts.map +0 -1
- package/dist/core/scheduler/heartbeat.js.map +0 -1
- package/dist/core/scheduler/index.d.ts.map +0 -1
- package/dist/core/scheduler/index.js.map +0 -1
- package/dist/core/scheduler/job-runner.d.ts.map +0 -1
- package/dist/core/scheduler/job-runner.js.map +0 -1
- package/dist/core/search/conversations.d.ts.map +0 -1
- package/dist/core/search/conversations.js.map +0 -1
- package/dist/core/search/entities.d.ts.map +0 -1
- package/dist/core/search/entities.js.map +0 -1
- package/dist/core/search/folder-context.d.ts.map +0 -1
- package/dist/core/search/folder-context.js.map +0 -1
- package/dist/core/search/index.d.ts.map +0 -1
- package/dist/core/search/index.js.map +0 -1
- package/dist/core/search/qmd-search.d.ts.map +0 -1
- package/dist/core/search/qmd-search.js.map +0 -1
- package/dist/core/secret-detector.d.ts.map +0 -1
- package/dist/core/secret-detector.js.map +0 -1
- package/dist/core/session/auto-load.d.ts.map +0 -1
- package/dist/core/session/auto-load.js.map +0 -1
- package/dist/core/session/index.d.ts.map +0 -1
- package/dist/core/session/index.js.map +0 -1
- package/dist/core/session/types.d.ts.map +0 -1
- package/dist/core/session/types.js.map +0 -1
- package/dist/core/session-hooks/self-iteration-job.d.ts.map +0 -1
- package/dist/core/session-hooks/self-iteration-job.js.map +0 -1
- package/dist/core/session-hooks/session-hooks.d.ts.map +0 -1
- package/dist/core/session-hooks/session-hooks.js.map +0 -1
- package/dist/core/snapshots/cleanup.d.ts.map +0 -1
- package/dist/core/snapshots/cleanup.js.map +0 -1
- package/dist/core/snapshots/comparison.d.ts.map +0 -1
- package/dist/core/snapshots/comparison.js.map +0 -1
- package/dist/core/snapshots/creation.d.ts.map +0 -1
- package/dist/core/snapshots/creation.js.map +0 -1
- package/dist/core/snapshots/retrieval.d.ts.map +0 -1
- package/dist/core/snapshots/retrieval.js.map +0 -1
- package/dist/core/snapshots/stats.d.ts.map +0 -1
- package/dist/core/snapshots/stats.js.map +0 -1
- package/dist/core/snapshots.d.ts.map +0 -1
- package/dist/core/snapshots.js.map +0 -1
- package/dist/core/summarization/cleanup.d.ts.map +0 -1
- package/dist/core/summarization/cleanup.js.map +0 -1
- package/dist/core/summarization/queries.d.ts.map +0 -1
- package/dist/core/summarization/queries.js.map +0 -1
- package/dist/core/summarization/stats.d.ts.map +0 -1
- package/dist/core/summarization/stats.js.map +0 -1
- package/dist/core/summarization/strategies.d.ts.map +0 -1
- package/dist/core/summarization/strategies.js.map +0 -1
- package/dist/core/summarization.d.ts.map +0 -1
- package/dist/core/summarization.js.map +0 -1
- package/dist/core/sync/qmd-sync.d.ts.map +0 -1
- package/dist/core/sync/qmd-sync.js.map +0 -1
- package/dist/core/temporal-facts.d.ts.map +0 -1
- package/dist/core/temporal-facts.js.map +0 -1
- package/dist/core/tracing/collector.d.ts.map +0 -1
- package/dist/core/tracing/collector.js.map +0 -1
- package/dist/core/tracing/visualizer.d.ts.map +0 -1
- package/dist/core/tracing/visualizer.js.map +0 -1
- package/dist/core/utils/cleanup-operations.d.ts.map +0 -1
- package/dist/core/utils/cleanup-operations.js.map +0 -1
- package/dist/core/utils/content-extraction.d.ts.map +0 -1
- package/dist/core/utils/content-extraction.js.map +0 -1
- package/dist/core/utils/filter-builder.d.ts.map +0 -1
- package/dist/core/utils/filter-builder.js.map +0 -1
- package/dist/core/utils/history-traversal.d.ts.map +0 -1
- package/dist/core/utils/history-traversal.js.map +0 -1
- package/dist/core/utils/memory-operations.d.ts.map +0 -1
- package/dist/core/utils/memory-operations.js.map +0 -1
- package/dist/core/utils/query-operations.d.ts.map +0 -1
- package/dist/core/utils/query-operations.js.map +0 -1
- package/dist/core/utils/summarization-helpers.d.ts.map +0 -1
- package/dist/core/utils/summarization-helpers.js.map +0 -1
- package/dist/core/utils/temporal-queries.d.ts.map +0 -1
- package/dist/core/utils/temporal-queries.js.map +0 -1
- package/dist/core/utils/version-management.d.ts.map +0 -1
- package/dist/core/utils/version-management.js.map +0 -1
- package/dist/core/utils.d.ts.map +0 -1
- package/dist/core/utils.js.map +0 -1
- package/dist/core/worker.d.ts.map +0 -1
- package/dist/core/worker.js.map +0 -1
- package/dist/db/adapter.d.ts.map +0 -1
- package/dist/db/adapter.js.map +0 -1
- package/dist/db/bootstrap.d.ts.map +0 -1
- package/dist/db/bootstrap.js.map +0 -1
- package/dist/db/index.d.ts.map +0 -1
- package/dist/db/index.js.map +0 -1
- package/dist/db/schema.d.ts.map +0 -1
- package/dist/db/schema.js.map +0 -1
- package/dist/drizzle/schema-sqlite.d.ts.map +0 -1
- package/dist/drizzle/schema-sqlite.js.map +0 -1
- package/dist/drizzle/schema.d.ts.map +0 -1
- package/dist/drizzle/schema.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/packages/plugin-claude-code/dist/plugin-wrapper.d.ts.map +0 -1
- package/packages/plugin-claude-code/dist/plugin-wrapper.js.map +0 -1
- package/packages/plugin-openclaw/dist/index.d.ts.map +0 -1
- package/packages/plugin-openclaw/dist/index.js.map +0 -1
package/.env.mcp.example
CHANGED
|
@@ -2,26 +2,33 @@
|
|
|
2
2
|
SQUISH_MCP_PORT=8767
|
|
3
3
|
SQUISH_MCP_SERVER_ENABLED=true
|
|
4
4
|
|
|
5
|
-
#
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
# CORS Configuration (comma-separated origins, * wildcard for port)
|
|
6
|
+
# Default: localhost and 127.0.0.1 on any port
|
|
7
|
+
# SQUISH_CORS_ORIGINS=http://localhost:3000,http://127.0.0.1:8080
|
|
8
8
|
|
|
9
|
-
#
|
|
9
|
+
# Embeddings Provider: local | openai | ollama | google | none | auto
|
|
10
|
+
# Default: local (TF-IDF, no API needed)
|
|
11
|
+
SQUISH_EMBEDDINGS_PROVIDER=local
|
|
12
|
+
|
|
13
|
+
# Model Selection (optional - uses defaults if not set)
|
|
14
|
+
# SQUISH_OPENAI_EMBEDDING_MODEL=text-embedding-3-small
|
|
15
|
+
# SQUISH_GOOGLE_EMBEDDING_MODEL=gemini-embedding-001
|
|
16
|
+
# SQUISH_OLLAMA_EMBEDDING_MODEL=nomic-embed-text:v1.5
|
|
17
|
+
|
|
18
|
+
# Google Cloud (for google provider)
|
|
10
19
|
# Get API key from: https://console.cloud.google.com/apis/credentials
|
|
11
|
-
GOOGLE_CLOUD_PROJECT=your-project-id
|
|
12
|
-
GOOGLE_CLOUD_LOCATION=us-central1
|
|
20
|
+
# GOOGLE_CLOUD_PROJECT=your-project-id
|
|
21
|
+
# GOOGLE_CLOUD_LOCATION=us-central1
|
|
13
22
|
# GOOGLE_CLOUD_API_KEY=your-api-key
|
|
14
23
|
# Or use service account:
|
|
15
24
|
# GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
|
|
16
25
|
|
|
17
|
-
# OpenAI
|
|
26
|
+
# OpenAI (for openai provider or auto mode)
|
|
18
27
|
# SQUISH_OPENAI_API_KEY=sk-...
|
|
19
28
|
# SQUISH_OPENAI_API_URL=https://api.openai.com/v1/embeddings
|
|
20
|
-
# SQUISH_OPENAI_EMBEDDING_MODEL=text-embedding-3-small
|
|
21
29
|
|
|
22
|
-
# Ollama
|
|
30
|
+
# Ollama (for ollama provider or auto mode)
|
|
23
31
|
# SQUISH_OLLAMA_URL=http://localhost:11434
|
|
24
|
-
# SQUISH_OLLAMA_EMBEDDING_MODEL=nomic-embed-text:v1.5
|
|
25
32
|
|
|
26
33
|
# Embedding performance & reliability
|
|
27
34
|
SQUISH_EMBEDDINGS_TIMEOUT_MS=30000
|
|
@@ -30,7 +37,7 @@ SQUISH_EMBEDDINGS_RETRY_DELAY_MS=1000
|
|
|
30
37
|
# Per-provider overrides (optional)
|
|
31
38
|
# SQUISH_OPENAI_TIMEOUT_MS=30000
|
|
32
39
|
# SQUISH_OLLAMA_TIMEOUT_MS=30000
|
|
33
|
-
#
|
|
40
|
+
# SQUISH_GOOGLE_TIMEOUT_MS=30000
|
|
34
41
|
|
|
35
42
|
# QMD for local markdown search
|
|
36
43
|
SQUISH_QMD_ENABLED=true
|
package/README.md
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
# Squish - Universal Two-Tier Memory for AI Agents
|
|
2
2
|
|
|
3
|
+
[](https://www.npmjs.com/package/squish-memory)
|
|
4
|
+
[](https://www.npmjs.com/package/squish-memory)
|
|
5
|
+
[](https://opensource.org/licenses/MIT)
|
|
6
|
+
[](https://www.typescriptlang.org/)
|
|
7
|
+
|
|
3
8
|
**Squish gives any AI agent persistent, intelligent memory through a two-tier architecture.** Without memory, agents forget everything between sessions. With Squish, they learn, adapt, and get smarter over time - regardless of which agent framework you use.
|
|
4
9
|
|
|
5
10
|
```bash
|
|
6
11
|
npm install squish-memory
|
|
7
12
|
```
|
|
8
13
|
|
|
14
|
+
**Works out-of-the-box.** No database setup required - local TF-IDF embeddings work instantly. Upgrade to vector search with OpenAI/Ollama when ready.
|
|
15
|
+
|
|
9
16
|
## Why Agents Need Memory
|
|
10
17
|
|
|
11
18
|
| Without Squish | With Squish |
|
|
@@ -18,8 +25,8 @@ npm install squish-memory
|
|
|
18
25
|
## How It Works
|
|
19
26
|
|
|
20
27
|
Squish uses a two-tier memory architecture for optimal performance:
|
|
21
|
-
- **
|
|
22
|
-
- **
|
|
28
|
+
- **Short-term Memory (QMD)**: Lightning-fast file-based search using QMD (BM25 + vector). Instant recall, optimized for recent/active context.
|
|
29
|
+
- **Long-term Memory (Database)**: SQLite (local) or PostgreSQL (team) for durable, searchable storage of important memories.
|
|
23
30
|
|
|
24
31
|
```
|
|
25
32
|
Agent Action -----> [Squish Memory Layer]
|
|
@@ -35,19 +42,18 @@ Agent Action -----> [Squish Memory Layer]
|
|
|
35
42
|
│ Write Gate │ <-- Validate, sanitize, score
|
|
36
43
|
└──────────────┘
|
|
37
44
|
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
└─────────────────────┘
|
|
45
|
+
┌───────────────┴───────────────┐
|
|
46
|
+
v v
|
|
47
|
+
┌──────────────┐ ┌──────────────┐
|
|
48
|
+
│ Short-term │ │ Long-term │
|
|
49
|
+
│ QMD (Files) │ │ SQLite/PG │
|
|
50
|
+
│ Fast recall │ │ Persistent │
|
|
51
|
+
└──────────────┘ └──────────────┘
|
|
52
|
+
| |
|
|
53
|
+
v v
|
|
54
|
+
┌──────────────────────────────────────────┐
|
|
55
|
+
│ Hybrid Retrieval: QMD + Vector Ranking │
|
|
56
|
+
└──────────────────────────────────────────┘
|
|
51
57
|
|
|
|
52
58
|
v
|
|
53
59
|
Agent Context
|
|
@@ -73,6 +79,18 @@ Agent Action -----> [Squish Memory Layer]
|
|
|
73
79
|
|
|
74
80
|
## Quick Start
|
|
75
81
|
|
|
82
|
+
### Simple Example
|
|
83
|
+
```bash
|
|
84
|
+
# Store a memory
|
|
85
|
+
squish remember "User prefers TypeScript"
|
|
86
|
+
|
|
87
|
+
# Search memories
|
|
88
|
+
squish search "preferences"
|
|
89
|
+
|
|
90
|
+
# Check health
|
|
91
|
+
squish health
|
|
92
|
+
```
|
|
93
|
+
|
|
76
94
|
### Universal Plugin Installer (Recommended)
|
|
77
95
|
```bash
|
|
78
96
|
# Install for your AI assistant(s)
|
|
@@ -241,18 +259,35 @@ REDIS_URL=redis://localhost:6379 # Optional for caching
|
|
|
241
259
|
PORT=3000 # API server port
|
|
242
260
|
```
|
|
243
261
|
|
|
244
|
-
**
|
|
262
|
+
**Configuration File (config/settings.json):**
|
|
263
|
+
```json
|
|
264
|
+
{
|
|
265
|
+
"embeddings": {
|
|
266
|
+
"provider": "local",
|
|
267
|
+
"models": {
|
|
268
|
+
"openai": { "model": "text-embedding-3-small" },
|
|
269
|
+
"google": { "model": "gemini-embedding-001" },
|
|
270
|
+
"ollama": { "model": "nomic-embed-text:v1.5" }
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
**Environment Variables (override settings.json):**
|
|
245
277
|
```bash
|
|
246
278
|
SQUISH_DATA_DIR=./.squish # Custom data directory
|
|
247
|
-
SQUISH_EMBEDDINGS_PROVIDER=local # local, openai, ollama, google
|
|
279
|
+
SQUISH_EMBEDDINGS_PROVIDER=local # local, openai, ollama, google, none, auto
|
|
248
280
|
|
|
249
|
-
#
|
|
250
|
-
SQUISH_OPENAI_API_KEY=sk-...
|
|
281
|
+
# Model selection (optional, uses defaults if not set)
|
|
251
282
|
SQUISH_OPENAI_EMBEDDING_MODEL=text-embedding-3-small
|
|
252
|
-
|
|
283
|
+
SQUISH_GOOGLE_EMBEDDING_MODEL=gemini-embedding-001
|
|
253
284
|
SQUISH_OLLAMA_EMBEDDING_MODEL=nomic-embed-text:v1.5
|
|
254
|
-
|
|
255
|
-
|
|
285
|
+
|
|
286
|
+
# API credentials (for cloud providers)
|
|
287
|
+
SQUISH_OPENAI_API_KEY=sk-...
|
|
288
|
+
SQUISH_OLLAMA_URL=http://localhost:11434
|
|
289
|
+
GOOGLE_CLOUD_PROJECT=your-project
|
|
290
|
+
GOOGLE_CLOUD_API_KEY=your-key
|
|
256
291
|
|
|
257
292
|
# Embedding performance & reliability
|
|
258
293
|
SQUISH_EMBEDDINGS_TIMEOUT_MS=30000
|
|
@@ -271,8 +306,8 @@ DATABASE_URL=postgresql://user:pass@host/db
|
|
|
271
306
|
|
|
272
307
|
### Two-Tier Memory System
|
|
273
308
|
Squish employs a two-tier architecture for optimal performance and reliability:
|
|
274
|
-
- **
|
|
275
|
-
- **
|
|
309
|
+
- **Short-term (QMD)**: File-based search using QMD (BM25 + vectors). Ultra-fast for recent context and active memories.
|
|
310
|
+
- **Long-term (Database)**: SQLite (local) or PostgreSQL (team). Durable ACID-compliant storage for important memories that need persistence.
|
|
276
311
|
|
|
277
312
|
### Universal Interfaces
|
|
278
313
|
- **MCP Server**: Native integration for Claude Code, OpenClaw, and any MCP-compatible agent
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Wrapper for squish commands - launches interactive mode when no args
|
|
3
|
+
import { spawn } from 'child_process';
|
|
4
|
+
import { fileURLToPath } from 'url';
|
|
5
|
+
import { dirname, join } from 'path';
|
|
6
|
+
|
|
7
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
8
|
+
const __dirname = dirname(__filename);
|
|
9
|
+
|
|
10
|
+
const args = process.argv.slice(2);
|
|
11
|
+
|
|
12
|
+
// If no args, launch interactive installer
|
|
13
|
+
if (args.length === 0) {
|
|
14
|
+
const interactivePath = join(__dirname, '..', 'scripts', 'install-interactive.mjs');
|
|
15
|
+
const child = spawn('node', [interactivePath], {
|
|
16
|
+
stdio: 'inherit',
|
|
17
|
+
shell: false
|
|
18
|
+
});
|
|
19
|
+
child.on('exit', (code) => {
|
|
20
|
+
process.exit(code ?? 0);
|
|
21
|
+
});
|
|
22
|
+
} else {
|
|
23
|
+
// Pass through to install-plugin.mjs
|
|
24
|
+
const scriptPath = join(__dirname, '..', 'scripts', 'install-plugin.mjs');
|
|
25
|
+
const child = spawn('node', [scriptPath, ...args], {
|
|
26
|
+
stdio: 'inherit',
|
|
27
|
+
shell: false
|
|
28
|
+
});
|
|
29
|
+
child.on('exit', (code) => {
|
|
30
|
+
process.exit(code ?? 0);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Wrapper for squish remove command
|
|
3
|
+
import { spawn } from 'child_process';
|
|
4
|
+
import { fileURLToPath } from 'url';
|
|
5
|
+
import { dirname, join } from 'path';
|
|
6
|
+
|
|
7
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
8
|
+
const __dirname = dirname(__filename);
|
|
9
|
+
|
|
10
|
+
const args = process.argv.slice(2);
|
|
11
|
+
const scriptPath = join(__dirname, 'scripts', 'install-plugin.mjs');
|
|
12
|
+
|
|
13
|
+
// Add --uninstall flag
|
|
14
|
+
const child = spawn('node', [scriptPath, '--uninstall', ...args], {
|
|
15
|
+
stdio: 'inherit',
|
|
16
|
+
shell: false
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
child.on('exit', (code) => {
|
|
20
|
+
process.exit(code ?? 0);
|
|
21
|
+
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "squish-memory",
|
|
3
3
|
"name": "Squish Memory",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.2",
|
|
5
5
|
"description": "Universal two-tier memory system for AI agents with hybrid search, core memory, and MCP-first architecture",
|
|
6
6
|
"capabilities": ["mcp", "cli", "web"],
|
|
7
7
|
"targets": {
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "./settings.schema.json",
|
|
3
|
+
"embeddings": {
|
|
4
|
+
"provider": "local",
|
|
5
|
+
"models": {
|
|
6
|
+
"openai": {
|
|
7
|
+
"model": "text-embedding-3-small",
|
|
8
|
+
"availableModels": [
|
|
9
|
+
"text-embedding-3-small",
|
|
10
|
+
"text-embedding-3-large"
|
|
11
|
+
]
|
|
12
|
+
},
|
|
13
|
+
"google": {
|
|
14
|
+
"model": "gemini-embedding-001",
|
|
15
|
+
"availableModels": [
|
|
16
|
+
"gemini-embedding-001",
|
|
17
|
+
"gemini-embedding-2"
|
|
18
|
+
]
|
|
19
|
+
},
|
|
20
|
+
"ollama": {
|
|
21
|
+
"model": "nomic-embed-text:v1.5",
|
|
22
|
+
"availableModels": [
|
|
23
|
+
"nomic-embed-text:v1.5",
|
|
24
|
+
"mxbai-embed-large"
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"api": {
|
|
30
|
+
"openai": {
|
|
31
|
+
"apiKey": null,
|
|
32
|
+
"apiUrl": "https://api.openai.com/v1/embeddings"
|
|
33
|
+
},
|
|
34
|
+
"google": {
|
|
35
|
+
"apiKey": null,
|
|
36
|
+
"projectId": null
|
|
37
|
+
},
|
|
38
|
+
"ollama": {
|
|
39
|
+
"url": "http://localhost:11434"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"mcp": {
|
|
43
|
+
"serverPort": 8767,
|
|
44
|
+
"serverEnabled": true
|
|
45
|
+
},
|
|
46
|
+
"features": {
|
|
47
|
+
"lifecycleEnabled": true,
|
|
48
|
+
"summarizationEnabled": true,
|
|
49
|
+
"agentIsolation": true
|
|
50
|
+
}
|
|
51
|
+
}
|