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,28 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Context Paging Service - Agent-controlled memory loading
|
|
3
|
-
*
|
|
4
|
-
* Simple memory tracking system that allows agents to:
|
|
5
|
-
* - Load memories into their working set
|
|
6
|
-
* - Evict memories from working set
|
|
7
|
-
* - View what's currently in their working set
|
|
8
|
-
*
|
|
9
|
-
* Note: This does NOT track tokens - Claude is context-aware and manages
|
|
10
|
-
* its own token budget. This just tracks WHAT memories are in the agent's
|
|
11
|
-
* current working set for visibility and management.
|
|
2
|
+
* Context Paging Service - Agent-controlled memory loading
|
|
3
|
+
* Allows agents to load/evict memories from working set
|
|
12
4
|
*/
|
|
13
5
|
import { eq, and } from 'drizzle-orm';
|
|
14
6
|
import { sql } from 'drizzle-orm';
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import { createDatabaseClient } from './database.js';
|
|
18
|
-
import { getMemoryById } from './memory/memories.js';
|
|
7
|
+
import { getMemory } from '../memory/memories.js';
|
|
8
|
+
import { getDbClient } from '../lib/db-client.js';
|
|
19
9
|
/**
|
|
20
10
|
* Initialize or get a context session
|
|
21
11
|
* Simplified - just tracks what's loaded, not tokens (Claude manages its own context)
|
|
22
12
|
*/
|
|
23
13
|
export async function initializeContextSession(sessionId, projectId, userId) {
|
|
24
|
-
const db =
|
|
25
|
-
const schema = await getSchema();
|
|
14
|
+
const { db, schema } = await getDbClient();
|
|
26
15
|
const { contextSessions } = schema;
|
|
27
16
|
// Check if session exists
|
|
28
17
|
const existing = await db
|
|
@@ -46,11 +35,9 @@ export async function initializeContextSession(sessionId, projectId, userId) {
|
|
|
46
35
|
}
|
|
47
36
|
/**
|
|
48
37
|
* Load a memory into working set
|
|
49
|
-
* Note: Claude manages its own context - this just tracks what you've loaded
|
|
50
38
|
*/
|
|
51
39
|
export async function loadMemoryToContext(sessionId, memoryId) {
|
|
52
|
-
const db =
|
|
53
|
-
const schema = await getSchema();
|
|
40
|
+
const { db, schema } = await getDbClient();
|
|
54
41
|
const { contextSessions } = schema;
|
|
55
42
|
// Get session
|
|
56
43
|
const session = await db
|
|
@@ -74,7 +61,7 @@ export async function loadMemoryToContext(sessionId, memoryId) {
|
|
|
74
61
|
};
|
|
75
62
|
}
|
|
76
63
|
// Get memory
|
|
77
|
-
const memory = await
|
|
64
|
+
const memory = await getMemory(memoryId);
|
|
78
65
|
if (!memory) {
|
|
79
66
|
return {
|
|
80
67
|
success: false,
|
|
@@ -112,8 +99,7 @@ export async function loadMemoryToContext(sessionId, memoryId) {
|
|
|
112
99
|
* Evict a memory from working set
|
|
113
100
|
*/
|
|
114
101
|
export async function evictMemoryFromContext(sessionId, memoryId) {
|
|
115
|
-
const db =
|
|
116
|
-
const schema = await getSchema();
|
|
102
|
+
const { db, schema } = await getDbClient();
|
|
117
103
|
const { contextSessions } = schema;
|
|
118
104
|
// Get session
|
|
119
105
|
const session = await db
|
|
@@ -161,8 +147,7 @@ export async function evictMemoryFromContext(sessionId, memoryId) {
|
|
|
161
147
|
* View all memories in working set
|
|
162
148
|
*/
|
|
163
149
|
export async function viewLoadedMemories(sessionId) {
|
|
164
|
-
const db =
|
|
165
|
-
const schema = await getSchema();
|
|
150
|
+
const { db, schema } = await getDbClient();
|
|
166
151
|
const { contextSessions } = schema;
|
|
167
152
|
// Get session
|
|
168
153
|
const session = await db
|
|
@@ -189,7 +174,7 @@ export async function viewLoadedMemories(sessionId) {
|
|
|
189
174
|
// Get all loaded memories
|
|
190
175
|
const memories = [];
|
|
191
176
|
for (const id of loadedIds) {
|
|
192
|
-
const memory = await
|
|
177
|
+
const memory = await getMemory(id);
|
|
193
178
|
if (memory) {
|
|
194
179
|
memories.push({
|
|
195
180
|
id: memory.id,
|
|
@@ -208,12 +193,10 @@ export async function viewLoadedMemories(sessionId) {
|
|
|
208
193
|
}
|
|
209
194
|
/**
|
|
210
195
|
* Get context status - what's in your working set and what's available
|
|
211
|
-
* Note: Claude manages its own context/tokens - this just shows WHAT you have loaded
|
|
212
196
|
*/
|
|
213
197
|
export async function getContextStatus(sessionId, projectId) {
|
|
214
|
-
const db =
|
|
215
|
-
const
|
|
216
|
-
const { contextSessions, memories, observations } = schema;
|
|
198
|
+
const { db, schema } = await getDbClient();
|
|
199
|
+
const { contextSessions, memories, learnings } = schema;
|
|
217
200
|
// Get session
|
|
218
201
|
const session = await db
|
|
219
202
|
.select()
|
|
@@ -231,13 +214,13 @@ export async function getContextStatus(sessionId, projectId) {
|
|
|
231
214
|
}
|
|
232
215
|
const currentSession = session[0];
|
|
233
216
|
// Get core memory stats
|
|
234
|
-
const { getCoreMemoryStats } = await import('
|
|
217
|
+
const { getCoreMemoryStats } = await import('../ingestion/core-memory.js');
|
|
235
218
|
const coreStats = await getCoreMemoryStats(projectId);
|
|
236
219
|
// Get loaded memories
|
|
237
220
|
const loadedIds = currentSession.loadedMemoryIds || [];
|
|
238
221
|
const loadedMemories = [];
|
|
239
222
|
for (const id of loadedIds) {
|
|
240
|
-
const memory = await
|
|
223
|
+
const memory = await getMemory(id);
|
|
241
224
|
if (memory) {
|
|
242
225
|
loadedMemories.push({
|
|
243
226
|
id: memory.id,
|
|
@@ -253,8 +236,8 @@ export async function getContextStatus(sessionId, projectId) {
|
|
|
253
236
|
.where(eq(memories.projectId, projectId));
|
|
254
237
|
const totalObservations = await db
|
|
255
238
|
.select()
|
|
256
|
-
.from(
|
|
257
|
-
.where(eq(
|
|
239
|
+
.from(learnings)
|
|
240
|
+
.where(eq(learnings.projectId, projectId));
|
|
258
241
|
return {
|
|
259
242
|
success: true,
|
|
260
243
|
coreMemory: {
|
|
@@ -277,8 +260,7 @@ export async function getContextStatus(sessionId, projectId) {
|
|
|
277
260
|
* Clear all loaded memories from working set
|
|
278
261
|
*/
|
|
279
262
|
export async function clearLoadedMemories(sessionId) {
|
|
280
|
-
const db =
|
|
281
|
-
const schema = await getSchema();
|
|
263
|
+
const { db, schema } = await getDbClient();
|
|
282
264
|
const { contextSessions } = schema;
|
|
283
265
|
await db
|
|
284
266
|
.update(contextSessions)
|
|
@@ -296,8 +278,7 @@ export async function clearLoadedMemories(sessionId) {
|
|
|
296
278
|
* Get all memories currently marked as in-context for a session
|
|
297
279
|
*/
|
|
298
280
|
export async function getInContextMemories(sessionId) {
|
|
299
|
-
const db =
|
|
300
|
-
const schema = await getSchema();
|
|
281
|
+
const { db, schema } = await getDbClient();
|
|
301
282
|
const { contextSessions } = schema;
|
|
302
283
|
// Get session to find project
|
|
303
284
|
const session = await db
|
|
@@ -327,8 +308,7 @@ export async function getInContextMemories(sessionId) {
|
|
|
327
308
|
* Get out-of-context (archived) memories for a project
|
|
328
309
|
*/
|
|
329
310
|
export async function getOutOfContextMemories(projectId, limit = 10) {
|
|
330
|
-
const db =
|
|
331
|
-
const schema = await getSchema();
|
|
311
|
+
const { db, schema } = await getDbClient();
|
|
332
312
|
const { memories } = schema;
|
|
333
313
|
// Get out-of-context memories, ordered by last accessed
|
|
334
314
|
const outOfContextMemories = await db
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export interface ContextWindowConfig {
|
|
2
|
+
maxTokens: number;
|
|
3
|
+
warningThreshold: number;
|
|
4
|
+
criticalThreshold: number;
|
|
5
|
+
}
|
|
6
|
+
export declare const DEFAULT_CONTEXT_CONFIG: ContextWindowConfig;
|
|
7
|
+
export interface TokenUsageStats {
|
|
8
|
+
coreMemoryTokens: number;
|
|
9
|
+
memoriesTokens: number;
|
|
10
|
+
totalTokens: number;
|
|
11
|
+
maxTokens: number;
|
|
12
|
+
usagePercent: number;
|
|
13
|
+
status: 'ok' | 'warning' | 'critical';
|
|
14
|
+
remainingTokens: number;
|
|
15
|
+
}
|
|
16
|
+
export interface OptimizationSuggestion {
|
|
17
|
+
type: 'drop' | 'summarize' | 'consolidate';
|
|
18
|
+
memoryId: string;
|
|
19
|
+
memoryType: string;
|
|
20
|
+
contentPreview: string;
|
|
21
|
+
tokens: number;
|
|
22
|
+
reason: string;
|
|
23
|
+
priority: number;
|
|
24
|
+
}
|
|
25
|
+
export declare function estimateTokens(content: string): number;
|
|
26
|
+
export declare function getTokenUsage(projectPath: string): Promise<TokenUsageStats>;
|
|
27
|
+
export declare function checkContextLimit(projectPath: string, additionalTokens: number): Promise<{
|
|
28
|
+
ok: boolean;
|
|
29
|
+
warning?: string;
|
|
30
|
+
stats: TokenUsageStats;
|
|
31
|
+
}>;
|
|
32
|
+
export declare function getOptimizationSuggestions(projectPath: string): Promise<OptimizationSuggestion[]>;
|
|
33
|
+
export declare function getContextWindowStatus(projectPath: string): Promise<{
|
|
34
|
+
config: ContextWindowConfig;
|
|
35
|
+
usage: TokenUsageStats;
|
|
36
|
+
suggestions: OptimizationSuggestion[];
|
|
37
|
+
memoryCount: number;
|
|
38
|
+
coreMemorySections: number;
|
|
39
|
+
}>;
|
|
40
|
+
//# sourceMappingURL=context-window.d.ts.map
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { eq, sql } from 'drizzle-orm';
|
|
2
|
+
import { getDb } from '../../db/index.js';
|
|
3
|
+
import { getSchema } from '../../db/schema.js';
|
|
4
|
+
import { createDatabaseClient } from '../storage/database.js';
|
|
5
|
+
import { requireProject } from '../projects.js';
|
|
6
|
+
export const DEFAULT_CONTEXT_CONFIG = {
|
|
7
|
+
maxTokens: 128000,
|
|
8
|
+
warningThreshold: 0.80,
|
|
9
|
+
criticalThreshold: 0.95,
|
|
10
|
+
};
|
|
11
|
+
export function estimateTokens(content) {
|
|
12
|
+
if (!content)
|
|
13
|
+
return 0;
|
|
14
|
+
return Math.ceil(content.length / 4);
|
|
15
|
+
}
|
|
16
|
+
export async function getTokenUsage(projectPath) {
|
|
17
|
+
const project = await requireProject(projectPath);
|
|
18
|
+
const projectId = project.id;
|
|
19
|
+
const db = createDatabaseClient(await getDb());
|
|
20
|
+
const schema = await getSchema();
|
|
21
|
+
const memories = schema.memories;
|
|
22
|
+
const coreMemory = schema.coreMemory;
|
|
23
|
+
const coreMemoryRows = await db
|
|
24
|
+
.select()
|
|
25
|
+
.from(coreMemory)
|
|
26
|
+
.where(eq(coreMemory.projectId, projectId));
|
|
27
|
+
let coreMemoryTokens = 0;
|
|
28
|
+
for (const row of coreMemoryRows) {
|
|
29
|
+
coreMemoryTokens += row.tokensEstimate || estimateTokens(row.content || '');
|
|
30
|
+
}
|
|
31
|
+
const memoryRows = await db
|
|
32
|
+
.select({
|
|
33
|
+
tokens: memories.tokensEstimate,
|
|
34
|
+
content: memories.content,
|
|
35
|
+
})
|
|
36
|
+
.from(memories)
|
|
37
|
+
.where(eq(memories.projectId, projectId));
|
|
38
|
+
let memoriesTokens = 0;
|
|
39
|
+
for (const row of memoryRows) {
|
|
40
|
+
memoriesTokens += row.tokens || estimateTokens(row.content || '');
|
|
41
|
+
}
|
|
42
|
+
const totalTokens = coreMemoryTokens + memoriesTokens;
|
|
43
|
+
const config = DEFAULT_CONTEXT_CONFIG;
|
|
44
|
+
const usagePercent = (totalTokens / config.maxTokens) * 100;
|
|
45
|
+
const remainingTokens = Math.max(0, config.maxTokens - totalTokens);
|
|
46
|
+
let status = 'ok';
|
|
47
|
+
if (usagePercent >= config.criticalThreshold * 100) {
|
|
48
|
+
status = 'critical';
|
|
49
|
+
}
|
|
50
|
+
else if (usagePercent >= config.warningThreshold * 100) {
|
|
51
|
+
status = 'warning';
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
coreMemoryTokens,
|
|
55
|
+
memoriesTokens,
|
|
56
|
+
totalTokens,
|
|
57
|
+
maxTokens: config.maxTokens,
|
|
58
|
+
usagePercent,
|
|
59
|
+
status,
|
|
60
|
+
remainingTokens,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export async function checkContextLimit(projectPath, additionalTokens) {
|
|
64
|
+
const stats = await getTokenUsage(projectPath);
|
|
65
|
+
const projectedTotal = stats.totalTokens + additionalTokens;
|
|
66
|
+
const projectedPercent = (projectedTotal / stats.maxTokens) * 100;
|
|
67
|
+
if (projectedPercent >= DEFAULT_CONTEXT_CONFIG.criticalThreshold * 100) {
|
|
68
|
+
return {
|
|
69
|
+
ok: false,
|
|
70
|
+
warning: `CRITICAL: Adding ${additionalTokens} tokens would exceed ${(DEFAULT_CONTEXT_CONFIG.criticalThreshold * 100).toFixed(0)}% of context limit (${projectedPercent.toFixed(1)}% projected). Consider optimizing first.`,
|
|
71
|
+
stats,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
if (projectedPercent >= DEFAULT_CONTEXT_CONFIG.warningThreshold * 100) {
|
|
75
|
+
return {
|
|
76
|
+
ok: true,
|
|
77
|
+
warning: `WARNING: Adding ${additionalTokens} tokens would reach ${(projectedPercent.toFixed(1))}% of context limit. Consider optimizing soon.`,
|
|
78
|
+
stats,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
return { ok: true, stats };
|
|
82
|
+
}
|
|
83
|
+
export async function getOptimizationSuggestions(projectPath) {
|
|
84
|
+
const project = await requireProject(projectPath);
|
|
85
|
+
const projectId = project.id;
|
|
86
|
+
const db = createDatabaseClient(await getDb());
|
|
87
|
+
const schema = await getSchema();
|
|
88
|
+
const memories = schema.memories;
|
|
89
|
+
const candidates = await db
|
|
90
|
+
.select({
|
|
91
|
+
id: memories.id,
|
|
92
|
+
type: memories.type,
|
|
93
|
+
content: memories.content,
|
|
94
|
+
tokens: memories.tokensEstimate,
|
|
95
|
+
importanceScore: memories.importanceScore,
|
|
96
|
+
accessCount: memories.accessCount,
|
|
97
|
+
createdAt: memories.createdAt,
|
|
98
|
+
isPinned: memories.isPinned,
|
|
99
|
+
isProtected: memories.isProtected,
|
|
100
|
+
})
|
|
101
|
+
.from(memories)
|
|
102
|
+
.where(eq(memories.projectId, projectId))
|
|
103
|
+
.orderBy(sql `(importance_score * 0.4 + (100 - COALESCE(access_count, 0)) * 0.3 + (strftime('%s', 'now') - created_at / 1000) / 86400 * 0.3) ASC`)
|
|
104
|
+
.limit(20);
|
|
105
|
+
const suggestions = [];
|
|
106
|
+
for (const mem of candidates) {
|
|
107
|
+
const tokens = mem.tokens || estimateTokens(mem.content || '');
|
|
108
|
+
const contentPreview = mem.content?.substring(0, 100) + '...';
|
|
109
|
+
const isPinned = mem.isPinned === 1 || mem.isPinned === true;
|
|
110
|
+
const isProtected = mem.isProtected === 1 || mem.isProtected === true;
|
|
111
|
+
const accessCount = mem.accessCount || 0;
|
|
112
|
+
const importanceScore = mem.importanceScore || 50;
|
|
113
|
+
if (isPinned || isProtected) {
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
if (importanceScore < 30 && accessCount < 3) {
|
|
117
|
+
suggestions.push({
|
|
118
|
+
type: 'drop',
|
|
119
|
+
memoryId: mem.id,
|
|
120
|
+
memoryType: mem.type,
|
|
121
|
+
contentPreview,
|
|
122
|
+
tokens,
|
|
123
|
+
reason: `Low importance (${importanceScore}) and rarely accessed (${accessCount} times)`,
|
|
124
|
+
priority: 1,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
else if (importanceScore < 50 && tokens > 500) {
|
|
128
|
+
suggestions.push({
|
|
129
|
+
type: 'summarize',
|
|
130
|
+
memoryId: mem.id,
|
|
131
|
+
memoryType: mem.type,
|
|
132
|
+
contentPreview,
|
|
133
|
+
tokens,
|
|
134
|
+
reason: `Large memory (${tokens} tokens) with moderate importance`,
|
|
135
|
+
priority: 2,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
else if (tokens > 1000) {
|
|
139
|
+
suggestions.push({
|
|
140
|
+
type: 'consolidate',
|
|
141
|
+
memoryId: mem.id,
|
|
142
|
+
memoryType: mem.type,
|
|
143
|
+
contentPreview,
|
|
144
|
+
tokens,
|
|
145
|
+
reason: `Very large memory (${tokens} tokens) - candidate for consolidation`,
|
|
146
|
+
priority: 3,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return suggestions.sort((a, b) => a.priority - b.priority).slice(0, 10);
|
|
151
|
+
}
|
|
152
|
+
export async function getContextWindowStatus(projectPath) {
|
|
153
|
+
const project = await requireProject(projectPath);
|
|
154
|
+
const projectId = project.id;
|
|
155
|
+
const db = createDatabaseClient(await getDb());
|
|
156
|
+
const schema = await getSchema();
|
|
157
|
+
const [usage, suggestions] = await Promise.all([
|
|
158
|
+
getTokenUsage(projectPath),
|
|
159
|
+
getOptimizationSuggestions(projectPath),
|
|
160
|
+
]);
|
|
161
|
+
const memoryCount = await db
|
|
162
|
+
.select({ count: sql `COUNT(*)` })
|
|
163
|
+
.from(schema.memories)
|
|
164
|
+
.where(eq(schema.memories.projectId, projectId));
|
|
165
|
+
const coreMemorySections = await db
|
|
166
|
+
.select({ count: sql `COUNT(*)` })
|
|
167
|
+
.from(schema.coreMemory)
|
|
168
|
+
.where(eq(schema.coreMemory.projectId, projectId));
|
|
169
|
+
return {
|
|
170
|
+
config: DEFAULT_CONTEXT_CONFIG,
|
|
171
|
+
usage,
|
|
172
|
+
suggestions,
|
|
173
|
+
memoryCount: memoryCount[0]?.count || 0,
|
|
174
|
+
coreMemorySections: coreMemorySections[0]?.count || 0,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=context-window.js.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { requireProject } from '../projects.js';
|
|
2
|
+
import { getRecent } from '../memory/memories.js';
|
|
3
|
+
import { getObservations } from '../ingestion/learnings.js';
|
|
4
|
+
import { getEntitiesForProject } from '../search/entities.js';
|
|
5
|
+
import { validateLimit } from '../lib/validation.js';
|
|
6
|
+
export async function getProjectContext(input) {
|
|
7
|
+
const project = await requireProject(input.project);
|
|
8
|
+
const include = input.include ?? ['memories', 'observations'];
|
|
9
|
+
const limit = validateLimit(input.limit, 10, 1, 100);
|
|
10
|
+
const result = { project };
|
|
11
|
+
if (include.includes('memories')) {
|
|
12
|
+
result.memories = await getRecent(project.path, limit);
|
|
13
|
+
}
|
|
14
|
+
if (include.includes('observations')) {
|
|
15
|
+
result.observations = await getObservations(project.path, limit);
|
|
16
|
+
}
|
|
17
|
+
if (include.includes('entities')) {
|
|
18
|
+
result.entities = await getEntitiesForProject(project.path, limit);
|
|
19
|
+
}
|
|
20
|
+
return result;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { MultimodalInput } from './google-multimodal.js';
|
|
2
|
+
export type EmbeddingProvider = 'local' | 'openai' | 'ollama' | 'lmstudio' | 'transformers' | 'google' | 'none' | 'auto';
|
|
3
|
+
export declare function getEmbedding(input: string | MultimodalInput): Promise<number[] | null>;
|
|
4
|
+
/**
|
|
5
|
+
* Get embeddings for multiple inputs in parallel batches
|
|
6
|
+
* Processes inputs in batches to respect rate limits while parallelizing
|
|
7
|
+
*/
|
|
8
|
+
export declare function getBatchEmbeddings(inputs: string[], batchSize?: number): Promise<Array<number[] | null>>;
|
|
9
|
+
/**
|
|
10
|
+
* Clear the embedding cache
|
|
11
|
+
*/
|
|
12
|
+
export declare function clearEmbeddingCache(): void;
|
|
13
|
+
/**
|
|
14
|
+
* Get embedding cache statistics
|
|
15
|
+
*/
|
|
16
|
+
export declare function getEmbeddingCacheStats(): {
|
|
17
|
+
size: number;
|
|
18
|
+
maxSize: number;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Check health of all configured embedding providers
|
|
22
|
+
* Returns availability and latency for each provider
|
|
23
|
+
*/
|
|
24
|
+
export declare function checkEmbeddingProviderHealth(): Promise<Map<string, {
|
|
25
|
+
available: boolean;
|
|
26
|
+
latencyMs?: number;
|
|
27
|
+
error?: string;
|
|
28
|
+
}>>;
|
|
29
|
+
//# sourceMappingURL=embeddings.d.ts.map
|