squish-memory 1.1.5 → 1.2.1
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 +32 -16
- package/CHANGELOG.md +147 -0
- package/README.md +120 -78
- 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 +44 -0
- package/bin/squish.mjs +33 -0
- package/config/mcp-migration-map.json +1 -6
- package/config/mcp-mode-semantics.json +19 -23
- package/config/mcp-remote-auth.json +3 -26
- package/config/mcp-universal.schema.json +5 -35
- package/config/settings.json +107 -52
- 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/{dist/core/algorithms/index.js → core/algorithms/index.ts} +39 -26
- 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/{dist/core/local-embeddings.js → core/embeddings/local-embeddings.ts} +12 -11
- 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/{dist/core/lib/db-client.d.ts → core/lib/db-client.ts} +168 -114
- package/core/lib/parse-embedding.ts +59 -0
- package/{dist/core/lib/schemas.js → core/lib/schemas.ts} +102 -87
- 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/{dist/core/memory/index.js → core/memory/index.ts} +11 -10
- 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/{dist/core/places/index.js → core/places/index.ts} +12 -12
- 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 +590 -0
- package/core/scheduler/heartbeat.ts +91 -0
- package/{dist/core/scheduler/index.js → core/scheduler/index.ts} +8 -8
- 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/{dist/core/search/index.js → core/search/index.ts} +4 -5
- 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/{dist/core/session/index.js → core/session/index.ts} +7 -7
- 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/{dist/core/snapshots/cleanup.js → core/snapshots/cleanup.ts} +13 -12
- 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/{dist/core/summarization/cleanup.js → core/summarization/cleanup.ts} +13 -12
- 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/{dist/core/utils/vector-operations.js → core/utils/vector-operations.ts} +135 -129
- package/core/utils/version-management.ts +74 -0
- package/core/worker.ts +333 -0
- package/db/adapter.ts +215 -0
- package/{dist/db/bootstrap.js → db/bootstrap.ts} +388 -418
- 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/mcp.json.example +8 -11
- package/package.json +140 -159
- 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 +940 -0
- package/packages/mcp/tsconfig.json +20 -0
- package/skills/squish-memory/SKILL.md +38 -35
- package/skills/squish-memory/{scripts/install.sh → install.sh} +1 -1
- package/skills/squish-memory/references/claude-desktop.json +12 -0
- package/skills/squish-memory/references/openclaw.json +13 -0
- package/skills/squish-memory/references/opencode.json +14 -0
- package/config/hooks/claude-code-hooks.json +0 -39
- package/config/hooks/cursor-hooks.json +0 -30
- package/config/hooks/opencode-hooks.json +0 -30
- package/config/hooks/windsurf-hooks.json +0 -30
- package/config/mcp-cli-fallback-policy.json +0 -22
- package/config/mcp.json +0 -38
- package/config/plugin-manifest.json +0 -101
- package/config/plugin-manifest.schema.json +0 -244
- package/config/plugin.json +0 -32
- package/config/remote-memory-policy.json +0 -32
- package/core/commands/context-paging.md +0 -51
- package/core/commands/context-status.md +0 -22
- package/core/commands/context.md +0 -5
- package/core/commands/core-memory.md +0 -56
- package/core/commands/health.md +0 -5
- package/core/commands/init.md +0 -39
- package/core/commands/merge.md +0 -113
- package/core/commands/recall.md +0 -5
- package/core/commands/remember.md +0 -11
- package/core/commands/search.md +0 -10
- package/dist/config.d.ts +0 -83
- package/dist/config.js +0 -242
- package/dist/core/adapters/config/claude-code.d.ts +0 -45
- package/dist/core/adapters/config/claude-code.js +0 -113
- package/dist/core/adapters/config/cursor.d.ts +0 -26
- package/dist/core/adapters/config/cursor.js +0 -74
- package/dist/core/adapters/config/opencode.d.ts +0 -23
- package/dist/core/adapters/config/opencode.js +0 -73
- package/dist/core/adapters/config/windsurf.d.ts +0 -26
- package/dist/core/adapters/config/windsurf.js +0 -74
- package/dist/core/adapters/index.d.ts +0 -45
- package/dist/core/adapters/index.js +0 -84
- package/dist/core/adapters/scripts/install-adapter.d.ts +0 -19
- package/dist/core/adapters/scripts/install-adapter.js +0 -149
- package/dist/core/adapters/timeline.d.ts +0 -23
- package/dist/core/adapters/timeline.js +0 -88
- package/dist/core/adapters/types.d.ts +0 -157
- package/dist/core/adapters/types.js +0 -50
- package/dist/core/algorithms/analytics/token-estimator.d.ts +0 -50
- package/dist/core/algorithms/analytics/token-estimator.js +0 -154
- package/dist/core/algorithms/detection/hash-filters.d.ts +0 -47
- package/dist/core/algorithms/detection/hash-filters.js +0 -190
- package/dist/core/algorithms/detection/semantic-ranker.d.ts +0 -32
- package/dist/core/algorithms/detection/semantic-ranker.js +0 -118
- package/dist/core/algorithms/detection/two-stage-detector.d.ts +0 -52
- package/dist/core/algorithms/detection/two-stage-detector.js +0 -299
- package/dist/core/algorithms/handlers/approve-merge.d.ts +0 -22
- package/dist/core/algorithms/handlers/approve-merge.js +0 -179
- package/dist/core/algorithms/handlers/detect-duplicates.d.ts +0 -47
- package/dist/core/algorithms/handlers/detect-duplicates.js +0 -145
- package/dist/core/algorithms/handlers/get-stats.d.ts +0 -39
- package/dist/core/algorithms/handlers/get-stats.js +0 -88
- package/dist/core/algorithms/handlers/list-proposals.d.ts +0 -45
- package/dist/core/algorithms/handlers/list-proposals.js +0 -83
- package/dist/core/algorithms/handlers/preview-merge.d.ts +0 -39
- package/dist/core/algorithms/handlers/preview-merge.js +0 -93
- package/dist/core/algorithms/handlers/reject-merge.d.ts +0 -28
- package/dist/core/algorithms/handlers/reject-merge.js +0 -69
- package/dist/core/algorithms/handlers/reverse-merge.d.ts +0 -21
- package/dist/core/algorithms/handlers/reverse-merge.js +0 -121
- package/dist/core/algorithms/index.d.ts +0 -21
- package/dist/core/algorithms/operations/cache-maintenance.d.ts +0 -12
- package/dist/core/algorithms/operations/cache-maintenance.js +0 -157
- package/dist/core/algorithms/safety/safety-checks.d.ts +0 -22
- package/dist/core/algorithms/safety/safety-checks.js +0 -179
- package/dist/core/algorithms/strategies/merge-strategies.d.ts +0 -50
- package/dist/core/algorithms/strategies/merge-strategies.js +0 -288
- package/dist/core/algorithms/types.d.ts +0 -133
- package/dist/core/algorithms/types.js +0 -5
- package/dist/core/algorithms/utils/response-builder.d.ts +0 -28
- package/dist/core/algorithms/utils/response-builder.js +0 -37
- package/dist/core/associations.d.ts +0 -31
- package/dist/core/associations.js +0 -248
- package/dist/core/autosave.d.ts +0 -19
- package/dist/core/autosave.js +0 -16
- package/dist/core/commands/managed-sync.d.ts +0 -10
- package/dist/core/commands/managed-sync.js +0 -64
- package/dist/core/commands/mcp-server.d.ts +0 -3
- package/dist/core/commands/mcp-server.js +0 -739
- package/dist/core/consolidation.d.ts +0 -37
- package/dist/core/consolidation.js +0 -248
- package/dist/core/context/agent-context.d.ts +0 -106
- package/dist/core/context/agent-context.js +0 -274
- package/dist/core/context/context-paging.d.ts +0 -80
- package/dist/core/context/context-paging.js +0 -328
- package/dist/core/context/context-window.d.ts +0 -40
- package/dist/core/context/context-window.js +0 -177
- package/dist/core/context/context.d.ts +0 -7
- package/dist/core/context/context.js +0 -22
- package/dist/core/embeddings/google-multimodal.d.ts +0 -14
- package/dist/core/embeddings/google-multimodal.js +0 -142
- package/dist/core/embeddings/qmd-client.d.ts +0 -136
- package/dist/core/embeddings/qmd-client.js +0 -403
- package/dist/core/embeddings.d.ts +0 -29
- package/dist/core/embeddings.js +0 -454
- package/dist/core/error-handling.d.ts +0 -63
- package/dist/core/error-handling.js +0 -173
- package/dist/core/external-folder/index.d.ts +0 -102
- package/dist/core/external-folder/index.js +0 -294
- package/dist/core/hooks/agent-hooks.d.ts +0 -74
- package/dist/core/hooks/agent-hooks.js +0 -244
- package/dist/core/hooks/auto-tagger.d.ts +0 -19
- package/dist/core/hooks/auto-tagger.js +0 -155
- package/dist/core/hooks/capture-filter.d.ts +0 -41
- package/dist/core/hooks/capture-filter.js +0 -128
- package/dist/core/index.d.ts +0 -10
- package/dist/core/index.js +0 -14
- package/dist/core/ingestion/agent-memory.d.ts +0 -22
- package/dist/core/ingestion/agent-memory.js +0 -109
- package/dist/core/ingestion/core-memory.d.ts +0 -78
- package/dist/core/ingestion/core-memory.js +0 -226
- package/dist/core/ingestion/learnings.d.ts +0 -57
- package/dist/core/ingestion/learnings.js +0 -202
- package/dist/core/layers/generator.d.ts +0 -25
- package/dist/core/layers/generator.js +0 -76
- package/dist/core/lib/db-client.js +0 -130
- package/dist/core/lib/schemas.d.ts +0 -129
- package/dist/core/lib/utils.d.ts +0 -14
- package/dist/core/lib/utils.js +0 -90
- package/dist/core/lib/validation.d.ts +0 -38
- package/dist/core/lib/validation.js +0 -151
- package/dist/core/lifecycle.d.ts +0 -26
- package/dist/core/lifecycle.js +0 -302
- package/dist/core/local-embeddings.d.ts +0 -11
- package/dist/core/logger.d.ts +0 -16
- package/dist/core/logger.js +0 -40
- package/dist/core/mcp/client.d.ts +0 -17
- package/dist/core/mcp/client.js +0 -101
- package/dist/core/mcp/index.d.ts +0 -6
- package/dist/core/mcp/index.js +0 -6
- package/dist/core/mcp/server.d.ts +0 -18
- package/dist/core/mcp/server.js +0 -157
- package/dist/core/mcp/standalone-server.d.ts +0 -13
- package/dist/core/mcp/standalone-server.js +0 -46
- package/dist/core/mcp/tools.d.ts +0 -9
- package/dist/core/mcp/tools.js +0 -365
- package/dist/core/mcp/types.d.ts +0 -315
- package/dist/core/mcp/types.js +0 -48
- package/dist/core/memory/bridge-discovery.d.ts +0 -50
- package/dist/core/memory/bridge-discovery.js +0 -291
- package/dist/core/memory/categorizer.d.ts +0 -27
- package/dist/core/memory/categorizer.js +0 -305
- package/dist/core/memory/conflict-detector.d.ts +0 -7
- package/dist/core/memory/conflict-detector.js +0 -43
- package/dist/core/memory/consolidation.d.ts +0 -42
- package/dist/core/memory/consolidation.js +0 -303
- package/dist/core/memory/context-collector.d.ts +0 -10
- package/dist/core/memory/context-collector.js +0 -56
- package/dist/core/memory/contradiction-resolver.d.ts +0 -40
- package/dist/core/memory/contradiction-resolver.js +0 -368
- package/dist/core/memory/edit-workflow.d.ts +0 -19
- package/dist/core/memory/edit-workflow.js +0 -120
- package/dist/core/memory/entity-extractor.d.ts +0 -33
- package/dist/core/memory/entity-extractor.js +0 -336
- package/dist/core/memory/entity-resolver.d.ts +0 -23
- package/dist/core/memory/entity-resolver.js +0 -64
- package/dist/core/memory/fact-extractor.d.ts +0 -24
- package/dist/core/memory/fact-extractor.js +0 -89
- package/dist/core/memory/feedback-tracker.d.ts +0 -12
- package/dist/core/memory/feedback-tracker.js +0 -155
- package/dist/core/memory/hooks.d.ts +0 -88
- package/dist/core/memory/hooks.js +0 -174
- package/dist/core/memory/hybrid-retrieval.d.ts +0 -29
- package/dist/core/memory/hybrid-retrieval.js +0 -139
- package/dist/core/memory/hybrid-scorer.d.ts +0 -40
- package/dist/core/memory/hybrid-scorer.js +0 -284
- package/dist/core/memory/hybrid-search.d.ts +0 -20
- package/dist/core/memory/hybrid-search.js +0 -359
- package/dist/core/memory/importance.d.ts +0 -63
- package/dist/core/memory/importance.js +0 -298
- package/dist/core/memory/index.d.ts +0 -8
- package/dist/core/memory/loader.d.ts +0 -31
- package/dist/core/memory/loader.js +0 -141
- package/dist/core/memory/markdown/markdown-storage.d.ts +0 -72
- package/dist/core/memory/markdown/markdown-storage.js +0 -243
- package/dist/core/memory/memories.d.ts +0 -47
- package/dist/core/memory/memories.js +0 -449
- package/dist/core/memory/memory-lifecycle.d.ts +0 -8
- package/dist/core/memory/memory-lifecycle.js +0 -55
- package/dist/core/memory/memory-manager.d.ts +0 -15
- package/dist/core/memory/memory-manager.js +0 -46
- package/dist/core/memory/migrate.d.ts +0 -21
- package/dist/core/memory/migrate.js +0 -134
- package/dist/core/memory/normalization.d.ts +0 -22
- package/dist/core/memory/normalization.js +0 -26
- package/dist/core/memory/progressive-disclosure.d.ts +0 -43
- package/dist/core/memory/progressive-disclosure.js +0 -280
- package/dist/core/memory/query-processor.d.ts +0 -21
- package/dist/core/memory/query-processor.js +0 -72
- package/dist/core/memory/query-rewriter.d.ts +0 -13
- package/dist/core/memory/query-rewriter.js +0 -118
- package/dist/core/memory/response-analyzer.d.ts +0 -9
- package/dist/core/memory/response-analyzer.js +0 -61
- package/dist/core/memory/serialization.d.ts +0 -10
- package/dist/core/memory/serialization.js +0 -84
- package/dist/core/memory/stats.d.ts +0 -22
- package/dist/core/memory/stats.js +0 -138
- package/dist/core/memory/telemetry.d.ts +0 -69
- package/dist/core/memory/telemetry.js +0 -313
- package/dist/core/memory/temporal-facts.d.ts +0 -41
- package/dist/core/memory/temporal-facts.js +0 -283
- package/dist/core/memory/temporal-parser.d.ts +0 -32
- package/dist/core/memory/temporal-parser.js +0 -385
- package/dist/core/memory/trigger-detector.d.ts +0 -14
- package/dist/core/memory/trigger-detector.js +0 -42
- package/dist/core/memory/write-gate.d.ts +0 -54
- package/dist/core/memory/write-gate.js +0 -210
- 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/obsidian-vault.d.ts +0 -30
- package/dist/core/obsidian-vault.js +0 -94
- package/dist/core/places/index.d.ts +0 -14
- package/dist/core/places/memory-places.d.ts +0 -68
- package/dist/core/places/memory-places.js +0 -261
- package/dist/core/places/places.d.ts +0 -88
- package/dist/core/places/places.js +0 -314
- package/dist/core/places/rules.d.ts +0 -74
- package/dist/core/places/rules.js +0 -240
- package/dist/core/places/walking.d.ts +0 -56
- package/dist/core/places/walking.js +0 -121
- package/dist/core/projects.d.ts +0 -17
- package/dist/core/projects.js +0 -108
- package/dist/core/redis.d.ts +0 -11
- package/dist/core/redis.js +0 -69
- package/dist/core/responses.d.ts +0 -96
- package/dist/core/responses.js +0 -122
- package/dist/core/scheduler/cron-scheduler.d.ts +0 -32
- package/dist/core/scheduler/cron-scheduler.js +0 -332
- package/dist/core/scheduler/heartbeat.d.ts +0 -11
- package/dist/core/scheduler/heartbeat.js +0 -73
- package/dist/core/scheduler/index.d.ts +0 -8
- package/dist/core/scheduler/job-runner.d.ts +0 -11
- package/dist/core/scheduler/job-runner.js +0 -164
- package/dist/core/search/conversations.d.ts +0 -25
- package/dist/core/search/conversations.js +0 -110
- package/dist/core/search/entities.d.ts +0 -12
- package/dist/core/search/entities.js +0 -31
- package/dist/core/search/folder-context.d.ts +0 -25
- package/dist/core/search/folder-context.js +0 -119
- package/dist/core/search/graph-boost.d.ts +0 -7
- package/dist/core/search/graph-boost.js +0 -23
- package/dist/core/search/index.d.ts +0 -4
- package/dist/core/search/qmd-search.d.ts +0 -61
- package/dist/core/search/qmd-search.js +0 -178
- package/dist/core/security/encrypt.d.ts +0 -6
- package/dist/core/security/encrypt.js +0 -47
- package/dist/core/security/governance.d.ts +0 -26
- package/dist/core/security/governance.js +0 -79
- package/dist/core/security/privacy.d.ts +0 -23
- package/dist/core/security/privacy.js +0 -82
- package/dist/core/security/secret-detector.d.ts +0 -32
- package/dist/core/security/secret-detector.js +0 -88
- package/dist/core/session/auto-load.d.ts +0 -6
- package/dist/core/session/auto-load.js +0 -119
- package/dist/core/session/index.d.ts +0 -7
- package/dist/core/session/self-iteration-job.d.ts +0 -20
- package/dist/core/session/self-iteration-job.js +0 -282
- package/dist/core/session/session-hooks.d.ts +0 -18
- package/dist/core/session/session-hooks.js +0 -58
- package/dist/core/session/types.d.ts +0 -26
- package/dist/core/session/types.js +0 -10
- package/dist/core/session-hooks/self-iteration-job.d.ts +0 -20
- package/dist/core/session-hooks/self-iteration-job.js +0 -282
- package/dist/core/session-hooks/session-hooks.d.ts +0 -18
- package/dist/core/session-hooks/session-hooks.js +0 -58
- package/dist/core/snapshots/cleanup.d.ts +0 -9
- package/dist/core/snapshots/comparison.d.ts +0 -19
- package/dist/core/snapshots/comparison.js +0 -43
- package/dist/core/snapshots/creation.d.ts +0 -19
- package/dist/core/snapshots/creation.js +0 -126
- package/dist/core/snapshots/retrieval.d.ts +0 -7
- package/dist/core/snapshots/retrieval.js +0 -41
- package/dist/core/snapshots/stats.d.ts +0 -11
- package/dist/core/snapshots/stats.js +0 -52
- package/dist/core/snapshots.d.ts +0 -29
- package/dist/core/snapshots.js +0 -220
- package/dist/core/storage/cache.d.ts +0 -13
- package/dist/core/storage/cache.js +0 -202
- package/dist/core/storage/database.d.ts +0 -12
- package/dist/core/storage/database.js +0 -12
- package/dist/core/summarization/cleanup.d.ts +0 -9
- package/dist/core/summarization/queries.d.ts +0 -9
- package/dist/core/summarization/queries.js +0 -28
- package/dist/core/summarization/stats.d.ts +0 -14
- package/dist/core/summarization/stats.js +0 -52
- package/dist/core/summarization/strategies.d.ts +0 -24
- package/dist/core/summarization/strategies.js +0 -28
- package/dist/core/summarization.d.ts +0 -37
- package/dist/core/summarization.js +0 -188
- package/dist/core/sync/qmd-sync.d.ts +0 -94
- package/dist/core/sync/qmd-sync.js +0 -201
- package/dist/core/temporal-facts.d.ts +0 -54
- package/dist/core/temporal-facts.js +0 -193
- package/dist/core/toon.d.ts +0 -43
- package/dist/core/toon.js +0 -160
- package/dist/core/tracing/collector.d.ts +0 -111
- package/dist/core/tracing/collector.js +0 -350
- package/dist/core/tracing/visualizer.d.ts +0 -32
- package/dist/core/tracing/visualizer.js +0 -165
- package/dist/core/utils/cleanup-operations.d.ts +0 -13
- package/dist/core/utils/cleanup-operations.js +0 -44
- package/dist/core/utils/content-extraction.d.ts +0 -19
- package/dist/core/utils/content-extraction.js +0 -75
- package/dist/core/utils/filter-builder.d.ts +0 -13
- package/dist/core/utils/filter-builder.js +0 -44
- package/dist/core/utils/history-traversal.d.ts +0 -13
- package/dist/core/utils/history-traversal.js +0 -50
- package/dist/core/utils/memory-operations.d.ts +0 -17
- package/dist/core/utils/memory-operations.js +0 -43
- package/dist/core/utils/query-operations.d.ts +0 -18
- package/dist/core/utils/query-operations.js +0 -65
- package/dist/core/utils/summarization-helpers.d.ts +0 -21
- package/dist/core/utils/summarization-helpers.js +0 -38
- package/dist/core/utils/temporal-queries.d.ts +0 -13
- package/dist/core/utils/temporal-queries.js +0 -27
- package/dist/core/utils/vector-operations.d.ts +0 -71
- package/dist/core/utils/version-management.d.ts +0 -9
- package/dist/core/utils/version-management.js +0 -61
- package/dist/core/worker.d.ts +0 -82
- package/dist/core/worker.js +0 -272
- package/dist/db/adapter.d.ts +0 -7
- package/dist/db/adapter.js +0 -175
- package/dist/db/bootstrap.d.ts +0 -9
- package/dist/db/drizzle/schema-sqlite.d.ts +0 -4837
- package/dist/db/drizzle/schema-sqlite.js +0 -684
- package/dist/db/drizzle/schema.d.ts +0 -4082
- package/dist/db/drizzle/schema.js +0 -770
- package/dist/db/drizzle.config.d.ts +0 -3
- package/dist/db/drizzle.config.js +0 -12
- package/dist/db/index.d.ts +0 -7
- package/dist/db/index.js +0 -89
- package/dist/db/neon.d.ts +0 -8
- package/dist/db/neon.js +0 -20
- package/dist/db/schema/index.d.ts +0 -40
- package/dist/db/schema/index.js +0 -105
- package/dist/db/schema/tables/context-sessions.d.ts +0 -9
- package/dist/db/schema/tables/context-sessions.js +0 -37
- package/dist/db/schema/tables/conversations.d.ts +0 -9
- package/dist/db/schema/tables/conversations.js +0 -47
- package/dist/db/schema/tables/core-memory.d.ts +0 -9
- package/dist/db/schema/tables/core-memory.js +0 -41
- package/dist/db/schema/tables/entities.d.ts +0 -9
- package/dist/db/schema/tables/entities.js +0 -39
- package/dist/db/schema/tables/entity-relations.d.ts +0 -9
- package/dist/db/schema/tables/entity-relations.js +0 -31
- package/dist/db/schema/tables/learnings.d.ts +0 -9
- package/dist/db/schema/tables/learnings.js +0 -66
- package/dist/db/schema/tables/memories.d.ts +0 -9
- package/dist/db/schema/tables/memories.js +0 -161
- package/dist/db/schema/tables/memory-associations.d.ts +0 -9
- package/dist/db/schema/tables/memory-associations.js +0 -39
- package/dist/db/schema/tables/memory-hash-cache.d.ts +0 -9
- package/dist/db/schema/tables/memory-hash-cache.js +0 -29
- package/dist/db/schema/tables/memory-merge-history.d.ts +0 -9
- package/dist/db/schema/tables/memory-merge-history.js +0 -33
- package/dist/db/schema/tables/memory-merge-proposals.d.ts +0 -9
- package/dist/db/schema/tables/memory-merge-proposals.js +0 -39
- package/dist/db/schema/tables/messages.d.ts +0 -9
- package/dist/db/schema/tables/messages.js +0 -41
- package/dist/db/schema/tables/namespaces.d.ts +0 -9
- package/dist/db/schema/tables/namespaces.js +0 -37
- package/dist/db/schema/tables/projects.d.ts +0 -9
- package/dist/db/schema/tables/projects.js +0 -31
- package/dist/db/schema/tables/users.d.ts +0 -9
- package/dist/db/schema/tables/users.js +0 -27
- package/dist/db/schema.d.ts +0 -3
- package/dist/db/schema.js +0 -11
- package/dist/db/supabase.d.ts +0 -9
- package/dist/db/supabase.js +0 -24
- package/dist/index.d.ts +0 -7
- package/dist/index.js +0 -1677
- package/dist/vendor/sql.js/sql-wasm.wasm +0 -0
- package/dist/webui/server.d.ts +0 -5
- package/dist/webui/server.js +0 -642
- 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/scripts/README.md +0 -60
- package/scripts/build-release.sh +0 -36
- package/scripts/check-secrets.js +0 -132
- package/scripts/copy-runtime-assets.mjs +0 -26
- package/scripts/generate-mcp.mjs +0 -264
- package/scripts/github-release.sh +0 -77
- package/scripts/init-dirs.mjs +0 -13
- package/scripts/install-claude-code.sh +0 -85
- package/scripts/install-cursor.sh +0 -56
- package/scripts/install-hooks.sh +0 -73
- package/scripts/install-interactive.mjs +0 -357
- package/scripts/install-opencode.sh +0 -75
- package/scripts/install-plugin.mjs +0 -415
- package/scripts/install-windsurf.sh +0 -67
- package/scripts/remote-preflight.mjs +0 -62
- package/scripts/squish-fallback.mjs +0 -132
- package/scripts/test-interactive.mjs +0 -131
- package/scripts/verify-mcp.mjs +0 -214
- package/skills/squish-memory/scripts/install.mjs +0 -335
- package/skills/squish-memory/write_skill.js +0 -2
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Memory Migration Module
|
|
3
|
-
* Migrate memories between .squish directories/databases
|
|
4
|
-
*/
|
|
5
|
-
import { randomUUID } from 'crypto';
|
|
6
|
-
import { existsSync } from 'fs';
|
|
7
|
-
import { join } from 'path';
|
|
8
|
-
import { getDbClient } from '../lib/db-client.js';
|
|
9
|
-
/**
|
|
10
|
-
* Migrate memories from one .squish directory to another
|
|
11
|
-
*/
|
|
12
|
-
export async function migrateMemories(sourceDir, targetDir, options = {}) {
|
|
13
|
-
const { dryRun = false, deleteSource = false } = options;
|
|
14
|
-
const sourceDbPath = join(sourceDir, 'squish.db');
|
|
15
|
-
const targetDbPath = join(targetDir, 'squish.db');
|
|
16
|
-
if (!existsSync(sourceDbPath)) {
|
|
17
|
-
throw new Error(`Source database not found: ${sourceDbPath}`);
|
|
18
|
-
}
|
|
19
|
-
if (!existsSync(targetDbPath)) {
|
|
20
|
-
throw new Error(`Target database not found: ${targetDbPath}`);
|
|
21
|
-
}
|
|
22
|
-
// Use bun:sqlite for direct source DB access
|
|
23
|
-
// @ts-ignore - bun:sqlite module not found in types but works at runtime
|
|
24
|
-
const SqliteDatabase = (await import('bun:sqlite')).default;
|
|
25
|
-
const sourceDb = new SqliteDatabase(sourceDbPath, { readonly: true });
|
|
26
|
-
// Get target DB through the app's existing mechanism
|
|
27
|
-
const { db: targetDb, schema } = await getDbClient();
|
|
28
|
-
// Get all projects from source
|
|
29
|
-
const sourceProjects = sourceDb.query('SELECT * FROM projects').all();
|
|
30
|
-
// Map old project IDs to new project IDs
|
|
31
|
-
const projectIdMap = new Map();
|
|
32
|
-
for (const project of sourceProjects) {
|
|
33
|
-
// Check if project with same path exists in target
|
|
34
|
-
const existing = await targetDb.select()
|
|
35
|
-
.from(schema.projects)
|
|
36
|
-
.where((tbl, { eq }) => eq(tbl.path, project.path))
|
|
37
|
-
.limit(1);
|
|
38
|
-
if (existing.length > 0) {
|
|
39
|
-
projectIdMap.set(project.id, existing[0].id);
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
// Create new project in target
|
|
43
|
-
const newId = randomUUID();
|
|
44
|
-
await targetDb.insert(schema.projects).values({
|
|
45
|
-
id: newId,
|
|
46
|
-
path: project.path,
|
|
47
|
-
name: project.name || 'migrated',
|
|
48
|
-
createdAt: new Date(),
|
|
49
|
-
});
|
|
50
|
-
projectIdMap.set(project.id, newId);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
// Migrate memories
|
|
54
|
-
const sourceMemories = sourceDb.query('SELECT * FROM memories').all();
|
|
55
|
-
let memoriesCopied = 0;
|
|
56
|
-
for (const mem of sourceMemories) {
|
|
57
|
-
const oldProjectId = mem.project_id;
|
|
58
|
-
const newProjectId = projectIdMap.get(oldProjectId);
|
|
59
|
-
if (!newProjectId) {
|
|
60
|
-
console.warn(`Skipping memory ${mem.id}: no project mapping found`);
|
|
61
|
-
continue;
|
|
62
|
-
}
|
|
63
|
-
if (!dryRun) {
|
|
64
|
-
// Add 'imported' tag to track migrated memories
|
|
65
|
-
const existingTags = mem.tags ? JSON.parse(mem.tags) : [];
|
|
66
|
-
const newTags = [...existingTags, 'imported'];
|
|
67
|
-
await targetDb.insert(schema.memories).values({
|
|
68
|
-
id: randomUUID(),
|
|
69
|
-
projectId: newProjectId,
|
|
70
|
-
type: mem.type,
|
|
71
|
-
content: mem.content,
|
|
72
|
-
summary: mem.summary,
|
|
73
|
-
source: mem.source || 'migrated',
|
|
74
|
-
confidence: mem.confidence ?? 50,
|
|
75
|
-
confidenceLevel: mem.confidence_level || 'speculative',
|
|
76
|
-
tags: newTags,
|
|
77
|
-
metadata: { ...mem.metadata, migratedAt: new Date().toISOString(), originalId: mem.id },
|
|
78
|
-
isActive: mem.is_active ?? 1,
|
|
79
|
-
createdAt: mem.created_at ? new Date(mem.created_at * 1000) : new Date(),
|
|
80
|
-
updatedAt: new Date(),
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
memoriesCopied++;
|
|
84
|
-
}
|
|
85
|
-
// Migrate learnings (renamed from observations)
|
|
86
|
-
const sourceLearnings = sourceDb.query('SELECT * FROM learnings').all();
|
|
87
|
-
let learningsCopied = 0;
|
|
88
|
-
for (const learn of sourceLearnings) {
|
|
89
|
-
const oldProjectId = learn.project_id;
|
|
90
|
-
const newProjectId = projectIdMap.get(oldProjectId);
|
|
91
|
-
if (!newProjectId)
|
|
92
|
-
continue;
|
|
93
|
-
if (!dryRun) {
|
|
94
|
-
// Add is_imported flag to track migrated learnings
|
|
95
|
-
await targetDb.insert(schema.learnings).values({
|
|
96
|
-
id: randomUUID(),
|
|
97
|
-
projectId: newProjectId,
|
|
98
|
-
type: learn.type,
|
|
99
|
-
action: learn.action,
|
|
100
|
-
summary: learn.summary,
|
|
101
|
-
target: learn.target,
|
|
102
|
-
details: learn.details,
|
|
103
|
-
isImported: true,
|
|
104
|
-
createdAt: new Date(),
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
learningsCopied++;
|
|
108
|
-
}
|
|
109
|
-
// Migrate memory associations (simplified - skip for now)
|
|
110
|
-
const sourceAssoc = sourceDb.query('SELECT * FROM memory_associations').all();
|
|
111
|
-
let associationsCopied = 0;
|
|
112
|
-
if (!dryRun && sourceAssoc.length > 0) {
|
|
113
|
-
console.warn(`Note: ${sourceAssoc.length} associations not migrated (requires ID mapping)`);
|
|
114
|
-
}
|
|
115
|
-
// Close source DB
|
|
116
|
-
sourceDb.close();
|
|
117
|
-
// Delete source if requested
|
|
118
|
-
let sourceDeleted = false;
|
|
119
|
-
if (!dryRun && deleteSource && memoriesCopied > 0) {
|
|
120
|
-
// Implementation would delete the file
|
|
121
|
-
console.warn('Source deletion not implemented - requires manual removal');
|
|
122
|
-
}
|
|
123
|
-
return {
|
|
124
|
-
memoriesCopied,
|
|
125
|
-
observationsCopied: learningsCopied,
|
|
126
|
-
associationsCopied,
|
|
127
|
-
projectsMapped: projectIdMap.size,
|
|
128
|
-
sourceDeleted,
|
|
129
|
-
message: dryRun
|
|
130
|
-
? 'Dry run complete - no changes made'
|
|
131
|
-
: `Successfully migrated ${memoriesCopied} memories, ${learningsCopied} learnings`
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
//# sourceMappingURL=migrate.js.map
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Memory normalization utilities
|
|
3
|
-
* Shared between memories.ts and loader.ts to avoid circular dependencies
|
|
4
|
-
*/
|
|
5
|
-
export interface MemoryRecord {
|
|
6
|
-
id: string;
|
|
7
|
-
projectId?: string | null;
|
|
8
|
-
type: string;
|
|
9
|
-
content: string;
|
|
10
|
-
summary?: string | null;
|
|
11
|
-
tags: string[];
|
|
12
|
-
metadata?: Record<string, unknown> | null;
|
|
13
|
-
createdAt?: string | null;
|
|
14
|
-
validFrom?: string | null;
|
|
15
|
-
validTo?: string | null;
|
|
16
|
-
recordedAt?: string | null;
|
|
17
|
-
similarity?: number;
|
|
18
|
-
importance?: number;
|
|
19
|
-
confidenceLevel?: 'certain' | 'speculative' | 'outdated' | null;
|
|
20
|
-
}
|
|
21
|
-
export declare function normalizeMemory(row: any): MemoryRecord;
|
|
22
|
-
//# sourceMappingURL=normalization.d.ts.map
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Memory normalization utilities
|
|
3
|
-
* Shared between memories.ts and loader.ts to avoid circular dependencies
|
|
4
|
-
*/
|
|
5
|
-
import { deserializeTags, deserializeMetadata } from './serialization.js';
|
|
6
|
-
import { normalizeTimestamp } from '../lib/utils.js';
|
|
7
|
-
export function normalizeMemory(row) {
|
|
8
|
-
const tags = deserializeTags(row.tags ?? null);
|
|
9
|
-
const metadata = deserializeMetadata(row.metadata ?? null);
|
|
10
|
-
const createdAtStr = normalizeTimestamp(row.createdAt ?? row.created_at);
|
|
11
|
-
return {
|
|
12
|
-
id: row.id,
|
|
13
|
-
projectId: row.projectId ?? row.project_id ?? null,
|
|
14
|
-
type: row.type,
|
|
15
|
-
content: row.content,
|
|
16
|
-
summary: row.summary ?? null,
|
|
17
|
-
tags,
|
|
18
|
-
metadata,
|
|
19
|
-
createdAt: createdAtStr,
|
|
20
|
-
validFrom: row.validFrom ?? row.valid_from ?? null,
|
|
21
|
-
validTo: row.validTo ?? row.valid_to ?? null,
|
|
22
|
-
recordedAt: row.recordedAt ?? row.recorded_at ?? null,
|
|
23
|
-
confidenceLevel: row.confidenceLevel ?? row.confidence_level ?? null,
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=normalization.js.map
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
export interface LightweightIndex {
|
|
2
|
-
id: string;
|
|
3
|
-
memoryId: string;
|
|
4
|
-
contentHash: string;
|
|
5
|
-
contentPreview: string;
|
|
6
|
-
keyTerms: string[];
|
|
7
|
-
category: string;
|
|
8
|
-
importance: number;
|
|
9
|
-
createdAt: Date;
|
|
10
|
-
}
|
|
11
|
-
export interface MemoryPreview {
|
|
12
|
-
id: string;
|
|
13
|
-
type: string;
|
|
14
|
-
contentPreview: string;
|
|
15
|
-
keyTerms: string[];
|
|
16
|
-
category: string;
|
|
17
|
-
importance: number;
|
|
18
|
-
lastAccessedAt?: Date;
|
|
19
|
-
}
|
|
20
|
-
export interface FullMemoryLoad {
|
|
21
|
-
id: string;
|
|
22
|
-
content: string;
|
|
23
|
-
summary?: string;
|
|
24
|
-
tags: string[];
|
|
25
|
-
metadata?: Record<string, unknown>;
|
|
26
|
-
}
|
|
27
|
-
export interface TokenBudgetStatus {
|
|
28
|
-
budget: number;
|
|
29
|
-
used: number;
|
|
30
|
-
remaining: number;
|
|
31
|
-
loadedCount: number;
|
|
32
|
-
preloadCount: number;
|
|
33
|
-
}
|
|
34
|
-
export declare function createLightweightIndex(memoryId: string, content: string, category: string, importance: number): Promise<LightweightIndex>;
|
|
35
|
-
export declare function searchLightweightIndices(projectId: string, query: string, limit?: number): Promise<MemoryPreview[]>;
|
|
36
|
-
export declare function loadFullMemory(memoryId: string): Promise<FullMemoryLoad | null>;
|
|
37
|
-
export declare function estimateTokenCount(text: string): Promise<number>;
|
|
38
|
-
export declare function allocateTokenBudget(sessionId: string, budget: number): Promise<TokenBudgetStatus>;
|
|
39
|
-
export declare function preloadCandidateMemories(sessionId: string, projectId: string, budget: number, excludeLoadedIds: string[]): Promise<string[]>;
|
|
40
|
-
export declare function getPreloadCandidates(sessionId: string): Promise<MemoryPreview[]>;
|
|
41
|
-
export declare function updateIndexImportance(memoryId: string, importance: number): Promise<void>;
|
|
42
|
-
export declare function deleteLightweightIndex(memoryId: string): Promise<void>;
|
|
43
|
-
//# sourceMappingURL=progressive-disclosure.d.ts.map
|
|
@@ -1,280 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from 'crypto';
|
|
2
|
-
import { eq, desc, and, sql } from 'drizzle-orm';
|
|
3
|
-
import { getDb } from '../../db/index.js';
|
|
4
|
-
import { getSchema } from '../../db/schema.js';
|
|
5
|
-
import { createDatabaseClient } from '../storage/database.js';
|
|
6
|
-
const PREVIEW_TOKENS = 50;
|
|
7
|
-
const MAX_PRELOAD_CANDIDATES = 20;
|
|
8
|
-
const TOKEN_ESTIMATE_CHARS = 4;
|
|
9
|
-
export async function createLightweightIndex(memoryId, content, category, importance) {
|
|
10
|
-
const db = createDatabaseClient(await getDb());
|
|
11
|
-
const schema = await getSchema();
|
|
12
|
-
const contentHash = hashContent(content);
|
|
13
|
-
const contentPreview = extractPreview(content);
|
|
14
|
-
const keyTerms = extractKeyTerms(content);
|
|
15
|
-
const index = {
|
|
16
|
-
id: randomUUID(),
|
|
17
|
-
memoryId,
|
|
18
|
-
contentHash,
|
|
19
|
-
contentPreview,
|
|
20
|
-
keyTerms,
|
|
21
|
-
category,
|
|
22
|
-
importance,
|
|
23
|
-
createdAt: new Date(),
|
|
24
|
-
};
|
|
25
|
-
await db.insert(schema.lightweightMemoryIndices).values({
|
|
26
|
-
id: index.id,
|
|
27
|
-
memoryId: index.memoryId,
|
|
28
|
-
contentHash: index.contentHash,
|
|
29
|
-
contentPreview: index.contentPreview,
|
|
30
|
-
keyTerms: JSON.stringify(index.keyTerms),
|
|
31
|
-
category: index.category,
|
|
32
|
-
importanceScore: index.importance,
|
|
33
|
-
createdAt: index.createdAt,
|
|
34
|
-
});
|
|
35
|
-
return index;
|
|
36
|
-
}
|
|
37
|
-
export async function searchLightweightIndices(projectId, query, limit = 10) {
|
|
38
|
-
const db = createDatabaseClient(await getDb());
|
|
39
|
-
const schema = await getSchema();
|
|
40
|
-
const queryLower = query.toLowerCase();
|
|
41
|
-
const queryTerms = queryLower.split(/\s+/).filter((t) => t.length > 2);
|
|
42
|
-
const results = await db
|
|
43
|
-
.select({
|
|
44
|
-
id: schema.lightweightMemoryIndices.id,
|
|
45
|
-
memoryId: schema.lightweightMemoryIndices.memoryId,
|
|
46
|
-
contentPreview: schema.lightweightMemoryIndices.contentPreview,
|
|
47
|
-
keyTerms: schema.lightweightMemoryIndices.keyTerms,
|
|
48
|
-
category: schema.lightweightMemoryIndices.category,
|
|
49
|
-
importanceScore: schema.lightweightMemoryIndices.importanceScore,
|
|
50
|
-
lastAccessedAt: schema.memories.lastAccessedAt,
|
|
51
|
-
})
|
|
52
|
-
.from(schema.lightweightMemoryIndices)
|
|
53
|
-
.leftJoin(schema.memories, eq(schema.lightweightMemoryIndices.memoryId, schema.memories.id))
|
|
54
|
-
.where(eq(schema.lightweightMemoryIndices.memoryId, schema.memories.id))
|
|
55
|
-
.limit(limit * 2);
|
|
56
|
-
const scored = results.map((row) => {
|
|
57
|
-
let score = row.importanceScore ?? 50;
|
|
58
|
-
const keyTerms = typeof row.keyTerms === 'string'
|
|
59
|
-
? JSON.parse(row.keyTerms)
|
|
60
|
-
: row.keyTerms ?? [];
|
|
61
|
-
const termsLower = keyTerms.map((t) => t.toLowerCase());
|
|
62
|
-
for (const term of queryTerms) {
|
|
63
|
-
if (row.contentPreview.toLowerCase().includes(term)) {
|
|
64
|
-
score += 10;
|
|
65
|
-
}
|
|
66
|
-
if (termsLower.some((t) => t.includes(term))) {
|
|
67
|
-
score += 15;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
return {
|
|
71
|
-
id: row.id,
|
|
72
|
-
memoryId: row.memoryId,
|
|
73
|
-
contentPreview: row.contentPreview,
|
|
74
|
-
keyTerms,
|
|
75
|
-
category: row.category,
|
|
76
|
-
importance: row.importanceScore ?? 50,
|
|
77
|
-
lastAccessedAt: row.lastAccessedAt,
|
|
78
|
-
score,
|
|
79
|
-
};
|
|
80
|
-
});
|
|
81
|
-
scored.sort((a, b) => b.score - a.score);
|
|
82
|
-
return scored.slice(0, limit).map((item) => ({
|
|
83
|
-
id: item.memoryId,
|
|
84
|
-
type: 'preview',
|
|
85
|
-
contentPreview: item.contentPreview,
|
|
86
|
-
keyTerms: item.keyTerms,
|
|
87
|
-
category: item.category,
|
|
88
|
-
importance: item.importance,
|
|
89
|
-
lastAccessedAt: item.lastAccessedAt,
|
|
90
|
-
}));
|
|
91
|
-
}
|
|
92
|
-
export async function loadFullMemory(memoryId) {
|
|
93
|
-
const db = createDatabaseClient(await getDb());
|
|
94
|
-
const schema = await getSchema();
|
|
95
|
-
const rows = await db
|
|
96
|
-
.select()
|
|
97
|
-
.from(schema.memories)
|
|
98
|
-
.where(eq(schema.memories.id, memoryId))
|
|
99
|
-
.limit(1);
|
|
100
|
-
if (rows.length === 0)
|
|
101
|
-
return null;
|
|
102
|
-
const row = rows[0];
|
|
103
|
-
return {
|
|
104
|
-
id: row.id,
|
|
105
|
-
content: row.content,
|
|
106
|
-
summary: row.summary ?? undefined,
|
|
107
|
-
tags: Array.isArray(row.tags) ? row.tags : [],
|
|
108
|
-
metadata: row.metadata ?? undefined,
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
export async function estimateTokenCount(text) {
|
|
112
|
-
return Math.ceil(text.length / TOKEN_ESTIMATE_CHARS);
|
|
113
|
-
}
|
|
114
|
-
export async function allocateTokenBudget(sessionId, budget) {
|
|
115
|
-
const db = createDatabaseClient(await getDb());
|
|
116
|
-
const schema = await getSchema();
|
|
117
|
-
const [session] = await db
|
|
118
|
-
.select()
|
|
119
|
-
.from(schema.contextPagingSessions)
|
|
120
|
-
.where(eq(schema.contextPagingSessions.sessionId, sessionId))
|
|
121
|
-
.limit(1);
|
|
122
|
-
if (!session) {
|
|
123
|
-
return {
|
|
124
|
-
budget,
|
|
125
|
-
used: 0,
|
|
126
|
-
remaining: budget,
|
|
127
|
-
loadedCount: 0,
|
|
128
|
-
preloadCount: 0,
|
|
129
|
-
};
|
|
130
|
-
}
|
|
131
|
-
const tokensUsed = session.tokensUsed ?? 0;
|
|
132
|
-
const loadedCount = session.loadedMemoryIds?.length ?? 0;
|
|
133
|
-
const preloadCount = session.preloadCandidateIds?.length ?? 0;
|
|
134
|
-
return {
|
|
135
|
-
budget,
|
|
136
|
-
used: tokensUsed,
|
|
137
|
-
remaining: Math.max(0, budget - tokensUsed),
|
|
138
|
-
loadedCount,
|
|
139
|
-
preloadCount,
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
export async function preloadCandidateMemories(sessionId, projectId, budget, excludeLoadedIds) {
|
|
143
|
-
const status = await allocateTokenBudget(sessionId, budget);
|
|
144
|
-
const availableTokens = status.remaining;
|
|
145
|
-
if (availableTokens < PREVIEW_TOKENS * 2) {
|
|
146
|
-
return [];
|
|
147
|
-
}
|
|
148
|
-
const db = createDatabaseClient(await getDb());
|
|
149
|
-
const schema = await getSchema();
|
|
150
|
-
const rows = await db
|
|
151
|
-
.select({
|
|
152
|
-
id: schema.memories.id,
|
|
153
|
-
content: schema.memories.content,
|
|
154
|
-
importanceScore: schema.memories.importanceScore,
|
|
155
|
-
lastAccessedAt: schema.memories.lastAccessedAt,
|
|
156
|
-
})
|
|
157
|
-
.from(schema.memories)
|
|
158
|
-
.where(and(eq(schema.memories.projectId, projectId), eq(schema.memories.isActive, true), excludeLoadedIds.length > 0
|
|
159
|
-
? sql `${schema.memories.id} NOT IN (${excludeLoadedIds.map(id => `'${id.replace(/'/g, "''")}'`).join(',')})`
|
|
160
|
-
: sql `TRUE`))
|
|
161
|
-
.orderBy(desc(schema.memories.importanceScore), desc(schema.memories.lastAccessedAt))
|
|
162
|
-
.limit(MAX_PRELOAD_CANDIDATES);
|
|
163
|
-
const candidates = [];
|
|
164
|
-
let tokensForPreload = Math.min(availableTokens - PREVIEW_TOKENS, availableTokens * 0.3);
|
|
165
|
-
for (const row of rows) {
|
|
166
|
-
const tokens = await estimateTokenCount(row.content ?? '');
|
|
167
|
-
if (tokens <= tokensForPreload) {
|
|
168
|
-
candidates.push(row.id);
|
|
169
|
-
tokensForPreload -= tokens;
|
|
170
|
-
}
|
|
171
|
-
if (candidates.length >= 5)
|
|
172
|
-
break;
|
|
173
|
-
}
|
|
174
|
-
await db
|
|
175
|
-
.update(schema.contextPagingSessions)
|
|
176
|
-
.set({
|
|
177
|
-
preloadCandidateIds: candidates,
|
|
178
|
-
updatedAt: new Date(),
|
|
179
|
-
})
|
|
180
|
-
.where(eq(schema.contextPagingSessions.sessionId, sessionId));
|
|
181
|
-
return candidates;
|
|
182
|
-
}
|
|
183
|
-
export async function getPreloadCandidates(sessionId) {
|
|
184
|
-
const db = createDatabaseClient(await getDb());
|
|
185
|
-
const schema = await getSchema();
|
|
186
|
-
const [session] = await db
|
|
187
|
-
.select()
|
|
188
|
-
.from(schema.contextPagingSessions)
|
|
189
|
-
.where(eq(schema.contextPagingSessions.sessionId, sessionId))
|
|
190
|
-
.limit(1);
|
|
191
|
-
if (!session)
|
|
192
|
-
return [];
|
|
193
|
-
const candidateIds = session.preloadCandidateIds ?? [];
|
|
194
|
-
if (candidateIds.length === 0)
|
|
195
|
-
return [];
|
|
196
|
-
const previews = [];
|
|
197
|
-
for (const memoryId of candidateIds.slice(0, 5)) {
|
|
198
|
-
const [index] = await db
|
|
199
|
-
.select()
|
|
200
|
-
.from(schema.lightweightMemoryIndices)
|
|
201
|
-
.where(eq(schema.lightweightMemoryIndices.memoryId, memoryId))
|
|
202
|
-
.limit(1);
|
|
203
|
-
if (index) {
|
|
204
|
-
const keyTerms = typeof index.keyTerms === 'string'
|
|
205
|
-
? JSON.parse(index.keyTerms)
|
|
206
|
-
: index.keyTerms ?? [];
|
|
207
|
-
previews.push({
|
|
208
|
-
id: index.memoryId,
|
|
209
|
-
type: 'preload',
|
|
210
|
-
contentPreview: index.contentPreview,
|
|
211
|
-
keyTerms,
|
|
212
|
-
category: index.category,
|
|
213
|
-
importance: index.importanceScore ?? 50,
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
return previews;
|
|
218
|
-
}
|
|
219
|
-
export async function updateIndexImportance(memoryId, importance) {
|
|
220
|
-
const db = createDatabaseClient(await getDb());
|
|
221
|
-
const schema = await getSchema();
|
|
222
|
-
await db
|
|
223
|
-
.update(schema.lightweightMemoryIndices)
|
|
224
|
-
.set({
|
|
225
|
-
importanceScore: importance,
|
|
226
|
-
})
|
|
227
|
-
.where(eq(schema.lightweightMemoryIndices.memoryId, memoryId));
|
|
228
|
-
}
|
|
229
|
-
export async function deleteLightweightIndex(memoryId) {
|
|
230
|
-
const db = createDatabaseClient(await getDb());
|
|
231
|
-
const schema = await getSchema();
|
|
232
|
-
await db
|
|
233
|
-
.delete(schema.lightweightMemoryIndices)
|
|
234
|
-
.where(eq(schema.lightweightMemoryIndices.memoryId, memoryId));
|
|
235
|
-
}
|
|
236
|
-
function hashContent(content) {
|
|
237
|
-
let hash = 0;
|
|
238
|
-
for (let i = 0; i < content.length; i++) {
|
|
239
|
-
const char = content.charCodeAt(i);
|
|
240
|
-
hash = ((hash << 5) - hash) + char;
|
|
241
|
-
hash = hash & hash;
|
|
242
|
-
}
|
|
243
|
-
return Math.abs(hash).toString(36);
|
|
244
|
-
}
|
|
245
|
-
function extractPreview(content) {
|
|
246
|
-
const firstPeriod = content.indexOf('.');
|
|
247
|
-
const firstNewline = content.indexOf('\n');
|
|
248
|
-
let endIndex = content.length;
|
|
249
|
-
if (firstPeriod > 0 && firstPeriod < 100) {
|
|
250
|
-
endIndex = firstPeriod + 1;
|
|
251
|
-
}
|
|
252
|
-
else if (firstNewline > 0 && firstNewline < 100) {
|
|
253
|
-
endIndex = firstNewline;
|
|
254
|
-
}
|
|
255
|
-
return content.substring(0, Math.min(endIndex, 150)).trim();
|
|
256
|
-
}
|
|
257
|
-
function extractKeyTerms(content) {
|
|
258
|
-
const words = content.toLowerCase()
|
|
259
|
-
.replace(/[^\w\s]/g, ' ')
|
|
260
|
-
.split(/\s+/)
|
|
261
|
-
.filter((w) => w.length > 3);
|
|
262
|
-
const stopWords = new Set([
|
|
263
|
-
'this', 'that', 'with', 'from', 'have', 'been', 'were', 'they',
|
|
264
|
-
'their', 'which', 'about', 'would', 'could', 'should', 'there',
|
|
265
|
-
'what', 'when', 'where', 'who', 'will', 'just', 'like', 'into',
|
|
266
|
-
'than', 'then', 'both', 'each', 'more', 'most', 'other', 'some',
|
|
267
|
-
'such', 'only', 'over', 'very', 'also', 'back', 'after', 'being',
|
|
268
|
-
]);
|
|
269
|
-
const termCounts = {};
|
|
270
|
-
for (const word of words) {
|
|
271
|
-
if (!stopWords.has(word) && !/^\d+$/.test(word)) {
|
|
272
|
-
termCounts[word] = (termCounts[word] ?? 0) + 1;
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
return Object.entries(termCounts)
|
|
276
|
-
.sort((a, b) => b[1] - a[1])
|
|
277
|
-
.slice(0, 5)
|
|
278
|
-
.map(([term]) => term);
|
|
279
|
-
}
|
|
280
|
-
//# sourceMappingURL=progressive-disclosure.js.map
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Query Processor - Phase 4
|
|
3
|
-
* Expands queries for better retrieval coverage
|
|
4
|
-
*/
|
|
5
|
-
export interface ProcessedQuery {
|
|
6
|
-
original: string;
|
|
7
|
-
expanded: string[];
|
|
8
|
-
entities: string[];
|
|
9
|
-
synonyms: Map<string, string[]>;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Simple synonym expansion without LLM calls
|
|
13
|
-
* Fast, deterministic, no API costs
|
|
14
|
-
*/
|
|
15
|
-
export declare function expandQuery(query: string): ProcessedQuery;
|
|
16
|
-
/**
|
|
17
|
-
* Multi-query search combiner
|
|
18
|
-
* Searches with multiple query variants and merges results
|
|
19
|
-
*/
|
|
20
|
-
export declare function multiQuerySearch<T>(queries: string[], searchFn: (query: string) => Promise<T[]>, dedupeKey: (item: T) => string): Promise<T[]>;
|
|
21
|
-
//# sourceMappingURL=query-processor.d.ts.map
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Query Processor - Phase 4
|
|
3
|
-
* Expands queries for better retrieval coverage
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Simple synonym expansion without LLM calls
|
|
7
|
-
* Fast, deterministic, no API costs
|
|
8
|
-
*/
|
|
9
|
-
export function expandQuery(query) {
|
|
10
|
-
const synonyms = new Map();
|
|
11
|
-
// Define common synonym mappings
|
|
12
|
-
const synonymMap = {
|
|
13
|
-
'manager': ['manager', 'boss', 'supervisor', 'lead'],
|
|
14
|
-
'team': ['team', 'group', 'staff', 'crew'],
|
|
15
|
-
'project': ['project', 'initiative', 'endeavor', 'work'],
|
|
16
|
-
'start': ['start', 'begin', 'commence', 'initiate'],
|
|
17
|
-
'budget': ['budget', 'funding', 'cost', 'allocation'],
|
|
18
|
-
'language': ['language', 'tech', 'stack', 'technology'],
|
|
19
|
-
'feature': ['feature', 'capability', 'function', 'aspect'],
|
|
20
|
-
'based': ['based', 'located', 'situated', 'headquartered'],
|
|
21
|
-
};
|
|
22
|
-
const lowerQuery = query.toLowerCase();
|
|
23
|
-
// Find matching synonyms
|
|
24
|
-
for (const [key, values] of Object.entries(synonymMap)) {
|
|
25
|
-
if (lowerQuery.includes(key)) {
|
|
26
|
-
synonyms.set(key, values);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
// Generate expanded queries by substituting synonyms
|
|
30
|
-
const expanded = [query]; // Original
|
|
31
|
-
// Add one variation per synonym found
|
|
32
|
-
for (const [term, variants] of synonyms) {
|
|
33
|
-
for (const variant of variants) {
|
|
34
|
-
if (variant !== term) {
|
|
35
|
-
expanded.push(query.replace(new RegExp(term, 'gi'), variant));
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
// Extract simple entities (capitalized words)
|
|
40
|
-
const entityMatches = query.match(/\b[A-Z][a-z]+\b/g);
|
|
41
|
-
const entities = entityMatches ? [...new Set(entityMatches)] : [];
|
|
42
|
-
return {
|
|
43
|
-
original: query,
|
|
44
|
-
expanded: [...new Set(expanded)], // Deduplicate
|
|
45
|
-
entities,
|
|
46
|
-
synonyms,
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Multi-query search combiner
|
|
51
|
-
* Searches with multiple query variants and merges results
|
|
52
|
-
*/
|
|
53
|
-
export async function multiQuerySearch(queries, searchFn, dedupeKey) {
|
|
54
|
-
const allResults = [];
|
|
55
|
-
// Search with each query variant
|
|
56
|
-
for (const query of queries) {
|
|
57
|
-
const results = await searchFn(query);
|
|
58
|
-
allResults.push(...results);
|
|
59
|
-
}
|
|
60
|
-
// Deduplicate by key
|
|
61
|
-
const seen = new Set();
|
|
62
|
-
const unique = [];
|
|
63
|
-
for (const item of allResults) {
|
|
64
|
-
const key = dedupeKey(item);
|
|
65
|
-
if (!seen.has(key)) {
|
|
66
|
-
seen.add(key);
|
|
67
|
-
unique.push(item);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
return unique;
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=query-processor.js.map
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/** Query Rewriter - Rewrite user queries for better retrieval using LLM */
|
|
2
|
-
import { type ContextMessage } from './context-collector.js';
|
|
3
|
-
export interface RewriteResult {
|
|
4
|
-
original: string;
|
|
5
|
-
rewritten: string;
|
|
6
|
-
expansions: string[];
|
|
7
|
-
intent: 'search' | 'recall' | 'question' | 'context';
|
|
8
|
-
confidence: number;
|
|
9
|
-
method: 'llm' | 'synonym' | 'none';
|
|
10
|
-
}
|
|
11
|
-
export declare function rewriteQuery(query: string, context: ContextMessage[]): Promise<RewriteResult>;
|
|
12
|
-
export declare function wouldBenefitFromRewrite(query: string): boolean;
|
|
13
|
-
//# sourceMappingURL=query-rewriter.d.ts.map
|