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,6 +1,6 @@
1
1
  /**
2
2
  * Cross-session edge detection and creation.
3
- * Detects continued sessions and creates edges across session boundaries.
3
+ * Detects continued sessions and creates a single edge across session boundaries.
4
4
  */
5
5
  /**
6
6
  * Result of cross-session linking for a single session.
@@ -21,6 +21,7 @@ export interface CrossSessionLinkResult {
21
21
  export declare function isContinuedSession(firstChunkContent: string): boolean;
22
22
  /**
23
23
  * Link a session to its previous session if it's a continuation.
24
+ * Creates a single edge: last chunk of previous session → first chunk of new session.
24
25
  *
25
26
  * @param sessionId - Session ID to check
26
27
  * @param sessionSlug - Session slug (project identifier)
@@ -1 +1 @@
1
- {"version":3,"file":"cross-session-linker.d.ts","sourceRoot":"","sources":["../../src/ingest/cross-session-linker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAErE;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,sBAAsB,CAAC,CA6DjC;AAED;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,sBAAsB,EAAE,CAAC;CACnC,CAAC,CAsBD"}
1
+ {"version":3,"file":"cross-session-linker.d.ts","sourceRoot":"","sources":["../../src/ingest/cross-session-linker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,cAAc,EAAE,OAAO,CAAC;CACzB;AAWD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAGrE;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,sBAAsB,CAAC,CA0DjC;AAED;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,sBAAsB,EAAE,CAAC;CACnC,CAAC,CAsBD"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Cross-session edge detection and creation.
3
- * Detects continued sessions and creates edges across session boundaries.
3
+ * Detects continued sessions and creates a single edge across session boundaries.
4
4
  */
5
5
  import { getChunksBySession, getSessionIds, getPreviousSession } from '../storage/chunk-store.js';
6
6
  import { createCrossSessionEdges } from './edge-creator.js';
@@ -13,14 +13,24 @@ const CONTINUATION_PATTERNS = [
13
13
  /^This is a continuation of/,
14
14
  /^Resumed session/,
15
15
  ];
16
+ /**
17
+ * Strip leading role tags (e.g. "[User]\n", "[Assistant]\n") from chunk content.
18
+ * Chunks are rendered with role prefixes by the chunker, but continuation
19
+ * patterns expect raw text.
20
+ */
21
+ function stripRolePrefix(content) {
22
+ return content.replace(/^\[(?:User|Assistant|Thinking)\]\n/, '');
23
+ }
16
24
  /**
17
25
  * Check if a session is a continuation of a previous session.
18
26
  */
19
27
  export function isContinuedSession(firstChunkContent) {
20
- return CONTINUATION_PATTERNS.some((p) => p.test(firstChunkContent));
28
+ const text = stripRolePrefix(firstChunkContent);
29
+ return CONTINUATION_PATTERNS.some((p) => p.test(text));
21
30
  }
