@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,488 @@
|
|
|
1
|
+
import { getDb, cachedPrepare } from './connection.js';
|
|
2
|
+
import { cosineSimilarity } from '../embeddings.js';
|
|
3
|
+
import { bufferToFloatArray } from './helpers.js';
|
|
4
|
+
import { triggerAutoExport } from '../graph-scheduler.js';
|
|
5
|
+
import { getMemoryById } from './memories.js';
|
|
6
|
+
import { logWarn } from '../fault-logger.js';
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Knowledge Graph Types
|
|
9
|
+
// ============================================================================
|
|
10
|
+
export const LINK_RELATIONS = [
|
|
11
|
+
'related', // Generic relation
|
|
12
|
+
'caused_by', // A was caused by B
|
|
13
|
+
'leads_to', // A leads to B
|
|
14
|
+
'similar_to', // A is similar to B
|
|
15
|
+
'contradicts', // A contradicts B
|
|
16
|
+
'implements', // A implements B (decision → code)
|
|
17
|
+
'supersedes', // A supersedes/replaces B
|
|
18
|
+
'references', // A references B
|
|
19
|
+
];
|
|
20
|
+
// ============================================================================
|
|
21
|
+
// Memory Link Functions
|
|
22
|
+
// ============================================================================
|
|
23
|
+
/**
|
|
24
|
+
* Create a link between two memories with optional temporal validity
|
|
25
|
+
*/
|
|
26
|
+
export function createMemoryLink(sourceId, targetId, relation = 'related', weight = 1.0, options) {
|
|
27
|
+
// Convert Date objects to ISO strings
|
|
28
|
+
const validFromStr = options?.validFrom
|
|
29
|
+
? options.validFrom instanceof Date
|
|
30
|
+
? options.validFrom.toISOString()
|
|
31
|
+
: options.validFrom
|
|
32
|
+
: null;
|
|
33
|
+
const validUntilStr = options?.validUntil
|
|
34
|
+
? options.validUntil instanceof Date
|
|
35
|
+
? options.validUntil.toISOString()
|
|
36
|
+
: options.validUntil
|
|
37
|
+
: null;
|
|
38
|
+
try {
|
|
39
|
+
const result = cachedPrepare(`
|
|
40
|
+
INSERT INTO memory_links (source_id, target_id, relation, weight, valid_from, valid_until)
|
|
41
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
42
|
+
`).run(sourceId, targetId, relation, weight, validFromStr, validUntilStr);
|
|
43
|
+
// Auto-tag superseded memories for archive
|
|
44
|
+
if (relation === 'supersedes') {
|
|
45
|
+
const target = getMemoryById(targetId);
|
|
46
|
+
if (target && !target.tags.includes('superseded')) {
|
|
47
|
+
updateMemoryTags(targetId, [...target.tags, 'superseded']);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// Schedule auto-export if enabled (async, non-blocking)
|
|
51
|
+
triggerAutoExport().catch((err) => {
|
|
52
|
+
logWarn('graph', err instanceof Error ? err.message : 'Auto-export failed');
|
|
53
|
+
});
|
|
54
|
+
return { id: result.lastInsertRowid, created: true };
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
// Link already exists (UNIQUE constraint)
|
|
58
|
+
if (error.code === 'SQLITE_CONSTRAINT_UNIQUE') {
|
|
59
|
+
const existing = cachedPrepare('SELECT id FROM memory_links WHERE source_id = ? AND target_id = ? AND relation = ?').get(sourceId, targetId, relation);
|
|
60
|
+
return { id: existing.id, created: false };
|
|
61
|
+
}
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Delete a link between memories
|
|
67
|
+
*/
|
|
68
|
+
export function deleteMemoryLink(sourceId, targetId, relation) {
|
|
69
|
+
if (relation) {
|
|
70
|
+
const result = cachedPrepare('DELETE FROM memory_links WHERE source_id = ? AND target_id = ? AND relation = ?').run(sourceId, targetId, relation);
|
|
71
|
+
return result.changes > 0;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
const result = cachedPrepare('DELETE FROM memory_links WHERE source_id = ? AND target_id = ?').run(sourceId, targetId);
|
|
75
|
+
return result.changes > 0;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get all links for a memory (both directions)
|
|
80
|
+
*/
|
|
81
|
+
export function getMemoryLinks(memoryId) {
|
|
82
|
+
const outgoing = cachedPrepare('SELECT * FROM memory_links WHERE source_id = ?').all(memoryId);
|
|
83
|
+
const incoming = cachedPrepare('SELECT * FROM memory_links WHERE target_id = ?').all(memoryId);
|
|
84
|
+
return { outgoing, incoming };
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get memory with its links (optionally filtered by validity at a point in time)
|
|
88
|
+
*/
|
|
89
|
+
export function getMemoryWithLinks(memoryId, options) {
|
|
90
|
+
const memory = getMemoryById(memoryId);
|
|
91
|
+
if (!memory)
|
|
92
|
+
return null;
|
|
93
|
+
const links = getMemoryLinks(memoryId);
|
|
94
|
+
const now = options?.asOfDate?.getTime() ?? Date.now();
|
|
95
|
+
const includeExpired = options?.includeExpired ?? false;
|
|
96
|
+
// Filter links by validity period
|
|
97
|
+
const filterLink = (link) => {
|
|
98
|
+
if (includeExpired)
|
|
99
|
+
return true;
|
|
100
|
+
if (link.valid_from) {
|
|
101
|
+
const validFrom = new Date(link.valid_from).getTime();
|
|
102
|
+
if (now < validFrom)
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
if (link.valid_until) {
|
|
106
|
+
const validUntil = new Date(link.valid_until).getTime();
|
|
107
|
+
if (now > validUntil)
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
return true;
|
|
111
|
+
};
|
|
112
|
+
return {
|
|
113
|
+
...memory,
|
|
114
|
+
outgoing_links: links.outgoing.filter(filterLink).map((l) => ({
|
|
115
|
+
target_id: l.target_id,
|
|
116
|
+
relation: l.relation,
|
|
117
|
+
weight: l.weight,
|
|
118
|
+
valid_from: l.valid_from,
|
|
119
|
+
valid_until: l.valid_until,
|
|
120
|
+
})),
|
|
121
|
+
incoming_links: links.incoming.filter(filterLink).map((l) => ({
|
|
122
|
+
source_id: l.source_id,
|
|
123
|
+
relation: l.relation,
|
|
124
|
+
weight: l.weight,
|
|
125
|
+
valid_from: l.valid_from,
|
|
126
|
+
valid_until: l.valid_until,
|
|
127
|
+
})),
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Find related memories through links (graph traversal)
|
|
132
|
+
* Returns memories connected within N hops
|
|
133
|
+
*/
|
|
134
|
+
export function findConnectedMemories(memoryId, maxDepth = 2) {
|
|
135
|
+
const visited = new Set([memoryId]);
|
|
136
|
+
const results = [];
|
|
137
|
+
// BFS traversal
|
|
138
|
+
let currentLevel = [{ id: memoryId, path: [memoryId] }];
|
|
139
|
+
for (let depth = 1; depth <= maxDepth; depth++) {
|
|
140
|
+
const nextLevel = [];
|
|
141
|
+
for (const { id, path } of currentLevel) {
|
|
142
|
+
// Get outgoing links
|
|
143
|
+
const outgoing = cachedPrepare('SELECT target_id FROM memory_links WHERE source_id = ?').all(id);
|
|
144
|
+
// Get incoming links
|
|
145
|
+
const incoming = cachedPrepare('SELECT source_id FROM memory_links WHERE target_id = ?').all(id);
|
|
146
|
+
const neighbors = [...outgoing.map((r) => r.target_id), ...incoming.map((r) => r.source_id)];
|
|
147
|
+
for (const neighborId of neighbors) {
|
|
148
|
+
if (!visited.has(neighborId)) {
|
|
149
|
+
visited.add(neighborId);
|
|
150
|
+
const memory = getMemoryById(neighborId);
|
|
151
|
+
if (memory) {
|
|
152
|
+
const newPath = [...path, neighborId];
|
|
153
|
+
results.push({ memory, depth, path: newPath });
|
|
154
|
+
nextLevel.push({ id: neighborId, path: newPath });
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
currentLevel = nextLevel;
|
|
160
|
+
}
|
|
161
|
+
return results;
|
|
162
|
+
}
|
|
163
|
+
// ============================================================================
|
|
164
|
+
// Auto-Linking Functions
|
|
165
|
+
// ============================================================================
|
|
166
|
+
/**
|
|
167
|
+
* Find related memories for auto-linking based on embedding similarity
|
|
168
|
+
*/
|
|
169
|
+
export function findRelatedMemoriesForLinking(memoryId, threshold = 0.75, maxLinks = 3) {
|
|
170
|
+
const source = cachedPrepare('SELECT id, embedding FROM memories WHERE id = ?').get(memoryId);
|
|
171
|
+
if (!source)
|
|
172
|
+
return [];
|
|
173
|
+
const sourceEmbedding = bufferToFloatArray(source.embedding);
|
|
174
|
+
const memories = cachedPrepare('SELECT id, embedding FROM memories WHERE id != ?').all(memoryId);
|
|
175
|
+
const similarities = [];
|
|
176
|
+
for (const target of memories) {
|
|
177
|
+
const targetEmbedding = bufferToFloatArray(target.embedding);
|
|
178
|
+
const similarity = cosineSimilarity(sourceEmbedding, targetEmbedding);
|
|
179
|
+
if (similarity >= threshold) {
|
|
180
|
+
similarities.push({ id: target.id, similarity });
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// Sort by similarity and take top N
|
|
184
|
+
similarities.sort((a, b) => b.similarity - a.similarity);
|
|
185
|
+
return similarities.slice(0, maxLinks);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Create auto-links for a specific memory
|
|
189
|
+
*/
|
|
190
|
+
export function createAutoLinks(memoryId, threshold = 0.75, maxLinks = 3) {
|
|
191
|
+
const candidates = findRelatedMemoriesForLinking(memoryId, threshold, maxLinks);
|
|
192
|
+
let linksCreated = 0;
|
|
193
|
+
for (const { id: targetId, similarity } of candidates) {
|
|
194
|
+
const result = createMemoryLink(memoryId, targetId, 'similar_to', similarity);
|
|
195
|
+
if (result.created) {
|
|
196
|
+
linksCreated++;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return linksCreated;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Auto-link similar memories based on embedding similarity
|
|
203
|
+
* Useful for building initial graph structure
|
|
204
|
+
*/
|
|
205
|
+
export function autoLinkSimilarMemories(threshold = 0.75, maxLinks = 3) {
|
|
206
|
+
const memories = cachedPrepare('SELECT id, embedding FROM memories').all();
|
|
207
|
+
let linksCreated = 0;
|
|
208
|
+
for (let i = 0; i < memories.length; i++) {
|
|
209
|
+
const source = memories[i];
|
|
210
|
+
const sourceEmbedding = bufferToFloatArray(source.embedding);
|
|
211
|
+
const similarities = [];
|
|
212
|
+
for (let j = 0; j < memories.length; j++) {
|
|
213
|
+
if (i === j)
|
|
214
|
+
continue;
|
|
215
|
+
const target = memories[j];
|
|
216
|
+
const targetEmbedding = bufferToFloatArray(target.embedding);
|
|
217
|
+
const similarity = cosineSimilarity(sourceEmbedding, targetEmbedding);
|
|
218
|
+
if (similarity >= threshold) {
|
|
219
|
+
similarities.push({ id: target.id, similarity });
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
// Sort by similarity and take top N
|
|
223
|
+
similarities.sort((a, b) => b.similarity - a.similarity);
|
|
224
|
+
const topSimilar = similarities.slice(0, maxLinks);
|
|
225
|
+
for (const { id: targetId, similarity } of topSimilar) {
|
|
226
|
+
const result = createMemoryLink(source.id, targetId, 'similar_to', similarity);
|
|
227
|
+
if (result.created) {
|
|
228
|
+
linksCreated++;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return linksCreated;
|
|
233
|
+
}
|
|
234
|
+
// ============================================================================
|
|
235
|
+
// Graph Statistics
|
|
236
|
+
// ============================================================================
|
|
237
|
+
/**
|
|
238
|
+
* Get graph statistics
|
|
239
|
+
*/
|
|
240
|
+
export function getGraphStats() {
|
|
241
|
+
const totalMemories = cachedPrepare('SELECT COUNT(*) as count FROM memories').get().count;
|
|
242
|
+
const totalLinks = cachedPrepare('SELECT COUNT(*) as count FROM memory_links').get().count;
|
|
243
|
+
// Count memories with no links
|
|
244
|
+
const isolatedCount = cachedPrepare(`
|
|
245
|
+
SELECT COUNT(*) as count FROM memories m
|
|
246
|
+
WHERE NOT EXISTS (SELECT 1 FROM memory_links WHERE source_id = m.id OR target_id = m.id)
|
|
247
|
+
`).get().count;
|
|
248
|
+
// Count by relation type
|
|
249
|
+
const relationCounts = cachedPrepare('SELECT relation, COUNT(*) as count FROM memory_links GROUP BY relation').all();
|
|
250
|
+
const relations = {};
|
|
251
|
+
for (const row of relationCounts) {
|
|
252
|
+
relations[row.relation] = row.count;
|
|
253
|
+
}
|
|
254
|
+
return {
|
|
255
|
+
total_memories: totalMemories,
|
|
256
|
+
total_links: totalLinks,
|
|
257
|
+
avg_links_per_memory: totalMemories > 0 ? totalLinks / totalMemories : 0,
|
|
258
|
+
isolated_memories: isolatedCount,
|
|
259
|
+
relations,
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
// ============================================================================
|
|
263
|
+
// Temporal Graph Functions
|
|
264
|
+
// ============================================================================
|
|
265
|
+
/**
|
|
266
|
+
* Invalidate a memory link by setting valid_until to now.
|
|
267
|
+
* This is the "soft delete" approach for temporal graphs - we keep the link
|
|
268
|
+
* for historical queries but it won't appear in current-time queries.
|
|
269
|
+
*/
|
|
270
|
+
export function invalidateMemoryLink(sourceId, targetId, relation) {
|
|
271
|
+
const now = new Date().toISOString();
|
|
272
|
+
if (relation) {
|
|
273
|
+
const result = cachedPrepare('UPDATE memory_links SET valid_until = ? WHERE source_id = ? AND target_id = ? AND relation = ? AND valid_until IS NULL').run(now, sourceId, targetId, relation);
|
|
274
|
+
return result.changes > 0;
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
const result = cachedPrepare('UPDATE memory_links SET valid_until = ? WHERE source_id = ? AND target_id = ? AND valid_until IS NULL').run(now, sourceId, targetId);
|
|
278
|
+
return result.changes > 0;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Get memory links as of a specific point in time
|
|
283
|
+
*/
|
|
284
|
+
export function getMemoryLinksAsOf(memoryId, asOfDate) {
|
|
285
|
+
const asOfStr = asOfDate.toISOString();
|
|
286
|
+
const outgoing = cachedPrepare(`
|
|
287
|
+
SELECT * FROM memory_links
|
|
288
|
+
WHERE source_id = ?
|
|
289
|
+
AND created_at <= ?
|
|
290
|
+
AND (valid_from IS NULL OR valid_from <= ?)
|
|
291
|
+
AND (valid_until IS NULL OR valid_until > ?)
|
|
292
|
+
`).all(memoryId, asOfStr, asOfStr, asOfStr);
|
|
293
|
+
const incoming = cachedPrepare(`
|
|
294
|
+
SELECT * FROM memory_links
|
|
295
|
+
WHERE target_id = ?
|
|
296
|
+
AND created_at <= ?
|
|
297
|
+
AND (valid_from IS NULL OR valid_from <= ?)
|
|
298
|
+
AND (valid_until IS NULL OR valid_until > ?)
|
|
299
|
+
`).all(memoryId, asOfStr, asOfStr, asOfStr);
|
|
300
|
+
return { outgoing, incoming };
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Find connected memories as of a specific point in time
|
|
304
|
+
*/
|
|
305
|
+
export function findConnectedMemoriesAsOf(memoryId, asOfDate, maxDepth = 2) {
|
|
306
|
+
const asOfStr = asOfDate.toISOString();
|
|
307
|
+
const visited = new Set([memoryId]);
|
|
308
|
+
const results = [];
|
|
309
|
+
// BFS traversal
|
|
310
|
+
let currentLevel = [{ id: memoryId, path: [memoryId] }];
|
|
311
|
+
for (let depth = 1; depth <= maxDepth; depth++) {
|
|
312
|
+
const nextLevel = [];
|
|
313
|
+
for (const { id, path } of currentLevel) {
|
|
314
|
+
// Get outgoing links that were valid at that time
|
|
315
|
+
const outgoing = cachedPrepare(`
|
|
316
|
+
SELECT target_id FROM memory_links
|
|
317
|
+
WHERE source_id = ?
|
|
318
|
+
AND created_at <= ?
|
|
319
|
+
AND (valid_from IS NULL OR valid_from <= ?)
|
|
320
|
+
AND (valid_until IS NULL OR valid_until > ?)
|
|
321
|
+
`).all(id, asOfStr, asOfStr, asOfStr);
|
|
322
|
+
// Get incoming links that were valid at that time
|
|
323
|
+
const incoming = cachedPrepare(`
|
|
324
|
+
SELECT source_id FROM memory_links
|
|
325
|
+
WHERE target_id = ?
|
|
326
|
+
AND created_at <= ?
|
|
327
|
+
AND (valid_from IS NULL OR valid_from <= ?)
|
|
328
|
+
AND (valid_until IS NULL OR valid_until > ?)
|
|
329
|
+
`).all(id, asOfStr, asOfStr, asOfStr);
|
|
330
|
+
const neighbors = [...outgoing.map((r) => r.target_id), ...incoming.map((r) => r.source_id)];
|
|
331
|
+
for (const neighborId of neighbors) {
|
|
332
|
+
if (!visited.has(neighborId)) {
|
|
333
|
+
visited.add(neighborId);
|
|
334
|
+
const memory = getMemoryById(neighborId);
|
|
335
|
+
if (memory) {
|
|
336
|
+
const newPath = [...path, neighborId];
|
|
337
|
+
results.push({ memory, depth, path: newPath });
|
|
338
|
+
nextLevel.push({ id: neighborId, path: newPath });
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
currentLevel = nextLevel;
|
|
344
|
+
}
|
|
345
|
+
return results;
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Get graph snapshot at a specific point in time.
|
|
349
|
+
* This is the core of temporal knowledge graphs - ability to query historical state.
|
|
350
|
+
*
|
|
351
|
+
* @param asOfDate - The point in time to query
|
|
352
|
+
* @returns Graph stats at that point in time
|
|
353
|
+
*/
|
|
354
|
+
export function getGraphStatsAsOf(asOfDate) {
|
|
355
|
+
const asOfStr = asOfDate.toISOString();
|
|
356
|
+
// Count memories that existed at that time
|
|
357
|
+
const totalMemories = cachedPrepare('SELECT COUNT(*) as count FROM memories WHERE created_at <= ?').get(asOfStr).count;
|
|
358
|
+
// Count links that were valid at that time
|
|
359
|
+
const totalLinks = cachedPrepare(`
|
|
360
|
+
SELECT COUNT(*) as count FROM memory_links
|
|
361
|
+
WHERE created_at <= ?
|
|
362
|
+
AND (valid_from IS NULL OR valid_from <= ?)
|
|
363
|
+
AND (valid_until IS NULL OR valid_until > ?)
|
|
364
|
+
`).get(asOfStr, asOfStr, asOfStr).count;
|
|
365
|
+
// Count by relation type at that time
|
|
366
|
+
const relationCounts = cachedPrepare(`
|
|
367
|
+
SELECT relation, COUNT(*) as count FROM memory_links
|
|
368
|
+
WHERE created_at <= ?
|
|
369
|
+
AND (valid_from IS NULL OR valid_from <= ?)
|
|
370
|
+
AND (valid_until IS NULL OR valid_until > ?)
|
|
371
|
+
GROUP BY relation
|
|
372
|
+
`).all(asOfStr, asOfStr, asOfStr);
|
|
373
|
+
const relations = {};
|
|
374
|
+
for (const row of relationCounts) {
|
|
375
|
+
relations[row.relation] = row.count;
|
|
376
|
+
}
|
|
377
|
+
return {
|
|
378
|
+
total_memories: totalMemories,
|
|
379
|
+
total_links: totalLinks,
|
|
380
|
+
avg_links_per_memory: totalMemories > 0 ? totalLinks / totalMemories : 0,
|
|
381
|
+
relations,
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
// ============================================================================
|
|
385
|
+
// Graph Enrichment
|
|
386
|
+
// ============================================================================
|
|
387
|
+
/**
|
|
388
|
+
* Update tags for a memory.
|
|
389
|
+
*/
|
|
390
|
+
export function updateMemoryEmbedding(memoryId, embedding) {
|
|
391
|
+
const embeddingBlob = Buffer.from(new Float32Array(embedding).buffer);
|
|
392
|
+
cachedPrepare('UPDATE memories SET embedding = ? WHERE id = ?').run(embeddingBlob, memoryId);
|
|
393
|
+
}
|
|
394
|
+
export function getMemoriesNeedingReembedding(limit = 100, afterId = 0) {
|
|
395
|
+
return cachedPrepare('SELECT id, content FROM memories WHERE id > ? ORDER BY id LIMIT ?').all(afterId, limit);
|
|
396
|
+
}
|
|
397
|
+
export function getMemoryCount() {
|
|
398
|
+
const row = cachedPrepare('SELECT count(*) as count FROM memories').get();
|
|
399
|
+
return row.count;
|
|
400
|
+
}
|
|
401
|
+
export function getMemoryEmbeddingCount() {
|
|
402
|
+
const row = cachedPrepare('SELECT count(*) as count FROM memories WHERE embedding IS NOT NULL').get();
|
|
403
|
+
return row.count;
|
|
404
|
+
}
|
|
405
|
+
export function updateMemoryTags(memoryId, tags) {
|
|
406
|
+
cachedPrepare('UPDATE memories SET tags = ? WHERE id = ?').run(JSON.stringify(tags), memoryId);
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Update a memory link's relation, weight, and/or enrichment flag.
|
|
410
|
+
*/
|
|
411
|
+
export function updateMemoryLink(linkId, updates) {
|
|
412
|
+
const database = getDb();
|
|
413
|
+
const sets = [];
|
|
414
|
+
const params = [];
|
|
415
|
+
if (updates.relation !== undefined) {
|
|
416
|
+
sets.push('relation = ?');
|
|
417
|
+
params.push(updates.relation);
|
|
418
|
+
}
|
|
419
|
+
if (updates.weight !== undefined) {
|
|
420
|
+
sets.push('weight = ?');
|
|
421
|
+
params.push(updates.weight);
|
|
422
|
+
}
|
|
423
|
+
if (updates.llmEnriched !== undefined) {
|
|
424
|
+
sets.push('llm_enriched = ?');
|
|
425
|
+
params.push(updates.llmEnriched ? 1 : 0);
|
|
426
|
+
}
|
|
427
|
+
if (sets.length > 0) {
|
|
428
|
+
params.push(linkId);
|
|
429
|
+
database.prepare(`UPDATE memory_links SET ${sets.join(', ')} WHERE id = ?`).run(...params);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Upsert centrality score for a memory.
|
|
434
|
+
*/
|
|
435
|
+
export function upsertCentralityScore(memoryId, degree, normalizedDegree) {
|
|
436
|
+
cachedPrepare(`INSERT INTO memory_centrality (memory_id, degree, normalized_degree, updated_at)
|
|
437
|
+
VALUES (?, ?, ?, datetime('now'))
|
|
438
|
+
ON CONFLICT(memory_id) DO UPDATE SET degree = excluded.degree, normalized_degree = excluded.normalized_degree, updated_at = excluded.updated_at`).run(memoryId, degree, normalizedDegree);
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Get centrality scores for a batch of memory IDs.
|
|
442
|
+
*/
|
|
443
|
+
export function getCentralityScores(memoryIds) {
|
|
444
|
+
if (memoryIds.length === 0)
|
|
445
|
+
return new Map();
|
|
446
|
+
const database = getDb();
|
|
447
|
+
const placeholders = memoryIds.map(() => '?').join(',');
|
|
448
|
+
const rows = database
|
|
449
|
+
.prepare(`SELECT memory_id, normalized_degree FROM memory_centrality WHERE memory_id IN (${placeholders})`)
|
|
450
|
+
.all(...memoryIds);
|
|
451
|
+
const map = new Map();
|
|
452
|
+
for (const row of rows)
|
|
453
|
+
map.set(row.memory_id, row.normalized_degree);
|
|
454
|
+
return map;
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* Bulk delete memory links by their IDs.
|
|
458
|
+
* Batches in groups of 999 to respect SQLite parameter limit.
|
|
459
|
+
*/
|
|
460
|
+
export function deleteMemoryLinksByIds(ids) {
|
|
461
|
+
if (ids.length === 0)
|
|
462
|
+
return 0;
|
|
463
|
+
const database = getDb();
|
|
464
|
+
const BATCH_SIZE = 999;
|
|
465
|
+
let totalDeleted = 0;
|
|
466
|
+
for (let i = 0; i < ids.length; i += BATCH_SIZE) {
|
|
467
|
+
const batch = ids.slice(i, i + BATCH_SIZE);
|
|
468
|
+
const placeholders = batch.map(() => '?').join(',');
|
|
469
|
+
const result = database
|
|
470
|
+
.prepare(`DELETE FROM memory_links WHERE id IN (${placeholders})`)
|
|
471
|
+
.run(...batch);
|
|
472
|
+
totalDeleted += result.changes;
|
|
473
|
+
}
|
|
474
|
+
return totalDeleted;
|
|
475
|
+
}
|
|
476
|
+
/**
|
|
477
|
+
* Find memory IDs that have zero links (neither source nor target).
|
|
478
|
+
*/
|
|
479
|
+
export function findIsolatedMemoryIds() {
|
|
480
|
+
const rows = cachedPrepare(`
|
|
481
|
+
SELECT m.id FROM memories m
|
|
482
|
+
WHERE NOT EXISTS (
|
|
483
|
+
SELECT 1 FROM memory_links WHERE source_id = m.id OR target_id = m.id
|
|
484
|
+
)
|
|
485
|
+
`).all();
|
|
486
|
+
return rows.map((r) => r.id);
|
|
487
|
+
}
|
|
488
|
+
//# sourceMappingURL=graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../src/lib/db/graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper utilities for database operations
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Safely convert Buffer to Float32Array, handling byte offset and alignment correctly.
|
|
6
|
+
* Float32Array requires 4-byte alignment, so we copy the buffer to ensure alignment.
|
|
7
|
+
*/
|
|
8
|
+
export declare function bufferToFloatArray(buffer: Buffer): number[];
|
|
9
|
+
/**
|
|
10
|
+
* Convert number[] to Buffer for sqlite-vec
|
|
11
|
+
*/
|
|
12
|
+
export declare function floatArrayToBuffer(arr: number[]): Buffer;
|
|
13
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/lib/db/helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAS3D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,CAGxD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper utilities for database operations
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Safely convert Buffer to Float32Array, handling byte offset and alignment correctly.
|
|
6
|
+
* Float32Array requires 4-byte alignment, so we copy the buffer to ensure alignment.
|
|
7
|
+
*/
|
|
8
|
+
export function bufferToFloatArray(buffer) {
|
|
9
|
+
// Copy buffer to ensure 4-byte alignment for Float32Array
|
|
10
|
+
const aligned = Buffer.from(buffer);
|
|
11
|
+
const floatArray = new Float32Array(aligned.buffer, aligned.byteOffset, aligned.byteLength / Float32Array.BYTES_PER_ELEMENT);
|
|
12
|
+
return Array.from(floatArray);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Convert number[] to Buffer for sqlite-vec
|
|
16
|
+
*/
|
|
17
|
+
export function floatArrayToBuffer(arr) {
|
|
18
|
+
const float32 = new Float32Array(arr);
|
|
19
|
+
return Buffer.from(float32.buffer, float32.byteOffset, float32.byteLength);
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/lib/db/helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,0DAA0D;IAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,IAAI,YAAY,CACjC,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,UAAU,EAClB,OAAO,CAAC,UAAU,GAAG,YAAY,CAAC,iBAAiB,CACpD,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAa;IAC9C,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;AAC7E,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { SearchResult } from './types.js';
|
|
2
|
+
export interface HybridSearchResult extends SearchResult {
|
|
3
|
+
bm25Score?: number;
|
|
4
|
+
vectorScore?: number;
|
|
5
|
+
}
|
|
6
|
+
export interface HybridMemoryResult {
|
|
7
|
+
id: number;
|
|
8
|
+
content: string;
|
|
9
|
+
tags: string | null;
|
|
10
|
+
source: string | null;
|
|
11
|
+
type: string | null;
|
|
12
|
+
created_at: string;
|
|
13
|
+
similarity: number;
|
|
14
|
+
bm25Score?: number;
|
|
15
|
+
vectorScore?: number;
|
|
16
|
+
last_accessed?: string | null;
|
|
17
|
+
access_count?: number;
|
|
18
|
+
valid_from?: string | null;
|
|
19
|
+
valid_until?: string | null;
|
|
20
|
+
quality_score?: number | null;
|
|
21
|
+
}
|
|
22
|
+
export interface HybridGlobalMemoryResult {
|
|
23
|
+
id: number;
|
|
24
|
+
content: string;
|
|
25
|
+
tags: string[];
|
|
26
|
+
source: string | null;
|
|
27
|
+
project: string | null;
|
|
28
|
+
created_at: string;
|
|
29
|
+
similarity: number;
|
|
30
|
+
bm25Score?: number;
|
|
31
|
+
vectorScore?: number;
|
|
32
|
+
isGlobal: true;
|
|
33
|
+
}
|
|
34
|
+
export interface CodeSearchFilters {
|
|
35
|
+
/** Filter results to only those matching this regex against content */
|
|
36
|
+
regex?: string;
|
|
37
|
+
/** Filter results to only chunks with this symbol_type (function, method, class, interface, type_alias) */
|
|
38
|
+
symbolType?: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Hybrid search combining BM25 and vector similarity.
|
|
42
|
+
* Uses sqlite-vec for fast KNN vector search when available.
|
|
43
|
+
*
|
|
44
|
+
* @param query - Search query string
|
|
45
|
+
* @param queryEmbedding - Query embedding vector
|
|
46
|
+
* @param limit - Max results
|
|
47
|
+
* @param threshold - Min similarity threshold
|
|
48
|
+
* @param alpha - Weight: 0=pure BM25, 1=pure vector, 0.5=equal (default: 0.5)
|
|
49
|
+
* @param filters - Optional regex/symbol_type filters
|
|
50
|
+
*/
|
|
51
|
+
export declare function hybridSearchCode(query: string, queryEmbedding: number[], limit?: number, threshold?: number, alpha?: number, filters?: CodeSearchFilters): HybridSearchResult[];
|
|
52
|
+
/**
|
|
53
|
+
* Hybrid search for docs (brain/ markdown files)
|
|
54
|
+
*/
|
|
55
|
+
export declare function hybridSearchDocs(query: string, queryEmbedding: number[], limit?: number, threshold?: number, alpha?: number): HybridSearchResult[];
|
|
56
|
+
/**
|
|
57
|
+
* Hybrid search for memories
|
|
58
|
+
*/
|
|
59
|
+
export declare function hybridSearchMemories(query: string, queryEmbedding: number[], limit?: number, threshold?: number, alpha?: number): HybridMemoryResult[];
|
|
60
|
+
/**
|
|
61
|
+
* Hybrid search for global memories (BM25 + vector with RRF fusion)
|
|
62
|
+
*/
|
|
63
|
+
export declare function hybridSearchGlobalMemories(query: string, queryEmbedding: number[], limit?: number, threshold?: number, alpha?: number, tags?: string[], since?: Date): HybridGlobalMemoryResult[];
|
|
64
|
+
//# sourceMappingURL=hybrid-search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hybrid-search.d.ts","sourceRoot":"","sources":["../../../src/lib/db/hybrid-search.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAgB1C,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,IAAI,CAAC;CAChB;AAMD,MAAM,WAAW,iBAAiB;IAChC,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2GAA2G;IAC3G,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EAAE,EACxB,KAAK,GAAE,MAAU,EACjB,SAAS,GAAE,MAAa,EACxB,KAAK,GAAE,MAAY,EACnB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,kBAAkB,EAAE,CAgQtB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EAAE,EACxB,KAAK,GAAE,MAAU,EACjB,SAAS,GAAE,MAAY,EACvB,KAAK,GAAE,MAAY,GAClB,kBAAkB,EAAE,CAuItB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EAAE,EACxB,KAAK,GAAE,MAAU,EACjB,SAAS,GAAE,MAAY,EACvB,KAAK,GAAE,MAAY,GAClB,kBAAkB,EAAE,CAwItB;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EAAE,EACxB,KAAK,GAAE,MAAU,EACjB,SAAS,GAAE,MAAY,EACvB,KAAK,GAAE,MAAY,EACnB,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,KAAK,CAAC,EAAE,IAAI,GACX,wBAAwB,EAAE,CAuJ5B"}
|