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
package/dist/core/toon.js
DELETED
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TOON Compression - Token-efficient memory format
|
|
3
|
-
*
|
|
4
|
-
* Compact format for memory context using abbreviated notation.
|
|
5
|
-
* Achieves efficient token usage for context injection.
|
|
6
|
-
*
|
|
7
|
-
* Format:
|
|
8
|
-
* {
|
|
9
|
-
* m:[type], // memory type (1-2 chars)
|
|
10
|
-
* c:"...", // content (truncated)
|
|
11
|
-
* t:[], // tags (array)
|
|
12
|
-
* d:123 // days ago
|
|
13
|
-
* }
|
|
14
|
-
*/
|
|
15
|
-
const MAX_CONTENT_LENGTH = 80; // Max chars per content
|
|
16
|
-
const MAX_TAGS = 3; // Max tags to include
|
|
17
|
-
/**
|
|
18
|
-
* Compress a memory to TOON format
|
|
19
|
-
*/
|
|
20
|
-
export function compressForContext(content) {
|
|
21
|
-
// If not JSON or already short, just return
|
|
22
|
-
if (!isJson(content) || content.length <= MAX_CONTENT_LENGTH) {
|
|
23
|
-
return content;
|
|
24
|
-
}
|
|
25
|
-
try {
|
|
26
|
-
const parsed = JSON.parse(content);
|
|
27
|
-
// Build compact TOON object
|
|
28
|
-
const toon = {
|
|
29
|
-
m: parsed.type?.substring(0, 2) || 'ob', // observation -> ob
|
|
30
|
-
};
|
|
31
|
-
// Truncate content
|
|
32
|
-
if (parsed.content) {
|
|
33
|
-
const truncated = parsed.content.substring(0, MAX_CONTENT_LENGTH);
|
|
34
|
-
toon.c = truncated.length < parsed.content.length ? truncated + '..' : truncated;
|
|
35
|
-
}
|
|
36
|
-
// Add tags (limited)
|
|
37
|
-
if (parsed.tags && Array.isArray(parsed.tags)) {
|
|
38
|
-
toon.t = parsed.tags.slice(0, MAX_TAGS);
|
|
39
|
-
}
|
|
40
|
-
// Add days ago if there's a date
|
|
41
|
-
if (parsed.createdAt) {
|
|
42
|
-
const days = Math.floor((Date.now() - new Date(parsed.createdAt).getTime()) / (1000 * 60 * 60 * 24));
|
|
43
|
-
if (days > 0) {
|
|
44
|
-
toon.d = days;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return JSON.stringify(toon);
|
|
48
|
-
}
|
|
49
|
-
catch {
|
|
50
|
-
// Not parseable JSON, return truncated content
|
|
51
|
-
return content.substring(0, MAX_CONTENT_LENGTH);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Decompress TOON back to readable format
|
|
56
|
-
*/
|
|
57
|
-
export function decompressFromContext(toonString) {
|
|
58
|
-
// Check if it's TOON format
|
|
59
|
-
if (!isToon(toonString)) {
|
|
60
|
-
return toonString;
|
|
61
|
-
}
|
|
62
|
-
try {
|
|
63
|
-
const parsed = JSON.parse(toonString);
|
|
64
|
-
// If it has TOON markers, expand it
|
|
65
|
-
if (parsed.m || parsed.c || parsed.t) {
|
|
66
|
-
const typeMap = {
|
|
67
|
-
ob: 'observation',
|
|
68
|
-
su: 'success',
|
|
69
|
-
f: 'failure',
|
|
70
|
-
fx: 'fix',
|
|
71
|
-
i: 'insight',
|
|
72
|
-
};
|
|
73
|
-
const type = typeMap[parsed.m] || 'observation';
|
|
74
|
-
const parts = [`[${type}]`];
|
|
75
|
-
if (parsed.c) {
|
|
76
|
-
parts.push(parsed.c);
|
|
77
|
-
}
|
|
78
|
-
if (parsed.t && parsed.t.length > 0) {
|
|
79
|
-
parts.push(`#${parsed.t.join(' #')}`);
|
|
80
|
-
}
|
|
81
|
-
if (parsed.d) {
|
|
82
|
-
parts.push(`(${parsed.d}d ago)`);
|
|
83
|
-
}
|
|
84
|
-
return parts.join(' ');
|
|
85
|
-
}
|
|
86
|
-
return toonString;
|
|
87
|
-
}
|
|
88
|
-
catch {
|
|
89
|
-
// Not valid TOON, return as-is
|
|
90
|
-
return toonString;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Estimate compression ratio
|
|
95
|
-
*/
|
|
96
|
-
export function estimateCompressionRatio(content) {
|
|
97
|
-
if (!isJson(content) || content.length <= MAX_CONTENT_LENGTH) {
|
|
98
|
-
return 1.0;
|
|
99
|
-
}
|
|
100
|
-
const compressed = compressForContext(content);
|
|
101
|
-
return compressed.length / content.length;
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Check if content is JSON
|
|
105
|
-
*/
|
|
106
|
-
export function isJson(content) {
|
|
107
|
-
try {
|
|
108
|
-
JSON.parse(content);
|
|
109
|
-
return true;
|
|
110
|
-
}
|
|
111
|
-
catch {
|
|
112
|
-
return false;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
/**
|
|
116
|
-
* Check if content is TOON format
|
|
117
|
-
*/
|
|
118
|
-
export function isToon(content) {
|
|
119
|
-
if (!content.startsWith('{') || !content.endsWith('}')) {
|
|
120
|
-
return false;
|
|
121
|
-
}
|
|
122
|
-
try {
|
|
123
|
-
const parsed = JSON.parse(content);
|
|
124
|
-
// Has TOON markers
|
|
125
|
-
return parsed.m !== undefined || parsed.c !== undefined;
|
|
126
|
-
}
|
|
127
|
-
catch {
|
|
128
|
-
return false;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Count tokens (rough estimate)
|
|
133
|
-
*/
|
|
134
|
-
export function estimateTokens(text) {
|
|
135
|
-
return Math.ceil(text.length / 4);
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Truncate to token budget
|
|
139
|
-
*/
|
|
140
|
-
export function truncateToTokenBudget(content, maxTokens) {
|
|
141
|
-
const tokens = estimateTokens(content);
|
|
142
|
-
if (tokens <= maxTokens) {
|
|
143
|
-
return content;
|
|
144
|
-
}
|
|
145
|
-
// Binary search for the right length
|
|
146
|
-
let low = 0;
|
|
147
|
-
let high = content.length;
|
|
148
|
-
while (low < high) {
|
|
149
|
-
const mid = Math.floor((low + high) / 2);
|
|
150
|
-
const estimated = estimateTokens(content.substring(0, mid));
|
|
151
|
-
if (estimated <= maxTokens) {
|
|
152
|
-
low = mid + 1;
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
high = mid;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
return content.substring(0, low) + '...';
|
|
159
|
-
}
|
|
160
|
-
//# sourceMappingURL=toon.js.map
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
/** Trace Collector - Collects search pipeline traces for debugging and performance analysis
|
|
2
|
-
*
|
|
3
|
-
* Trace storage format - All search operations are logged with timing information
|
|
4
|
-
* Trace retrieval - Get traces by session or ID
|
|
5
|
-
*/
|
|
6
|
-
export interface SearchTrace {
|
|
7
|
-
id: string;
|
|
8
|
-
sessionId: string | null;
|
|
9
|
-
query: string;
|
|
10
|
-
timestamp: Date;
|
|
11
|
-
totalDurationMs: number;
|
|
12
|
-
metadata: Record<string, unknown>;
|
|
13
|
-
queryRewrite?: QueryRewriteStage;
|
|
14
|
-
candidateRetrieval?: RetrievalStage;
|
|
15
|
-
entityFiltering?: RetrievalStage;
|
|
16
|
-
hybridScoring?: ScoringStage;
|
|
17
|
-
reranking?: RerankingStage;
|
|
18
|
-
resultCount?: number;
|
|
19
|
-
topResults?: TopResult[];
|
|
20
|
-
}
|
|
21
|
-
export interface QueryRewriteStage {
|
|
22
|
-
original?: string;
|
|
23
|
-
rewritten?: string;
|
|
24
|
-
method?: string;
|
|
25
|
-
timeMs?: number;
|
|
26
|
-
}
|
|
27
|
-
export interface RetrievalStage {
|
|
28
|
-
candidates?: number;
|
|
29
|
-
results?: number;
|
|
30
|
-
timeMs?: number;
|
|
31
|
-
entities?: string[];
|
|
32
|
-
}
|
|
33
|
-
export interface ScoringStage {
|
|
34
|
-
results?: number;
|
|
35
|
-
timeMs?: number;
|
|
36
|
-
}
|
|
37
|
-
export interface RerankingStage {
|
|
38
|
-
results?: number;
|
|
39
|
-
timeMs?: number;
|
|
40
|
-
}
|
|
41
|
-
export interface TopResult {
|
|
42
|
-
type?: string;
|
|
43
|
-
content?: string;
|
|
44
|
-
hybridScore?: number;
|
|
45
|
-
}
|
|
46
|
-
export interface TraceOptions {
|
|
47
|
-
sessionId?: string;
|
|
48
|
-
limit?: number;
|
|
49
|
-
session?: string;
|
|
50
|
-
}
|
|
51
|
-
export interface TraceStats {
|
|
52
|
-
totalTraces: number;
|
|
53
|
-
totalDurationMs: number;
|
|
54
|
-
avgDurationMs: number;
|
|
55
|
-
recentSessions: number;
|
|
56
|
-
totalErrors: number;
|
|
57
|
-
errorRate: number;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Start a new search trace collection
|
|
61
|
-
*/
|
|
62
|
-
export declare function startTrace(sessionId: string, query: string): Promise<string>;
|
|
63
|
-
/**
|
|
64
|
-
* Add query rewrite stage data
|
|
65
|
-
*/
|
|
66
|
-
export declare function addQueryRewriteStage(traceId: string, stage: QueryRewriteStage): Promise<void>;
|
|
67
|
-
/**
|
|
68
|
-
* Add candidate retrieval stage data
|
|
69
|
-
*/
|
|
70
|
-
export declare function addCandidateRetrievalStage(traceId: string, stage: RetrievalStage): Promise<void>;
|
|
71
|
-
/**
|
|
72
|
-
* Add entity filtering stage data
|
|
73
|
-
*/
|
|
74
|
-
export declare function addEntityFilteringStage(traceId: string, stage: RetrievalStage): Promise<void>;
|
|
75
|
-
/**
|
|
76
|
-
* Add hybrid scoring stage data
|
|
77
|
-
*/
|
|
78
|
-
export declare function addHybridScoringStage(traceId: string, stage: ScoringStage): Promise<void>;
|
|
79
|
-
/**
|
|
80
|
-
* Add reranking stage data
|
|
81
|
-
*/
|
|
82
|
-
export declare function addRerankingStage(traceId: string, stage: RerankingStage): Promise<void>;
|
|
83
|
-
/**
|
|
84
|
-
* Complete current trace (all stages done)
|
|
85
|
-
*/
|
|
86
|
-
export declare function completeTrace(traceId: string, results: TopResult[]): Promise<void>;
|
|
87
|
-
/**
|
|
88
|
-
* Get traces for a session
|
|
89
|
-
*/
|
|
90
|
-
export declare function getTraces(options?: TraceOptions): Promise<SearchTrace[]>;
|
|
91
|
-
/**
|
|
92
|
-
* Get a specific trace by ID
|
|
93
|
-
*/
|
|
94
|
-
export declare function getTraceById(traceId: string): Promise<SearchTrace | null>;
|
|
95
|
-
/**
|
|
96
|
-
* Get recent traces (limited)
|
|
97
|
-
*/
|
|
98
|
-
export declare function getRecentTraces(limit?: number): Promise<SearchTrace[]>;
|
|
99
|
-
/**
|
|
100
|
-
* Get recent session summary traces (aggregated by session)
|
|
101
|
-
*/
|
|
102
|
-
export declare function getSessionTraces(sessionId: string): Promise<SearchTrace[]>;
|
|
103
|
-
/**
|
|
104
|
-
* Create visual ASCII visualization of a trace
|
|
105
|
-
*/
|
|
106
|
-
export declare function visualizeTrace(trace: SearchTrace): string;
|
|
107
|
-
/**
|
|
108
|
-
* Get trace statistics (performance metrics)
|
|
109
|
-
*/
|
|
110
|
-
export declare function getTraceStats(): Promise<TraceStats>;
|
|
111
|
-
//# sourceMappingURL=collector.d.ts.map
|
|
@@ -1,350 +0,0 @@
|
|
|
1
|
-
/** Trace Collector - Collects search pipeline traces for debugging and performance analysis
|
|
2
|
-
*
|
|
3
|
-
* Trace storage format - All search operations are logged with timing information
|
|
4
|
-
* Trace retrieval - Get traces by session or ID
|
|
5
|
-
*/
|
|
6
|
-
import { logger } from '../logger.js';
|
|
7
|
-
import { getDb } from '../../db/index.js';
|
|
8
|
-
import { getSchema } from '../../db/schema.js';
|
|
9
|
-
import { eq, desc, sql } from 'drizzle-orm';
|
|
10
|
-
/**
|
|
11
|
-
* Start a new search trace collection
|
|
12
|
-
*/
|
|
13
|
-
export async function startTrace(sessionId, query) {
|
|
14
|
-
const db = await getDb();
|
|
15
|
-
if (!db) {
|
|
16
|
-
logger.error('Database unavailable for trace collection');
|
|
17
|
-
return '';
|
|
18
|
-
}
|
|
19
|
-
const schema = await getSchema();
|
|
20
|
-
const sqliteDb = db;
|
|
21
|
-
const traceId = crypto.randomUUID();
|
|
22
|
-
const timestamp = new Date();
|
|
23
|
-
// Create trace record
|
|
24
|
-
await sqliteDb.insert(schema.searchTraces).values({
|
|
25
|
-
id: traceId,
|
|
26
|
-
sessionId,
|
|
27
|
-
query,
|
|
28
|
-
timestamp,
|
|
29
|
-
resultCount: 0,
|
|
30
|
-
totalDurationMs: 0,
|
|
31
|
-
});
|
|
32
|
-
logger.info(`[Tracing] Started trace ${traceId}`);
|
|
33
|
-
return traceId;
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Add query rewrite stage data
|
|
37
|
-
*/
|
|
38
|
-
export async function addQueryRewriteStage(traceId, stage) {
|
|
39
|
-
const db = await getDb();
|
|
40
|
-
if (!db)
|
|
41
|
-
return;
|
|
42
|
-
const schema = await getSchema();
|
|
43
|
-
const sqliteDb = db;
|
|
44
|
-
const data = JSON.stringify(stage);
|
|
45
|
-
await sqliteDb.update(schema.searchTraces)
|
|
46
|
-
.set({
|
|
47
|
-
queryRewrite: sql `CAST(? AS jsonb)`,
|
|
48
|
-
})
|
|
49
|
-
.where(eq(schema.searchTraces.id, traceId))
|
|
50
|
-
.set({ queryRewrite: data });
|
|
51
|
-
logger.debug(`[Tracing] Added queryRewrite stage to trace ${traceId}`);
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Add candidate retrieval stage data
|
|
55
|
-
*/
|
|
56
|
-
export async function addCandidateRetrievalStage(traceId, stage) {
|
|
57
|
-
const db = await getDb();
|
|
58
|
-
if (!db)
|
|
59
|
-
return;
|
|
60
|
-
const schema = await getSchema();
|
|
61
|
-
const sqliteDb = db;
|
|
62
|
-
const data = JSON.stringify(stage);
|
|
63
|
-
await sqliteDb.update(schema.searchTraces)
|
|
64
|
-
.set({ candidateRetrieval: data })
|
|
65
|
-
.where(eq(schema.searchTraces.id, traceId));
|
|
66
|
-
logger.debug(`[Tracing] Added candidateRetrieval stage to trace ${traceId}`);
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Add entity filtering stage data
|
|
70
|
-
*/
|
|
71
|
-
export async function addEntityFilteringStage(traceId, stage) {
|
|
72
|
-
const db = await getDb();
|
|
73
|
-
if (!db)
|
|
74
|
-
return;
|
|
75
|
-
const schema = await getSchema();
|
|
76
|
-
const sqliteDb = db;
|
|
77
|
-
const data = JSON.stringify(stage);
|
|
78
|
-
await sqliteDb.update(schema.searchTraces)
|
|
79
|
-
.set({ entityFiltering: data })
|
|
80
|
-
.where(eq(schema.searchTraces.id, traceId));
|
|
81
|
-
logger.debug(`[Tracing] Added entityFiltering stage to trace ${traceId}`);
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Add hybrid scoring stage data
|
|
85
|
-
*/
|
|
86
|
-
export async function addHybridScoringStage(traceId, stage) {
|
|
87
|
-
const db = await getDb();
|
|
88
|
-
if (!db)
|
|
89
|
-
return;
|
|
90
|
-
const schema = await getSchema();
|
|
91
|
-
const sqliteDb = db;
|
|
92
|
-
const data = JSON.stringify(stage);
|
|
93
|
-
await sqliteDb.update(schema.searchTraces)
|
|
94
|
-
.set({ hybridScoring: data })
|
|
95
|
-
.where(eq(schema.searchTraces.id, traceId));
|
|
96
|
-
logger.debug(`[Tracing] Added hybridScoring stage to trace ${traceId}`);
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Add reranking stage data
|
|
100
|
-
*/
|
|
101
|
-
export async function addRerankingStage(traceId, stage) {
|
|
102
|
-
const db = await getDb();
|
|
103
|
-
if (!db)
|
|
104
|
-
return;
|
|
105
|
-
const schema = await getSchema();
|
|
106
|
-
const sqliteDb = db;
|
|
107
|
-
const data = JSON.stringify(stage);
|
|
108
|
-
await sqliteDb.update(schema.searchTraces)
|
|
109
|
-
.set({ reranking: data })
|
|
110
|
-
.where(eq(schema.searchTraces.id, traceId));
|
|
111
|
-
logger.debug(`[Tracing] Added reranking stage to trace ${traceId}`);
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Complete current trace (all stages done)
|
|
115
|
-
*/
|
|
116
|
-
export async function completeTrace(traceId, results) {
|
|
117
|
-
const db = await getDb();
|
|
118
|
-
if (!db)
|
|
119
|
-
return;
|
|
120
|
-
const schema = await getSchema();
|
|
121
|
-
const sqliteDb = db;
|
|
122
|
-
// Get trace
|
|
123
|
-
const rows = await sqliteDb.select()
|
|
124
|
-
.from(schema.searchTraces)
|
|
125
|
-
.where(eq(schema.searchTraces.id, traceId))
|
|
126
|
-
.limit(1);
|
|
127
|
-
if (!rows || rows.length === 0) {
|
|
128
|
-
logger.warn(`[Tracing] Trace ${traceId} not found`);
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
const trace = rows[0];
|
|
132
|
-
const startTime = trace.timestamp.getTime();
|
|
133
|
-
const endTime = Date.now();
|
|
134
|
-
const totalDurationMs = endTime - startTime;
|
|
135
|
-
const resultCount = results.length;
|
|
136
|
-
const topResults = results.slice(0, 10);
|
|
137
|
-
await sqliteDb.update(schema.searchTraces)
|
|
138
|
-
.set({
|
|
139
|
-
resultCount,
|
|
140
|
-
topResults: JSON.stringify(topResults),
|
|
141
|
-
totalDurationMs,
|
|
142
|
-
})
|
|
143
|
-
.where(eq(schema.searchTraces.id, traceId));
|
|
144
|
-
logger.info(`[Tracing] Completed trace ${traceId} with ${resultCount} results`);
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Get traces for a session
|
|
148
|
-
*/
|
|
149
|
-
export async function getTraces(options = {}) {
|
|
150
|
-
const db = await getDb();
|
|
151
|
-
if (!db)
|
|
152
|
-
return [];
|
|
153
|
-
const schema = await getSchema();
|
|
154
|
-
const sqliteDb = db;
|
|
155
|
-
let conditions = [];
|
|
156
|
-
if (options.sessionId) {
|
|
157
|
-
conditions.push(eq(schema.searchTraces.sessionId, options.sessionId));
|
|
158
|
-
}
|
|
159
|
-
if (options.session && options.session.length > 0) {
|
|
160
|
-
conditions.push(eq(schema.searchTraces.sessionId, options.session));
|
|
161
|
-
}
|
|
162
|
-
const query = sqliteDb.select()
|
|
163
|
-
.from(schema.searchTraces)
|
|
164
|
-
.where(conditions.length > 0 ? eq(schema.searchTraces.sessionId, options.sessionId || options.session || '') : undefined)
|
|
165
|
-
.orderBy(desc(schema.searchTraces.timestamp));
|
|
166
|
-
if (options.limit) {
|
|
167
|
-
query.limit(options.limit);
|
|
168
|
-
}
|
|
169
|
-
const traces = await query;
|
|
170
|
-
return traces.map((row) => ({
|
|
171
|
-
id: row.id,
|
|
172
|
-
sessionId: row.session_id,
|
|
173
|
-
query: row.query,
|
|
174
|
-
timestamp: row.timestamp,
|
|
175
|
-
totalDurationMs: row.total_duration_ms,
|
|
176
|
-
metadata: row.metadata ? JSON.parse(String(row.metadata)) : {},
|
|
177
|
-
queryRewrite: row.query_rewrite ? JSON.parse(String(row.query_rewrite)) : undefined,
|
|
178
|
-
candidateRetrieval: row.candidate_retrieval ? JSON.parse(String(row.candidate_retrieval)) : undefined,
|
|
179
|
-
entityFiltering: row.entity_filtering ? JSON.parse(String(row.entity_filtering)) : undefined,
|
|
180
|
-
hybridScoring: row.hybrid_scoring ? JSON.parse(String(row.hybrid_scoring)) : undefined,
|
|
181
|
-
reranking: row.reranking ? JSON.parse(String(row.reranking)) : undefined,
|
|
182
|
-
resultCount: row.result_count,
|
|
183
|
-
topResults: row.top_results ? JSON.parse(String(row.top_results)) : undefined,
|
|
184
|
-
}));
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Get a specific trace by ID
|
|
188
|
-
*/
|
|
189
|
-
export async function getTraceById(traceId) {
|
|
190
|
-
const db = await getDb();
|
|
191
|
-
if (!db)
|
|
192
|
-
return null;
|
|
193
|
-
const schema = await getSchema();
|
|
194
|
-
const sqliteDb = db;
|
|
195
|
-
const rows = await sqliteDb.select()
|
|
196
|
-
.from(schema.searchTraces)
|
|
197
|
-
.where(eq(schema.searchTraces.id, traceId))
|
|
198
|
-
.limit(1);
|
|
199
|
-
if (rows.length === 0)
|
|
200
|
-
return null;
|
|
201
|
-
const row = rows[0];
|
|
202
|
-
return {
|
|
203
|
-
id: row.id,
|
|
204
|
-
sessionId: row.session_id,
|
|
205
|
-
query: row.query,
|
|
206
|
-
timestamp: row.timestamp,
|
|
207
|
-
totalDurationMs: row.total_duration_ms,
|
|
208
|
-
metadata: row.metadata ? JSON.parse(String(row.metadata)) : {},
|
|
209
|
-
queryRewrite: row.query_rewrite ? JSON.parse(String(row.query_rewrite)) : undefined,
|
|
210
|
-
candidateRetrieval: row.candidate_retrieval ? JSON.parse(String(row.candidate_retrieval)) : undefined,
|
|
211
|
-
entityFiltering: row.entity_filtering ? JSON.parse(String(row.entity_filtering)) : undefined,
|
|
212
|
-
hybridScoring: row.hybrid_scoring ? JSON.parse(String(row.hybrid_scoring)) : undefined,
|
|
213
|
-
reranking: row.reranking ? JSON.parse(String(row.reranking)) : undefined,
|
|
214
|
-
resultCount: row.result_count,
|
|
215
|
-
topResults: row.top_results ? JSON.parse(String(row.top_results)) : undefined,
|
|
216
|
-
};
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* Get recent traces (limited)
|
|
220
|
-
*/
|
|
221
|
-
export async function getRecentTraces(limit = 10) {
|
|
222
|
-
const db = await getDb();
|
|
223
|
-
if (!db)
|
|
224
|
-
return [];
|
|
225
|
-
const schema = await getSchema();
|
|
226
|
-
const sqliteDb = db;
|
|
227
|
-
const traces = await sqliteDb.select()
|
|
228
|
-
.from(schema.searchTraces)
|
|
229
|
-
.orderBy(desc(schema.searchTraces.timestamp))
|
|
230
|
-
.limit(limit);
|
|
231
|
-
return traces.map((row) => ({
|
|
232
|
-
id: row.id,
|
|
233
|
-
sessionId: row.session_id,
|
|
234
|
-
query: row.query,
|
|
235
|
-
timestamp: row.timestamp,
|
|
236
|
-
totalDurationMs: row.total_duration_ms,
|
|
237
|
-
metadata: row.metadata ? JSON.parse(String(row.metadata)) : {},
|
|
238
|
-
queryRewrite: row.query_rewrite ? JSON.parse(String(row.query_rewrite)) : undefined,
|
|
239
|
-
candidateRetrieval: row.candidate_retrieval ? JSON.parse(String(row.candidate_retrieval)) : undefined,
|
|
240
|
-
entityFiltering: row.entity_filtering ? JSON.parse(String(row.entity_filtering)) : undefined,
|
|
241
|
-
hybridScoring: row.hybrid_scoring ? JSON.parse(String(row.hybrid_scoring)) : undefined,
|
|
242
|
-
reranking: row.reranking ? JSON.parse(String(row.reranking)) : undefined,
|
|
243
|
-
resultCount: row.result_count,
|
|
244
|
-
topResults: row.top_results ? JSON.parse(String(row.top_results)) : undefined,
|
|
245
|
-
}));
|
|
246
|
-
}
|
|
247
|
-
/**
|
|
248
|
-
* Get recent session summary traces (aggregated by session)
|
|
249
|
-
*/
|
|
250
|
-
export async function getSessionTraces(sessionId) {
|
|
251
|
-
const db = await getDb();
|
|
252
|
-
if (!db)
|
|
253
|
-
return [];
|
|
254
|
-
const schema = await getSchema();
|
|
255
|
-
const sqliteDb = db;
|
|
256
|
-
// Get all traces for this session
|
|
257
|
-
const traces = await sqliteDb.select()
|
|
258
|
-
.from(schema.searchTraces)
|
|
259
|
-
.where(eq(schema.searchTraces.sessionId, sessionId))
|
|
260
|
-
.orderBy(desc(schema.searchTraces.timestamp));
|
|
261
|
-
if (traces.length === 0)
|
|
262
|
-
return [];
|
|
263
|
-
return traces.map((row) => ({
|
|
264
|
-
id: row.id,
|
|
265
|
-
sessionId: row.session_id,
|
|
266
|
-
query: row.query,
|
|
267
|
-
timestamp: row.timestamp,
|
|
268
|
-
totalDurationMs: row.total_duration_ms,
|
|
269
|
-
metadata: row.metadata ? JSON.parse(String(row.metadata)) : {},
|
|
270
|
-
queryRewrite: row.query_rewrite ? JSON.parse(String(row.query_rewrite)) : undefined,
|
|
271
|
-
candidateRetrieval: row.candidate_retrieval ? JSON.parse(String(row.candidate_retrieval)) : undefined,
|
|
272
|
-
entityFiltering: row.entity_filtering ? JSON.parse(String(row.entity_filtering)) : undefined,
|
|
273
|
-
hybridScoring: row.hybrid_scoring ? JSON.parse(String(row.hybrid_scoring)) : undefined,
|
|
274
|
-
reranking: row.reranking ? JSON.parse(String(row.reranking)) : undefined,
|
|
275
|
-
resultCount: row.result_count,
|
|
276
|
-
topResults: row.top_results ? JSON.parse(String(row.top_results)) : undefined,
|
|
277
|
-
}));
|
|
278
|
-
}
|
|
279
|
-
/**
|
|
280
|
-
* Create visual ASCII visualization of a trace
|
|
281
|
-
*/
|
|
282
|
-
export function visualizeTrace(trace) {
|
|
283
|
-
const lines = [];
|
|
284
|
-
// Header
|
|
285
|
-
lines.push(`Search Trace: ${trace.id}`);
|
|
286
|
-
lines.push(`Session: ${trace.sessionId || 'N/A'}`);
|
|
287
|
-
lines.push(`Query: "${trace.query}"`);
|
|
288
|
-
lines.push('');
|
|
289
|
-
// Total duration
|
|
290
|
-
lines.push(`Duration: ${trace.totalDurationMs}ms (${(trace.totalDurationMs / 1000).toFixed(2)}s)`);
|
|
291
|
-
lines.push('');
|
|
292
|
-
// Stages summary
|
|
293
|
-
const stageNames = [];
|
|
294
|
-
if (trace.queryRewrite)
|
|
295
|
-
stageNames.push(`Query Rewrite (${trace.queryRewrite.timeMs || 0}ms)`);
|
|
296
|
-
if (trace.candidateRetrieval)
|
|
297
|
-
stageNames.push(`Candidate Retrieval (${trace.candidateRetrieval.timeMs || 0}ms)`);
|
|
298
|
-
if (trace.entityFiltering)
|
|
299
|
-
stageNames.push(`Entity Filtering (${trace.entityFiltering.timeMs || 0}ms)`);
|
|
300
|
-
if (trace.hybridScoring)
|
|
301
|
-
stageNames.push(`Hybrid Scoring (${trace.hybridScoring.timeMs || 0}ms)`);
|
|
302
|
-
if (trace.reranking)
|
|
303
|
-
stageNames.push(`Reranking (${trace.reranking.timeMs || 0}ms)`);
|
|
304
|
-
if (stageNames.length > 0) {
|
|
305
|
-
lines.push('Stages:');
|
|
306
|
-
stageNames.forEach(name => lines.push(` - ${name}`));
|
|
307
|
-
}
|
|
308
|
-
lines.push('');
|
|
309
|
-
// Top results
|
|
310
|
-
if (trace.topResults && trace.topResults.length > 0) {
|
|
311
|
-
lines.push(`Top Results (${trace.topResults.length}):`);
|
|
312
|
-
trace.topResults.slice(0, 5).forEach((result, i) => lines.push(` ${i + 1}. [${result.type || 'memory'}] ${result.content?.substring(0, 50)}... (score: ${result.hybridScore?.toFixed(2)})`));
|
|
313
|
-
}
|
|
314
|
-
return lines.join('\n');
|
|
315
|
-
}
|
|
316
|
-
/**
|
|
317
|
-
* Get trace statistics (performance metrics)
|
|
318
|
-
*/
|
|
319
|
-
export async function getTraceStats() {
|
|
320
|
-
const db = await getDb();
|
|
321
|
-
if (!db) {
|
|
322
|
-
return {
|
|
323
|
-
totalTraces: 0,
|
|
324
|
-
totalDurationMs: 0,
|
|
325
|
-
avgDurationMs: 0,
|
|
326
|
-
recentSessions: 0,
|
|
327
|
-
totalErrors: 0,
|
|
328
|
-
errorRate: 0,
|
|
329
|
-
};
|
|
330
|
-
}
|
|
331
|
-
const schema = await getSchema();
|
|
332
|
-
const sqliteDb = db;
|
|
333
|
-
const traces = await sqliteDb.select()
|
|
334
|
-
.from(schema.searchTraces)
|
|
335
|
-
.limit(100);
|
|
336
|
-
const totalTraces = traces.length;
|
|
337
|
-
const totalDurationMs = traces.reduce((sum, t) => sum + (t.total_duration_ms || 0), 0);
|
|
338
|
-
const avgDurationMs = totalTraces > 0 ? Math.round(totalDurationMs / totalTraces) : 0;
|
|
339
|
-
const uniqueSessions = new Set(traces.map((t) => t.session_id).filter(Boolean));
|
|
340
|
-
const recentSessions = uniqueSessions.size;
|
|
341
|
-
return {
|
|
342
|
-
totalTraces,
|
|
343
|
-
totalDurationMs,
|
|
344
|
-
avgDurationMs,
|
|
345
|
-
recentSessions,
|
|
346
|
-
totalErrors: 0,
|
|
347
|
-
errorRate: 0,
|
|
348
|
-
};
|
|
349
|
-
}
|
|
350
|
-
//# sourceMappingURL=collector.js.map
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/** Trace Visualizer - Creates ASCII visualizations of search traces
|
|
2
|
-
*
|
|
3
|
-
* Provides tree-format output showing search pipeline stages and timing
|
|
4
|
-
*/
|
|
5
|
-
import { SearchTrace } from './collector.js';
|
|
6
|
-
/**
|
|
7
|
-
* Create visual ASCII visualization of a trace
|
|
8
|
-
*/
|
|
9
|
-
export declare function visualizeTrace(trace: SearchTrace): string;
|
|
10
|
-
/**
|
|
11
|
-
* Create compact single-line trace summary
|
|
12
|
-
*/
|
|
13
|
-
export declare function summarizeTrace(trace: SearchTrace): string;
|
|
14
|
-
/**
|
|
15
|
-
* Compare multiple traces
|
|
16
|
-
*/
|
|
17
|
-
export declare function compareTraces(traces: SearchTrace[]): string;
|
|
18
|
-
/**
|
|
19
|
-
* Get stage breakdown table
|
|
20
|
-
*/
|
|
21
|
-
export declare function getStageBreakdown(trace: SearchTrace): string;
|
|
22
|
-
/**
|
|
23
|
-
* Export all visualizer functions
|
|
24
|
-
*/
|
|
25
|
-
declare const _default: {
|
|
26
|
-
visualizeTrace: typeof visualizeTrace;
|
|
27
|
-
summarizeTrace: typeof summarizeTrace;
|
|
28
|
-
compareTraces: typeof compareTraces;
|
|
29
|
-
getStageBreakdown: typeof getStageBreakdown;
|
|
30
|
-
};
|
|
31
|
-
export default _default;
|
|
32
|
-
//# sourceMappingURL=visualizer.d.ts.map
|