22
31
  /**
23
32
  * Link a session to its previous session if it's a continuation.
33
+ * Creates a single edge: last chunk of previous session → first chunk of new session.
24
34
  *
25
35
  * @param sessionId - Session ID to check
26
36
  * @param sessionSlug - Session slug (project identifier)
@@ -56,10 +66,9 @@ export async function linkCrossSession(sessionId, sessionSlug) {
56
66
  isContinuation: true, // Continuation detected but no previous session found
57
67
  };
58
68
  }
59
- // Get final chunks from previous session
69
+ // Get chunks from previous session
60
70
  const prevChunks = getChunksBySession(prevSessionInfo.sessionId);
61
- const finalChunks = prevChunks.slice(-3); // Last 3 chunks
62
- if (finalChunks.length === 0) {
71
+ if (prevChunks.length === 0) {
63
72
  return {
64
73
  sessionId,
65
74
  previousSessionId: prevSessionInfo.sessionId,
@@ -67,8 +76,9 @@ export async function linkCrossSession(sessionId, sessionSlug) {
67
76
  isContinuation: true,
68
77
  };
69
78
  }
70
- // Create cross-session edges
71
- const edgeCount = await createCrossSessionEdges(finalChunks.map((c) => c.id), firstChunk.id);
79
+ // Single edge: last chunk of previous session → first chunk of new session
80
+ const lastPrevChunk = prevChunks[prevChunks.length - 1];
81
+ const edgeCount = await createCrossSessionEdges(lastPrevChunk.id, firstChunk.id);
72
82
  return {
73
83
  sessionId,
74
84
  previousSessionId: prevSessionInfo.sessionId,
@@ -1 +1 @@
1
- {"version":3,"file":"cross-session-linker.js","sourceRoot":"","sources":["../../src/ingest/cross-session-linker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;GAEG;AACH,MAAM,qBAAqB,GAAG;IAC5B,+DAA+D;IAC/D,mCAAmC;IACnC,4BAA4B;IAC5B,kBAAkB;CACnB,CAAC;AAgBF;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,iBAAyB;IAC1D,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,SAAiB,EACjB,WAAmB;IAEnB,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAE7C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO;YACL,SAAS;YACT,iBAAiB,EAAE,IAAI;YACvB,SAAS,EAAE,CAAC;YACZ,cAAc,EAAE,KAAK;SACtB,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAE7B,uCAAuC;IACvC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5C,OAAO;YACL,SAAS;YACT,iBAAiB,EAAE,IAAI;YACvB,SAAS,EAAE,CAAC;YACZ,cAAc,EAAE,KAAK;SACtB,CAAC;IACJ,CAAC;IAED,gEAAgE;IAChE,MAAM,eAAe,GAAG,kBAAkB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAEnE,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO;YACL,SAAS;YACT,iBAAiB,EAAE,IAAI;YACvB,SAAS,EAAE,CAAC;YACZ,cAAc,EAAE,IAAI,EAAE,sDAAsD;SAC7E,CAAC;IACJ,CAAC;IAED,yCAAyC;IACzC,MAAM,UAAU,GAAG,kBAAkB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB;IAE1D,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO;YACL,SAAS;YACT,iBAAiB,EAAE,eAAe,CAAC,SAAS;YAC5C,SAAS,EAAE,CAAC;YACZ,cAAc,EAAE,IAAI;SACrB,CAAC;IACJ,CAAC;IAED,6BAA6B;IAC7B,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAC7C,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAC5B,UAAU,CAAC,EAAE,CACd,CAAC;IAEF,OAAO;QACL,SAAS;QACT,iBAAiB,EAAE,eAAe,CAAC,SAAS;QAC5C,SAAS;QACT,cAAc,EAAE,IAAI;KACrB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IAKnC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,OAAO,GAA6B,EAAE,CAAC;IAC7C,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAElC,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,UAAU,IAAI,MAAM,CAAC,SAAS,CAAC;IACjC,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IAElE,OAAO;QACL,WAAW;QACX,UAAU;QACV,OAAO;KACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"cross-session-linker.js","sourceRoot":"","sources":["../../src/ingest/cross-session-linker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;GAEG;AACH,MAAM,qBAAqB,GAAG;IAC5B,+DAA+D;IAC/D,mCAAmC;IACnC,4BAA4B;IAC5B,kBAAkB;CACnB,CAAC;AAgBF;;;;GAIG;AACH,SAAS,eAAe,CAAC,OAAe;IACtC,OAAO,OAAO,CAAC,OAAO,CAAC,oCAAoC,EAAE,EAAE,CAAC,CAAC;AACnE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,iBAAyB;IAC1D,MAAM,IAAI,GAAG,eAAe,CAAC,iBAAiB,CAAC,CAAC;IAChD,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,SAAiB,EACjB,WAAmB;IAEnB,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAE7C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO;YACL,SAAS;YACT,iBAAiB,EAAE,IAAI;YACvB,SAAS,EAAE,CAAC;YACZ,cAAc,EAAE,KAAK;SACtB,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAE7B,uCAAuC;IACvC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5C,OAAO;YACL,SAAS;YACT,iBAAiB,EAAE,IAAI;YACvB,SAAS,EAAE,CAAC;YACZ,cAAc,EAAE,KAAK;SACtB,CAAC;IACJ,CAAC;IAED,gEAAgE;IAChE,MAAM,eAAe,GAAG,kBAAkB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAEnE,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO;YACL,SAAS;YACT,iBAAiB,EAAE,IAAI;YACvB,SAAS,EAAE,CAAC;YACZ,cAAc,EAAE,IAAI,EAAE,sDAAsD;SAC7E,CAAC;IACJ,CAAC;IAED,mCAAmC;IACnC,MAAM,UAAU,GAAG,kBAAkB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAEjE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,SAAS;YACT,iBAAiB,EAAE,eAAe,CAAC,SAAS;YAC5C,SAAS,EAAE,CAAC;YACZ,cAAc,EAAE,IAAI;SACrB,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,MAAM,aAAa,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,MAAM,uBAAuB,CAAC,aAAa,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;IAEjF,OAAO;QACL,SAAS;QACT,iBAAiB,EAAE,eAAe,CAAC,SAAS;QAC5C,SAAS;QACT,cAAc,EAAE,IAAI;KACrB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IAKnC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,OAAO,GAA6B,EAAE,CAAC;IAC7C,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAElC,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,UAAU,IAAI,MAAM,CAAC,SAAS,CAAC;IACjC,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;IAElE,OAAO;QACL,WAAW;QACX,UAAU;QACV,OAAO;KACR,CAAC;AACJ,CAAC"}
@@ -1,62 +1,36 @@
1
1
  /**
2
- * Edge creation with type-based weights.
3
- * Creates both forward and backward edges for graph traversal.
2
+ * Edge creation for sequential linked-list graph.
3
+ * Creates only forward edges (earlier later). Direction is inferred at query time.
4
4
  */
