causantic 0.2.0 → 0.3.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/README.md +53 -66
- package/config.schema.json +12 -87
- package/dist/cli/commands/archive.d.ts.map +1 -1
- package/dist/cli/commands/archive.js.map +1 -1
- package/dist/cli/commands/benchmark-collection.d.ts.map +1 -1
- package/dist/cli/commands/benchmark-collection.js.map +1 -1
- package/dist/cli/commands/encryption.d.ts.map +1 -1
- package/dist/cli/commands/encryption.js.map +1 -1
- package/dist/cli/commands/hook.d.ts.map +1 -1
- package/dist/cli/commands/hook.js +8 -2
- package/dist/cli/commands/hook.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +39 -32
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/maintenance.d.ts.map +1 -1
- package/dist/cli/commands/maintenance.js +10 -3
- package/dist/cli/commands/maintenance.js.map +1 -1
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/serve.js +3 -3
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/skill-templates.d.ts.map +1 -1
- package/dist/cli/skill-templates.js +223 -153
- package/dist/cli/skill-templates.js.map +1 -1
- package/dist/cli/uninstall.d.ts.map +1 -1
- package/dist/cli/uninstall.js +4 -1
- package/dist/cli/uninstall.js.map +1 -1
- package/dist/clusters/cluster-manager.d.ts +23 -0
- package/dist/clusters/cluster-manager.d.ts.map +1 -1
- package/dist/clusters/cluster-manager.js +69 -2
- package/dist/clusters/cluster-manager.js.map +1 -1
- package/dist/clusters/cluster-refresh.d.ts.map +1 -1
- package/dist/clusters/cluster-refresh.js +5 -1
- package/dist/clusters/cluster-refresh.js.map +1 -1
- package/dist/clusters/hdbscan/cluster-extraction.d.ts.map +1 -1
- package/dist/clusters/hdbscan/cluster-extraction.js +1 -2
- package/dist/clusters/hdbscan/cluster-extraction.js.map +1 -1
- package/dist/clusters/hdbscan/hierarchy.d.ts.map +1 -1
- package/dist/clusters/hdbscan/hierarchy.js +1 -3
- package/dist/clusters/hdbscan/hierarchy.js.map +1 -1
- package/dist/clusters/hdbscan/incremental.d.ts.map +1 -1
- package/dist/clusters/hdbscan/incremental.js.map +1 -1
- package/dist/clusters/hdbscan/probabilities.d.ts +1 -1
- package/dist/clusters/hdbscan/probabilities.d.ts.map +1 -1
- package/dist/clusters/hdbscan/probabilities.js +1 -1
- package/dist/clusters/hdbscan/probabilities.js.map +1 -1
- package/dist/clusters/hdbscan.d.ts.map +1 -1
- package/dist/clusters/hdbscan.js +3 -5
- package/dist/clusters/hdbscan.js.map +1 -1
- package/dist/config/loader.d.ts +10 -15
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +40 -71
- package/dist/config/loader.js.map +1 -1
- package/dist/config/memory-config.d.ts +2 -45
- package/dist/config/memory-config.d.ts.map +1 -1
- package/dist/config/memory-config.js +6 -109
- package/dist/config/memory-config.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/lexical-features.d.ts.map +1 -1
- package/dist/core/lexical-features.js +141 -20
- package/dist/core/lexical-features.js.map +1 -1
- package/dist/dashboard/client/assets/index-DdImwNQ0.css +1 -0
- package/dist/dashboard/client/assets/index-Ofx8zngH.js +166 -0
- package/dist/dashboard/client/index.html +2 -2
- package/dist/dashboard/routes/benchmark-collection.d.ts.map +1 -1
- package/dist/dashboard/routes/benchmark-collection.js +2 -6
- package/dist/dashboard/routes/benchmark-collection.js.map +1 -1
- package/dist/dashboard/routes/chain.d.ts +3 -0
- package/dist/dashboard/routes/chain.d.ts.map +1 -0
- package/dist/dashboard/routes/chain.js +74 -0
- package/dist/dashboard/routes/chain.js.map +1 -0
- package/dist/dashboard/routes/chunks.d.ts.map +1 -1
- package/dist/dashboard/routes/chunks.js +16 -1
- package/dist/dashboard/routes/chunks.js.map +1 -1
- package/dist/dashboard/routes/graph.d.ts.map +1 -1
- package/dist/dashboard/routes/graph.js.map +1 -1
- package/dist/dashboard/routes/search.d.ts.map +1 -1
- package/dist/dashboard/routes/search.js.map +1 -1
- package/dist/dashboard/routes/stats.d.ts.map +1 -1
- package/dist/dashboard/routes/stats.js +8 -6
- package/dist/dashboard/routes/stats.js.map +1 -1
- package/dist/dashboard/routes/timeline.d.ts +3 -0
- package/dist/dashboard/routes/timeline.d.ts.map +1 -0
- package/dist/dashboard/routes/timeline.js +90 -0
- package/dist/dashboard/routes/timeline.js.map +1 -0
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +4 -0
- package/dist/dashboard/server.js.map +1 -1
- package/dist/eval/annotation-schema.d.ts.map +1 -1
- package/dist/eval/annotation-schema.js +2 -5
- package/dist/eval/annotation-schema.js.map +1 -1
- package/dist/eval/benchmark-runner.d.ts.map +1 -1
- package/dist/eval/benchmark-runner.js +2 -2
- package/dist/eval/benchmark-runner.js.map +1 -1
- package/dist/eval/cluster-evaluator.d.ts.map +1 -1
- package/dist/eval/cluster-evaluator.js.map +1 -1
- package/dist/eval/collection-benchmark/chain-quality.d.ts +15 -0
- package/dist/eval/collection-benchmark/chain-quality.d.ts.map +1 -0
- package/dist/eval/collection-benchmark/chain-quality.js +60 -0
- package/dist/eval/collection-benchmark/chain-quality.js.map +1 -0
- package/dist/eval/collection-benchmark/health.d.ts.map +1 -1
- package/dist/eval/collection-benchmark/health.js +2 -2
- package/dist/eval/collection-benchmark/health.js.map +1 -1
- package/dist/eval/collection-benchmark/history.d.ts.map +1 -1
- package/dist/eval/collection-benchmark/history.js +14 -11
- package/dist/eval/collection-benchmark/history.js.map +1 -1
- package/dist/eval/collection-benchmark/latency.d.ts.map +1 -1
- package/dist/eval/collection-benchmark/latency.js +14 -11
- package/dist/eval/collection-benchmark/latency.js.map +1 -1
- package/dist/eval/collection-benchmark/reporter.d.ts.map +1 -1
- package/dist/eval/collection-benchmark/reporter.js +18 -28
- package/dist/eval/collection-benchmark/reporter.js.map +1 -1
- package/dist/eval/collection-benchmark/retrieval.d.ts.map +1 -1
- package/dist/eval/collection-benchmark/retrieval.js +14 -8
- package/dist/eval/collection-benchmark/retrieval.js.map +1 -1
- package/dist/eval/collection-benchmark/runner.d.ts +3 -3
- package/dist/eval/collection-benchmark/runner.d.ts.map +1 -1
- package/dist/eval/collection-benchmark/runner.js +46 -37
- package/dist/eval/collection-benchmark/runner.js.map +1 -1
- package/dist/eval/collection-benchmark/sampler.d.ts.map +1 -1
- package/dist/eval/collection-benchmark/sampler.js +14 -12
- package/dist/eval/collection-benchmark/sampler.js.map +1 -1
- package/dist/eval/collection-benchmark/tuning.d.ts.map +1 -1
- package/dist/eval/collection-benchmark/tuning.js +56 -71
- package/dist/eval/collection-benchmark/tuning.js.map +1 -1
- package/dist/eval/collection-benchmark/types.d.ts +12 -24
- package/dist/eval/collection-benchmark/types.d.ts.map +1 -1
- package/dist/eval/corpus-builder.d.ts.map +1 -1
- package/dist/eval/corpus-builder.js.map +1 -1
- package/dist/eval/experiments/boilerplate-filter.d.ts.map +1 -1
- package/dist/eval/experiments/boilerplate-filter.js.map +1 -1
- package/dist/eval/experiments/cluster-threshold/run-threshold-sweep.d.ts.map +1 -1
- package/dist/eval/experiments/cluster-threshold/run-threshold-sweep.js +3 -5
- package/dist/eval/experiments/cluster-threshold/run-threshold-sweep.js.map +1 -1
- package/dist/eval/experiments/code-focused-mode.d.ts.map +1 -1
- package/dist/eval/experiments/code-focused-mode.js +1 -1
- package/dist/eval/experiments/code-focused-mode.js.map +1 -1
- package/dist/eval/experiments/edge-decay/decay-curves.d.ts +25 -19
- package/dist/eval/experiments/edge-decay/decay-curves.d.ts.map +1 -1
- package/dist/eval/experiments/edge-decay/decay-curves.js +47 -40
- package/dist/eval/experiments/edge-decay/decay-curves.js.map +1 -1
- package/dist/eval/experiments/edge-decay/index.d.ts +6 -4
- package/dist/eval/experiments/edge-decay/index.d.ts.map +1 -1
- package/dist/eval/experiments/edge-decay/index.js +5 -3
- package/dist/eval/experiments/edge-decay/index.js.map +1 -1
- package/dist/eval/experiments/edge-decay/presets.d.ts +14 -4
- package/dist/eval/experiments/edge-decay/presets.d.ts.map +1 -1
- package/dist/eval/experiments/edge-decay/presets.js +73 -68
- package/dist/eval/experiments/edge-decay/presets.js.map +1 -1
- package/dist/eval/experiments/edge-decay/reference-extractor.d.ts +2 -1
- package/dist/eval/experiments/edge-decay/reference-extractor.d.ts.map +1 -1
- package/dist/eval/experiments/edge-decay/reference-extractor.js +26 -40
- package/dist/eval/experiments/edge-decay/reference-extractor.js.map +1 -1
- package/dist/eval/experiments/edge-decay/reference-types.d.ts +24 -17
- package/dist/eval/experiments/edge-decay/reference-types.d.ts.map +1 -1
- package/dist/eval/experiments/edge-decay/reference-types.js +3 -0
- package/dist/eval/experiments/edge-decay/reference-types.js.map +1 -1
- package/dist/eval/experiments/edge-decay/retrieval-ranking.d.ts +8 -8
- package/dist/eval/experiments/edge-decay/retrieval-ranking.d.ts.map +1 -1
- package/dist/eval/experiments/edge-decay/retrieval-ranking.js +77 -133
- package/dist/eval/experiments/edge-decay/retrieval-ranking.js.map +1 -1
- package/dist/eval/experiments/edge-decay/run-experiments.d.ts +7 -3
- package/dist/eval/experiments/edge-decay/run-experiments.d.ts.map +1 -1
- package/dist/eval/experiments/edge-decay/run-experiments.js +71 -52
- package/dist/eval/experiments/edge-decay/run-experiments.js.map +1 -1
- package/dist/eval/experiments/edge-decay/simulate.d.ts +1 -1
- package/dist/eval/experiments/edge-decay/simulate.d.ts.map +1 -1
- package/dist/eval/experiments/edge-decay/simulate.js +7 -19
- package/dist/eval/experiments/edge-decay/simulate.js.map +1 -1
- package/dist/eval/experiments/hdbscan-sweep.d.ts.map +1 -1
- package/dist/eval/experiments/hdbscan-sweep.js +2 -6
- package/dist/eval/experiments/hdbscan-sweep.js.map +1 -1
- package/dist/eval/experiments/single-model-run.d.ts.map +1 -1
- package/dist/eval/experiments/single-model-run.js +2 -2
- package/dist/eval/experiments/single-model-run.js.map +1 -1
- package/dist/eval/experiments/thinking-ablation.d.ts.map +1 -1
- package/dist/eval/experiments/thinking-ablation.js +1 -1
- package/dist/eval/experiments/thinking-ablation.js.map +1 -1
- package/dist/eval/experiments/topic-continuity/hybrid-classifier.d.ts.map +1 -1
- package/dist/eval/experiments/topic-continuity/hybrid-classifier.js +54 -6
- package/dist/eval/experiments/topic-continuity/hybrid-classifier.js.map +1 -1
- package/dist/eval/experiments/topic-continuity/labeler.d.ts.map +1 -1
- package/dist/eval/experiments/topic-continuity/labeler.js +1 -4
- package/dist/eval/experiments/topic-continuity/labeler.js.map +1 -1
- package/dist/eval/experiments/topic-continuity/run-experiment.d.ts.map +1 -1
- package/dist/eval/experiments/topic-continuity/run-experiment.js +5 -13
- package/dist/eval/experiments/topic-continuity/run-experiment.js.map +1 -1
- package/dist/eval/experiments/truncation.d.ts.map +1 -1
- package/dist/eval/experiments/truncation.js.map +1 -1
- package/dist/eval/experiments/types.d.ts.map +1 -1
- package/dist/eval/experiments/types.js.map +1 -1
- package/dist/eval/metrics.d.ts.map +1 -1
- package/dist/eval/metrics.js.map +1 -1
- package/dist/hooks/claudemd-generator.d.ts.map +1 -1
- package/dist/hooks/claudemd-generator.js +3 -4
- package/dist/hooks/claudemd-generator.js.map +1 -1
- package/dist/hooks/hook-utils.d.ts +16 -0
- package/dist/hooks/hook-utils.d.ts.map +1 -1
- package/dist/hooks/hook-utils.js +51 -2
- package/dist/hooks/hook-utils.js.map +1 -1
- package/dist/hooks/index.d.ts +4 -2
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +3 -1
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/pre-compact.d.ts.map +1 -1
- package/dist/hooks/pre-compact.js +6 -51
- package/dist/hooks/pre-compact.js.map +1 -1
- package/dist/hooks/session-end.d.ts +58 -0
- package/dist/hooks/session-end.d.ts.map +1 -0
- package/dist/hooks/session-end.js +82 -0
- package/dist/hooks/session-end.js.map +1 -0
- package/dist/hooks/session-start.d.ts.map +1 -1
- package/dist/hooks/session-start.js +3 -5
- package/dist/hooks/session-start.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/dist/ingest/batch-ingest.d.ts.map +1 -1
- package/dist/ingest/batch-ingest.js.map +1 -1
- package/dist/ingest/brief-debrief-detector.d.ts +6 -13
- package/dist/ingest/brief-debrief-detector.d.ts.map +1 -1
- package/dist/ingest/brief-debrief-detector.js +9 -16
- package/dist/ingest/brief-debrief-detector.js.map +1 -1
- package/dist/ingest/cross-session-linker.d.ts +2 -1
- package/dist/ingest/cross-session-linker.d.ts.map +1 -1
- package/dist/ingest/cross-session-linker.js +17 -7
- package/dist/ingest/cross-session-linker.js.map +1 -1
- package/dist/ingest/edge-creator.d.ts +14 -40
- package/dist/ingest/edge-creator.d.ts.map +1 -1
- package/dist/ingest/edge-creator.js +34 -132
- package/dist/ingest/edge-creator.js.map +1 -1
- package/dist/ingest/edge-detector.d.ts +27 -12
- package/dist/ingest/edge-detector.d.ts.map +1 -1
- package/dist/ingest/edge-detector.js +68 -200
- package/dist/ingest/edge-detector.js.map +1 -1
- package/dist/ingest/index.d.ts +3 -3
- package/dist/ingest/index.d.ts.map +1 -1
- package/dist/ingest/index.js +3 -3
- package/dist/ingest/index.js.map +1 -1
- package/dist/ingest/ingest-session.d.ts +1 -8
- package/dist/ingest/ingest-session.d.ts.map +1 -1
- package/dist/ingest/ingest-session.js +54 -107
- package/dist/ingest/ingest-session.js.map +1 -1
- package/dist/ingest/rebuild-edges.d.ts +17 -0
- package/dist/ingest/rebuild-edges.d.ts.map +1 -0
- package/dist/ingest/rebuild-edges.js +97 -0
- package/dist/ingest/rebuild-edges.js.map +1 -0
- package/dist/maintenance/scheduler.d.ts +2 -3
- package/dist/maintenance/scheduler.d.ts.map +1 -1
- package/dist/maintenance/scheduler.js +14 -23
- package/dist/maintenance/scheduler.js.map +1 -1
- package/dist/maintenance/tasks/cleanup-vectors.d.ts +3 -1
- package/dist/maintenance/tasks/cleanup-vectors.d.ts.map +1 -1
- package/dist/maintenance/tasks/cleanup-vectors.js +6 -4
- package/dist/maintenance/tasks/cleanup-vectors.js.map +1 -1
- package/dist/maintenance/tasks/index.d.ts +0 -1
- package/dist/maintenance/tasks/index.d.ts.map +1 -1
- package/dist/maintenance/tasks/index.js +0 -1
- package/dist/maintenance/tasks/index.js.map +1 -1
- package/dist/mcp/index.d.ts +1 -1
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +1 -1
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +9 -8
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools.d.ts +5 -5
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +42 -36
- package/dist/mcp/tools.js.map +1 -1
- package/dist/models/device-detector.d.ts.map +1 -1
- package/dist/models/device-detector.js +20 -10
- package/dist/models/device-detector.js.map +1 -1
- package/dist/models/embedder.d.ts.map +1 -1
- package/dist/models/embedder.js +5 -2
- package/dist/models/embedder.js.map +1 -1
- package/dist/models/model-registry.d.ts.map +1 -1
- package/dist/models/model-registry.js.map +1 -1
- package/dist/parser/chunker.d.ts +5 -40
- package/dist/parser/chunker.d.ts.map +1 -1
- package/dist/parser/chunker.js +5 -111
- package/dist/parser/chunker.js.map +1 -1
- package/dist/parser/session-reader.d.ts.map +1 -1
- package/dist/parser/session-reader.js +3 -6
- package/dist/parser/session-reader.js.map +1 -1
- package/dist/parser/turn-assembler.d.ts.map +1 -1
- package/dist/parser/turn-assembler.js +0 -1
- package/dist/parser/turn-assembler.js.map +1 -1
- package/dist/parser/types.d.ts.map +1 -1
- package/dist/report/reporter.d.ts.map +1 -1
- package/dist/report/reporter.js +1 -3
- package/dist/report/reporter.js.map +1 -1
- package/dist/retrieval/chain-assembler.d.ts +58 -0
- package/dist/retrieval/chain-assembler.d.ts.map +1 -0
- package/dist/retrieval/chain-assembler.js +126 -0
- package/dist/retrieval/chain-assembler.js.map +1 -0
- package/dist/retrieval/chain-walker.d.ts +57 -0
- package/dist/retrieval/chain-walker.d.ts.map +1 -0
- package/dist/retrieval/chain-walker.js +121 -0
- package/dist/retrieval/chain-walker.js.map +1 -0
- package/dist/retrieval/cluster-expander.d.ts.map +1 -1
- package/dist/retrieval/cluster-expander.js +3 -3
- package/dist/retrieval/cluster-expander.js.map +1 -1
- package/dist/retrieval/context-assembler.d.ts +13 -36
- package/dist/retrieval/context-assembler.d.ts.map +1 -1
- package/dist/retrieval/context-assembler.js +50 -287
- package/dist/retrieval/context-assembler.js.map +1 -1
- package/dist/retrieval/index.d.ts +8 -4
- package/dist/retrieval/index.d.ts.map +1 -1
- package/dist/retrieval/index.js +7 -3
- package/dist/retrieval/index.js.map +1 -1
- package/dist/retrieval/rrf.d.ts.map +1 -1
- package/dist/retrieval/rrf.js +4 -2
- package/dist/retrieval/rrf.js.map +1 -1
- package/dist/retrieval/search-assembler.d.ts +59 -0
- package/dist/retrieval/search-assembler.d.ts.map +1 -0
- package/dist/retrieval/search-assembler.js +209 -0
- package/dist/retrieval/search-assembler.js.map +1 -0
- package/dist/retrieval/session-reconstructor.d.ts.map +1 -1
- package/dist/retrieval/session-reconstructor.js +9 -7
- package/dist/retrieval/session-reconstructor.js.map +1 -1
- package/dist/storage/archive.d.ts +0 -2
- package/dist/storage/archive.d.ts.map +1 -1
- package/dist/storage/archive.js +18 -12
- package/dist/storage/archive.js.map +1 -1
- package/dist/storage/checkpoint-store.d.ts +0 -1
- package/dist/storage/checkpoint-store.d.ts.map +1 -1
- package/dist/storage/checkpoint-store.js +5 -7
- package/dist/storage/checkpoint-store.js.map +1 -1
- package/dist/storage/chunk-store.d.ts.map +1 -1
- package/dist/storage/chunk-store.js +15 -17
- package/dist/storage/chunk-store.js.map +1 -1
- package/dist/storage/cluster-store.d.ts.map +1 -1
- package/dist/storage/cluster-store.js.map +1 -1
- package/dist/storage/db.d.ts.map +1 -1
- package/dist/storage/db.js.map +1 -1
- package/dist/storage/edge-store.d.ts +17 -30
- package/dist/storage/edge-store.d.ts.map +1 -1
- package/dist/storage/edge-store.js +43 -123
- package/dist/storage/edge-store.js.map +1 -1
- package/dist/storage/embedding-cache.d.ts.map +1 -1
- package/dist/storage/embedding-cache.js +1 -3
- package/dist/storage/embedding-cache.js.map +1 -1
- package/dist/storage/encryption.d.ts.map +1 -1
- package/dist/storage/encryption.js +4 -15
- package/dist/storage/encryption.js.map +1 -1
- package/dist/storage/index.d.ts +1 -4
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +1 -5
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/keyword-store.d.ts.map +1 -1
- package/dist/storage/keyword-store.js +11 -7
- package/dist/storage/keyword-store.js.map +1 -1
- package/dist/storage/migrations.d.ts.map +1 -1
- package/dist/storage/migrations.js +56 -4
- package/dist/storage/migrations.js.map +1 -1
- package/dist/storage/schema.sql +8 -20
- package/dist/storage/types.d.ts +12 -26
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/types.js +1 -2
- package/dist/storage/types.js.map +1 -1
- package/dist/storage/vector-store.d.ts +9 -15
- package/dist/storage/vector-store.d.ts.map +1 -1
- package/dist/storage/vector-store.js +64 -43
- package/dist/storage/vector-store.js.map +1 -1
- package/dist/utils/angular-distance.d.ts.map +1 -1
- package/dist/utils/angular-distance.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/secret-store.d.ts.map +1 -1
- package/dist/utils/secret-store.js +17 -13
- package/dist/utils/secret-store.js.map +1 -1
- package/dist/utils/secure-buffer.d.ts.map +1 -1
- package/dist/utils/secure-buffer.js.map +1 -1
- package/package.json +7 -6
- package/src/dashboard/client/package-lock.json +3 -3
- package/src/dashboard/client/package.json +3 -3
- package/dist/dashboard/client/assets/index-CMUKy4f9.css +0 -1
- package/dist/dashboard/client/assets/index-esv8TpCN.js +0 -168
- package/dist/eval/collection-benchmark/graph-value.d.ts +0 -16
- package/dist/eval/collection-benchmark/graph-value.d.ts.map +0 -1
- package/dist/eval/collection-benchmark/graph-value.js +0 -162
- package/dist/eval/collection-benchmark/graph-value.js.map +0 -1
- package/dist/eval/experiments/vector-decay-shapes/curve-shapes-experiment.d.ts +0 -10
- package/dist/eval/experiments/vector-decay-shapes/curve-shapes-experiment.d.ts.map +0 -1
- package/dist/eval/experiments/vector-decay-shapes/curve-shapes-experiment.js +0 -229
- package/dist/eval/experiments/vector-decay-shapes/curve-shapes-experiment.js.map +0 -1
- package/dist/eval/experiments/vector-decay-shapes/graph-range-experiment.d.ts +0 -12
- package/dist/eval/experiments/vector-decay-shapes/graph-range-experiment.d.ts.map +0 -1
- package/dist/eval/experiments/vector-decay-shapes/graph-range-experiment.js +0 -316
- package/dist/eval/experiments/vector-decay-shapes/graph-range-experiment.js.map +0 -1
- package/dist/eval/experiments/vector-decay-shapes/hop-decay.d.ts +0 -19
- package/dist/eval/experiments/vector-decay-shapes/hop-decay.d.ts.map +0 -1
- package/dist/eval/experiments/vector-decay-shapes/hop-decay.js +0 -127
- package/dist/eval/experiments/vector-decay-shapes/hop-decay.js.map +0 -1
- package/dist/eval/experiments/vector-decay-shapes/index.d.ts +0 -11
- package/dist/eval/experiments/vector-decay-shapes/index.d.ts.map +0 -1
- package/dist/eval/experiments/vector-decay-shapes/index.js +0 -11
- package/dist/eval/experiments/vector-decay-shapes/index.js.map +0 -1
- package/dist/eval/experiments/vector-decay-shapes/path-traversal-experiment.d.ts +0 -14
- package/dist/eval/experiments/vector-decay-shapes/path-traversal-experiment.d.ts.map +0 -1
- package/dist/eval/experiments/vector-decay-shapes/path-traversal-experiment.js +0 -274
- package/dist/eval/experiments/vector-decay-shapes/path-traversal-experiment.js.map +0 -1
- package/dist/eval/experiments/vector-decay-shapes/presets.d.ts +0 -36
- package/dist/eval/experiments/vector-decay-shapes/presets.d.ts.map +0 -1
- package/dist/eval/experiments/vector-decay-shapes/presets.js +0 -157
- package/dist/eval/experiments/vector-decay-shapes/presets.js.map +0 -1
- package/dist/eval/experiments/vector-decay-shapes/run-experiment.d.ts +0 -20
- package/dist/eval/experiments/vector-decay-shapes/run-experiment.d.ts.map +0 -1
- package/dist/eval/experiments/vector-decay-shapes/run-experiment.js +0 -504
- package/dist/eval/experiments/vector-decay-shapes/run-experiment.js.map +0 -1
- package/dist/eval/experiments/vector-decay-shapes/types.d.ts +0 -111
- package/dist/eval/experiments/vector-decay-shapes/types.d.ts.map +0 -1
- package/dist/eval/experiments/vector-decay-shapes/types.js +0 -15
- package/dist/eval/experiments/vector-decay-shapes/types.js.map +0 -1
- package/dist/eval/experiments/vector-decay-sweep/index.d.ts +0 -7
- package/dist/eval/experiments/vector-decay-sweep/index.d.ts.map +0 -1
- package/dist/eval/experiments/vector-decay-sweep/index.js +0 -7
- package/dist/eval/experiments/vector-decay-sweep/index.js.map +0 -1
- package/dist/eval/experiments/vector-decay-sweep/run-sweep.d.ts +0 -30
- package/dist/eval/experiments/vector-decay-sweep/run-sweep.d.ts.map +0 -1
- package/dist/eval/experiments/vector-decay-sweep/run-sweep.js +0 -378
- package/dist/eval/experiments/vector-decay-sweep/run-sweep.js.map +0 -1
- package/dist/eval/experiments/vector-decay-sweep/types.d.ts +0 -109
- package/dist/eval/experiments/vector-decay-sweep/types.d.ts.map +0 -1
- package/dist/eval/experiments/vector-decay-sweep/types.js +0 -16
- package/dist/eval/experiments/vector-decay-sweep/types.js.map +0 -1
- package/dist/maintenance/tasks/prune-graph.d.ts +0 -12
- package/dist/maintenance/tasks/prune-graph.d.ts.map +0 -1
- package/dist/maintenance/tasks/prune-graph.js +0 -23
- package/dist/maintenance/tasks/prune-graph.js.map +0 -1
- package/dist/retrieval/traverser.d.ts +0 -66
- package/dist/retrieval/traverser.d.ts.map +0 -1
- package/dist/retrieval/traverser.js +0 -160
- package/dist/retrieval/traverser.js.map +0 -1
- package/dist/storage/clock-store.d.ts +0 -80
- package/dist/storage/clock-store.d.ts.map +0 -1
- package/dist/storage/clock-store.js +0 -155
- package/dist/storage/clock-store.js.map +0 -1
- package/dist/storage/decay.d.ts +0 -125
- package/dist/storage/decay.d.ts.map +0 -1
- package/dist/storage/decay.js +0 -276
- package/dist/storage/decay.js.map +0 -1
- package/dist/storage/pruner.d.ts +0 -111
- package/dist/storage/pruner.d.ts.map +0 -1
- package/dist/storage/pruner.js +0 -280
- package/dist/storage/pruner.js.map +0 -1
- package/dist/temporal/clock-compactor.d.ts +0 -65
- package/dist/temporal/clock-compactor.d.ts.map +0 -1
- package/dist/temporal/clock-compactor.js +0 -157
- package/dist/temporal/clock-compactor.js.map +0 -1
- package/dist/temporal/index.d.ts +0 -6
- package/dist/temporal/index.d.ts.map +0 -1
- package/dist/temporal/index.js +0 -6
- package/dist/temporal/index.js.map +0 -1
- package/dist/temporal/vector-clock.d.ts +0 -143
- package/dist/temporal/vector-clock.d.ts.map +0 -1
- package/dist/temporal/vector-clock.js +0 -231
- package/dist/temporal/vector-clock.js.map +0 -1
- package/dist/utils/keychain.d.ts +0 -43
- package/dist/utils/keychain.d.ts.map +0 -1
- package/dist/utils/keychain.js +0 -82
- package/dist/utils/keychain.js.map +0 -1
|
@@ -1,313 +1,76 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Context assembly for memory retrieval.
|
|
3
|
-
*
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import { getModel } from '../models/model-registry.js';
|
|
9
|
-
import { getConfig } from '../config/memory-config.js';
|
|
10
|
-
import { approximateTokens } from '../utils/token-counter.js';
|
|
11
|
-
import { traverseMultiple, dedupeAndRank } from './traverser.js';
|
|
12
|
-
import { getReferenceClock } from '../storage/clock-store.js';
|
|
13
|
-
import { KeywordStore } from '../storage/keyword-store.js';
|
|
14
|
-
import { fuseRRF } from './rrf.js';
|
|
15
|
-
import { expandViaClusters } from './cluster-expander.js';
|
|
16
|
-
import { createLogger } from '../utils/logger.js';
|
|
17
|
-
const log = createLogger('context-assembler');
|
|
18
|
-
/**
|
|
19
|
-
* Shared embedder instance for retrieval.
|
|
20
|
-
*/
|
|
21
|
-
let sharedEmbedder = null;
|
|
22
|
-
/**
|
|
23
|
-
* Get or create shared embedder.
|
|
24
|
-
*/
|
|
25
|
-
async function getEmbedder() {
|
|
26
|
-
if (!sharedEmbedder) {
|
|
27
|
-
sharedEmbedder = new Embedder();
|
|
28
|
-
await sharedEmbedder.load(getModel('jina-small'));
|
|
29
|
-
}
|
|
30
|
-
return sharedEmbedder;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Shared keyword store instance for retrieval.
|
|
34
|
-
*/
|
|
35
|
-
let sharedKeywordStore = null;
|
|
36
|
-
/**
|
|
37
|
-
* Get or create shared keyword store.
|
|
3
|
+
*
|
|
4
|
+
* Delegates to specialized modules:
|
|
5
|
+
* - searchContext() for pure semantic search (no graph)
|
|
6
|
+
* - recallContext() for episodic recall (backward chain walking)
|
|
7
|
+
* - predictContext() for episodic prediction (forward chain walking)
|
|
38
8
|
*/
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
sharedKeywordStore = new KeywordStore();
|
|
42
|
-
}
|
|
43
|
-
return sharedKeywordStore;
|
|
44
|
-
}
|
|
9
|
+
import { searchContext, disposeSearch } from './search-assembler.js';
|
|
10
|
+
import { recallContext, predictContext } from './chain-assembler.js';
|
|
45
11
|
/**
|
|
46
12
|
* Assemble context from memory based on a query.
|
|
47
|
-
*
|
|
48
|
-
* Pipeline: embed → [vector search, keyword search] → RRF fusion → cluster expansion
|
|
49
|
-
* → graph traverse → combine → dedupe → recency → budget
|
|
13
|
+
* Delegates to searchContext (pure search, no graph).
|
|
50
14
|
*/
|
|
51
15
|
export async function assembleContext(request) {
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const referenceClock = effectiveProjectSlug ? getReferenceClock(effectiveProjectSlug) : undefined;
|
|
61
|
-
// 1. Embed query
|
|
62
|
-
const embedder = await getEmbedder();
|
|
63
|
-
const queryResult = await embedder.embed(query, true); // isQuery = true
|
|
64
|
-
// 2. Run vector search and keyword search in parallel
|
|
65
|
-
const vectorSearchPromise = projectFilter
|
|
66
|
-
? vectorStore.searchByProject(queryResult.embedding, projectFilter, vectorSearchLimit)
|
|
67
|
-
: vectorStore.search(queryResult.embedding, vectorSearchLimit);
|
|
68
|
-
let keywordResults = [];
|
|
69
|
-
try {
|
|
70
|
-
const keywordStore = getKeywordStore();
|
|
71
|
-
keywordResults = projectFilter
|
|
72
|
-
? keywordStore.searchByProject(query, projectFilter, hybridSearch.keywordSearchLimit)
|
|
73
|
-
: keywordStore.search(query, hybridSearch.keywordSearchLimit);
|
|
74
|
-
}
|
|
75
|
-
catch (error) {
|
|
76
|
-
// Graceful fallback: keyword search unavailable (FTS5 missing, table corrupted, etc.)
|
|
77
|
-
log.warn('Keyword search unavailable, falling back to vector-only', {
|
|
78
|
-
error: error.message,
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
const similar = await vectorSearchPromise;
|
|
82
|
-
if (similar.length === 0 && keywordResults.length === 0) {
|
|
83
|
-
return {
|
|
84
|
-
text: '',
|
|
85
|
-
tokenCount: 0,
|
|
86
|
-
chunks: [],
|
|
87
|
-
totalConsidered: 0,
|
|
88
|
-
durationMs: Date.now() - startTime,
|
|
89
|
-
graphBoosted: 0,
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
// 3. Convert to RankedItem format and fuse with RRF
|
|
93
|
-
const vectorItems = similar.map(s => ({
|
|
94
|
-
chunkId: s.id,
|
|
95
|
-
score: Math.max(0, 1 - s.distance),
|
|
96
|
-
source: 'vector',
|
|
97
|
-
}));
|
|
98
|
-
const keywordItems = keywordResults.map(r => ({
|
|
99
|
-
chunkId: r.id,
|
|
100
|
-
score: r.score,
|
|
101
|
-
source: 'keyword',
|
|
102
|
-
}));
|
|
103
|
-
const fusedResults = fuseRRF([
|
|
104
|
-
{ items: vectorItems, weight: hybridSearch.vectorWeight },
|
|
105
|
-
...(keywordItems.length > 0
|
|
106
|
-
? [{ items: keywordItems, weight: hybridSearch.keywordWeight }]
|
|
107
|
-
: []),
|
|
108
|
-
], hybridSearch.rrfK);
|
|
109
|
-
// 4. Cluster expansion (skip if requested for benchmarking)
|
|
110
|
-
const expandedResults = skipClusters
|
|
111
|
-
? fusedResults
|
|
112
|
-
: expandViaClusters(fusedResults, clusterExpansion, projectFilter);
|
|
113
|
-
const sourceMap = new Map();
|
|
114
|
-
for (const item of expandedResults) {
|
|
115
|
-
if (item.source && !sourceMap.has(item.chunkId)) {
|
|
116
|
-
sourceMap.set(item.chunkId, item.source);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
// 5. Determine traversal direction and decay model based on mode and range
|
|
120
|
-
const direction = mode === 'predict' ? 'forward' : 'backward';
|
|
121
|
-
let decayConfig;
|
|
122
|
-
if (direction === 'forward') {
|
|
123
|
-
decayConfig = config.forwardDecay;
|
|
124
|
-
}
|
|
125
|
-
else if (range === 'short') {
|
|
126
|
-
decayConfig = config.shortRangeDecay;
|
|
127
|
-
}
|
|
128
|
-
else if (range === 'long') {
|
|
129
|
-
decayConfig = config.longRangeDecay;
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
decayConfig = mode === 'explain' ? config.longRangeDecay : config.shortRangeDecay;
|
|
133
|
-
}
|
|
134
|
-
// 6. Traverse graph from fused+expanded seeds (skip if requested for benchmarking)
|
|
135
|
-
let traversalResult;
|
|
136
|
-
if (skipGraph) {
|
|
137
|
-
traversalResult = { chunks: [], visited: 0 };
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
const startIds = expandedResults.map(r => r.chunkId);
|
|
141
|
-
const startWeights = expandedResults.map(r => r.score);
|
|
142
|
-
traversalResult = await traverseMultiple(startIds, startWeights, queryTime, {
|
|
143
|
-
direction,
|
|
144
|
-
decayConfig,
|
|
145
|
-
referenceClock,
|
|
146
|
-
});
|
|
147
|
-
// Tag traversal results with 'graph' source
|
|
148
|
-
for (const tc of traversalResult.chunks) {
|
|
149
|
-
if (!sourceMap.has(tc.chunkId)) {
|
|
150
|
-
sourceMap.set(tc.chunkId, 'graph');
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
// 7. Combine direct hits with traversal, boosting intersection
|
|
155
|
-
const allChunks = [];
|
|
156
|
-
let graphBoostedCount = 0;
|
|
157
|
-
// Build graph traversal lookup
|
|
158
|
-
const graphChunkMap = new Map();
|
|
159
|
-
for (const tc of traversalResult.chunks) {
|
|
160
|
-
graphChunkMap.set(tc.chunkId, tc);
|
|
161
|
-
}
|
|
162
|
-
// Direct hits: boost if also found via graph traversal
|
|
163
|
-
const directChunkIds = new Set();
|
|
164
|
-
for (const item of expandedResults) {
|
|
165
|
-
directChunkIds.add(item.chunkId);
|
|
166
|
-
let weight = item.score * config.directHitBoost;
|
|
167
|
-
const graphEntry = graphChunkMap.get(item.chunkId);
|
|
168
|
-
if (graphEntry) {
|
|
169
|
-
weight += graphEntry.weight * config.graphAgreementBoost;
|
|
170
|
-
graphBoostedCount++;
|
|
171
|
-
}
|
|
172
|
-
allChunks.push({ chunkId: item.chunkId, weight, depth: 0 });
|
|
173
|
-
}
|
|
174
|
-
// Graph-only results: add unchanged
|
|
175
|
-
for (const tc of traversalResult.chunks) {
|
|
176
|
-
if (!directChunkIds.has(tc.chunkId)) {
|
|
177
|
-
allChunks.push(tc);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
// 8. Dedupe and rank
|
|
181
|
-
const ranked = dedupeAndRank(allChunks);
|
|
182
|
-
// 9. Apply recency boost for current session
|
|
183
|
-
if (currentSessionId) {
|
|
184
|
-
for (const wc of ranked) {
|
|
185
|
-
const chunk = getChunkById(wc.chunkId);
|
|
186
|
-
if (chunk && chunk.sessionId === currentSessionId) {
|
|
187
|
-
wc.weight *= 1.2; // 20% boost for current session
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
ranked.sort((a, b) => b.weight - a.weight);
|
|
191
|
-
}
|
|
192
|
-
// 10. Assemble within token budget
|
|
193
|
-
const assembled = assembleWithinBudget(ranked, maxTokens, sourceMap);
|
|
194
|
-
return {
|
|
195
|
-
text: assembled.text,
|
|
196
|
-
tokenCount: assembled.tokenCount,
|
|
197
|
-
chunks: assembled.includedChunks,
|
|
198
|
-
totalConsidered: ranked.length,
|
|
199
|
-
durationMs: Date.now() - startTime,
|
|
200
|
-
graphBoosted: graphBoostedCount,
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Assemble text within token budget.
|
|
205
|
-
*/
|
|
206
|
-
function assembleWithinBudget(ranked, maxTokens, sourceMap) {
|
|
207
|
-
const parts = [];
|
|
208
|
-
const includedChunks = [];
|
|
209
|
-
let totalTokens = 0;
|
|
210
|
-
for (const wc of ranked) {
|
|
211
|
-
const chunk = getChunkById(wc.chunkId);
|
|
212
|
-
if (!chunk)
|
|
213
|
-
continue;
|
|
214
|
-
const chunkTokens = chunk.approxTokens || approximateTokens(chunk.content);
|
|
215
|
-
// Check if adding this chunk would exceed budget
|
|
216
|
-
if (totalTokens + chunkTokens > maxTokens) {
|
|
217
|
-
// Try to fit a truncated version
|
|
218
|
-
const remainingTokens = maxTokens - totalTokens;
|
|
219
|
-
if (remainingTokens > 100) {
|
|
220
|
-
const truncated = truncateChunk(chunk.content, remainingTokens);
|
|
221
|
-
parts.push(formatChunkForOutput(chunk, truncated, wc.weight));
|
|
222
|
-
totalTokens += approximateTokens(truncated);
|
|
223
|
-
includedChunks.push({
|
|
224
|
-
id: chunk.id,
|
|
225
|
-
sessionSlug: chunk.sessionSlug,
|
|
226
|
-
weight: wc.weight,
|
|
227
|
-
preview: truncated.slice(0, 100) + '...',
|
|
228
|
-
source: sourceMap?.get(chunk.id),
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
break;
|
|
232
|
-
}
|
|
233
|
-
parts.push(formatChunkForOutput(chunk, chunk.content, wc.weight));
|
|
234
|
-
totalTokens += chunkTokens;
|
|
235
|
-
includedChunks.push({
|
|
236
|
-
id: chunk.id,
|
|
237
|
-
sessionSlug: chunk.sessionSlug,
|
|
238
|
-
weight: wc.weight,
|
|
239
|
-
preview: chunk.content.slice(0, 100) + (chunk.content.length > 100 ? '...' : ''),
|
|
240
|
-
source: sourceMap?.get(chunk.id),
|
|
241
|
-
});
|
|
242
|
-
}
|
|
243
|
-
return {
|
|
244
|
-
text: parts.join('\n\n---\n\n'),
|
|
245
|
-
tokenCount: totalTokens,
|
|
246
|
-
includedChunks,
|
|
247
|
-
};
|
|
248
|
-
}
|
|
249
|
-
/**
|
|
250
|
-
* Format a chunk for output with metadata header.
|
|
251
|
-
*/
|
|
252
|
-
function formatChunkForOutput(chunk, content, weight) {
|
|
253
|
-
const date = new Date(chunk.startTime).toLocaleDateString();
|
|
254
|
-
const relevance = (weight * 100).toFixed(0);
|
|
255
|
-
return `[Session: ${chunk.sessionSlug} | Date: ${date} | Relevance: ${relevance}%]\n${content}`;
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* Truncate chunk content to fit token budget.
|
|
259
|
-
*/
|
|
260
|
-
function truncateChunk(content, maxTokens) {
|
|
261
|
-
// Rough estimate: 4 chars per token
|
|
262
|
-
const maxChars = maxTokens * 4;
|
|
263
|
-
if (content.length <= maxChars) {
|
|
264
|
-
return content;
|
|
265
|
-
}
|
|
266
|
-
// Try to cut at a paragraph boundary
|
|
267
|
-
const truncated = content.slice(0, maxChars);
|
|
268
|
-
const lastNewline = truncated.lastIndexOf('\n\n');
|
|
269
|
-
if (lastNewline > maxChars * 0.5) {
|
|
270
|
-
return truncated.slice(0, lastNewline) + '\n\n...[truncated]';
|
|
271
|
-
}
|
|
272
|
-
return truncated + '\n...[truncated]';
|
|
16
|
+
const searchResponse = await searchContext({
|
|
17
|
+
query: request.query,
|
|
18
|
+
currentSessionId: request.currentSessionId,
|
|
19
|
+
projectFilter: request.projectFilter,
|
|
20
|
+
maxTokens: request.maxTokens,
|
|
21
|
+
vectorSearchLimit: request.vectorSearchLimit,
|
|
22
|
+
});
|
|
23
|
+
return searchResponseToRetrievalResponse(searchResponse);
|
|
273
24
|
}
|
|
274
25
|
/**
|
|
275
|
-
* Recall:
|
|
26
|
+
* Recall: episodic retrieval walking backward through causal chains.
|
|
276
27
|
*/
|
|
277
28
|
export async function recall(query, options = {}) {
|
|
278
|
-
|
|
29
|
+
const response = await recallContext({
|
|
279
30
|
query,
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
/**
|
|
285
|
-
* Explain: retrieve context that explains how we got to current state.
|
|
286
|
-
*/
|
|
287
|
-
export async function explain(topic, options = {}) {
|
|
288
|
-
return assembleContext({
|
|
289
|
-
query: topic,
|
|
290
|
-
mode: 'explain',
|
|
291
|
-
...options,
|
|
31
|
+
currentSessionId: options.currentSessionId,
|
|
32
|
+
projectFilter: options.projectFilter,
|
|
33
|
+
maxTokens: options.maxTokens,
|
|
34
|
+
vectorSearchLimit: options.vectorSearchLimit,
|
|
292
35
|
});
|
|
36
|
+
return episodicResponseToRetrievalResponse(response);
|
|
293
37
|
}
|
|
294
38
|
/**
|
|
295
|
-
* Predict:
|
|
39
|
+
* Predict: episodic retrieval walking forward through causal chains.
|
|
296
40
|
*/
|
|
297
41
|
export async function predict(context, options = {}) {
|
|
298
|
-
|
|
42
|
+
const response = await predictContext({
|
|
299
43
|
query: context,
|
|
300
|
-
|
|
301
|
-
|
|
44
|
+
currentSessionId: options.currentSessionId,
|
|
45
|
+
projectFilter: options.projectFilter,
|
|
46
|
+
maxTokens: options.maxTokens,
|
|
47
|
+
vectorSearchLimit: options.vectorSearchLimit,
|
|
302
48
|
});
|
|
49
|
+
return episodicResponseToRetrievalResponse(response);
|
|
303
50
|
}
|
|
304
51
|
/**
|
|
305
52
|
* Cleanup shared resources.
|
|
306
53
|
*/
|
|
307
54
|
export async function disposeRetrieval() {
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
55
|
+
await disposeSearch();
|
|
56
|
+
}
|
|
57
|
+
// Adapters
|
|
58
|
+
function searchResponseToRetrievalResponse(response) {
|
|
59
|
+
return {
|
|
60
|
+
text: response.text,
|
|
61
|
+
tokenCount: response.tokenCount,
|
|
62
|
+
chunks: response.chunks,
|
|
63
|
+
totalConsidered: response.totalConsidered,
|
|
64
|
+
durationMs: response.durationMs,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function episodicResponseToRetrievalResponse(response) {
|
|
68
|
+
return {
|
|
69
|
+
text: response.text,
|
|
70
|
+
tokenCount: response.tokenCount,
|
|
71
|
+
chunks: response.chunks,
|
|
72
|
+
totalConsidered: response.chunks.length,
|
|
73
|
+
durationMs: response.durationMs,
|
|
74
|
+
};
|
|
312
75
|
}
|
|
313
76
|
//# sourceMappingURL=context-assembler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-assembler.js","sourceRoot":"","sources":["../../src/retrieval/context-assembler.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"context-assembler.js","sourceRoot":"","sources":["../../src/retrieval/context-assembler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAuB,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,cAAc,EAAyB,MAAM,sBAAsB,CAAC;AA8C5F;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAyB;IAC7D,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC;QACzC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;KAC7C,CAAC,CAAC;IAEH,OAAO,iCAAiC,CAAC,cAAc,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,KAAa,EACb,UAAqC,EAAE;IAEvC,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC;QACnC,KAAK;QACL,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;KAC7C,CAAC,CAAC;IAEH,OAAO,mCAAmC,CAAC,QAAQ,CAAC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,OAAe,EACf,UAAqC,EAAE;IAEvC,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;QACpC,KAAK,EAAE,OAAO;QACd,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;KAC7C,CAAC,CAAC;IAEH,OAAO,mCAAmC,CAAC,QAAQ,CAAC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,MAAM,aAAa,EAAE,CAAC;AACxB,CAAC;AAED,WAAW;AAEX,SAAS,iCAAiC,CAAC,QAAwB;IACjE,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,eAAe,EAAE,QAAQ,CAAC,eAAe;QACzC,UAAU,EAAE,QAAQ,CAAC,UAAU;KAChC,CAAC;AACJ,CAAC;AAED,SAAS,mCAAmC,CAAC,QAA0B;IACrE,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM;QACvC,UAAU,EAAE,QAAQ,CAAC,UAAU;KAChC,CAAC;AACJ,CAAC"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Retrieval system exports.
|
|
3
3
|
*/
|
|
4
|
-
export {
|
|
5
|
-
export type {
|
|
6
|
-
export {
|
|
7
|
-
export type {
|
|
4
|
+
export { assembleContext, recall, predict, disposeRetrieval, } from './context-assembler.js';
|
|
5
|
+
export type { RetrievalRequest, RetrievalResponse } from './context-assembler.js';
|
|
6
|
+
export { searchContext, disposeSearch } from './search-assembler.js';
|
|
7
|
+
export type { SearchRequest, SearchResponse } from './search-assembler.js';
|
|
8
|
+
export { recallContext, predictContext } from './chain-assembler.js';
|
|
9
|
+
export type { EpisodicRequest, EpisodicResponse } from './chain-assembler.js';
|
|
10
|
+
export { walkChains, selectBestChain } from './chain-walker.js';
|
|
11
|
+
export type { Chain, ChainWalkerOptions } from './chain-walker.js';
|
|
8
12
|
export { fuseRRF } from './rrf.js';
|
|
9
13
|
export type { RankedItem, RRFSource } from './rrf.js';
|
|
10
14
|
export { expandViaClusters } from './cluster-expander.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/retrieval/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/retrieval/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,eAAe,EACf,MAAM,EACN,OAAO,EACP,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAGlF,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACrE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG3E,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACrE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG9E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAChE,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGnE,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/retrieval/index.js
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Retrieval system exports.
|
|
3
3
|
*/
|
|
4
|
-
// Traverser
|
|
5
|
-
export { traverse, traverseMultiple, resolveChunks, dedupeAndRank } from './traverser.js';
|
|
6
4
|
// Context assembler
|
|
7
|
-
export { assembleContext, recall,
|
|
5
|
+
export { assembleContext, recall, predict, disposeRetrieval, } from './context-assembler.js';
|
|
6
|
+
// Search assembler
|
|
7
|
+
export { searchContext, disposeSearch } from './search-assembler.js';
|
|
8
|
+
// Chain assembler
|
|
9
|
+
export { recallContext, predictContext } from './chain-assembler.js';
|
|
10
|
+
// Chain walker
|
|
11
|
+
export { walkChains, selectBestChain } from './chain-walker.js';
|
|
8
12
|
// Reciprocal Rank Fusion
|
|
9
13
|
export { fuseRRF } from './rrf.js';
|
|
10
14
|
// Cluster expansion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/retrieval/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/retrieval/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oBAAoB;AACpB,OAAO,EACL,eAAe,EACf,MAAM,EACN,OAAO,EACP,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAGhC,mBAAmB;AACnB,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAGrE,kBAAkB;AAClB,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGrE,eAAe;AACf,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGhE,yBAAyB;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGnC,oBAAoB;AACpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rrf.d.ts","sourceRoot":"","sources":["../../src/retrieval/rrf.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;CACrD;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAID;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,GAAE,MAAkB,GAAG,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"rrf.d.ts","sourceRoot":"","sources":["../../src/retrieval/rrf.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;CACrD;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAID;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,GAAE,MAAkB,GAAG,UAAU,EAAE,CA2CjF"}
|
package/dist/retrieval/rrf.js
CHANGED
|
@@ -39,8 +39,10 @@ export function fuseRRF(sources, k = DEFAULT_K) {
|
|
|
39
39
|
// Convert to array and sort by fused score descending
|
|
40
40
|
const results = [];
|
|
41
41
|
for (const [chunkId, { score, sources }] of scoreMap) {
|
|
42
|
-
//
|
|
43
|
-
|
|
42
|
+
// Credit the most informative source (graph > cluster > keyword > vector).
|
|
43
|
+
// Vector is the baseline — rarer sources that also found this chunk
|
|
44
|
+
// represent added value from the graph/keyword/cluster pipeline stages.
|
|
45
|
+
const priority = ['graph', 'cluster', 'keyword', 'vector'];
|
|
44
46
|
let bestSource = undefined;
|
|
45
47
|
for (const p of priority) {
|
|
46
48
|
if (sources.has(p)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rrf.js","sourceRoot":"","sources":["../../src/retrieval/rrf.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAC,OAAoB,EAAE,IAAY,SAAS;IACjE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,2CAA2C;IAC3C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmD,CAAC;IAE5E,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;YACtD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,wCAAwC;YAEzF,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC;gBAC3B,IAAI,IAAI,CAAC,MAAM;oBAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;gBAClC,IAAI,IAAI,CAAC,MAAM;oBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1C,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IAED,sDAAsD;IACtD,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC;QACrD,
|
|
1
|
+
{"version":3,"file":"rrf.js","sourceRoot":"","sources":["../../src/retrieval/rrf.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAC,OAAoB,EAAE,IAAY,SAAS;IACjE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,2CAA2C;IAC3C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmD,CAAC;IAE5E,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;YACtD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,wCAAwC;YAEzF,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC;gBAC3B,IAAI,IAAI,CAAC,MAAM;oBAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;gBAClC,IAAI,IAAI,CAAC,MAAM;oBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1C,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IAED,sDAAsD;IACtD,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC;QACrD,2EAA2E;QAC3E,oEAAoE;QACpE,wEAAwE;QACxE,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC3D,IAAI,UAAU,GAAyB,SAAS,CAAC;QACjD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,UAAU,GAAG,CAAyB,CAAC;gBACvC,MAAM;YACR,CAAC;QACH,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAC1C,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure search pipeline for semantic discovery.
|
|
3
|
+
*
|
|
4
|
+
* Pipeline: embed → [vector, keyword] → RRF → cluster expand → dedupe → recency → budget
|
|
5
|
+
*
|
|
6
|
+
* No graph traversal. Used for the `search` MCP tool and as fallback for episodic recall
|
|
7
|
+
* when no qualifying chain is found.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Request for search-based context retrieval.
|
|
11
|
+
*/
|
|
12
|
+
export interface SearchRequest {
|
|
13
|
+
/** Query text */
|
|
14
|
+
query: string;
|
|
15
|
+
/** Current session ID (optional, for recency boost) */
|
|
16
|
+
currentSessionId?: string;
|
|
17
|
+
/** Filter results to specific project(s) */
|
|
18
|
+
projectFilter?: string | string[];
|
|
19
|
+
/** Maximum tokens in response */
|
|
20
|
+
maxTokens?: number;
|
|
21
|
+
/** Number of vector search results */
|
|
22
|
+
vectorSearchLimit?: number;
|
|
23
|
+
/** Skip cluster expansion (for benchmarking) */
|
|
24
|
+
skipClusters?: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Search response with assembled context.
|
|
28
|
+
*/
|
|
29
|
+
export interface SearchResponse {
|
|
30
|
+
/** Assembled context text */
|
|
31
|
+
text: string;
|
|
32
|
+
/** Approximate token count */
|
|
33
|
+
tokenCount: number;
|
|
34
|
+
/** Chunks included in response */
|
|
35
|
+
chunks: Array<{
|
|
36
|
+
id: string;
|
|
37
|
+
sessionSlug: string;
|
|
38
|
+
weight: number;
|
|
39
|
+
preview: string;
|
|
40
|
+
source?: 'vector' | 'keyword' | 'cluster';
|
|
41
|
+
}>;
|
|
42
|
+
/** Total chunks considered */
|
|
43
|
+
totalConsidered: number;
|
|
44
|
+
/** Time taken in milliseconds */
|
|
45
|
+
durationMs: number;
|
|
46
|
+
/** Query embedding (for downstream chain walking) */
|
|
47
|
+
queryEmbedding: number[];
|
|
48
|
+
/** Top seed IDs from RRF (for chain walking) */
|
|
49
|
+
seedIds: string[];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Run the search pipeline: embed → vector + keyword → RRF → cluster expand → budget.
|
|
53
|
+
*/
|
|
54
|
+
export declare function searchContext(request: SearchRequest): Promise<SearchResponse>;
|
|
55
|
+
/**
|
|
56
|
+
* Cleanup shared resources.
|
|
57
|
+
*/
|
|
58
|
+
export declare function disposeSearch(): Promise<void>;
|
|
59
|
+
//# sourceMappingURL=search-assembler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-assembler.d.ts","sourceRoot":"","sources":["../../src/retrieval/search-assembler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgBH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAClC,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gDAAgD;IAChD,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,MAAM,EAAE,KAAK,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;KAC3C,CAAC,CAAC;IACH,8BAA8B;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gDAAgD;IAChD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AA2BD;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CA0HnF;AA0FD;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAKnD"}
|