@vinaes/succ 1.3.19
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/LICENSE +87 -0
- package/README.md +588 -0
- package/agents/succ-checkpoint-manager.md +51 -0
- package/agents/succ-code-reviewer.md +181 -0
- package/agents/succ-context-optimizer.md +83 -0
- package/agents/succ-debug.md +224 -0
- package/agents/succ-decision-auditor.md +74 -0
- package/agents/succ-deep-search.md +41 -0
- package/agents/succ-diff-reviewer.md +123 -0
- package/agents/succ-explore.md +83 -0
- package/agents/succ-general.md +109 -0
- package/agents/succ-knowledge-indexer.md +45 -0
- package/agents/succ-knowledge-mapper.md +61 -0
- package/agents/succ-memory-curator.md +43 -0
- package/agents/succ-memory-health-monitor.md +55 -0
- package/agents/succ-pattern-detective.md +62 -0
- package/agents/succ-plan.md +172 -0
- package/agents/succ-quality-improvement-coach.md +63 -0
- package/agents/succ-readiness-improver.md +62 -0
- package/agents/succ-session-handoff-orchestrator.md +54 -0
- package/agents/succ-session-reviewer.md +46 -0
- package/agents/succ-style-tracker.md +73 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +749 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/agents-md.d.ts +16 -0
- package/dist/commands/agents-md.d.ts.map +1 -0
- package/dist/commands/agents-md.js +33 -0
- package/dist/commands/agents-md.js.map +1 -0
- package/dist/commands/analyze-agents.d.ts +20 -0
- package/dist/commands/analyze-agents.d.ts.map +1 -0
- package/dist/commands/analyze-agents.js +305 -0
- package/dist/commands/analyze-agents.js.map +1 -0
- package/dist/commands/analyze-helpers.d.ts +22 -0
- package/dist/commands/analyze-helpers.d.ts.map +1 -0
- package/dist/commands/analyze-helpers.js +38 -0
- package/dist/commands/analyze-helpers.js.map +1 -0
- package/dist/commands/analyze-profile.d.ts +53 -0
- package/dist/commands/analyze-profile.d.ts.map +1 -0
- package/dist/commands/analyze-profile.js +638 -0
- package/dist/commands/analyze-profile.js.map +1 -0
- package/dist/commands/analyze-recursive.d.ts +20 -0
- package/dist/commands/analyze-recursive.d.ts.map +1 -0
- package/dist/commands/analyze-recursive.js +326 -0
- package/dist/commands/analyze-recursive.js.map +1 -0
- package/dist/commands/analyze-utils.d.ts +83 -0
- package/dist/commands/analyze-utils.d.ts.map +1 -0
- package/dist/commands/analyze-utils.js +541 -0
- package/dist/commands/analyze-utils.js.map +1 -0
- package/dist/commands/analyze.d.ts +15 -0
- package/dist/commands/analyze.d.ts.map +1 -0
- package/dist/commands/analyze.js +265 -0
- package/dist/commands/analyze.js.map +1 -0
- package/dist/commands/backfill.d.ts +22 -0
- package/dist/commands/backfill.d.ts.map +1 -0
- package/dist/commands/backfill.js +62 -0
- package/dist/commands/backfill.js.map +1 -0
- package/dist/commands/benchmark-quality.d.ts +18 -0
- package/dist/commands/benchmark-quality.d.ts.map +1 -0
- package/dist/commands/benchmark-quality.js +316 -0
- package/dist/commands/benchmark-quality.js.map +1 -0
- package/dist/commands/benchmark-sqlite-vec.d.ts +12 -0
- package/dist/commands/benchmark-sqlite-vec.d.ts.map +1 -0
- package/dist/commands/benchmark-sqlite-vec.js +281 -0
- package/dist/commands/benchmark-sqlite-vec.js.map +1 -0
- package/dist/commands/benchmark.d.ts +57 -0
- package/dist/commands/benchmark.d.ts.map +1 -0
- package/dist/commands/benchmark.js +682 -0
- package/dist/commands/benchmark.js.map +1 -0
- package/dist/commands/chat.d.ts +14 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +84 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/checkpoint.d.ts +27 -0
- package/dist/commands/checkpoint.d.ts.map +1 -0
- package/dist/commands/checkpoint.js +181 -0
- package/dist/commands/checkpoint.js.map +1 -0
- package/dist/commands/clear.d.ts +9 -0
- package/dist/commands/clear.d.ts.map +1 -0
- package/dist/commands/clear.js +31 -0
- package/dist/commands/clear.js.map +1 -0
- package/dist/commands/config.d.ts +26 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +247 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/consolidate.d.ts +21 -0
- package/dist/commands/consolidate.d.ts.map +1 -0
- package/dist/commands/consolidate.js +117 -0
- package/dist/commands/consolidate.js.map +1 -0
- package/dist/commands/daemon.d.ts +48 -0
- package/dist/commands/daemon.d.ts.map +1 -0
- package/dist/commands/daemon.js +218 -0
- package/dist/commands/daemon.js.map +1 -0
- package/dist/commands/embedding.d.ts +26 -0
- package/dist/commands/embedding.d.ts.map +1 -0
- package/dist/commands/embedding.js +168 -0
- package/dist/commands/embedding.js.map +1 -0
- package/dist/commands/graph.d.ts +20 -0
- package/dist/commands/graph.d.ts.map +1 -0
- package/dist/commands/graph.js +128 -0
- package/dist/commands/graph.js.map +1 -0
- package/dist/commands/index-code.d.ts +23 -0
- package/dist/commands/index-code.d.ts.map +1 -0
- package/dist/commands/index-code.js +218 -0
- package/dist/commands/index-code.js.map +1 -0
- package/dist/commands/index.d.ts +23 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +217 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init-templates.d.ts +21 -0
- package/dist/commands/init-templates.d.ts.map +1 -0
- package/dist/commands/init-templates.js +487 -0
- package/dist/commands/init-templates.js.map +1 -0
- package/dist/commands/init.d.ts +10 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +865 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/memories.d.ts +47 -0
- package/dist/commands/memories.d.ts.map +1 -0
- package/dist/commands/memories.js +597 -0
- package/dist/commands/memories.js.map +1 -0
- package/dist/commands/migrate.d.ts +19 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +154 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/prd.d.ts +46 -0
- package/dist/commands/prd.d.ts.map +1 -0
- package/dist/commands/prd.js +378 -0
- package/dist/commands/prd.js.map +1 -0
- package/dist/commands/precompute-context.d.ts +11 -0
- package/dist/commands/precompute-context.d.ts.map +1 -0
- package/dist/commands/precompute-context.js +12 -0
- package/dist/commands/precompute-context.js.map +1 -0
- package/dist/commands/progress.d.ts +16 -0
- package/dist/commands/progress.d.ts.map +1 -0
- package/dist/commands/progress.js +38 -0
- package/dist/commands/progress.js.map +1 -0
- package/dist/commands/reindex.d.ts +17 -0
- package/dist/commands/reindex.d.ts.map +1 -0
- package/dist/commands/reindex.js +83 -0
- package/dist/commands/reindex.js.map +1 -0
- package/dist/commands/retention.d.ts +19 -0
- package/dist/commands/retention.d.ts.map +1 -0
- package/dist/commands/retention.js +162 -0
- package/dist/commands/retention.js.map +1 -0
- package/dist/commands/score.d.ts +10 -0
- package/dist/commands/score.d.ts.map +1 -0
- package/dist/commands/score.js +28 -0
- package/dist/commands/score.js.map +1 -0
- package/dist/commands/search.d.ts +7 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +89 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/session-summary.d.ts +15 -0
- package/dist/commands/session-summary.d.ts.map +1 -0
- package/dist/commands/session-summary.js +16 -0
- package/dist/commands/session-summary.js.map +1 -0
- package/dist/commands/setup.d.ts +6 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +222 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/soul.d.ts +9 -0
- package/dist/commands/soul.d.ts.map +1 -0
- package/dist/commands/soul.js +256 -0
- package/dist/commands/soul.js.map +1 -0
- package/dist/commands/stats.d.ts +18 -0
- package/dist/commands/stats.d.ts.map +1 -0
- package/dist/commands/stats.js +138 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/status.d.ts +2 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +145 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/train-bpe.d.ts +8 -0
- package/dist/commands/train-bpe.d.ts.map +1 -0
- package/dist/commands/train-bpe.js +35 -0
- package/dist/commands/train-bpe.js.map +1 -0
- package/dist/commands/watch.d.ts +22 -0
- package/dist/commands/watch.d.ts.map +1 -0
- package/dist/commands/watch.js +171 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/daemon/analyzer.d.ts +54 -0
- package/dist/daemon/analyzer.d.ts.map +1 -0
- package/dist/daemon/analyzer.js +362 -0
- package/dist/daemon/analyzer.js.map +1 -0
- package/dist/daemon/client.d.ts +87 -0
- package/dist/daemon/client.d.ts.map +1 -0
- package/dist/daemon/client.js +356 -0
- package/dist/daemon/client.js.map +1 -0
- package/dist/daemon/index.d.ts +12 -0
- package/dist/daemon/index.d.ts.map +1 -0
- package/dist/daemon/index.js +12 -0
- package/dist/daemon/index.js.map +1 -0
- package/dist/daemon/service.d.ts +51 -0
- package/dist/daemon/service.d.ts.map +1 -0
- package/dist/daemon/service.js +1203 -0
- package/dist/daemon/service.js.map +1 -0
- package/dist/daemon/session-processor.d.ts +85 -0
- package/dist/daemon/session-processor.d.ts.map +1 -0
- package/dist/daemon/session-processor.js +571 -0
- package/dist/daemon/session-processor.js.map +1 -0
- package/dist/daemon/sessions.d.ts +62 -0
- package/dist/daemon/sessions.d.ts.map +1 -0
- package/dist/daemon/sessions.js +192 -0
- package/dist/daemon/sessions.js.map +1 -0
- package/dist/daemon/watcher.d.ts +52 -0
- package/dist/daemon/watcher.d.ts.map +1 -0
- package/dist/daemon/watcher.js +363 -0
- package/dist/daemon/watcher.js.map +1 -0
- package/dist/lib/agents-md-generator.d.ts +33 -0
- package/dist/lib/agents-md-generator.d.ts.map +1 -0
- package/dist/lib/agents-md-generator.js +156 -0
- package/dist/lib/agents-md-generator.js.map +1 -0
- package/dist/lib/ai-readiness.d.ts +132 -0
- package/dist/lib/ai-readiness.d.ts.map +1 -0
- package/dist/lib/ai-readiness.js +702 -0
- package/dist/lib/ai-readiness.js.map +1 -0
- package/dist/lib/analyze-state.d.ts +34 -0
- package/dist/lib/analyze-state.d.ts.map +1 -0
- package/dist/lib/analyze-state.js +106 -0
- package/dist/lib/analyze-state.js.map +1 -0
- package/dist/lib/benchmark.d.ts +250 -0
- package/dist/lib/benchmark.d.ts.map +1 -0
- package/dist/lib/benchmark.js +778 -0
- package/dist/lib/benchmark.js.map +1 -0
- package/dist/lib/bm25.d.ts +114 -0
- package/dist/lib/bm25.d.ts.map +1 -0
- package/dist/lib/bm25.js +727 -0
- package/dist/lib/bm25.js.map +1 -0
- package/dist/lib/bpe.d.ts +70 -0
- package/dist/lib/bpe.d.ts.map +1 -0
- package/dist/lib/bpe.js +270 -0
- package/dist/lib/bpe.js.map +1 -0
- package/dist/lib/checkpoint.d.ts +124 -0
- package/dist/lib/checkpoint.d.ts.map +1 -0
- package/dist/lib/checkpoint.js +321 -0
- package/dist/lib/checkpoint.js.map +1 -0
- package/dist/lib/chunker.d.ts +47 -0
- package/dist/lib/chunker.d.ts.map +1 -0
- package/dist/lib/chunker.js +358 -0
- package/dist/lib/chunker.js.map +1 -0
- package/dist/lib/claude-ws-transport.d.ts +76 -0
- package/dist/lib/claude-ws-transport.d.ts.map +1 -0
- package/dist/lib/claude-ws-transport.js +487 -0
- package/dist/lib/claude-ws-transport.js.map +1 -0
- package/dist/lib/compact-briefing.d.ts +22 -0
- package/dist/lib/compact-briefing.d.ts.map +1 -0
- package/dist/lib/compact-briefing.js +180 -0
- package/dist/lib/compact-briefing.js.map +1 -0
- package/dist/lib/config-defaults.d.ts +41 -0
- package/dist/lib/config-defaults.d.ts.map +1 -0
- package/dist/lib/config-defaults.js +99 -0
- package/dist/lib/config-defaults.js.map +1 -0
- package/dist/lib/config-display.d.ts +16 -0
- package/dist/lib/config-display.d.ts.map +1 -0
- package/dist/lib/config-display.js +408 -0
- package/dist/lib/config-display.js.map +1 -0
- package/dist/lib/config-types.d.ts +601 -0
- package/dist/lib/config-types.d.ts.map +1 -0
- package/dist/lib/config-types.js +7 -0
- package/dist/lib/config-types.js.map +1 -0
- package/dist/lib/config-validation.d.ts +19 -0
- package/dist/lib/config-validation.d.ts.map +1 -0
- package/dist/lib/config-validation.js +136 -0
- package/dist/lib/config-validation.js.map +1 -0
- package/dist/lib/config.d.ts +143 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +689 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/consolidate.d.ts +115 -0
- package/dist/lib/consolidate.d.ts.map +1 -0
- package/dist/lib/consolidate.js +600 -0
- package/dist/lib/consolidate.js.map +1 -0
- package/dist/lib/db/bm25-indexes.d.ts +58 -0
- package/dist/lib/db/bm25-indexes.d.ts.map +1 -0
- package/dist/lib/db/bm25-indexes.js +333 -0
- package/dist/lib/db/bm25-indexes.js.map +1 -0
- package/dist/lib/db/bpe.d.ts +18 -0
- package/dist/lib/db/bpe.d.ts.map +1 -0
- package/dist/lib/db/bpe.js +44 -0
- package/dist/lib/db/bpe.js.map +1 -0
- package/dist/lib/db/connection.d.ts +47 -0
- package/dist/lib/db/connection.d.ts.map +1 -0
- package/dist/lib/db/connection.js +114 -0
- package/dist/lib/db/connection.js.map +1 -0
- package/dist/lib/db/documents.d.ts +58 -0
- package/dist/lib/db/documents.d.ts.map +1 -0
- package/dist/lib/db/documents.js +374 -0
- package/dist/lib/db/documents.js.map +1 -0
- package/dist/lib/db/file-hash.d.ts +26 -0
- package/dist/lib/db/file-hash.d.ts.map +1 -0
- package/dist/lib/db/file-hash.js +56 -0
- package/dist/lib/db/file-hash.js.map +1 -0
- package/dist/lib/db/global-memories.d.ts +62 -0
- package/dist/lib/db/global-memories.d.ts.map +1 -0
- package/dist/lib/db/global-memories.js +173 -0
- package/dist/lib/db/global-memories.js.map +1 -0
- package/dist/lib/db/graph.d.ts +163 -0
- package/dist/lib/db/graph.d.ts.map +1 -0
- package/dist/lib/db/graph.js +488 -0
- package/dist/lib/db/graph.js.map +1 -0
- package/dist/lib/db/helpers.d.ts +13 -0
- package/dist/lib/db/helpers.d.ts.map +1 -0
- package/dist/lib/db/helpers.js +21 -0
- package/dist/lib/db/helpers.js.map +1 -0
- package/dist/lib/db/hybrid-search.d.ts +64 -0
- package/dist/lib/db/hybrid-search.d.ts.map +1 -0
- package/dist/lib/db/hybrid-search.js +549 -0
- package/dist/lib/db/hybrid-search.js.map +1 -0
- package/dist/lib/db/index.d.ts +23 -0
- package/dist/lib/db/index.d.ts.map +1 -0
- package/dist/lib/db/index.js +23 -0
- package/dist/lib/db/index.js.map +1 -0
- package/dist/lib/db/memories.d.ts +174 -0
- package/dist/lib/db/memories.d.ts.map +1 -0
- package/dist/lib/db/memories.js +866 -0
- package/dist/lib/db/memories.js.map +1 -0
- package/dist/lib/db/retention.d.ts +64 -0
- package/dist/lib/db/retention.d.ts.map +1 -0
- package/dist/lib/db/retention.js +115 -0
- package/dist/lib/db/retention.js.map +1 -0
- package/dist/lib/db/schema.d.ts +29 -0
- package/dist/lib/db/schema.d.ts.map +1 -0
- package/dist/lib/db/schema.js +832 -0
- package/dist/lib/db/schema.js.map +1 -0
- package/dist/lib/db/skills.d.ts +65 -0
- package/dist/lib/db/skills.d.ts.map +1 -0
- package/dist/lib/db/skills.js +119 -0
- package/dist/lib/db/skills.js.map +1 -0
- package/dist/lib/db/token-frequency.d.ts +34 -0
- package/dist/lib/db/token-frequency.d.ts.map +1 -0
- package/dist/lib/db/token-frequency.js +92 -0
- package/dist/lib/db/token-frequency.js.map +1 -0
- package/dist/lib/db/token-stats.d.ts +43 -0
- package/dist/lib/db/token-stats.d.ts.map +1 -0
- package/dist/lib/db/token-stats.js +59 -0
- package/dist/lib/db/token-stats.js.map +1 -0
- package/dist/lib/db/types.d.ts +57 -0
- package/dist/lib/db/types.d.ts.map +1 -0
- package/dist/lib/db/types.js +5 -0
- package/dist/lib/db/types.js.map +1 -0
- package/dist/lib/db/web-search-history.d.ts +22 -0
- package/dist/lib/db/web-search-history.d.ts.map +1 -0
- package/dist/lib/db/web-search-history.js +107 -0
- package/dist/lib/db/web-search-history.js.map +1 -0
- package/dist/lib/debug/state.d.ts +17 -0
- package/dist/lib/debug/state.d.ts.map +1 -0
- package/dist/lib/debug/state.js +131 -0
- package/dist/lib/debug/state.js.map +1 -0
- package/dist/lib/debug/types.d.ts +74 -0
- package/dist/lib/debug/types.d.ts.map +1 -0
- package/dist/lib/debug/types.js +85 -0
- package/dist/lib/debug/types.js.map +1 -0
- package/dist/lib/embedding-pool.d.ts +37 -0
- package/dist/lib/embedding-pool.d.ts.map +1 -0
- package/dist/lib/embedding-pool.js +159 -0
- package/dist/lib/embedding-pool.js.map +1 -0
- package/dist/lib/embedding-worker.d.ts +7 -0
- package/dist/lib/embedding-worker.d.ts.map +1 -0
- package/dist/lib/embedding-worker.js +49 -0
- package/dist/lib/embedding-worker.js.map +1 -0
- package/dist/lib/embeddings.d.ts +54 -0
- package/dist/lib/embeddings.d.ts.map +1 -0
- package/dist/lib/embeddings.js +437 -0
- package/dist/lib/embeddings.js.map +1 -0
- package/dist/lib/errors.d.ts +40 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +66 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/fault-logger.d.ts +35 -0
- package/dist/lib/fault-logger.d.ts.map +1 -0
- package/dist/lib/fault-logger.js +182 -0
- package/dist/lib/fault-logger.js.map +1 -0
- package/dist/lib/graph/centrality.d.ts +34 -0
- package/dist/lib/graph/centrality.d.ts.map +1 -0
- package/dist/lib/graph/centrality.js +76 -0
- package/dist/lib/graph/centrality.js.map +1 -0
- package/dist/lib/graph/cleanup.d.ts +36 -0
- package/dist/lib/graph/cleanup.d.ts.map +1 -0
- package/dist/lib/graph/cleanup.js +96 -0
- package/dist/lib/graph/cleanup.js.map +1 -0
- package/dist/lib/graph/community-detection.d.ts +61 -0
- package/dist/lib/graph/community-detection.d.ts.map +1 -0
- package/dist/lib/graph/community-detection.js +218 -0
- package/dist/lib/graph/community-detection.js.map +1 -0
- package/dist/lib/graph/contextual-proximity.d.ts +41 -0
- package/dist/lib/graph/contextual-proximity.d.ts.map +1 -0
- package/dist/lib/graph/contextual-proximity.js +125 -0
- package/dist/lib/graph/contextual-proximity.js.map +1 -0
- package/dist/lib/graph/llm-relations.d.ts +54 -0
- package/dist/lib/graph/llm-relations.d.ts.map +1 -0
- package/dist/lib/graph/llm-relations.js +265 -0
- package/dist/lib/graph/llm-relations.js.map +1 -0
- package/dist/lib/graph-export.d.ts +13 -0
- package/dist/lib/graph-export.d.ts.map +1 -0
- package/dist/lib/graph-export.js +637 -0
- package/dist/lib/graph-export.js.map +1 -0
- package/dist/lib/graph-scheduler.d.ts +7 -0
- package/dist/lib/graph-scheduler.d.ts.map +1 -0
- package/dist/lib/graph-scheduler.js +21 -0
- package/dist/lib/graph-scheduler.js.map +1 -0
- package/dist/lib/indexer.d.ts +36 -0
- package/dist/lib/indexer.d.ts.map +1 -0
- package/dist/lib/indexer.js +226 -0
- package/dist/lib/indexer.js.map +1 -0
- package/dist/lib/learning-delta.d.ts +35 -0
- package/dist/lib/learning-delta.d.ts.map +1 -0
- package/dist/lib/learning-delta.js +53 -0
- package/dist/lib/learning-delta.js.map +1 -0
- package/dist/lib/llm.d.ts +118 -0
- package/dist/lib/llm.d.ts.map +1 -0
- package/dist/lib/llm.js +439 -0
- package/dist/lib/llm.js.map +1 -0
- package/dist/lib/lock.d.ts +27 -0
- package/dist/lib/lock.d.ts.map +1 -0
- package/dist/lib/lock.js +143 -0
- package/dist/lib/lock.js.map +1 -0
- package/dist/lib/md-fetch.d.ts +61 -0
- package/dist/lib/md-fetch.d.ts.map +1 -0
- package/dist/lib/md-fetch.js +141 -0
- package/dist/lib/md-fetch.js.map +1 -0
- package/dist/lib/mmr.d.ts +29 -0
- package/dist/lib/mmr.d.ts.map +1 -0
- package/dist/lib/mmr.js +89 -0
- package/dist/lib/mmr.js.map +1 -0
- package/dist/lib/onboarding/ai-chat.d.ts +11 -0
- package/dist/lib/onboarding/ai-chat.d.ts.map +1 -0
- package/dist/lib/onboarding/ai-chat.js +85 -0
- package/dist/lib/onboarding/ai-chat.js.map +1 -0
- package/dist/lib/onboarding/index.d.ts +7 -0
- package/dist/lib/onboarding/index.d.ts.map +1 -0
- package/dist/lib/onboarding/index.js +7 -0
- package/dist/lib/onboarding/index.js.map +1 -0
- package/dist/lib/onboarding/wizard.d.ts +11 -0
- package/dist/lib/onboarding/wizard.d.ts.map +1 -0
- package/dist/lib/onboarding/wizard.js +104 -0
- package/dist/lib/onboarding/wizard.js.map +1 -0
- package/dist/lib/ort-provider.d.ts +27 -0
- package/dist/lib/ort-provider.d.ts.map +1 -0
- package/dist/lib/ort-provider.js +83 -0
- package/dist/lib/ort-provider.js.map +1 -0
- package/dist/lib/ort-session.d.ts +32 -0
- package/dist/lib/ort-session.d.ts.map +1 -0
- package/dist/lib/ort-session.js +227 -0
- package/dist/lib/ort-session.js.map +1 -0
- package/dist/lib/patterns.d.ts +43 -0
- package/dist/lib/patterns.d.ts.map +1 -0
- package/dist/lib/patterns.js +395 -0
- package/dist/lib/patterns.js.map +1 -0
- package/dist/lib/prd/codebase-context.d.ts +27 -0
- package/dist/lib/prd/codebase-context.d.ts.map +1 -0
- package/dist/lib/prd/codebase-context.js +420 -0
- package/dist/lib/prd/codebase-context.js.map +1 -0
- package/dist/lib/prd/context.d.ts +24 -0
- package/dist/lib/prd/context.d.ts.map +1 -0
- package/dist/lib/prd/context.js +68 -0
- package/dist/lib/prd/context.js.map +1 -0
- package/dist/lib/prd/executor.d.ts +52 -0
- package/dist/lib/prd/executor.d.ts.map +1 -0
- package/dist/lib/prd/executor.js +154 -0
- package/dist/lib/prd/executor.js.map +1 -0
- package/dist/lib/prd/export.d.ts +40 -0
- package/dist/lib/prd/export.d.ts.map +1 -0
- package/dist/lib/prd/export.js +511 -0
- package/dist/lib/prd/export.js.map +1 -0
- package/dist/lib/prd/gates.d.ts +30 -0
- package/dist/lib/prd/gates.d.ts.map +1 -0
- package/dist/lib/prd/gates.js +100 -0
- package/dist/lib/prd/gates.js.map +1 -0
- package/dist/lib/prd/generate.d.ts +56 -0
- package/dist/lib/prd/generate.d.ts.map +1 -0
- package/dist/lib/prd/generate.js +357 -0
- package/dist/lib/prd/generate.js.map +1 -0
- package/dist/lib/prd/parse.d.ts +21 -0
- package/dist/lib/prd/parse.d.ts.map +1 -0
- package/dist/lib/prd/parse.js +270 -0
- package/dist/lib/prd/parse.js.map +1 -0
- package/dist/lib/prd/prompt-builder.d.ts +18 -0
- package/dist/lib/prd/prompt-builder.d.ts.map +1 -0
- package/dist/lib/prd/prompt-builder.js +61 -0
- package/dist/lib/prd/prompt-builder.js.map +1 -0
- package/dist/lib/prd/runner.d.ts +54 -0
- package/dist/lib/prd/runner.d.ts.map +1 -0
- package/dist/lib/prd/runner.js +563 -0
- package/dist/lib/prd/runner.js.map +1 -0
- package/dist/lib/prd/scheduler.d.ts +27 -0
- package/dist/lib/prd/scheduler.d.ts.map +1 -0
- package/dist/lib/prd/scheduler.js +113 -0
- package/dist/lib/prd/scheduler.js.map +1 -0
- package/dist/lib/prd/state.d.ts +77 -0
- package/dist/lib/prd/state.d.ts.map +1 -0
- package/dist/lib/prd/state.js +253 -0
- package/dist/lib/prd/state.js.map +1 -0
- package/dist/lib/prd/team-runner.d.ts +48 -0
- package/dist/lib/prd/team-runner.d.ts.map +1 -0
- package/dist/lib/prd/team-runner.js +261 -0
- package/dist/lib/prd/team-runner.js.map +1 -0
- package/dist/lib/prd/types.d.ts +169 -0
- package/dist/lib/prd/types.d.ts.map +1 -0
- package/dist/lib/prd/types.js +143 -0
- package/dist/lib/prd/types.js.map +1 -0
- package/dist/lib/prd/worktree.d.ts +54 -0
- package/dist/lib/prd/worktree.d.ts.map +1 -0
- package/dist/lib/prd/worktree.js +255 -0
- package/dist/lib/prd/worktree.js.map +1 -0
- package/dist/lib/precompute-context.d.ts +48 -0
- package/dist/lib/precompute-context.d.ts.map +1 -0
- package/dist/lib/precompute-context.js +265 -0
- package/dist/lib/precompute-context.js.map +1 -0
- package/dist/lib/pricing.d.ts +60 -0
- package/dist/lib/pricing.d.ts.map +1 -0
- package/dist/lib/pricing.js +258 -0
- package/dist/lib/pricing.js.map +1 -0
- package/dist/lib/process-registry.d.ts +30 -0
- package/dist/lib/process-registry.d.ts.map +1 -0
- package/dist/lib/process-registry.js +92 -0
- package/dist/lib/process-registry.js.map +1 -0
- package/dist/lib/progress-log.d.ts +44 -0
- package/dist/lib/progress-log.d.ts.map +1 -0
- package/dist/lib/progress-log.js +58 -0
- package/dist/lib/progress-log.js.map +1 -0
- package/dist/lib/public-api.d.ts +56 -0
- package/dist/lib/public-api.d.ts.map +1 -0
- package/dist/lib/public-api.js +63 -0
- package/dist/lib/public-api.js.map +1 -0
- package/dist/lib/quality.d.ts +66 -0
- package/dist/lib/quality.d.ts.map +1 -0
- package/dist/lib/quality.js +486 -0
- package/dist/lib/quality.js.map +1 -0
- package/dist/lib/query-expansion.d.ts +16 -0
- package/dist/lib/query-expansion.d.ts.map +1 -0
- package/dist/lib/query-expansion.js +53 -0
- package/dist/lib/query-expansion.js.map +1 -0
- package/dist/lib/readiness.d.ts +35 -0
- package/dist/lib/readiness.d.ts.map +1 -0
- package/dist/lib/readiness.js +142 -0
- package/dist/lib/readiness.js.map +1 -0
- package/dist/lib/reference-embeddings.d.ts +39 -0
- package/dist/lib/reference-embeddings.d.ts.map +1 -0
- package/dist/lib/reference-embeddings.js +95 -0
- package/dist/lib/reference-embeddings.js.map +1 -0
- package/dist/lib/reflection-synthesizer.d.ts +27 -0
- package/dist/lib/reflection-synthesizer.d.ts.map +1 -0
- package/dist/lib/reflection-synthesizer.js +149 -0
- package/dist/lib/reflection-synthesizer.js.map +1 -0
- package/dist/lib/retention.d.ts +105 -0
- package/dist/lib/retention.d.ts.map +1 -0
- package/dist/lib/retention.js +246 -0
- package/dist/lib/retention.js.map +1 -0
- package/dist/lib/sensitive-filter.d.ts +34 -0
- package/dist/lib/sensitive-filter.d.ts.map +1 -0
- package/dist/lib/sensitive-filter.js +344 -0
- package/dist/lib/sensitive-filter.js.map +1 -0
- package/dist/lib/session-observations.d.ts +59 -0
- package/dist/lib/session-observations.d.ts.map +1 -0
- package/dist/lib/session-observations.js +128 -0
- package/dist/lib/session-observations.js.map +1 -0
- package/dist/lib/session-summary.d.ts +65 -0
- package/dist/lib/session-summary.d.ts.map +1 -0
- package/dist/lib/session-summary.js +344 -0
- package/dist/lib/session-summary.js.map +1 -0
- package/dist/lib/similarity-worker.d.ts +7 -0
- package/dist/lib/similarity-worker.d.ts.map +1 -0
- package/dist/lib/similarity-worker.js +36 -0
- package/dist/lib/similarity-worker.js.map +1 -0
- package/dist/lib/skills.d.ts +78 -0
- package/dist/lib/skills.d.ts.map +1 -0
- package/dist/lib/skills.js +439 -0
- package/dist/lib/skills.js.map +1 -0
- package/dist/lib/skyll-client.d.ts +59 -0
- package/dist/lib/skyll-client.d.ts.map +1 -0
- package/dist/lib/skyll-client.js +257 -0
- package/dist/lib/skyll-client.js.map +1 -0
- package/dist/lib/storage/backends/interface.d.ts +383 -0
- package/dist/lib/storage/backends/interface.d.ts.map +1 -0
- package/dist/lib/storage/backends/interface.js +12 -0
- package/dist/lib/storage/backends/interface.js.map +1 -0
- package/dist/lib/storage/backends/postgresql.d.ts +454 -0
- package/dist/lib/storage/backends/postgresql.d.ts.map +1 -0
- package/dist/lib/storage/backends/postgresql.js +2528 -0
- package/dist/lib/storage/backends/postgresql.js.map +1 -0
- package/dist/lib/storage/benchmark.d.ts +16 -0
- package/dist/lib/storage/benchmark.d.ts.map +1 -0
- package/dist/lib/storage/benchmark.js +219 -0
- package/dist/lib/storage/benchmark.js.map +1 -0
- package/dist/lib/storage/dispatcher-export.d.ts +108 -0
- package/dist/lib/storage/dispatcher-export.d.ts.map +1 -0
- package/dist/lib/storage/dispatcher-export.js +593 -0
- package/dist/lib/storage/dispatcher-export.js.map +1 -0
- package/dist/lib/storage/dispatcher.d.ts +468 -0
- package/dist/lib/storage/dispatcher.d.ts.map +1 -0
- package/dist/lib/storage/dispatcher.js +1926 -0
- package/dist/lib/storage/dispatcher.js.map +1 -0
- package/dist/lib/storage/index.d.ts +481 -0
- package/dist/lib/storage/index.d.ts.map +1 -0
- package/dist/lib/storage/index.js +727 -0
- package/dist/lib/storage/index.js.map +1 -0
- package/dist/lib/storage/migration/export-import.d.ts +133 -0
- package/dist/lib/storage/migration/export-import.d.ts.map +1 -0
- package/dist/lib/storage/migration/export-import.js +264 -0
- package/dist/lib/storage/migration/export-import.js.map +1 -0
- package/dist/lib/storage/types.d.ts +313 -0
- package/dist/lib/storage/types.d.ts.map +1 -0
- package/dist/lib/storage/types.js +30 -0
- package/dist/lib/storage/types.js.map +1 -0
- package/dist/lib/storage/vector/interface.d.ts +89 -0
- package/dist/lib/storage/vector/interface.d.ts.map +1 -0
- package/dist/lib/storage/vector/interface.js +10 -0
- package/dist/lib/storage/vector/interface.js.map +1 -0
- package/dist/lib/storage/vector/qdrant.d.ts +221 -0
- package/dist/lib/storage/vector/qdrant.d.ts.map +1 -0
- package/dist/lib/storage/vector/qdrant.js +880 -0
- package/dist/lib/storage/vector/qdrant.js.map +1 -0
- package/dist/lib/supersession.d.ts +26 -0
- package/dist/lib/supersession.d.ts.map +1 -0
- package/dist/lib/supersession.js +97 -0
- package/dist/lib/supersession.js.map +1 -0
- package/dist/lib/temporal.d.ts +140 -0
- package/dist/lib/temporal.d.ts.map +1 -0
- package/dist/lib/temporal.js +303 -0
- package/dist/lib/temporal.js.map +1 -0
- package/dist/lib/token-budget.d.ts +79 -0
- package/dist/lib/token-budget.d.ts.map +1 -0
- package/dist/lib/token-budget.js +146 -0
- package/dist/lib/token-budget.js.map +1 -0
- package/dist/lib/token-counter.d.ts +27 -0
- package/dist/lib/token-counter.d.ts.map +1 -0
- package/dist/lib/token-counter.js +52 -0
- package/dist/lib/token-counter.js.map +1 -0
- package/dist/lib/tree-sitter/chunker-ts.d.ts +24 -0
- package/dist/lib/tree-sitter/chunker-ts.d.ts.map +1 -0
- package/dist/lib/tree-sitter/chunker-ts.js +206 -0
- package/dist/lib/tree-sitter/chunker-ts.js.map +1 -0
- package/dist/lib/tree-sitter/extractor.d.ts +43 -0
- package/dist/lib/tree-sitter/extractor.d.ts.map +1 -0
- package/dist/lib/tree-sitter/extractor.js +297 -0
- package/dist/lib/tree-sitter/extractor.js.map +1 -0
- package/dist/lib/tree-sitter/index.d.ts +13 -0
- package/dist/lib/tree-sitter/index.d.ts.map +1 -0
- package/dist/lib/tree-sitter/index.js +14 -0
- package/dist/lib/tree-sitter/index.js.map +1 -0
- package/dist/lib/tree-sitter/parser.d.ts +70 -0
- package/dist/lib/tree-sitter/parser.d.ts.map +1 -0
- package/dist/lib/tree-sitter/parser.js +354 -0
- package/dist/lib/tree-sitter/parser.js.map +1 -0
- package/dist/lib/tree-sitter/public.d.ts +28 -0
- package/dist/lib/tree-sitter/public.d.ts.map +1 -0
- package/dist/lib/tree-sitter/public.js +50 -0
- package/dist/lib/tree-sitter/public.js.map +1 -0
- package/dist/lib/tree-sitter/queries.d.ts +28 -0
- package/dist/lib/tree-sitter/queries.d.ts.map +1 -0
- package/dist/lib/tree-sitter/queries.js +383 -0
- package/dist/lib/tree-sitter/queries.js.map +1 -0
- package/dist/lib/tree-sitter/types.d.ts +69 -0
- package/dist/lib/tree-sitter/types.d.ts.map +1 -0
- package/dist/lib/tree-sitter/types.js +131 -0
- package/dist/lib/tree-sitter/types.js.map +1 -0
- package/dist/lib/working-memory-pipeline.d.ts +118 -0
- package/dist/lib/working-memory-pipeline.d.ts.map +1 -0
- package/dist/lib/working-memory-pipeline.js +344 -0
- package/dist/lib/working-memory-pipeline.js.map +1 -0
- package/dist/mcp/helpers.d.ts +44 -0
- package/dist/mcp/helpers.d.ts.map +1 -0
- package/dist/mcp/helpers.js +244 -0
- package/dist/mcp/helpers.js.map +1 -0
- package/dist/mcp/index.d.ts +10 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +15 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/resources.d.ts +12 -0
- package/dist/mcp/resources.d.ts.map +1 -0
- package/dist/mcp/resources.js +136 -0
- package/dist/mcp/resources.js.map +1 -0
- package/dist/mcp/server.d.ts +22 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +131 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/config.d.ts +10 -0
- package/dist/mcp/tools/config.d.ts.map +1 -0
- package/dist/mcp/tools/config.js +236 -0
- package/dist/mcp/tools/config.js.map +1 -0
- package/dist/mcp/tools/dead-end.d.ts +9 -0
- package/dist/mcp/tools/dead-end.d.ts.map +1 -0
- package/dist/mcp/tools/dead-end.js +137 -0
- package/dist/mcp/tools/dead-end.js.map +1 -0
- package/dist/mcp/tools/debug.d.ts +9 -0
- package/dist/mcp/tools/debug.d.ts.map +1 -0
- package/dist/mcp/tools/debug.js +387 -0
- package/dist/mcp/tools/debug.js.map +1 -0
- package/dist/mcp/tools/graph.d.ts +9 -0
- package/dist/mcp/tools/graph.d.ts.map +1 -0
- package/dist/mcp/tools/graph.js +337 -0
- package/dist/mcp/tools/graph.js.map +1 -0
- package/dist/mcp/tools/indexing.d.ts +12 -0
- package/dist/mcp/tools/indexing.d.ts.map +1 -0
- package/dist/mcp/tools/indexing.js +289 -0
- package/dist/mcp/tools/indexing.js.map +1 -0
- package/dist/mcp/tools/memory.d.ts +14 -0
- package/dist/mcp/tools/memory.d.ts.map +1 -0
- package/dist/mcp/tools/memory.js +1170 -0
- package/dist/mcp/tools/memory.js.map +1 -0
- package/dist/mcp/tools/prd.d.ts +12 -0
- package/dist/mcp/tools/prd.d.ts.map +1 -0
- package/dist/mcp/tools/prd.js +276 -0
- package/dist/mcp/tools/prd.js.map +1 -0
- package/dist/mcp/tools/search.d.ts +9 -0
- package/dist/mcp/tools/search.d.ts.map +1 -0
- package/dist/mcp/tools/search.js +279 -0
- package/dist/mcp/tools/search.js.map +1 -0
- package/dist/mcp/tools/status.d.ts +10 -0
- package/dist/mcp/tools/status.d.ts.map +1 -0
- package/dist/mcp/tools/status.js +296 -0
- package/dist/mcp/tools/status.js.map +1 -0
- package/dist/mcp/tools/web-fetch.d.ts +10 -0
- package/dist/mcp/tools/web-fetch.d.ts.map +1 -0
- package/dist/mcp/tools/web-fetch.js +107 -0
- package/dist/mcp/tools/web-fetch.js.map +1 -0
- package/dist/mcp/tools/web-search.d.ts +14 -0
- package/dist/mcp/tools/web-search.d.ts.map +1 -0
- package/dist/mcp/tools/web-search.js +427 -0
- package/dist/mcp/tools/web-search.js.map +1 -0
- package/dist/mcp/types.d.ts +16 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +5 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/mcp-server.d.ts +9 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +9 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/prompts/analyze.d.ts +21 -0
- package/dist/prompts/analyze.d.ts.map +1 -0
- package/dist/prompts/analyze.js +27 -0
- package/dist/prompts/analyze.js.map +1 -0
- package/dist/prompts/briefing.d.ts +27 -0
- package/dist/prompts/briefing.d.ts.map +1 -0
- package/dist/prompts/briefing.js +123 -0
- package/dist/prompts/briefing.js.map +1 -0
- package/dist/prompts/chat.d.ts +8 -0
- package/dist/prompts/chat.d.ts.map +1 -0
- package/dist/prompts/chat.js +39 -0
- package/dist/prompts/chat.js.map +1 -0
- package/dist/prompts/daemon.d.ts +16 -0
- package/dist/prompts/daemon.d.ts.map +1 -0
- package/dist/prompts/daemon.js +46 -0
- package/dist/prompts/daemon.js.map +1 -0
- package/dist/prompts/extraction.d.ts +13 -0
- package/dist/prompts/extraction.d.ts.map +1 -0
- package/dist/prompts/extraction.js +93 -0
- package/dist/prompts/extraction.js.map +1 -0
- package/dist/prompts/index.d.ts +17 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +27 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/memory.d.ts +11 -0
- package/dist/prompts/memory.d.ts.map +1 -0
- package/dist/prompts/memory.js +23 -0
- package/dist/prompts/memory.js.map +1 -0
- package/dist/prompts/onboarding.d.ts +16 -0
- package/dist/prompts/onboarding.d.ts.map +1 -0
- package/dist/prompts/onboarding.js +183 -0
- package/dist/prompts/onboarding.js.map +1 -0
- package/dist/prompts/prd.d.ts +12 -0
- package/dist/prompts/prd.d.ts.map +1 -0
- package/dist/prompts/prd.js +211 -0
- package/dist/prompts/prd.js.map +1 -0
- package/dist/prompts/quality.d.ts +11 -0
- package/dist/prompts/quality.d.ts.map +1 -0
- package/dist/prompts/quality.js +11 -0
- package/dist/prompts/quality.js.map +1 -0
- package/dist/prompts/skills.d.ts +16 -0
- package/dist/prompts/skills.d.ts.map +1 -0
- package/dist/prompts/skills.js +30 -0
- package/dist/prompts/skills.js.map +1 -0
- package/hooks/succ-post-tool.cjs +227 -0
- package/hooks/succ-pre-tool.cjs +312 -0
- package/hooks/succ-session-end.cjs +85 -0
- package/hooks/succ-session-start.cjs +618 -0
- package/hooks/succ-stop-reflection.cjs +87 -0
- package/hooks/succ-user-prompt.cjs +220 -0
- package/package.json +128 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Working Memory Pipeline
|
|
3
|
+
*
|
|
4
|
+
* Filters and scores memories for session startup context loading.
|
|
5
|
+
* Implements two-phase fetch: pinned memories first, then scored recent.
|
|
6
|
+
*
|
|
7
|
+
* 1. Validity filtering (via isValidAt from temporal.ts)
|
|
8
|
+
* 2. Pinned memories always included (correction_count >= 2 OR is_invariant)
|
|
9
|
+
* 3. Remaining slots filled by priority_score (or effectiveScore fallback)
|
|
10
|
+
* 4. Diversity filter removes near-duplicate embeddings (cosine > 0.85)
|
|
11
|
+
* 5. Fallback to recency if scoring data is missing
|
|
12
|
+
* 6. Telemetry for anomalies
|
|
13
|
+
*/
|
|
14
|
+
/** Pinning threshold: memories with correction_count >= this are Tier 1 pins */
|
|
15
|
+
export declare const PIN_THRESHOLD = 2;
|
|
16
|
+
/** Max similarity allowed between two memories in working set */
|
|
17
|
+
export declare const DIVERSITY_THRESHOLD = 0.85;
|
|
18
|
+
/** Minimum fields needed from a raw memory row */
|
|
19
|
+
export interface WorkingMemoryCandidate {
|
|
20
|
+
id: number;
|
|
21
|
+
content: string;
|
|
22
|
+
quality_score: number | null;
|
|
23
|
+
access_count: number;
|
|
24
|
+
created_at: string;
|
|
25
|
+
last_accessed: string | null;
|
|
26
|
+
valid_from: string | null;
|
|
27
|
+
valid_until: string | null;
|
|
28
|
+
correction_count: number;
|
|
29
|
+
is_invariant: boolean;
|
|
30
|
+
type?: string | null;
|
|
31
|
+
tags?: string[] | string | null;
|
|
32
|
+
priority_score?: number | null;
|
|
33
|
+
}
|
|
34
|
+
/** Thrown when attempting to delete or invalidate a pinned (Tier 1) memory */
|
|
35
|
+
export declare class PinnedMemoryError extends Error {
|
|
36
|
+
readonly memoryId: number;
|
|
37
|
+
constructor(memoryId: number);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Detect if memory content contains invariant language (rules, constraints).
|
|
41
|
+
* Used to auto-set is_invariant on new memories.
|
|
42
|
+
* This is the fast sync path — regex only, covers 8 languages.
|
|
43
|
+
*/
|
|
44
|
+
export declare function detectInvariant(content: string): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Canonical invariant phrases for reference embedding similarity.
|
|
47
|
+
* English only — the multilingual embedding model maps semantically similar
|
|
48
|
+
* content in ANY language to nearby vectors.
|
|
49
|
+
*/
|
|
50
|
+
export declare const INVARIANT_REFERENCE_PHRASES: string[];
|
|
51
|
+
/**
|
|
52
|
+
* Detect invariant content using embedding similarity (language-agnostic).
|
|
53
|
+
* Fallback for when regex detectInvariant() misses non-covered languages.
|
|
54
|
+
* Uses the content embedding that's already computed at save time — zero extra API cost.
|
|
55
|
+
*/
|
|
56
|
+
export declare function detectInvariantWithEmbedding(content: string, embedding: number[]): Promise<boolean>;
|
|
57
|
+
/**
|
|
58
|
+
* Clear cached invariant reference embeddings (for tests).
|
|
59
|
+
*/
|
|
60
|
+
export declare function clearInvariantEmbeddingCache(): void;
|
|
61
|
+
/**
|
|
62
|
+
* Check if a memory is pinned (Tier 1 working memory).
|
|
63
|
+
*/
|
|
64
|
+
export declare function isPinned(memory: {
|
|
65
|
+
is_invariant: boolean;
|
|
66
|
+
correction_count: number;
|
|
67
|
+
}): boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Get the weight for a memory type. Higher = more important.
|
|
70
|
+
* Tags like "critical", "architecture", "security" add a +0.1 boost.
|
|
71
|
+
*/
|
|
72
|
+
export declare function getTagWeight(type: string | null, tags: string[]): number;
|
|
73
|
+
/**
|
|
74
|
+
* Compute confidence-decayed quality score.
|
|
75
|
+
* Quality decays exponentially based on time since last access (half-life 7 days).
|
|
76
|
+
* Floor at 10% of quality_score to prevent total decay.
|
|
77
|
+
*/
|
|
78
|
+
export declare function computeConfidenceDecay(qualityScore: number | null, lastAccessed: string | null, createdAt: string, now: Date): number;
|
|
79
|
+
/**
|
|
80
|
+
* Compute the priority_score for a memory.
|
|
81
|
+
* Formula: 0.30*is_invariant + 0.25*confidence_decayed + 0.20*correction_capped
|
|
82
|
+
* + 0.15*tag_weight + 0.10*access_capped
|
|
83
|
+
*/
|
|
84
|
+
export declare function computePriorityScore(m: {
|
|
85
|
+
is_invariant: boolean;
|
|
86
|
+
quality_score: number | null;
|
|
87
|
+
correction_count: number;
|
|
88
|
+
type?: string | null;
|
|
89
|
+
tags?: string[] | string | null;
|
|
90
|
+
access_count: number;
|
|
91
|
+
last_accessed: string | null;
|
|
92
|
+
created_at: string;
|
|
93
|
+
}, now: Date): number;
|
|
94
|
+
/**
|
|
95
|
+
* Apply the working memory pipeline with two-phase fetch:
|
|
96
|
+
* Phase 1: Include all pinned memories (correction_count >= 2 OR is_invariant)
|
|
97
|
+
* Phase 2: Fill remaining slots with scored recent memories
|
|
98
|
+
*
|
|
99
|
+
* @param memories - Raw memories from backend (pre-sorted by created_at DESC)
|
|
100
|
+
* @param limit - Max total memories to return
|
|
101
|
+
* @param now - Current time (injectable for testing)
|
|
102
|
+
* @param pinned - Pinned memories from getPinnedMemories() — may overlap with memories
|
|
103
|
+
* @returns Pinned + scored memories, up to `limit`
|
|
104
|
+
*/
|
|
105
|
+
export declare function applyWorkingMemoryPipeline<T extends WorkingMemoryCandidate>(memories: T[], limit: number, now?: Date, pinned?: T[]): T[];
|
|
106
|
+
/**
|
|
107
|
+
* Remove near-duplicate memories based on embedding cosine similarity.
|
|
108
|
+
* Greedy: iterate in order, skip if too similar to any already-selected.
|
|
109
|
+
*
|
|
110
|
+
* @param memories - Scored memories (order matters — higher priority first)
|
|
111
|
+
* @param getEmbeddings - Async function to fetch embeddings by IDs
|
|
112
|
+
* @param maxSimilarity - Threshold above which items are considered duplicates
|
|
113
|
+
* @returns Deduplicated list preserving original order
|
|
114
|
+
*/
|
|
115
|
+
export declare function applyDiversityFilter<T extends {
|
|
116
|
+
id: number;
|
|
117
|
+
}>(memories: T[], getEmbeddings: (ids: number[]) => Promise<Map<number, number[]>>, maxSimilarity?: number): Promise<T[]>;
|
|
118
|
+
//# sourceMappingURL=working-memory-pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"working-memory-pipeline.d.ts","sourceRoot":"","sources":["../../src/lib/working-memory-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH,gFAAgF;AAChF,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,iEAAiE;AACjE,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAqBxC,kDAAkD;AAClD,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAMD,8EAA8E;AAC9E,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,SAAgB,QAAQ,EAAE,MAAM,CAAC;gBACrB,QAAQ,EAAE,MAAM;CAK7B;AAMD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAiCxD;AAMD;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,UAQvC,CAAC;AAMF;;;;GAIG;AACH,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,OAAO,CAAC,CAiBlB;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,IAAI,CAGnD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE;IAAE,YAAY,EAAE,OAAO,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAE7F;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAMxE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,IAAI,GACR,MAAM,CAOR;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,CAAC,EAAE;IACD,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB,EACD,GAAG,EAAE,IAAI,GACR,MAAM,CAQR;AAmCD;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,sBAAsB,EACzE,QAAQ,EAAE,CAAC,EAAE,EACb,KAAK,EAAE,MAAM,EACb,GAAG,GAAE,IAAiB,EACtB,MAAM,CAAC,EAAE,CAAC,EAAE,GACX,CAAC,EAAE,CAsGL;AAMD;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EACjE,QAAQ,EAAE,CAAC,EAAE,EACb,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EAChE,aAAa,GAAE,MAA4B,GAC1C,OAAO,CAAC,CAAC,EAAE,CAAC,CA4Bd"}
|
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Working Memory Pipeline
|
|
3
|
+
*
|
|
4
|
+
* Filters and scores memories for session startup context loading.
|
|
5
|
+
* Implements two-phase fetch: pinned memories first, then scored recent.
|
|
6
|
+
*
|
|
7
|
+
* 1. Validity filtering (via isValidAt from temporal.ts)
|
|
8
|
+
* 2. Pinned memories always included (correction_count >= 2 OR is_invariant)
|
|
9
|
+
* 3. Remaining slots filled by priority_score (or effectiveScore fallback)
|
|
10
|
+
* 4. Diversity filter removes near-duplicate embeddings (cosine > 0.85)
|
|
11
|
+
* 5. Fallback to recency if scoring data is missing
|
|
12
|
+
* 6. Telemetry for anomalies
|
|
13
|
+
*/
|
|
14
|
+
import { isValidAt } from './temporal.js';
|
|
15
|
+
import { calculateEffectiveScore } from './retention.js';
|
|
16
|
+
import { logWarn, logInfo } from './fault-logger.js';
|
|
17
|
+
const COMPONENT = 'working-memory';
|
|
18
|
+
/** Pinning threshold: memories with correction_count >= this are Tier 1 pins */
|
|
19
|
+
export const PIN_THRESHOLD = 2;
|
|
20
|
+
/** Max similarity allowed between two memories in working set */
|
|
21
|
+
export const DIVERSITY_THRESHOLD = 0.85;
|
|
22
|
+
// ============================================================================
|
|
23
|
+
// Type weights for priority_score formula
|
|
24
|
+
// ============================================================================
|
|
25
|
+
const TYPE_WEIGHTS = {
|
|
26
|
+
decision: 1.0,
|
|
27
|
+
error: 0.9,
|
|
28
|
+
dead_end: 0.85,
|
|
29
|
+
pattern: 0.8,
|
|
30
|
+
learning: 0.7,
|
|
31
|
+
observation: 0.5,
|
|
32
|
+
};
|
|
33
|
+
const BOOST_TAGS = /^(critical|architecture|security)$/i;
|
|
34
|
+
// ============================================================================
|
|
35
|
+
// Error class
|
|
36
|
+
// ============================================================================
|
|
37
|
+
/** Thrown when attempting to delete or invalidate a pinned (Tier 1) memory */
|
|
38
|
+
export class PinnedMemoryError extends Error {
|
|
39
|
+
memoryId;
|
|
40
|
+
constructor(memoryId) {
|
|
41
|
+
super(`Memory ${memoryId} is pinned (Tier 1) and cannot be deleted or invalidated`);
|
|
42
|
+
this.name = 'PinnedMemoryError';
|
|
43
|
+
this.memoryId = memoryId;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// ============================================================================
|
|
47
|
+
// Pure functions
|
|
48
|
+
// ============================================================================
|
|
49
|
+
/**
|
|
50
|
+
* Detect if memory content contains invariant language (rules, constraints).
|
|
51
|
+
* Used to auto-set is_invariant on new memories.
|
|
52
|
+
* This is the fast sync path — regex only, covers 8 languages.
|
|
53
|
+
*/
|
|
54
|
+
export function detectInvariant(content) {
|
|
55
|
+
const text = content.toLowerCase().replace(/\s+/g, ' ');
|
|
56
|
+
const patterns = [
|
|
57
|
+
// English
|
|
58
|
+
/\b(?:always|never|must|shall)\s+\w/,
|
|
59
|
+
/\b(?:must not|shall not|do not|don't)\s+\w/,
|
|
60
|
+
/\b(?:required|mandatory|forbidden|prohibited)\b/,
|
|
61
|
+
/\b(?:critical|important)\s*:/,
|
|
62
|
+
/\bnever\b.*\bwithout\b/,
|
|
63
|
+
/\balways\b.*\bbefore\b/,
|
|
64
|
+
// Russian
|
|
65
|
+
/(?:всегда|никогда|обязательно|запрещено|нельзя|недопустимо)\s+\S/,
|
|
66
|
+
/(?:нельзя|запрещено|недопустимо)(?:\s|$)/,
|
|
67
|
+
/(?:должен|должна|должно|должны)\s+\S/,
|
|
68
|
+
/(?:ни в коем случае|ни при каких|строго запрещ)/,
|
|
69
|
+
/(?:критично|важно)\s*:/,
|
|
70
|
+
// German
|
|
71
|
+
/\b(?:immer|niemals|nie)\s+\w/,
|
|
72
|
+
/\b(?:muss|müssen|verboten|pflicht)\b/,
|
|
73
|
+
// French
|
|
74
|
+
/\b(?:toujours|jamais)\s+\w/,
|
|
75
|
+
/\b(?:obligatoire|interdit|défendu)\b/,
|
|
76
|
+
// Spanish
|
|
77
|
+
/\b(?:siempre|nunca|jamás)\s+\w/,
|
|
78
|
+
/\b(?:obligatorio|prohibido|requerido)\b/,
|
|
79
|
+
// Chinese
|
|
80
|
+
/(?:必须|绝不|永远不|禁止|始终|一定要|不得|不允许|不可以)/,
|
|
81
|
+
// Japanese
|
|
82
|
+
/(?:必ず|絶対に|禁止|してはいけない|しなければならない|常に)/,
|
|
83
|
+
// Korean
|
|
84
|
+
/(?:반드시|절대로|금지|항상|해서는 안)/,
|
|
85
|
+
];
|
|
86
|
+
return patterns.some((p) => p.test(text));
|
|
87
|
+
}
|
|
88
|
+
// ============================================================================
|
|
89
|
+
// Embedding-based invariant detection (language-agnostic fallback)
|
|
90
|
+
// ============================================================================
|
|
91
|
+
/**
|
|
92
|
+
* Canonical invariant phrases for reference embedding similarity.
|
|
93
|
+
* English only — the multilingual embedding model maps semantically similar
|
|
94
|
+
* content in ANY language to nearby vectors.
|
|
95
|
+
*/
|
|
96
|
+
export const INVARIANT_REFERENCE_PHRASES = [
|
|
97
|
+
'You must always do this without exception',
|
|
98
|
+
'This is strictly forbidden and must never be done',
|
|
99
|
+
'This is a mandatory requirement that cannot be skipped',
|
|
100
|
+
'Critical rule: never violate this under any circumstances',
|
|
101
|
+
'This is permanently required and shall not be changed',
|
|
102
|
+
'Under no circumstances should this be modified or removed',
|
|
103
|
+
'This policy is non-negotiable and applies at all times',
|
|
104
|
+
];
|
|
105
|
+
const INVARIANT_REF_SET = 'invariant-detection';
|
|
106
|
+
const INVARIANT_SIMILARITY_THRESHOLD = 0.55;
|
|
107
|
+
let _invariantRefsRegistered = false;
|
|
108
|
+
/**
|
|
109
|
+
* Detect invariant content using embedding similarity (language-agnostic).
|
|
110
|
+
* Fallback for when regex detectInvariant() misses non-covered languages.
|
|
111
|
+
* Uses the content embedding that's already computed at save time — zero extra API cost.
|
|
112
|
+
*/
|
|
113
|
+
export async function detectInvariantWithEmbedding(content, embedding) {
|
|
114
|
+
if (embedding.length === 0)
|
|
115
|
+
return false;
|
|
116
|
+
try {
|
|
117
|
+
const { registerReferenceSet, maxSimilarityToReference } = await import('./reference-embeddings.js');
|
|
118
|
+
if (!_invariantRefsRegistered) {
|
|
119
|
+
registerReferenceSet(INVARIANT_REF_SET, INVARIANT_REFERENCE_PHRASES);
|
|
120
|
+
_invariantRefsRegistered = true;
|
|
121
|
+
}
|
|
122
|
+
const maxSim = await maxSimilarityToReference(embedding, INVARIANT_REF_SET);
|
|
123
|
+
return maxSim >= INVARIANT_SIMILARITY_THRESHOLD;
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Clear cached invariant reference embeddings (for tests).
|
|
131
|
+
*/
|
|
132
|
+
export function clearInvariantEmbeddingCache() {
|
|
133
|
+
_invariantRefsRegistered = false;
|
|
134
|
+
// The actual embeddings are cleared via clearReferenceCache() from reference-embeddings.ts
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Check if a memory is pinned (Tier 1 working memory).
|
|
138
|
+
*/
|
|
139
|
+
export function isPinned(memory) {
|
|
140
|
+
return memory.is_invariant || memory.correction_count >= PIN_THRESHOLD;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Get the weight for a memory type. Higher = more important.
|
|
144
|
+
* Tags like "critical", "architecture", "security" add a +0.1 boost.
|
|
145
|
+
*/
|
|
146
|
+
export function getTagWeight(type, tags) {
|
|
147
|
+
let weight = TYPE_WEIGHTS[type ?? 'observation'] ?? 0.5;
|
|
148
|
+
if (tags.some((t) => BOOST_TAGS.test(t))) {
|
|
149
|
+
weight = Math.min(weight + 0.1, 1.0);
|
|
150
|
+
}
|
|
151
|
+
return weight;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Compute confidence-decayed quality score.
|
|
155
|
+
* Quality decays exponentially based on time since last access (half-life 7 days).
|
|
156
|
+
* Floor at 10% of quality_score to prevent total decay.
|
|
157
|
+
*/
|
|
158
|
+
export function computeConfidenceDecay(qualityScore, lastAccessed, createdAt, now) {
|
|
159
|
+
const qs = qualityScore ?? 0.5;
|
|
160
|
+
const ref = lastAccessed ?? createdAt;
|
|
161
|
+
const hoursSince = (now.getTime() - new Date(ref).getTime()) / 3_600_000;
|
|
162
|
+
const halfLife = 168; // 7 days in hours
|
|
163
|
+
const decay = Math.exp((-Math.LN2 / halfLife) * Math.max(hoursSince, 0));
|
|
164
|
+
return qs * Math.max(decay, 0.1);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Compute the priority_score for a memory.
|
|
168
|
+
* Formula: 0.30*is_invariant + 0.25*confidence_decayed + 0.20*correction_capped
|
|
169
|
+
* + 0.15*tag_weight + 0.10*access_capped
|
|
170
|
+
*/
|
|
171
|
+
export function computePriorityScore(m, now) {
|
|
172
|
+
const tags = parseTags(m.tags);
|
|
173
|
+
const isInv = m.is_invariant ? 1 : 0;
|
|
174
|
+
const confidence = computeConfidenceDecay(m.quality_score, m.last_accessed, m.created_at, now);
|
|
175
|
+
const corrCapped = Math.min(m.correction_count, 5) / 5;
|
|
176
|
+
const tagW = getTagWeight(m.type ?? null, tags);
|
|
177
|
+
const accessCapped = Math.min(m.access_count, 20) / 20;
|
|
178
|
+
return 0.3 * isInv + 0.25 * confidence + 0.2 * corrCapped + 0.15 * tagW + 0.1 * accessCapped;
|
|
179
|
+
}
|
|
180
|
+
/** Parse tags from various formats (string[], JSON string, null) */
|
|
181
|
+
function parseTags(tags) {
|
|
182
|
+
if (!tags)
|
|
183
|
+
return [];
|
|
184
|
+
if (Array.isArray(tags))
|
|
185
|
+
return tags;
|
|
186
|
+
try {
|
|
187
|
+
return JSON.parse(tags);
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
return [];
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
// ============================================================================
|
|
194
|
+
// Cosine similarity (local copy — avoids importing embeddings.ts with heavy deps)
|
|
195
|
+
// ============================================================================
|
|
196
|
+
function cosineSimilarity(a, b) {
|
|
197
|
+
if (a.length !== b.length || a.length === 0)
|
|
198
|
+
return 0;
|
|
199
|
+
let dot = 0;
|
|
200
|
+
let normA = 0;
|
|
201
|
+
let normB = 0;
|
|
202
|
+
for (let i = 0; i < a.length; i++) {
|
|
203
|
+
dot += a[i] * b[i];
|
|
204
|
+
normA += a[i] * a[i];
|
|
205
|
+
normB += b[i] * b[i];
|
|
206
|
+
}
|
|
207
|
+
const denom = Math.sqrt(normA) * Math.sqrt(normB);
|
|
208
|
+
return denom === 0 ? 0 : dot / denom;
|
|
209
|
+
}
|
|
210
|
+
// ============================================================================
|
|
211
|
+
// Main pipeline
|
|
212
|
+
// ============================================================================
|
|
213
|
+
/**
|
|
214
|
+
* Apply the working memory pipeline with two-phase fetch:
|
|
215
|
+
* Phase 1: Include all pinned memories (correction_count >= 2 OR is_invariant)
|
|
216
|
+
* Phase 2: Fill remaining slots with scored recent memories
|
|
217
|
+
*
|
|
218
|
+
* @param memories - Raw memories from backend (pre-sorted by created_at DESC)
|
|
219
|
+
* @param limit - Max total memories to return
|
|
220
|
+
* @param now - Current time (injectable for testing)
|
|
221
|
+
* @param pinned - Pinned memories from getPinnedMemories() — may overlap with memories
|
|
222
|
+
* @returns Pinned + scored memories, up to `limit`
|
|
223
|
+
*/
|
|
224
|
+
export function applyWorkingMemoryPipeline(memories, limit, now = new Date(), pinned) {
|
|
225
|
+
const totalBefore = memories.length + (pinned?.length ?? 0);
|
|
226
|
+
// Step 1: Collect and deduplicate pinned memories
|
|
227
|
+
const pinnedIds = new Set();
|
|
228
|
+
const pinnedValid = [];
|
|
229
|
+
if (pinned && pinned.length > 0) {
|
|
230
|
+
for (const m of pinned) {
|
|
231
|
+
if (isValidAt(m.valid_from, m.valid_until, now) && !pinnedIds.has(m.id)) {
|
|
232
|
+
pinnedIds.add(m.id);
|
|
233
|
+
pinnedValid.push(m);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
// Also check memories array for any that are pinned (in case no separate fetch)
|
|
238
|
+
for (const m of memories) {
|
|
239
|
+
if (isPinned(m) && isValidAt(m.valid_from, m.valid_until, now) && !pinnedIds.has(m.id)) {
|
|
240
|
+
pinnedIds.add(m.id);
|
|
241
|
+
pinnedValid.push(m);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
if (pinnedValid.length > 0) {
|
|
245
|
+
logInfo(COMPONENT, `${pinnedValid.length} pinned memories included (Tier 1)`, {
|
|
246
|
+
pinned: pinnedValid.length,
|
|
247
|
+
invariant: pinnedValid.filter((m) => m.is_invariant).length,
|
|
248
|
+
corrected: pinnedValid.filter((m) => m.correction_count >= PIN_THRESHOLD).length,
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
// If pinned already fills limit, just return them
|
|
252
|
+
if (pinnedValid.length >= limit) {
|
|
253
|
+
return pinnedValid.slice(0, limit);
|
|
254
|
+
}
|
|
255
|
+
// Step 2: Filter remaining memories by validity, excluding already-pinned
|
|
256
|
+
const remainingSlots = limit - pinnedValid.length;
|
|
257
|
+
const candidates = memories.filter((m) => !pinnedIds.has(m.id) && isValidAt(m.valid_from, m.valid_until, now));
|
|
258
|
+
const pinnedFromMemories = memories.filter((m) => pinnedIds.has(m.id)).length;
|
|
259
|
+
const filteredOut = memories.length - candidates.length - pinnedFromMemories;
|
|
260
|
+
const filteredPercent = memories.length > 0 ? (filteredOut / memories.length) * 100 : 0;
|
|
261
|
+
if (filteredPercent > 10) {
|
|
262
|
+
logInfo(COMPONENT, `Validity filter removed ${filteredOut}/${memories.length} candidates (${filteredPercent.toFixed(1)}%)`, { total: memories.length, filtered: filteredOut });
|
|
263
|
+
}
|
|
264
|
+
if (candidates.length === 0) {
|
|
265
|
+
if (pinnedValid.length > 0)
|
|
266
|
+
return pinnedValid;
|
|
267
|
+
if (totalBefore > 0) {
|
|
268
|
+
logWarn(COMPONENT, 'Pipeline returned 0 memories from non-empty input', {
|
|
269
|
+
totalBefore,
|
|
270
|
+
afterValidity: 0,
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
return [];
|
|
274
|
+
}
|
|
275
|
+
// Step 3: Score and rank remaining candidates
|
|
276
|
+
// Use priority_score if available, otherwise fall back to effectiveScore
|
|
277
|
+
const hasAnyScore = candidates.some((m) => m.priority_score != null || m.quality_score !== null);
|
|
278
|
+
if (!hasAnyScore) {
|
|
279
|
+
logWarn(COMPONENT, 'All candidates lack quality_score — falling back to recency order', {
|
|
280
|
+
count: candidates.length,
|
|
281
|
+
});
|
|
282
|
+
return [...pinnedValid, ...candidates.slice(0, remainingSlots)];
|
|
283
|
+
}
|
|
284
|
+
const scored = candidates.map((m) => {
|
|
285
|
+
// Prefer precomputed priority_score
|
|
286
|
+
if (m.priority_score != null) {
|
|
287
|
+
return { memory: m, score: m.priority_score };
|
|
288
|
+
}
|
|
289
|
+
// Fallback to calculateEffectiveScore
|
|
290
|
+
const retentionInput = {
|
|
291
|
+
id: m.id,
|
|
292
|
+
content: m.content,
|
|
293
|
+
quality_score: m.quality_score,
|
|
294
|
+
access_count: m.access_count,
|
|
295
|
+
created_at: m.created_at,
|
|
296
|
+
last_accessed: m.last_accessed,
|
|
297
|
+
};
|
|
298
|
+
try {
|
|
299
|
+
const result = calculateEffectiveScore(retentionInput);
|
|
300
|
+
return { memory: m, score: result.effectiveScore };
|
|
301
|
+
}
|
|
302
|
+
catch {
|
|
303
|
+
return { memory: m, score: 0 };
|
|
304
|
+
}
|
|
305
|
+
});
|
|
306
|
+
scored.sort((a, b) => b.score - a.score);
|
|
307
|
+
return [...pinnedValid, ...scored.slice(0, remainingSlots).map((s) => s.memory)];
|
|
308
|
+
}
|
|
309
|
+
// ============================================================================
|
|
310
|
+
// Diversity filter (async — uses embeddings)
|
|
311
|
+
// ============================================================================
|
|
312
|
+
/**
|
|
313
|
+
* Remove near-duplicate memories based on embedding cosine similarity.
|
|
314
|
+
* Greedy: iterate in order, skip if too similar to any already-selected.
|
|
315
|
+
*
|
|
316
|
+
* @param memories - Scored memories (order matters — higher priority first)
|
|
317
|
+
* @param getEmbeddings - Async function to fetch embeddings by IDs
|
|
318
|
+
* @param maxSimilarity - Threshold above which items are considered duplicates
|
|
319
|
+
* @returns Deduplicated list preserving original order
|
|
320
|
+
*/
|
|
321
|
+
export async function applyDiversityFilter(memories, getEmbeddings, maxSimilarity = DIVERSITY_THRESHOLD) {
|
|
322
|
+
if (memories.length <= 1)
|
|
323
|
+
return memories;
|
|
324
|
+
const embeddings = await getEmbeddings(memories.map((m) => m.id));
|
|
325
|
+
if (embeddings.size === 0)
|
|
326
|
+
return memories;
|
|
327
|
+
const selected = [];
|
|
328
|
+
const selectedEmbeddings = [];
|
|
329
|
+
for (const m of memories) {
|
|
330
|
+
const emb = embeddings.get(m.id);
|
|
331
|
+
if (!emb) {
|
|
332
|
+
// Keep items without embeddings (can't compare)
|
|
333
|
+
selected.push(m);
|
|
334
|
+
continue;
|
|
335
|
+
}
|
|
336
|
+
const tooSimilar = selectedEmbeddings.some((sEmb) => cosineSimilarity(emb, sEmb) > maxSimilarity);
|
|
337
|
+
if (!tooSimilar) {
|
|
338
|
+
selected.push(m);
|
|
339
|
+
selectedEmbeddings.push(emb);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
return selected;
|
|
343
|
+
}
|
|
344
|
+
//# sourceMappingURL=working-memory-pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"working-memory-pipeline.js","sourceRoot":"","sources":["../../src/lib/working-memory-pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server helper utilities
|
|
3
|
+
*
|
|
4
|
+
* Shared helpers used across MCP tool and resource handlers:
|
|
5
|
+
* - setupGracefulShutdown: Process signal handlers
|
|
6
|
+
* - trackTokenSavings: Track RAG query token savings
|
|
7
|
+
* - trackMemoryAccess: Track memory access for retention decay
|
|
8
|
+
* - getBrainPath: Get brain vault directory path
|
|
9
|
+
* - parseRelativeDate: Parse relative date strings
|
|
10
|
+
* - createToolResponse / createErrorResponse: DRY response helpers
|
|
11
|
+
*/
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
import { type TokenEventType } from '../lib/storage/index.js';
|
|
14
|
+
import type { SearchResult, ToolResponse } from './types.js';
|
|
15
|
+
export declare const projectPathParam: z.ZodOptional<z.ZodString>;
|
|
16
|
+
/**
|
|
17
|
+
* Set the current project (called once after initStorageDispatcher at startup)
|
|
18
|
+
*/
|
|
19
|
+
export declare function setCurrentProject(projectPath: string): void;
|
|
20
|
+
/**
|
|
21
|
+
* Apply project_path from tool call params.
|
|
22
|
+
* If provided and different from current project, sets SUCC_PROJECT_ROOT
|
|
23
|
+
* and reinitializes storage dispatcher to use the correct database.
|
|
24
|
+
*/
|
|
25
|
+
export declare function applyProjectPath(projectPath?: string): Promise<void>;
|
|
26
|
+
export declare function setupGracefulShutdown(): void;
|
|
27
|
+
export declare function trackTokenSavings(eventType: TokenEventType, query: string, results: SearchResult[]): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Track memory access for retention decay.
|
|
30
|
+
* Memories that are frequently accessed will have higher effective scores.
|
|
31
|
+
*
|
|
32
|
+
* @param memoryIds - Array of memory IDs that were returned
|
|
33
|
+
* @param limit - The search limit (top N results)
|
|
34
|
+
* @param totalResults - Total number of results before limit
|
|
35
|
+
*/
|
|
36
|
+
export declare function trackMemoryAccess(memoryIds: number[], limit: number, _totalResults: number): Promise<void>;
|
|
37
|
+
export declare function getBrainPath(): string;
|
|
38
|
+
/**
|
|
39
|
+
* Parse relative date strings like "30d", "1w", "3m"
|
|
40
|
+
*/
|
|
41
|
+
export declare function parseRelativeDate(input: string): Date | null;
|
|
42
|
+
export declare function createToolResponse(text: string): ToolResponse;
|
|
43
|
+
export declare function createErrorResponse(text: string, component?: string, error?: Error): ToolResponse;
|
|
44
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/mcp/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EASL,KAAK,cAAc,EACpB,MAAM,yBAAyB,CAAC;AAOjC,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG7D,eAAO,MAAM,gBAAgB,4BAK1B,CAAC;AAKJ;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,QAEpD;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B1E;AAGD,wBAAgB,qBAAqB,SAsBpC;AAGD,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,cAAc,EACzB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,YAAY,EAAE,GACtB,OAAO,CAAC,IAAI,CAAC,CAiFf;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EAAE,EACnB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC,CAoBf;AAGD,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CA0B5D;AAGD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAI7D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,YAAY,CAQjG"}
|