@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 @@
|
|
|
1
|
+
{"version":3,"file":"query-expansion.js","sourceRoot":"","sources":["../../src/lib/query-expansion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGjD,MAAM,gBAAgB,GAAG;;;;;;;;;;;qBAWJ,CAAC;AAEtB;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAa,EAAE,IAAiB;IAChE,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAE1D,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,IAAI,SAAS,CAAC,OAAO,CAAC;IAE1C,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,OAAO,KAAK,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/E,MAAM,QAAQ,GAAG,MAAM,OAAO,CAC5B,MAAM,EACN;YACE,SAAS,EAAE,GAAG;YACd,WAAW,EAAE,GAAG;SACjB,EACD,cAAc,CACf,CAAC;QAEF,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEzD,2DAA2D;QAC3D,MAAM,QAAQ,GAAG,QAAQ;aACtB,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,kBAAkB;aAC3E,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;aACxD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,oCAAoC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAClE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEf,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,6EAA6E;QAC7E,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Readiness Gate — Search Confidence Assessment
|
|
3
|
+
*
|
|
4
|
+
* Assesses search result quality before returning MCP responses.
|
|
5
|
+
* Inspired by Empirica's epistemic framework (know >= 0.70 readiness gate).
|
|
6
|
+
*
|
|
7
|
+
* Non-blocking: never prevents results from being returned.
|
|
8
|
+
* Adds confidence metadata so AI agents can calibrate trust.
|
|
9
|
+
*/
|
|
10
|
+
import type { ReadinessGateConfig } from './config.js';
|
|
11
|
+
export interface ReadinessInput {
|
|
12
|
+
similarity: number;
|
|
13
|
+
bm25Score?: number;
|
|
14
|
+
vectorScore?: number;
|
|
15
|
+
quality_score?: number;
|
|
16
|
+
access_count?: number;
|
|
17
|
+
last_accessed?: string | null;
|
|
18
|
+
created_at?: string;
|
|
19
|
+
}
|
|
20
|
+
export type SearchType = 'docs' | 'code' | 'memories';
|
|
21
|
+
export interface ReadinessAssessment {
|
|
22
|
+
confidence: number;
|
|
23
|
+
recommendation: 'proceed' | 'warn' | 'insufficient';
|
|
24
|
+
factors: {
|
|
25
|
+
coverage: number;
|
|
26
|
+
top_similarity: number;
|
|
27
|
+
coherence: number;
|
|
28
|
+
quality_avg: number;
|
|
29
|
+
freshness: number;
|
|
30
|
+
};
|
|
31
|
+
weak_factors: string[];
|
|
32
|
+
}
|
|
33
|
+
export declare function assessReadiness(results: ReadinessInput[], searchType: SearchType, config?: ReadinessGateConfig): ReadinessAssessment;
|
|
34
|
+
export declare function formatReadinessHeader(assessment: ReadinessAssessment): string;
|
|
35
|
+
//# sourceMappingURL=readiness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readiness.d.ts","sourceRoot":"","sources":["../../src/lib/readiness.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAMvD,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AAEtD,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,SAAS,GAAG,MAAM,GAAG,cAAc,CAAC;IACpD,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAuFD,wBAAgB,eAAe,CAC7B,OAAO,EAAE,cAAc,EAAE,EACzB,UAAU,EAAE,UAAU,EACtB,MAAM,CAAC,EAAE,mBAAmB,GAC3B,mBAAmB,CAuDrB;AAMD,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,mBAAmB,GAAG,MAAM,CAkB7E"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Readiness Gate — Search Confidence Assessment
|
|
3
|
+
*
|
|
4
|
+
* Assesses search result quality before returning MCP responses.
|
|
5
|
+
* Inspired by Empirica's epistemic framework (know >= 0.70 readiness gate).
|
|
6
|
+
*
|
|
7
|
+
* Non-blocking: never prevents results from being returned.
|
|
8
|
+
* Adds confidence metadata so AI agents can calibrate trust.
|
|
9
|
+
*/
|
|
10
|
+
import { DEFAULT_READINESS_GATE_CONFIG } from './config.js';
|
|
11
|
+
const MEMORY_WEIGHTS = {
|
|
12
|
+
coverage: 0.2,
|
|
13
|
+
top_similarity: 0.3,
|
|
14
|
+
coherence: 0.15,
|
|
15
|
+
quality_avg: 0.2,
|
|
16
|
+
freshness: 0.15,
|
|
17
|
+
};
|
|
18
|
+
const DOC_CODE_WEIGHTS = {
|
|
19
|
+
coverage: 0.3,
|
|
20
|
+
top_similarity: 0.4,
|
|
21
|
+
coherence: 0.3,
|
|
22
|
+
quality_avg: 0,
|
|
23
|
+
freshness: 0,
|
|
24
|
+
};
|
|
25
|
+
// ============================================================================
|
|
26
|
+
// Factor calculations
|
|
27
|
+
// ============================================================================
|
|
28
|
+
function calcCoverage(count, expected) {
|
|
29
|
+
if (expected <= 0)
|
|
30
|
+
return count > 0 ? 1 : 0;
|
|
31
|
+
return Math.min(count / expected, 1.0);
|
|
32
|
+
}
|
|
33
|
+
function calcTopSimilarity(results) {
|
|
34
|
+
if (results.length === 0)
|
|
35
|
+
return 0;
|
|
36
|
+
return results[0].similarity;
|
|
37
|
+
}
|
|
38
|
+
function calcCoherence(results) {
|
|
39
|
+
if (results.length <= 1)
|
|
40
|
+
return results.length === 1 ? 0.5 : 0;
|
|
41
|
+
const sims = results.map((r) => r.similarity);
|
|
42
|
+
const mean = sims.reduce((a, b) => a + b, 0) / sims.length;
|
|
43
|
+
if (mean === 0)
|
|
44
|
+
return 0;
|
|
45
|
+
const variance = sims.reduce((sum, s) => sum + (s - mean) ** 2, 0) / sims.length;
|
|
46
|
+
const stddev = Math.sqrt(variance);
|
|
47
|
+
const cv = stddev / mean; // coefficient of variation
|
|
48
|
+
// cv=0 → perfect coherence (1.0), cv>=1 → no coherence (0.0)
|
|
49
|
+
return Math.max(0, Math.min(1, 1 - cv));
|
|
50
|
+
}
|
|
51
|
+
function calcQualityAvg(results) {
|
|
52
|
+
const withQuality = results.filter((r) => r.quality_score != null);
|
|
53
|
+
if (withQuality.length === 0)
|
|
54
|
+
return 0.5; // neutral fallback
|
|
55
|
+
return withQuality.reduce((sum, r) => sum + (r.quality_score ?? 0), 0) / withQuality.length;
|
|
56
|
+
}
|
|
57
|
+
function calcFreshness(results) {
|
|
58
|
+
const withAccess = results.filter((r) => r.last_accessed != null);
|
|
59
|
+
if (withAccess.length === 0)
|
|
60
|
+
return 0.5; // neutral fallback
|
|
61
|
+
const now = Date.now();
|
|
62
|
+
const HALF_LIFE_MS = 7 * 24 * 60 * 60 * 1000; // 7 days
|
|
63
|
+
const FLOOR = 0.1;
|
|
64
|
+
const decays = withAccess.map((r) => {
|
|
65
|
+
const lastAccessed = new Date(r.last_accessed).getTime();
|
|
66
|
+
const age = Math.max(0, now - lastAccessed);
|
|
67
|
+
const lambda = Math.LN2 / HALF_LIFE_MS;
|
|
68
|
+
return Math.max(FLOOR, Math.exp(-lambda * age));
|
|
69
|
+
});
|
|
70
|
+
return decays.reduce((a, b) => a + b, 0) / decays.length;
|
|
71
|
+
}
|
|
72
|
+
// ============================================================================
|
|
73
|
+
// Main assessment
|
|
74
|
+
// ============================================================================
|
|
75
|
+
export function assessReadiness(results, searchType, config) {
|
|
76
|
+
const thresholds = config?.thresholds ?? DEFAULT_READINESS_GATE_CONFIG.thresholds;
|
|
77
|
+
const expected = config?.expected_results ?? DEFAULT_READINESS_GATE_CONFIG.expected_results;
|
|
78
|
+
// Empty results
|
|
79
|
+
if (results.length === 0) {
|
|
80
|
+
return {
|
|
81
|
+
confidence: 0,
|
|
82
|
+
recommendation: 'insufficient',
|
|
83
|
+
factors: { coverage: 0, top_similarity: 0, coherence: 0, quality_avg: 0, freshness: 0 },
|
|
84
|
+
weak_factors: ['coverage', 'top_similarity', 'coherence'],
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
// Calculate factors
|
|
88
|
+
const factors = {
|
|
89
|
+
coverage: calcCoverage(results.length, expected),
|
|
90
|
+
top_similarity: calcTopSimilarity(results),
|
|
91
|
+
coherence: calcCoherence(results),
|
|
92
|
+
quality_avg: calcQualityAvg(results),
|
|
93
|
+
freshness: calcFreshness(results),
|
|
94
|
+
};
|
|
95
|
+
// Select weights based on search type
|
|
96
|
+
const weights = searchType === 'memories' ? MEMORY_WEIGHTS : DOC_CODE_WEIGHTS;
|
|
97
|
+
// Weighted sum
|
|
98
|
+
const confidence = weights.coverage * factors.coverage +
|
|
99
|
+
weights.top_similarity * factors.top_similarity +
|
|
100
|
+
weights.coherence * factors.coherence +
|
|
101
|
+
weights.quality_avg * factors.quality_avg +
|
|
102
|
+
weights.freshness * factors.freshness;
|
|
103
|
+
// Identify weak factors (below 0.5, with non-zero weight)
|
|
104
|
+
const weak_factors = [];
|
|
105
|
+
for (const [key, value] of Object.entries(factors)) {
|
|
106
|
+
if (weights[key] > 0 && value < 0.5) {
|
|
107
|
+
weak_factors.push(key);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// Recommendation
|
|
111
|
+
const proceedThreshold = thresholds.proceed ?? 0.7;
|
|
112
|
+
const warnThreshold = thresholds.warn ?? 0.4;
|
|
113
|
+
let recommendation;
|
|
114
|
+
if (confidence >= proceedThreshold) {
|
|
115
|
+
recommendation = 'proceed';
|
|
116
|
+
}
|
|
117
|
+
else if (confidence >= warnThreshold) {
|
|
118
|
+
recommendation = 'warn';
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
recommendation = 'insufficient';
|
|
122
|
+
}
|
|
123
|
+
return { confidence, recommendation, factors, weak_factors };
|
|
124
|
+
}
|
|
125
|
+
// ============================================================================
|
|
126
|
+
// Formatting
|
|
127
|
+
// ============================================================================
|
|
128
|
+
export function formatReadinessHeader(assessment) {
|
|
129
|
+
const pct = Math.round(assessment.confidence * 100);
|
|
130
|
+
if (assessment.recommendation === 'proceed') {
|
|
131
|
+
return ''; // Silent for high confidence
|
|
132
|
+
}
|
|
133
|
+
const weakStr = assessment.weak_factors.length > 0
|
|
134
|
+
? ` Weak: ${assessment.weak_factors.map((f) => `${f} (${Math.round(assessment.factors[f] * 100)}%)`).join(', ')}`
|
|
135
|
+
: '';
|
|
136
|
+
if (assessment.recommendation === 'warn') {
|
|
137
|
+
return `> **Confidence: ${pct}%** — Limited context available.${weakStr}`;
|
|
138
|
+
}
|
|
139
|
+
// insufficient
|
|
140
|
+
return `> **Low confidence: ${pct}%** — Results may be unreliable.${weakStr}`;
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=readiness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readiness.js","sourceRoot":"","sources":["../../src/lib/readiness.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reference Embedding Cache — shared infrastructure for embedding-based classification.
|
|
3
|
+
*
|
|
4
|
+
* Registers named sets of reference phrases, lazily computes their embeddings on first use,
|
|
5
|
+
* and provides max-similarity queries against cached reference sets.
|
|
6
|
+
* Used by detectInvariantWithEmbedding() and estimateSpecificityByEmbedding().
|
|
7
|
+
*/
|
|
8
|
+
export interface ReferenceSet {
|
|
9
|
+
phrases: string[];
|
|
10
|
+
embeddings: number[][] | null;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Register a named set of reference phrases.
|
|
14
|
+
* Embeddings are NOT computed here — they're lazily computed on first query.
|
|
15
|
+
*/
|
|
16
|
+
export declare function registerReferenceSet(name: string, phrases: string[]): void;
|
|
17
|
+
/**
|
|
18
|
+
* Get (or lazily compute) embeddings for a reference set.
|
|
19
|
+
*/
|
|
20
|
+
export declare function getReferenceEmbeddings(name: string): Promise<number[][]>;
|
|
21
|
+
/**
|
|
22
|
+
* Compute max cosine similarity between a content embedding and all embeddings in a reference set.
|
|
23
|
+
* Returns 0 if the reference set is empty or embeddings can't be computed.
|
|
24
|
+
*/
|
|
25
|
+
export declare function maxSimilarityToReference(embedding: number[], setName: string): Promise<number>;
|
|
26
|
+
/**
|
|
27
|
+
* Compute average cosine similarity between a content embedding and all embeddings in a reference set.
|
|
28
|
+
*/
|
|
29
|
+
export declare function avgSimilarityToReference(embedding: number[], setName: string): Promise<number>;
|
|
30
|
+
/**
|
|
31
|
+
* Clear all cached reference embeddings (for tests).
|
|
32
|
+
* Keeps the registered phrases — only clears computed embeddings.
|
|
33
|
+
*/
|
|
34
|
+
export declare function clearReferenceCache(): void;
|
|
35
|
+
/**
|
|
36
|
+
* Fully reset all reference sets (for tests).
|
|
37
|
+
*/
|
|
38
|
+
export declare function resetReferenceSets(): void;
|
|
39
|
+
//# sourceMappingURL=reference-embeddings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference-embeddings.d.ts","sourceRoot":"","sources":["../../src/lib/reference-embeddings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC;CAC/B;AAID;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAE1E;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAS9E;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,MAAM,EAAE,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,MAAM,EAAE,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAoBjB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAI1C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reference Embedding Cache — shared infrastructure for embedding-based classification.
|
|
3
|
+
*
|
|
4
|
+
* Registers named sets of reference phrases, lazily computes their embeddings on first use,
|
|
5
|
+
* and provides max-similarity queries against cached reference sets.
|
|
6
|
+
* Used by detectInvariantWithEmbedding() and estimateSpecificityByEmbedding().
|
|
7
|
+
*/
|
|
8
|
+
import { getEmbeddings, cosineSimilarity } from './embeddings.js';
|
|
9
|
+
const referenceSets = new Map();
|
|
10
|
+
/**
|
|
11
|
+
* Register a named set of reference phrases.
|
|
12
|
+
* Embeddings are NOT computed here — they're lazily computed on first query.
|
|
13
|
+
*/
|
|
14
|
+
export function registerReferenceSet(name, phrases) {
|
|
15
|
+
referenceSets.set(name, { phrases, embeddings: null });
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Get (or lazily compute) embeddings for a reference set.
|
|
19
|
+
*/
|
|
20
|
+
export async function getReferenceEmbeddings(name) {
|
|
21
|
+
const set = referenceSets.get(name);
|
|
22
|
+
if (!set)
|
|
23
|
+
throw new Error(`Reference set "${name}" not registered`);
|
|
24
|
+
if (set.embeddings === null) {
|
|
25
|
+
set.embeddings = await getEmbeddings(set.phrases);
|
|
26
|
+
}
|
|
27
|
+
return set.embeddings;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Compute max cosine similarity between a content embedding and all embeddings in a reference set.
|
|
31
|
+
* Returns 0 if the reference set is empty or embeddings can't be computed.
|
|
32
|
+
*/
|
|
33
|
+
export async function maxSimilarityToReference(embedding, setName) {
|
|
34
|
+
try {
|
|
35
|
+
const refEmbeddings = await getReferenceEmbeddings(setName);
|
|
36
|
+
if (refEmbeddings.length === 0)
|
|
37
|
+
return 0;
|
|
38
|
+
let maxSim = -1;
|
|
39
|
+
for (const ref of refEmbeddings) {
|
|
40
|
+
try {
|
|
41
|
+
const sim = cosineSimilarity(embedding, ref);
|
|
42
|
+
if (sim > maxSim)
|
|
43
|
+
maxSim = sim;
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// Dimension mismatch — skip this reference
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return maxSim > 0 ? maxSim : 0;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return 0;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Compute average cosine similarity between a content embedding and all embeddings in a reference set.
|
|
57
|
+
*/
|
|
58
|
+
export async function avgSimilarityToReference(embedding, setName) {
|
|
59
|
+
try {
|
|
60
|
+
const refEmbeddings = await getReferenceEmbeddings(setName);
|
|
61
|
+
if (refEmbeddings.length === 0)
|
|
62
|
+
return 0;
|
|
63
|
+
let sum = 0;
|
|
64
|
+
let count = 0;
|
|
65
|
+
for (const ref of refEmbeddings) {
|
|
66
|
+
try {
|
|
67
|
+
sum += cosineSimilarity(embedding, ref);
|
|
68
|
+
count++;
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
// Dimension mismatch — skip
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return count > 0 ? sum / count : 0;
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return 0;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Clear all cached reference embeddings (for tests).
|
|
82
|
+
* Keeps the registered phrases — only clears computed embeddings.
|
|
83
|
+
*/
|
|
84
|
+
export function clearReferenceCache() {
|
|
85
|
+
for (const set of referenceSets.values()) {
|
|
86
|
+
set.embeddings = null;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Fully reset all reference sets (for tests).
|
|
91
|
+
*/
|
|
92
|
+
export function resetReferenceSets() {
|
|
93
|
+
referenceSets.clear();
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=reference-embeddings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference-embeddings.js","sourceRoot":"","sources":["../../src/lib/reference-embeddings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reflection Synthesizer
|
|
3
|
+
*
|
|
4
|
+
* Reads community clusters from the memory graph and synthesizes
|
|
5
|
+
* pattern/learning memories from unreflected observations.
|
|
6
|
+
*
|
|
7
|
+
* Plugs into daemon's handleReflection() between community detection
|
|
8
|
+
* and centrality cache update.
|
|
9
|
+
*/
|
|
10
|
+
import type { CommunityResult } from './graph/community-detection.js';
|
|
11
|
+
export interface SynthesisResult {
|
|
12
|
+
clustersProcessed: number;
|
|
13
|
+
patternsCreated: number;
|
|
14
|
+
duplicatesSkipped: number;
|
|
15
|
+
reinforced: number;
|
|
16
|
+
observationsMarked: number;
|
|
17
|
+
errors: string[];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Synthesize patterns from community clusters.
|
|
21
|
+
* Only processes clusters with enough unreflected observations.
|
|
22
|
+
*/
|
|
23
|
+
export declare function synthesizeFromCommunities(communityResult: CommunityResult, options?: {
|
|
24
|
+
dryRun?: boolean;
|
|
25
|
+
log?: (msg: string) => void;
|
|
26
|
+
}): Promise<SynthesisResult>;
|
|
27
|
+
//# sourceMappingURL=reflection-synthesizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reflection-synthesizer.d.ts","sourceRoot":"","sources":["../../src/lib/reflection-synthesizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AA0BtE,MAAM,WAAW,eAAe;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,eAAe,EAAE,eAAe,EAChC,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAO,GAC9D,OAAO,CAAC,eAAe,CAAC,CAmI1B"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reflection Synthesizer
|
|
3
|
+
*
|
|
4
|
+
* Reads community clusters from the memory graph and synthesizes
|
|
5
|
+
* pattern/learning memories from unreflected observations.
|
|
6
|
+
*
|
|
7
|
+
* Plugs into daemon's handleReflection() between community detection
|
|
8
|
+
* and centrality cache update.
|
|
9
|
+
*/
|
|
10
|
+
import { callLLM } from './llm.js';
|
|
11
|
+
import { getEmbedding } from './embeddings.js';
|
|
12
|
+
import { saveMemory, getMemoryById, updateMemoryTags, findSimilarMemory, incrementCorrectionCount, } from './storage/index.js';
|
|
13
|
+
const SYNTHESIS_PROMPT = `You are analyzing a cluster of related observations from a developer's coding sessions.
|
|
14
|
+
|
|
15
|
+
Observations:
|
|
16
|
+
{observations}
|
|
17
|
+
|
|
18
|
+
Based on these observations, extract 1-3 high-level patterns, preferences, or learnings.
|
|
19
|
+
Each should be a clear, concise statement that captures recurring behavior or important context.
|
|
20
|
+
|
|
21
|
+
Rules:
|
|
22
|
+
- Only output patterns that emerge from MULTIPLE observations
|
|
23
|
+
- Be specific: include tool names, language preferences, workflow patterns
|
|
24
|
+
- Do NOT repeat individual observations — synthesize them
|
|
25
|
+
- If observations are too diverse to synthesize, output "NO_PATTERNS"
|
|
26
|
+
|
|
27
|
+
Output as JSON array:
|
|
28
|
+
[{"content": "...", "type": "pattern|learning"}]`;
|
|
29
|
+
const MIN_CLUSTER_SIZE = 5;
|
|
30
|
+
const MAX_OBSERVATIONS_PER_SYNTHESIS = 15;
|
|
31
|
+
/** Semantic dedup threshold for synthesized reflections.
|
|
32
|
+
* Lower than saveMemory's 0.92 to catch LLM paraphrases of the same insight. */
|
|
33
|
+
const SYNTHESIS_DEDUP_THRESHOLD = 0.8;
|
|
34
|
+
/**
|
|
35
|
+
* Synthesize patterns from community clusters.
|
|
36
|
+
* Only processes clusters with enough unreflected observations.
|
|
37
|
+
*/
|
|
38
|
+
export async function synthesizeFromCommunities(communityResult, options = {}) {
|
|
39
|
+
const { dryRun = false, log = () => { } } = options;
|
|
40
|
+
const result = {
|
|
41
|
+
clustersProcessed: 0,
|
|
42
|
+
patternsCreated: 0,
|
|
43
|
+
duplicatesSkipped: 0,
|
|
44
|
+
reinforced: 0,
|
|
45
|
+
observationsMarked: 0,
|
|
46
|
+
errors: [],
|
|
47
|
+
};
|
|
48
|
+
// Filter to clusters large enough to synthesize
|
|
49
|
+
const eligibleClusters = communityResult.communities.filter((c) => c.size >= MIN_CLUSTER_SIZE);
|
|
50
|
+
if (eligibleClusters.length === 0) {
|
|
51
|
+
log('[synthesizer] No clusters large enough for synthesis');
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
for (const cluster of eligibleClusters) {
|
|
55
|
+
try {
|
|
56
|
+
// Load memories for this cluster
|
|
57
|
+
const memories = [];
|
|
58
|
+
for (const memId of cluster.members.slice(0, MAX_OBSERVATIONS_PER_SYNTHESIS)) {
|
|
59
|
+
const mem = await getMemoryById(memId);
|
|
60
|
+
if (mem && mem.type === 'observation') {
|
|
61
|
+
const tags = Array.isArray(mem.tags)
|
|
62
|
+
? mem.tags
|
|
63
|
+
: typeof mem.tags === 'string'
|
|
64
|
+
? JSON.parse(mem.tags || '[]')
|
|
65
|
+
: [];
|
|
66
|
+
// Skip already-reflected observations
|
|
67
|
+
if (!tags.includes('reflected')) {
|
|
68
|
+
memories.push({ id: mem.id, content: mem.content, tags, type: mem.type });
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (memories.length < MIN_CLUSTER_SIZE)
|
|
73
|
+
continue;
|
|
74
|
+
// Build observation text
|
|
75
|
+
const observationText = memories.map((m, i) => `${i + 1}. ${m.content}`).join('\n');
|
|
76
|
+
const prompt = SYNTHESIS_PROMPT.replace('{observations}', observationText);
|
|
77
|
+
const llmResponse = await callLLM(prompt, {
|
|
78
|
+
timeout: 30000,
|
|
79
|
+
useSleepAgent: true,
|
|
80
|
+
maxTokens: 1000,
|
|
81
|
+
temperature: 0.3,
|
|
82
|
+
});
|
|
83
|
+
if (llmResponse.includes('NO_PATTERNS')) {
|
|
84
|
+
log(`[synthesizer] Cluster ${cluster.id}: no patterns found`);
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
// Parse JSON response
|
|
88
|
+
const jsonMatch = llmResponse.match(/\[[\s\S]*?\]/);
|
|
89
|
+
if (!jsonMatch) {
|
|
90
|
+
result.errors.push(`Cluster ${cluster.id}: failed to parse LLM response`);
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
const patterns = JSON.parse(jsonMatch[0]);
|
|
94
|
+
result.clustersProcessed++;
|
|
95
|
+
for (const pattern of patterns) {
|
|
96
|
+
if (!pattern.content || pattern.content.length < 20)
|
|
97
|
+
continue;
|
|
98
|
+
if (!dryRun) {
|
|
99
|
+
const embedding = await getEmbedding(pattern.content);
|
|
100
|
+
// Semantic dedup: check if a similar memory already exists (0.80 threshold
|
|
101
|
+
// catches LLM paraphrases that saveMemory's 0.92 dedup would miss)
|
|
102
|
+
const existing = await findSimilarMemory(embedding, SYNTHESIS_DEDUP_THRESHOLD);
|
|
103
|
+
if (existing) {
|
|
104
|
+
// Reinforce patterns/learnings — increment correction_count so they
|
|
105
|
+
// eventually pin (Tier 1) if the daemon keeps seeing the same insight.
|
|
106
|
+
// Skip observations — they're too noisy to reinforce automatically.
|
|
107
|
+
const existingMem = await getMemoryById(existing.id);
|
|
108
|
+
const existingType = existingMem?.type;
|
|
109
|
+
if (existingType === 'pattern' || existingType === 'learning') {
|
|
110
|
+
await incrementCorrectionCount(existing.id);
|
|
111
|
+
result.reinforced++;
|
|
112
|
+
log(`[synthesizer] Reinforced existing ${existingType} #${existing.id} (sim=${existing.similarity.toFixed(2)}): ${existing.content.substring(0, 60)}...`);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
result.duplicatesSkipped++;
|
|
116
|
+
log(`[synthesizer] Skipped duplicate ${existingType ?? 'unknown'} (sim=${existing.similarity.toFixed(2)}): ${pattern.content.substring(0, 60)}...`);
|
|
117
|
+
}
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
const memType = pattern.type === 'learning' ? 'learning' : 'pattern';
|
|
121
|
+
await saveMemory(pattern.content, embedding, ['reflection', 'synthesized'], 'reflection', {
|
|
122
|
+
qualityScore: { score: 0.7, factors: { synthesized: 1 } },
|
|
123
|
+
type: memType,
|
|
124
|
+
});
|
|
125
|
+
result.patternsCreated++;
|
|
126
|
+
log(`[synthesizer] Created ${memType}: ${pattern.content.substring(0, 80)}...`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// Mark source observations as 'reflected' so they aren't re-synthesized
|
|
130
|
+
if (!dryRun) {
|
|
131
|
+
for (const mem of memories) {
|
|
132
|
+
try {
|
|
133
|
+
const newTags = [...mem.tags, 'reflected'];
|
|
134
|
+
await updateMemoryTags(mem.id, newTags);
|
|
135
|
+
result.observationsMarked++;
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
// Non-critical — worst case we re-process next cycle
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
result.errors.push(`Cluster ${cluster.id}: ${err}`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return result;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=reflection-synthesizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reflection-synthesizer.js","sourceRoot":"","sources":["../../src/lib/reflection-synthesizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EACL,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAG5B,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;iDAewB,CAAC;AAElD,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAC3B,MAAM,8BAA8B,GAAG,EAAE,CAAC;AAE1C;iFACiF;AACjF,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAWtC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,eAAgC,EAChC,UAA6D,EAAE;IAE/D,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,GAAG,GAAG,EAAE,GAAE,CAAC,EAAE,GAAG,OAAO,CAAC;IACnD,MAAM,MAAM,GAAoB;QAC9B,iBAAiB,EAAE,CAAC;QACpB,eAAe,EAAE,CAAC;QAClB,iBAAiB,EAAE,CAAC;QACpB,UAAU,EAAE,CAAC;QACb,kBAAkB,EAAE,CAAC;QACrB,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,gDAAgD;IAChD,MAAM,gBAAgB,GAAG,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,gBAAgB,CAAC,CAAC;IAE/F,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,GAAG,CAAC,sDAAsD,CAAC,CAAC;QAC5D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,QAAQ,GAAyE,EAAE,CAAC;YAC1F,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,8BAA8B,CAAC,EAAE,CAAC;gBAC7E,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;gBACvC,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBACtC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;wBAClC,CAAC,CAAC,GAAG,CAAC,IAAI;wBACV,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;4BAC5B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;4BAC9B,CAAC,CAAC,EAAE,CAAC;oBACT,sCAAsC;oBACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;wBAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC5E,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,GAAG,gBAAgB;gBAAE,SAAS;YAEjD,yBAAyB;YACzB,MAAM,eAAe,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEpF,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;YAE3E,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE;gBACxC,OAAO,EAAE,KAAK;gBACd,aAAa,EAAE,IAAI;gBACnB,SAAS,EAAE,IAAI;gBACf,WAAW,EAAE,GAAG;aACjB,CAAC,CAAC;YAEH,IAAI,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;gBACxC,GAAG,CAAC,yBAAyB,OAAO,CAAC,EAAE,qBAAqB,CAAC,CAAC;gBAC9D,SAAS;YACX,CAAC;YAED,sBAAsB;YACtB,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACpD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,EAAE,gCAAgC,CAAC,CAAC;gBAC1E,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAA6C,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACpF,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAE3B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE;oBAAE,SAAS;gBAE9D,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAEtD,2EAA2E;oBAC3E,mEAAmE;oBACnE,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;oBAC/E,IAAI,QAAQ,EAAE,CAAC;wBACb,oEAAoE;wBACpE,uEAAuE;wBACvE,oEAAoE;wBACpE,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;wBACrD,MAAM,YAAY,GAAG,WAAW,EAAE,IAAI,CAAC;wBACvC,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,UAAU,EAAE,CAAC;4BAC9D,MAAM,wBAAwB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;4BAC5C,MAAM,CAAC,UAAU,EAAE,CAAC;4BACpB,GAAG,CACD,qCAAqC,YAAY,KAAK,QAAQ,CAAC,EAAE,SAAS,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CACrJ,CAAC;wBACJ,CAAC;6BAAM,CAAC;4BACN,MAAM,CAAC,iBAAiB,EAAE,CAAC;4BAC3B,GAAG,CACD,mCAAmC,YAAY,IAAI,SAAS,SAAS,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAC/I,CAAC;wBACJ,CAAC;wBACD,SAAS;oBACX,CAAC;oBAED,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;oBACrE,MAAM,UAAU,CACd,OAAO,CAAC,OAAO,EACf,SAAS,EACT,CAAC,YAAY,EAAE,aAAa,CAAC,EAC7B,YAAY,EACZ;wBACE,YAAY,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE;wBACzD,IAAI,EAAE,OAAO;qBACd,CACF,CAAC;oBACF,MAAM,CAAC,eAAe,EAAE,CAAC;oBACzB,GAAG,CAAC,yBAAyB,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;gBAClF,CAAC;YACH,CAAC;YAED,wEAAwE;YACxE,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;oBAC3B,IAAI,CAAC;wBACH,MAAM,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;wBAC3C,MAAM,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;wBACxC,MAAM,CAAC,kBAAkB,EAAE,CAAC;oBAC9B,CAAC;oBAAC,MAAM,CAAC;wBACP,qDAAqD;oBACvD,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Retention Policy with Decay
|
|
3
|
+
*
|
|
4
|
+
* Implements automatic memory cleanup based on:
|
|
5
|
+
* - Quality score (from quality scoring system)
|
|
6
|
+
* - Time-based decay (older memories decay in value)
|
|
7
|
+
* - Access frequency (frequently accessed memories are preserved)
|
|
8
|
+
*
|
|
9
|
+
* Formula:
|
|
10
|
+
* effective_score = quality_score * recency_factor * access_boost
|
|
11
|
+
*
|
|
12
|
+
* recency_factor = 1 / (1 + decay_rate * days_since_creation)
|
|
13
|
+
* access_boost = min(1 + (access_weight * access_count), max_boost)
|
|
14
|
+
*
|
|
15
|
+
* Tiers:
|
|
16
|
+
* - keep: effective_score >= keep_threshold (default 0.3)
|
|
17
|
+
* - warn: effective_score >= delete_threshold && < keep_threshold
|
|
18
|
+
* - delete: effective_score < delete_threshold (default 0.15)
|
|
19
|
+
*/
|
|
20
|
+
import type { MemoryForRetention } from './storage/index.js';
|
|
21
|
+
export declare const DEFAULT_RETENTION_CONFIG: {
|
|
22
|
+
decay_rate: number;
|
|
23
|
+
access_weight: number;
|
|
24
|
+
max_access_boost: number;
|
|
25
|
+
keep_threshold: number;
|
|
26
|
+
delete_threshold: number;
|
|
27
|
+
default_quality_score: number;
|
|
28
|
+
};
|
|
29
|
+
export interface RetentionConfig {
|
|
30
|
+
decay_rate?: number;
|
|
31
|
+
access_weight?: number;
|
|
32
|
+
max_access_boost?: number;
|
|
33
|
+
keep_threshold?: number;
|
|
34
|
+
delete_threshold?: number;
|
|
35
|
+
default_quality_score?: number;
|
|
36
|
+
use_temporal_decay?: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface EffectiveScoreResult {
|
|
39
|
+
memoryId: number;
|
|
40
|
+
content: string;
|
|
41
|
+
qualityScore: number;
|
|
42
|
+
accessCount: number;
|
|
43
|
+
ageDays: number;
|
|
44
|
+
recencyFactor: number;
|
|
45
|
+
accessBoost: number;
|
|
46
|
+
effectiveScore: number;
|
|
47
|
+
tier: 'keep' | 'warn' | 'delete';
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Calculate the recency factor based on age.
|
|
51
|
+
* Returns a value between 0 and 1, where 1 is brand new.
|
|
52
|
+
*/
|
|
53
|
+
export declare function calculateRecencyFactor(ageDays: number, decayRate: number): number;
|
|
54
|
+
/**
|
|
55
|
+
* Calculate the access boost based on access count.
|
|
56
|
+
* Returns a multiplier >= 1.
|
|
57
|
+
*/
|
|
58
|
+
export declare function calculateAccessBoost(accessCount: number, accessWeight: number, maxBoost: number): number;
|
|
59
|
+
/**
|
|
60
|
+
* Calculate the effective score for a memory.
|
|
61
|
+
*/
|
|
62
|
+
export declare function calculateEffectiveScore(memory: MemoryForRetention, config?: RetentionConfig): EffectiveScoreResult;
|
|
63
|
+
/**
|
|
64
|
+
* Analyze all memories and categorize by retention tier.
|
|
65
|
+
*/
|
|
66
|
+
export declare function analyzeRetention(memories: MemoryForRetention[], config?: RetentionConfig): {
|
|
67
|
+
keep: EffectiveScoreResult[];
|
|
68
|
+
warn: EffectiveScoreResult[];
|
|
69
|
+
delete: EffectiveScoreResult[];
|
|
70
|
+
stats: RetentionStats;
|
|
71
|
+
};
|
|
72
|
+
export interface RetentionStats {
|
|
73
|
+
totalMemories: number;
|
|
74
|
+
keepCount: number;
|
|
75
|
+
warnCount: number;
|
|
76
|
+
deleteCount: number;
|
|
77
|
+
avgEffectiveScore: number;
|
|
78
|
+
avgQualityScore: number;
|
|
79
|
+
avgAgeDays: number;
|
|
80
|
+
avgAccessCount: number;
|
|
81
|
+
scoreDistribution: {
|
|
82
|
+
high: number;
|
|
83
|
+
medium: number;
|
|
84
|
+
low: number;
|
|
85
|
+
critical: number;
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Calculate retention statistics.
|
|
90
|
+
*/
|
|
91
|
+
export declare function calculateRetentionStats(results: EffectiveScoreResult[]): RetentionStats;
|
|
92
|
+
/**
|
|
93
|
+
* Format retention analysis for CLI output.
|
|
94
|
+
*/
|
|
95
|
+
export declare function formatRetentionAnalysis(analysis: {
|
|
96
|
+
keep: EffectiveScoreResult[];
|
|
97
|
+
warn: EffectiveScoreResult[];
|
|
98
|
+
delete: EffectiveScoreResult[];
|
|
99
|
+
stats: RetentionStats;
|
|
100
|
+
}, verbose?: boolean): string;
|
|
101
|
+
/**
|
|
102
|
+
* Format retention stats for MCP tool output (JSON-friendly).
|
|
103
|
+
*/
|
|
104
|
+
export declare function formatRetentionStatsForMcp(stats: RetentionStats): string;
|
|
105
|
+
//# sourceMappingURL=retention.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retention.d.ts","sourceRoot":"","sources":["../../src/lib/retention.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAQ7D,eAAO,MAAM,wBAAwB;;;;;;;CAmBpC,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;CAClC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,kBAAkB,EAC1B,MAAM,GAAE,eAAoB,GAC3B,oBAAoB,CAmEtB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,MAAM,GAAE,eAAoB,GAC3B;IACD,IAAI,EAAE,oBAAoB,EAAE,CAAC;IAC7B,IAAI,EAAE,oBAAoB,EAAE,CAAC;IAC7B,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,KAAK,EAAE,cAAc,CAAC;CACvB,CAeA;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IAEvB,iBAAiB,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,cAAc,CA0CvF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE;IACR,IAAI,EAAE,oBAAoB,EAAE,CAAC;IAC7B,IAAI,EAAE,oBAAoB,EAAE,CAAC;IAC7B,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,KAAK,EAAE,cAAc,CAAC;CACvB,EACD,OAAO,GAAE,OAAe,GACvB,MAAM,CAiER;AAOD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAoBxE"}
|