squish-memory 1.0.2 → 1.2.0
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.example +146 -0
- package/CHANGELOG.md +202 -0
- package/README.md +192 -287
- package/{scripts → bin}/dependency-manager.mjs +217 -217
- package/{scripts → bin}/detect-clients.mjs +78 -78
- package/bin/install-interactive.mjs +321 -0
- package/bin/squish-mcp.mjs +46 -0
- package/bin/squish.mjs +33 -0
- package/config/mcp-migration-map.json +1 -6
- package/config/mcp-mode-semantics.json +10 -12
- package/config/mcp-remote-auth.json +3 -26
- package/config/mcp-universal.schema.json +5 -35
- package/config/settings.json +78 -22
- package/config.js +5 -0
- package/config.ts +218 -0
- package/core/adapters/config/claude-code.ts +133 -0
- package/core/adapters/config/cursor.ts +90 -0
- package/core/adapters/config/opencode.ts +89 -0
- package/core/adapters/config/windsurf.ts +90 -0
- package/core/adapters/index.ts +102 -0
- package/core/adapters/timeline.ts +116 -0
- package/core/adapters/types.ts +166 -0
- package/core/agent-preferences.ts +140 -0
- package/core/algorithms/analytics/token-estimator.ts +216 -0
- package/core/algorithms/detection/hash-filters.ts +260 -0
- package/core/algorithms/detection/semantic-ranker.ts +194 -0
- package/core/algorithms/detection/two-stage-detector.ts +421 -0
- package/core/algorithms/handlers/approve-merge.ts +215 -0
- package/core/algorithms/handlers/detect-duplicates.ts +192 -0
- package/core/algorithms/handlers/get-stats.ts +132 -0
- package/core/algorithms/handlers/list-proposals.ts +130 -0
- package/core/algorithms/handlers/preview-merge.ts +139 -0
- package/core/algorithms/handlers/reject-merge.ts +93 -0
- package/core/algorithms/handlers/reverse-merge.ts +155 -0
- package/core/algorithms/index.ts +39 -0
- package/core/algorithms/operations/cache-maintenance.ts +182 -0
- package/core/algorithms/safety/safety-checks.ts +256 -0
- package/core/algorithms/strategies/merge-strategies.ts +381 -0
- package/core/algorithms/types.ts +140 -0
- package/core/algorithms/utils/response-builder.ts +61 -0
- package/core/associations.ts +363 -0
- package/core/beliefs/decay.ts +289 -0
- package/core/beliefs/extractor.ts +131 -0
- package/core/beliefs/store.ts +557 -0
- package/core/beliefs/types.ts +38 -0
- package/core/commands/mcp-server.ts +5 -0
- package/core/compression.ts +177 -0
- package/core/config.js +2 -0
- package/core/consolidation.ts +330 -0
- package/core/context/agent-context.ts +388 -0
- package/core/context/context-paging.ts +449 -0
- package/core/context/context-window.ts +234 -0
- package/core/context/context.ts +35 -0
- package/core/embeddings/embeddings.ts +616 -0
- package/core/embeddings/google-multimodal.ts +200 -0
- package/core/embeddings/local-embeddings.ts +12 -0
- package/core/embeddings/qmd-client.ts +495 -0
- package/core/embeddings/transformers-local.ts +261 -0
- package/core/embeddings.js +4 -0
- package/core/error-handling.ts +206 -0
- package/core/external +219 -0
- package/core/graph/entity-deduplicator.ts +232 -0
- package/core/graph/graph-builder.ts +257 -0
- package/core/graph/graph-traversal.ts +490 -0
- package/core/graph/index.ts +24 -0
- package/core/graph/llm-entity-extractor.ts +402 -0
- package/core/graph/multi-hop-retrieval.ts +317 -0
- package/core/graph/relationship-extractor.ts +465 -0
- package/core/hooks/agent-hooks.ts +653 -0
- package/core/hooks/auto-tagger.ts +149 -0
- package/core/hooks/capture-filter.ts +169 -0
- package/core/hot-cache.ts +388 -0
- package/core/index.ts +10 -0
- package/core/ingestion/agent-memory.ts +167 -0
- package/core/ingestion/core-memory.ts +326 -0
- package/core/ingestion/learnings.ts +260 -0
- package/core/ingestion/signal-engine.ts +266 -0
- package/core/integrations/obsidian-vault.ts +197 -0
- package/core/layers/generator.ts +115 -0
- package/core/lib/db-client.ts +168 -0
- package/core/lib/parse-embedding.ts +59 -0
- package/core/lib/schemas.ts +102 -0
- package/core/lib/types.ts +49 -0
- package/core/lib/utils.ts +151 -0
- package/core/lib/validation.ts +180 -0
- package/core/lifecycle.ts +353 -0
- package/core/logger.ts +59 -0
- package/core/memory/bridge-discovery.ts +395 -0
- package/core/memory/categorizer.ts +390 -0
- package/core/memory/conflict-detector.ts +62 -0
- package/core/memory/consolidation.ts +372 -0
- package/core/memory/context-collector.ts +75 -0
- package/core/memory/contradiction-resolver.ts +494 -0
- package/core/memory/edit-workflow.ts +174 -0
- package/core/memory/entity-extractor.ts +426 -0
- package/core/memory/entity-resolver.ts +89 -0
- package/core/memory/explain.ts +112 -0
- package/core/memory/fact-deriver.ts +300 -0
- package/core/memory/fact-extractor.ts +120 -0
- package/core/memory/feedback-tracker.ts +200 -0
- package/core/memory/hooks.ts +230 -0
- package/core/memory/hybrid-retrieval.ts +65 -0
- package/core/memory/hybrid-scorer.ts +325 -0
- package/core/memory/hybrid-search.ts +748 -0
- package/core/memory/importance.ts +319 -0
- package/core/memory/index.ts +11 -0
- package/core/memory/loader.ts +178 -0
- package/core/memory/markdown/markdown-storage.ts +318 -0
- package/core/memory/memories.ts +565 -0
- package/core/memory/memory-lifecycle.ts +51 -0
- package/core/memory/memory-manager.ts +53 -0
- package/core/memory/migrate.ts +173 -0
- package/core/memory/normalization.ts +30 -0
- package/core/memory/path-strengthener.ts +211 -0
- package/core/memory/progressive-disclosure.ts +392 -0
- package/core/memory/query-processor.ts +130 -0
- package/core/memory/query-rewriter.ts +153 -0
- package/core/memory/response-analyzer.ts +81 -0
- package/core/memory/retrieval-feedback.ts +276 -0
- package/core/memory/serialization.ts +83 -0
- package/core/memory/stale-cleaner.ts +147 -0
- package/core/memory/stats.ts +181 -0
- package/core/memory/telemetry.ts +392 -0
- package/core/memory/temporal-facts.ts +356 -0
- package/core/memory/temporal-parser.ts +477 -0
- package/core/memory/trigger-detector.ts +104 -0
- package/core/memory/write-gate.ts +288 -0
- package/core/places/index.ts +14 -0
- package/core/places/memory-places.ts +339 -0
- package/core/places/places.ts +406 -0
- package/core/places/rules.ts +308 -0
- package/core/places/walking.ts +192 -0
- package/core/projects +89 -0
- package/core/projects.ts +131 -0
- package/core/redis.ts +82 -0
- package/core/responses.ts +187 -0
- package/core/runtime/trust-report.ts +195 -0
- package/core/runtime/trust-state.ts +360 -0
- package/core/scheduler/cron-scheduler.ts +581 -0
- package/core/scheduler/heartbeat.ts +91 -0
- package/core/scheduler/index.ts +8 -0
- package/core/scheduler/job-runner.ts +197 -0
- package/core/search/conversations.ts +166 -0
- package/core/search/entities.ts +46 -0
- package/core/search/folder-context.ts +154 -0
- package/core/search/graph-boost.ts +22 -0
- package/core/search/index.ts +4 -0
- package/core/search/qmd-wrapper.ts +84 -0
- package/core/security/encrypt.ts +51 -0
- package/core/security/governance.ts +102 -0
- package/core/security/privacy.ts +108 -0
- package/core/security/secret-detector.ts +122 -0
- package/core/session/auto-load.ts +160 -0
- package/core/session/entity-tracker.ts +363 -0
- package/core/session/index.ts +7 -0
- package/core/session/reference-resolver.ts +158 -0
- package/core/session/self-iteration-job.ts +478 -0
- package/core/session/session-hooks.ts +69 -0
- package/core/session/types.ts +36 -0
- package/core/session/working-set.ts +275 -0
- package/core/snapshots/cleanup.ts +13 -0
- package/core/snapshots/comparison.ts +59 -0
- package/core/snapshots/creation.ts +139 -0
- package/core/snapshots/retrieval.ts +44 -0
- package/core/snapshots/stats.ts +63 -0
- package/core/storage/cache.ts +241 -0
- package/core/storage/database.ts +23 -0
- package/core/summarization/cleanup.ts +13 -0
- package/core/summarization/queries.ts +32 -0
- package/core/summarization/stats.ts +64 -0
- package/core/summarization/strategies.ts +52 -0
- package/core/summarization.ts +248 -0
- package/core/temporal-facts.ts +244 -0
- package/core/tracing/collector.ts +470 -0
- package/core/tracing/visualizer.ts +195 -0
- package/core/utils/cleanup-operations.ts +50 -0
- package/core/utils/content-extraction.ts +95 -0
- package/core/utils/filter-builder.ts +56 -0
- package/core/utils/history-traversal.ts +63 -0
- package/core/utils/memory-operations.ts +56 -0
- package/core/utils/query-operations.ts +83 -0
- package/core/utils/summarization-helpers.ts +45 -0
- package/core/utils/temporal-queries.ts +39 -0
- package/core/utils/vector-operations.ts +135 -0
- package/core/utils/version-management.ts +74 -0
- package/core/worker.ts +324 -0
- package/db/adapter.ts +215 -0
- package/db/bootstrap.ts +1055 -0
- package/db/drizzle/migrations/0000_needy_cerebro.sql +402 -0
- package/db/drizzle/migrations/meta/0000_snapshot.json +3451 -0
- package/db/drizzle/migrations/meta/_journal.json +13 -0
- package/db/drizzle/schema-sqlite.ts +1032 -0
- package/db/drizzle/schema.ts +1128 -0
- package/db/drizzle.config.ts +12 -0
- package/db/index.ts +83 -0
- package/db/init.sql +5 -0
- package/db/migrations/associations.ts +35 -0
- package/db/migrations/beliefs.ts +89 -0
- package/db/migrations/core-memory.ts +35 -0
- package/db/migrations/fts.ts +59 -0
- package/db/migrations/index.ts +54 -0
- package/db/migrations/indexes.ts +36 -0
- package/db/migrations/learnings.ts +34 -0
- package/db/migrations/maintenance.ts +68 -0
- package/db/migrations/memories.ts +22 -0
- package/db/migrations/memory-places.ts +35 -0
- package/db/migrations/places.ts +49 -0
- package/db/migrations/projects.ts +21 -0
- package/db/migrations/tier-conversion.ts +24 -0
- package/db/neon.ts +22 -0
- package/db/schema/beliefs.ts +50 -0
- package/db/schema/generator.ts +159 -0
- package/db/schema/index.ts +58 -0
- package/db/schema/learnings.ts +32 -0
- package/db/schema/memories.ts +83 -0
- package/db/schema/projects.ts +33 -0
- package/db/schema.ts +13 -0
- package/db/supabase.ts +27 -0
- package/dist/config.d.ts +61 -14
- package/dist/config.js +159 -139
- package/dist/core/adapters/config/claude-code.d.ts +45 -0
- package/dist/core/adapters/config/claude-code.js +113 -0
- package/dist/core/adapters/config/cursor.d.ts +26 -0
- package/dist/core/adapters/config/cursor.js +74 -0
- package/dist/core/adapters/config/opencode.d.ts +23 -0
- package/dist/core/adapters/config/opencode.js +73 -0
- package/dist/core/adapters/config/windsurf.d.ts +26 -0
- package/dist/core/adapters/config/windsurf.js +74 -0
- package/dist/core/adapters/index.d.ts +45 -0
- package/dist/core/adapters/index.js +84 -0
- package/dist/core/adapters/scripts/install-adapter.d.ts +19 -0
- package/dist/core/adapters/scripts/install-adapter.js +149 -0
- package/dist/core/adapters/timeline.d.ts +23 -0
- package/dist/core/adapters/timeline.js +88 -0
- package/dist/core/adapters/types.d.ts +137 -0
- package/dist/core/adapters/types.js +50 -0
- package/dist/core/agent-preferences.d.ts +16 -0
- package/dist/core/agent-preferences.js +124 -0
- package/dist/{algorithms → core/algorithms}/analytics/token-estimator.d.ts +1 -1
- package/dist/{algorithms → core/algorithms}/analytics/token-estimator.js +3 -3
- package/dist/{algorithms → core/algorithms}/detection/semantic-ranker.d.ts +1 -1
- package/dist/{algorithms → core/algorithms}/detection/semantic-ranker.js +1 -1
- package/dist/{algorithms → core/algorithms}/detection/two-stage-detector.d.ts +1 -1
- package/dist/{algorithms → core/algorithms}/detection/two-stage-detector.js +7 -10
- package/dist/{algorithms → core/algorithms}/handlers/approve-merge.js +4 -4
- package/dist/{algorithms → core/algorithms}/handlers/detect-duplicates.js +3 -3
- package/dist/{algorithms → core/algorithms}/handlers/get-stats.js +3 -3
- package/dist/{algorithms → core/algorithms}/handlers/list-proposals.js +3 -3
- package/dist/{algorithms → core/algorithms}/handlers/preview-merge.js +3 -3
- package/dist/{algorithms → core/algorithms}/handlers/reject-merge.js +3 -3
- package/dist/{algorithms → core/algorithms}/handlers/reverse-merge.js +3 -3
- package/dist/core/algorithms/index.d.ts +21 -0
- package/dist/core/algorithms/index.js +26 -0
- package/dist/core/algorithms/operations/cache-maintenance.d.ts +12 -0
- package/dist/core/algorithms/operations/cache-maintenance.js +157 -0
- package/dist/{algorithms → core/algorithms}/safety/safety-checks.d.ts +2 -6
- package/dist/{algorithms → core/algorithms}/strategies/merge-strategies.d.ts +19 -1
- package/dist/{algorithms → core/algorithms}/strategies/merge-strategies.js +74 -123
- package/dist/core/algorithms/types.d.ts +125 -0
- package/dist/core/algorithms/types.js +5 -0
- package/dist/core/associations.d.ts +3 -2
- package/dist/core/associations.js +37 -2
- package/dist/core/autosave.d.ts +19 -0
- package/dist/core/autosave.js +16 -0
- package/dist/core/beliefs/decay.d.ts +27 -0
- package/dist/core/beliefs/decay.js +217 -0
- package/dist/core/beliefs/extractor.d.ts +9 -0
- package/dist/core/beliefs/extractor.js +113 -0
- package/dist/core/beliefs/store.d.ts +46 -0
- package/dist/core/beliefs/store.js +466 -0
- package/dist/core/beliefs/types.d.ts +28 -0
- package/dist/core/beliefs/types.js +2 -0
- package/dist/core/commands/mcp-server.d.ts +2 -0
- package/dist/core/commands/mcp-server.js +6 -0
- package/dist/core/commands/remember.d.ts +24 -0
- package/dist/core/commands/remember.js +144 -0
- package/dist/core/compression.d.ts +45 -0
- package/dist/core/compression.js +160 -0
- package/dist/core/context/agent-context.d.ts +106 -0
- package/dist/core/context/agent-context.js +274 -0
- package/dist/core/{context-paging.d.ts → context/context-paging.d.ts} +2 -12
- package/dist/core/{context-paging.js → context/context-paging.js} +19 -39
- package/dist/core/context/context-window.d.ts +40 -0
- package/dist/core/context/context-window.js +177 -0
- package/dist/core/context/context.js +22 -0
- package/dist/core/embeddings/embeddings.d.ts +29 -0
- package/dist/core/embeddings/embeddings.js +546 -0
- package/dist/core/embeddings/google-multimodal.js +6 -2
- package/dist/core/embeddings/local-embeddings.d.ts +11 -0
- package/dist/core/embeddings/local-embeddings.js +11 -0
- package/dist/core/embeddings/qmd-client.js +1 -1
- package/dist/core/embeddings/transformers-local.d.ts +64 -0
- package/dist/core/embeddings/transformers-local.js +213 -0
- package/dist/core/embeddings.d.ts +1 -28
- package/dist/core/embeddings.js +2 -401
- package/dist/core/error-handling.d.ts +63 -0
- package/dist/core/error-handling.js +173 -0
- package/dist/core/graph/entity-deduplicator.d.ts +24 -0
- package/dist/core/graph/entity-deduplicator.js +183 -0
- package/dist/core/graph/graph-builder.d.ts +46 -0
- package/dist/core/graph/graph-builder.js +174 -0
- package/dist/core/graph/graph-traversal.d.ts +80 -0
- package/dist/core/graph/graph-traversal.js +315 -0
- package/dist/core/graph/index.d.ts +19 -0
- package/dist/core/graph/index.js +13 -0
- package/dist/core/graph/llm-entity-extractor.d.ts +49 -0
- package/dist/core/graph/llm-entity-extractor.js +313 -0
- package/dist/core/graph/multi-hop-retrieval.d.ts +48 -0
- package/dist/core/graph/multi-hop-retrieval.js +215 -0
- package/dist/core/graph/relationship-extractor.d.ts +48 -0
- package/dist/core/graph/relationship-extractor.js +351 -0
- package/dist/core/hooks/agent-hooks.d.ts +83 -0
- package/dist/core/hooks/agent-hooks.js +521 -0
- package/dist/core/hooks/auto-tagger.d.ts +19 -0
- package/dist/core/hooks/auto-tagger.js +155 -0
- package/dist/core/hooks/capture-filter.d.ts +41 -0
- package/dist/core/hooks/capture-filter.js +128 -0
- package/dist/core/hot-cache.d.ts +86 -0
- package/dist/core/hot-cache.js +285 -0
- package/dist/core/index.d.ts +9 -9
- package/dist/core/index.js +9 -12
- package/dist/core/{agent-memory.js → ingestion/agent-memory.js} +5 -7
- package/dist/core/{core-memory.d.ts → ingestion/core-memory.d.ts} +2 -2
- package/dist/core/{core-memory.js → ingestion/core-memory.js} +7 -7
- package/dist/core/ingestion/learnings.d.ts +57 -0
- package/dist/core/ingestion/learnings.js +205 -0
- package/dist/core/ingestion/signal-engine.d.ts +41 -0
- package/dist/core/ingestion/signal-engine.js +201 -0
- package/dist/core/integrations/obsidian-vault.d.ts +31 -0
- package/dist/core/integrations/obsidian-vault.js +156 -0
- package/dist/core/lib/db-client.d.ts +114 -0
- package/dist/core/lib/db-client.js +130 -0
- package/dist/core/lib/parse-embedding.d.ts +9 -0
- package/dist/core/lib/parse-embedding.js +58 -0
- package/dist/core/lib/schemas.d.ts +132 -0
- package/dist/core/lib/schemas.js +87 -0
- package/dist/core/lib/types.d.ts +45 -0
- package/dist/core/lib/types.js +6 -0
- package/dist/core/{utils.d.ts → lib/utils.d.ts} +5 -0
- package/dist/core/lib/utils.js +145 -0
- package/dist/core/lib/validation.d.ts +38 -0
- package/dist/core/lib/validation.js +151 -0
- package/dist/core/lifecycle.d.ts +7 -1
- package/dist/core/lifecycle.js +152 -42
- package/dist/core/logger.d.ts +1 -0
- package/dist/core/logger.js +13 -1
- package/dist/core/mcp/tools.d.ts +0 -2
- package/dist/core/mcp/tools.js +35 -90
- package/dist/core/mcp/types.d.ts +25 -253
- package/dist/core/mcp/types.js +2 -2
- package/dist/core/memory/categorizer.js +2 -0
- package/dist/core/memory/conflict-detector.js +1 -1
- package/dist/core/memory/consolidation.d.ts +1 -10
- package/dist/core/memory/consolidation.js +4 -39
- package/dist/core/memory/context-collector.js +1 -1
- package/dist/core/memory/edit-workflow.js +1 -1
- package/dist/core/memory/entity-extractor.d.ts +4 -0
- package/dist/core/memory/entity-extractor.js +30 -16
- package/dist/core/memory/entity-resolver.js +7 -7
- package/dist/core/memory/explain.d.ts +18 -0
- package/dist/core/memory/explain.js +92 -0
- package/dist/core/memory/fact-deriver.d.ts +31 -0
- package/dist/core/memory/fact-deriver.js +236 -0
- package/dist/core/memory/fact-extractor.js +12 -12
- package/dist/core/memory/feedback-tracker.js +1 -1
- package/dist/core/memory/hooks.d.ts +88 -0
- package/dist/core/memory/hooks.js +174 -0
- package/dist/core/memory/hybrid-retrieval.d.ts +14 -16
- package/dist/core/memory/hybrid-retrieval.js +25 -127
- package/dist/core/memory/hybrid-scorer.js +6 -23
- package/dist/core/memory/hybrid-search.d.ts +9 -11
- package/dist/core/memory/hybrid-search.js +496 -273
- package/dist/core/memory/importance.d.ts +2 -24
- package/dist/core/memory/importance.js +7 -91
- package/dist/core/memory/index.d.ts +1 -0
- package/dist/core/memory/index.js +1 -0
- package/dist/core/memory/loader.d.ts +31 -0
- package/dist/core/memory/loader.js +141 -0
- package/dist/core/memory/markdown/markdown-storage.d.ts +72 -0
- package/dist/core/memory/markdown/markdown-storage.js +243 -0
- package/dist/core/memory/memories.d.ts +23 -19
- package/dist/core/memory/memories.js +243 -228
- package/dist/core/memory/memory-lifecycle.d.ts +8 -0
- package/dist/core/memory/memory-lifecycle.js +47 -0
- package/dist/core/memory/migrate.d.ts +21 -0
- package/dist/core/memory/migrate.js +134 -0
- package/dist/core/memory/normalization.d.ts +7 -0
- package/dist/core/memory/normalization.js +26 -0
- package/dist/core/memory/path-strengthener.d.ts +39 -0
- package/dist/core/memory/path-strengthener.js +150 -0
- package/dist/core/memory/progressive-disclosure.js +1 -1
- package/dist/core/memory/query-processor.js +37 -3
- package/dist/core/memory/query-rewriter.js +9 -9
- package/dist/core/memory/retrieval-feedback.d.ts +70 -0
- package/dist/core/memory/retrieval-feedback.js +213 -0
- package/dist/core/memory/serialization.d.ts +4 -0
- package/dist/core/memory/serialization.js +49 -0
- package/dist/core/memory/stale-cleaner.d.ts +26 -0
- package/dist/core/memory/stale-cleaner.js +97 -0
- package/dist/core/memory/stats.d.ts +15 -0
- package/dist/core/memory/stats.js +69 -13
- package/dist/core/memory/temporal-facts.js +21 -0
- package/dist/core/memory/trigger-detector.d.ts +8 -1
- package/dist/core/memory/trigger-detector.js +42 -5
- package/dist/core/memory/write-gate.js +1 -1
- package/dist/core/places/index.d.ts +14 -0
- package/dist/core/places/index.js +14 -0
- package/dist/core/places/memory-places.d.ts +68 -0
- package/dist/core/places/memory-places.js +261 -0
- package/dist/core/places/places.d.ts +88 -0
- package/dist/core/places/places.js +314 -0
- package/dist/core/places/rules.d.ts +74 -0
- package/dist/core/places/rules.js +240 -0
- package/dist/core/places/walking.d.ts +56 -0
- package/dist/core/places/walking.js +121 -0
- package/dist/core/projects.d.ts +5 -0
- package/dist/core/projects.js +47 -18
- package/dist/core/responses.d.ts +96 -0
- package/dist/core/responses.js +122 -0
- package/dist/core/runtime/trust-report.d.ts +102 -0
- package/dist/core/runtime/trust-report.js +107 -0
- package/dist/core/runtime/trust-state.d.ts +12 -0
- package/dist/core/runtime/trust-state.js +309 -0
- package/dist/core/scheduler/cron-scheduler.d.ts +1 -1
- package/dist/core/scheduler/cron-scheduler.js +193 -10
- package/dist/core/scheduler/index.d.ts +1 -1
- package/dist/core/scheduler/index.js +1 -1
- package/dist/core/scheduler/job-runner.js +2 -2
- package/dist/core/search/conversations.js +40 -42
- package/dist/core/search/entities.js +6 -9
- package/dist/core/search/graph-boost.d.ts +7 -0
- package/dist/core/search/graph-boost.js +23 -0
- package/dist/core/search/qmd-wrapper.d.ts +36 -0
- package/dist/core/search/qmd-wrapper.js +58 -0
- package/dist/core/security/encrypt.d.ts +6 -0
- package/dist/core/security/encrypt.js +47 -0
- package/dist/core/{governance.d.ts → security/governance.d.ts} +6 -1
- package/dist/core/security/governance.js +79 -0
- package/dist/core/session/auto-load.js +34 -9
- package/dist/core/session/entity-tracker.d.ts +62 -0
- package/dist/core/session/entity-tracker.js +287 -0
- package/dist/core/session/index.d.ts +1 -1
- package/dist/core/session/index.js +1 -1
- package/dist/core/session/reference-resolver.d.ts +26 -0
- package/dist/core/session/reference-resolver.js +121 -0
- package/dist/core/{session-hooks → session}/self-iteration-job.d.ts +15 -0
- package/dist/core/{session-hooks → session}/self-iteration-job.js +195 -90
- package/dist/core/session/working-set.d.ts +50 -0
- package/dist/core/session/working-set.js +212 -0
- package/dist/core/snapshots/creation.d.ts +2 -8
- package/dist/core/snapshots/creation.js +3 -12
- package/dist/core/{cache.js → storage/cache.js} +2 -2
- package/dist/core/utils/memory-operations.js +1 -1
- package/dist/core/utils/summarization-helpers.d.ts +0 -4
- package/dist/core/utils/summarization-helpers.js +1 -6
- package/dist/core/utils/vector-operations.d.ts +71 -0
- package/dist/core/utils/vector-operations.js +129 -0
- package/dist/db/adapter.d.ts +3 -3
- package/dist/db/adapter.js +99 -88
- package/dist/db/bootstrap.d.ts +2 -0
- package/dist/db/bootstrap.js +921 -674
- package/dist/{drizzle → db/drizzle}/schema-sqlite.d.ts +775 -25
- package/dist/{drizzle → db/drizzle}/schema-sqlite.js +170 -24
- package/dist/{drizzle → db/drizzle}/schema.d.ts +731 -32
- package/dist/{drizzle → db/drizzle}/schema.js +192 -32
- package/dist/db/drizzle.config.d.ts +3 -0
- package/dist/db/drizzle.config.js +12 -0
- package/dist/db/index.d.ts +1 -5
- package/dist/db/index.js +51 -8
- package/dist/db/migrations/associations.d.ts +6 -0
- package/dist/db/migrations/associations.js +29 -0
- package/dist/db/migrations/beliefs.d.ts +10 -0
- package/dist/db/migrations/beliefs.js +76 -0
- package/dist/db/migrations/core-memory.d.ts +6 -0
- package/dist/db/migrations/core-memory.js +29 -0
- package/dist/db/migrations/fts.d.ts +6 -0
- package/dist/db/migrations/fts.js +52 -0
- package/dist/db/migrations/index.d.ts +25 -0
- package/dist/db/migrations/index.js +51 -0
- package/dist/db/migrations/indexes.d.ts +6 -0
- package/dist/db/migrations/indexes.js +30 -0
- package/dist/db/migrations/learnings.d.ts +7 -0
- package/dist/db/migrations/learnings.js +26 -0
- package/dist/db/migrations/maintenance.d.ts +6 -0
- package/dist/db/migrations/maintenance.js +61 -0
- package/dist/db/migrations/memories.d.ts +7 -0
- package/dist/db/migrations/memories.js +16 -0
- package/dist/db/migrations/memory-places.d.ts +6 -0
- package/dist/db/migrations/memory-places.js +29 -0
- package/dist/db/migrations/places.d.ts +6 -0
- package/dist/db/migrations/places.js +43 -0
- package/dist/db/migrations/projects.d.ts +3 -0
- package/dist/db/migrations/projects.js +13 -0
- package/dist/db/migrations/tier-conversion.d.ts +7 -0
- package/dist/db/migrations/tier-conversion.js +20 -0
- package/dist/db/neon.d.ts +8 -0
- package/dist/db/neon.js +20 -0
- package/dist/db/schema/beliefs.d.ts +9 -0
- package/dist/db/schema/beliefs.js +46 -0
- package/dist/db/schema/generator.d.ts +38 -0
- package/dist/db/schema/generator.js +108 -0
- package/dist/db/schema/index.d.ts +39 -0
- package/dist/db/schema/index.js +51 -0
- package/dist/db/schema/learnings.d.ts +7 -0
- package/dist/db/schema/learnings.js +30 -0
- package/dist/db/schema/memories.d.ts +7 -0
- package/dist/db/schema/memories.js +81 -0
- package/dist/db/schema/projects.d.ts +4 -0
- package/dist/db/schema/projects.js +31 -0
- package/dist/db/schema/tables/context-sessions.d.ts +9 -0
- package/dist/db/schema/tables/context-sessions.js +37 -0
- package/dist/db/schema/tables/conversations.d.ts +9 -0
- package/dist/db/schema/tables/conversations.js +47 -0
- package/dist/db/schema/tables/core-memory.d.ts +9 -0
- package/dist/db/schema/tables/core-memory.js +41 -0
- package/dist/db/schema/tables/entities.d.ts +9 -0
- package/dist/db/schema/tables/entities.js +39 -0
- package/dist/db/schema/tables/entity-relations.d.ts +9 -0
- package/dist/db/schema/tables/entity-relations.js +31 -0
- package/dist/db/schema/tables/learnings.d.ts +9 -0
- package/dist/db/schema/tables/learnings.js +66 -0
- package/dist/db/schema/tables/memories.d.ts +9 -0
- package/dist/db/schema/tables/memories.js +161 -0
- package/dist/db/schema/tables/memory-associations.d.ts +9 -0
- package/dist/db/schema/tables/memory-associations.js +39 -0
- package/dist/db/schema/tables/memory-hash-cache.d.ts +9 -0
- package/dist/db/schema/tables/memory-hash-cache.js +29 -0
- package/dist/db/schema/tables/memory-merge-history.d.ts +9 -0
- package/dist/db/schema/tables/memory-merge-history.js +33 -0
- package/dist/db/schema/tables/memory-merge-proposals.d.ts +9 -0
- package/dist/db/schema/tables/memory-merge-proposals.js +39 -0
- package/dist/db/schema/tables/messages.d.ts +9 -0
- package/dist/db/schema/tables/messages.js +41 -0
- package/dist/db/schema/tables/namespaces.d.ts +9 -0
- package/dist/db/schema/tables/namespaces.js +37 -0
- package/dist/db/schema/tables/projects.d.ts +9 -0
- package/dist/db/schema/tables/projects.js +31 -0
- package/dist/db/schema/tables/users.d.ts +9 -0
- package/dist/db/schema/tables/users.js +27 -0
- package/dist/db/schema.d.ts +1 -1
- package/dist/db/schema.js +2 -2
- package/dist/db/supabase.d.ts +9 -0
- package/dist/db/supabase.js +24 -0
- package/dist/packages/mcp/src/index.d.ts +3 -0
- package/dist/packages/mcp/src/index.js +733 -0
- package/mcp.json.example +8 -0
- package/package.json +132 -173
- package/packages/cli/package.json +22 -0
- package/packages/cli/src/commands/clean.ts +68 -0
- package/packages/cli/src/commands/context.ts +79 -0
- package/packages/cli/src/commands/doctor.ts +357 -0
- package/packages/cli/src/commands/forget.ts +72 -0
- package/packages/cli/src/commands/health.ts +36 -0
- package/packages/cli/src/commands/inspect.ts +41 -0
- package/packages/cli/src/commands/link.ts +50 -0
- package/packages/cli/src/commands/migrate.ts +93 -0
- package/packages/cli/src/commands/recall.ts +99 -0
- package/packages/cli/src/commands/recent.ts +57 -0
- package/packages/cli/src/commands/remember.ts +139 -0
- package/packages/cli/src/commands/run.ts +58 -0
- package/packages/cli/src/commands/stale.ts +43 -0
- package/packages/cli/src/commands/stats.ts +42 -0
- package/packages/cli/src/index.ts +57 -0
- package/packages/cli/tsconfig.json +24 -0
- package/packages/mcp/package.json +26 -0
- package/packages/mcp/src/index.ts +877 -0
- package/packages/mcp/tsconfig.json +20 -0
- package/skills/squish-memory/SKILL.md +107 -114
- package/skills/squish-memory/install.sh +3 -3
- package/skills/squish-memory/{claude-desktop.json → references/claude-desktop.json} +12 -12
- package/skills/squish-memory/{openclaw.json → references/openclaw.json} +13 -13
- package/skills/squish-memory/{opencode.json → references/opencode.json} +14 -14
- package/.claude-plugin/marketplace.json +0 -20
- package/.claude-plugin/plugin.json +0 -32
- package/.env.mcp.example +0 -60
- package/.mcp.json +0 -11
- package/QUICK-START.md +0 -71
- package/bin/squish-add.mjs +0 -32
- package/bin/squish-rm.mjs +0 -21
- package/commands/context-paging.md +0 -51
- package/commands/context-status.md +0 -22
- package/commands/context.md +0 -5
- package/commands/core-memory.md +0 -56
- package/commands/health.md +0 -5
- package/commands/init.md +0 -39
- package/commands/merge.md +0 -113
- package/commands/observe.md +0 -5
- package/commands/recall.md +0 -5
- package/commands/remember.md +0 -11
- package/commands/search.md +0 -10
- package/config/mcp-cli-fallback-policy.json +0 -22
- package/config/mcp.json +0 -38
- package/config/plugin-manifest.json +0 -152
- package/config/plugin-manifest.schema.json +0 -244
- package/config/remote-memory-policy.json +0 -32
- package/dist/api/web/index.d.ts +0 -3
- package/dist/api/web/index.js +0 -4
- package/dist/api/web/web-server.d.ts +0 -3
- package/dist/api/web/web-server.js +0 -6
- package/dist/api/web/web.d.ts +0 -4
- package/dist/api/web/web.js +0 -639
- package/dist/commands/managed-sync.d.ts +0 -10
- package/dist/commands/managed-sync.js +0 -64
- package/dist/commands/mcp-server.d.ts +0 -3
- package/dist/commands/mcp-server.js +0 -393
- package/dist/core/context.js +0 -24
- package/dist/core/governance.js +0 -64
- package/dist/core/local-embeddings.d.ts +0 -6
- package/dist/core/local-embeddings.js +0 -20
- package/dist/core/namespaces/index.d.ts +0 -71
- package/dist/core/namespaces/index.js +0 -305
- package/dist/core/namespaces/uri-parser.d.ts +0 -31
- package/dist/core/namespaces/uri-parser.js +0 -74
- package/dist/core/observations.d.ts +0 -26
- package/dist/core/observations.js +0 -110
- package/dist/core/requirements.d.ts +0 -20
- package/dist/core/requirements.js +0 -35
- package/dist/core/search/qmd-search.d.ts +0 -61
- package/dist/core/search/qmd-search.js +0 -178
- package/dist/core/snapshots.d.ts +0 -29
- package/dist/core/snapshots.js +0 -220
- package/dist/core/sync/qmd-sync.d.ts +0 -106
- package/dist/core/sync/qmd-sync.js +0 -213
- package/dist/core/utils.js +0 -74
- package/dist/index.d.ts +0 -19
- package/dist/index.js +0 -997
- package/generated/mcp/manifest.json +0 -23
- package/generated/mcp/mcp-servers.json +0 -25
- package/generated/mcp/mcporter.json +0 -34
- package/generated/mcp/openclaw-memory-qmd.json +0 -17
- package/generated/mcp/runtime.json +0 -12
- package/hooks/hooks.json +0 -52
- package/hooks/post-tool-use.js +0 -26
- package/hooks/session-end.js +0 -28
- package/hooks/session-start.js +0 -33
- package/hooks/user-prompt-submit.js +0 -26
- package/hooks/utils.js +0 -153
- package/npx-installer.js +0 -208
- package/packages/plugin-claude-code/README.md +0 -73
- package/packages/plugin-claude-code/dist/plugin-wrapper.d.ts +0 -35
- package/packages/plugin-claude-code/dist/plugin-wrapper.js +0 -191
- package/packages/plugin-claude-code/package.json +0 -31
- package/packages/plugin-openclaw/README.md +0 -70
- package/packages/plugin-openclaw/dist/index.d.ts +0 -49
- package/packages/plugin-openclaw/dist/index.js +0 -262
- package/packages/plugin-openclaw/openclaw.plugin.json +0 -94
- package/packages/plugin-openclaw/package.json +0 -31
- package/packages/plugin-opencode/install.mjs +0 -217
- package/packages/plugin-opencode/package.json +0 -21
- package/plugin.json +0 -32
- package/scripts/build-release.sh +0 -36
- package/scripts/check-secrets.js +0 -132
- package/scripts/db/check-db.mjs +0 -88
- package/scripts/db/fix-all-columns.mjs +0 -52
- package/scripts/db/fix-schema-all.mjs +0 -55
- package/scripts/db/fix-schema-full.mjs +0 -46
- package/scripts/db/fix-schema.mjs +0 -38
- package/scripts/db/init-db.mjs +0 -13
- package/scripts/db/recreate-db.mjs +0 -14
- package/scripts/generate-mcp.mjs +0 -264
- package/scripts/github-release.sh +0 -77
- package/scripts/init-dirs.mjs +0 -13
- package/scripts/install-interactive.mjs +0 -677
- package/scripts/install-mcp.mjs +0 -116
- package/scripts/install-plugin.mjs +0 -415
- package/scripts/install-web.sh +0 -120
- package/scripts/install.mjs +0 -340
- package/scripts/openclaw-bootstrap.mjs +0 -127
- package/scripts/package-release.sh +0 -71
- package/scripts/remote-preflight.mjs +0 -62
- package/scripts/squish-fallback.mjs +0 -132
- package/scripts/test/test-all-systems.mjs +0 -139
- package/scripts/test/test-memory-system.mjs +0 -139
- package/scripts/test/test-v0.5.0.mjs +0 -210
- package/scripts/test-interactive.mjs +0 -131
- package/scripts/verify-mcp.mjs +0 -214
- package/skills/memory-guide/SKILL.md +0 -332
- package/skills/squish-cli/SKILL.md +0 -240
- package/skills/squish-mcp/SKILL.md +0 -355
- package/skills/squish-memory/install.mjs +0 -335
- package/skills/squish-memory/skill.json +0 -32
- /package/dist/{algorithms → core/algorithms}/detection/hash-filters.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/detection/hash-filters.js +0 -0
- /package/dist/{algorithms → core/algorithms}/handlers/approve-merge.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/handlers/detect-duplicates.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/handlers/get-stats.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/handlers/list-proposals.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/handlers/preview-merge.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/handlers/reject-merge.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/handlers/reverse-merge.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/safety/safety-checks.js +0 -0
- /package/dist/{algorithms → core/algorithms}/utils/response-builder.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/utils/response-builder.js +0 -0
- /package/dist/core/{context.d.ts → context/context.d.ts} +0 -0
- /package/dist/core/{agent-memory.d.ts → ingestion/agent-memory.d.ts} +0 -0
- /package/dist/core/{privacy.d.ts → security/privacy.d.ts} +0 -0
- /package/dist/core/{privacy.js → security/privacy.js} +0 -0
- /package/dist/core/{secret-detector.d.ts → security/secret-detector.d.ts} +0 -0
- /package/dist/core/{secret-detector.js → security/secret-detector.js} +0 -0
- /package/dist/core/{session-hooks → session}/session-hooks.d.ts +0 -0
- /package/dist/core/{session-hooks → session}/session-hooks.js +0 -0
- /package/dist/core/{cache.d.ts → storage/cache.d.ts} +0 -0
- /package/dist/core/{database.d.ts → storage/database.d.ts} +0 -0
- /package/dist/core/{database.js → storage/database.js} +0 -0
package/README.md
CHANGED
|
@@ -1,368 +1,273 @@
|
|
|
1
|
-
# Squish -
|
|
1
|
+
# Squish - Memory Runtime for AI Agents
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/squish-memory)
|
|
4
4
|
[](https://www.npmjs.com/package/squish-memory)
|
|
5
5
|
[](https://opensource.org/licenses/MIT)
|
|
6
6
|
[](https://www.typescriptlang.org/)
|
|
7
7
|
|
|
8
|
-
**
|
|
8
|
+
**Your agent forgets. Squish fixes that.** It auto-captures useful context, derives durable beliefs like decisions and constraints, and restores that context through CLI, MCP, and a local web UI.
|
|
9
|
+
|
|
10
|
+
> Squish does not have a crypto token, has no token launch planned, and nobody is authorized to launch one on behalf of the project.
|
|
9
11
|
|
|
10
12
|
```bash
|
|
11
|
-
|
|
13
|
+
bun add squish-memory
|
|
12
14
|
```
|
|
13
15
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
## Why Agents Need Memory
|
|
16
|
+
## Why Squish
|
|
17
17
|
|
|
18
18
|
| Without Squish | With Squish |
|
|
19
19
|
|----------------|-------------|
|
|
20
|
-
| Forgets after
|
|
20
|
+
| Forgets everything after session | Remembers across sessions |
|
|
21
21
|
| Repeats the same mistakes | Learns from past decisions |
|
|
22
|
-
| No
|
|
23
|
-
| Can't track preferences | Adapts to
|
|
22
|
+
| No project awareness | Builds understanding over time |
|
|
23
|
+
| Can't track preferences | Adapts to your style |
|
|
24
24
|
|
|
25
|
-
##
|
|
25
|
+
## What It Does
|
|
26
26
|
|
|
27
|
-
Squish
|
|
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.
|
|
27
|
+
Squish is a forward-only memory runtime for agents:
|
|
30
28
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
┌──────────────┐
|
|
36
|
-
│ Trigger │ <-- "remember this", "important"
|
|
37
|
-
│ Detection │
|
|
38
|
-
└──────────────┘
|
|
39
|
-
|
|
|
40
|
-
v
|
|
41
|
-
┌──────────────┐
|
|
42
|
-
│ Write Gate │ <-- Validate, sanitize, score
|
|
43
|
-
└──────────────┘
|
|
44
|
-
|
|
|
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
|
-
└──────────────────────────────────────────┘
|
|
57
|
-
|
|
|
58
|
-
v
|
|
59
|
-
Agent Context
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
## Key Features
|
|
29
|
+
- **Auto-capture** stores durable signal without relying on the model to remember to save it.
|
|
30
|
+
- **Belief derivation** turns memories into decisions, constraints, and preferences that can change future behavior.
|
|
31
|
+
- **Context restore** gives a restarted agent the relevant state instead of a cold start.
|
|
32
|
+
- **Inspection surfaces** let you see what was stored, what belief was derived, and why it was injected back.
|
|
63
33
|
|
|
64
|
-
|
|
65
|
-
- **Trigger Detection**: Auto-detects "remember", "important", corrections
|
|
66
|
-
- **Contradiction Resolution**: Auto-updates when facts change
|
|
67
|
-
- **Temporal Facts**: Handles time-bound information ("until January")
|
|
68
|
-
- **Confidence Scoring**: Knows how reliable each memory is
|
|
34
|
+
Under the hood, Squish uses a hybrid memory pipeline for signal quality, persistence, and wake-up continuity:
|
|
69
35
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
36
|
+
```
|
|
37
|
+
User Action ──► Signal Distillation ──► Write Gate ──► Session Working Set
|
|
38
|
+
│
|
|
39
|
+
├─ Durable Distilled Memory
|
|
40
|
+
├─ Raw Fallback Snapshot
|
|
41
|
+
└─ SQLite/Postgres + Hybrid Retrieval
|
|
42
|
+
```
|
|
74
43
|
|
|
75
|
-
|
|
76
|
-
- **
|
|
77
|
-
- **
|
|
78
|
-
- **
|
|
44
|
+
- **Signal distillation**: Squish suppresses noisy output, keeps session-only context local, and only promotes durable signal.
|
|
45
|
+
- **Session working set**: Active files, recent commands, failures, hypotheses, active places, and small graph cues are compacted for the next wake-up.
|
|
46
|
+
- **Places**: Durable memories are routed into spatial buckets like `WIP`, `Sandbox`, `Board`, and `Ref` for segmented retrieval.
|
|
47
|
+
- **Graph enrichment**: Durable memories strengthen entity and relationship structure used by retrieval scoring.
|
|
48
|
+
- **Durable memory**: Stable facts, corrections, decisions, and fixes are stored for long-term retrieval.
|
|
49
|
+
- **Raw fallback**: Nuance-sensitive output can keep an internal raw artifact for inspection without polluting normal context.
|
|
79
50
|
|
|
80
51
|
## Quick Start
|
|
81
52
|
|
|
82
|
-
###
|
|
83
|
-
|
|
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
|
-
```
|
|
53
|
+
### Install with add-mcp (Recommended)
|
|
54
|
+
One command installs Squish into Claude Code, OpenCode, Cursor, VS Code, Codex, and other MCP-capable clients:
|
|
93
55
|
|
|
94
|
-
### Universal Plugin Installer (Recommended)
|
|
95
56
|
```bash
|
|
96
|
-
|
|
97
|
-
npx squish-memory install-plugin --client=claude-code # Claude Code
|
|
98
|
-
npx squish-memory install-plugin --client=openclaw # OpenClaw
|
|
99
|
-
npx squish-memory install-plugin --client=opencode # OpenCode
|
|
100
|
-
npx squish-memory install-plugin --client=all # All supported clients
|
|
101
|
-
|
|
102
|
-
# Verify installation
|
|
103
|
-
npx squish-memory install-plugin --client=claude-code --verify
|
|
57
|
+
npx add-mcp squish-memory
|
|
104
58
|
```
|
|
105
59
|
|
|
106
|
-
|
|
107
|
-
```bash
|
|
108
|
-
# Install from marketplace
|
|
109
|
-
/plugin marketplace add https://github.com/michielhdoteth/squish.git
|
|
110
|
-
/plugin install squish@michielhdoteth-squish
|
|
111
|
-
```
|
|
60
|
+
Or install the package directly:
|
|
112
61
|
|
|
113
|
-
### For OpenClaw (npm) - Legacy Method
|
|
114
62
|
```bash
|
|
115
|
-
|
|
63
|
+
bun add squish-memory
|
|
116
64
|
```
|
|
117
65
|
|
|
118
|
-
|
|
66
|
+
New installs should work on first run with the current schema. If you are upgrading an older local install, use `squish doctor --migrate` to repair it forward.
|
|
119
67
|
|
|
120
|
-
|
|
121
|
-
```bash
|
|
122
|
-
# Works with any agent framework
|
|
123
|
-
squish remember "User prefers TypeScript"
|
|
124
|
-
squish search "preferences"
|
|
125
|
-
squish health
|
|
126
|
-
```
|
|
68
|
+
Most memory behavior is automatic once Squish is installed. The CLI remains available for explicit saves, inspection, diagnostics, and one-command demos:
|
|
127
69
|
|
|
128
|
-
### Universal API
|
|
129
70
|
```bash
|
|
130
|
-
#
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
# Add memory via HTTP (stored in both QMD index and SQLite)
|
|
134
|
-
curl -X POST http://localhost:3000/api/memories \
|
|
135
|
-
-H "Content-Type: application/json" \
|
|
136
|
-
-d '{"content": "User prefers TypeScript", "type": "preference", "container": "my-project"}'
|
|
137
|
-
|
|
138
|
-
# Search memories via HTTP (uses QMD for fast hybrid search)
|
|
139
|
-
curl "http://localhost:3000/api/memories/search?q=TypeScript"
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
**That's it.** One install, persistent memory for any AI agent.
|
|
143
|
-
|
|
144
|
-
## MCP Tools for Agents
|
|
71
|
+
# Zero-touch demo: show current project context and derived beliefs
|
|
72
|
+
squish context --json
|
|
145
73
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
| `remember` | Store a memory |
|
|
149
|
-
| `search` | Find relevant memories |
|
|
150
|
-
| `recall` | Get specific memory by ID |
|
|
151
|
-
| `core_memory` | Always-visible context (persona, user info) |
|
|
152
|
-
| `context` | Get project-relevant memories |
|
|
153
|
-
| `observe` | Record patterns from tool usage |
|
|
74
|
+
# Explicit save when you want to pin something intentionally
|
|
75
|
+
squish remember "We chose PostgreSQL for team mode" --type decision
|
|
154
76
|
|
|
155
|
-
|
|
77
|
+
# Inspect why a memory exists and which beliefs it supports
|
|
78
|
+
squish inspect <memory-id> --json
|
|
156
79
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
- **Storage Flexible**: SQLite for local, PostgreSQL for team deployments
|
|
160
|
-
|
|
161
|
-
## Universal Plugin Architecture
|
|
162
|
-
|
|
163
|
-
Squish now provides a **universal plugin system** that works as a plugin across all major AI assistant frameworks through a single manifest-driven installer.
|
|
164
|
-
|
|
165
|
-
### How It Works
|
|
166
|
-
1. Single `plugin-manifest.json` defines the plugin for all clients
|
|
167
|
-
2. `npx squish-memory install-plugin --client=<target>` handles installation
|
|
168
|
-
3. Auto-installs dependencies (mcporter, qmd) with pinned versions
|
|
169
|
-
4. Generates client-specific configurations automatically
|
|
170
|
-
5. Provides unified verification and troubleshooting
|
|
171
|
-
|
|
172
|
-
### Supported Clients
|
|
173
|
-
| Client | Installation Method | Status |
|
|
174
|
-
|--------|-------------------|---------|
|
|
175
|
-
| Claude Code | Plugin hooks (.claude-plugin/) | ✅ Stable |
|
|
176
|
-
| OpenClaw | Memory slot via MCP bridge | ✅ Stable |
|
|
177
|
-
| OpenCode | MCP server config | ✅ Stable |
|
|
178
|
-
| Codex | MCP server config | ✅ Stable |
|
|
179
|
-
| Cursor | MCP server config | ✅ Beta |
|
|
180
|
-
| VS Code | MCP server config | ✅ Beta |
|
|
181
|
-
| Windsurf | MCP server config | ✅ Beta |
|
|
182
|
-
|
|
183
|
-
### Quick Installation Examples
|
|
184
|
-
```bash
|
|
185
|
-
# Install for Claude Code (recommended for Claude users)
|
|
186
|
-
npx squish-memory install-plugin --client=claude-code --verify
|
|
187
|
-
|
|
188
|
-
# Install for OpenClaw (recommended for OpenClaw users)
|
|
189
|
-
npx squish-memory install-plugin --client=openclaw --verify
|
|
190
|
-
|
|
191
|
-
# Install for all supported clients
|
|
192
|
-
npx squish-memory install-plugin --client=all --verify
|
|
193
|
-
|
|
194
|
-
# Install for multiple specific clients
|
|
195
|
-
npx squish-memory install-plugin --client=claude-code,openclaw,opencode --verify
|
|
80
|
+
# Repair an older install forward if local schema drifted
|
|
81
|
+
squish doctor --json --migrate
|
|
196
82
|
```
|
|
197
83
|
|
|
198
|
-
|
|
199
|
-
- **One manifest to rule them all**: Single source of truth
|
|
200
|
-
- **Zero manual configuration**: Automatic dependency installation
|
|
201
|
-
- **Version pinned dependencies**: Stable, reproducible builds
|
|
202
|
-
- **Unified verification**: One command to check all clients
|
|
203
|
-
- **Backward compatible**: Existing integrations still work
|
|
204
|
-
|
|
205
|
-
## Universal API
|
|
206
|
-
|
|
207
|
-
Squish now provides a universal HTTP API that works with any AI agent:
|
|
208
|
-
|
|
209
|
-
```typescript
|
|
210
|
-
// Add memory via HTTP
|
|
211
|
-
POST /api/memories
|
|
212
|
-
{
|
|
213
|
-
"content": "User prefers TypeScript",
|
|
214
|
-
"type": "preference",
|
|
215
|
-
"container": "my-project",
|
|
216
|
-
"tags": ["preferences", "coding-style"]
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
// Search memories via HTTP
|
|
220
|
-
GET /api/memories/search?query=TypeScript&limit=10
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
**Universal Benefits:**
|
|
224
|
-
- Works with any AI agent (Claude, OpenAI, Anthropic, custom)
|
|
225
|
-
- HTTP RESTful API + WebSocket for real-time sync
|
|
226
|
-
- PostgreSQL + pgvector for scalable memory
|
|
227
|
-
- Docker-ready for easy deployment
|
|
228
|
-
|
|
229
|
-
### Docker Deployment
|
|
84
|
+
Or use the other shipped surfaces directly:
|
|
230
85
|
|
|
231
86
|
```bash
|
|
232
|
-
#
|
|
233
|
-
|
|
87
|
+
# MCP health check / manual startup surface
|
|
88
|
+
squish-mcp --health
|
|
234
89
|
|
|
235
|
-
#
|
|
236
|
-
|
|
237
|
-
docker run -p 3000:3000 squish-universal
|
|
90
|
+
# Local web UI
|
|
91
|
+
squish run web
|
|
238
92
|
```
|
|
239
93
|
|
|
240
|
-
##
|
|
94
|
+
## Features
|
|
241
95
|
|
|
242
|
-
|
|
243
|
-
-
|
|
244
|
-
-
|
|
245
|
-
-
|
|
96
|
+
### Memory Intelligence
|
|
97
|
+
- Auto-detects "remember this", "important", corrections
|
|
98
|
+
- Distills noisy tool output before durable writes
|
|
99
|
+
- Splits events into discarded, session-only, durable, and durable-with-raw-fallback paths
|
|
100
|
+
- Handles contradictions when facts change
|
|
101
|
+
- Temporal facts with expiration ("until January")
|
|
102
|
+
- Confidence scoring for each memory
|
|
103
|
+
- **Memory Runtime**: Hot/cold memory lifecycle with automatic decay (hot=active, cold=archived)
|
|
104
|
+
- **Graph-boosted retrieval**: associations between memories boost relevance
|
|
105
|
+
- **Belief System**: Derived semantic layer - decisions, preferences, constraints extracted from memories
|
|
106
|
+
- **Persistent Hot Cache**: Karpathy-style wiki layer that survives restarts (not just session)
|
|
107
|
+
- **Scheduler Resilience**: Jobs catch up after machine sleep/wake - no missed maintenance
|
|
108
|
+
|
|
109
|
+
### Retrieval Quality
|
|
110
|
+
- Session wake-up uses compacted working-set context before broad recall
|
|
111
|
+
- Place context remains attached to retrieved memories and can shape context selection
|
|
112
|
+
- Hybrid search: semantic + keyword (BM25) with Reciprocal Rank Fusion
|
|
113
|
+
- Multi-factor ranking: relevance, recency, importance, graph-boost
|
|
114
|
+
- LLM-powered context extraction with Ollama (local)
|
|
115
|
+
- **Graph associations**: memories linked by coactivation boost search results
|
|
116
|
+
|
|
117
|
+
### Security & Encryption
|
|
118
|
+
- **Client-side encryption**: AES-256-GCM encryption for sensitive memories
|
|
119
|
+
- **Passphrase management**: Via `SQUISH_ENCRYPTION_PASSPHRASE` env var (not exposed via MCP)
|
|
120
|
+
- Encryption passphrase configured in `.env` file in data directory
|
|
121
|
+
|
|
122
|
+
### Universal Compatibility
|
|
123
|
+
- **CLI**: `squish remember`, `squish recall`, `squish inspect`, `squish context`, `squish stats`, `squish doctor`
|
|
124
|
+
- **MCP Server**: Works with Claude Code, OpenCode, Cursor, VS Code, OpenClaw
|
|
125
|
+
- **Web UI**: Inspect memories, projects, and recent observations locally
|
|
126
|
+
- **SQLite**: Local, zero-config
|
|
127
|
+
- **PostgreSQL**: Team mode with Supabase/pgvector
|
|
128
|
+
- **QMD Integration**: Native .md file search via @tobilu/qmd npm package
|
|
129
|
+
|
|
130
|
+
### Current MCP Tools (12 tools)
|
|
131
|
+
- `squish_timeline` - 3-layer progressive disclosure
|
|
132
|
+
- `squish_remember` - Store memory or learning (auto-detects type)
|
|
133
|
+
- `squish_recall` - Recall memories by query or retrieve memory by ID
|
|
134
|
+
- `squish_forget` - Delete memory by ID or bulk delete
|
|
135
|
+
- `squish_link` - Manage memory associations
|
|
136
|
+
- `squish_context` - Get project context
|
|
137
|
+
- `squish_health` - Check system health
|
|
138
|
+
- `squish_stats` - Get memory statistics
|
|
139
|
+
- `squish_inspect` - Inspect memory retention
|
|
140
|
+
- `squish_pin` - Pin/unpin memory
|
|
141
|
+
- `squish_recent` - Get recent memories
|
|
142
|
+
- `squish_stale` - Show stale memories
|
|
143
|
+
|
|
144
|
+
## Benchmark Results
|
|
145
|
+
|
|
146
|
+
Real tests using academic benchmarks with both configurations:
|
|
147
|
+
|
|
148
|
+
### LoCoMo (1540 questions)
|
|
149
|
+
| Configuration | Score | Notes |
|
|
150
|
+
|---------------|-------|-------|
|
|
151
|
+
| **Without LLM** | **65.19%** | Vector-only |
|
|
152
|
+
| With LLM | 67.34% | Vector + LLM extraction |
|
|
153
|
+
| Mem0 | 66.88% | Requires LLM |
|
|
154
|
+
| TrueMemory | 91.5% | Uses LLM |
|
|
155
|
+
|
|
156
|
+
**Squish achieves competitive scores WITHOUT requiring LLM tokens.**
|
|
157
|
+
|
|
158
|
+
#### LoCoMo Breakdown (No LLM)
|
|
159
|
+
| Category | Score |
|
|
160
|
+
|----------|-------|
|
|
161
|
+
| Single-hop | 85.14% |
|
|
162
|
+
| Multi-hop | 47.78% |
|
|
163
|
+
| Temporal | 95.24% |
|
|
164
|
+
| Open-domain | 98.00% |
|
|
165
|
+
| Common-sense | 1.79% |
|
|
166
|
+
|
|
167
|
+
### LongMemEval (100 questions)
|
|
168
|
+
| Configuration | Score | Breakdown |
|
|
169
|
+
|---------------|-------|-----------|
|
|
170
|
+
| **Without LLM** | **67.00%** | Temporal: 85%, Multi-session: 40% |
|
|
171
|
+
| With LLM | 67.00% | Temporal: 85%, Multi-session: 40% |
|
|
172
|
+
|
|
173
|
+
Note: LLM extraction helps during storage but scoring uses retrieved context keyword matching.
|
|
174
|
+
|
|
175
|
+
### Performance
|
|
176
|
+
| Metric | Result |
|
|
177
|
+
|--------|--------|
|
|
178
|
+
| Embedding Latency | 1-5ms |
|
|
179
|
+
| API Latency | 1-20ms |
|
|
180
|
+
| Max Throughput | 943 ops/sec |
|
|
181
|
+
| Package Size | **283 KB** |
|
|
182
|
+
|
|
183
|
+
### Local Runtime Characteristics
|
|
184
|
+
|
|
185
|
+
| Characteristic | Result |
|
|
186
|
+
|----------------|--------|
|
|
187
|
+
| Default Cost | $0 local runtime |
|
|
188
|
+
| Local-first | Yes |
|
|
189
|
+
| Setup | 1 command |
|
|
190
|
+
| API keys | Not required for the default path |
|
|
191
|
+
| Session continuity | Built in |
|
|
192
|
+
|
|
193
|
+
## Supported Clients
|
|
194
|
+
|
|
195
|
+
| Client | Status |
|
|
196
|
+
|--------|--------|
|
|
197
|
+
| Claude Code | Stable |
|
|
198
|
+
| OpenCode | Stable |
|
|
199
|
+
| OpenClaw | Stable |
|
|
200
|
+
| Cursor | Beta |
|
|
201
|
+
| VS Code | Beta |
|
|
202
|
+
| Windsurf | Beta |
|
|
246
203
|
|
|
247
204
|
## Configuration
|
|
248
205
|
|
|
249
|
-
|
|
206
|
+
**Zero config required** - works out of the box with local embeddings.
|
|
250
207
|
|
|
251
|
-
|
|
252
|
-
- None! Works out-of-the-box with local TF-IDF embeddings
|
|
208
|
+
For customization:
|
|
253
209
|
|
|
254
|
-
**Universal API:**
|
|
255
210
|
```bash
|
|
256
|
-
#
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
PORT=3000 # API server port
|
|
260
|
-
```
|
|
261
|
-
|
|
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):**
|
|
277
|
-
```bash
|
|
278
|
-
SQUISH_DATA_DIR=./.squish # Custom data directory
|
|
279
|
-
SQUISH_EMBEDDINGS_PROVIDER=local # local, openai, ollama, google, none, auto
|
|
280
|
-
|
|
281
|
-
# Model selection (optional, uses defaults if not set)
|
|
282
|
-
SQUISH_OPENAI_EMBEDDING_MODEL=text-embedding-3-small
|
|
283
|
-
SQUISH_GOOGLE_EMBEDDING_MODEL=gemini-embedding-001
|
|
284
|
-
SQUISH_OLLAMA_EMBEDDING_MODEL=nomic-embed-text:v1.5
|
|
285
|
-
|
|
286
|
-
# API credentials (for cloud providers)
|
|
287
|
-
SQUISH_OPENAI_API_KEY=sk-...
|
|
211
|
+
# Environment variables
|
|
212
|
+
SQUISH_DATA_DIR=./.squish
|
|
213
|
+
SQUISH_EMBEDDINGS_PROVIDER=ollama # openai, ollama, google, local
|
|
288
214
|
SQUISH_OLLAMA_URL=http://localhost:11434
|
|
289
|
-
GOOGLE_CLOUD_PROJECT=your-project
|
|
290
|
-
GOOGLE_CLOUD_API_KEY=your-key
|
|
291
215
|
|
|
292
|
-
#
|
|
293
|
-
SQUISH_EMBEDDINGS_TIMEOUT_MS=30000
|
|
294
|
-
SQUISH_EMBEDDINGS_MAX_RETRIES=3
|
|
295
|
-
SQUISH_EMBEDDINGS_RETRY_DELAY_MS=1000
|
|
296
|
-
|
|
297
|
-
# Core memory size (default: 16KB total, 4KB per section)
|
|
298
|
-
SQUISH_CORE_MEMORY_TOTAL_BYTES=16384
|
|
299
|
-
SQUISH_CORE_MEMORY_SECTION_BYTES=4096
|
|
300
|
-
|
|
301
|
-
# For team mode
|
|
216
|
+
# Team mode
|
|
302
217
|
DATABASE_URL=postgresql://user:pass@host/db
|
|
303
218
|
```
|
|
304
219
|
|
|
305
220
|
## Architecture
|
|
306
221
|
|
|
307
|
-
### Two-Tier Memory
|
|
308
|
-
|
|
309
|
-
- **
|
|
310
|
-
- **Long-term (Database)**: SQLite (local) or PostgreSQL (team). Durable ACID-compliant storage for important memories that need persistence.
|
|
222
|
+
### Two-Tier Memory
|
|
223
|
+
- **QMD (Files)**: BM25 + vectors for fast recall
|
|
224
|
+
- **SQLite/PostgreSQL**: ACID-compliant persistent storage
|
|
311
225
|
|
|
312
|
-
###
|
|
313
|
-
- **
|
|
314
|
-
- **
|
|
315
|
-
- **
|
|
316
|
-
- **
|
|
226
|
+
### Runtime Pipeline
|
|
227
|
+
- **Signal engine**: classifies captured events as discard, session-only, durable-distilled, or durable-with-raw-fallback
|
|
228
|
+
- **Session working set**: persists active working context, active places, and small graph cues between sessions
|
|
229
|
+
- **Places**: spatially segment durable memory for retrieval and wake-up continuity
|
|
230
|
+
- **Graph**: incrementally enriches durable memories so graph boost applies to cleaner signal
|
|
231
|
+
- **Inspection path**: lets you inspect why a memory was retained and whether a raw fallback artifact exists
|
|
317
232
|
|
|
318
|
-
###
|
|
319
|
-
- **
|
|
320
|
-
- **
|
|
321
|
-
- **
|
|
233
|
+
### Interfaces
|
|
234
|
+
- **packages/mcp**: Native agent integration via Model Context Protocol
|
|
235
|
+
- **HTTP**: Streamable HTTP server
|
|
236
|
+
- **CLI**: Shell and scripts
|
|
322
237
|
|
|
323
238
|
### Memory Lifecycle
|
|
324
|
-
- **Sectors**: episodic, semantic, procedural, autobiographical
|
|
325
|
-
- **Tiers**: hot (
|
|
326
|
-
- **Status**: active, merged, superseded, expired
|
|
327
|
-
|
|
328
|
-
### Deployment Flexibility
|
|
329
|
-
- **Local SQLite**: Zero-configuration, perfect for individual agents and edge deployment
|
|
330
|
-
- **PostgreSQL**: Horizontal scaling for teams and enterprise deployments
|
|
331
|
-
- **Docker**: Single-command deployment with docker-compose.universal.yml
|
|
332
|
-
- **Cloud**: Ready for AWS/GCP/Azure with standard PostgreSQL compatibility
|
|
239
|
+
- **Sectors**: episodic, semantic, procedural, autobiographical
|
|
240
|
+
- **Tiers**: hot (recent), warm (accessible), cold (archived)
|
|
241
|
+
- **Status**: active, merged, superseded, expired
|
|
333
242
|
|
|
334
243
|
## Development
|
|
335
244
|
|
|
336
245
|
```bash
|
|
337
|
-
# Install dependencies
|
|
338
246
|
bun install
|
|
339
|
-
|
|
340
|
-
# Build
|
|
341
247
|
bun run build
|
|
342
|
-
|
|
343
|
-
# Test
|
|
344
248
|
bun test
|
|
345
|
-
|
|
346
|
-
# Verify MCP
|
|
347
249
|
bun run verify:mcp
|
|
348
250
|
```
|
|
349
251
|
|
|
350
252
|
## Troubleshooting
|
|
351
253
|
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
254
|
+
```bash
|
|
255
|
+
# Repair an older local install forward
|
|
256
|
+
squish doctor --migrate
|
|
257
|
+
|
|
258
|
+
# Zero-touch runtime check
|
|
259
|
+
squish context --json
|
|
355
260
|
|
|
356
|
-
|
|
357
|
-
-
|
|
358
|
-
|
|
261
|
+
# MCP health check
|
|
262
|
+
squish-mcp --health
|
|
263
|
+
```
|
|
359
264
|
|
|
360
265
|
## License
|
|
361
266
|
|
|
362
|
-
MIT
|
|
267
|
+
MIT License. See [LICENSE](LICENSE).
|
|
363
268
|
|
|
364
269
|
## Links
|
|
365
270
|
|
|
366
|
-
-
|
|
367
|
-
-
|
|
368
|
-
-
|
|
271
|
+
- [Documentation](https://github.com/michielhdoteth/squish)
|
|
272
|
+
- [Benchmarks](docs/BENCHMARK.md)
|
|
273
|
+
- [Issues](https://github.com/michielhdoteth/squish/issues)
|