causantic 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (465) hide show
  1. package/README.md +53 -66
  2. package/config.schema.json +12 -87
  3. package/dist/cli/commands/archive.d.ts.map +1 -1
  4. package/dist/cli/commands/archive.js.map +1 -1
  5. package/dist/cli/commands/benchmark-collection.d.ts.map +1 -1
  6. package/dist/cli/commands/benchmark-collection.js.map +1 -1
  7. package/dist/cli/commands/encryption.d.ts.map +1 -1
  8. package/dist/cli/commands/encryption.js.map +1 -1
  9. package/dist/cli/commands/hook.d.ts.map +1 -1
  10. package/dist/cli/commands/hook.js +8 -2
  11. package/dist/cli/commands/hook.js.map +1 -1
  12. package/dist/cli/commands/init.d.ts.map +1 -1
  13. package/dist/cli/commands/init.js +39 -32
  14. package/dist/cli/commands/init.js.map +1 -1
  15. package/dist/cli/commands/maintenance.d.ts.map +1 -1
  16. package/dist/cli/commands/maintenance.js +10 -3
  17. package/dist/cli/commands/maintenance.js.map +1 -1
  18. package/dist/cli/commands/serve.d.ts.map +1 -1
  19. package/dist/cli/commands/serve.js +3 -3
  20. package/dist/cli/commands/serve.js.map +1 -1
  21. package/dist/cli/index.js +1 -1
  22. package/dist/cli/skill-templates.d.ts.map +1 -1
  23. package/dist/cli/skill-templates.js +223 -153
  24. package/dist/cli/skill-templates.js.map +1 -1
  25. package/dist/cli/uninstall.d.ts.map +1 -1
  26. package/dist/cli/uninstall.js +4 -1
  27. package/dist/cli/uninstall.js.map +1 -1
  28. package/dist/clusters/cluster-manager.d.ts +23 -0
  29. package/dist/clusters/cluster-manager.d.ts.map +1 -1
  30. package/dist/clusters/cluster-manager.js +69 -2
  31. package/dist/clusters/cluster-manager.js.map +1 -1
  32. package/dist/clusters/cluster-refresh.d.ts.map +1 -1
  33. package/dist/clusters/cluster-refresh.js +5 -1
  34. package/dist/clusters/cluster-refresh.js.map +1 -1
  35. package/dist/clusters/hdbscan/cluster-extraction.d.ts.map +1 -1
  36. package/dist/clusters/hdbscan/cluster-extraction.js +1 -2
  37. package/dist/clusters/hdbscan/cluster-extraction.js.map +1 -1
  38. package/dist/clusters/hdbscan/hierarchy.d.ts.map +1 -1
  39. package/dist/clusters/hdbscan/hierarchy.js +1 -3
  40. package/dist/clusters/hdbscan/hierarchy.js.map +1 -1
  41. package/dist/clusters/hdbscan/incremental.d.ts.map +1 -1
  42. package/dist/clusters/hdbscan/incremental.js.map +1 -1
  43. package/dist/clusters/hdbscan/probabilities.d.ts +1 -1
  44. package/dist/clusters/hdbscan/probabilities.d.ts.map +1 -1
  45. package/dist/clusters/hdbscan/probabilities.js +1 -1
  46. package/dist/clusters/hdbscan/probabilities.js.map +1 -1
  47. package/dist/clusters/hdbscan.d.ts.map +1 -1
  48. package/dist/clusters/hdbscan.js +3 -5
  49. package/dist/clusters/hdbscan.js.map +1 -1
  50. package/dist/config/loader.d.ts +10 -15
  51. package/dist/config/loader.d.ts.map +1 -1
  52. package/dist/config/loader.js +40 -71
  53. package/dist/config/loader.js.map +1 -1
  54. package/dist/config/memory-config.d.ts +2 -45
  55. package/dist/config/memory-config.d.ts.map +1 -1
  56. package/dist/config/memory-config.js +6 -109
  57. package/dist/config/memory-config.js.map +1 -1
  58. package/dist/core/index.d.ts +1 -1
  59. package/dist/core/index.d.ts.map +1 -1
  60. package/dist/core/lexical-features.d.ts.map +1 -1
  61. package/dist/core/lexical-features.js +141 -20
  62. package/dist/core/lexical-features.js.map +1 -1
  63. package/dist/dashboard/client/assets/index-DdImwNQ0.css +1 -0
  64. package/dist/dashboard/client/assets/index-Ofx8zngH.js +166 -0
  65. package/dist/dashboard/client/index.html +2 -2
  66. package/dist/dashboard/routes/benchmark-collection.d.ts.map +1 -1
  67. package/dist/dashboard/routes/benchmark-collection.js +2 -6
  68. package/dist/dashboard/routes/benchmark-collection.js.map +1 -1
  69. package/dist/dashboard/routes/chain.d.ts +3 -0
  70. package/dist/dashboard/routes/chain.d.ts.map +1 -0
  71. package/dist/dashboard/routes/chain.js +74 -0
  72. package/dist/dashboard/routes/chain.js.map +1 -0
  73. package/dist/dashboard/routes/chunks.d.ts.map +1 -1
  74. package/dist/dashboard/routes/chunks.js +16 -1
  75. package/dist/dashboard/routes/chunks.js.map +1 -1
  76. package/dist/dashboard/routes/graph.d.ts.map +1 -1
  77. package/dist/dashboard/routes/graph.js.map +1 -1
  78. package/dist/dashboard/routes/search.d.ts.map +1 -1
  79. package/dist/dashboard/routes/search.js.map +1 -1
  80. package/dist/dashboard/routes/stats.d.ts.map +1 -1
  81. package/dist/dashboard/routes/stats.js +8 -6
  82. package/dist/dashboard/routes/stats.js.map +1 -1
  83. package/dist/dashboard/routes/timeline.d.ts +3 -0
  84. package/dist/dashboard/routes/timeline.d.ts.map +1 -0
  85. package/dist/dashboard/routes/timeline.js +90 -0
  86. package/dist/dashboard/routes/timeline.js.map +1 -0
  87. package/dist/dashboard/server.d.ts.map +1 -1
  88. package/dist/dashboard/server.js +4 -0
  89. package/dist/dashboard/server.js.map +1 -1
  90. package/dist/eval/annotation-schema.d.ts.map +1 -1
  91. package/dist/eval/annotation-schema.js +2 -5
  92. package/dist/eval/annotation-schema.js.map +1 -1
  93. package/dist/eval/benchmark-runner.d.ts.map +1 -1
  94. package/dist/eval/benchmark-runner.js +2 -2
  95. package/dist/eval/benchmark-runner.js.map +1 -1
  96. package/dist/eval/cluster-evaluator.d.ts.map +1 -1
  97. package/dist/eval/cluster-evaluator.js.map +1 -1
  98. package/dist/eval/collection-benchmark/chain-quality.d.ts +15 -0
  99. package/dist/eval/collection-benchmark/chain-quality.d.ts.map +1 -0
  100. package/dist/eval/collection-benchmark/chain-quality.js +60 -0
  101. package/dist/eval/collection-benchmark/chain-quality.js.map +1 -0
  102. package/dist/eval/collection-benchmark/health.d.ts.map +1 -1
  103. package/dist/eval/collection-benchmark/health.js +2 -2
  104. package/dist/eval/collection-benchmark/health.js.map +1 -1
  105. package/dist/eval/collection-benchmark/history.d.ts.map +1 -1
  106. package/dist/eval/collection-benchmark/history.js +14 -11
  107. package/dist/eval/collection-benchmark/history.js.map +1 -1
  108. package/dist/eval/collection-benchmark/latency.d.ts.map +1 -1
  109. package/dist/eval/collection-benchmark/latency.js +14 -11
  110. package/dist/eval/collection-benchmark/latency.js.map +1 -1
  111. package/dist/eval/collection-benchmark/reporter.d.ts.map +1 -1
  112. package/dist/eval/collection-benchmark/reporter.js +18 -28
  113. package/dist/eval/collection-benchmark/reporter.js.map +1 -1
  114. package/dist/eval/collection-benchmark/retrieval.d.ts.map +1 -1
  115. package/dist/eval/collection-benchmark/retrieval.js +14 -8
  116. package/dist/eval/collection-benchmark/retrieval.js.map +1 -1
  117. package/dist/eval/collection-benchmark/runner.d.ts +3 -3
  118. package/dist/eval/collection-benchmark/runner.d.ts.map +1 -1
  119. package/dist/eval/collection-benchmark/runner.js +46 -37
  120. package/dist/eval/collection-benchmark/runner.js.map +1 -1
  121. package/dist/eval/collection-benchmark/sampler.d.ts.map +1 -1
  122. package/dist/eval/collection-benchmark/sampler.js +14 -12
  123. package/dist/eval/collection-benchmark/sampler.js.map +1 -1
  124. package/dist/eval/collection-benchmark/tuning.d.ts.map +1 -1
  125. package/dist/eval/collection-benchmark/tuning.js +56 -71
  126. package/dist/eval/collection-benchmark/tuning.js.map +1 -1
  127. package/dist/eval/collection-benchmark/types.d.ts +12 -24
  128. package/dist/eval/collection-benchmark/types.d.ts.map +1 -1
  129. package/dist/eval/corpus-builder.d.ts.map +1 -1
  130. package/dist/eval/corpus-builder.js.map +1 -1
  131. package/dist/eval/experiments/boilerplate-filter.d.ts.map +1 -1
  132. package/dist/eval/experiments/boilerplate-filter.js.map +1 -1
  133. package/dist/eval/experiments/cluster-threshold/run-threshold-sweep.d.ts.map +1 -1
  134. package/dist/eval/experiments/cluster-threshold/run-threshold-sweep.js +3 -5
  135. package/dist/eval/experiments/cluster-threshold/run-threshold-sweep.js.map +1 -1
  136. package/dist/eval/experiments/code-focused-mode.d.ts.map +1 -1
  137. package/dist/eval/experiments/code-focused-mode.js +1 -1
  138. package/dist/eval/experiments/code-focused-mode.js.map +1 -1
  139. package/dist/eval/experiments/edge-decay/decay-curves.d.ts +25 -19
  140. package/dist/eval/experiments/edge-decay/decay-curves.d.ts.map +1 -1
  141. package/dist/eval/experiments/edge-decay/decay-curves.js +47 -40
  142. package/dist/eval/experiments/edge-decay/decay-curves.js.map +1 -1
  143. package/dist/eval/experiments/edge-decay/index.d.ts +6 -4
  144. package/dist/eval/experiments/edge-decay/index.d.ts.map +1 -1
  145. package/dist/eval/experiments/edge-decay/index.js +5 -3
  146. package/dist/eval/experiments/edge-decay/index.js.map +1 -1
  147. package/dist/eval/experiments/edge-decay/presets.d.ts +14 -4
  148. package/dist/eval/experiments/edge-decay/presets.d.ts.map +1 -1
  149. package/dist/eval/experiments/edge-decay/presets.js +73 -68
  150. package/dist/eval/experiments/edge-decay/presets.js.map +1 -1
  151. package/dist/eval/experiments/edge-decay/reference-extractor.d.ts +2 -1
  152. package/dist/eval/experiments/edge-decay/reference-extractor.d.ts.map +1 -1
  153. package/dist/eval/experiments/edge-decay/reference-extractor.js +26 -40
  154. package/dist/eval/experiments/edge-decay/reference-extractor.js.map +1 -1
  155. package/dist/eval/experiments/edge-decay/reference-types.d.ts +24 -17
  156. package/dist/eval/experiments/edge-decay/reference-types.d.ts.map +1 -1
  157. package/dist/eval/experiments/edge-decay/reference-types.js +3 -0
  158. package/dist/eval/experiments/edge-decay/reference-types.js.map +1 -1
  159. package/dist/eval/experiments/edge-decay/retrieval-ranking.d.ts +8 -8
  160. package/dist/eval/experiments/edge-decay/retrieval-ranking.d.ts.map +1 -1
  161. package/dist/eval/experiments/edge-decay/retrieval-ranking.js +77 -133
  162. package/dist/eval/experiments/edge-decay/retrieval-ranking.js.map +1 -1
  163. package/dist/eval/experiments/edge-decay/run-experiments.d.ts +7 -3
  164. package/dist/eval/experiments/edge-decay/run-experiments.d.ts.map +1 -1
  165. package/dist/eval/experiments/edge-decay/run-experiments.js +71 -52
  166. package/dist/eval/experiments/edge-decay/run-experiments.js.map +1 -1
  167. package/dist/eval/experiments/edge-decay/simulate.d.ts +1 -1
  168. package/dist/eval/experiments/edge-decay/simulate.d.ts.map +1 -1
  169. package/dist/eval/experiments/edge-decay/simulate.js +7 -19
  170. package/dist/eval/experiments/edge-decay/simulate.js.map +1 -1
  171. package/dist/eval/experiments/hdbscan-sweep.d.ts.map +1 -1
  172. package/dist/eval/experiments/hdbscan-sweep.js +2 -6
  173. package/dist/eval/experiments/hdbscan-sweep.js.map +1 -1
  174. package/dist/eval/experiments/single-model-run.d.ts.map +1 -1
  175. package/dist/eval/experiments/single-model-run.js +2 -2
  176. package/dist/eval/experiments/single-model-run.js.map +1 -1
  177. package/dist/eval/experiments/thinking-ablation.d.ts.map +1 -1
  178. package/dist/eval/experiments/thinking-ablation.js +1 -1
  179. package/dist/eval/experiments/thinking-ablation.js.map +1 -1
  180. package/dist/eval/experiments/topic-continuity/hybrid-classifier.d.ts.map +1 -1
  181. package/dist/eval/experiments/topic-continuity/hybrid-classifier.js +54 -6
  182. package/dist/eval/experiments/topic-continuity/hybrid-classifier.js.map +1 -1
  183. package/dist/eval/experiments/topic-continuity/labeler.d.ts.map +1 -1
  184. package/dist/eval/experiments/topic-continuity/labeler.js +1 -4
  185. package/dist/eval/experiments/topic-continuity/labeler.js.map +1 -1
  186. package/dist/eval/experiments/topic-continuity/run-experiment.d.ts.map +1 -1
  187. package/dist/eval/experiments/topic-continuity/run-experiment.js +5 -13
  188. package/dist/eval/experiments/topic-continuity/run-experiment.js.map +1 -1
  189. package/dist/eval/experiments/truncation.d.ts.map +1 -1
  190. package/dist/eval/experiments/truncation.js.map +1 -1
  191. package/dist/eval/experiments/types.d.ts.map +1 -1
  192. package/dist/eval/experiments/types.js.map +1 -1
  193. package/dist/eval/metrics.d.ts.map +1 -1
  194. package/dist/eval/metrics.js.map +1 -1
  195. package/dist/hooks/claudemd-generator.d.ts.map +1 -1
  196. package/dist/hooks/claudemd-generator.js +3 -4
  197. package/dist/hooks/claudemd-generator.js.map +1 -1
  198. package/dist/hooks/hook-utils.d.ts +16 -0
  199. package/dist/hooks/hook-utils.d.ts.map +1 -1
  200. package/dist/hooks/hook-utils.js +51 -2
  201. package/dist/hooks/hook-utils.js.map +1 -1
  202. package/dist/hooks/index.d.ts +4 -2
  203. package/dist/hooks/index.d.ts.map +1 -1
  204. package/dist/hooks/index.js +3 -1
  205. package/dist/hooks/index.js.map +1 -1
  206. package/dist/hooks/pre-compact.d.ts.map +1 -1
  207. package/dist/hooks/pre-compact.js +6 -51
  208. package/dist/hooks/pre-compact.js.map +1 -1
  209. package/dist/hooks/session-end.d.ts +58 -0
  210. package/dist/hooks/session-end.d.ts.map +1 -0
  211. package/dist/hooks/session-end.js +82 -0
  212. package/dist/hooks/session-end.js.map +1 -0
  213. package/dist/hooks/session-start.d.ts.map +1 -1
  214. package/dist/hooks/session-start.js +3 -5
  215. package/dist/hooks/session-start.js.map +1 -1
  216. package/dist/index.d.ts +1 -2
  217. package/dist/index.d.ts.map +1 -1
  218. package/dist/index.js +1 -3
  219. package/dist/index.js.map +1 -1
  220. package/dist/ingest/batch-ingest.d.ts.map +1 -1
  221. package/dist/ingest/batch-ingest.js.map +1 -1
  222. package/dist/ingest/brief-debrief-detector.d.ts +6 -13
  223. package/dist/ingest/brief-debrief-detector.d.ts.map +1 -1
  224. package/dist/ingest/brief-debrief-detector.js +9 -16
  225. package/dist/ingest/brief-debrief-detector.js.map +1 -1
  226. package/dist/ingest/cross-session-linker.d.ts +2 -1
  227. package/dist/ingest/cross-session-linker.d.ts.map +1 -1
  228. package/dist/ingest/cross-session-linker.js +17 -7
  229. package/dist/ingest/cross-session-linker.js.map +1 -1
  230. package/dist/ingest/edge-creator.d.ts +14 -40
  231. package/dist/ingest/edge-creator.d.ts.map +1 -1
  232. package/dist/ingest/edge-creator.js +34 -132
  233. package/dist/ingest/edge-creator.js.map +1 -1
  234. package/dist/ingest/edge-detector.d.ts +27 -12
  235. package/dist/ingest/edge-detector.d.ts.map +1 -1
  236. package/dist/ingest/edge-detector.js +68 -200
  237. package/dist/ingest/edge-detector.js.map +1 -1
  238. package/dist/ingest/index.d.ts +3 -3
  239. package/dist/ingest/index.d.ts.map +1 -1
  240. package/dist/ingest/index.js +3 -3
  241. package/dist/ingest/index.js.map +1 -1
  242. package/dist/ingest/ingest-session.d.ts +1 -8
  243. package/dist/ingest/ingest-session.d.ts.map +1 -1
  244. package/dist/ingest/ingest-session.js +54 -107
  245. package/dist/ingest/ingest-session.js.map +1 -1
  246. package/dist/ingest/rebuild-edges.d.ts +17 -0
  247. package/dist/ingest/rebuild-edges.d.ts.map +1 -0
  248. package/dist/ingest/rebuild-edges.js +97 -0
  249. package/dist/ingest/rebuild-edges.js.map +1 -0
  250. package/dist/maintenance/scheduler.d.ts +2 -3
  251. package/dist/maintenance/scheduler.d.ts.map +1 -1
  252. package/dist/maintenance/scheduler.js +14 -23
  253. package/dist/maintenance/scheduler.js.map +1 -1
  254. package/dist/maintenance/tasks/cleanup-vectors.d.ts +3 -1
  255. package/dist/maintenance/tasks/cleanup-vectors.d.ts.map +1 -1
  256. package/dist/maintenance/tasks/cleanup-vectors.js +6 -4
  257. package/dist/maintenance/tasks/cleanup-vectors.js.map +1 -1
  258. package/dist/maintenance/tasks/index.d.ts +0 -1
  259. package/dist/maintenance/tasks/index.d.ts.map +1 -1
  260. package/dist/maintenance/tasks/index.js +0 -1
  261. package/dist/maintenance/tasks/index.js.map +1 -1
  262. package/dist/mcp/index.d.ts +1 -1
  263. package/dist/mcp/index.d.ts.map +1 -1
  264. package/dist/mcp/index.js +1 -1
  265. package/dist/mcp/index.js.map +1 -1
  266. package/dist/mcp/server.d.ts.map +1 -1
  267. package/dist/mcp/server.js +9 -8
  268. package/dist/mcp/server.js.map +1 -1
  269. package/dist/mcp/tools.d.ts +5 -5
  270. package/dist/mcp/tools.d.ts.map +1 -1
  271. package/dist/mcp/tools.js +42 -36
  272. package/dist/mcp/tools.js.map +1 -1
  273. package/dist/models/device-detector.d.ts.map +1 -1
  274. package/dist/models/device-detector.js +20 -10
  275. package/dist/models/device-detector.js.map +1 -1
  276. package/dist/models/embedder.d.ts.map +1 -1
  277. package/dist/models/embedder.js +5 -2
  278. package/dist/models/embedder.js.map +1 -1
  279. package/dist/models/model-registry.d.ts.map +1 -1
  280. package/dist/models/model-registry.js.map +1 -1
  281. package/dist/parser/chunker.d.ts +5 -40
  282. package/dist/parser/chunker.d.ts.map +1 -1
  283. package/dist/parser/chunker.js +5 -111
  284. package/dist/parser/chunker.js.map +1 -1
  285. package/dist/parser/session-reader.d.ts.map +1 -1
  286. package/dist/parser/session-reader.js +3 -6
  287. package/dist/parser/session-reader.js.map +1 -1
  288. package/dist/parser/turn-assembler.d.ts.map +1 -1
  289. package/dist/parser/turn-assembler.js +0 -1
  290. package/dist/parser/turn-assembler.js.map +1 -1
  291. package/dist/parser/types.d.ts.map +1 -1
  292. package/dist/report/reporter.d.ts.map +1 -1
  293. package/dist/report/reporter.js +1 -3
  294. package/dist/report/reporter.js.map +1 -1
  295. package/dist/retrieval/chain-assembler.d.ts +58 -0
  296. package/dist/retrieval/chain-assembler.d.ts.map +1 -0
  297. package/dist/retrieval/chain-assembler.js +126 -0
  298. package/dist/retrieval/chain-assembler.js.map +1 -0
  299. package/dist/retrieval/chain-walker.d.ts +57 -0
  300. package/dist/retrieval/chain-walker.d.ts.map +1 -0
  301. package/dist/retrieval/chain-walker.js +121 -0
  302. package/dist/retrieval/chain-walker.js.map +1 -0
  303. package/dist/retrieval/cluster-expander.d.ts.map +1 -1
  304. package/dist/retrieval/cluster-expander.js +3 -3
  305. package/dist/retrieval/cluster-expander.js.map +1 -1
  306. package/dist/retrieval/context-assembler.d.ts +13 -36
  307. package/dist/retrieval/context-assembler.d.ts.map +1 -1
  308. package/dist/retrieval/context-assembler.js +50 -287
  309. package/dist/retrieval/context-assembler.js.map +1 -1
  310. package/dist/retrieval/index.d.ts +8 -4
  311. package/dist/retrieval/index.d.ts.map +1 -1
  312. package/dist/retrieval/index.js +7 -3
  313. package/dist/retrieval/index.js.map +1 -1
  314. package/dist/retrieval/rrf.d.ts.map +1 -1
  315. package/dist/retrieval/rrf.js +4 -2
  316. package/dist/retrieval/rrf.js.map +1 -1
  317. package/dist/retrieval/search-assembler.d.ts +59 -0
  318. package/dist/retrieval/search-assembler.d.ts.map +1 -0
  319. package/dist/retrieval/search-assembler.js +209 -0
  320. package/dist/retrieval/search-assembler.js.map +1 -0
  321. package/dist/retrieval/session-reconstructor.d.ts.map +1 -1
  322. package/dist/retrieval/session-reconstructor.js +9 -7
  323. package/dist/retrieval/session-reconstructor.js.map +1 -1
  324. package/dist/storage/archive.d.ts +0 -2
  325. package/dist/storage/archive.d.ts.map +1 -1
  326. package/dist/storage/archive.js +18 -12
  327. package/dist/storage/archive.js.map +1 -1
  328. package/dist/storage/checkpoint-store.d.ts +0 -1
  329. package/dist/storage/checkpoint-store.d.ts.map +1 -1
  330. package/dist/storage/checkpoint-store.js +5 -7
  331. package/dist/storage/checkpoint-store.js.map +1 -1
  332. package/dist/storage/chunk-store.d.ts.map +1 -1
  333. package/dist/storage/chunk-store.js +15 -17
  334. package/dist/storage/chunk-store.js.map +1 -1
  335. package/dist/storage/cluster-store.d.ts.map +1 -1
  336. package/dist/storage/cluster-store.js.map +1 -1
  337. package/dist/storage/db.d.ts.map +1 -1
  338. package/dist/storage/db.js.map +1 -1
  339. package/dist/storage/edge-store.d.ts +17 -30
  340. package/dist/storage/edge-store.d.ts.map +1 -1
  341. package/dist/storage/edge-store.js +43 -123
  342. package/dist/storage/edge-store.js.map +1 -1
  343. package/dist/storage/embedding-cache.d.ts.map +1 -1
  344. package/dist/storage/embedding-cache.js +1 -3
  345. package/dist/storage/embedding-cache.js.map +1 -1
  346. package/dist/storage/encryption.d.ts.map +1 -1
  347. package/dist/storage/encryption.js +4 -15
  348. package/dist/storage/encryption.js.map +1 -1
  349. package/dist/storage/index.d.ts +1 -4
  350. package/dist/storage/index.d.ts.map +1 -1
  351. package/dist/storage/index.js +1 -5
  352. package/dist/storage/index.js.map +1 -1
  353. package/dist/storage/keyword-store.d.ts.map +1 -1
  354. package/dist/storage/keyword-store.js +11 -7
  355. package/dist/storage/keyword-store.js.map +1 -1
  356. package/dist/storage/migrations.d.ts.map +1 -1
  357. package/dist/storage/migrations.js +56 -4
  358. package/dist/storage/migrations.js.map +1 -1
  359. package/dist/storage/schema.sql +8 -20
  360. package/dist/storage/types.d.ts +12 -26
  361. package/dist/storage/types.d.ts.map +1 -1
  362. package/dist/storage/types.js +1 -2
  363. package/dist/storage/types.js.map +1 -1
  364. package/dist/storage/vector-store.d.ts +9 -15
  365. package/dist/storage/vector-store.d.ts.map +1 -1
  366. package/dist/storage/vector-store.js +64 -43
  367. package/dist/storage/vector-store.js.map +1 -1
  368. package/dist/utils/angular-distance.d.ts.map +1 -1
  369. package/dist/utils/angular-distance.js.map +1 -1
  370. package/dist/utils/logger.d.ts.map +1 -1
  371. package/dist/utils/logger.js.map +1 -1
  372. package/dist/utils/secret-store.d.ts.map +1 -1
  373. package/dist/utils/secret-store.js +17 -13
  374. package/dist/utils/secret-store.js.map +1 -1
  375. package/dist/utils/secure-buffer.d.ts.map +1 -1
  376. package/dist/utils/secure-buffer.js.map +1 -1
  377. package/package.json +7 -6
  378. package/src/dashboard/client/package-lock.json +3 -3
  379. package/src/dashboard/client/package.json +3 -3
  380. package/dist/dashboard/client/assets/index-CMUKy4f9.css +0 -1
  381. package/dist/dashboard/client/assets/index-esv8TpCN.js +0 -168
  382. package/dist/eval/collection-benchmark/graph-value.d.ts +0 -16
  383. package/dist/eval/collection-benchmark/graph-value.d.ts.map +0 -1
  384. package/dist/eval/collection-benchmark/graph-value.js +0 -162
  385. package/dist/eval/collection-benchmark/graph-value.js.map +0 -1
  386. package/dist/eval/experiments/vector-decay-shapes/curve-shapes-experiment.d.ts +0 -10
  387. package/dist/eval/experiments/vector-decay-shapes/curve-shapes-experiment.d.ts.map +0 -1
  388. package/dist/eval/experiments/vector-decay-shapes/curve-shapes-experiment.js +0 -229
  389. package/dist/eval/experiments/vector-decay-shapes/curve-shapes-experiment.js.map +0 -1
  390. package/dist/eval/experiments/vector-decay-shapes/graph-range-experiment.d.ts +0 -12
  391. package/dist/eval/experiments/vector-decay-shapes/graph-range-experiment.d.ts.map +0 -1
  392. package/dist/eval/experiments/vector-decay-shapes/graph-range-experiment.js +0 -316
  393. package/dist/eval/experiments/vector-decay-shapes/graph-range-experiment.js.map +0 -1
  394. package/dist/eval/experiments/vector-decay-shapes/hop-decay.d.ts +0 -19
  395. package/dist/eval/experiments/vector-decay-shapes/hop-decay.d.ts.map +0 -1
  396. package/dist/eval/experiments/vector-decay-shapes/hop-decay.js +0 -127
  397. package/dist/eval/experiments/vector-decay-shapes/hop-decay.js.map +0 -1
  398. package/dist/eval/experiments/vector-decay-shapes/index.d.ts +0 -11
  399. package/dist/eval/experiments/vector-decay-shapes/index.d.ts.map +0 -1
  400. package/dist/eval/experiments/vector-decay-shapes/index.js +0 -11
  401. package/dist/eval/experiments/vector-decay-shapes/index.js.map +0 -1
  402. package/dist/eval/experiments/vector-decay-shapes/path-traversal-experiment.d.ts +0 -14
  403. package/dist/eval/experiments/vector-decay-shapes/path-traversal-experiment.d.ts.map +0 -1
  404. package/dist/eval/experiments/vector-decay-shapes/path-traversal-experiment.js +0 -274
  405. package/dist/eval/experiments/vector-decay-shapes/path-traversal-experiment.js.map +0 -1
  406. package/dist/eval/experiments/vector-decay-shapes/presets.d.ts +0 -36
  407. package/dist/eval/experiments/vector-decay-shapes/presets.d.ts.map +0 -1
  408. package/dist/eval/experiments/vector-decay-shapes/presets.js +0 -157
  409. package/dist/eval/experiments/vector-decay-shapes/presets.js.map +0 -1
  410. package/dist/eval/experiments/vector-decay-shapes/run-experiment.d.ts +0 -20
  411. package/dist/eval/experiments/vector-decay-shapes/run-experiment.d.ts.map +0 -1
  412. package/dist/eval/experiments/vector-decay-shapes/run-experiment.js +0 -504
  413. package/dist/eval/experiments/vector-decay-shapes/run-experiment.js.map +0 -1
  414. package/dist/eval/experiments/vector-decay-shapes/types.d.ts +0 -111
  415. package/dist/eval/experiments/vector-decay-shapes/types.d.ts.map +0 -1
  416. package/dist/eval/experiments/vector-decay-shapes/types.js +0 -15
  417. package/dist/eval/experiments/vector-decay-shapes/types.js.map +0 -1
  418. package/dist/eval/experiments/vector-decay-sweep/index.d.ts +0 -7
  419. package/dist/eval/experiments/vector-decay-sweep/index.d.ts.map +0 -1
  420. package/dist/eval/experiments/vector-decay-sweep/index.js +0 -7
  421. package/dist/eval/experiments/vector-decay-sweep/index.js.map +0 -1
  422. package/dist/eval/experiments/vector-decay-sweep/run-sweep.d.ts +0 -30
  423. package/dist/eval/experiments/vector-decay-sweep/run-sweep.d.ts.map +0 -1
  424. package/dist/eval/experiments/vector-decay-sweep/run-sweep.js +0 -378
  425. package/dist/eval/experiments/vector-decay-sweep/run-sweep.js.map +0 -1
  426. package/dist/eval/experiments/vector-decay-sweep/types.d.ts +0 -109
  427. package/dist/eval/experiments/vector-decay-sweep/types.d.ts.map +0 -1
  428. package/dist/eval/experiments/vector-decay-sweep/types.js +0 -16
  429. package/dist/eval/experiments/vector-decay-sweep/types.js.map +0 -1
  430. package/dist/maintenance/tasks/prune-graph.d.ts +0 -12
  431. package/dist/maintenance/tasks/prune-graph.d.ts.map +0 -1
  432. package/dist/maintenance/tasks/prune-graph.js +0 -23
  433. package/dist/maintenance/tasks/prune-graph.js.map +0 -1
  434. package/dist/retrieval/traverser.d.ts +0 -66
  435. package/dist/retrieval/traverser.d.ts.map +0 -1
  436. package/dist/retrieval/traverser.js +0 -160
  437. package/dist/retrieval/traverser.js.map +0 -1
  438. package/dist/storage/clock-store.d.ts +0 -80
  439. package/dist/storage/clock-store.d.ts.map +0 -1
  440. package/dist/storage/clock-store.js +0 -155
  441. package/dist/storage/clock-store.js.map +0 -1
  442. package/dist/storage/decay.d.ts +0 -125
  443. package/dist/storage/decay.d.ts.map +0 -1
  444. package/dist/storage/decay.js +0 -276
  445. package/dist/storage/decay.js.map +0 -1
  446. package/dist/storage/pruner.d.ts +0 -111
  447. package/dist/storage/pruner.d.ts.map +0 -1
  448. package/dist/storage/pruner.js +0 -280
  449. package/dist/storage/pruner.js.map +0 -1
  450. package/dist/temporal/clock-compactor.d.ts +0 -65
  451. package/dist/temporal/clock-compactor.d.ts.map +0 -1
  452. package/dist/temporal/clock-compactor.js +0 -157
  453. package/dist/temporal/clock-compactor.js.map +0 -1
  454. package/dist/temporal/index.d.ts +0 -6
  455. package/dist/temporal/index.d.ts.map +0 -1
  456. package/dist/temporal/index.js +0 -6
  457. package/dist/temporal/index.js.map +0 -1
  458. package/dist/temporal/vector-clock.d.ts +0 -143
  459. package/dist/temporal/vector-clock.d.ts.map +0 -1
  460. package/dist/temporal/vector-clock.js +0 -231
  461. package/dist/temporal/vector-clock.js.map +0 -1
  462. package/dist/utils/keychain.d.ts +0 -43
  463. package/dist/utils/keychain.d.ts.map +0 -1
  464. package/dist/utils/keychain.js +0 -82
  465. package/dist/utils/keychain.js.map +0 -1
