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
|
@@ -10,10 +10,6 @@ export declare function chunkMessages(messages: any[], chunkSize: number): any[]
|
|
|
10
10
|
* Get rolling window of messages
|
|
11
11
|
*/
|
|
12
12
|
export declare function getRollingWindow(messages: any[], windowSize: number): any[];
|
|
13
|
-
/**
|
|
14
|
-
* Estimate tokens in text (rough approximation)
|
|
15
|
-
*/
|
|
16
|
-
export declare function estimateTokens(text: string): number;
|
|
17
13
|
/**
|
|
18
14
|
* Calculate tokens saved by summarization
|
|
19
15
|
*/
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Shared Summarization Strategy Utilities
|
|
3
3
|
* Common patterns for different summarization approaches
|
|
4
4
|
*/
|
|
5
|
+
import { estimateTokens } from '../context/context-window.js';
|
|
5
6
|
/**
|
|
6
7
|
* Chunk messages for incremental summarization
|
|
7
8
|
*/
|
|
@@ -21,12 +22,6 @@ export function getRollingWindow(messages, windowSize) {
|
|
|
21
22
|
}
|
|
22
23
|
return messages.slice(-windowSize);
|
|
23
24
|
}
|
|
24
|
-
/**
|
|
25
|
-
* Estimate tokens in text (rough approximation)
|
|
26
|
-
*/
|
|
27
|
-
export function estimateTokens(text) {
|
|
28
|
-
return Math.round(text.length / 4);
|
|
29
|
-
}
|
|
30
25
|
/**
|
|
31
26
|
* Calculate tokens saved by summarization
|
|
32
27
|
*/
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vector Operations Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides mathematical operations for vector computations, primarily focused on
|
|
5
|
+
* cosine similarity calculations for embedding comparisons.
|
|
6
|
+
*
|
|
7
|
+
* All functions handle edge cases gracefully and are optimized for performance.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Calculates the cosine similarity between two vectors.
|
|
11
|
+
*
|
|
12
|
+
* Cosine similarity measures the cosine of the angle between two vectors,
|
|
13
|
+
* providing a normalized measure of similarity that ranges from -1 (opposite)
|
|
14
|
+
* to 1 (identical), with 0 indicating orthogonality (no similarity).
|
|
15
|
+
*
|
|
16
|
+
* The implementation uses the standard formula:
|
|
17
|
+
* cos(θ) = (A · B) / (||A|| * ||B||)
|
|
18
|
+
*
|
|
19
|
+
* Edge case handling:
|
|
20
|
+
* - Returns 0 if either vector is null/undefined
|
|
21
|
+
* - Returns 0 if vectors have different lengths
|
|
22
|
+
* - Returns 0 if either vector has zero magnitude (norm = 0)
|
|
23
|
+
*
|
|
24
|
+
* @param a - First vector as array of numbers
|
|
25
|
+
* @param b - Second vector as array of numbers
|
|
26
|
+
* @returns Cosine similarity value in range [-1, 1], or 0 for invalid inputs
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* const vec1 = [1, 2, 3];
|
|
31
|
+
* const vec2 = [4, 5, 6];
|
|
32
|
+
* const similarity = cosineSimilarity(vec1, vec2); // ~0.974
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* @performance
|
|
36
|
+
* - Time complexity: O(n) where n is vector length
|
|
37
|
+
* - Space complexity: O(1) - uses only accumulator variables
|
|
38
|
+
* - Optimized with single-pass computation of dot product and norms
|
|
39
|
+
*/
|
|
40
|
+
export declare function cosineSimilarity(a: number[] | null | undefined, b: number[] | null | undefined): number;
|
|
41
|
+
/**
|
|
42
|
+
* Calculates the Euclidean distance between two vectors.
|
|
43
|
+
*
|
|
44
|
+
* @param a - First vector
|
|
45
|
+
* @param b - Second vector
|
|
46
|
+
* @returns Euclidean distance, or Infinity if vectors have different lengths
|
|
47
|
+
*/
|
|
48
|
+
export declare function euclideanDistance(a: number[] | null | undefined, b: number[] | null | undefined): number;
|
|
49
|
+
/**
|
|
50
|
+
* Normalizes a vector to unit length (magnitude = 1).
|
|
51
|
+
*
|
|
52
|
+
* @param vec - Input vector
|
|
53
|
+
* @returns Normalized vector, or null if input is null or zero vector
|
|
54
|
+
*/
|
|
55
|
+
export declare function normalizeVector(vec: number[] | null | undefined): number[] | null;
|
|
56
|
+
/**
|
|
57
|
+
* Computes the dot product of two vectors.
|
|
58
|
+
*
|
|
59
|
+
* @param a - First vector
|
|
60
|
+
* @param b - Second vector
|
|
61
|
+
* @returns Dot product, or 0 if vectors are invalid or different lengths
|
|
62
|
+
*/
|
|
63
|
+
export declare function dotProduct(a: number[] | null | undefined, b: number[] | null | undefined): number;
|
|
64
|
+
/**
|
|
65
|
+
* Calculates the magnitude (L2 norm) of a vector.
|
|
66
|
+
*
|
|
67
|
+
* @param vec - Input vector
|
|
68
|
+
* @returns Magnitude of the vector, or 0 if input is null
|
|
69
|
+
*/
|
|
70
|
+
export declare function magnitude(vec: number[] | null | undefined): number;
|
|
71
|
+
//# sourceMappingURL=vector-operations.d.ts.map
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vector Operations Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides mathematical operations for vector computations, primarily focused on
|
|
5
|
+
* cosine similarity calculations for embedding comparisons.
|
|
6
|
+
*
|
|
7
|
+
* All functions handle edge cases gracefully and are optimized for performance.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Calculates the cosine similarity between two vectors.
|
|
11
|
+
*
|
|
12
|
+
* Cosine similarity measures the cosine of the angle between two vectors,
|
|
13
|
+
* providing a normalized measure of similarity that ranges from -1 (opposite)
|
|
14
|
+
* to 1 (identical), with 0 indicating orthogonality (no similarity).
|
|
15
|
+
*
|
|
16
|
+
* The implementation uses the standard formula:
|
|
17
|
+
* cos(θ) = (A · B) / (||A|| * ||B||)
|
|
18
|
+
*
|
|
19
|
+
* Edge case handling:
|
|
20
|
+
* - Returns 0 if either vector is null/undefined
|
|
21
|
+
* - Returns 0 if vectors have different lengths
|
|
22
|
+
* - Returns 0 if either vector has zero magnitude (norm = 0)
|
|
23
|
+
*
|
|
24
|
+
* @param a - First vector as array of numbers
|
|
25
|
+
* @param b - Second vector as array of numbers
|
|
26
|
+
* @returns Cosine similarity value in range [-1, 1], or 0 for invalid inputs
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* const vec1 = [1, 2, 3];
|
|
31
|
+
* const vec2 = [4, 5, 6];
|
|
32
|
+
* const similarity = cosineSimilarity(vec1, vec2); // ~0.974
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* @performance
|
|
36
|
+
* - Time complexity: O(n) where n is vector length
|
|
37
|
+
* - Space complexity: O(1) - uses only accumulator variables
|
|
38
|
+
* - Optimized with single-pass computation of dot product and norms
|
|
39
|
+
*/
|
|
40
|
+
export function cosineSimilarity(a, b) {
|
|
41
|
+
// Guard against null/undefined inputs
|
|
42
|
+
if (!a || !b)
|
|
43
|
+
return 0;
|
|
44
|
+
// Vectors must have same dimensions
|
|
45
|
+
if (a.length !== b.length)
|
|
46
|
+
return 0;
|
|
47
|
+
let dotProduct = 0;
|
|
48
|
+
let normA = 0;
|
|
49
|
+
let normB = 0;
|
|
50
|
+
// Single pass to compute dot product and norms
|
|
51
|
+
for (let i = 0; i < a.length; i++) {
|
|
52
|
+
dotProduct += a[i] * b[i];
|
|
53
|
+
normA += a[i] * a[i];
|
|
54
|
+
normB += b[i] * b[i];
|
|
55
|
+
}
|
|
56
|
+
// Handle zero vectors (avoid division by zero)
|
|
57
|
+
if (normA === 0 || normB === 0)
|
|
58
|
+
return 0;
|
|
59
|
+
return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Calculates the Euclidean distance between two vectors.
|
|
63
|
+
*
|
|
64
|
+
* @param a - First vector
|
|
65
|
+
* @param b - Second vector
|
|
66
|
+
* @returns Euclidean distance, or Infinity if vectors have different lengths
|
|
67
|
+
*/
|
|
68
|
+
export function euclideanDistance(a, b) {
|
|
69
|
+
if (!a || !b)
|
|
70
|
+
return Infinity;
|
|
71
|
+
if (a.length !== b.length)
|
|
72
|
+
return Infinity;
|
|
73
|
+
let sum = 0;
|
|
74
|
+
for (let i = 0; i < a.length; i++) {
|
|
75
|
+
const diff = a[i] - b[i];
|
|
76
|
+
sum += diff * diff;
|
|
77
|
+
}
|
|
78
|
+
return Math.sqrt(sum);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Normalizes a vector to unit length (magnitude = 1).
|
|
82
|
+
*
|
|
83
|
+
* @param vec - Input vector
|
|
84
|
+
* @returns Normalized vector, or null if input is null or zero vector
|
|
85
|
+
*/
|
|
86
|
+
export function normalizeVector(vec) {
|
|
87
|
+
if (!vec)
|
|
88
|
+
return null;
|
|
89
|
+
let norm = 0;
|
|
90
|
+
for (let i = 0; i < vec.length; i++) {
|
|
91
|
+
norm += vec[i] * vec[i];
|
|
92
|
+
}
|
|
93
|
+
if (norm === 0)
|
|
94
|
+
return null;
|
|
95
|
+
const magnitude = Math.sqrt(norm);
|
|
96
|
+
return vec.map(val => val / magnitude);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Computes the dot product of two vectors.
|
|
100
|
+
*
|
|
101
|
+
* @param a - First vector
|
|
102
|
+
* @param b - Second vector
|
|
103
|
+
* @returns Dot product, or 0 if vectors are invalid or different lengths
|
|
104
|
+
*/
|
|
105
|
+
export function dotProduct(a, b) {
|
|
106
|
+
if (!a || !b || a.length !== b.length)
|
|
107
|
+
return 0;
|
|
108
|
+
let result = 0;
|
|
109
|
+
for (let i = 0; i < a.length; i++) {
|
|
110
|
+
result += a[i] * b[i];
|
|
111
|
+
}
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Calculates the magnitude (L2 norm) of a vector.
|
|
116
|
+
*
|
|
117
|
+
* @param vec - Input vector
|
|
118
|
+
* @returns Magnitude of the vector, or 0 if input is null
|
|
119
|
+
*/
|
|
120
|
+
export function magnitude(vec) {
|
|
121
|
+
if (!vec)
|
|
122
|
+
return 0;
|
|
123
|
+
let sum = 0;
|
|
124
|
+
for (let i = 0; i < vec.length; i++) {
|
|
125
|
+
sum += vec[i] * vec[i];
|
|
126
|
+
}
|
|
127
|
+
return Math.sqrt(sum);
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=vector-operations.js.map
|
package/dist/db/adapter.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export declare function createDb(): Promise<(import("drizzle-orm/node-postgres").NodePgDatabase<typeof import("
|
|
1
|
+
export declare function createDb(): Promise<(import("drizzle-orm/node-postgres").NodePgDatabase<typeof import("./drizzle/schema.js")> & {
|
|
2
2
|
$client: import("pg").Pool;
|
|
3
|
-
}) | (import("drizzle-orm/better-sqlite3").BetterSQLite3Database<typeof import("
|
|
3
|
+
}) | (import("drizzle-orm/better-sqlite3").BetterSQLite3Database<typeof import("./drizzle/schema-sqlite.js")> & {
|
|
4
4
|
$client: import("better-sqlite3").Database;
|
|
5
|
-
}) | import("drizzle-orm/sql-js").SQLJsDatabase<typeof import("
|
|
5
|
+
}) | import("drizzle-orm/sql-js").SQLJsDatabase<typeof import("./drizzle/schema-sqlite.js")>>;
|
|
6
6
|
export default createDb;
|
|
7
7
|
//# sourceMappingURL=adapter.d.ts.map
|
package/dist/db/adapter.js
CHANGED
|
@@ -1,10 +1,54 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
1
4
|
import { config, getDataDir } from '../config.js';
|
|
2
5
|
import { ensurePostgresSchema, ensureSqliteSchema } from './bootstrap.js';
|
|
3
6
|
import { logger } from '../core/logger.js';
|
|
7
|
+
const SQL_JS_WASM_RELATIVE_PATH = '../vendor/sql.js/sql-wasm.wasm';
|
|
8
|
+
function isBunRuntime() {
|
|
9
|
+
return typeof globalThis.Bun !== 'undefined';
|
|
10
|
+
}
|
|
11
|
+
function formatInitializationError(label, error) {
|
|
12
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
13
|
+
return `${label}: ${message}`;
|
|
14
|
+
}
|
|
15
|
+
function shouldPersistSql(query) {
|
|
16
|
+
return /^\s*(insert|update|delete|create|alter|drop|replace|pragma|begin|commit|rollback|vacuum|reindex)\b/i.test(query);
|
|
17
|
+
}
|
|
18
|
+
function persistSqlJsDatabase(sqlite, dbPath) {
|
|
19
|
+
fs.mkdirSync(path.dirname(dbPath), { recursive: true });
|
|
20
|
+
fs.writeFileSync(dbPath, Buffer.from(sqlite.export()));
|
|
21
|
+
}
|
|
22
|
+
function resolveSqlJsWasmPath() {
|
|
23
|
+
const currentDir = path.dirname(fileURLToPath(import.meta.url));
|
|
24
|
+
const candidates = [
|
|
25
|
+
path.resolve(currentDir, SQL_JS_WASM_RELATIVE_PATH),
|
|
26
|
+
path.resolve(currentDir, '../../node_modules/sql.js/dist/sql-wasm.wasm'),
|
|
27
|
+
path.resolve(process.cwd(), 'node_modules/sql.js/dist/sql-wasm.wasm'),
|
|
28
|
+
];
|
|
29
|
+
for (const candidate of candidates) {
|
|
30
|
+
if (fs.existsSync(candidate)) {
|
|
31
|
+
return candidate;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
throw new Error(`sql.js wasm asset not found. Looked in: ${candidates.join(', ')}`);
|
|
35
|
+
}
|
|
36
|
+
function wrapSqlJsStatement(stmt, sqlite, dbPath, query) {
|
|
37
|
+
const persistAfterRun = shouldPersistSql(query);
|
|
38
|
+
if (persistAfterRun && typeof stmt.run === 'function') {
|
|
39
|
+
const originalRun = stmt.run.bind(stmt);
|
|
40
|
+
stmt.run = (...args) => {
|
|
41
|
+
const result = originalRun(...args);
|
|
42
|
+
persistSqlJsDatabase(sqlite, dbPath);
|
|
43
|
+
return result;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
return stmt;
|
|
47
|
+
}
|
|
4
48
|
async function createBunSqliteDb(dbPath) {
|
|
5
49
|
// @ts-ignore - bun:sqlite module not found in types but works at runtime
|
|
6
50
|
const { drizzle } = await import('drizzle-orm/bun-sqlite');
|
|
7
|
-
const schemaModule = await import('
|
|
51
|
+
const schemaModule = await import('./drizzle/schema-sqlite.js');
|
|
8
52
|
// Bun SQLite doesn't need file path for in-memory, but we'll use file path for persistence
|
|
9
53
|
// @ts-ignore - bun:sqlite module not found in types but works at runtime
|
|
10
54
|
const sqlite = new (await import('bun:sqlite')).default(dbPath);
|
|
@@ -25,7 +69,7 @@ export async function createDb() {
|
|
|
25
69
|
async function createPostgresDb() {
|
|
26
70
|
const { Pool } = await import('pg');
|
|
27
71
|
const { drizzle } = await import('drizzle-orm/node-postgres');
|
|
28
|
-
const schemaModule = await import('
|
|
72
|
+
const schemaModule = await import('./drizzle/schema.js');
|
|
29
73
|
const pool = new Pool({
|
|
30
74
|
connectionString: process.env.DATABASE_URL,
|
|
31
75
|
max: 20,
|
|
@@ -35,49 +79,46 @@ async function createPostgresDb() {
|
|
|
35
79
|
}
|
|
36
80
|
async function createSqliteDb() {
|
|
37
81
|
const dbPath = `${getDataDir()}/squish.db`;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
return await createBunSqliteDb(dbPath);
|
|
41
|
-
}
|
|
42
|
-
catch (bunSqliteError) {
|
|
43
|
-
logger.warn('bun:sqlite failed, trying better-sqlite3', {
|
|
44
|
-
error: bunSqliteError.message
|
|
45
|
-
});
|
|
46
|
-
// Try better-sqlite3 second (best performance)
|
|
82
|
+
const errors = [];
|
|
83
|
+
if (isBunRuntime()) {
|
|
47
84
|
try {
|
|
48
|
-
return await
|
|
85
|
+
return await createBunSqliteDb(dbPath);
|
|
49
86
|
}
|
|
50
|
-
catch (
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
try {
|
|
56
|
-
return await createSqlJsDb(dbPath);
|
|
57
|
-
}
|
|
58
|
-
catch (sqlJsError) {
|
|
59
|
-
// All failed - this is critical, Squish cannot work without DB
|
|
60
|
-
logger.error('CRITICAL: SQLite database initialization failed', {
|
|
61
|
-
bunSqliteError: bunSqliteError.message,
|
|
62
|
-
betterSqliteError: betterSqliteError.message,
|
|
63
|
-
sqlJsError: sqlJsError.message
|
|
87
|
+
catch (error) {
|
|
88
|
+
errors.push(formatInitializationError('bun:sqlite', error));
|
|
89
|
+
if (process.env.DEBUG === 'true') {
|
|
90
|
+
logger.warn('bun:sqlite failed, trying Node-compatible drivers', {
|
|
91
|
+
error: error instanceof Error ? error.message : String(error),
|
|
64
92
|
});
|
|
65
|
-
throw new Error(`Squish requires SQLite to function. Database initialization failed.\n` +
|
|
66
|
-
`Primary error (bun:sqlite): ${bunSqliteError.message}\n` +
|
|
67
|
-
`Secondary error (better-sqlite3): ${betterSqliteError.message}\n` +
|
|
68
|
-
`Fallback error (sql.js): ${sqlJsError.message}\n\n` +
|
|
69
|
-
`Solutions:\n` +
|
|
70
|
-
`1. Install build tools: npm install -g windows-build-tools (Windows)\n` +
|
|
71
|
-
`2. Or use PostgreSQL instead by setting DATABASE_URL environment variable`);
|
|
72
93
|
}
|
|
73
94
|
}
|
|
74
95
|
}
|
|
96
|
+
try {
|
|
97
|
+
return await createBetterSqliteDb(dbPath);
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
errors.push(formatInitializationError('better-sqlite3', error));
|
|
101
|
+
if (process.env.DEBUG === 'true') {
|
|
102
|
+
logger.warn('better-sqlite3 failed, trying sql.js fallback', {
|
|
103
|
+
error: error instanceof Error ? error.message : String(error),
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
try {
|
|
108
|
+
return await createSqlJsDb(dbPath);
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
errors.push(formatInitializationError('sql.js', error));
|
|
112
|
+
}
|
|
113
|
+
logger.error('CRITICAL: SQLite database initialization failed', { errors });
|
|
114
|
+
throw new Error('Squish requires a working local SQLite driver. Initialization failed.\n' +
|
|
115
|
+
errors.map((entry, index) => `${index + 1}. ${entry}`).join('\n'));
|
|
75
116
|
}
|
|
76
117
|
async function createBetterSqliteDb(dbPath) {
|
|
77
118
|
const DatabaseModule = await import('better-sqlite3');
|
|
78
119
|
const Database = DatabaseModule.default;
|
|
79
120
|
const { drizzle } = await import('drizzle-orm/better-sqlite3');
|
|
80
|
-
const schemaModule = await import('
|
|
121
|
+
const schemaModule = await import('./drizzle/schema-sqlite.js');
|
|
81
122
|
const sqlite = new Database(dbPath);
|
|
82
123
|
// Enable foreign keys
|
|
83
124
|
sqlite.pragma('foreign_keys = ON');
|
|
@@ -89,73 +130,43 @@ async function createSqlJsDb(dbPath) {
|
|
|
89
130
|
// @ts-ignore - sql.js has no types but works fine
|
|
90
131
|
const initSqlJs = await import('sql.js');
|
|
91
132
|
const { drizzle } = await import('drizzle-orm/sql-js');
|
|
92
|
-
const schemaModule = await import('
|
|
93
|
-
const
|
|
94
|
-
const
|
|
95
|
-
|
|
133
|
+
const schemaModule = await import('./drizzle/schema-sqlite.js');
|
|
134
|
+
const wasmPath = resolveSqlJsWasmPath();
|
|
135
|
+
const SQL = await initSqlJs.default({
|
|
136
|
+
locateFile: (file) => (file.endsWith('.wasm') ? wasmPath : file),
|
|
137
|
+
});
|
|
96
138
|
let data;
|
|
97
|
-
// Try to load existing database
|
|
98
139
|
if (fs.existsSync(dbPath)) {
|
|
99
140
|
data = fs.readFileSync(dbPath);
|
|
100
141
|
}
|
|
101
142
|
const sqlite = new SQL.Database(data);
|
|
102
|
-
// Enable foreign keys
|
|
103
143
|
sqlite.exec('PRAGMA foreign_keys = ON');
|
|
104
|
-
// Schema bootstrap
|
|
105
144
|
await ensureSqliteSchema(sqlite);
|
|
106
|
-
|
|
145
|
+
persistSqlJsDatabase(sqlite, dbPath);
|
|
107
146
|
const originalExec = sqlite.exec.bind(sqlite);
|
|
108
|
-
sqlite.exec =
|
|
147
|
+
sqlite.exec = (...args) => {
|
|
148
|
+
const [query] = args;
|
|
109
149
|
const result = originalExec(...args);
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
150
|
+
if (typeof query === 'string' && shouldPersistSql(query)) {
|
|
151
|
+
persistSqlJsDatabase(sqlite, dbPath);
|
|
152
|
+
}
|
|
113
153
|
return result;
|
|
114
154
|
};
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
});
|
|
123
|
-
return preparedStatement;
|
|
124
|
-
};
|
|
125
|
-
preparedStatement.step = () => {
|
|
126
|
-
return stmt.step();
|
|
127
|
-
};
|
|
128
|
-
preparedStatement.getAsObject = () => {
|
|
129
|
-
return stmt.getAsObject();
|
|
130
|
-
};
|
|
131
|
-
preparedStatement.free = () => {
|
|
132
|
-
stmt.free();
|
|
133
|
-
};
|
|
134
|
-
preparedStatement.run = () => {
|
|
135
|
-
const result = stmt.step() ? { changes: sqlite.changes() } : { changes: 0 };
|
|
136
|
-
stmt.reset();
|
|
137
|
-
return result;
|
|
138
|
-
};
|
|
139
|
-
preparedStatement.get = (bindParams = []) => {
|
|
140
|
-
if (bindParams.length > 0) {
|
|
141
|
-
preparedStatement.bind(bindParams);
|
|
155
|
+
if (typeof sqlite.run === 'function') {
|
|
156
|
+
const originalRun = sqlite.run.bind(sqlite);
|
|
157
|
+
sqlite.run = (...args) => {
|
|
158
|
+
const [query] = args;
|
|
159
|
+
const result = originalRun(...args);
|
|
160
|
+
if (typeof query === 'string' && shouldPersistSql(query)) {
|
|
161
|
+
persistSqlJsDatabase(sqlite, dbPath);
|
|
142
162
|
}
|
|
143
|
-
|
|
144
|
-
stmt.reset();
|
|
145
|
-
return row;
|
|
146
|
-
};
|
|
147
|
-
preparedStatement.all = (bindParams = []) => {
|
|
148
|
-
if (bindParams.length > 0) {
|
|
149
|
-
preparedStatement.bind(bindParams);
|
|
150
|
-
}
|
|
151
|
-
const rows = [];
|
|
152
|
-
while (stmt.step()) {
|
|
153
|
-
rows.push(stmt.getAsObject());
|
|
154
|
-
}
|
|
155
|
-
stmt.reset();
|
|
156
|
-
return rows;
|
|
163
|
+
return result;
|
|
157
164
|
};
|
|
158
|
-
|
|
165
|
+
}
|
|
166
|
+
const originalPrepare = sqlite.prepare.bind(sqlite);
|
|
167
|
+
sqlite.prepare = (query, ...args) => {
|
|
168
|
+
const stmt = originalPrepare(query, ...args);
|
|
169
|
+
return wrapSqlJsStatement(stmt, sqlite, dbPath, query);
|
|
159
170
|
};
|
|
160
171
|
logger.info('SQLite initialized with sql.js (pure JavaScript fallback)');
|
|
161
172
|
return drizzle(sqlite, { schema: schemaModule });
|
package/dist/db/bootstrap.d.ts
CHANGED
|
@@ -5,5 +5,7 @@ import type { Pool } from 'pg';
|
|
|
5
5
|
*/
|
|
6
6
|
export declare function ensureDataDirectory(): Promise<void>;
|
|
7
7
|
export declare function ensureSqliteSchema(sqlite: Database): Promise<void>;
|
|
8
|
+
export declare function getSchemaVersion(sqlite: Database): Promise<string | null>;
|
|
9
|
+
export declare function runMigrationsForVersion(sqlite: Database, targetVersion: string): Promise<void>;
|
|
8
10
|
export declare function ensurePostgresSchema(pool: Pool): Promise<void>;
|
|
9
11
|
//# sourceMappingURL=bootstrap.d.ts.map
|