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
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import { spawn } from "node:child_process";
|
|
4
|
-
import path from "node:path";
|
|
5
|
-
|
|
6
|
-
const colors = {
|
|
7
|
-
green: "\x1b[32m",
|
|
8
|
-
yellow: "\x1b[33m",
|
|
9
|
-
cyan: "\x1b[36m",
|
|
10
|
-
red: "\x1b[31m",
|
|
11
|
-
reset: "\x1b[0m",
|
|
12
|
-
gray: "\x1b[90m"
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
const root = process.cwd();
|
|
16
|
-
const testScriptPath = path.join(root, "scripts", "install-interactive.mjs");
|
|
17
|
-
|
|
18
|
-
let testsRun = 0;
|
|
19
|
-
let testsPassed = 0;
|
|
20
|
-
let testsFailed = 0;
|
|
21
|
-
|
|
22
|
-
function logTest(testName) {
|
|
23
|
-
testsRun++;
|
|
24
|
-
console.log(`\n${colors.cyan}TEST ${testsRun}:${colors.reset} ${testName}`);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
function logPass(message) {
|
|
28
|
-
testsPassed++;
|
|
29
|
-
console.log(` ${colors.green}✓${colors.reset} ${message}`);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
function logFail(message, error) {
|
|
33
|
-
testsFailed++;
|
|
34
|
-
console.log(` ${colors.red}✗${colors.reset} ${message}`);
|
|
35
|
-
if (error) {
|
|
36
|
-
console.log(` ${colors.gray}${error}${colors.reset}`);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
function logSkip(message) {
|
|
41
|
-
console.log(` ${colors.yellow}○${colors.reset} ${message}`);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
function runTest(description, args, envVars = {}, expectedExitCode = 0) {
|
|
45
|
-
logTest(description);
|
|
46
|
-
|
|
47
|
-
return new Promise((resolve) => {
|
|
48
|
-
const child = spawn(process.execPath, [testScriptPath, ...args], {
|
|
49
|
-
stdio: ["inherit", "pipe", "pipe"],
|
|
50
|
-
timeout: 5000,
|
|
51
|
-
env: { ...process.env, ...envVars }
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
let stdout = "";
|
|
55
|
-
let stderr = "";
|
|
56
|
-
|
|
57
|
-
child.stdout?.on("data", (data) => {
|
|
58
|
-
stdout += data.toString();
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
child.stderr?.on("data", (data) => {
|
|
62
|
-
stderr += data.toString();
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
child.on("close", (code) => {
|
|
66
|
-
if (code === expectedExitCode) {
|
|
67
|
-
logPass(`Exit code: ${code}`);
|
|
68
|
-
} else {
|
|
69
|
-
logFail(`Expected exit code ${expectedExitCode}, got ${code}`, stderr);
|
|
70
|
-
}
|
|
71
|
-
resolve({ code, stdout, stderr });
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
child.on("error", (err) => {
|
|
75
|
-
logFail("Spawn failed", err.message);
|
|
76
|
-
resolve({ code: -1, stderr: err.message });
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
async function runTests() {
|
|
82
|
-
console.log(`${colors.cyan}═════════════════════════════════════════════${colors.reset}`);
|
|
83
|
-
console.log(`${colors.cyan}Interactive Installer Test Suite${colors.reset}`);
|
|
84
|
-
console.log(`${colors.cyan}═══════════════════════════════════════════${colors.reset}`);
|
|
85
|
-
console.log("");
|
|
86
|
-
|
|
87
|
-
await runTest("Syntax check (no syntax errors)", ["--help"]);
|
|
88
|
-
|
|
89
|
-
await runTest("Help flag displays usage", ["--help"]);
|
|
90
|
-
|
|
91
|
-
await runTest("List flag shows available plugins", ["--list"]);
|
|
92
|
-
|
|
93
|
-
await runTest("Auto mode with --all flag", ["--all", "--dry-run"]);
|
|
94
|
-
|
|
95
|
-
await runTest("Auto mode with --select flag", ["--select=claude-code", "--dry-run"]);
|
|
96
|
-
|
|
97
|
-
await runTest("Environment detection - CI mode", ["--list"], { CI: "true" });
|
|
98
|
-
|
|
99
|
-
await runTest("Environment detection - NON_INTERACTIVE mode", ["--list"], { NON_INTERACTIVE: "1" });
|
|
100
|
-
|
|
101
|
-
await runTest("Dry-run preview mode", ["--list", "--dry-run"]);
|
|
102
|
-
|
|
103
|
-
await runTest("Multiple flag combination", ["--select=claude-code,openclaw", "--verbose", "--dry-run"]);
|
|
104
|
-
|
|
105
|
-
await runTest("Invalid flag handling", ["--invalid-flag"], {}, 1);
|
|
106
|
-
|
|
107
|
-
await runTest("Invalid plugin in --select", ["--select=nonexistent"], {}, 1);
|
|
108
|
-
|
|
109
|
-
console.log("");
|
|
110
|
-
console.log(`${colors.cyan}═════════════════════════════════════════════${colors.reset}`);
|
|
111
|
-
console.log(`${colors.cyan}Test Summary${colors.reset}`);
|
|
112
|
-
console.log(`${colors.cyan}═══════════════════════════════════════════${colors.reset}`);
|
|
113
|
-
console.log("");
|
|
114
|
-
console.log(` ${colors.gray}Total tests:${colors.reset} ${testsRun}`);
|
|
115
|
-
console.log(` ${colors.green}Passed:${colors.reset} ${testsPassed}`);
|
|
116
|
-
console.log(` ${colors.red}Failed:${colors.reset} ${testsFailed}`);
|
|
117
|
-
console.log("");
|
|
118
|
-
|
|
119
|
-
if (testsFailed === 0) {
|
|
120
|
-
console.log(`${colors.green}All tests passed!${colors.reset}`);
|
|
121
|
-
} else {
|
|
122
|
-
console.log(`${colors.yellow}${testsFailed} test(s) failed${colors.reset}`);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
runTests().then(() => {
|
|
127
|
-
process.exit(testsFailed > 0 ? 1 : 0);
|
|
128
|
-
}).catch((err) => {
|
|
129
|
-
console.log(`${colors.red}Fatal test error:${colors.reset} ${err.message}`);
|
|
130
|
-
process.exit(1);
|
|
131
|
-
});
|
package/scripts/verify-mcp.mjs
DELETED
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import fs from "node:fs";
|
|
4
|
-
import path from "node:path";
|
|
5
|
-
import crypto from "node:crypto";
|
|
6
|
-
import { spawnSync } from "node:child_process";
|
|
7
|
-
|
|
8
|
-
const root = process.cwd();
|
|
9
|
-
const defaultConfigPath = path.join(root, "config", "mcp.json");
|
|
10
|
-
const defaultGeneratedDir = path.join(root, "generated", "mcp");
|
|
11
|
-
const requiredFiles = [
|
|
12
|
-
"runtime.json",
|
|
13
|
-
"mcp-servers.json",
|
|
14
|
-
"mcporter.json",
|
|
15
|
-
"openclaw-memory-qmd.json",
|
|
16
|
-
"manifest.json"
|
|
17
|
-
];
|
|
18
|
-
|
|
19
|
-
function parseArgs(argv) {
|
|
20
|
-
const args = {
|
|
21
|
-
configPath: defaultConfigPath,
|
|
22
|
-
generatedDir: defaultGeneratedDir,
|
|
23
|
-
checkReproducibility: true
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
for (let i = 2; i < argv.length; i += 1) {
|
|
27
|
-
const token = argv[i];
|
|
28
|
-
if (token === "--config") {
|
|
29
|
-
args.configPath = path.resolve(argv[i + 1]);
|
|
30
|
-
i += 1;
|
|
31
|
-
continue;
|
|
32
|
-
}
|
|
33
|
-
if (token === "--generated") {
|
|
34
|
-
args.generatedDir = path.resolve(argv[i + 1]);
|
|
35
|
-
i += 1;
|
|
36
|
-
continue;
|
|
37
|
-
}
|
|
38
|
-
if (token === "--no-repro") {
|
|
39
|
-
args.checkReproducibility = false;
|
|
40
|
-
continue;
|
|
41
|
-
}
|
|
42
|
-
throw new Error(`Unknown argument: ${token}`);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
return args;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
function fail(message) {
|
|
49
|
-
throw new Error(message);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
function readJson(filePath) {
|
|
53
|
-
try {
|
|
54
|
-
return JSON.parse(fs.readFileSync(filePath, "utf8"));
|
|
55
|
-
} catch (error) {
|
|
56
|
-
fail(`Invalid JSON at ${filePath}: ${String(error)}`);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
function checksum(filePath) {
|
|
61
|
-
const hash = crypto.createHash("sha256");
|
|
62
|
-
hash.update(fs.readFileSync(filePath));
|
|
63
|
-
return hash.digest("hex");
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
function assertServerShape(serverName, server) {
|
|
67
|
-
if (!server || typeof server !== "object") {
|
|
68
|
-
fail(`Server ${serverName} must be an object`);
|
|
69
|
-
}
|
|
70
|
-
if (typeof server.command !== "string" || server.command.length === 0) {
|
|
71
|
-
fail(`Server ${serverName} must include command`);
|
|
72
|
-
}
|
|
73
|
-
if (!Array.isArray(server.args)) {
|
|
74
|
-
fail(`Server ${serverName} must include args array`);
|
|
75
|
-
}
|
|
76
|
-
if (typeof server.transport !== "string" || server.transport.length === 0) {
|
|
77
|
-
fail(`Server ${serverName} must include transport`);
|
|
78
|
-
}
|
|
79
|
-
if (!server.env || typeof server.env !== "object") {
|
|
80
|
-
fail(`Server ${serverName} must include env object`);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
function verifyGeneratedFiles(dirPath) {
|
|
85
|
-
for (const fileName of requiredFiles) {
|
|
86
|
-
const filePath = path.join(dirPath, fileName);
|
|
87
|
-
if (!fs.existsSync(filePath)) {
|
|
88
|
-
fail(`Missing generated file: ${fileName}`);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
function verifyRuntime(runtime) {
|
|
94
|
-
const requiredKeys = [
|
|
95
|
-
"connectionTimeoutMs",
|
|
96
|
-
"requestTimeoutMs",
|
|
97
|
-
"maxConcurrentToolCalls",
|
|
98
|
-
"lazyToolDiscovery",
|
|
99
|
-
"resultMaxChars",
|
|
100
|
-
"retry"
|
|
101
|
-
];
|
|
102
|
-
for (const key of requiredKeys) {
|
|
103
|
-
if (!(key in runtime)) {
|
|
104
|
-
fail(`runtime.json missing required key: ${key}`);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
function verifyManifest(manifest, dirPath) {
|
|
110
|
-
if (manifest.mode !== "universal") {
|
|
111
|
-
fail("manifest mode must be universal");
|
|
112
|
-
}
|
|
113
|
-
if (!Array.isArray(manifest.files) || manifest.files.length === 0) {
|
|
114
|
-
fail("manifest files must be a non-empty array");
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
const expectedManifestEntries = [
|
|
118
|
-
"runtime.json",
|
|
119
|
-
"mcp-servers.json",
|
|
120
|
-
"mcporter.json",
|
|
121
|
-
"openclaw-memory-qmd.json"
|
|
122
|
-
];
|
|
123
|
-
|
|
124
|
-
for (const fileName of expectedManifestEntries) {
|
|
125
|
-
const entry = manifest.files.find((item) => item.file === fileName);
|
|
126
|
-
if (!entry) {
|
|
127
|
-
fail(`manifest missing entry for ${fileName}`);
|
|
128
|
-
}
|
|
129
|
-
const actualHash = checksum(path.join(dirPath, fileName));
|
|
130
|
-
if (entry.sha256 !== actualHash) {
|
|
131
|
-
fail(`manifest checksum mismatch for ${fileName}`);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
function verifyReproducibility(configPath, dirPath) {
|
|
137
|
-
const first = readJson(path.join(dirPath, "manifest.json"));
|
|
138
|
-
const firstChecksums = new Map(first.files.map((item) => [item.file, item.sha256]));
|
|
139
|
-
|
|
140
|
-
const run = spawnSync(
|
|
141
|
-
process.execPath,
|
|
142
|
-
["scripts/generate-mcp.mjs", "--config", configPath, "--out", dirPath],
|
|
143
|
-
{ cwd: root, encoding: "utf8" }
|
|
144
|
-
);
|
|
145
|
-
|
|
146
|
-
if (run.status !== 0) {
|
|
147
|
-
fail(`Reproducibility generation failed: ${run.stderr || run.stdout}`);
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
const second = readJson(path.join(dirPath, "manifest.json"));
|
|
151
|
-
const secondChecksums = new Map(second.files.map((item) => [item.file, item.sha256]));
|
|
152
|
-
|
|
153
|
-
for (const [fileName, firstHash] of firstChecksums.entries()) {
|
|
154
|
-
const secondHash = secondChecksums.get(fileName);
|
|
155
|
-
if (!secondHash) {
|
|
156
|
-
fail(`Reproducibility check missing ${fileName} in second manifest`);
|
|
157
|
-
}
|
|
158
|
-
if (firstHash !== secondHash) {
|
|
159
|
-
fail(`Reproducibility mismatch for ${fileName}`);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
function main() {
|
|
165
|
-
const args = parseArgs(process.argv);
|
|
166
|
-
|
|
167
|
-
if (!fs.existsSync(args.configPath)) {
|
|
168
|
-
fail(`Config file not found: ${args.configPath}`);
|
|
169
|
-
}
|
|
170
|
-
if (!fs.existsSync(args.generatedDir)) {
|
|
171
|
-
fail(`Generated directory not found: ${args.generatedDir}`);
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
verifyGeneratedFiles(args.generatedDir);
|
|
175
|
-
|
|
176
|
-
const runtime = readJson(path.join(args.generatedDir, "runtime.json"));
|
|
177
|
-
verifyRuntime(runtime);
|
|
178
|
-
|
|
179
|
-
const mcpServers = readJson(path.join(args.generatedDir, "mcp-servers.json"));
|
|
180
|
-
if (!mcpServers.mcpServers || typeof mcpServers.mcpServers !== "object") {
|
|
181
|
-
fail("mcp-servers.json must include mcpServers object");
|
|
182
|
-
}
|
|
183
|
-
const serverEntries = Object.entries(mcpServers.mcpServers);
|
|
184
|
-
if (serverEntries.length === 0) {
|
|
185
|
-
fail("mcp-servers.json must include at least one server");
|
|
186
|
-
}
|
|
187
|
-
for (const [name, server] of serverEntries) {
|
|
188
|
-
assertServerShape(name, server);
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
const mcporter = readJson(path.join(args.generatedDir, "mcporter.json"));
|
|
192
|
-
if (!Array.isArray(mcporter.imports) || mcporter.imports.length === 0) {
|
|
193
|
-
fail("mcporter.json must include imports array");
|
|
194
|
-
}
|
|
195
|
-
if (!mcporter.mcpServers || typeof mcporter.mcpServers !== "object") {
|
|
196
|
-
fail("mcporter.json must include mcpServers object");
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
const openclaw = readJson(path.join(args.generatedDir, "openclaw-memory-qmd.json"));
|
|
200
|
-
if (openclaw?.memory?.backend !== "qmd") {
|
|
201
|
-
fail("openclaw-memory-qmd.json must set memory.backend=qmd");
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
const manifest = readJson(path.join(args.generatedDir, "manifest.json"));
|
|
205
|
-
verifyManifest(manifest, args.generatedDir);
|
|
206
|
-
|
|
207
|
-
if (args.checkReproducibility) {
|
|
208
|
-
verifyReproducibility(args.configPath, args.generatedDir);
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
console.log("MCP verification passed");
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
main();
|
|
@@ -1,332 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: memory-guide
|
|
3
|
-
description: Expert guide for using Squish memory system v1.0.2. Use when managing persistent memory, storing context, recalling information, or optimizing memory usage across MCP clients.
|
|
4
|
-
version: 1.0.2
|
|
5
|
-
author: michielhdoteth
|
|
6
|
-
tags: [memory, persistence, squish, guide, mcp, ai-assistant]
|
|
7
|
-
emoji: book
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Squish Memory System Guide v1.0.2
|
|
11
|
-
|
|
12
|
-
You are an expert at using the Squish persistent memory system for AI coding assistants.
|
|
13
|
-
|
|
14
|
-
## When to Use Squish Memory
|
|
15
|
-
|
|
16
|
-
Use Squish memory tools proactively for:
|
|
17
|
-
|
|
18
|
-
### 1. Storing Important Information
|
|
19
|
-
- User preferences, project context, decisions made
|
|
20
|
-
- Technical specifications, API patterns, architecture notes
|
|
21
|
-
- Ongoing work, TODOs, blockers encountered
|
|
22
|
-
|
|
23
|
-
### 2. Recalling Past Context
|
|
24
|
-
- Previous conversations and decisions
|
|
25
|
-
- Code patterns used in this project
|
|
26
|
-
- User's coding style preferences
|
|
27
|
-
|
|
28
|
-
### 3. Managing Session Context
|
|
29
|
-
- Load relevant memories before starting complex tasks
|
|
30
|
-
- Inject project-specific context
|
|
31
|
-
- Maintain working memory across sessions
|
|
32
|
-
|
|
33
|
-
## MCP Tools Reference
|
|
34
|
-
|
|
35
|
-
### Storing Memories
|
|
36
|
-
|
|
37
|
-
**Tool:** `squish_remember`
|
|
38
|
-
|
|
39
|
-
Store new memories with automatic embedding.
|
|
40
|
-
|
|
41
|
-
```typescript
|
|
42
|
-
// Store a preference
|
|
43
|
-
squish_remember({
|
|
44
|
-
content: "User prefers functional components with hooks over class components",
|
|
45
|
-
type: "preference",
|
|
46
|
-
tags: ["react", "preferences"]
|
|
47
|
-
})
|
|
48
|
-
|
|
49
|
-
// Store a fact
|
|
50
|
-
squish_remember({
|
|
51
|
-
content: "API uses JWT tokens with 1-hour expiration",
|
|
52
|
-
type: "fact",
|
|
53
|
-
tags: ["auth", "api"]
|
|
54
|
-
})
|
|
55
|
-
|
|
56
|
-
// Store a decision
|
|
57
|
-
squish_remember({
|
|
58
|
-
content: "Chose PostgreSQL over MongoDB for better relational data",
|
|
59
|
-
type: "decision",
|
|
60
|
-
tags: ["database", "architecture"]
|
|
61
|
-
})
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
### Searching Memories
|
|
65
|
-
|
|
66
|
-
**Tool:** `squish_search`
|
|
67
|
-
|
|
68
|
-
Hybrid search across all memory types.
|
|
69
|
-
|
|
70
|
-
```typescript
|
|
71
|
-
// Basic search
|
|
72
|
-
squish_search({ query: "authentication patterns", limit: 5 })
|
|
73
|
-
|
|
74
|
-
// Search with project filter
|
|
75
|
-
squish_search({ query: "database schema", project: "/path/to/project", limit: 10 })
|
|
76
|
-
|
|
77
|
-
// Search specific memory type
|
|
78
|
-
squish_search({ query: "user preferences", type: "preference" })
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### Retrieving Memories
|
|
82
|
-
|
|
83
|
-
**Tool:** `squish_recall`
|
|
84
|
-
|
|
85
|
-
Retrieve a specific memory by ID.
|
|
86
|
-
|
|
87
|
-
```typescript
|
|
88
|
-
squish_recall({ memoryId: "uuid-here" })
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
### Deleting Memories
|
|
92
|
-
|
|
93
|
-
**Tool:** `squish_forget`
|
|
94
|
-
|
|
95
|
-
Delete a memory by ID.
|
|
96
|
-
|
|
97
|
-
```typescript
|
|
98
|
-
squish_forget({ memoryId: "uuid-here" })
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
### Updating Memories
|
|
102
|
-
|
|
103
|
-
**Tool:** `squish_update`
|
|
104
|
-
|
|
105
|
-
Update existing memory content, tags, or type.
|
|
106
|
-
|
|
107
|
-
```typescript
|
|
108
|
-
squish_update({
|
|
109
|
-
memoryId: "uuid-here",
|
|
110
|
-
content: "Updated content",
|
|
111
|
-
tags: ["new", "tags"],
|
|
112
|
-
type: "fact"
|
|
113
|
-
})
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
### Graph Associations
|
|
117
|
-
|
|
118
|
-
**Tool:** `squish_associate`
|
|
119
|
-
|
|
120
|
-
Link related memories together.
|
|
121
|
-
|
|
122
|
-
```typescript
|
|
123
|
-
squish_associate({
|
|
124
|
-
fromMemoryId: "uuid-1",
|
|
125
|
-
toMemoryId: "uuid-2",
|
|
126
|
-
type: "relates_to",
|
|
127
|
-
weight: 0.8
|
|
128
|
-
})
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
**Tool:** `squish_related`
|
|
132
|
-
|
|
133
|
-
Find related memories via graph traversal.
|
|
134
|
-
|
|
135
|
-
```typescript
|
|
136
|
-
squish_related({
|
|
137
|
-
memoryId: "uuid-here",
|
|
138
|
-
depth: 2,
|
|
139
|
-
minWeight: 0.3
|
|
140
|
-
})
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
### Context & Observations
|
|
144
|
-
|
|
145
|
-
**Tool:** `squish_context`
|
|
146
|
-
|
|
147
|
-
Get project context with relevant memories.
|
|
148
|
-
|
|
149
|
-
```typescript
|
|
150
|
-
squish_context({ project: "/path/to/project", limit: 10 })
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
**Tool:** `squish_observe`
|
|
154
|
-
|
|
155
|
-
Record observations about your work.
|
|
156
|
-
|
|
157
|
-
```typescript
|
|
158
|
-
squish_observe({
|
|
159
|
-
type: "tool_use",
|
|
160
|
-
action: "Created new API endpoint",
|
|
161
|
-
summary: "Implemented POST /users endpoint",
|
|
162
|
-
target: "api/users.ts"
|
|
163
|
-
})
|
|
164
|
-
|
|
165
|
-
squish_observe({
|
|
166
|
-
type: "error",
|
|
167
|
-
action: "Database connection failed",
|
|
168
|
-
summary: "PostgreSQL timeout after 30s",
|
|
169
|
-
target: "db/index.ts"
|
|
170
|
-
})
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
### QMD Search
|
|
174
|
-
|
|
175
|
-
**Tool:** `squish_qmd_search`
|
|
176
|
-
|
|
177
|
-
Search local markdown files using QMD.
|
|
178
|
-
|
|
179
|
-
```typescript
|
|
180
|
-
squish_qmd_search({ query: "authentication", limit: 10 })
|
|
181
|
-
squish_qmd_search({ query: "react hooks", collection: "docs" })
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
### Utilities
|
|
185
|
-
|
|
186
|
-
**Tool:** `squish_embed`
|
|
187
|
-
|
|
188
|
-
Generate embeddings for text.
|
|
189
|
-
|
|
190
|
-
```typescript
|
|
191
|
-
squish_embed({ text: "Text to embed" })
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
**Tool:** `squish_health`
|
|
195
|
-
|
|
196
|
-
Check system health.
|
|
197
|
-
|
|
198
|
-
```typescript
|
|
199
|
-
squish_health({})
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
**Tool:** `squish_stats`
|
|
203
|
-
|
|
204
|
-
Get memory statistics.
|
|
205
|
-
|
|
206
|
-
```typescript
|
|
207
|
-
squish_stats({ project: "/path/to/project" })
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
**Tool:** `squish_projects`
|
|
211
|
-
|
|
212
|
-
List all projects.
|
|
213
|
-
|
|
214
|
-
```typescript
|
|
215
|
-
squish_projects({})
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
## CLI Reference
|
|
219
|
-
|
|
220
|
-
### Interactive Mode (Default)
|
|
221
|
-
|
|
222
|
-
```bash
|
|
223
|
-
squish
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
Shows menu:
|
|
227
|
-
```
|
|
228
|
-
[1] Start MCP Server (for Claude Code, etc.)
|
|
229
|
-
[2] Start Web UI Only
|
|
230
|
-
[3] Check Health Status
|
|
231
|
-
[4] View Memory Stats
|
|
232
|
-
[5] Open Installer Wizard
|
|
233
|
-
[6] Show Help
|
|
234
|
-
[0] Exit
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
### Server Commands
|
|
238
|
-
|
|
239
|
-
```bash
|
|
240
|
-
# Start MCP server (also starts Web UI)
|
|
241
|
-
squish run mcp
|
|
242
|
-
|
|
243
|
-
# Start Web UI only
|
|
244
|
-
squish run web
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
### CLI Commands (for agents and scripting)
|
|
248
|
-
|
|
249
|
-
```bash
|
|
250
|
-
# Store a memory
|
|
251
|
-
squish remember "User prefers TypeScript" --type preference
|
|
252
|
-
|
|
253
|
-
# Search memories
|
|
254
|
-
squish search "database schema" --limit 10
|
|
255
|
-
|
|
256
|
-
# Get a memory by ID
|
|
257
|
-
squish recall <uuid>
|
|
258
|
-
|
|
259
|
-
# Check health
|
|
260
|
-
squish health
|
|
261
|
-
|
|
262
|
-
# View statistics
|
|
263
|
-
squish stats
|
|
264
|
-
|
|
265
|
-
# Manage core memory
|
|
266
|
-
squish core_memory view
|
|
267
|
-
squish core_memory edit persona --content "I am a helpful coding assistant"
|
|
268
|
-
|
|
269
|
-
# Set importance
|
|
270
|
-
squish set-importance <memory-id> --importance 80
|
|
271
|
-
|
|
272
|
-
# Pin/unpin memory
|
|
273
|
-
squish pin <memory-id>
|
|
274
|
-
squish unpin <memory-id>
|
|
275
|
-
|
|
276
|
-
# Consolidate old memories
|
|
277
|
-
squish consolidate
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
## Best Practices
|
|
281
|
-
|
|
282
|
-
1. **Store proactively**: Don't wait until end of session
|
|
283
|
-
2. **Be specific**: Include context, timestamps, rationale
|
|
284
|
-
3. **Use appropriate types**: Choose correct memory type and sector
|
|
285
|
-
4. **Use associations**: Link related memories for better retrieval
|
|
286
|
-
5. **Record observations**: Use `squish_observe` for tool usage patterns
|
|
287
|
-
6. **Set importance**: Mark critical memories with high importance
|
|
288
|
-
7. **Use namespaces**: Organize memories hierarchically for large projects
|
|
289
|
-
|
|
290
|
-
## Memory Types
|
|
291
|
-
|
|
292
|
-
- **observation**: Facts observed, patterns noticed, tool usage
|
|
293
|
-
- **fact**: Technical facts, specifications
|
|
294
|
-
- **decision**: Decisions made with rationale
|
|
295
|
-
- **context**: Project/domain context
|
|
296
|
-
- **preference**: User preferences
|
|
297
|
-
|
|
298
|
-
## When to Use Each Tool
|
|
299
|
-
|
|
300
|
-
| Task | Use |
|
|
301
|
-
|------|-----|
|
|
302
|
-
| Remember something important | `squish_remember` |
|
|
303
|
-
| Find relevant past info | `squish_search` |
|
|
304
|
-
| Get specific memory | `squish_recall` |
|
|
305
|
-
| Delete incorrect memory | `squish_forget` |
|
|
306
|
-
| Update stored info | `squish_update` |
|
|
307
|
-
| Link related memories | `squish_associate` |
|
|
308
|
-
| Find connected info | `squish_related` |
|
|
309
|
-
| Get project overview | `squish_context` |
|
|
310
|
-
| Record work observations | `squish_observe` |
|
|
311
|
-
| Search local docs | `squish_qmd_search` |
|
|
312
|
-
| Check system status | `squish_health` |
|
|
313
|
-
| View memory stats | `squish_stats` |
|
|
314
|
-
| Manage core memory | `squish core_memory` |
|
|
315
|
-
| Set importance | `squish set-importance` |
|
|
316
|
-
| Pin/unpin memory | `squish pin/unpin` |
|
|
317
|
-
| Consolidate old memories | `squish consolidate` |
|
|
318
|
-
|
|
319
|
-
## v1.0.1 Features
|
|
320
|
-
|
|
321
|
-
**New in v1.0.1:**
|
|
322
|
-
- Interactive wizard/menu as default (`squish`)
|
|
323
|
-
- `squish run mcp` - Start MCP server
|
|
324
|
-
- `squish run web` - Start Web UI only
|
|
325
|
-
- Namespace support for hierarchical memory organization
|
|
326
|
-
- Maintenance job scheduling system
|
|
327
|
-
- Improved migration system for zero-downtime upgrades
|
|
328
|
-
- Token estimation for memory content
|
|
329
|
-
|
|
330
|
-
**All tools use consistent input schema patterns.**
|
|
331
|
-
|
|
332
|
-
Remember: Squish is your persistent memory. Use it actively to maintain continuity across sessions and provide better assistance.
|