@@ -1,66 +0,0 @@
1
- /**
2
- * Graph traversal with decay-weighted edges.
3
- *
4
- * Uses sum-product rules analogous to Feynman path integrals:
5
- * - Product: Weights multiply along each path
6
- * - Sum: Multiple paths to the same node accumulate
7
- * - Convergence: Cycles naturally attenuate (no explicit detection needed)
8
- *
9
- * Since edge weights are in (0,1], path products decrease with length.
10
- * The minWeight threshold prunes paths that have attenuated below relevance,
11
- * which naturally handles cycle convergence.
12
- */
13
- import type { DecayModelConfig } from '../core/decay-types.js';
14
- import type { WeightedChunk, TraversalResult, StoredChunk } from '../storage/types.js';
15
- import type { VectorClock } from '../temporal/vector-clock.js';
16
- /**
17
- * Options for graph traversal.
18
- * Direction-specific decay curves are automatically applied:
19
- * - Backward: Linear (dies@10) for 4-20 hop range
20
- * - Forward: Delayed linear (5h, dies@20) for 1-20 hop range
21
- */
22
- export interface TraversalOptions {
23
- /** Maximum traversal depth. Default: from config. */
24
- maxDepth?: number;
25
- /** Minimum weight threshold. Default: from config. */
26
- minWeight?: number;
27
- /** Time-based decay configuration (fallback for edges without vector clocks). */
28
- decayConfig?: DecayModelConfig;
29
- /** Traversal direction. Determines which decay curve is used. */
30
- direction: 'backward' | 'forward';
31
- /** Reference clock for vector clock-based decay (optional). */
32
- referenceClock?: VectorClock;
33
- }
34
- /**
35
- * Traverse the graph from a starting chunk using sum-product rules.
36
- *
37
- * Weights multiply along paths (product) and accumulate when multiple
38
- * paths reach the same node (sum). Cycles are handled naturally by
39
- * convergence — since weights are <1, cyclic paths attenuate geometrically
40
- * and are pruned when they fall below minWeight.
41
- *
42
- * @param startChunkId - Starting chunk ID
43
- * @param queryTime - Query time in milliseconds (for decay calculation)
44
- * @param options - Traversal options
45
- * @returns Traversal result with weighted chunks
46
- */
47
- export declare function traverse(startChunkId: string, queryTime: number, options: TraversalOptions): Promise<TraversalResult>;
48
- /**
49
- * Traverse from multiple starting points and merge results.
50
- * Useful for starting from vector search results.
51
- */
52
- export declare function traverseMultiple(startChunkIds: string[], startWeights: number[], queryTime: number, options: TraversalOptions): Promise<TraversalResult>;
53
- /**
54
- * Get chunks with their content from traversal results.
55
- */
56
- export declare function resolveChunks(traversalResult: TraversalResult): Array<{
57
- chunk: StoredChunk;
58
- weight: number;
59
- depth: number;
60
- }>;
61
- /**
62
- * Deduplicate and re-rank weighted chunks.
63
- * Combines duplicate entries and applies additional scoring.
64
- */
65
- export declare function dedupeAndRank(chunks: WeightedChunk[]): WeightedChunk[];
66
- //# sourceMappingURL=traverser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"traverser.d.ts","sourceRoot":"","sources":["../../src/retrieval/traverser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAY,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACjG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,iEAAiE;IACjE,SAAS,EAAE,UAAU,GAAG,SAAS,CAAC;IAClC,+DAA+D;IAC/D,cAAc,CAAC,EAAE,WAAW,CAAC;CAC9B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,QAAQ,CAC5B,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,CAyE1B;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,MAAM,EAAE,EACvB,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,CA0C1B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,eAAe,EAAE,eAAe,GAC/B,KAAK,CAAC;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAe9D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAmBtE"}
@@ -1,160 +0,0 @@
1
- /**
2
- * Graph traversal with decay-weighted edges.
3
- *
4
- * Uses sum-product rules analogous to Feynman path integrals:
5
- * - Product: Weights multiply along each path
6
- * - Sum: Multiple paths to the same node accumulate
7
- * - Convergence: Cycles naturally attenuate (no explicit detection needed)
8
- *
9
- * Since edge weights are in (0,1], path products decrease with length.
10
- * The minWeight threshold prunes paths that have attenuated below relevance,
11
- * which naturally handles cycle convergence.
12
- */
13
- import { getWeightedEdges } from '../storage/edge-store.js';
14
- import { getChunkById } from '../storage/chunk-store.js';
15
- import { getConfig } from '../config/memory-config.js';
16
- /**
17
- * Traverse the graph from a starting chunk using sum-product rules.
18
- *
19
- * Weights multiply along paths (product) and accumulate when multiple
20
- * paths reach the same node (sum). Cycles are handled naturally by
21
- * convergence — since weights are <1, cyclic paths attenuate geometrically
22
- * and are pruned when they fall below minWeight.
23
- *
24
- * @param startChunkId - Starting chunk ID
25
- * @param queryTime - Query time in milliseconds (for decay calculation)
26
- * @param options - Traversal options
27
- * @returns Traversal result with weighted chunks
28
- */
29
- export async function traverse(startChunkId, queryTime, options) {
30
- const config = getConfig();
31
- const { maxDepth = config.maxTraversalDepth, minWeight = config.minSignalThreshold, direction, referenceClock, } = options;
32
- // Select time-based decay config as fallback (for edges without vector clocks)
33
- const decayConfig = options.decayConfig ?? (direction === 'backward' ? config.shortRangeDecay : config.forwardDecay);
34
- // Accumulate weights across all paths (sum rule)
35
- const accumulatedWeights = new Map();
36
- const minDepths = new Map();
37
- let pathsExplored = 0;
38
- async function visit(chunkId, depth, pathWeight) {
39
- // Prune paths that have attenuated below threshold (convergence criterion)
40
- // Since edge weights are <1, cyclic paths naturally attenuate until pruned
41
- if (pathWeight < minWeight)
42
- return;
43
- if (depth > maxDepth)
44
- return;
45
- pathsExplored++;
46
- // Accumulate this path's weight contribution (sum rule)
47
- const existingWeight = accumulatedWeights.get(chunkId) ?? 0;
48
- accumulatedWeights.set(chunkId, existingWeight + pathWeight);
49
- // Track minimum depth for reporting
50
- const existingDepth = minDepths.get(chunkId) ?? Infinity;
51
- minDepths.set(chunkId, Math.min(existingDepth, depth));
52
- // Get weighted edges from this chunk
53
- const edges = getWeightedEdges(chunkId, queryTime, decayConfig, direction, referenceClock);
54
- for (const edge of edges) {
55
- // Compute new path weight (product rule)
56
- const newWeight = pathWeight * edge.weight;
57
- // Recursively visit — cycles naturally attenuate via weight products <1
58
- await visit(edge.targetChunkId, depth + 1, newWeight);
59
- }
60
- }
61
- // Start traversal from the given chunk
62
- await visit(startChunkId, 0, 1.0);
63
- // Convert accumulated weights to results
64
- const results = [];
65
- for (const [chunkId, weight] of accumulatedWeights) {
66
- if (chunkId !== startChunkId) { // Exclude start node from results
67
- results.push({
68
- chunkId,
69
- weight,
70
- depth: minDepths.get(chunkId) ?? 0,
71
- });
72
- }
73
- }
74
- // Sort by weight descending
75
- results.sort((a, b) => b.weight - a.weight);
76
- return {
77
- chunks: results,
78
- visited: pathsExplored,
79
- };
80
- }
81
- /**
82
- * Traverse from multiple starting points and merge results.
83
- * Useful for starting from vector search results.
84
- */
85
- export async function traverseMultiple(startChunkIds, startWeights, queryTime, options) {
86
- // Track all visited and accumulated weights
87
- const globalWeights = new Map();
88
- const globalDepths = new Map();
89
- let totalVisited = 0;
90
- for (let i = 0; i < startChunkIds.length; i++) {
91
- const startId = startChunkIds[i];
92
- const startWeight = startWeights[i] ?? 1.0;
93
- // Adjust options with starting weight
94
- const result = await traverse(startId, queryTime, options);
95
- totalVisited += result.visited;
96
- // Merge results, accumulating weights
97
- for (const chunk of result.chunks) {
98
- const scaledWeight = chunk.weight * startWeight;
99
- const existingWeight = globalWeights.get(chunk.chunkId) ?? 0;
100
- globalWeights.set(chunk.chunkId, existingWeight + scaledWeight);
101
- // Keep minimum depth
102
- const existingDepth = globalDepths.get(chunk.chunkId) ?? Infinity;
103
- globalDepths.set(chunk.chunkId, Math.min(existingDepth, chunk.depth));
104
- }
105
- }
106
- // Convert to array and sort
107
- const chunks = [];
108
- for (const [chunkId, weight] of globalWeights) {
109
- chunks.push({
110
- chunkId,
111
- weight,
112
- depth: globalDepths.get(chunkId) ?? 0,
113
- });
114
- }
115
- chunks.sort((a, b) => b.weight - a.weight);
116
- return {
117
- chunks,
118
- visited: totalVisited,
119
- };
120
- }
121
- /**
122
- * Get chunks with their content from traversal results.
123
- */
124
- export function resolveChunks(traversalResult) {
125
- const resolved = [];
126
- for (const wc of traversalResult.chunks) {
127
- const chunk = getChunkById(wc.chunkId);
128
- if (chunk) {
129
- resolved.push({
130
- chunk,
131
- weight: wc.weight,
132
- depth: wc.depth,
133
- });
134
- }
135
- }
136
- return resolved;
137
- }
138
- /**
139
- * Deduplicate and re-rank weighted chunks.
140
- * Combines duplicate entries and applies additional scoring.
141
- */
142
- export function dedupeAndRank(chunks) {
143
- const byId = new Map();
144
- for (const chunk of chunks) {
145
- const existing = byId.get(chunk.chunkId);
146
- if (existing) {
147
- // Combine weights (sum with diminishing returns)
148
- existing.weight = existing.weight + chunk.weight * 0.5;
149
- // Keep minimum depth
150
- existing.depth = Math.min(existing.depth, chunk.depth);
151
- }
152
- else {
153
- byId.set(chunk.chunkId, { ...chunk });
154
- }
155
- }
156
- const deduped = Array.from(byId.values());
157
- deduped.sort((a, b) => b.weight - a.weight);
158
- return deduped;
159
- }
160
- //# sourceMappingURL=traverser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"traverser.js","sourceRoot":"","sources":["../../src/retrieval/traverser.ts"],"names":[],"mappings":"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"}
@@ -1,80 +0,0 @@
1
- /**
2
- * Persistence layer for vector clocks.
3
- *
4
- * Stores and retrieves vector clocks from SQLite for:
5
- * - Reference clocks (per project): Element-wise max of all agent clocks
6
- * - Agent clocks (per project + agent): Current clock state for each agent
7
- */
8
- import { type VectorClock } from '../temporal/vector-clock.js';
9
- /**
10
- * Get the reference clock for a project.
11
- * The reference clock is the element-wise max of all agent clocks,
12
- * representing the "current time" for decay calculation.
13
- *
14
- * @param projectSlug - Project identifier
15
- * @returns Current reference clock (empty if none stored)
16
- */
17
- export declare function getReferenceClock(projectSlug: string): VectorClock;
18
- /**
19
- * Set the reference clock for a project.
20
- *
21
- * @param projectSlug - Project identifier
22
- * @param clock - New reference clock
23
- */
24
- export declare function setReferenceClock(projectSlug: string, clock: VectorClock): void;
25
- /**
26
- * Get the clock for a specific agent within a project.
27
- *
28
- * @param projectSlug - Project identifier
29
- * @param agentId - Agent identifier (e.g., 'ui', 'human', or sub-agent ID)
30
- * @returns Agent's current clock (empty if none stored)
31
- */
32
- export declare function getAgentClock(projectSlug: string, agentId: string): VectorClock;
33
- /**
34
- * Update the clock for a specific agent and refresh the reference clock.
35
- * The reference clock is automatically updated to be the merge of all agent clocks.
36
- *
37
- * @param projectSlug - Project identifier
38
- * @param agentId - Agent identifier
39
- * @param clock - New clock state for this agent
40
- */
41
- export declare function updateAgentClock(projectSlug: string, agentId: string, clock: VectorClock): void;
42
- /**
43
- * Get all agent clocks for a project.
44
- *
45
- * @param projectSlug - Project identifier
46
- * @returns Map of agentId → clock
47
- */
48
- export declare function getAllAgentClocks(projectSlug: string): Map<string, VectorClock>;
49
- /**
50
- * Rebuild the reference clock from all agent clocks.
51
- * Useful after data recovery or manual edits.
52
- *
53
- * @param projectSlug - Project identifier
54
- * @returns The newly computed reference clock
55
- */
56
- export declare function rebuildReferenceClock(projectSlug: string): VectorClock;
57
- /**
58
- * Delete all clocks for a project.
59
- * Used when clearing project data.
60
- *
61
- * @param projectSlug - Project identifier
62
- * @returns Number of records deleted
63
- */
64
- export declare function deleteProjectClocks(projectSlug: string): number;
65
- /**
66
- * Get the last update time for a clock.
67
- *
68
- * @param projectSlug - Project identifier
69
- * @param agentId - Agent identifier (optional, for reference clock if omitted)
70
- * @returns ISO timestamp of last update, or null if not found
71
- */
72
- export declare function getClockUpdateTime(projectSlug: string, agentId?: string): string | null;
73
- /**
74
- * Check if a project has any stored clocks.
75
- *
76
- * @param projectSlug - Project identifier
77
- * @returns true if project has stored clocks
78
- */
79
- export declare function hasProjectClocks(projectSlug: string): boolean;
80
- //# sourceMappingURL=clock-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clock-store.d.ts","sourceRoot":"","sources":["../../src/storage/clock-store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,KAAK,WAAW,EAKjB,MAAM,6BAA6B,CAAC;AAErC;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAQlE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAU/E;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,CAQ/E;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAgB/F;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAkB/E;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,CAUtE;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAI/D;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CASvF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAQ7D"}
@@ -1,155 +0,0 @@
1
- /**
2
- * Persistence layer for vector clocks.
3
- *
4
- * Stores and retrieves vector clocks from SQLite for:
5
- * - Reference clocks (per project): Element-wise max of all agent clocks
6
- * - Agent clocks (per project + agent): Current clock state for each agent
7
- */
8
- import { getDb } from './db.js';
9
- import { serialize, deserialize, merge, createClock, } from '../temporal/vector-clock.js';
10
- /**
11
- * Get the reference clock for a project.
12
- * The reference clock is the element-wise max of all agent clocks,
13
- * representing the "current time" for decay calculation.
14
- *
15
- * @param projectSlug - Project identifier
16
- * @returns Current reference clock (empty if none stored)
17
- */
18
- export function getReferenceClock(projectSlug) {
19
- const db = getDb();
20
- const row = db
21
- .prepare('SELECT clock_data FROM vector_clocks WHERE id = ? AND project_slug = ?')
22
- .get(`project:${projectSlug}`, projectSlug);
23
- return row ? deserialize(row.clock_data) : createClock();
24
- }
25
- /**
26
- * Set the reference clock for a project.
27
- *
28
- * @param projectSlug - Project identifier
29
- * @param clock - New reference clock
30
- */
31
- export function setReferenceClock(projectSlug, clock) {
32
- const db = getDb();
33
- db.prepare(`
34
- INSERT INTO vector_clocks (id, project_slug, clock_data, updated_at)
35
- VALUES (?, ?, ?, CURRENT_TIMESTAMP)
36
- ON CONFLICT(id) DO UPDATE SET
37
- clock_data = excluded.clock_data,
38
- updated_at = CURRENT_TIMESTAMP
39
- `).run(`project:${projectSlug}`, projectSlug, serialize(clock));
40
- }
41
- /**
42
- * Get the clock for a specific agent within a project.
43
- *
44
- * @param projectSlug - Project identifier
45
- * @param agentId - Agent identifier (e.g., 'ui', 'human', or sub-agent ID)
46
- * @returns Agent's current clock (empty if none stored)
47
- */
48
- export function getAgentClock(projectSlug, agentId) {
49
- const db = getDb();
50
- const row = db
51
- .prepare('SELECT clock_data FROM vector_clocks WHERE id = ? AND project_slug = ?')
52
- .get(`agent:${projectSlug}:${agentId}`, projectSlug);
53
- return row ? deserialize(row.clock_data) : createClock();
54
- }
55
- /**
56
- * Update the clock for a specific agent and refresh the reference clock.
57
- * The reference clock is automatically updated to be the merge of all agent clocks.
58
- *
59
- * @param projectSlug - Project identifier
60
- * @param agentId - Agent identifier
61
- * @param clock - New clock state for this agent
62
- */
63
- export function updateAgentClock(projectSlug, agentId, clock) {
64
- const db = getDb();
65
- // Store the agent's clock
66
- db.prepare(`
67
- INSERT INTO vector_clocks (id, project_slug, clock_data, updated_at)
68
- VALUES (?, ?, ?, CURRENT_TIMESTAMP)
69
- ON CONFLICT(id) DO UPDATE SET
70
- clock_data = excluded.clock_data,
71
- updated_at = CURRENT_TIMESTAMP
72
- `).run(`agent:${projectSlug}:${agentId}`, projectSlug, serialize(clock));
73
- // Update reference clock (merge with existing)
74
- const currentRef = getReferenceClock(projectSlug);
75
- const newRef = merge(currentRef, clock);
76
- setReferenceClock(projectSlug, newRef);
77
- }
78
- /**
79
- * Get all agent clocks for a project.
80
- *
81
- * @param projectSlug - Project identifier
82
- * @returns Map of agentId → clock
83
- */
84
- export function getAllAgentClocks(projectSlug) {
85
- const db = getDb();
86
- const rows = db
87
- .prepare('SELECT id, clock_data FROM vector_clocks WHERE project_slug = ? AND id LIKE ?')
88
- .all(projectSlug, `agent:${projectSlug}:%`);
89
- const result = new Map();
90
- const prefix = `agent:${projectSlug}:`;
91
- for (const row of rows) {
92
- if (row.id.startsWith(prefix)) {
93
- const agentId = row.id.slice(prefix.length);
94
- result.set(agentId, deserialize(row.clock_data));
95
- }
96
- }
97
- return result;
98
- }
99
- /**
100
- * Rebuild the reference clock from all agent clocks.
101
- * Useful after data recovery or manual edits.
102
- *
103
- * @param projectSlug - Project identifier
104
- * @returns The newly computed reference clock
105
- */
106
- export function rebuildReferenceClock(projectSlug) {
107
- const agentClocks = getAllAgentClocks(projectSlug);
108
- let ref = createClock();
109
- for (const clock of agentClocks.values()) {
110
- ref = merge(ref, clock);
111
- }
112
- setReferenceClock(projectSlug, ref);
113
- return ref;
114
- }
115
- /**
116
- * Delete all clocks for a project.
117
- * Used when clearing project data.
118
- *
119
- * @param projectSlug - Project identifier
120
- * @returns Number of records deleted
121
- */
122
- export function deleteProjectClocks(projectSlug) {
123
- const db = getDb();
124
- const result = db.prepare('DELETE FROM vector_clocks WHERE project_slug = ?').run(projectSlug);
125
- return result.changes;
126
- }
127
- /**
128
- * Get the last update time for a clock.
129
- *
130
- * @param projectSlug - Project identifier
131
- * @param agentId - Agent identifier (optional, for reference clock if omitted)
132
- * @returns ISO timestamp of last update, or null if not found
133
- */
134
- export function getClockUpdateTime(projectSlug, agentId) {
135
- const db = getDb();
136
- const id = agentId ? `agent:${projectSlug}:${agentId}` : `project:${projectSlug}`;
137
- const row = db
138
- .prepare('SELECT updated_at FROM vector_clocks WHERE id = ?')
139
- .get(id);
140
- return row?.updated_at ?? null;
141
- }
142
- /**
143
- * Check if a project has any stored clocks.
144
- *
145
- * @param projectSlug - Project identifier
146
- * @returns true if project has stored clocks
147
- */
148
- export function hasProjectClocks(projectSlug) {
149
- const db = getDb();
150
- const row = db
151
- .prepare('SELECT 1 FROM vector_clocks WHERE project_slug = ? LIMIT 1')
152
- .get(projectSlug);
153
- return row !== undefined;
154
- }
155
- //# sourceMappingURL=clock-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clock-store.js","sourceRoot":"","sources":["../../src/storage/clock-store.ts"],"names":[],"mappings":"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"}
@@ -1,125 +0,0 @@
1
- /**
2
- * Decay weight calculation for edges.
3
- * Supports both time-based decay (legacy) and vector clock-based decay.
4
- */
5
- import type { DecayModelConfig } from '../core/decay-types.js';
6
- import { type VectorClock } from '../temporal/vector-clock.js';
7
- /**
8
- * Edge direction for hop decay.
9
- */
10
- export type EdgeDirection = 'backward' | 'forward';
11
- /**
12
- * Hop decay curve type.
13
- */
14
- export type HopDecayType = 'exponential' | 'linear' | 'delayed-linear';
15
- /**
16
- * Configuration for hop-based decay curves.
17
- * Different curves are optimal for different directions:
18
- * - Backward (4-20 hops): Linear dies@10 (MRR=0.688)
19
- * - Forward (1-20 hops): Delayed linear 5h/dies@20 (MRR=0.849)
20
- */
21
- export interface HopDecayConfig {
22
- /** Decay curve type */
23
- type: HopDecayType;
24
- /** For exponential: weight = weightPerHop^hops */
25
- weightPerHop?: number;
26
- /** For linear/delayed-linear: decay rate per hop */
27
- decayPerHop?: number;
28
- /** For delayed-linear: hold full weight for N hops */
29
- holdHops?: number;
30
- /** Minimum weight before edge is considered dead */
31
- minWeight: number;
32
- }
33
- /**
34
- * Backward hop decay: Linear (dies@10)
35
- * Optimal for retrieving causally-related context 4-20 hops back.
36
- * MRR=0.688 (+35% vs exponential 0.80)
37
- */
38
- export declare const BACKWARD_HOP_DECAY: HopDecayConfig;
39
- /**
40
- * Forward hop decay: Delayed linear (5-hop hold, dies@20)
41
- * Optimal for predicting future context 1-20 hops forward.
42
- * MRR=0.849 (+271% vs exponential 0.80)
43
- */
44
- export declare const FORWARD_HOP_DECAY: HopDecayConfig;
45
- /**
46
- * Legacy configuration for vector clock-based decay (exponential only).
47
- * @deprecated Use HopDecayConfig with direction-specific curves instead.
48
- */
49
- export interface VectorDecayConfig {
50
- /** Weight multiplier per hop (e.g., 0.85 = 15% decay per hop) */
51
- weightPerHop: number;
52
- /** Minimum weight before edge is considered dead */
53
- minWeight: number;
54
- }
55
- /**
56
- * Default vector decay configuration (legacy exponential).
57
- * @deprecated Use BACKWARD_HOP_DECAY or FORWARD_HOP_DECAY instead.
58
- */
59
- export declare const DEFAULT_VECTOR_DECAY: VectorDecayConfig;
60
- /**
61
- * Calculate hop-based decay weight using direction-specific curves.
62
- *
63
- * @param hops - Number of hops from reference point
64
- * @param config - Hop decay configuration
65
- * @returns Weight value (0 to 1), or 0 if below minWeight
66
- */
67
- export declare function calculateHopDecayWeight(hops: number, config: HopDecayConfig): number;
68
- /**
69
- * Calculate decay weight for an edge based on direction.
70
- *
71
- * @param edgeClock - Vector clock stamped on the edge
72
- * @param referenceClock - Current reference clock for the project
73
- * @param direction - Edge direction ('backward' or 'forward')
74
- * @returns Weight value (0 to 1), or 0 if below minWeight
75
- */
76
- export declare function calculateDirectionalDecayWeight(edgeClock: VectorClock, referenceClock: VectorClock, direction: EdgeDirection): number;
77
- /**
78
- * Calculate decay weight based on vector clock hop count.
79
- * @deprecated Use calculateDirectionalDecayWeight for direction-specific curves.
80
- *
81
- * @param edgeClock - Vector clock stamped on the edge
82
- * @param referenceClock - Current reference clock for the project
83
- * @param config - Vector decay configuration
84
- * @returns Weight value (0 to 1), or 0 if below minWeight
85
- */
86
- export declare function calculateVectorDecayWeight(edgeClock: VectorClock, referenceClock: VectorClock, config?: VectorDecayConfig): number;
87
- /**
88
- * Calculate decay weight with fallback for legacy edges.
89
- * Uses vector clock decay if available, falls back to time-based decay.
90
- *
91
- * @param edgeClockJson - JSON serialized vector clock (may be null for legacy edges)
92
- * @param referenceClock - Current reference clock for the project
93
- * @param direction - Edge direction for curve selection
94
- * @param createdAtMs - Edge creation time in milliseconds (for fallback)
95
- * @param queryTimeMs - Query time in milliseconds (for fallback)
96
- * @param timeConfig - Time-based decay configuration (for fallback)
97
- * @returns Computed weight value
98
- */
99
- export declare function calculateDecayWeightWithFallback(edgeClockJson: string | null, referenceClock: VectorClock, direction: EdgeDirection, createdAtMs: number, queryTimeMs: number, timeConfig: DecayModelConfig): number;
100
- /**
101
- * @deprecated Use calculateDecayWeightWithFallback with direction parameter.
102
- */
103
- export declare function calculateDecayWeightWithFallbackLegacy(edgeClockJson: string | null, referenceClock: VectorClock, vectorConfig: VectorDecayConfig, createdAtMs: number, queryTimeMs: number, timeConfig: DecayModelConfig): number;
104
- /**
105
- * Calculate boosted weight for edges with multiple links.
106
- * Edges that have been created multiple times (same source/target pair)
107
- * get a boost to resist decay.
108
- *
109
- * @param baseWeight - Base weight after decay
110
- * @param linkCount - Number of times this edge was created
111
- * @returns Boosted weight
112
- */
113
- export declare function applyLinkBoost(baseWeight: number, linkCount: number): number;
114
- /**
115
- * Calculate the decay weight at a given age.
116
- * @param config - Decay model configuration
117
- * @param ageMs - Age of the edge in milliseconds
118
- * @returns Weight value (0 to initialWeight)
119
- */
120
- export declare function calculateDecayWeight(config: DecayModelConfig, ageMs: number): number;
121
- /**
122
- * Calculate the time when weight reaches zero (or null if asymptotic).
123
- */
124
- export declare function getDeathTime(config: DecayModelConfig): number | null;
125
- //# sourceMappingURL=decay.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"decay.d.ts","sourceRoot":"","sources":["../../src/storage/decay.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,KAAK,WAAW,EAAyB,MAAM,6BAA6B,CAAC;AAEtF;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,QAAQ,GAAG,gBAAgB,CAAC;AAEvE;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,uBAAuB;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,cAIhC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,cAK/B,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,YAAY,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,iBAGlC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,CA6BpF;AAED;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,WAAW,EACtB,cAAc,EAAE,WAAW,EAC3B,SAAS,EAAE,aAAa,GACvB,MAAM,CAIR;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,WAAW,EACtB,cAAc,EAAE,WAAW,EAC3B,MAAM,GAAE,iBAAwC,GAC/C,MAAM,CAIR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gCAAgC,CAC9C,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,cAAc,EAAE,WAAW,EAC3B,SAAS,EAAE,aAAa,EACxB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,gBAAgB,GAC3B,MAAM,CAWR;AAED;;GAEG;AACH,wBAAgB,sCAAsC,CACpD,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,cAAc,EAAE,WAAW,EAC3B,YAAY,EAAE,iBAAiB,EAC/B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,gBAAgB,GAC3B,MAAM,CAQR;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAK5E;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAmBpF;AAsED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAkCpE"}