5
- import type { ReferenceType } from '../storage/types.js';
6
5
  import type { TransitionResult } from './edge-detector.js';
7
- import type { VectorClock } from '../temporal/vector-clock.js';
8
- /**
9
- * Initial weight by reference type.
10
- * Higher weights for stronger evidence of continuation.
11
- */
12
- export declare const TYPE_WEIGHTS: Record<ReferenceType, number>;
13
6
  /**
14
7
  * Result of edge creation.
15
8
  */
16
9
  export interface EdgeCreationResult {
17
- /** Number of backward edges created */
18
- backwardCount: number;
19
10
  /** Number of forward edges created */
20
11
  forwardCount: number;
21
- /** Total edges created */
12
+ /** Total edges created (same as forwardCount) */
22
13
  totalCount: number;
23
14
  }
24
15
  /**
25
- * Options for edge creation.
26
- */
27
- export interface EdgeCreationOptions {
28
- /** Vector clock to stamp on edges (optional). */
29
- vectorClock?: VectorClock;
30
- /** Use boost mode to dedupe and boost repeated edges. Default: false. */
31
- useBoostMode?: boolean;
32
- }
33
- /**
34
- * Create edges from detected transitions.
35
- * Creates both backward (for retrieval) and forward (for prediction) edges.
36
- *
37
- * @param transitions - Detected transitions between chunks
38
- * @param chunkIds - Array of chunk IDs corresponding to transition indices
39
- * @param options - Edge creation options
40
- * @returns Edge creation result
16
+ * Create forward edges from detected transitions.
17
+ * Each transition produces a single forward edge (source → target).
41
18
  */
42
- export declare function createEdgesFromTransitions(transitions: TransitionResult[], chunkIds: string[], options?: EdgeCreationOptions): Promise<EdgeCreationResult>;
19
+ export declare function createEdgesFromTransitions(transitions: TransitionResult[], chunkIds: string[]): Promise<EdgeCreationResult>;
43
20
  /**
44
- * Create a single edge pair (backward + forward) between two chunks.
21
+ * Create a single forward edge between two chunks.
45
22
  */
