@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":"public-api.js","sourceRoot":"","sources":["../../src/lib/public-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quality Scoring for Memories
|
|
3
|
+
*
|
|
4
|
+
* Modes:
|
|
5
|
+
* - local: ONNX-based zero-shot classification (no external API needed)
|
|
6
|
+
* - custom: Ollama, LM Studio, llama.cpp (local LLM API)
|
|
7
|
+
* - openrouter: OpenRouter API
|
|
8
|
+
*/
|
|
9
|
+
import { type SuccConfig } from './config.js';
|
|
10
|
+
export interface QualityScore {
|
|
11
|
+
score: number;
|
|
12
|
+
confidence: number;
|
|
13
|
+
factors: {
|
|
14
|
+
specificity: number;
|
|
15
|
+
clarity: number;
|
|
16
|
+
relevance: number;
|
|
17
|
+
uniqueness: number;
|
|
18
|
+
};
|
|
19
|
+
mode: 'local' | 'api' | 'heuristic';
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Heuristic-based quality scoring (no LLM needed)
|
|
23
|
+
* Fast and works offline, but less accurate than LLM-based scoring
|
|
24
|
+
*/
|
|
25
|
+
export declare function scoreWithHeuristics(content: string, existingSimilarity?: number): QualityScore;
|
|
26
|
+
/**
|
|
27
|
+
* Estimate content specificity using embedding similarity to reference phrases.
|
|
28
|
+
* Returns 0-1 where higher = more specific/technical content.
|
|
29
|
+
* Language-agnostic — works for any language the embedding model supports.
|
|
30
|
+
*/
|
|
31
|
+
export declare function estimateSpecificityByEmbedding(content: string): Promise<number>;
|
|
32
|
+
/**
|
|
33
|
+
* Clear cached specificity reference embeddings (for tests).
|
|
34
|
+
*/
|
|
35
|
+
export declare function clearSpecificityEmbeddingCache(): void;
|
|
36
|
+
/**
|
|
37
|
+
* Cleanup classifier pipeline to free memory
|
|
38
|
+
*/
|
|
39
|
+
export declare function cleanupQualityScoring(): void;
|
|
40
|
+
/**
|
|
41
|
+
* Score memory using local ONNX model (zero-shot classification)
|
|
42
|
+
* Uses Xenova/nli-deberta-v3-xsmall for efficient classification
|
|
43
|
+
*
|
|
44
|
+
* Hybrid approach: combines ONNX classification with heuristic checks
|
|
45
|
+
* - ONNX is good at detecting technical content with code references
|
|
46
|
+
* - Heuristics act as a "gate" - if content fails basic quality checks, cap the score
|
|
47
|
+
*/
|
|
48
|
+
export declare function scoreWithLocal(content: string, existingSimilarity?: number): Promise<QualityScore>;
|
|
49
|
+
/**
|
|
50
|
+
* Score memory using any OpenAI-compatible API (Ollama, OpenRouter, LM Studio, etc.)
|
|
51
|
+
* Auto-adds OpenRouter-specific headers when api_url contains 'openrouter.ai'.
|
|
52
|
+
*/
|
|
53
|
+
export declare function scoreWithApi(content: string, apiUrl: string, model: string, apiKey?: string): Promise<QualityScore>;
|
|
54
|
+
/**
|
|
55
|
+
* Main scoring function - uses configured mode from llm.quality.*
|
|
56
|
+
*/
|
|
57
|
+
export declare function scoreMemory(content: string, existingSimilarity?: number, configOverride?: Partial<SuccConfig>): Promise<QualityScore>;
|
|
58
|
+
/**
|
|
59
|
+
* Check if memory passes quality threshold
|
|
60
|
+
*/
|
|
61
|
+
export declare function passesQualityThreshold(score: QualityScore, threshold?: number): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Format quality score for display
|
|
64
|
+
*/
|
|
65
|
+
export declare function formatQualityScore(score: QualityScore): string;
|
|
66
|
+
//# sourceMappingURL=quality.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quality.d.ts","sourceRoot":"","sources":["../../src/lib/quality.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAA+B,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAqB3E,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE;QACP,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,IAAI,EAAE,OAAO,GAAG,KAAK,GAAG,WAAW,CAAC;CACrC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,MAAM,GAAG,YAAY,CAqB9F;AA+JD;;;;GAIG;AACH,wBAAsB,8BAA8B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA2BrF;AAED;;GAEG;AACH,wBAAgB,8BAA8B,IAAI,IAAI,CAErD;AAkDD;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAO5C;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,kBAAkB,CAAC,EAAE,MAAM,GAC1B,OAAO,CAAC,YAAY,CAAC,CA8EvB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,YAAY,CAAC,CAwCvB;AA0ED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,kBAAkB,CAAC,EAAE,MAAM,EAC3B,cAAc,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GACnC,OAAO,CAAC,YAAY,CAAC,CA6BvB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAIvF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAM9D"}
|
|
@@ -0,0 +1,486 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quality Scoring for Memories
|
|
3
|
+
*
|
|
4
|
+
* Modes:
|
|
5
|
+
* - local: ONNX-based zero-shot classification (no external API needed)
|
|
6
|
+
* - custom: Ollama, LM Studio, llama.cpp (local LLM API)
|
|
7
|
+
* - openrouter: OpenRouter API
|
|
8
|
+
*/
|
|
9
|
+
import { getConfig, getLLMTaskConfig } from './config.js';
|
|
10
|
+
import { QUALITY_SCORER_SYSTEM } from '../prompts/index.js';
|
|
11
|
+
import { logWarn } from './fault-logger.js';
|
|
12
|
+
import { NetworkError, ValidationError } from './errors.js';
|
|
13
|
+
// Lazy-loaded zero-shot classification pipeline for local scoring
|
|
14
|
+
let classifierPipeline = null;
|
|
15
|
+
const CLASSIFIER_MODEL = 'Xenova/nli-deberta-v3-xsmall';
|
|
16
|
+
// Labels for zero-shot classification
|
|
17
|
+
// Using single classification with optimized labels (31pp separation in benchmark)
|
|
18
|
+
const QUALITY_LABELS = {
|
|
19
|
+
// Primary quality indicator - best performing labels from benchmark
|
|
20
|
+
quality: [
|
|
21
|
+
'specific technical detail with code or file references',
|
|
22
|
+
'vague statement without concrete details',
|
|
23
|
+
],
|
|
24
|
+
// Secondary checks for additional signal
|
|
25
|
+
relevance: ['relevant to software development', 'not related to programming'],
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Heuristic-based quality scoring (no LLM needed)
|
|
29
|
+
* Fast and works offline, but less accurate than LLM-based scoring
|
|
30
|
+
*/
|
|
31
|
+
export function scoreWithHeuristics(content, existingSimilarity) {
|
|
32
|
+
const factors = {
|
|
33
|
+
specificity: calculateSpecificity(content),
|
|
34
|
+
clarity: calculateClarity(content),
|
|
35
|
+
relevance: 0.5, // Can't determine without context, default to neutral
|
|
36
|
+
uniqueness: existingSimilarity !== undefined ? 1 - existingSimilarity : 0.5,
|
|
37
|
+
};
|
|
38
|
+
// Weighted average
|
|
39
|
+
const score = factors.specificity * 0.3 +
|
|
40
|
+
factors.clarity * 0.3 +
|
|
41
|
+
factors.relevance * 0.2 +
|
|
42
|
+
factors.uniqueness * 0.2;
|
|
43
|
+
return {
|
|
44
|
+
score,
|
|
45
|
+
confidence: 0.6, // Heuristics are less confident than LLM
|
|
46
|
+
factors,
|
|
47
|
+
mode: 'heuristic',
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Calculate specificity score
|
|
52
|
+
* Higher for content with specific details, lower for vague statements
|
|
53
|
+
* Supports multiple languages: English, Russian, and code-agnostic patterns
|
|
54
|
+
*/
|
|
55
|
+
function calculateSpecificity(content) {
|
|
56
|
+
let score = 0.5; // Base score
|
|
57
|
+
// Content length checks (more nuanced)
|
|
58
|
+
const wordCount = content.trim().split(/\s+/).length;
|
|
59
|
+
const charCount = content.length;
|
|
60
|
+
// === POSITIVE SIGNALS (language-agnostic and multilingual) ===
|
|
61
|
+
// Code patterns (universal)
|
|
62
|
+
const hasNumbers = /\d+/.test(content);
|
|
63
|
+
const hasCodeReference = /`[^`]+`|```[\s\S]*?```/.test(content);
|
|
64
|
+
const hasFilePath = /\.(ts|js|tsx|jsx|py|go|rs|java|cpp|c|h|md|json|yaml|yml|sql|sh|bash|css|scss|html)\b/.test(content);
|
|
65
|
+
const hasLineReference = /:\d+/.test(content); // file:line references
|
|
66
|
+
const hasProperNouns = /[A-Z][a-z]+(?:[A-Z][a-z]+)+/.test(content); // CamelCase
|
|
67
|
+
const hasSnakeCase = /[a-z]+_[a-z]+/.test(content); // snake_case identifiers
|
|
68
|
+
// Technical terms - English
|
|
69
|
+
const hasEnglishTechnicalTerms = /\b(function|class|method|variable|parameter|return|error|bug|fix|feature|api|endpoint|database|table|column|component|module|service|handler|controller|config|deploy|server|client|request|response|query|mutation|schema|model|view|route|middleware|hook|callback|promise|async|await)\b/i.test(content);
|
|
70
|
+
// Technical terms - Russian
|
|
71
|
+
const hasRussianTechnicalTerms = /\b(функция|класс|метод|переменная|параметр|ошибка|баг|фикс|исправлен|фича|апи|эндпоинт|база данных|таблица|колонка|компонент|модуль|сервис|хендлер|контроллер|конфиг|деплой|сервер|клиент|запрос|ответ|схема|модель|роут|миддлвар|хук|коллбэк|промис)\b/i.test(content);
|
|
72
|
+
// Actionable verbs - English
|
|
73
|
+
const hasEnglishActionableVerbs = /\b(implement|create|add|remove|fix|update|refactor|migrate|configure|deploy|test|resolve|optimize|integrate|delete|modify|change|setup|install|build|run|execute|debug|trace|log|handle|process|validate|parse|serialize|fetch|send|receive|connect|disconnect)\b/i.test(content);
|
|
74
|
+
// Actionable verbs - Russian
|
|
75
|
+
const hasRussianActionableVerbs = /\b(реализовать|создать|добавить|удалить|исправить|обновить|рефакторить|мигрировать|настроить|задеплоить|тестировать|решить|оптимизировать|интегрировать|изменить|установить|собрать|запустить|выполнить|дебажить|отладить|логировать|обработать|валидировать|парсить|сериализовать|отправить|получить|подключить)\b/i.test(content);
|
|
76
|
+
// Preference/personal facts — short but high-value for recall
|
|
77
|
+
const isPreferenceFact = /\b(user|i|he|she|they|we)\s+(use[sd]?|like[sd]?|prefer[sd]?|has|have|had|want[sd]?|chose|always|never|switch)/i.test(content) ||
|
|
78
|
+
/\b(пользователь|юзер|я|он|она|мы)\s+(использу[еюёт]|предпочита[еюёт]|любит|хоч[еу]т|выбрал|всегда|никогда)/i.test(content);
|
|
79
|
+
if (hasNumbers)
|
|
80
|
+
score += 0.1;
|
|
81
|
+
if (hasCodeReference)
|
|
82
|
+
score += 0.2;
|
|
83
|
+
if (hasFilePath)
|
|
84
|
+
score += 0.15;
|
|
85
|
+
if (hasLineReference)
|
|
86
|
+
score += 0.1;
|
|
87
|
+
if (hasEnglishTechnicalTerms || hasRussianTechnicalTerms)
|
|
88
|
+
score += 0.1;
|
|
89
|
+
if (hasProperNouns || hasSnakeCase)
|
|
90
|
+
score += 0.05;
|
|
91
|
+
if (hasEnglishActionableVerbs || hasRussianActionableVerbs)
|
|
92
|
+
score += 0.1;
|
|
93
|
+
if (isPreferenceFact)
|
|
94
|
+
score += 0.2;
|
|
95
|
+
// === NEGATIVE SIGNALS (multilingual) ===
|
|
96
|
+
// Vague words - English
|
|
97
|
+
const isVagueEnglish = /\b(maybe|perhaps|somehow|something|stuff|things|whatever|somewhere|anyone|anything|some|kinda|sorta)\b/i.test(content);
|
|
98
|
+
// Vague words - Russian
|
|
99
|
+
const isVagueRussian = /\b(может быть|возможно|как-то|что-то|где-то|кто-то|как-нибудь|где-нибудь|что-нибудь|какой-то|некий|вроде|типа|наверное)\b/i.test(content);
|
|
100
|
+
// Length checks
|
|
101
|
+
const isTooShort = charCount < 30 || wordCount < 5;
|
|
102
|
+
const isVeryShort = charCount < 15 || wordCount < 3;
|
|
103
|
+
// Generic praise - English
|
|
104
|
+
const isGenericEnglish = /\b(good|bad|nice|cool|great|interesting|awesome|works|fine|ok|okay|perfect|excellent)\b/i.test(content) &&
|
|
105
|
+
!/\b(good practice|bad pattern|nice feature|works well because|works by|good for)\b/i.test(content);
|
|
106
|
+
// Generic praise - Russian (include adjective forms: хороший/хорошая/хорошее, плохой/плохая/плохое, etc.)
|
|
107
|
+
const isGenericRussian = /\b(хорош[иоеая]{1,2}|плох[оиеая]{1,2}|отлично|отличн[ыоеая]{1,2}|круто|крут[оыеая]{1,2}|класс|классн[оыеая]{1,2}|супер|норм|нормальн[оыеая]{1,2}|работает|ок|окей|идеальн[оыеая]{1,2}|прекрасн[оыеая]{1,2})\b/i.test(content) &&
|
|
108
|
+
!/\b(хорошая практика|плохой паттерн|работает потому что|работает за счёт)\b/i.test(content);
|
|
109
|
+
// Only generic praise patterns
|
|
110
|
+
const isOnlyGenericPraiseEnglish = /^(the )?(code|it|this|that)?\s*(is|are|was|were)?\s*(good|nice|great|fine|ok|cool|awesome|works|working)/i.test(content.trim());
|
|
111
|
+
const isOnlyGenericPraiseRussian = /^(код|это|оно|всё)?\s*(хорош[иоеая]{0,2}|отлично|работает|норм|класс|супер)/i.test(content.trim());
|
|
112
|
+
const lacksSubstance = wordCount < 8 && !hasCodeReference && !hasFilePath && !hasNumbers;
|
|
113
|
+
if (isVagueEnglish || isVagueRussian)
|
|
114
|
+
score -= 0.2;
|
|
115
|
+
// Reduce short-content penalties for preference facts (short but high-value)
|
|
116
|
+
if (isPreferenceFact) {
|
|
117
|
+
if (isVeryShort)
|
|
118
|
+
score -= 0.15;
|
|
119
|
+
else if (isTooShort)
|
|
120
|
+
score -= 0.05;
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
if (isVeryShort)
|
|
124
|
+
score -= 0.35;
|
|
125
|
+
else if (isTooShort)
|
|
126
|
+
score -= 0.2;
|
|
127
|
+
}
|
|
128
|
+
if (isGenericEnglish || isGenericRussian)
|
|
129
|
+
score -= 0.15;
|
|
130
|
+
if (isOnlyGenericPraiseEnglish || isOnlyGenericPraiseRussian)
|
|
131
|
+
score -= 0.25;
|
|
132
|
+
if (lacksSubstance && !isPreferenceFact)
|
|
133
|
+
score -= 0.15;
|
|
134
|
+
return Math.max(0, Math.min(1, score));
|
|
135
|
+
}
|
|
136
|
+
// ============================================================================
|
|
137
|
+
// Embedding-based specificity (language-agnostic fallback)
|
|
138
|
+
// ============================================================================
|
|
139
|
+
/**
|
|
140
|
+
* Reference phrases for embedding-based specificity estimation.
|
|
141
|
+
* High-specificity: technical, actionable, detailed.
|
|
142
|
+
* Low-specificity: vague, generic, meaningless.
|
|
143
|
+
*/
|
|
144
|
+
const HIGH_SPECIFICITY_REFS = [
|
|
145
|
+
'Implement JWT authentication middleware for the REST API endpoints',
|
|
146
|
+
'Fix SQL injection vulnerability in the user registration handler',
|
|
147
|
+
'Configure nginx reverse proxy with SSL termination on port 443',
|
|
148
|
+
'Refactor the database schema to support multi-tenant isolation',
|
|
149
|
+
'Add retry logic with exponential backoff for failed API requests',
|
|
150
|
+
];
|
|
151
|
+
const LOW_SPECIFICITY_REFS = [
|
|
152
|
+
'This is good',
|
|
153
|
+
'Something happened with the code',
|
|
154
|
+
'Maybe we should change stuff',
|
|
155
|
+
'It works fine I think',
|
|
156
|
+
];
|
|
157
|
+
const SPECIFICITY_HIGH_SET = 'specificity-high';
|
|
158
|
+
const SPECIFICITY_LOW_SET = 'specificity-low';
|
|
159
|
+
let _specificityRefsRegistered = false;
|
|
160
|
+
/**
|
|
161
|
+
* Estimate content specificity using embedding similarity to reference phrases.
|
|
162
|
+
* Returns 0-1 where higher = more specific/technical content.
|
|
163
|
+
* Language-agnostic — works for any language the embedding model supports.
|
|
164
|
+
*/
|
|
165
|
+
export async function estimateSpecificityByEmbedding(content) {
|
|
166
|
+
try {
|
|
167
|
+
const { registerReferenceSet, avgSimilarityToReference } = await import('./reference-embeddings.js');
|
|
168
|
+
const { getEmbedding } = await import('./embeddings.js');
|
|
169
|
+
if (!_specificityRefsRegistered) {
|
|
170
|
+
registerReferenceSet(SPECIFICITY_HIGH_SET, HIGH_SPECIFICITY_REFS);
|
|
171
|
+
registerReferenceSet(SPECIFICITY_LOW_SET, LOW_SPECIFICITY_REFS);
|
|
172
|
+
_specificityRefsRegistered = true;
|
|
173
|
+
}
|
|
174
|
+
const contentEmb = await getEmbedding(content);
|
|
175
|
+
const [highSim, lowSim] = await Promise.all([
|
|
176
|
+
avgSimilarityToReference(contentEmb, SPECIFICITY_HIGH_SET),
|
|
177
|
+
avgSimilarityToReference(contentEmb, SPECIFICITY_LOW_SET),
|
|
178
|
+
]);
|
|
179
|
+
// Clamp negatives (cosine range is -1..1), then normalize
|
|
180
|
+
const clampedHigh = Math.max(0, highSim);
|
|
181
|
+
const clampedLow = Math.max(0, lowSim);
|
|
182
|
+
const total = clampedHigh + clampedLow;
|
|
183
|
+
if (total === 0)
|
|
184
|
+
return 0.5;
|
|
185
|
+
return clampedHigh / total;
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
return 0.5; // neutral fallback
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Clear cached specificity reference embeddings (for tests).
|
|
193
|
+
*/
|
|
194
|
+
export function clearSpecificityEmbeddingCache() {
|
|
195
|
+
_specificityRefsRegistered = false;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Calculate clarity score
|
|
199
|
+
* Higher for well-structured, readable content
|
|
200
|
+
*/
|
|
201
|
+
function calculateClarity(content) {
|
|
202
|
+
let score = 0.5;
|
|
203
|
+
// Positive signals
|
|
204
|
+
const sentences = content.split(/[.!?]+/).filter((s) => s.trim().length > 0);
|
|
205
|
+
const avgSentenceLength = content.length / Math.max(sentences.length, 1);
|
|
206
|
+
const hasGoodLength = avgSentenceLength >= 30 && avgSentenceLength <= 150;
|
|
207
|
+
const hasStructure = /^[-*•]|\n[-*•]|\n\d+\./.test(content); // Lists
|
|
208
|
+
const hasSeparators = /\n{2,}|:\s*\n/.test(content); // Paragraphs
|
|
209
|
+
const hasProperPunctuation = /[.!?]$/.test(content.trim());
|
|
210
|
+
if (hasGoodLength)
|
|
211
|
+
score += 0.15;
|
|
212
|
+
if (hasStructure)
|
|
213
|
+
score += 0.1;
|
|
214
|
+
if (hasSeparators)
|
|
215
|
+
score += 0.05;
|
|
216
|
+
if (hasProperPunctuation)
|
|
217
|
+
score += 0.1;
|
|
218
|
+
// Negative signals
|
|
219
|
+
const hasExcessiveCaps = (content.match(/[A-Z]{3,}/g) || []).length > 2;
|
|
220
|
+
const hasNoSpaces = content.length > 50 && !content.includes(' ');
|
|
221
|
+
const hasRepeatedChars = /(.)\1{4,}/.test(content);
|
|
222
|
+
if (hasExcessiveCaps)
|
|
223
|
+
score -= 0.1;
|
|
224
|
+
if (hasNoSpaces)
|
|
225
|
+
score -= 0.3;
|
|
226
|
+
if (hasRepeatedChars)
|
|
227
|
+
score -= 0.2;
|
|
228
|
+
return Math.max(0, Math.min(1, score));
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Get the zero-shot classification pipeline (lazy loaded)
|
|
232
|
+
*/
|
|
233
|
+
async function getClassifierPipeline() {
|
|
234
|
+
if (!classifierPipeline) {
|
|
235
|
+
const { pipeline } = await import('@huggingface/transformers');
|
|
236
|
+
console.log(`Loading quality scoring model: ${CLASSIFIER_MODEL}...`);
|
|
237
|
+
classifierPipeline = await pipeline('zero-shot-classification', CLASSIFIER_MODEL, {
|
|
238
|
+
device: 'cpu',
|
|
239
|
+
});
|
|
240
|
+
console.log('Quality scoring model loaded.');
|
|
241
|
+
}
|
|
242
|
+
return classifierPipeline;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Cleanup classifier pipeline to free memory
|
|
246
|
+
*/
|
|
247
|
+
export function cleanupQualityScoring() {
|
|
248
|
+
if (classifierPipeline) {
|
|
249
|
+
classifierPipeline = null;
|
|
250
|
+
if (global.gc) {
|
|
251
|
+
global.gc();
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Score memory using local ONNX model (zero-shot classification)
|
|
257
|
+
* Uses Xenova/nli-deberta-v3-xsmall for efficient classification
|
|
258
|
+
*
|
|
259
|
+
* Hybrid approach: combines ONNX classification with heuristic checks
|
|
260
|
+
* - ONNX is good at detecting technical content with code references
|
|
261
|
+
* - Heuristics act as a "gate" - if content fails basic quality checks, cap the score
|
|
262
|
+
*/
|
|
263
|
+
export async function scoreWithLocal(content, existingSimilarity) {
|
|
264
|
+
try {
|
|
265
|
+
// First, run quick heuristic checks
|
|
266
|
+
const heuristicResult = scoreWithHeuristics(content, existingSimilarity);
|
|
267
|
+
// If heuristic specificity is uncertain (< 0.5), try embedding-based estimation.
|
|
268
|
+
// This helps non-EN/RU content that heuristic regex can't score fairly.
|
|
269
|
+
if (heuristicResult.factors.specificity < 0.5) {
|
|
270
|
+
try {
|
|
271
|
+
const embSpec = await estimateSpecificityByEmbedding(content);
|
|
272
|
+
if (embSpec > heuristicResult.factors.specificity) {
|
|
273
|
+
heuristicResult.factors.specificity = embSpec;
|
|
274
|
+
// Recalculate overall score with updated specificity
|
|
275
|
+
heuristicResult.score =
|
|
276
|
+
heuristicResult.factors.specificity * 0.3 +
|
|
277
|
+
heuristicResult.factors.clarity * 0.3 +
|
|
278
|
+
heuristicResult.factors.relevance * 0.2 +
|
|
279
|
+
heuristicResult.factors.uniqueness * 0.2;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
catch {
|
|
283
|
+
// Non-fatal — continue with heuristic score
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
// If content is clearly low quality by heuristics, don't bother with ONNX
|
|
287
|
+
// This catches: too short, vague words, generic praise, etc.
|
|
288
|
+
if (heuristicResult.factors.specificity < 0.4) {
|
|
289
|
+
return { ...heuristicResult, mode: 'local' }; // Return heuristic score but mark as local
|
|
290
|
+
}
|
|
291
|
+
const classifier = await getClassifierPipeline();
|
|
292
|
+
// Run zero-shot classification for quality and relevance
|
|
293
|
+
const [qualityResult, relevanceResult] = await Promise.all([
|
|
294
|
+
classifier(content, QUALITY_LABELS.quality, { multi_label: false }),
|
|
295
|
+
classifier(content, QUALITY_LABELS.relevance, { multi_label: false }),
|
|
296
|
+
]);
|
|
297
|
+
// Extract ONNX scores
|
|
298
|
+
const onnxQuality = qualityResult.scores[qualityResult.labels.indexOf(QUALITY_LABELS.quality[0])];
|
|
299
|
+
const onnxRelevance = relevanceResult.scores[relevanceResult.labels.indexOf(QUALITY_LABELS.relevance[0])];
|
|
300
|
+
// Uniqueness from similarity if provided
|
|
301
|
+
const uniqueness = existingSimilarity !== undefined ? 1 - existingSimilarity : 0.5;
|
|
302
|
+
// Combine ONNX with heuristics
|
|
303
|
+
// Use minimum of ONNX and heuristic specificity to catch edge cases
|
|
304
|
+
const specificity = Math.min(onnxQuality, heuristicResult.factors.specificity + 0.15);
|
|
305
|
+
const factors = {
|
|
306
|
+
specificity,
|
|
307
|
+
clarity: heuristicResult.factors.clarity,
|
|
308
|
+
relevance: onnxRelevance,
|
|
309
|
+
uniqueness,
|
|
310
|
+
};
|
|
311
|
+
// Weighted average for overall score
|
|
312
|
+
const score = factors.specificity * 0.35 + // Hybrid specificity
|
|
313
|
+
factors.clarity * 0.15 + // Heuristic clarity
|
|
314
|
+
factors.relevance * 0.25 + // ONNX relevance
|
|
315
|
+
factors.uniqueness * 0.25; // Similarity-based uniqueness
|
|
316
|
+
return {
|
|
317
|
+
score: clamp(score, 0, 1),
|
|
318
|
+
confidence: 0.85,
|
|
319
|
+
factors,
|
|
320
|
+
mode: 'local',
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
catch (error) {
|
|
324
|
+
// Fall back to heuristics if model fails
|
|
325
|
+
logWarn('quality', 'Local ONNX scoring failed, falling back to heuristics', {
|
|
326
|
+
error: String(error),
|
|
327
|
+
});
|
|
328
|
+
return scoreWithHeuristics(content, existingSimilarity);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Score memory using any OpenAI-compatible API (Ollama, OpenRouter, LM Studio, etc.)
|
|
333
|
+
* Auto-adds OpenRouter-specific headers when api_url contains 'openrouter.ai'.
|
|
334
|
+
*/
|
|
335
|
+
export async function scoreWithApi(content, apiUrl, model, apiKey) {
|
|
336
|
+
const prompt = buildScoringPrompt(content);
|
|
337
|
+
const headers = {
|
|
338
|
+
'Content-Type': 'application/json',
|
|
339
|
+
};
|
|
340
|
+
if (apiKey) {
|
|
341
|
+
headers['Authorization'] = `Bearer ${apiKey}`;
|
|
342
|
+
}
|
|
343
|
+
if (apiUrl.includes('openrouter.ai')) {
|
|
344
|
+
headers['HTTP-Referer'] = 'https://succ.ai';
|
|
345
|
+
headers['X-Title'] = 'succ';
|
|
346
|
+
}
|
|
347
|
+
try {
|
|
348
|
+
const response = await fetch(`${apiUrl}/chat/completions`, {
|
|
349
|
+
method: 'POST',
|
|
350
|
+
headers,
|
|
351
|
+
body: JSON.stringify({
|
|
352
|
+
model,
|
|
353
|
+
messages: [
|
|
354
|
+
{ role: 'system', content: QUALITY_SCORER_SYSTEM },
|
|
355
|
+
{ role: 'user', content: prompt },
|
|
356
|
+
],
|
|
357
|
+
temperature: 0.1,
|
|
358
|
+
max_tokens: 200,
|
|
359
|
+
}),
|
|
360
|
+
});
|
|
361
|
+
if (!response.ok) {
|
|
362
|
+
throw new NetworkError(`API error: ${response.status}`, response.status);
|
|
363
|
+
}
|
|
364
|
+
const data = await response.json();
|
|
365
|
+
const result = parseScoreResponse(data.choices[0]?.message?.content || '');
|
|
366
|
+
return { ...result, mode: 'api' };
|
|
367
|
+
}
|
|
368
|
+
catch (error) {
|
|
369
|
+
logWarn('quality', 'API scoring failed, falling back to heuristics', { error: String(error) });
|
|
370
|
+
return scoreWithHeuristics(content);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Build the prompt for LLM-based scoring
|
|
375
|
+
*/
|
|
376
|
+
function buildScoringPrompt(content) {
|
|
377
|
+
return `Rate the quality of this development memory on a scale of 0 to 1.
|
|
378
|
+
|
|
379
|
+
Memory content:
|
|
380
|
+
"""
|
|
381
|
+
${content}
|
|
382
|
+
"""
|
|
383
|
+
|
|
384
|
+
Evaluate these factors (each 0-1):
|
|
385
|
+
- specificity: How specific and actionable is the content?
|
|
386
|
+
- clarity: How clear and well-written is it?
|
|
387
|
+
- relevance: How relevant is this to software development?
|
|
388
|
+
- uniqueness: How unique/non-obvious is this insight?
|
|
389
|
+
|
|
390
|
+
Respond with JSON only:
|
|
391
|
+
{
|
|
392
|
+
"score": <overall 0-1>,
|
|
393
|
+
"confidence": <your confidence 0-1>,
|
|
394
|
+
"factors": {
|
|
395
|
+
"specificity": <0-1>,
|
|
396
|
+
"clarity": <0-1>,
|
|
397
|
+
"relevance": <0-1>,
|
|
398
|
+
"uniqueness": <0-1>
|
|
399
|
+
}
|
|
400
|
+
}`;
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Parse LLM response to QualityScore
|
|
404
|
+
*/
|
|
405
|
+
function parseScoreResponse(response) {
|
|
406
|
+
try {
|
|
407
|
+
// Extract JSON from response (may have markdown wrapping)
|
|
408
|
+
const jsonMatch = response.match(/\{[\s\S]*\}/);
|
|
409
|
+
if (!jsonMatch) {
|
|
410
|
+
throw new ValidationError('No JSON found in response');
|
|
411
|
+
}
|
|
412
|
+
const parsed = JSON.parse(jsonMatch[0]);
|
|
413
|
+
return {
|
|
414
|
+
score: clamp(parsed.score || 0.5, 0, 1),
|
|
415
|
+
confidence: clamp(parsed.confidence || 0.8, 0, 1),
|
|
416
|
+
factors: {
|
|
417
|
+
specificity: clamp(parsed.factors?.specificity || 0.5, 0, 1),
|
|
418
|
+
clarity: clamp(parsed.factors?.clarity || 0.5, 0, 1),
|
|
419
|
+
relevance: clamp(parsed.factors?.relevance || 0.5, 0, 1),
|
|
420
|
+
uniqueness: clamp(parsed.factors?.uniqueness || 0.5, 0, 1),
|
|
421
|
+
},
|
|
422
|
+
};
|
|
423
|
+
}
|
|
424
|
+
catch {
|
|
425
|
+
// Return default scores on parse error
|
|
426
|
+
return {
|
|
427
|
+
score: 0.5,
|
|
428
|
+
confidence: 0.3,
|
|
429
|
+
factors: {
|
|
430
|
+
specificity: 0.5,
|
|
431
|
+
clarity: 0.5,
|
|
432
|
+
relevance: 0.5,
|
|
433
|
+
uniqueness: 0.5,
|
|
434
|
+
},
|
|
435
|
+
};
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
function clamp(value, min, max) {
|
|
439
|
+
return Math.max(min, Math.min(max, value));
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* Main scoring function - uses configured mode from llm.quality.*
|
|
443
|
+
*/
|
|
444
|
+
export async function scoreMemory(content, existingSimilarity, configOverride) {
|
|
445
|
+
const config = { ...getConfig(), ...configOverride };
|
|
446
|
+
// If scoring disabled, return neutral score
|
|
447
|
+
if (config.quality_scoring_enabled === false) {
|
|
448
|
+
return {
|
|
449
|
+
score: 0.5,
|
|
450
|
+
confidence: 1,
|
|
451
|
+
factors: { specificity: 0.5, clarity: 0.5, relevance: 0.5, uniqueness: 0.5 },
|
|
452
|
+
mode: 'heuristic',
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
const taskCfg = getLLMTaskConfig('quality');
|
|
456
|
+
switch (taskCfg.mode) {
|
|
457
|
+
case 'local':
|
|
458
|
+
return scoreWithLocal(content);
|
|
459
|
+
case 'api':
|
|
460
|
+
if (!taskCfg.model) {
|
|
461
|
+
logWarn('quality', 'API scoring requires llm.quality.model');
|
|
462
|
+
return scoreWithHeuristics(content, existingSimilarity);
|
|
463
|
+
}
|
|
464
|
+
return scoreWithApi(content, taskCfg.api_url, taskCfg.model, taskCfg.api_key);
|
|
465
|
+
default:
|
|
466
|
+
return scoreWithHeuristics(content, existingSimilarity);
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
/**
|
|
470
|
+
* Check if memory passes quality threshold
|
|
471
|
+
*/
|
|
472
|
+
export function passesQualityThreshold(score, threshold) {
|
|
473
|
+
const config = getConfig();
|
|
474
|
+
const minScore = threshold ?? config.quality_scoring_threshold ?? 0;
|
|
475
|
+
return score.score >= minScore;
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* Format quality score for display
|
|
479
|
+
*/
|
|
480
|
+
export function formatQualityScore(score) {
|
|
481
|
+
const percent = Math.round(score.score * 100);
|
|
482
|
+
const stars = Math.round(score.score * 5);
|
|
483
|
+
const starStr = '★'.repeat(stars) + '☆'.repeat(5 - stars);
|
|
484
|
+
return `${starStr} ${percent}% (${score.mode})`;
|
|
485
|
+
}
|
|
486
|
+
//# sourceMappingURL=quality.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quality.js","sourceRoot":"","sources":["../../src/lib/quality.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM-based query expansion for richer recall.
|
|
3
|
+
*
|
|
4
|
+
* Takes a user query and generates additional search terms
|
|
5
|
+
* to improve retrieval coverage. Disabled by default.
|
|
6
|
+
*/
|
|
7
|
+
import type { LLMBackend } from './llm.js';
|
|
8
|
+
/**
|
|
9
|
+
* Expand a query into multiple search terms using LLM.
|
|
10
|
+
*
|
|
11
|
+
* @param query - The original user query
|
|
12
|
+
* @param mode - LLM backend override (defaults to configured backend)
|
|
13
|
+
* @returns Array of expanded queries (NOT including the original)
|
|
14
|
+
*/
|
|
15
|
+
export declare function expandQuery(query: string, mode?: LLMBackend): Promise<string[]>;
|
|
16
|
+
//# sourceMappingURL=query-expansion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-expansion.d.ts","sourceRoot":"","sources":["../../src/lib/query-expansion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAe3C;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAgCrF"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM-based query expansion for richer recall.
|
|
3
|
+
*
|
|
4
|
+
* Takes a user query and generates additional search terms
|
|
5
|
+
* to improve retrieval coverage. Disabled by default.
|
|
6
|
+
*/
|
|
7
|
+
import { callLLM, getLLMConfig } from './llm.js';
|
|
8
|
+
const EXPANSION_PROMPT = `You are a search query expander. Given a user's search query about code, software development, or technical decisions, generate 3-5 alternative search queries that would help find relevant information.
|
|
9
|
+
|
|
10
|
+
Rules:
|
|
11
|
+
- Each query should capture a different aspect or phrasing of the original intent
|
|
12
|
+
- Include synonyms, related concepts, and alternative terminology
|
|
13
|
+
- Keep queries concise (3-8 words each)
|
|
14
|
+
- Return ONLY the queries, one per line, no numbering or bullets
|
|
15
|
+
- Do not repeat the original query
|
|
16
|
+
|
|
17
|
+
User query: "{query}"
|
|
18
|
+
|
|
19
|
+
Alternative queries:`;
|
|
20
|
+
/**
|
|
21
|
+
* Expand a query into multiple search terms using LLM.
|
|
22
|
+
*
|
|
23
|
+
* @param query - The original user query
|
|
24
|
+
* @param mode - LLM backend override (defaults to configured backend)
|
|
25
|
+
* @returns Array of expanded queries (NOT including the original)
|
|
26
|
+
*/
|
|
27
|
+
export async function expandQuery(query, mode) {
|
|
28
|
+
const prompt = EXPANSION_PROMPT.replace('{query}', query);
|
|
29
|
+
const llmConfig = getLLMConfig();
|
|
30
|
+
const backend = mode ?? llmConfig.backend;
|
|
31
|
+
try {
|
|
32
|
+
const configOverride = backend !== llmConfig.backend ? { backend } : undefined;
|
|
33
|
+
const response = await callLLM(prompt, {
|
|
34
|
+
maxTokens: 200,
|
|
35
|
+
temperature: 0.7,
|
|
36
|
+
}, configOverride);
|
|
37
|
+
if (!response || response.trim().length === 0)
|
|
38
|
+
return [];
|
|
39
|
+
// Parse response: one query per line, filter empty/invalid
|
|
40
|
+
const expanded = response
|
|
41
|
+
.split('\n')
|
|
42
|
+
.map((line) => line.replace(/^[\d\-*.)]+\s*/, '').trim()) // strip numbering
|
|
43
|
+
.filter((line) => line.length >= 3 && line.length <= 200)
|
|
44
|
+
.filter((line) => !/^(alternative|here are|queries?:)/i.test(line))
|
|
45
|
+
.slice(0, 5);
|
|
46
|
+
return expanded;
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
// LLM failure should never break search — silently fall back to no expansion
|
|
50
|
+
return [];
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=query-expansion.js.map
|