squish-memory 1.0.1 → 1.1.5
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 +130 -0
- package/CHANGELOG.md +55 -0
- package/README.md +155 -274
- package/config/hooks/claude-code-hooks.json +39 -0
- package/config/hooks/cursor-hooks.json +30 -0
- package/config/hooks/opencode-hooks.json +30 -0
- package/config/hooks/windsurf-hooks.json +30 -0
- package/config/mcp-mode-semantics.json +23 -21
- package/config/plugin-manifest.json +101 -152
- package/{plugin.json → config/plugin.json} +2 -2
- package/config/settings.json +52 -51
- package/{commands → core/commands}/init.md +39 -39
- package/dist/config.d.ts +28 -4
- package/dist/config.js +97 -29
- 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 +157 -0
- package/dist/core/adapters/types.js +50 -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 +1 -1
- 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 +133 -0
- package/dist/core/algorithms/types.js +5 -0
- package/dist/core/associations.d.ts +1 -2
- package/dist/core/associations.js +1 -2
- package/dist/core/autosave.d.ts +19 -0
- package/dist/core/autosave.js +16 -0
- package/dist/{commands → core/commands}/managed-sync.js +5 -5
- package/dist/core/commands/mcp-server.js +739 -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.d.ts +1 -1
- package/dist/core/embeddings.js +54 -2
- package/dist/core/error-handling.d.ts +63 -0
- package/dist/core/error-handling.js +173 -0
- package/dist/core/external-folder/index.d.ts +102 -0
- package/dist/core/external-folder/index.js +294 -0
- package/dist/core/hooks/agent-hooks.d.ts +74 -0
- package/dist/core/hooks/agent-hooks.js +244 -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/index.d.ts +6 -6
- package/dist/core/index.js +6 -6
- package/dist/core/{agent-memory.js → ingestion/agent-memory.js} +5 -7
- package/dist/core/{core-memory.js → ingestion/core-memory.js} +4 -4
- package/dist/core/ingestion/learnings.d.ts +57 -0
- package/dist/core/ingestion/learnings.js +202 -0
- package/dist/core/lib/db-client.d.ts +114 -0
- package/dist/core/lib/db-client.js +130 -0
- package/dist/core/lib/schemas.d.ts +129 -0
- package/dist/core/lib/schemas.js +87 -0
- package/dist/core/{utils.d.ts → lib/utils.d.ts} +1 -0
- package/dist/core/{utils.js → lib/utils.js} +31 -15
- package/dist/core/lib/validation.d.ts +38 -0
- package/dist/core/lib/validation.js +151 -0
- package/dist/core/lifecycle.d.ts +7 -0
- package/dist/core/lifecycle.js +140 -20
- package/dist/core/local-embeddings.d.ts +6 -1
- package/dist/core/local-embeddings.js +6 -15
- package/dist/core/logger.js +7 -1
- package/dist/core/mcp/server.js +27 -1
- package/dist/core/mcp/tools.js +35 -3
- package/dist/core/mcp/types.d.ts +4 -4
- package/dist/core/memory/categorizer.js +1 -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 +2 -11
- package/dist/core/memory/context-collector.js +1 -1
- package/dist/core/memory/edit-workflow.js +1 -1
- package/dist/core/memory/entity-resolver.js +7 -7
- 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.js +2 -2
- package/dist/core/memory/hybrid-search.d.ts +1 -6
- package/dist/core/memory/hybrid-search.js +70 -84
- package/dist/core/memory/importance.d.ts +8 -13
- package/dist/core/memory/importance.js +47 -74
- 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 +12 -4
- package/dist/core/memory/memories.js +196 -181
- package/dist/core/memory/memory-lifecycle.d.ts +8 -0
- package/dist/core/memory/memory-lifecycle.js +55 -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 +22 -0
- package/dist/core/memory/normalization.js +26 -0
- package/dist/core/memory/progressive-disclosure.js +1 -1
- package/dist/core/memory/query-rewriter.js +9 -9
- package/dist/core/memory/serialization.d.ts +4 -0
- package/dist/core/memory/serialization.js +49 -0
- package/dist/core/memory/stats.d.ts +5 -0
- package/dist/core/memory/stats.js +63 -12
- package/dist/core/memory/temporal-facts.js +21 -0
- package/dist/core/memory/write-gate.js +1 -1
- package/dist/core/obsidian-vault.d.ts +30 -0
- package/dist/core/obsidian-vault.js +94 -0
- 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 +39 -18
- package/dist/core/responses.d.ts +96 -0
- package/dist/core/responses.js +122 -0
- package/dist/core/scheduler/cron-scheduler.js +89 -14
- package/dist/core/scheduler/index.d.ts +1 -1
- package/dist/core/scheduler/index.js +1 -1
- package/dist/core/scheduler/job-runner.js +1 -1
- 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-search.js +4 -4
- 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 +6 -6
- package/dist/core/session/index.d.ts +1 -1
- package/dist/core/session/index.js +1 -1
- package/dist/core/session/self-iteration-job.d.ts +20 -0
- package/dist/core/session/self-iteration-job.js +282 -0
- package/dist/core/session/session-hooks.d.ts +18 -0
- package/dist/core/session/session-hooks.js +58 -0
- package/dist/core/session-hooks/self-iteration-job.js +35 -35
- package/dist/core/{cache.js → storage/cache.js} +2 -2
- package/dist/core/sync/qmd-sync.d.ts +1 -13
- package/dist/core/sync/qmd-sync.js +1 -13
- package/dist/core/toon.d.ts +43 -0
- package/dist/core/toon.js +160 -0
- package/dist/core/utils/memory-operations.js +1 -1
- 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 +115 -36
- package/dist/db/bootstrap.js +927 -555
- package/dist/{drizzle → db/drizzle}/schema-sqlite.d.ts +74 -25
- package/dist/{drizzle → db/drizzle}/schema-sqlite.js +91 -24
- package/dist/{drizzle → db/drizzle}/schema.d.ts +79 -32
- package/dist/{drizzle → db/drizzle}/schema.js +106 -35
- 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/neon.d.ts +8 -0
- package/dist/db/neon.js +20 -0
- package/dist/db/schema/index.d.ts +40 -0
- package/dist/db/schema/index.js +105 -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/index.d.ts +2 -14
- package/dist/index.js +1457 -631
- package/dist/vendor/sql.js/sql-wasm.wasm +0 -0
- package/dist/webui/server.d.ts +5 -0
- package/dist/{api/web/web.js → webui/server.js} +538 -509
- package/generated/mcp/manifest.json +23 -23
- package/{.mcp.json → mcp.json.example} +1 -1
- package/package.json +159 -169
- package/scripts/README.md +60 -0
- package/scripts/copy-runtime-assets.mjs +26 -0
- package/scripts/generate-mcp.mjs +264 -264
- package/scripts/github-release.sh +4 -4
- package/scripts/install-claude-code.sh +85 -0
- package/scripts/install-cursor.sh +56 -0
- package/scripts/install-hooks.sh +73 -0
- package/scripts/install-interactive.mjs +357 -674
- package/scripts/install-opencode.sh +75 -0
- package/scripts/install-windsurf.sh +67 -0
- package/skills/squish-memory/SKILL.md +104 -100
- package/skills/squish-memory/{install.mjs → scripts/install.mjs} +2 -2
- package/skills/squish-memory/{install.sh → scripts/install.sh} +2 -2
- package/skills/squish-memory/write_skill.js +2 -0
- package/.claude-plugin/marketplace.json +0 -20
- package/.claude-plugin/plugin.json +0 -32
- package/.env.mcp.example +0 -56
- package/QUICK-START.md +0 -71
- package/bin/squish-add.mjs +0 -32
- package/bin/squish-rm.mjs +0 -21
- package/commands/observe.md +0 -5
- 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 +0 -3
- package/dist/api/web/index.d.ts.map +0 -1
- package/dist/api/web/index.js +0 -4
- package/dist/api/web/index.js.map +0 -1
- package/dist/api/web/web-server.d.ts +0 -3
- package/dist/api/web/web-server.d.ts.map +0 -1
- package/dist/api/web/web-server.js +0 -6
- package/dist/api/web/web-server.js.map +0 -1
- package/dist/api/web/web.d.ts +0 -4
- 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 +0 -393
- 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 +0 -24
- 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 +0 -64
- 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 +0 -26
- package/dist/core/observations.d.ts.map +0 -1
- package/dist/core/observations.js +0 -110
- 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 +0 -20
- package/dist/core/requirements.d.ts.map +0 -1
- package/dist/core/requirements.js +0 -35
- 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/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.d.ts.map +0 -1
- package/packages/plugin-claude-code/dist/plugin-wrapper.js +0 -191
- package/packages/plugin-claude-code/dist/plugin-wrapper.js.map +0 -1
- 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.d.ts.map +0 -1
- package/packages/plugin-openclaw/dist/index.js +0 -262
- package/packages/plugin-openclaw/dist/index.js.map +0 -1
- 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/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/install-mcp.mjs +0 -116
- 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/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/skills/memory-guide/SKILL.md +0 -256
- package/skills/squish-cli/SKILL.md +0 -200
- package/skills/squish-mcp/SKILL.md +0 -311
- package/skills/squish-memory/claude-desktop.json +0 -12
- package/skills/squish-memory/openclaw.json +0 -13
- package/skills/squish-memory/opencode.json +0 -14
- package/skills/squish-memory/skill.json +0 -32
- /package/{commands → core/commands}/context-paging.md +0 -0
- /package/{commands → core/commands}/context-status.md +0 -0
- /package/{commands → core/commands}/context.md +0 -0
- /package/{commands → core/commands}/core-memory.md +0 -0
- /package/{commands → core/commands}/health.md +0 -0
- /package/{commands → core/commands}/merge.md +0 -0
- /package/{commands → core/commands}/recall.md +0 -0
- /package/{commands → core/commands}/remember.md +0 -0
- /package/{commands → core/commands}/search.md +0 -0
- /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/{commands → core/commands}/managed-sync.d.ts +0 -0
- /package/dist/{commands → core/commands}/mcp-server.d.ts +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/{core-memory.d.ts → ingestion/core-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/{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,350 +1,231 @@
|
|
|
1
|
-
# Squish - Universal
|
|
1
|
+
# Squish - Universal Memory for AI Agents
|
|
2
2
|
|
|
3
|
-
|
|
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
|
+
|
|
8
|
+
**Give any AI agent persistent, intelligent memory.** Without memory, agents forget everything between sessions. With Squish, they learn and adapt over time.
|
|
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.
|
|
4
11
|
|
|
5
12
|
```bash
|
|
6
|
-
|
|
13
|
+
bun add squish-memory
|
|
7
14
|
```
|
|
8
15
|
|
|
9
|
-
## Why
|
|
16
|
+
## Why Memory Matters
|
|
10
17
|
|
|
11
18
|
| Without Squish | With Squish |
|
|
12
19
|
|----------------|-------------|
|
|
13
|
-
| Forgets after
|
|
20
|
+
| Forgets everything after session | Remembers across sessions |
|
|
14
21
|
| Repeats the same mistakes | Learns from past decisions |
|
|
15
|
-
| No
|
|
16
|
-
| Can't track preferences | Adapts to
|
|
22
|
+
| No project awareness | Builds understanding over time |
|
|
23
|
+
| Can't track preferences | Adapts to your style |
|
|
17
24
|
|
|
18
25
|
## How It Works
|
|
19
26
|
|
|
20
|
-
|
|
21
|
-
- **Fast Search Tier**: QMD (Quick Markdown Search) provides lightning-fast hybrid BM25 + vector search
|
|
22
|
-
- **Persistent Storage Tier**: SQLite (local) or PostgreSQL (team) ensures durable, reliable memory storage
|
|
27
|
+
**Two-tier architecture** for optimal speed and durability:
|
|
23
28
|
|
|
24
29
|
```
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
v
|
|
34
|
-
┌──────────────┐
|
|
35
|
-
│ Write Gate │ <-- Validate, sanitize, score
|
|
36
|
-
└──────────────┘
|
|
37
|
-
|
|
|
38
|
-
v
|
|
39
|
-
┌─────────────────────┐
|
|
40
|
-
│ Dual Storage Write │
|
|
41
|
-
│ ──→ QMD Index │ (fast search)
|
|
42
|
-
│ ──→ SQLite/Postgres│ (durable storage)
|
|
43
|
-
└─────────────────────┘
|
|
44
|
-
|
|
|
45
|
-
v
|
|
46
|
-
┌─────────────────────┐
|
|
47
|
-
│ Hybrid Retrieval │
|
|
48
|
-
│ QMD Search + │
|
|
49
|
-
│ Vector Ranking │
|
|
50
|
-
└─────────────────────┘
|
|
51
|
-
|
|
|
52
|
-
v
|
|
53
|
-
Agent Context
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
## Key Features
|
|
57
|
-
|
|
58
|
-
### Memory Intelligence
|
|
59
|
-
- **Trigger Detection**: Auto-detects "remember", "important", corrections
|
|
60
|
-
- **Contradiction Resolution**: Auto-updates when facts change
|
|
61
|
-
- **Temporal Facts**: Handles time-bound information ("until January")
|
|
62
|
-
- **Confidence Scoring**: Knows how reliable each memory is
|
|
63
|
-
|
|
64
|
-
### Retrieval Quality
|
|
65
|
-
- **Hybrid Search**: Vector + keyword (BM25) with fusion
|
|
66
|
-
- **Multi-factor Ranking**: Semantic, recency, importance, confidence
|
|
67
|
-
- **Telemetry**: Tracks which memories are actually useful
|
|
30
|
+
User Action ──► Trigger Detection ──► Write Gate ──► Short-term (QMD)
|
|
31
|
+
│
|
|
32
|
+
Long-term (SQLite/PG)
|
|
33
|
+
│
|
|
34
|
+
Hybrid Retrieval
|
|
35
|
+
│
|
|
36
|
+
Agent Context
|
|
37
|
+
```
|
|
68
38
|
|
|
69
|
-
|
|
70
|
-
- **
|
|
71
|
-
- **Secret Detection**: Auto-redacts API keys, passwords
|
|
72
|
-
- **Graceful Degradation**: Works even when database fails
|
|
39
|
+
- **Short-term (QMD)**: Lightning-fast file-based search. Instant recall for recent context.
|
|
40
|
+
- **Long-term (SQLite/PG)**: Durable storage. SQLite for local, PostgreSQL for teams.
|
|
73
41
|
|
|
74
42
|
## Quick Start
|
|
75
43
|
|
|
76
|
-
###
|
|
77
|
-
|
|
78
|
-
# Install for your AI assistant(s)
|
|
79
|
-
npx squish-memory install-plugin --client=claude-code # Claude Code
|
|
80
|
-
npx squish-memory install-plugin --client=openclaw # OpenClaw
|
|
81
|
-
npx squish-memory install-plugin --client=opencode # OpenCode
|
|
82
|
-
npx squish-memory install-plugin --client=all # All supported clients
|
|
83
|
-
|
|
84
|
-
# Verify installation
|
|
85
|
-
npx squish-memory install-plugin --client=claude-code --verify
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
### For Claude Code (Plugin) - Legacy Method
|
|
89
|
-
```bash
|
|
90
|
-
# Install from marketplace
|
|
91
|
-
/plugin marketplace add https://github.com/michielhdoteth/squish.git
|
|
92
|
-
/plugin install squish@michielhdoteth-squish
|
|
93
|
-
```
|
|
44
|
+
### Install with add-mcp (Recommended)
|
|
45
|
+
One command installs to Claude Code, OpenCode, Cursor, VS Code, Codex, and more:
|
|
94
46
|
|
|
95
|
-
### For OpenClaw (npm) - Legacy Method
|
|
96
47
|
```bash
|
|
97
|
-
|
|
48
|
+
npx add-mcp squish-memory
|
|
98
49
|
```
|
|
99
50
|
|
|
100
|
-
|
|
51
|
+
Or traditional npm install:
|
|
101
52
|
|
|
102
|
-
### Universal CLI
|
|
103
53
|
```bash
|
|
104
|
-
|
|
105
|
-
squish remember "User prefers TypeScript"
|
|
106
|
-
squish search "preferences"
|
|
107
|
-
squish health
|
|
54
|
+
bun add squish-memory
|
|
108
55
|
```
|
|
109
56
|
|
|
110
|
-
### Universal API
|
|
111
57
|
```bash
|
|
112
|
-
#
|
|
113
|
-
|
|
58
|
+
# Store a memory
|
|
59
|
+
squish remember "User prefers TypeScript over JavaScript"
|
|
114
60
|
|
|
115
|
-
#
|
|
116
|
-
|
|
117
|
-
-H "Content-Type: application/json" \
|
|
118
|
-
-d '{"content": "User prefers TypeScript", "type": "preference", "container": "my-project"}'
|
|
61
|
+
# Save a quick note
|
|
62
|
+
squish note "Revisit caching strategy after launch"
|
|
119
63
|
|
|
120
|
-
#
|
|
121
|
-
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
**That's it.** One install, persistent memory for any AI agent.
|
|
125
|
-
|
|
126
|
-
## MCP Tools for Agents
|
|
127
|
-
|
|
128
|
-
| Tool | What It Does |
|
|
129
|
-
|------|--------------|
|
|
130
|
-
| `remember` | Store a memory |
|
|
131
|
-
| `search` | Find relevant memories |
|
|
132
|
-
| `recall` | Get specific memory by ID |
|
|
133
|
-
| `core_memory` | Always-visible context (persona, user info) |
|
|
134
|
-
| `context` | Get project-relevant memories |
|
|
135
|
-
| `observe` | Record patterns from tool usage |
|
|
136
|
-
|
|
137
|
-
## Execution Model
|
|
138
|
-
|
|
139
|
-
- **Universal First**: Works with any AI agent via MCP, CLI, or HTTP API
|
|
140
|
-
- **Transport Agnostic**: MCP (stdio/SSE), CLI, or HTTP/WebSocket - choose your preference
|
|
141
|
-
- **Storage Flexible**: SQLite for local, PostgreSQL for team deployments
|
|
142
|
-
|
|
143
|
-
## Universal Plugin Architecture
|
|
64
|
+
# Record an observation
|
|
65
|
+
squish learn observation "Updated auth flow" --action edit
|
|
144
66
|
|
|
145
|
-
|
|
67
|
+
# Record a fix or lesson learned
|
|
68
|
+
squish learn fix "Patched auth middleware regression"
|
|
146
69
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
2. `npx squish-memory install-plugin --client=<target>` handles installation
|
|
150
|
-
3. Auto-installs dependencies (mcporter, qmd) with pinned versions
|
|
151
|
-
4. Generates client-specific configurations automatically
|
|
152
|
-
5. Provides unified verification and troubleshooting
|
|
70
|
+
# Search memories
|
|
71
|
+
squish search "coding preferences"
|
|
153
72
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
| Claude Code | Plugin hooks (.claude-plugin/) | ✅ Stable |
|
|
158
|
-
| OpenClaw | Memory slot via MCP bridge | ✅ Stable |
|
|
159
|
-
| OpenCode | MCP server config | ✅ Stable |
|
|
160
|
-
| Codex | MCP server config | ✅ Stable |
|
|
161
|
-
| Cursor | MCP server config | ✅ Beta |
|
|
162
|
-
| VS Code | MCP server config | ✅ Beta |
|
|
163
|
-
| Windsurf | MCP server config | ✅ Beta |
|
|
164
|
-
|
|
165
|
-
### Quick Installation Examples
|
|
166
|
-
```bash
|
|
167
|
-
# Install for Claude Code (recommended for Claude users)
|
|
168
|
-
npx squish-memory install-plugin --client=claude-code --verify
|
|
169
|
-
|
|
170
|
-
# Install for OpenClaw (recommended for OpenClaw users)
|
|
171
|
-
npx squish-memory install-plugin --client=openclaw --verify
|
|
172
|
-
|
|
173
|
-
# Install for all supported clients
|
|
174
|
-
npx squish-memory install-plugin --client=all --verify
|
|
175
|
-
|
|
176
|
-
# Install for multiple specific clients
|
|
177
|
-
npx squish-memory install-plugin --client=claude-code,openclaw,opencode --verify
|
|
178
|
-
```
|
|
73
|
+
# List projects, then inspect relevant context
|
|
74
|
+
squish context --list-projects
|
|
75
|
+
squish context
|
|
179
76
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
- **Zero manual configuration**: Automatic dependency installation
|
|
183
|
-
- **Version pinned dependencies**: Stable, reproducible builds
|
|
184
|
-
- **Unified verification**: One command to check all clients
|
|
185
|
-
- **Backward compatible**: Existing integrations still work
|
|
186
|
-
|
|
187
|
-
## Universal API
|
|
188
|
-
|
|
189
|
-
Squish now provides a universal HTTP API that works with any AI agent:
|
|
190
|
-
|
|
191
|
-
```typescript
|
|
192
|
-
// Add memory via HTTP
|
|
193
|
-
POST /api/memories
|
|
194
|
-
{
|
|
195
|
-
"content": "User prefers TypeScript",
|
|
196
|
-
"type": "preference",
|
|
197
|
-
"container": "my-project",
|
|
198
|
-
"tags": ["preferences", "coding-style"]
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
// Search memories via HTTP
|
|
202
|
-
GET /api/memories/search?query=TypeScript&limit=10
|
|
77
|
+
# Get relevant context or fetch by ID
|
|
78
|
+
squish recall "user preferences"
|
|
203
79
|
```
|
|
204
80
|
|
|
205
|
-
|
|
206
|
-
- Works with any AI agent (Claude, OpenAI, Anthropic, custom)
|
|
207
|
-
- HTTP RESTful API + WebSocket for real-time sync
|
|
208
|
-
- PostgreSQL + pgvector for scalable memory
|
|
209
|
-
- Docker-ready for easy deployment
|
|
210
|
-
|
|
211
|
-
### Docker Deployment
|
|
81
|
+
Or use as a plugin:
|
|
212
82
|
|
|
213
83
|
```bash
|
|
214
|
-
#
|
|
215
|
-
|
|
84
|
+
# Install for Claude Code
|
|
85
|
+
npx squish-memory install-plugin --client=claude-code
|
|
216
86
|
|
|
217
|
-
#
|
|
218
|
-
|
|
219
|
-
docker run -p 3000:3000 squish-universal
|
|
87
|
+
# Install for OpenCode
|
|
88
|
+
npx squish-memory install-plugin --client=opencode
|
|
220
89
|
```
|
|
221
90
|
|
|
222
|
-
##
|
|
91
|
+
## Features
|
|
92
|
+
|
|
93
|
+
### Memory Intelligence
|
|
94
|
+
- Auto-detects "remember this", "important", corrections
|
|
95
|
+
- Handles contradictions when facts change
|
|
96
|
+
- Temporal facts with expiration ("until January")
|
|
97
|
+
- Confidence scoring for each memory
|
|
98
|
+
- **Tier lifecycle**: hot/warm/cold memory tiers with automatic decay
|
|
99
|
+
- **Graph-boosted retrieval**: associations between memories boost relevance
|
|
223
100
|
|
|
224
|
-
|
|
225
|
-
-
|
|
226
|
-
-
|
|
227
|
-
-
|
|
101
|
+
### Retrieval Quality
|
|
102
|
+
- Hybrid search: semantic + keyword (BM25) with Reciprocal Rank Fusion
|
|
103
|
+
- Multi-factor ranking: relevance, recency, importance, graph-boost
|
|
104
|
+
- LLM-powered context extraction with Ollama (local)
|
|
105
|
+
- **Graph associations**: memories linked by coactivation boost search results
|
|
106
|
+
|
|
107
|
+
### Security & Encryption
|
|
108
|
+
- **Client-side encryption**: AES-256-GCM encryption for sensitive memories
|
|
109
|
+
- **Passphrase management**: `squish_set_passphrase` and `squish_rotate_key` MCP tools
|
|
110
|
+
- Optional encryption via `SQUISH_ENCRYPTION_PASSPHRASE` env var
|
|
111
|
+
|
|
112
|
+
### Universal Compatibility
|
|
113
|
+
- **CLI**: `squish config`, `squish remember`, `squish note`, `squish learn`, `squish search`, `squish context`, `squish stats`
|
|
114
|
+
- **MCP Server**: Works with Claude Code, OpenCode, Cursor, VS Code, OpenClaw
|
|
115
|
+
- **HTTP API**: REST API + WebSocket for any agent
|
|
116
|
+
- **SQLite**: Local, zero-config
|
|
117
|
+
- **PostgreSQL**: Team mode with Supabase/pgvector
|
|
118
|
+
- **QMD Integration**: Native .md file search via QMD
|
|
119
|
+
|
|
120
|
+
### Current MCP Tools
|
|
121
|
+
- `squish_remember`, `squish_search`, `squish_recall`, `squish_forget`, `squish_update`
|
|
122
|
+
- `squish_link`, `squish_context`, `squish_learn`, `squish_health`, `squish_stats`
|
|
123
|
+
- `squish_confidence`, `squish_pin`, `squish_set_passphrase`, `squish_rotate_key`
|
|
124
|
+
- `squish_recent`, `squish_stale`, `squish_note`, `squish_tag`
|
|
125
|
+
|
|
126
|
+
## Benchmark Results
|
|
127
|
+
|
|
128
|
+
Real tests using [LoCoMo](https://github.com/snap-research/locomo) benchmark (22 questions):
|
|
129
|
+
|
|
130
|
+
| Metric | Result |
|
|
131
|
+
|--------|--------|
|
|
132
|
+
| **LoCoMo Score** | **77%** |
|
|
133
|
+
| Embedding Latency | 1-5ms |
|
|
134
|
+
| API Latency | 1-20ms |
|
|
135
|
+
| Max Throughput | 943 ops/sec |
|
|
136
|
+
| Package Size | **283 KB** |
|
|
137
|
+
|
|
138
|
+
### vs Cloud Solutions
|
|
139
|
+
|
|
140
|
+
| | Squish | Cloud Memory |
|
|
141
|
+
|--|--------|-------------|
|
|
142
|
+
| **Cost** | $0 | API fees |
|
|
143
|
+
| **Local-first** | Yes | No |
|
|
144
|
+
| **Setup** | 1 command | 3+ steps |
|
|
145
|
+
| **API keys** | None | Required |
|
|
146
|
+
| **LoCoMo** | 77% | 75-81% |
|
|
147
|
+
|
|
148
|
+
Squish matches cloud solutions on accuracy while running 100% locally with zero API costs.
|
|
149
|
+
|
|
150
|
+
## Supported Clients
|
|
151
|
+
|
|
152
|
+
| Client | Status |
|
|
153
|
+
|--------|--------|
|
|
154
|
+
| Claude Code | Stable |
|
|
155
|
+
| OpenCode | Stable |
|
|
156
|
+
| OpenClaw | Stable |
|
|
157
|
+
| Cursor | Beta |
|
|
158
|
+
| VS Code | Beta |
|
|
159
|
+
| Windsurf | Beta |
|
|
228
160
|
|
|
229
161
|
## Configuration
|
|
230
162
|
|
|
231
|
-
|
|
163
|
+
**Zero config required** - works out of the box with local embeddings.
|
|
232
164
|
|
|
233
|
-
|
|
234
|
-
- None! Works out-of-the-box with local TF-IDF embeddings
|
|
165
|
+
For customization:
|
|
235
166
|
|
|
236
|
-
**Universal API:**
|
|
237
167
|
```bash
|
|
238
|
-
#
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
PORT=3000 # API server port
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
**Configuration File (config/settings.json):**
|
|
245
|
-
```json
|
|
246
|
-
{
|
|
247
|
-
"embeddings": {
|
|
248
|
-
"provider": "local",
|
|
249
|
-
"models": {
|
|
250
|
-
"openai": { "model": "text-embedding-3-small" },
|
|
251
|
-
"google": { "model": "gemini-embedding-001" },
|
|
252
|
-
"ollama": { "model": "nomic-embed-text:v1.5" }
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
**Environment Variables (override settings.json):**
|
|
259
|
-
```bash
|
|
260
|
-
SQUISH_DATA_DIR=./.squish # Custom data directory
|
|
261
|
-
SQUISH_EMBEDDINGS_PROVIDER=local # local, openai, ollama, google, none, auto
|
|
262
|
-
|
|
263
|
-
# Model selection (optional, uses defaults if not set)
|
|
264
|
-
SQUISH_OPENAI_EMBEDDING_MODEL=text-embedding-3-small
|
|
265
|
-
SQUISH_GOOGLE_EMBEDDING_MODEL=gemini-embedding-001
|
|
266
|
-
SQUISH_OLLAMA_EMBEDDING_MODEL=nomic-embed-text:v1.5
|
|
267
|
-
|
|
268
|
-
# API credentials (for cloud providers)
|
|
269
|
-
SQUISH_OPENAI_API_KEY=sk-...
|
|
168
|
+
# Environment variables
|
|
169
|
+
SQUISH_DATA_DIR=./.squish
|
|
170
|
+
SQUISH_EMBEDDINGS_PROVIDER=ollama # openai, ollama, google, local
|
|
270
171
|
SQUISH_OLLAMA_URL=http://localhost:11434
|
|
271
|
-
GOOGLE_CLOUD_PROJECT=your-project
|
|
272
|
-
GOOGLE_CLOUD_API_KEY=your-key
|
|
273
|
-
|
|
274
|
-
# Embedding performance & reliability
|
|
275
|
-
SQUISH_EMBEDDINGS_TIMEOUT_MS=30000
|
|
276
|
-
SQUISH_EMBEDDINGS_MAX_RETRIES=3
|
|
277
|
-
SQUISH_EMBEDDINGS_RETRY_DELAY_MS=1000
|
|
278
|
-
|
|
279
|
-
# Core memory size (default: 16KB total, 4KB per section)
|
|
280
|
-
SQUISH_CORE_MEMORY_TOTAL_BYTES=16384
|
|
281
|
-
SQUISH_CORE_MEMORY_SECTION_BYTES=4096
|
|
282
172
|
|
|
283
|
-
#
|
|
173
|
+
# Team mode
|
|
284
174
|
DATABASE_URL=postgresql://user:pass@host/db
|
|
285
175
|
```
|
|
286
176
|
|
|
287
177
|
## Architecture
|
|
288
178
|
|
|
289
|
-
### Two-Tier Memory
|
|
290
|
-
|
|
291
|
-
- **
|
|
292
|
-
- **Persistent Storage Tier**: SQLite (local mode) or PostgreSQL (team mode) ensures durable, ACID-compliant memory storage
|
|
179
|
+
### Two-Tier Memory
|
|
180
|
+
- **QMD (Files)**: BM25 + vectors for fast recall
|
|
181
|
+
- **SQLite/PostgreSQL**: ACID-compliant persistent storage
|
|
293
182
|
|
|
294
|
-
###
|
|
295
|
-
- **MCP
|
|
296
|
-
- **HTTP REST
|
|
297
|
-
- **
|
|
298
|
-
- **CLI**: Standalone command-line tool for shell-based agents and debugging
|
|
299
|
-
|
|
300
|
-
### Memory Organization
|
|
301
|
-
- **Core Memory (configurable, default 16KB total)**: Always-visible sections for persona, user info, project context, and working notes. Each section limited to 4KB by default. Token estimation helps track LLM context usage.
|
|
302
|
-
- **Context Paging**: Agent-controlled retrieval with token budgeting (8KB default)
|
|
303
|
-
- **Background Jobs**: Automatic memory maintenance including decay, deduplication, and consolidation
|
|
183
|
+
### Interfaces
|
|
184
|
+
- **MCP**: Native agent integration
|
|
185
|
+
- **HTTP**: REST + WebSocket
|
|
186
|
+
- **CLI**: Shell and scripts
|
|
304
187
|
|
|
305
188
|
### Memory Lifecycle
|
|
306
|
-
- **Sectors**: episodic, semantic, procedural, autobiographical
|
|
307
|
-
- **Tiers**: hot (
|
|
308
|
-
- **Status**: active, merged, superseded, expired
|
|
309
|
-
|
|
310
|
-
### Deployment Flexibility
|
|
311
|
-
- **Local SQLite**: Zero-configuration, perfect for individual agents and edge deployment
|
|
312
|
-
- **PostgreSQL**: Horizontal scaling for teams and enterprise deployments
|
|
313
|
-
- **Docker**: Single-command deployment with docker-compose.universal.yml
|
|
314
|
-
- **Cloud**: Ready for AWS/GCP/Azure with standard PostgreSQL compatibility
|
|
189
|
+
- **Sectors**: episodic, semantic, procedural, autobiographical
|
|
190
|
+
- **Tiers**: hot (recent), warm (accessible), cold (archived)
|
|
191
|
+
- **Status**: active, merged, superseded, expired
|
|
315
192
|
|
|
316
193
|
## Development
|
|
317
194
|
|
|
318
195
|
```bash
|
|
319
|
-
# Install dependencies
|
|
320
196
|
bun install
|
|
321
|
-
|
|
322
|
-
# Build
|
|
323
197
|
bun run build
|
|
324
|
-
|
|
325
|
-
# Test
|
|
326
198
|
bun test
|
|
327
|
-
|
|
328
|
-
# Verify MCP
|
|
329
199
|
bun run verify:mcp
|
|
330
200
|
```
|
|
331
201
|
|
|
332
202
|
## Troubleshooting
|
|
333
203
|
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
-
|
|
204
|
+
```bash
|
|
205
|
+
# Reset local database
|
|
206
|
+
rm -rf .squish/squish.db
|
|
207
|
+
|
|
208
|
+
# Verify MCP setup
|
|
209
|
+
bun run verify:mcp
|
|
210
|
+
|
|
211
|
+
# Check health
|
|
212
|
+
squish health
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## CLI Command Families
|
|
337
216
|
|
|
338
|
-
|
|
339
|
-
-
|
|
340
|
-
-
|
|
217
|
+
- Setup/runtime: `squish`, `squish config`, `squish install`, `squish run mcp`, `squish run web`
|
|
218
|
+
- Capture/retrieval: `squish remember`, `squish note`, `squish learn`, `squish search`, `squish recall`, `squish recent`
|
|
219
|
+
- Memory management: `squish update`, `squish forget`, `squish pin`, `squish confidence`, `squish tag`, `squish stale`, `squish link`
|
|
220
|
+
- Context/project discovery: `squish context --list-projects`, `squish context`
|
|
221
|
+
- System: `squish health`, `squish stats`
|
|
341
222
|
|
|
342
223
|
## License
|
|
343
224
|
|
|
344
|
-
MIT
|
|
225
|
+
MIT License. See [LICENSE](LICENSE).
|
|
345
226
|
|
|
346
227
|
## Links
|
|
347
228
|
|
|
348
|
-
-
|
|
349
|
-
-
|
|
350
|
-
-
|
|
229
|
+
- [Documentation](https://github.com/michielhdoteth/squish)
|
|
230
|
+
- [Benchmarks](docs/BENCHMARK.md)
|
|
231
|
+
- [Issues](https://github.com/michielhdoteth/squish/issues)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "squish-hooks-claude-code",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Squish memory hooks for Claude Code",
|
|
5
|
+
"agent": "claude-code",
|
|
6
|
+
"hooks": {
|
|
7
|
+
"sessionStart": {
|
|
8
|
+
"enabled": true,
|
|
9
|
+
"matchers": ["startup", "resume", "compact"],
|
|
10
|
+
"command": "squish hooks session-start --agent claude-code"
|
|
11
|
+
},
|
|
12
|
+
"postToolUse": {
|
|
13
|
+
"enabled": true,
|
|
14
|
+
"captureFilter": {
|
|
15
|
+
"tools": ["Write", "Edit", "MultiEdit", "Bash", "Task", "TodoWrite"],
|
|
16
|
+
"exclude": ["Read", "Glob", "grep", "WebSearch", "WebFetch"]
|
|
17
|
+
},
|
|
18
|
+
"command": "squish hooks post-tool-use --agent claude-code"
|
|
19
|
+
},
|
|
20
|
+
"sessionEnd": {
|
|
21
|
+
"enabled": true,
|
|
22
|
+
"command": "squish hooks session-end --agent claude-code"
|
|
23
|
+
},
|
|
24
|
+
"preCompact": {
|
|
25
|
+
"enabled": true,
|
|
26
|
+
"matchers": ["auto"],
|
|
27
|
+
"command": "squish hooks pre-compact --agent claude-code"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"mcpServers": {
|
|
31
|
+
"squish-memory": {
|
|
32
|
+
"command": "squish",
|
|
33
|
+
"args": ["run", "mcp"],
|
|
34
|
+
"env": {
|
|
35
|
+
"SQUISH_PROJECT_DIR": "${CLAUDE_PROJECT_DIR}"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "squish-hooks-cursor",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Squish memory hooks for Cursor",
|
|
5
|
+
"agent": "cursor",
|
|
6
|
+
"hooks": {
|
|
7
|
+
"sessionStart": {
|
|
8
|
+
"enabled": true,
|
|
9
|
+
"command": "squish hooks session-start --agent cursor"
|
|
10
|
+
},
|
|
11
|
+
"postToolUse": {
|
|
12
|
+
"enabled": true,
|
|
13
|
+
"captureFilter": {
|
|
14
|
+
"tools": ["Write", "Edit", "Bash", "Task"],
|
|
15
|
+
"exclude": ["Read", "Glob", "Grep"]
|
|
16
|
+
},
|
|
17
|
+
"command": "squish hooks post-tool-use --agent cursor"
|
|
18
|
+
},
|
|
19
|
+
"sessionEnd": {
|
|
20
|
+
"enabled": true,
|
|
21
|
+
"command": "squish hooks session-end --agent cursor"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"mcpServers": {
|
|
25
|
+
"squish": {
|
|
26
|
+
"command": "squish",
|
|
27
|
+
"args": ["run", "mcp"]
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "squish-hooks-opencode",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Squish memory hooks for OpenCode",
|
|
5
|
+
"agent": "opencode",
|
|
6
|
+
"hooks": {
|
|
7
|
+
"sessionStart": {
|
|
8
|
+
"enabled": true,
|
|
9
|
+
"command": "squish hooks session-start --agent opencode"
|
|
10
|
+
},
|
|
11
|
+
"postToolUse": {
|
|
12
|
+
"enabled": true,
|
|
13
|
+
"captureFilter": {
|
|
14
|
+
"tools": ["Write", "Edit", "Bash", "Task"],
|
|
15
|
+
"exclude": ["Read", "Glob", "grep"]
|
|
16
|
+
},
|
|
17
|
+
"command": "squish hooks post-tool-use --agent opencode"
|
|
18
|
+
},
|
|
19
|
+
"sessionEnd": {
|
|
20
|
+
"enabled": true,
|
|
21
|
+
"command": "squish hooks session-end --agent opencode"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"mcpServers": {
|
|
25
|
+
"squish": {
|
|
26
|
+
"command": "squish",
|
|
27
|
+
"args": ["run", "mcp"]
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "squish-hooks-windsurf",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Squish memory hooks for Windsurf",
|
|
5
|
+
"agent": "windsurf",
|
|
6
|
+
"hooks": {
|
|
7
|
+
"sessionStart": {
|
|
8
|
+
"enabled": true,
|
|
9
|
+
"command": "squish hooks session-start --agent windsurf"
|
|
10
|
+
},
|
|
11
|
+
"postToolUse": {
|
|
12
|
+
"enabled": true,
|
|
13
|
+
"captureFilter": {
|
|
14
|
+
"tools": ["Write", "Edit", "Bash", "Task"],
|
|
15
|
+
"exclude": ["Read", "Glob", "Grep"]
|
|
16
|
+
},
|
|
17
|
+
"command": "squish hooks post-tool-use --agent windsurf"
|
|
18
|
+
},
|
|
19
|
+
"sessionEnd": {
|
|
20
|
+
"enabled": true,
|
|
21
|
+
"command": "squish hooks session-end --agent windsurf"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"mcpServers": {
|
|
25
|
+
"squish": {
|
|
26
|
+
"command": "squish",
|
|
27
|
+
"args": ["run", "mcp"]
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|