46
- export declare function createEdgePair(sourceChunkId: string, targetChunkId: string, referenceType: ReferenceType, confidence?: number, vectorClock?: VectorClock): Promise<void>;
23
+ export declare function createForwardEdge(sourceChunkId: string, targetChunkId: string, referenceType: 'within-chain' | 'cross-session' | 'brief' | 'debrief'): Promise<void>;
47
24
  /**
48
- * Create cross-session edges between final chunks of old session
49
- * and first chunk of new (continued) session.
25
+ * Create a cross-session edge: last chunk of previous session → first chunk of new session.
50
26
  */
51
- export declare function createCrossSessionEdges(previousFinalChunkIds: string[], newFirstChunkId: string, vectorClock?: VectorClock): Promise<number>;
27
+ export declare function createCrossSessionEdges(previousLastChunkId: string, newFirstChunkId: string): Promise<number>;
52
28
  /**
53
- * Create brief edges: parent chunk → sub-agent's first chunk.
54
- * These represent the point where a sub-agent is spawned.
29
+ * Create a brief edge: last parent chunk before spawn first sub-agent chunk.
55
30
  */
56
- export declare function createBriefEdges(parentChunkId: string, subAgentFirstChunkId: string, vectorClock: VectorClock, spawnDepth?: number): Promise<void>;
31
+ export declare function createBriefEdge(parentLastChunkId: string, subAgentFirstChunkId: string): Promise<void>;
57
32
  /**
58
- * Create debrief edges: sub-agent's final chunk → parent chunk.
59
- * These represent the point where a sub-agent returns to the parent.
33
+ * Create a debrief edge: last sub-agent chunk → first parent chunk after return.
60
34
  */
61
- export declare function createDebriefEdges(subAgentFinalChunkIds: string[], parentChunkId: string, vectorClock: VectorClock, spawnDepth?: number): Promise<void>;
35
+ export declare function createDebriefEdge(subAgentLastChunkId: string, parentFirstChunkId: string): Promise<void>;
62
36
  //# sourceMappingURL=edge-creator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"edge-creator.d.ts","sourceRoot":"","sources":["../../src/ingest/edge-creator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAa,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE/D;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAUtD,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,iDAAiD;IACjD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,yEAAyE;IACzE,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,wBAAsB,0BAA0B,CAC9C,WAAW,EAAE,gBAAgB,EAAE,EAC/B,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC,CA6C7B;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,aAAa,EAC5B,UAAU,GAAE,MAAY,EACxB,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,qBAAqB,EAAE,MAAM,EAAE,EAC/B,eAAe,EAAE,MAAM,EACvB,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,MAAM,CAAC,CA+BjB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,MAAM,EACrB,oBAAoB,EAAE,MAAM,EAC5B,WAAW,EAAE,WAAW,EACxB,UAAU,GAAE,MAAU,GACrB,OAAO,CAAC,IAAI,CAAC,CAuBf;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,qBAAqB,EAAE,MAAM,EAAE,EAC/B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,WAAW,EACxB,UAAU,GAAE,MAAU,GACrB,OAAO,CAAC,IAAI,CAAC,CA6Bf"}
1
+ {"version":3,"file":"edge-creator.d.ts","sourceRoot":"","sources":["../../src/ingest/edge-creator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,WAAW,EAAE,gBAAgB,EAAE,EAC/B,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,kBAAkB,CAAC,CAwB7B;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,cAAc,GAAG,eAAe,GAAG,OAAO,GAAG,SAAS,GACpE,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,mBAAmB,EAAE,MAAM,EAC3B,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,iBAAiB,EAAE,MAAM,EACzB,oBAAoB,EAAE,MAAM,GAC3B,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,mBAAmB,EAAE,MAAM,EAC3B,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,IAAI,CAAC,CAUf"}
@@ -1,186 +1,88 @@
1
1
  /**
2
- * Edge creation with type-based weights.
3
- * Creates both forward and backward edges for graph traversal.
2
+ * Edge creation for sequential linked-list graph.
3
+ * Creates only forward edges (earlier later). Direction is inferred at query time.
4
4
  */
5
- import { createEdges, createOrBoostEdges } from '../storage/edge-store.js';
5
+ import { createEdges } from '../storage/edge-store.js';
6
6
  /**
7
- * Initial weight by reference type.
8
- * Higher weights for stronger evidence of continuation.
7
+ * Create forward edges from detected transitions.
8
+ * Each transition produces a single forward edge (source → target).
9
9
  */
10
- export const TYPE_WEIGHTS = {
11
- 'file-path': 1.0, // Strong: explicit file reference
12
- 'code-entity': 0.8, // Good: shared code identifiers
13
- 'explicit-backref': 0.9, // Strong: explicit "the error", "that function"
14
- 'error-fragment': 0.9, // Strong: discussing specific error
15
- 'tool-output': 0.8, // Good: referencing tool results
16
- 'adjacent': 0.5, // Weak: just consecutive, no clear link
17
- 'cross-session': 0.7, // Medium: session continuation
18
- 'brief': 0.9, // Strong: parent spawning sub-agent
19
- 'debrief': 0.9, // Strong: sub-agent returning to parent
20
- };
21
- /**
22
- * Create edges from detected transitions.
23
- * Creates both backward (for retrieval) and forward (for prediction) edges.
24
- *
25
- * @param transitions - Detected transitions between chunks
26
- * @param chunkIds - Array of chunk IDs corresponding to transition indices
27
- * @param options - Edge creation options
28
- * @returns Edge creation result
29
- */
30
- export async function createEdgesFromTransitions(transitions, chunkIds, options = {}) {
31
- const { vectorClock, useBoostMode = false } = options;
10
+ export async function createEdgesFromTransitions(transitions, chunkIds) {
32
11
  const edges = [];
33
12
  for (const t of transitions) {
34
13
  const sourceId = chunkIds[t.sourceIndex];
35
14
  const targetId = chunkIds[t.targetIndex];
36
- const weight = TYPE_WEIGHTS[t.type] * t.confidence;
37
- // Backward edge: from target (later) to source (earlier)
38
- // Used for retrieval: "what context led to this?"
39
- edges.push({
40
- sourceChunkId: targetId,
41
- targetChunkId: sourceId,
42
- edgeType: 'backward',
43
- referenceType: t.type,
44
- initialWeight: weight,
45
- vectorClock,
46
- });
47
- // Forward edge: from source (earlier) to target (later)
48
- // Used for prediction: "what comes after this?"
49
15
  edges.push({
50
16
  sourceChunkId: sourceId,
51
17
  targetChunkId: targetId,
52
18
  edgeType: 'forward',
53
19
  referenceType: t.type,
54
- initialWeight: weight,
55
- vectorClock,
20
+ initialWeight: 1.0,
56
21
  });
57
22
  }
58
23
  if (edges.length > 0) {
59
- if (useBoostMode) {
60
- createOrBoostEdges(edges);
61
- }
62
- else {
63
- createEdges(edges);
64
- }
24
+ createEdges(edges);
65
25
  }
66
26
  return {
67
- backwardCount: transitions.length,
68
- forwardCount: transitions.length,
27
+ forwardCount: edges.length,
69
28
  totalCount: edges.length,
70
29
  };
71
30
  }
72
31
  /**
73
- * Create a single edge pair (backward + forward) between two chunks.
32
+ * Create a single forward edge between two chunks.
74
33
  */
75
- export async function createEdgePair(sourceChunkId, targetChunkId, referenceType, confidence = 1.0, vectorClock) {
76
- const weight = TYPE_WEIGHTS[referenceType] * confidence;
34
+ export async function createForwardEdge(sourceChunkId, targetChunkId, referenceType) {
77
35
  createEdges([
78
- {
79
- sourceChunkId: targetChunkId,
80
- targetChunkId: sourceChunkId,
81
- edgeType: 'backward',
82
- referenceType,
83
- initialWeight: weight,
84
- vectorClock,
85
- },
86
36
  {
87
37
  sourceChunkId,
88
38
  targetChunkId,
89
39
  edgeType: 'forward',
90
40
  referenceType,
91
- initialWeight: weight,
92
- vectorClock,
41
+ initialWeight: 1.0,
93
42
  },
94
43
  ]);
95
44
  }
96
45
  /**
97
- * Create cross-session edges between final chunks of old session
98
- * and first chunk of new (continued) session.
46
+ * Create a cross-session edge: last chunk of previous session → first chunk of new session.
99
47
  */
100
- export async function createCrossSessionEdges(previousFinalChunkIds, newFirstChunkId, vectorClock) {
101
- const edges = [];
102
- const weight = TYPE_WEIGHTS['cross-session'];
103
- for (const prevChunkId of previousFinalChunkIds) {
104
- // Backward: new session's first chunk can recall prev session context
105
- edges.push({
106
- sourceChunkId: newFirstChunkId,
107
- targetChunkId: prevChunkId,
108
- edgeType: 'backward',
109
- referenceType: 'cross-session',
110
- initialWeight: weight,
111
- vectorClock,
112
- });
113
- // Forward: prev session's final chunks predict continuation
114
- edges.push({
115
- sourceChunkId: prevChunkId,
48
+ export async function createCrossSessionEdges(previousLastChunkId, newFirstChunkId) {
49
+ createEdges([
50
+ {
51
+ sourceChunkId: previousLastChunkId,
116
52
  targetChunkId: newFirstChunkId,
117
53
  edgeType: 'forward',
118
54
  referenceType: 'cross-session',
119
- initialWeight: weight,
120
- vectorClock,
121
- });
122
- }
123
- if (edges.length > 0) {
124
- createEdges(edges);
125
- }
126
- return edges.length;
55
+ initialWeight: 1.0,
56
+ },
57
+ ]);
58
+ return 1;
127
59
  }
128
60
  /**
129
- * Create brief edges: parent chunk → sub-agent's first chunk.
130
- * These represent the point where a sub-agent is spawned.
61
+ * Create a brief edge: last parent chunk before spawn first sub-agent chunk.
131
62
  */
132
- export async function createBriefEdges(parentChunkId, subAgentFirstChunkId, vectorClock, spawnDepth = 0) {
133
- // Apply depth penalty: deeper nesting = weaker connection
134
- const depthPenalty = Math.pow(0.9, spawnDepth);
135
- const weight = TYPE_WEIGHTS['brief'] * depthPenalty;
63
+ export async function createBriefEdge(parentLastChunkId, subAgentFirstChunkId) {
136
64
  createEdges([
137
65
  {
138
- sourceChunkId: subAgentFirstChunkId,
139
- targetChunkId: parentChunkId,
140
- edgeType: 'backward',
141
- referenceType: 'brief',
142
- initialWeight: weight,
143
- vectorClock,
144
- },
145
- {
146
- sourceChunkId: parentChunkId,
66
+ sourceChunkId: parentLastChunkId,
147
67
  targetChunkId: subAgentFirstChunkId,
148
68
  edgeType: 'forward',
149
69
  referenceType: 'brief',
150
- initialWeight: weight,
151
- vectorClock,
70
+ initialWeight: 1.0,
152
71
  },
153
72
  ]);
154
73
  }
155
74
  /**
156
- * Create debrief edges: sub-agent's final chunk → parent chunk.
157
- * These represent the point where a sub-agent returns to the parent.
75
+ * Create a debrief edge: last sub-agent chunk → first parent chunk after return.
158
76
  */
159
- export async function createDebriefEdges(subAgentFinalChunkIds, parentChunkId, vectorClock, spawnDepth = 0) {
160
- // Apply depth penalty: deeper nesting = weaker connection
161
- const depthPenalty = Math.pow(0.9, spawnDepth);
162
- const weight = TYPE_WEIGHTS['debrief'] * depthPenalty;
163
- const edges = [];
164
- for (const agentChunkId of subAgentFinalChunkIds) {
165
- edges.push({
166
- sourceChunkId: parentChunkId,
167
- targetChunkId: agentChunkId,
168
- edgeType: 'backward',
169
- referenceType: 'debrief',
170
- initialWeight: weight,
171
- vectorClock,
172
- });
173
- edges.push({
174
- sourceChunkId: agentChunkId,
175
- targetChunkId: parentChunkId,
77
+ export async function createDebriefEdge(subAgentLastChunkId, parentFirstChunkId) {
78
+ createEdges([
79
+ {
80
+ sourceChunkId: subAgentLastChunkId,
81
+ targetChunkId: parentFirstChunkId,
176
82
  edgeType: 'forward',
177
83
  referenceType: 'debrief',
178
- initialWeight: weight,
179
- vectorClock,
180
- });
181
- }
182
- if (edges.length > 0) {
183
- createEdges(edges);
184
- }
84
+ initialWeight: 1.0,
85
+ },
86
+ ]);
185
87
  }
186
88
  //# sourceMappingURL=edge-creator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"edge-creator.js","sourceRoot":"","sources":["../../src/ingest/edge-creator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"edge-creator.js","sourceRoot":"","sources":["../../src/ingest/edge-creator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAcvD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,WAA+B,EAC/B,QAAkB;IAElB,MAAM,KAAK,GAAgB,EAAE,CAAC;IAE9B,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAEzC,KAAK,CAAC,IAAI,CAAC;YACT,aAAa,EAAE,QAAQ;YACvB,aAAa,EAAE,QAAQ;YACvB,QAAQ,EAAE,SAAS;YACnB,aAAa,EAAE,CAAC,CAAC,IAAI;YACrB,aAAa,EAAE,GAAG;SACnB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,WAAW,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,OAAO;QACL,YAAY,EAAE,KAAK,CAAC,MAAM;QAC1B,UAAU,EAAE,KAAK,CAAC,MAAM;KACzB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,aAAqB,EACrB,aAAqB,EACrB,aAAqE;IAErE,WAAW,CAAC;QACV;YACE,aAAa;YACb,aAAa;YACb,QAAQ,EAAE,SAAS;YACnB,aAAa;YACb,aAAa,EAAE,GAAG;SACnB;KACF,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,mBAA2B,EAC3B,eAAuB;IAEvB,WAAW,CAAC;QACV;YACE,aAAa,EAAE,mBAAmB;YAClC,aAAa,EAAE,eAAe;YAC9B,QAAQ,EAAE,SAAS;YACnB,aAAa,EAAE,eAAe;YAC9B,aAAa,EAAE,GAAG;SACnB;KACF,CAAC,CAAC;IAEH,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,iBAAyB,EACzB,oBAA4B;IAE5B,WAAW,CAAC;QACV;YACE,aAAa,EAAE,iBAAiB;YAChC,aAAa,EAAE,oBAAoB;YACnC,QAAQ,EAAE,SAAS;YACnB,aAAa,EAAE,OAAO;YACtB,aAAa,EAAE,GAAG;SACnB;KACF,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,mBAA2B,EAC3B,kBAA0B;IAE1B,WAAW,CAAC;QACV;YACE,aAAa,EAAE,mBAAmB;YAClC,aAAa,EAAE,kBAAkB;YACjC,QAAQ,EAAE,SAAS;YACnB,aAAa,EAAE,SAAS;YACxB,aAAa,EAAE,GAAG;SACnB;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -1,7 +1,11 @@
1
1
  /**
2
- * Topic continuity detection for edge creation.
3
- * Determines whether consecutive chunks should be connected.
4
- * Reuses lexical classifier from topic continuity experiments.
2
+ * Causal transition detection for edge creation.
3
+ *
4
+ * Creates sequential linked-list edges between consecutive chunks:
5
+ * - Inter-turn: last chunk of turn A → first chunk of turn B
6
+ * - Intra-turn: C1 → C2 → C3 when a turn splits into multiple chunks
7
+ *
8
+ * The causal graph is a linked list with branch points at sub-agent forks.
5
9
  */
6
10
  import type { ReferenceType } from '../storage/types.js';
7
11
  import type { Chunk } from '../parser/types.js';
@@ -13,25 +17,36 @@ export interface TransitionResult {
13
17
  sourceIndex: number;
14
18
  /** Index of target chunk in array */
15
19
  targetIndex: number;
16
- /** Type of reference detected */
20
+ /** Structural role of the edge */
17
21
  type: ReferenceType;
18
- /** Confidence score (0-1) */
22
+ /** Confidence score (always 1.0 for causal transitions) */
19
23
  confidence: number;
20
24
  /** Evidence for the detection */
21
25
  evidence: string;
22
26
  }
23
- /**
24
- * Detect transitions/edges between consecutive chunks.
25
- * Returns transitions that should become edges (continuations).
26
- * Skips transitions that appear to be topic shifts.
27
- */
28
- export declare function detectTransitions(chunks: Chunk[], options?: DetectionOptions): TransitionResult[];
29
27
  export interface DetectionOptions {
30
28
  /** Time gap threshold in ms. Default: 30 minutes. */
31
29
  timeGapThresholdMs?: number;
32
30
  }
33
31
  /**
34
- * Get time gap between two timestamps in milliseconds.
32
+ * Detect causal transitions between chunks using sequential linking.
33
+ *
34
+ * Groups chunks by turn index, then:
35
+ * 1. Intra-turn: sequential edges within a turn (C1→C2→C3)
36
+ * 2. Inter-turn: edge from last chunk of turn A to first chunk of turn B
37
+ * (gated by topic shift detection)
38
+ *
39
+ * @param chunks - Array of chunks with metadata.turnIndices
40
+ * @param options - Detection options (time gap threshold)
41
+ * @returns Array of causal transitions
42
+ */
43
+ export declare function detectCausalTransitions(chunks: Chunk[], options?: DetectionOptions): TransitionResult[];
44
+ /**
45
+ * Legacy alias — detectTransitions now delegates to detectCausalTransitions.
46
+ */
47
+ export declare function detectTransitions(chunks: Chunk[], options?: DetectionOptions): TransitionResult[];
48
+ /**
49
+ * Get time gap between two chunks in milliseconds.
35
50
  */
36
51
  export declare function getTimeGapMs(chunk1: Chunk, chunk2: Chunk): number;
37
52
  //# sourceMappingURL=edge-detector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"edge-detector.d.ts","sourceRoot":"","sources":["../../src/ingest/edge-detector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,iCAAiC;IACjC,IAAI,EAAE,aAAa,CAAC;IACpB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAOD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,KAAK,EAAE,EACf,OAAO,GAAE,gBAAqB,GAC7B,gBAAgB,EAAE,CAqCpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,qDAAqD;IACrD,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AA0ND;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,MAAM,CAIjE"}
1
+ {"version":3,"file":"edge-detector.d.ts","sourceRoot":"","sources":["../../src/ingest/edge-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,IAAI,EAAE,aAAa,CAAC;IACpB,2DAA2D;IAC3D,UAAU,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAOD,MAAM,WAAW,gBAAgB;IAC/B,qDAAqD;IACrD,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,KAAK,EAAE,EACf,OAAO,GAAE,gBAAqB,GAC7B,gBAAgB,EAAE,CAuEpB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,KAAK,EAAE,EACf,OAAO,GAAE,gBAAqB,GAC7B,gBAAgB,EAAE,CAEpB;AAUD;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,MAAM,CAIjE"}