@remnic/core 1.1.12 → 1.1.13

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 (1324) hide show
  1. package/dist/access-cli.d.ts +2 -1
  2. package/dist/access-cli.js +263 -82
  3. package/dist/access-cli.js.map +1 -1
  4. package/dist/access-http.d.ts +26 -60
  5. package/dist/access-http.js +43 -29
  6. package/dist/access-mcp.d.ts +24 -6
  7. package/dist/access-mcp.js +35 -28
  8. package/dist/access-schema.d.ts +9 -6
  9. package/dist/access-schema.js +7 -5
  10. package/dist/access-service-DcCDmNYC.d.ts +1542 -0
  11. package/dist/access-service.d.ts +25 -7
  12. package/dist/access-service.js +33 -26
  13. package/dist/active-memory-bridge.js +2 -2
  14. package/dist/active-recall.js +11 -3
  15. package/dist/active-recall.js.map +1 -1
  16. package/dist/adapters/claude-code.d.ts +24 -0
  17. package/dist/adapters/claude-code.js +9 -0
  18. package/dist/adapters/codex.d.ts +25 -0
  19. package/dist/adapters/codex.js +9 -0
  20. package/dist/adapters/hermes.d.ts +35 -0
  21. package/dist/adapters/hermes.js +9 -0
  22. package/dist/adapters/index.d.ts +6 -0
  23. package/dist/adapters/index.js +26 -0
  24. package/dist/adapters/registry.d.ts +20 -0
  25. package/dist/adapters/registry.js +13 -0
  26. package/dist/adapters/replit.d.ts +28 -0
  27. package/dist/adapters/replit.js +9 -0
  28. package/dist/adapters/types.d.ts +43 -0
  29. package/dist/adapters/types.js +8 -0
  30. package/dist/bootstrap.d.ts +20 -5
  31. package/dist/boxes.d.ts +7 -0
  32. package/dist/boxes.js +1 -1
  33. package/dist/briefing.d.ts +5 -3
  34. package/dist/briefing.js +9 -6
  35. package/dist/buffer-surprise-report.js +1 -1
  36. package/dist/buffer.d.ts +18 -4
  37. package/dist/buffer.js +1 -1
  38. package/dist/calibration.js +4 -4
  39. package/dist/capsule-cli.d.ts +4 -4
  40. package/dist/capsule-cli.js +1 -1
  41. package/dist/capsule-crypto-5CYAGVC5.js +18 -0
  42. package/dist/capsule-merge-4MGKE7C5.js +189 -0
  43. package/dist/causal-behavior.d.ts +8 -28
  44. package/dist/causal-behavior.js +6 -3
  45. package/dist/causal-behavior.js.map +1 -1
  46. package/dist/causal-chain.js +3 -2
  47. package/dist/causal-consolidation.d.ts +1 -1
  48. package/dist/causal-consolidation.js +24 -13
  49. package/dist/causal-consolidation.js.map +1 -1
  50. package/dist/causal-retrieval.js +3 -3
  51. package/dist/causal-trajectory.js +1 -1
  52. package/dist/chunk-25MQ7IHJ.js +427 -0
  53. package/dist/chunk-25MQ7IHJ.js.map +1 -0
  54. package/dist/chunk-2F2W355T.js +256 -0
  55. package/dist/chunk-2F2W355T.js.map +1 -0
  56. package/dist/chunk-2KI4QFHU.js +228 -0
  57. package/dist/chunk-2KI4QFHU.js.map +1 -0
  58. package/dist/chunk-2PRQG7PV.js +86 -0
  59. package/dist/chunk-2PRQG7PV.js.map +1 -0
  60. package/dist/chunk-2QR3XXIC.js +2272 -0
  61. package/dist/chunk-2QR3XXIC.js.map +1 -0
  62. package/dist/chunk-2WWLHTZY.js +121 -0
  63. package/dist/chunk-326G7DJK.js +2185 -0
  64. package/dist/chunk-326G7DJK.js.map +1 -0
  65. package/dist/chunk-34DQE4KF.js +174 -0
  66. package/dist/chunk-34DQE4KF.js.map +1 -0
  67. package/dist/chunk-3APJ5EVB.js +601 -0
  68. package/dist/chunk-3APJ5EVB.js.map +1 -0
  69. package/dist/chunk-3HPAPHUK.js +51 -0
  70. package/dist/chunk-3HPAPHUK.js.map +1 -0
  71. package/dist/chunk-3JXBXXM2.js +69 -0
  72. package/dist/chunk-3JXBXXM2.js.map +1 -0
  73. package/dist/chunk-3KW65B36.js +681 -0
  74. package/dist/chunk-3KW65B36.js.map +1 -0
  75. package/dist/chunk-3UXOZBHV.js +20 -0
  76. package/dist/chunk-3UXOZBHV.js.map +1 -0
  77. package/dist/chunk-3VAL7ZL2.js +266 -0
  78. package/dist/chunk-3VAL7ZL2.js.map +1 -0
  79. package/dist/chunk-3Y4P7RXM.js +31 -0
  80. package/dist/chunk-3Y4P7RXM.js.map +1 -0
  81. package/dist/chunk-47VWKCAF.js +273 -0
  82. package/dist/chunk-47VWKCAF.js.map +1 -0
  83. package/dist/chunk-4CRG46BG.js +271 -0
  84. package/dist/chunk-5375UYTQ.js +914 -0
  85. package/dist/chunk-5375UYTQ.js.map +1 -0
  86. package/dist/chunk-56K5QLHX.js +506 -0
  87. package/dist/chunk-56K5QLHX.js.map +1 -0
  88. package/dist/chunk-5RGLBDQF.js +596 -0
  89. package/dist/chunk-5RGLBDQF.js.map +1 -0
  90. package/dist/chunk-5UZXUTVO.js +9 -0
  91. package/dist/chunk-5UZXUTVO.js.map +1 -0
  92. package/dist/chunk-65PG43EQ.js +105 -0
  93. package/dist/chunk-65PG43EQ.js.map +1 -0
  94. package/dist/chunk-66DHUKLO.js +57 -0
  95. package/dist/chunk-66DHUKLO.js.map +1 -0
  96. package/dist/chunk-6FC5EGNV.js +46 -0
  97. package/dist/chunk-6FC5EGNV.js.map +1 -0
  98. package/dist/chunk-6H2TESSP.js +62 -0
  99. package/dist/chunk-6H2TESSP.js.map +1 -0
  100. package/dist/chunk-6LVVDPJ4.js +32 -0
  101. package/dist/chunk-6LVVDPJ4.js.map +1 -0
  102. package/dist/chunk-6RVI47ZR.js +159 -0
  103. package/dist/chunk-6RVI47ZR.js.map +1 -0
  104. package/dist/chunk-7AAT6G4Q.js +5117 -0
  105. package/dist/chunk-7AAT6G4Q.js.map +1 -0
  106. package/dist/chunk-7DTASS5T.js +29 -0
  107. package/dist/chunk-7DTASS5T.js.map +1 -0
  108. package/dist/chunk-7IASACLB.js +596 -0
  109. package/dist/chunk-7MNMYOFP.js +32 -0
  110. package/dist/chunk-7MNMYOFP.js.map +1 -0
  111. package/dist/chunk-7N4KAIGN.js +133 -0
  112. package/dist/chunk-7N4KAIGN.js.map +1 -0
  113. package/dist/chunk-7OZ53EXP.js +101 -0
  114. package/dist/chunk-7OZ53EXP.js.map +1 -0
  115. package/dist/chunk-7XYTQGCC.js +134 -0
  116. package/dist/chunk-7XYTQGCC.js.map +1 -0
  117. package/dist/chunk-A2XUIMJ3.js +341 -0
  118. package/dist/chunk-A2XUIMJ3.js.map +1 -0
  119. package/dist/chunk-AGZQD76C.js +201 -0
  120. package/dist/chunk-AGZQD76C.js.map +1 -0
  121. package/dist/chunk-APO3DCMU.js +361 -0
  122. package/dist/chunk-APO3DCMU.js.map +1 -0
  123. package/dist/chunk-BFBF3XEF.js +283 -0
  124. package/dist/chunk-BFBF3XEF.js.map +1 -0
  125. package/dist/chunk-BJ3KMYTB.js +1974 -0
  126. package/dist/chunk-BJ3KMYTB.js.map +1 -0
  127. package/dist/chunk-CHEL3SKB.js +6758 -0
  128. package/dist/chunk-CHEL3SKB.js.map +1 -0
  129. package/dist/chunk-CQZRLNMV.js +1491 -0
  130. package/dist/chunk-CQZRLNMV.js.map +1 -0
  131. package/dist/chunk-D46YSIYX.js +892 -0
  132. package/dist/chunk-D46YSIYX.js.map +1 -0
  133. package/dist/chunk-DINWEURR.js +648 -0
  134. package/dist/chunk-DINWEURR.js.map +1 -0
  135. package/dist/chunk-DK5LDEQM.js +530 -0
  136. package/dist/chunk-DK5LDEQM.js.map +1 -0
  137. package/dist/chunk-DOM4GKSW.js +34 -0
  138. package/dist/chunk-DOM4GKSW.js.map +1 -0
  139. package/dist/chunk-EDTHC6UD.js +1075 -0
  140. package/dist/chunk-EFJ3MQ4V.js +721 -0
  141. package/dist/chunk-EHRTFRWW.js +89 -0
  142. package/dist/chunk-EHRTFRWW.js.map +1 -0
  143. package/dist/chunk-FAJ7FZYM.js +11 -0
  144. package/dist/chunk-FAJ7FZYM.js.map +1 -0
  145. package/dist/chunk-FBYESMQ2.js +570 -0
  146. package/dist/chunk-FDU6HUUL.js +147 -0
  147. package/dist/chunk-FF4KLI5W.js +99 -0
  148. package/dist/chunk-FF4KLI5W.js.map +1 -0
  149. package/dist/chunk-FIT6DMX6.js +310 -0
  150. package/dist/chunk-FIT6DMX6.js.map +1 -0
  151. package/dist/chunk-FJ43PRLT.js +272 -0
  152. package/dist/chunk-FJ43PRLT.js.map +1 -0
  153. package/dist/chunk-FKFMOY3N.js +32 -0
  154. package/dist/chunk-FKFMOY3N.js.map +1 -0
  155. package/dist/chunk-FLTNHQK6.js +262 -0
  156. package/dist/chunk-FLTNHQK6.js.map +1 -0
  157. package/dist/chunk-GA454ALV.js +12436 -0
  158. package/dist/chunk-GA454ALV.js.map +1 -0
  159. package/dist/chunk-GGKRUQOO.js +228 -0
  160. package/dist/chunk-GIF42EW3.js +63 -0
  161. package/dist/chunk-GIF42EW3.js.map +1 -0
  162. package/dist/chunk-GL6I6MEQ.js +647 -0
  163. package/dist/chunk-H3ME6L6D.js +709 -0
  164. package/dist/chunk-H3ME6L6D.js.map +1 -0
  165. package/dist/chunk-HHLLAQGZ.js +1 -0
  166. package/dist/chunk-HXXBL2KD.js +2040 -0
  167. package/dist/chunk-I5V2VDIW.js +219 -0
  168. package/dist/chunk-I5V2VDIW.js.map +1 -0
  169. package/dist/chunk-I6K5FBRQ.js +35 -0
  170. package/dist/chunk-I6K5FBRQ.js.map +1 -0
  171. package/dist/chunk-ICRIXAP2.js +121 -0
  172. package/dist/chunk-ICRIXAP2.js.map +1 -0
  173. package/dist/chunk-J4EB7DNW.js +11 -0
  174. package/dist/chunk-J4EB7DNW.js.map +1 -0
  175. package/dist/chunk-JLFA7DQG.js +62 -0
  176. package/dist/chunk-JLFA7DQG.js.map +1 -0
  177. package/dist/chunk-KJTKLXTH.js +9 -0
  178. package/dist/chunk-KJTKLXTH.js.map +1 -0
  179. package/dist/chunk-KLAO5DGL.js +917 -0
  180. package/dist/chunk-KLAO5DGL.js.map +1 -0
  181. package/dist/chunk-KNKUID7G.js +183 -0
  182. package/dist/chunk-KOSORCJG.js +624 -0
  183. package/dist/chunk-KOSORCJG.js.map +1 -0
  184. package/dist/chunk-KUJVMMZQ.js +1262 -0
  185. package/dist/chunk-KUJVMMZQ.js.map +1 -0
  186. package/dist/chunk-LCR46JY5.js +123 -0
  187. package/dist/chunk-LCR46JY5.js.map +1 -0
  188. package/dist/chunk-LLQ2LLWF.js +148 -0
  189. package/dist/chunk-LLQ2LLWF.js.map +1 -0
  190. package/dist/chunk-LPMVBPA3.js +236 -0
  191. package/dist/chunk-LT3NLYSI.js +50 -0
  192. package/dist/chunk-LT3NLYSI.js.map +1 -0
  193. package/dist/chunk-LUDTDZLK.js +287 -0
  194. package/dist/chunk-LUDTDZLK.js.map +1 -0
  195. package/dist/chunk-M23FSH32.js +3963 -0
  196. package/dist/chunk-M23FSH32.js.map +1 -0
  197. package/dist/chunk-MC26UJIM.js +118 -0
  198. package/dist/chunk-ME6ESPZU.js +119 -0
  199. package/dist/chunk-ME6ESPZU.js.map +1 -0
  200. package/dist/chunk-MGKYQQYF.js +272 -0
  201. package/dist/chunk-MJFNCJXV.js +66 -0
  202. package/dist/chunk-MJFNCJXV.js.map +1 -0
  203. package/dist/chunk-MSWG7JI6.js +237 -0
  204. package/dist/chunk-MSWG7JI6.js.map +1 -0
  205. package/dist/chunk-MT25YHYH.js +141 -0
  206. package/dist/chunk-MT25YHYH.js.map +1 -0
  207. package/dist/chunk-MT4HVDUZ.js +53 -0
  208. package/dist/chunk-MY6TPVXW.js +219 -0
  209. package/dist/chunk-N2D6GXBM.js +267 -0
  210. package/dist/chunk-N2D6GXBM.js.map +1 -0
  211. package/dist/chunk-NJ3MJQZX.js +46 -0
  212. package/dist/chunk-NJ3MJQZX.js.map +1 -0
  213. package/dist/chunk-NMZY542O.js +335 -0
  214. package/dist/chunk-NMZY542O.js.map +1 -0
  215. package/dist/chunk-NNVTUXEB.js +23 -0
  216. package/dist/chunk-NZL6GGQE.js +375 -0
  217. package/dist/chunk-NZL6GGQE.js.map +1 -0
  218. package/dist/chunk-P4NEIHUT.js +108 -0
  219. package/dist/chunk-P7FMDTKL.js +103 -0
  220. package/dist/chunk-P7FMDTKL.js.map +1 -0
  221. package/dist/chunk-PHK3HARR.js +32 -0
  222. package/dist/chunk-PHK3HARR.js.map +1 -0
  223. package/dist/chunk-PIRJPV5T.js +98 -0
  224. package/dist/chunk-PIRJPV5T.js.map +1 -0
  225. package/dist/chunk-PK7H5L6Y.js +159 -0
  226. package/dist/chunk-PK7H5L6Y.js.map +1 -0
  227. package/dist/chunk-PR5FBTFU.js +233 -0
  228. package/dist/chunk-PR5FBTFU.js.map +1 -0
  229. package/dist/chunk-PU63GXWS.js +174 -0
  230. package/dist/chunk-PU63GXWS.js.map +1 -0
  231. package/dist/chunk-PZIAX57I.js +124 -0
  232. package/dist/chunk-PZIAX57I.js.map +1 -0
  233. package/dist/chunk-Q7P4WJDP.js +26 -0
  234. package/dist/chunk-Q7P4WJDP.js.map +1 -0
  235. package/dist/chunk-QQUAB63I.js +63 -0
  236. package/dist/chunk-QQUAB63I.js.map +1 -0
  237. package/dist/chunk-QRNI5JBH.js +18 -0
  238. package/dist/chunk-RHY3HH7P.js +601 -0
  239. package/dist/chunk-RHY3HH7P.js.map +1 -0
  240. package/dist/chunk-RRF5UOBJ.js +91 -0
  241. package/dist/chunk-RXDLTSWT.js +124 -0
  242. package/dist/chunk-RXDLTSWT.js.map +1 -0
  243. package/dist/chunk-RYED3SPJ.js +42 -0
  244. package/dist/chunk-RYED3SPJ.js.map +1 -0
  245. package/dist/chunk-S7KDBTWT.js +106 -0
  246. package/dist/chunk-S7KDBTWT.js.map +1 -0
  247. package/dist/chunk-SEDEKFYQ.js +1 -0
  248. package/dist/chunk-TECVW3JP.js +36 -0
  249. package/dist/chunk-TECVW3JP.js.map +1 -0
  250. package/dist/chunk-TFO23QT4.js +88 -0
  251. package/dist/chunk-TFO23QT4.js.map +1 -0
  252. package/dist/chunk-TK4UEOSK.js +76 -0
  253. package/dist/chunk-TK4UEOSK.js.map +1 -0
  254. package/dist/chunk-TKWGAOLV.js +122 -0
  255. package/dist/chunk-TKWGAOLV.js.map +1 -0
  256. package/dist/chunk-TMM4S4IJ.js +597 -0
  257. package/dist/chunk-TMM4S4IJ.js.map +1 -0
  258. package/dist/chunk-TMQLARTH.js +188 -0
  259. package/dist/chunk-TMQLARTH.js.map +1 -0
  260. package/dist/chunk-TPDBFYEG.js +130 -0
  261. package/dist/chunk-TPDBFYEG.js.map +1 -0
  262. package/dist/chunk-TPMQ3G6Z.js +145 -0
  263. package/dist/chunk-TPMQ3G6Z.js.map +1 -0
  264. package/dist/chunk-TZOLIGIG.js +61 -0
  265. package/dist/chunk-TZOLIGIG.js.map +1 -0
  266. package/dist/chunk-U3PN77QT.js +113 -0
  267. package/dist/chunk-U3WSW6PZ.js +277 -0
  268. package/dist/chunk-U4SCL7B7.js +640 -0
  269. package/dist/chunk-U4SCL7B7.js.map +1 -0
  270. package/dist/chunk-UWK5OXUJ.js +156 -0
  271. package/dist/chunk-UWK5OXUJ.js.map +1 -0
  272. package/dist/chunk-UWVJF25J.js +74 -0
  273. package/dist/chunk-UXHQAFNA.js +1317 -0
  274. package/dist/chunk-UXHQAFNA.js.map +1 -0
  275. package/dist/chunk-V5OCT34X.js +1 -0
  276. package/dist/chunk-VLXA6PI2.js +304 -0
  277. package/dist/chunk-VLXA6PI2.js.map +1 -0
  278. package/dist/chunk-VNO6ZJ35.js +500 -0
  279. package/dist/chunk-VNO6ZJ35.js.map +1 -0
  280. package/dist/chunk-VW676BEI.js +827 -0
  281. package/dist/chunk-VW676BEI.js.map +1 -0
  282. package/dist/chunk-W3LR522O.js +2296 -0
  283. package/dist/chunk-W4L6CZKA.js +96 -0
  284. package/dist/chunk-W4L6CZKA.js.map +1 -0
  285. package/dist/chunk-W4RVMTHR.js +372 -0
  286. package/dist/chunk-W4RVMTHR.js.map +1 -0
  287. package/dist/chunk-WEHSQBFR.js +188 -0
  288. package/dist/chunk-WEHSQBFR.js.map +1 -0
  289. package/dist/chunk-WELDCG6C.js +380 -0
  290. package/dist/chunk-WELDCG6C.js.map +1 -0
  291. package/dist/chunk-WZYKANL3.js +2800 -0
  292. package/dist/chunk-WZYKANL3.js.map +1 -0
  293. package/dist/chunk-XIG5PDM7.js +48 -0
  294. package/dist/chunk-XJNBEDFE.js +193 -0
  295. package/dist/chunk-XJNBEDFE.js.map +1 -0
  296. package/dist/chunk-XVVIG67A.js +291 -0
  297. package/dist/chunk-XVVIG67A.js.map +1 -0
  298. package/dist/chunk-XVZ7B3HG.js +135 -0
  299. package/dist/chunk-YBPYIAA5.js +73 -0
  300. package/dist/chunk-YBPYIAA5.js.map +1 -0
  301. package/dist/chunk-Z734BLO3.js +21 -0
  302. package/dist/chunk-Z734BLO3.js.map +1 -0
  303. package/dist/chunk-ZKSK55RC.js +269 -0
  304. package/dist/chunk-ZKSK55RC.js.map +1 -0
  305. package/dist/chunk-ZTFCYYEZ.js +69 -0
  306. package/dist/chunk-ZTFCYYEZ.js.map +1 -0
  307. package/dist/chunk-ZY2MNJR6.js +329 -0
  308. package/dist/chunk-ZY2MNJR6.js.map +1 -0
  309. package/dist/cli-D3VpkVwB.d.ts +1136 -0
  310. package/dist/cli.d.ts +39 -10
  311. package/dist/cli.js +108 -49
  312. package/dist/commitment-ledger.js +1 -1
  313. package/dist/compat/checks.d.ts +5 -0
  314. package/dist/compat/checks.js +11 -0
  315. package/dist/compat/checks.js.map +1 -0
  316. package/dist/compat/types.d.ts +30 -0
  317. package/dist/compat/types.js +1 -0
  318. package/dist/compat/types.js.map +1 -0
  319. package/dist/compounding/engine.d.ts +221 -0
  320. package/dist/compounding/engine.js +32 -0
  321. package/dist/compounding/engine.js.map +1 -0
  322. package/dist/compounding/preference-consolidator.d.ts +92 -0
  323. package/dist/compounding/preference-consolidator.js +553 -0
  324. package/dist/compounding/preference-consolidator.js.map +1 -0
  325. package/dist/config.d.ts +4 -2
  326. package/dist/config.js +9 -4
  327. package/dist/conflict-policy-DyJ2wd-h.d.ts +4 -0
  328. package/dist/connectors/codex-materialize-runner.d.ts +64 -0
  329. package/dist/connectors/codex-materialize-runner.js +33 -0
  330. package/dist/connectors/codex-materialize-runner.js.map +1 -0
  331. package/dist/connectors/codex-materialize.d.ts +195 -0
  332. package/dist/connectors/codex-materialize.js +38 -0
  333. package/dist/connectors/codex-materialize.js.map +1 -0
  334. package/dist/connectors/index.d.ts +444 -0
  335. package/dist/connectors/index.js +115 -0
  336. package/dist/connectors/index.js.map +1 -0
  337. package/dist/connectors-cli-CwbyjGR7.d.ts +257 -0
  338. package/dist/connectors-cli.d.ts +1 -1
  339. package/dist/consolidation-provenance-check.d.ts +3 -1
  340. package/dist/consolidation-undo.d.ts +3 -1
  341. package/dist/contradiction/index.d.ts +258 -0
  342. package/dist/contradiction/index.js +43 -0
  343. package/dist/contradiction/index.js.map +1 -0
  344. package/dist/contradiction-review-ATP4S6IC.js +30 -0
  345. package/dist/contradiction-review-ATP4S6IC.js.map +1 -0
  346. package/dist/contradiction-scan-5A4IDZV5.js +13 -0
  347. package/dist/contradiction-scan-5A4IDZV5.js.map +1 -0
  348. package/dist/conversation-index/backend.d.ts +97 -0
  349. package/dist/conversation-index/backend.js +13 -0
  350. package/dist/conversation-index/backend.js.map +1 -0
  351. package/dist/conversation-index/chunker.d.ts +16 -0
  352. package/dist/conversation-index/chunker.js +8 -0
  353. package/dist/conversation-index/chunker.js.map +1 -0
  354. package/dist/conversation-index/cleanup.d.ts +11 -0
  355. package/dist/conversation-index/cleanup.js +9 -0
  356. package/dist/conversation-index/cleanup.js.map +1 -0
  357. package/dist/conversation-index/faiss-adapter.d.ts +6 -0
  358. package/dist/conversation-index/faiss-adapter.js +16 -0
  359. package/dist/conversation-index/faiss-adapter.js.map +1 -0
  360. package/dist/conversation-index/indexer.d.ts +23 -0
  361. package/dist/conversation-index/indexer.js +15 -0
  362. package/dist/conversation-index/indexer.js.map +1 -0
  363. package/dist/conversation-index/search.d.ts +6 -0
  364. package/dist/conversation-index/search.js +11 -0
  365. package/dist/conversation-index/search.js.map +1 -0
  366. package/dist/embedding-fallback.js +2 -2
  367. package/dist/enrichment/index.d.ts +163 -0
  368. package/dist/enrichment/index.js +18 -0
  369. package/dist/enrichment/index.js.map +1 -0
  370. package/dist/entity-retrieval.d.ts +4 -2
  371. package/dist/entity-retrieval.js +8 -5
  372. package/dist/evals.js +1 -1
  373. package/dist/explicit-capture.d.ts +20 -5
  374. package/dist/explicit-capture.js +2 -2
  375. package/dist/extraction-judge-training.js +1 -1
  376. package/dist/extraction.js +8 -8
  377. package/dist/faiss-adapter-CzPghc4C.d.ts +70 -0
  378. package/dist/fallback-llm.d.ts +2 -0
  379. package/dist/fallback-llm.js +4 -4
  380. package/dist/graph-edge-decay-5DI5GUNL.js +207 -0
  381. package/dist/index.d.ts +66 -711
  382. package/dist/index.js +556 -2680
  383. package/dist/index.js.map +1 -1
  384. package/dist/lcm/archive.d.ts +89 -0
  385. package/dist/lcm/archive.js +12 -0
  386. package/dist/lcm/archive.js.map +1 -0
  387. package/dist/lcm/dag.d.ts +48 -0
  388. package/dist/lcm/dag.js +8 -0
  389. package/dist/lcm/dag.js.map +1 -0
  390. package/dist/lcm/engine.d.ts +116 -0
  391. package/dist/lcm/engine.js +20 -0
  392. package/dist/lcm/engine.js.map +1 -0
  393. package/dist/lcm/index.d.ts +12 -0
  394. package/dist/lcm/index.js +44 -0
  395. package/dist/lcm/index.js.map +1 -0
  396. package/dist/lcm/queue.d.ts +62 -0
  397. package/dist/lcm/queue.js +8 -0
  398. package/dist/lcm/queue.js.map +1 -0
  399. package/dist/lcm/recall.d.ts +20 -0
  400. package/dist/lcm/recall.js +8 -0
  401. package/dist/lcm/recall.js.map +1 -0
  402. package/dist/lcm/schema.d.ts +16 -0
  403. package/dist/lcm/schema.js +14 -0
  404. package/dist/lcm/schema.js.map +1 -0
  405. package/dist/lcm/summarizer.d.ts +38 -0
  406. package/dist/lcm/summarizer.js +12 -0
  407. package/dist/lcm/summarizer.js.map +1 -0
  408. package/dist/lcm/tools.d.ts +29 -0
  409. package/dist/lcm/tools.js +8 -0
  410. package/dist/lcm/tools.js.map +1 -0
  411. package/dist/live-connectors-runner.js +5 -5
  412. package/dist/local-llm.js +3 -3
  413. package/dist/maintenance/archive-observations.d.ts +18 -0
  414. package/dist/maintenance/archive-observations.js +8 -0
  415. package/dist/maintenance/archive-observations.js.map +1 -0
  416. package/dist/maintenance/backup-stamp.d.ts +3 -0
  417. package/dist/maintenance/backup-stamp.js +8 -0
  418. package/dist/maintenance/backup-stamp.js.map +1 -0
  419. package/dist/maintenance/memory-governance-cron.d.ts +85 -0
  420. package/dist/maintenance/memory-governance-cron.js +22 -0
  421. package/dist/maintenance/memory-governance-cron.js.map +1 -0
  422. package/dist/maintenance/memory-governance.d.ts +137 -0
  423. package/dist/maintenance/memory-governance.js +40 -0
  424. package/dist/maintenance/memory-governance.js.map +1 -0
  425. package/dist/maintenance/migrate-observations.d.ts +18 -0
  426. package/dist/maintenance/migrate-observations.js +9 -0
  427. package/dist/maintenance/migrate-observations.js.map +1 -0
  428. package/dist/maintenance/observation-ledger-utils.d.ts +10 -0
  429. package/dist/maintenance/observation-ledger-utils.js +10 -0
  430. package/dist/maintenance/observation-ledger-utils.js.map +1 -0
  431. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +15 -0
  432. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +28 -0
  433. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js.map +1 -0
  434. package/dist/maintenance/rebuild-memory-projection.d.ts +77 -0
  435. package/dist/maintenance/rebuild-memory-projection.js +35 -0
  436. package/dist/maintenance/rebuild-memory-projection.js.map +1 -0
  437. package/dist/maintenance/rebuild-observations.d.ts +17 -0
  438. package/dist/maintenance/rebuild-observations.js +9 -0
  439. package/dist/maintenance/rebuild-observations.js.map +1 -0
  440. package/dist/mcp-memory-inspector-app.d.ts +24 -6
  441. package/dist/memory-projection-store.d.ts +108 -3
  442. package/dist/memory-projection-store.js +2 -1
  443. package/dist/memory-worth-outcomes.d.ts +4 -2
  444. package/dist/migrate/from-engram.d.ts +24 -0
  445. package/dist/migrate/from-engram.js +12 -0
  446. package/dist/migrate/from-engram.js.map +1 -0
  447. package/dist/namespaces/migrate.d.ts +50 -0
  448. package/dist/namespaces/migrate.js +50 -0
  449. package/dist/namespaces/migrate.js.map +1 -0
  450. package/dist/namespaces/principal.d.ts +17 -0
  451. package/dist/namespaces/principal.js +16 -0
  452. package/dist/namespaces/principal.js.map +1 -0
  453. package/dist/namespaces/search.d.ts +46 -0
  454. package/dist/namespaces/search.js +28 -0
  455. package/dist/namespaces/search.js.map +1 -0
  456. package/dist/namespaces/storage.d.ts +32 -0
  457. package/dist/namespaces/storage.js +28 -0
  458. package/dist/namespaces/storage.js.map +1 -0
  459. package/dist/network/tailscale.d.ts +41 -0
  460. package/dist/network/tailscale.js +9 -0
  461. package/dist/network/tailscale.js.map +1 -0
  462. package/dist/network/webdav.d.ts +39 -0
  463. package/dist/network/webdav.js +10 -0
  464. package/dist/network/webdav.js.map +1 -0
  465. package/dist/objective-state-writers.js +2 -2
  466. package/dist/operator-toolkit.d.ts +4 -2
  467. package/dist/operator-toolkit.js +32 -14
  468. package/dist/opik-exporter.js +2 -2
  469. package/dist/opik-exporter.js.map +1 -1
  470. package/dist/orchestrator-DuWl9Hwx.d.ts +1244 -0
  471. package/dist/orchestrator.d.ts +22 -7
  472. package/dist/orchestrator.js +79 -44
  473. package/dist/path-MR5JPYOP.js +9 -0
  474. package/dist/path-MR5JPYOP.js.map +1 -0
  475. package/dist/qmd-recall-cache.d.ts +1 -1
  476. package/dist/qmd.d.ts +102 -3
  477. package/dist/qmd.js +23 -5
  478. package/dist/recall-explain-renderer.js +3 -3
  479. package/dist/recall-xray-cli.js +4 -4
  480. package/dist/recall-xray-renderer.js +3 -3
  481. package/dist/recall-xray.js +2 -2
  482. package/dist/replay/normalizers/chatgpt.d.ts +6 -0
  483. package/dist/replay/normalizers/chatgpt.js +11 -0
  484. package/dist/replay/normalizers/chatgpt.js.map +1 -0
  485. package/dist/replay/normalizers/claude.d.ts +6 -0
  486. package/dist/replay/normalizers/claude.js +11 -0
  487. package/dist/replay/normalizers/claude.js.map +1 -0
  488. package/dist/replay/normalizers/openclaw.d.ts +6 -0
  489. package/dist/replay/normalizers/openclaw.js +11 -0
  490. package/dist/replay/normalizers/openclaw.js.map +1 -0
  491. package/dist/replay/normalizers/shared.d.ts +16 -0
  492. package/dist/replay/normalizers/shared.js +14 -0
  493. package/dist/replay/normalizers/shared.js.map +1 -0
  494. package/dist/replay/runner.d.ts +35 -0
  495. package/dist/replay/runner.js +16 -0
  496. package/dist/replay/runner.js.map +1 -0
  497. package/dist/replay/types.d.ts +57 -0
  498. package/dist/replay/types.js +19 -0
  499. package/dist/replay/types.js.map +1 -0
  500. package/dist/resolution-B7FNQSSP.js +12 -0
  501. package/dist/resolution-B7FNQSSP.js.map +1 -0
  502. package/dist/resolve-provider-secret.js +2 -2
  503. package/dist/resume-bundles.js +8 -6
  504. package/dist/retrieval-agents.d.ts +1 -1
  505. package/dist/routing/engine.d.ts +35 -0
  506. package/dist/routing/engine.js +16 -0
  507. package/dist/routing/engine.js.map +1 -0
  508. package/dist/routing/store.d.ts +27 -0
  509. package/dist/routing/store.js +10 -0
  510. package/dist/routing/store.js.map +1 -0
  511. package/dist/runtime/better-sqlite.d.ts +8 -0
  512. package/dist/runtime/better-sqlite.js +10 -0
  513. package/dist/runtime/better-sqlite.js.map +1 -0
  514. package/dist/runtime/child-process.d.ts +32 -0
  515. package/dist/runtime/child-process.js +10 -0
  516. package/dist/runtime/child-process.js.map +1 -0
  517. package/dist/runtime/env.d.ts +5 -0
  518. package/dist/runtime/env.js +12 -0
  519. package/dist/runtime/env.js.map +1 -0
  520. package/dist/schemas.d.ts +22 -22
  521. package/dist/sdk-compat.js +1 -1
  522. package/dist/search/document-scanner.d.ts +22 -0
  523. package/dist/search/document-scanner.js +8 -0
  524. package/dist/search/document-scanner.js.map +1 -0
  525. package/dist/search/embed-helper.d.ts +35 -0
  526. package/dist/search/embed-helper.js +9 -0
  527. package/dist/search/embed-helper.js.map +1 -0
  528. package/dist/search/factory.d.ts +32 -0
  529. package/dist/search/factory.js +29 -0
  530. package/dist/search/factory.js.map +1 -0
  531. package/dist/search/index.d.ts +15 -0
  532. package/dist/search/index.js +50 -0
  533. package/dist/search/index.js.map +1 -0
  534. package/dist/search/lancedb-backend.d.ts +51 -0
  535. package/dist/search/lancedb-backend.js +10 -0
  536. package/dist/search/lancedb-backend.js.map +1 -0
  537. package/dist/search/meilisearch-backend.d.ts +48 -0
  538. package/dist/search/meilisearch-backend.js +10 -0
  539. package/dist/search/meilisearch-backend.js.map +1 -0
  540. package/dist/search/noop-backend.d.ts +26 -0
  541. package/dist/search/noop-backend.js +8 -0
  542. package/dist/search/noop-backend.js.map +1 -0
  543. package/dist/search/orama-backend.d.ts +53 -0
  544. package/dist/search/orama-backend.js +10 -0
  545. package/dist/search/orama-backend.js.map +1 -0
  546. package/dist/search/port.d.ts +61 -0
  547. package/dist/search/port.js +1 -0
  548. package/dist/search/port.js.map +1 -0
  549. package/dist/search/remote-backend.d.ts +39 -0
  550. package/dist/search/remote-backend.js +9 -0
  551. package/dist/search/remote-backend.js.map +1 -0
  552. package/dist/secure-store/index.d.ts +890 -0
  553. package/dist/secure-store/index.js +156 -0
  554. package/dist/secure-store/index.js.map +1 -0
  555. package/dist/semantic-VwGI14Ok.d.ts +69 -0
  556. package/dist/semantic-consolidation-4HkHWgeI.d.ts +180 -0
  557. package/dist/semantic-consolidation.d.ts +2 -2
  558. package/dist/semantic-consolidation.js +13 -6
  559. package/dist/semantic-rule-promotion.js +8 -5
  560. package/dist/semantic-rule-verifier.js +8 -5
  561. package/dist/shared-context/manager.d.ts +131 -0
  562. package/dist/shared-context/manager.js +15 -0
  563. package/dist/shared-context/manager.js.map +1 -0
  564. package/dist/skills-registry.js +13 -1
  565. package/dist/skills-registry.js.map +1 -1
  566. package/dist/state-store-VZU2IA53.js +16 -0
  567. package/dist/state-store-VZU2IA53.js.map +1 -0
  568. package/dist/storage-paths.d.ts +9 -0
  569. package/dist/storage-paths.js +20 -0
  570. package/dist/storage-paths.js.map +1 -0
  571. package/dist/storage.d.ts +3 -1
  572. package/dist/storage.js +7 -4
  573. package/dist/summarizer.d.ts +5 -0
  574. package/dist/summarizer.js +9 -8
  575. package/dist/summary-snapshot.js +2 -1
  576. package/dist/surfaces/dreams.d.ts +16 -0
  577. package/dist/surfaces/dreams.js +282 -0
  578. package/dist/surfaces/dreams.js.map +1 -0
  579. package/dist/surfaces/heartbeat.d.ts +17 -0
  580. package/dist/surfaces/heartbeat.js +265 -0
  581. package/dist/surfaces/heartbeat.js.map +1 -0
  582. package/dist/temporal-supersession.d.ts +3 -1
  583. package/dist/threading.d.ts +5 -0
  584. package/dist/threading.js +2 -1
  585. package/dist/tier-migration.d.ts +4 -2
  586. package/dist/tokens.js +2 -2
  587. package/dist/transcript.d.ts +15 -1
  588. package/dist/transcript.js +2 -1
  589. package/dist/transfer/autodetect.d.ts +4 -0
  590. package/dist/transfer/autodetect.js +15 -0
  591. package/dist/transfer/autodetect.js.map +1 -0
  592. package/dist/transfer/backup.d.ts +21 -0
  593. package/dist/transfer/backup.js +17 -0
  594. package/dist/transfer/backup.js.map +1 -0
  595. package/dist/transfer/capsule-export.d.ts +113 -0
  596. package/dist/transfer/capsule-export.js +19 -0
  597. package/dist/transfer/capsule-export.js.map +1 -0
  598. package/dist/transfer/capsule-import.d.ts +124 -0
  599. package/dist/transfer/capsule-import.js +16 -0
  600. package/dist/transfer/capsule-import.js.map +1 -0
  601. package/dist/transfer/constants.d.ts +13 -0
  602. package/dist/transfer/constants.js +12 -0
  603. package/dist/transfer/constants.js.map +1 -0
  604. package/dist/transfer/export-json.d.ts +11 -0
  605. package/dist/transfer/export-json.js +11 -0
  606. package/dist/transfer/export-json.js.map +1 -0
  607. package/dist/transfer/export-md.d.ts +10 -0
  608. package/dist/transfer/export-md.js +13 -0
  609. package/dist/transfer/export-md.js.map +1 -0
  610. package/dist/transfer/export-sqlite.d.ts +9 -0
  611. package/dist/transfer/export-sqlite.js +12 -0
  612. package/dist/transfer/export-sqlite.js.map +1 -0
  613. package/dist/transfer/fs-utils.d.ts +61 -0
  614. package/dist/transfer/fs-utils.js +40 -0
  615. package/dist/transfer/fs-utils.js.map +1 -0
  616. package/dist/transfer/import-json.d.ts +16 -0
  617. package/dist/transfer/import-json.js +13 -0
  618. package/dist/transfer/import-json.js.map +1 -0
  619. package/dist/transfer/import-md.d.ts +14 -0
  620. package/dist/transfer/import-md.js +11 -0
  621. package/dist/transfer/import-md.js.map +1 -0
  622. package/dist/transfer/import-sqlite.d.ts +14 -0
  623. package/dist/transfer/import-sqlite.js +12 -0
  624. package/dist/transfer/import-sqlite.js.map +1 -0
  625. package/dist/transfer/sqlite-schema.d.ts +4 -0
  626. package/dist/transfer/sqlite-schema.js +10 -0
  627. package/dist/transfer/sqlite-schema.js.map +1 -0
  628. package/dist/transfer/types.d.ts +916 -0
  629. package/dist/transfer/types.js +30 -0
  630. package/dist/transfer/types.js.map +1 -0
  631. package/dist/types.d.ts +28 -1
  632. package/dist/types.js +1 -1
  633. package/dist/verified-recall.js +9 -6
  634. package/dist/work/board.d.ts +43 -0
  635. package/dist/work/board.js +14 -0
  636. package/dist/work/board.js.map +1 -0
  637. package/dist/work/boundary.d.ts +8 -0
  638. package/dist/work/boundary.js +14 -0
  639. package/dist/work/boundary.js.map +1 -0
  640. package/dist/work/storage.d.ts +39 -0
  641. package/dist/work/storage.js +11 -0
  642. package/dist/work/storage.js.map +1 -0
  643. package/dist/work/types.d.ts +75 -0
  644. package/dist/work/types.js +1 -0
  645. package/dist/work/types.js.map +1 -0
  646. package/package.json +2767 -6
  647. package/scripts/faiss_index.py +816 -0
  648. package/scripts/faiss_requirements.txt +3 -0
  649. package/skills/remnic-entities/SKILL.md +51 -0
  650. package/skills/remnic-memory-workflow/SKILL.md +61 -0
  651. package/skills/remnic-recall/SKILL.md +51 -0
  652. package/skills/remnic-remember/SKILL.md +56 -0
  653. package/skills/remnic-search/SKILL.md +51 -0
  654. package/skills/remnic-status/SKILL.md +51 -0
  655. package/src/abort-error.test.ts +49 -0
  656. package/src/abort-error.ts +46 -0
  657. package/src/abstraction-nodes.ts +162 -0
  658. package/src/access-audit.test.ts +178 -0
  659. package/src/access-audit.ts +125 -0
  660. package/src/access-cli.test.ts +439 -0
  661. package/src/access-cli.ts +438 -0
  662. package/src/access-http.test.ts +225 -0
  663. package/src/access-http.ts +1899 -0
  664. package/src/access-idempotency.ts +232 -0
  665. package/src/access-mcp.test.ts +568 -0
  666. package/src/access-mcp.ts +3056 -0
  667. package/src/access-schema-pi.test.ts +60 -0
  668. package/src/access-schema.ts +522 -0
  669. package/src/access-service-namespace.test.ts +123 -0
  670. package/src/access-service.ts +5629 -0
  671. package/src/action-confidence.test.ts +206 -0
  672. package/src/action-confidence.ts +466 -0
  673. package/src/active-memory-bridge.test.ts +285 -0
  674. package/src/active-memory-bridge.ts +217 -0
  675. package/src/active-recall.test.ts +484 -0
  676. package/src/active-recall.ts +459 -0
  677. package/src/adapters/claude-code.ts +56 -0
  678. package/src/adapters/codex.ts +57 -0
  679. package/src/adapters/hermes.ts +64 -0
  680. package/src/adapters/index.ts +6 -0
  681. package/src/adapters/registry.ts +41 -0
  682. package/src/adapters/replit.ts +55 -0
  683. package/src/adapters/types.ts +51 -0
  684. package/src/behavior-learner.ts +144 -0
  685. package/src/behavior-signals.ts +73 -0
  686. package/src/binary-lifecycle/backend.ts +117 -0
  687. package/src/binary-lifecycle/index.ts +35 -0
  688. package/src/binary-lifecycle/manifest.ts +79 -0
  689. package/src/binary-lifecycle/pipeline.ts +352 -0
  690. package/src/binary-lifecycle/scanner.ts +89 -0
  691. package/src/binary-lifecycle/types.ts +89 -0
  692. package/src/bootstrap.ts +178 -0
  693. package/src/boxes.ts +521 -0
  694. package/src/briefing.test.ts +1535 -0
  695. package/src/briefing.ts +1382 -0
  696. package/src/buffer-session.test.ts +443 -0
  697. package/src/buffer-surprise-report.ts +176 -0
  698. package/src/buffer-surprise-telemetry.test.ts +606 -0
  699. package/src/buffer-surprise-trigger.test.ts +766 -0
  700. package/src/buffer-surprise.test.ts +339 -0
  701. package/src/buffer-surprise.ts +203 -0
  702. package/src/buffer.ts +900 -0
  703. package/src/bulk-import/cli-command.test.ts +204 -0
  704. package/src/bulk-import/index.ts +34 -0
  705. package/src/bulk-import/pipeline.test.ts +445 -0
  706. package/src/bulk-import/pipeline.ts +178 -0
  707. package/src/bulk-import/registry.test.ts +151 -0
  708. package/src/bulk-import/registry.ts +72 -0
  709. package/src/bulk-import/types.test.ts +272 -0
  710. package/src/bulk-import/types.ts +145 -0
  711. package/src/calibration.ts +394 -0
  712. package/src/capsule-cli.test.ts +398 -0
  713. package/src/capsule-cli.ts +565 -0
  714. package/src/causal-behavior.ts +308 -0
  715. package/src/causal-chain.ts +419 -0
  716. package/src/causal-consolidation.ts +370 -0
  717. package/src/causal-retrieval.ts +286 -0
  718. package/src/causal-trajectory-graph.ts +60 -0
  719. package/src/causal-trajectory.ts +303 -0
  720. package/src/chunking.ts +220 -0
  721. package/src/citations.ts +232 -0
  722. package/src/cli.ts +9403 -0
  723. package/src/codex-cli-fallback.ts +162 -0
  724. package/src/codex-thread-key.ts +1 -0
  725. package/src/coding/access-coding-context.test.ts +197 -0
  726. package/src/coding/coding-branch-scope.test.ts +281 -0
  727. package/src/coding/coding-namespace.test.ts +360 -0
  728. package/src/coding/coding-namespace.ts +412 -0
  729. package/src/coding/coding-orchestrator.test.ts +249 -0
  730. package/src/coding/git-context.test.ts +507 -0
  731. package/src/coding/git-context.ts +336 -0
  732. package/src/coding/mcp-set-coding-context.test.ts +174 -0
  733. package/src/coding/review-context.test.ts +316 -0
  734. package/src/coding/review-context.ts +349 -0
  735. package/src/coding/wire-coding-context.test.ts +468 -0
  736. package/src/commitment-ledger.test.ts +78 -0
  737. package/src/commitment-ledger.ts +337 -0
  738. package/src/compat/checks.test.ts +206 -0
  739. package/src/compat/checks.ts +716 -0
  740. package/src/compat/types.ts +33 -0
  741. package/src/compounding/engine.ts +1686 -0
  742. package/src/compounding/preference-consolidator.ts +778 -0
  743. package/src/compression-optimizer.ts +312 -0
  744. package/src/config.test.ts +930 -0
  745. package/src/config.ts +3807 -0
  746. package/src/connectors/codex/instructions.md +160 -0
  747. package/src/connectors/codex/resources/namespace-cheatsheet.md +48 -0
  748. package/src/connectors/codex-marketplace.ts +500 -0
  749. package/src/connectors/codex-materialize-runner.ts +212 -0
  750. package/src/connectors/codex-materialize.ts +983 -0
  751. package/src/connectors/coerce.ts +62 -0
  752. package/src/connectors/index.test.ts +1570 -0
  753. package/src/connectors/index.ts +3222 -0
  754. package/src/connectors/live/framework.ts +164 -0
  755. package/src/connectors/live/github.test.ts +1218 -0
  756. package/src/connectors/live/github.ts +1068 -0
  757. package/src/connectors/live/gmail.test.ts +1706 -0
  758. package/src/connectors/live/gmail.ts +1293 -0
  759. package/src/connectors/live/google-drive.test.ts +696 -0
  760. package/src/connectors/live/google-drive.ts +724 -0
  761. package/src/connectors/live/index.ts +101 -0
  762. package/src/connectors/live/live-connectors.test.ts +689 -0
  763. package/src/connectors/live/notion.test.ts +1109 -0
  764. package/src/connectors/live/notion.ts +978 -0
  765. package/src/connectors/live/registry.ts +103 -0
  766. package/src/connectors/live/state-store.ts +399 -0
  767. package/src/connectors/live/transient-errors.ts +150 -0
  768. package/src/connectors/weclone-installer.test.ts +850 -0
  769. package/src/connectors-cli.ts +513 -0
  770. package/src/console/state.test.ts +224 -0
  771. package/src/console/state.ts +514 -0
  772. package/src/console/trace.test.ts +813 -0
  773. package/src/console/trace.ts +603 -0
  774. package/src/console/tui.test.ts +582 -0
  775. package/src/console/tui.ts +508 -0
  776. package/src/consolidation-operator.ts +182 -0
  777. package/src/consolidation-provenance-check.ts +551 -0
  778. package/src/consolidation-undo.ts +718 -0
  779. package/src/contradiction/contradiction-judge.test.ts +189 -0
  780. package/src/contradiction/contradiction-judge.ts +333 -0
  781. package/src/contradiction/contradiction-review.ts +574 -0
  782. package/src/contradiction/contradiction-scan.ts +504 -0
  783. package/src/contradiction/contradiction.test.ts +2230 -0
  784. package/src/contradiction/index.ts +37 -0
  785. package/src/contradiction/resolution.ts +383 -0
  786. package/src/conversation-index/backend.ts +323 -0
  787. package/src/conversation-index/chunker.ts +47 -0
  788. package/src/conversation-index/cleanup.ts +53 -0
  789. package/src/conversation-index/faiss-adapter.ts +384 -0
  790. package/src/conversation-index/indexer.test.ts +164 -0
  791. package/src/conversation-index/indexer.ts +192 -0
  792. package/src/conversation-index/search.ts +37 -0
  793. package/src/cross-namespace-budget.test.ts +275 -0
  794. package/src/cross-namespace-budget.ts +365 -0
  795. package/src/cue-anchors.ts +163 -0
  796. package/src/curation/index.ts +544 -0
  797. package/src/dashboard-runtime.ts +337 -0
  798. package/src/day-summary.ts +122 -0
  799. package/src/dedup/index.ts +330 -0
  800. package/src/dedup/semantic.test.ts +1577 -0
  801. package/src/dedup/semantic.ts +148 -0
  802. package/src/delinearize.ts +193 -0
  803. package/src/direct-answer-wiring.test.ts +473 -0
  804. package/src/direct-answer-wiring.ts +180 -0
  805. package/src/direct-answer.test.ts +484 -0
  806. package/src/direct-answer.ts +273 -0
  807. package/src/embedding-fallback.ts +565 -0
  808. package/src/enrichment/audit.ts +89 -0
  809. package/src/enrichment/index.ts +27 -0
  810. package/src/enrichment/pipeline.ts +197 -0
  811. package/src/enrichment/provider-registry.ts +85 -0
  812. package/src/enrichment/types.ts +100 -0
  813. package/src/enrichment/web-search-provider.ts +63 -0
  814. package/src/entity-retrieval.ts +774 -0
  815. package/src/entity-schema.ts +239 -0
  816. package/src/evals.ts +1312 -0
  817. package/src/event-order-recall.test.ts +4164 -0
  818. package/src/event-order-recall.ts +2802 -0
  819. package/src/evidence-pack.test.ts +89 -0
  820. package/src/evidence-pack.ts +388 -0
  821. package/src/explicit-capture.ts +530 -0
  822. package/src/explicit-cue-recall.test.ts +3019 -0
  823. package/src/explicit-cue-recall.ts +5545 -0
  824. package/src/extraction-judge-telemetry.ts +234 -0
  825. package/src/extraction-judge-training.ts +221 -0
  826. package/src/extraction-judge.ts +846 -0
  827. package/src/extraction-timeout.test.ts +265 -0
  828. package/src/extraction.ts +2719 -0
  829. package/src/fallback-llm.test.ts +1060 -0
  830. package/src/fallback-llm.ts +918 -0
  831. package/src/focused-list-recall.test.ts +734 -0
  832. package/src/focused-list-recall.ts +1160 -0
  833. package/src/graph-dashboard-diff.ts +35 -0
  834. package/src/graph-dashboard-key.ts +5 -0
  835. package/src/graph-dashboard-parser.ts +104 -0
  836. package/src/graph-edge-reinforcement.ts +192 -0
  837. package/src/graph-events.ts +151 -0
  838. package/src/graph-recall.test.ts +164 -0
  839. package/src/graph-recall.ts +189 -0
  840. package/src/graph-retrieval.test.ts +809 -0
  841. package/src/graph-retrieval.ts +823 -0
  842. package/src/graph-snapshot.ts +329 -0
  843. package/src/graph.ts +813 -0
  844. package/src/harmonic-retrieval.ts +223 -0
  845. package/src/himem.ts +154 -0
  846. package/src/hygiene.ts +87 -0
  847. package/src/identity-continuity.ts +333 -0
  848. package/src/importance.ts +328 -0
  849. package/src/importers/base.test.ts +294 -0
  850. package/src/importers/base.ts +436 -0
  851. package/src/importers/index.ts +21 -0
  852. package/src/index.ts +1204 -0
  853. package/src/intent.ts +154 -0
  854. package/src/json-extract.ts +85 -0
  855. package/src/json-store.ts +42 -0
  856. package/src/lcm/archive.ts +617 -0
  857. package/src/lcm/dag.ts +199 -0
  858. package/src/lcm/engine.ts +645 -0
  859. package/src/lcm/index.ts +7 -0
  860. package/src/lcm/queue.test.ts +178 -0
  861. package/src/lcm/queue.ts +200 -0
  862. package/src/lcm/recall.ts +117 -0
  863. package/src/lcm/schema.ts +154 -0
  864. package/src/lcm/summarizer.ts +235 -0
  865. package/src/lcm/tools.ts +191 -0
  866. package/src/lcm-engine.test.ts +660 -0
  867. package/src/legacy-hook-compat.test.ts +20 -0
  868. package/src/legacy-hook-compat.ts +45 -0
  869. package/src/lifecycle.ts +289 -0
  870. package/src/live-connectors-runner.ts +385 -0
  871. package/src/local-llm-qos.test.ts +303 -0
  872. package/src/local-llm-thinking.test.ts +292 -0
  873. package/src/local-llm.ts +1464 -0
  874. package/src/logger.ts +49 -0
  875. package/src/maintenance/archive-observations.ts +147 -0
  876. package/src/maintenance/backup-stamp.ts +3 -0
  877. package/src/maintenance/dreams-ledger.ts +516 -0
  878. package/src/maintenance/first-start-migration.ts +362 -0
  879. package/src/maintenance/forget.test.ts +206 -0
  880. package/src/maintenance/forget.ts +126 -0
  881. package/src/maintenance/graph-edge-decay.test.ts +409 -0
  882. package/src/maintenance/graph-edge-decay.ts +394 -0
  883. package/src/maintenance/memory-governance-cron.ts +447 -0
  884. package/src/maintenance/memory-governance.ts +1039 -0
  885. package/src/maintenance/migrate-observations.ts +216 -0
  886. package/src/maintenance/observation-ledger-utils.ts +54 -0
  887. package/src/maintenance/pattern-reinforcement.test.ts +875 -0
  888. package/src/maintenance/pattern-reinforcement.ts +369 -0
  889. package/src/maintenance/purge.ts +334 -0
  890. package/src/maintenance/rebuild-memory-lifecycle-ledger.ts +78 -0
  891. package/src/maintenance/rebuild-memory-projection.ts +1234 -0
  892. package/src/maintenance/rebuild-observations.ts +178 -0
  893. package/src/maintenance/tier-stats.test.ts +378 -0
  894. package/src/maintenance/tier-stats.ts +222 -0
  895. package/src/mcp-memory-inspector-app.ts +421 -0
  896. package/src/memory-action-policy.ts +80 -0
  897. package/src/memory-cache.ts +208 -0
  898. package/src/memory-extension/claude-code-publisher.ts +51 -0
  899. package/src/memory-extension/codex-publisher.ts +149 -0
  900. package/src/memory-extension/hermes-publisher.ts +51 -0
  901. package/src/memory-extension/index.ts +100 -0
  902. package/src/memory-extension/shared-instructions.ts +133 -0
  903. package/src/memory-extension/types.ts +86 -0
  904. package/src/memory-extension-host/host-discovery.ts +276 -0
  905. package/src/memory-extension-host/index.ts +14 -0
  906. package/src/memory-extension-host/render-extensions-block.ts +73 -0
  907. package/src/memory-extension-host/types.ts +21 -0
  908. package/src/memory-lifecycle-ledger-utils.ts +116 -0
  909. package/src/memory-projection-format.ts +11 -0
  910. package/src/memory-projection-store.ts +951 -0
  911. package/src/memory-provenance.test.ts +196 -0
  912. package/src/memory-provenance.ts +484 -0
  913. package/src/memory-worth-bench.test.ts +71 -0
  914. package/src/memory-worth-bench.ts +265 -0
  915. package/src/memory-worth-filter.test.ts +209 -0
  916. package/src/memory-worth-filter.ts +204 -0
  917. package/src/memory-worth-frontmatter.test.ts +311 -0
  918. package/src/memory-worth-outcomes.test.ts +316 -0
  919. package/src/memory-worth-outcomes.ts +286 -0
  920. package/src/memory-worth.test.ts +317 -0
  921. package/src/memory-worth.ts +215 -0
  922. package/src/message-parts/index.ts +806 -0
  923. package/src/message-parts/message-parts.test.ts +421 -0
  924. package/src/migrate/from-engram.ts +789 -0
  925. package/src/model-registry.ts +313 -0
  926. package/src/models-json.ts +76 -0
  927. package/src/namespaces/migrate.ts +187 -0
  928. package/src/namespaces/path.ts +25 -0
  929. package/src/namespaces/principal.test.ts +195 -0
  930. package/src/namespaces/principal.ts +86 -0
  931. package/src/namespaces/search.test.ts +105 -0
  932. package/src/namespaces/search.ts +233 -0
  933. package/src/namespaces/storage.ts +74 -0
  934. package/src/native-knowledge.ts +1823 -0
  935. package/src/negative.ts +72 -0
  936. package/src/network/tailscale.ts +179 -0
  937. package/src/network/webdav.ts +385 -0
  938. package/src/objective-state-writers.ts +951 -0
  939. package/src/objective-state.ts +320 -0
  940. package/src/onboarding/index.ts +529 -0
  941. package/src/openai-chat-compat.ts +56 -0
  942. package/src/operator-toolkit.ts +2132 -0
  943. package/src/opik-exporter.test.ts +72 -0
  944. package/src/opik-exporter.ts +587 -0
  945. package/src/orchestrator-extraction-queue.test.ts +197 -0
  946. package/src/orchestrator-flush.test.ts +1171 -0
  947. package/src/orchestrator-pattern-reinforcement.test.ts +128 -0
  948. package/src/orchestrator-source-attribution.test.ts +701 -0
  949. package/src/orchestrator.ts +16368 -0
  950. package/src/page-versioning.ts +450 -0
  951. package/src/patterns-cli.ts +574 -0
  952. package/src/peers/index.ts +54 -0
  953. package/src/peers/migrate-from-identity-anchor.test.ts +291 -0
  954. package/src/peers/migrate-from-identity-anchor.ts +350 -0
  955. package/src/peers/peers.test.ts +419 -0
  956. package/src/peers/profile-reasoner.ts +694 -0
  957. package/src/peers/storage.ts +1350 -0
  958. package/src/peers/types.ts +138 -0
  959. package/src/plugin-id.ts +84 -0
  960. package/src/policy-runtime.ts +209 -0
  961. package/src/procedural/procedure-miner.ts +150 -0
  962. package/src/procedural/procedure-recall.ts +93 -0
  963. package/src/procedural/procedure-stats.ts +213 -0
  964. package/src/procedural/procedure-types.ts +132 -0
  965. package/src/procedural/reinforcement-core.test.ts +132 -0
  966. package/src/procedural/reinforcement-core.ts +73 -0
  967. package/src/profiling.test.ts +263 -0
  968. package/src/profiling.ts +435 -0
  969. package/src/projection/index.ts +398 -0
  970. package/src/qmd-recall-cache.test.ts +138 -0
  971. package/src/qmd-recall-cache.ts +111 -0
  972. package/src/qmd.test.ts +257 -0
  973. package/src/qmd.ts +2614 -0
  974. package/src/reasoning-trace-recall.ts +201 -0
  975. package/src/reasoning-trace-types.ts +235 -0
  976. package/src/recall-audit-anomaly.test.ts +246 -0
  977. package/src/recall-audit-anomaly.ts +297 -0
  978. package/src/recall-audit.test.ts +51 -0
  979. package/src/recall-audit.ts +72 -0
  980. package/src/recall-budget-config.test.ts +87 -0
  981. package/src/recall-disclosure-escalation.test.ts +196 -0
  982. package/src/recall-disclosure-escalation.ts +158 -0
  983. package/src/recall-disclosure-shaping.test.ts +146 -0
  984. package/src/recall-disclosure.test.ts +214 -0
  985. package/src/recall-explain-renderer.test.ts +140 -0
  986. package/src/recall-explain-renderer.ts +356 -0
  987. package/src/recall-mmr.test.ts +808 -0
  988. package/src/recall-mmr.ts +607 -0
  989. package/src/recall-qos.test.ts +85 -0
  990. package/src/recall-qos.ts +82 -0
  991. package/src/recall-query-policy.ts +221 -0
  992. package/src/recall-state.test.ts +233 -0
  993. package/src/recall-state.ts +456 -0
  994. package/src/recall-tag-filter.ts +143 -0
  995. package/src/recall-tokenization.ts +35 -0
  996. package/src/recall-xray-cli.test.ts +118 -0
  997. package/src/recall-xray-cli.ts +100 -0
  998. package/src/recall-xray-disclosure-telemetry.test.ts +183 -0
  999. package/src/recall-xray-renderer.test.ts +539 -0
  1000. package/src/recall-xray-renderer.ts +487 -0
  1001. package/src/recall-xray.test.ts +503 -0
  1002. package/src/recall-xray.ts +621 -0
  1003. package/src/reconstruct.ts +41 -0
  1004. package/src/release-changelog.ts +35 -0
  1005. package/src/relevance.ts +67 -0
  1006. package/src/replay/normalizers/chatgpt.ts +133 -0
  1007. package/src/replay/normalizers/claude.ts +102 -0
  1008. package/src/replay/normalizers/openclaw.ts +119 -0
  1009. package/src/replay/normalizers/shared.ts +69 -0
  1010. package/src/replay/runner.ts +197 -0
  1011. package/src/replay/types.ts +143 -0
  1012. package/src/rerank.test.ts +48 -0
  1013. package/src/rerank.ts +176 -0
  1014. package/src/resolve-auth-token.test.ts +226 -0
  1015. package/src/resolve-auth-token.ts +151 -0
  1016. package/src/resolve-provider-secret.test.ts +187 -0
  1017. package/src/resolve-provider-secret.ts +410 -0
  1018. package/src/response-guidance-recall.test.ts +3952 -0
  1019. package/src/response-guidance-recall.ts +4431 -0
  1020. package/src/resume-bundles.ts +415 -0
  1021. package/src/retrieval-agents.ts +623 -0
  1022. package/src/retrieval-tiers.ts +25 -0
  1023. package/src/retrieval.ts +104 -0
  1024. package/src/review/index.test.ts +201 -0
  1025. package/src/review/index.ts +536 -0
  1026. package/src/routing/engine.ts +162 -0
  1027. package/src/routing/store.ts +321 -0
  1028. package/src/runtime/better-sqlite.test.ts +32 -0
  1029. package/src/runtime/better-sqlite.ts +76 -0
  1030. package/src/runtime/child-process.ts +67 -0
  1031. package/src/runtime/env.ts +48 -0
  1032. package/src/sanitize.ts +58 -0
  1033. package/src/schemas.ts +449 -0
  1034. package/src/sdk-compat.ts +87 -0
  1035. package/src/search/document-scanner.ts +96 -0
  1036. package/src/search/embed-helper.ts +142 -0
  1037. package/src/search/factory.ts +189 -0
  1038. package/src/search/index.ts +10 -0
  1039. package/src/search/lancedb-backend.ts +342 -0
  1040. package/src/search/meilisearch-backend.ts +232 -0
  1041. package/src/search/noop-backend.ts +57 -0
  1042. package/src/search/orama-backend.ts +358 -0
  1043. package/src/search/port.ts +86 -0
  1044. package/src/search/remote-backend.ts +124 -0
  1045. package/src/secure-store/cipher.ts +271 -0
  1046. package/src/secure-store/cli-handlers.ts +355 -0
  1047. package/src/secure-store/cli-renderer.ts +131 -0
  1048. package/src/secure-store/header.ts +373 -0
  1049. package/src/secure-store/index.ts +137 -0
  1050. package/src/secure-store/kdf.ts +263 -0
  1051. package/src/secure-store/keyring.ts +106 -0
  1052. package/src/secure-store/metadata.ts +394 -0
  1053. package/src/secure-store/passphrase-reader.ts +252 -0
  1054. package/src/secure-store/secure-fs.ts +571 -0
  1055. package/src/secure-store/secure-store.test.ts +755 -0
  1056. package/src/semantic-chunking.ts +545 -0
  1057. package/src/semantic-consolidation.test.ts +182 -0
  1058. package/src/semantic-consolidation.ts +432 -0
  1059. package/src/semantic-rule-promotion.ts +183 -0
  1060. package/src/semantic-rule-verifier.ts +160 -0
  1061. package/src/session-integrity.ts +569 -0
  1062. package/src/session-observer-bands.ts +11 -0
  1063. package/src/session-observer-state.ts +346 -0
  1064. package/src/session-toggles.test.ts +96 -0
  1065. package/src/session-toggles.ts +159 -0
  1066. package/src/shared-context/manager.ts +810 -0
  1067. package/src/signal.ts +84 -0
  1068. package/src/skills-registry.test.ts +277 -0
  1069. package/src/skills-registry.ts +120 -0
  1070. package/src/source-attribution-roundtrip.test.ts +215 -0
  1071. package/src/source-attribution.test.ts +1425 -0
  1072. package/src/source-attribution.ts +639 -0
  1073. package/src/spaces/index.ts +627 -0
  1074. package/src/storage-paths.ts +117 -0
  1075. package/src/storage.ts +6657 -0
  1076. package/src/store-contract.ts +55 -0
  1077. package/src/summarizer.ts +844 -0
  1078. package/src/summary-snapshot.test.ts +681 -0
  1079. package/src/summary-snapshot.ts +238 -0
  1080. package/src/surfaces/dreams.test.ts +394 -0
  1081. package/src/surfaces/dreams.ts +346 -0
  1082. package/src/surfaces/heartbeat.test.ts +415 -0
  1083. package/src/surfaces/heartbeat.ts +325 -0
  1084. package/src/sync/index.ts +308 -0
  1085. package/src/targeted-fact-recall.test.ts +1694 -0
  1086. package/src/targeted-fact-recall.ts +2905 -0
  1087. package/src/taxonomy/default-taxonomy.ts +87 -0
  1088. package/src/taxonomy/index.ts +26 -0
  1089. package/src/taxonomy/resolver-doc-generator.ts +57 -0
  1090. package/src/taxonomy/resolver.ts +184 -0
  1091. package/src/taxonomy/taxonomy-loader.ts +186 -0
  1092. package/src/taxonomy/types.ts +48 -0
  1093. package/src/telemetry-transcript.ts +70 -0
  1094. package/src/temporal-index.ts +890 -0
  1095. package/src/temporal-supersession.test.ts +2703 -0
  1096. package/src/temporal-supersession.ts +493 -0
  1097. package/src/temporal-validity.test.ts +448 -0
  1098. package/src/temporal-validity.ts +123 -0
  1099. package/src/threading.ts +395 -0
  1100. package/src/tier-migration.ts +124 -0
  1101. package/src/tier-routing.ts +102 -0
  1102. package/src/tmt.ts +462 -0
  1103. package/src/tokens.test.ts +178 -0
  1104. package/src/tokens.ts +279 -0
  1105. package/src/topics.ts +147 -0
  1106. package/src/training-export/cli-date-validation.test.ts +258 -0
  1107. package/src/training-export/converter.test.ts +452 -0
  1108. package/src/training-export/converter.ts +319 -0
  1109. package/src/training-export/date-parse.ts +117 -0
  1110. package/src/training-export/index.ts +26 -0
  1111. package/src/training-export/registry.test.ts +85 -0
  1112. package/src/training-export/registry.ts +57 -0
  1113. package/src/training-export/types.ts +31 -0
  1114. package/src/transcript.ts +1179 -0
  1115. package/src/transfer/autodetect.ts +30 -0
  1116. package/src/transfer/backup.ts +138 -0
  1117. package/src/transfer/capsule-crypto.ts +485 -0
  1118. package/src/transfer/capsule-encrypt.test.ts +690 -0
  1119. package/src/transfer/capsule-export.ts +543 -0
  1120. package/src/transfer/capsule-fork.ts +375 -0
  1121. package/src/transfer/capsule-import.ts +564 -0
  1122. package/src/transfer/capsule-merge.ts +433 -0
  1123. package/src/transfer/conflict-policy.ts +16 -0
  1124. package/src/transfer/constants.ts +13 -0
  1125. package/src/transfer/exclusions.ts +37 -0
  1126. package/src/transfer/export-json.ts +65 -0
  1127. package/src/transfer/export-md.ts +59 -0
  1128. package/src/transfer/export-sqlite.ts +52 -0
  1129. package/src/transfer/fs-utils.ts +269 -0
  1130. package/src/transfer/import-json.ts +108 -0
  1131. package/src/transfer/import-md.ts +84 -0
  1132. package/src/transfer/import-sqlite.ts +100 -0
  1133. package/src/transfer/integrity.ts +71 -0
  1134. package/src/transfer/sqlite-schema.ts +16 -0
  1135. package/src/transfer/types.ts +297 -0
  1136. package/src/trust-zones.ts +1186 -0
  1137. package/src/types.ts +3074 -0
  1138. package/src/user-model.test.ts +124 -0
  1139. package/src/user-model.ts +162 -0
  1140. package/src/utility-learner.ts +353 -0
  1141. package/src/utility-runtime.ts +88 -0
  1142. package/src/utility-telemetry.ts +215 -0
  1143. package/src/utils/category-dir.ts +44 -0
  1144. package/src/utils/errno.ts +6 -0
  1145. package/src/utils/iso-timestamp.test.ts +37 -0
  1146. package/src/utils/iso-timestamp.ts +164 -0
  1147. package/src/utils/path.ts +26 -0
  1148. package/src/verified-recall.ts +138 -0
  1149. package/src/version-utils.test.ts +10 -0
  1150. package/src/version-utils.ts +9 -0
  1151. package/src/whitespace.ts +10 -0
  1152. package/src/work/board.ts +359 -0
  1153. package/src/work/boundary.ts +107 -0
  1154. package/src/work/storage.ts +436 -0
  1155. package/src/work/types.ts +82 -0
  1156. package/src/work-product-ledger.ts +265 -0
  1157. package/dist/access-service-DDjzFALq.d.ts +0 -2088
  1158. package/dist/capsule-crypto-SJS5VVAP.js +0 -18
  1159. package/dist/capsule-export-7QNCBZOQ.js +0 -17
  1160. package/dist/capsule-import-EPBHD2EN.js +0 -16
  1161. package/dist/capsule-merge-DI7PNQ2H.js +0 -189
  1162. package/dist/chunk-23ZZK64Y.js +0 -26
  1163. package/dist/chunk-23ZZK64Y.js.map +0 -1
  1164. package/dist/chunk-242S3I2A.js +0 -647
  1165. package/dist/chunk-2LGMW3DJ.js +0 -111
  1166. package/dist/chunk-3B6KIRBH.js +0 -5213
  1167. package/dist/chunk-3B6KIRBH.js.map +0 -1
  1168. package/dist/chunk-457A4P3L.js +0 -119
  1169. package/dist/chunk-457A4P3L.js.map +0 -1
  1170. package/dist/chunk-4IS4SXIQ.js +0 -2040
  1171. package/dist/chunk-4YM32CRU.js +0 -721
  1172. package/dist/chunk-6TBWYBJ3.js +0 -236
  1173. package/dist/chunk-74EMIVE4.js +0 -329
  1174. package/dist/chunk-74EMIVE4.js.map +0 -1
  1175. package/dist/chunk-767ODGE6.js +0 -183
  1176. package/dist/chunk-7V22HTMD.js +0 -623
  1177. package/dist/chunk-7V22HTMD.js.map +0 -1
  1178. package/dist/chunk-7ZM3BFKK.js +0 -9705
  1179. package/dist/chunk-7ZM3BFKK.js.map +0 -1
  1180. package/dist/chunk-AQJNPMOA.js +0 -643
  1181. package/dist/chunk-AQJNPMOA.js.map +0 -1
  1182. package/dist/chunk-ASAITVLA.js +0 -64
  1183. package/dist/chunk-ASAITVLA.js.map +0 -1
  1184. package/dist/chunk-BBE34QBJ.js +0 -275
  1185. package/dist/chunk-BBE34QBJ.js.map +0 -1
  1186. package/dist/chunk-BZSQEPRW.js +0 -14710
  1187. package/dist/chunk-BZSQEPRW.js.map +0 -1
  1188. package/dist/chunk-CPKTBRS2.js +0 -891
  1189. package/dist/chunk-CPKTBRS2.js.map +0 -1
  1190. package/dist/chunk-D4GAOFF6.js +0 -562
  1191. package/dist/chunk-D4GAOFF6.js.map +0 -1
  1192. package/dist/chunk-D54LZC5L.js +0 -147
  1193. package/dist/chunk-DF3RVK3X.js +0 -119
  1194. package/dist/chunk-DF3RVK3X.js.map +0 -1
  1195. package/dist/chunk-DZZPC36E.js +0 -1451
  1196. package/dist/chunk-DZZPC36E.js.map +0 -1
  1197. package/dist/chunk-E2UCDP5S.js +0 -570
  1198. package/dist/chunk-E6K4NIEU.js +0 -747
  1199. package/dist/chunk-E6K4NIEU.js.map +0 -1
  1200. package/dist/chunk-EEQLFRUM.js +0 -89
  1201. package/dist/chunk-ETOW6ACV.js +0 -158
  1202. package/dist/chunk-ETOW6ACV.js.map +0 -1
  1203. package/dist/chunk-FMEBPEAO.js +0 -347
  1204. package/dist/chunk-FMEBPEAO.js.map +0 -1
  1205. package/dist/chunk-FQDPCE3I.js +0 -1837
  1206. package/dist/chunk-FQDPCE3I.js.map +0 -1
  1207. package/dist/chunk-FYIYMQ5N.js +0 -221
  1208. package/dist/chunk-FYIYMQ5N.js.map +0 -1
  1209. package/dist/chunk-G2WADRQ3.js +0 -219
  1210. package/dist/chunk-G4SK7DSQ.js +0 -121
  1211. package/dist/chunk-GVPWB7EY.js +0 -390
  1212. package/dist/chunk-GVPWB7EY.js.map +0 -1
  1213. package/dist/chunk-HELQZFZO.js +0 -1075
  1214. package/dist/chunk-HL5LRPNA.js +0 -1914
  1215. package/dist/chunk-HL5LRPNA.js.map +0 -1
  1216. package/dist/chunk-HQZVVSVB.js +0 -147
  1217. package/dist/chunk-HQZVVSVB.js.map +0 -1
  1218. package/dist/chunk-HY3L4WKC.js +0 -2195
  1219. package/dist/chunk-HY3L4WKC.js.map +0 -1
  1220. package/dist/chunk-IB3BFHGN.js +0 -228
  1221. package/dist/chunk-IXEJRKCZ.js +0 -18
  1222. package/dist/chunk-JBMSGZEQ.js +0 -441
  1223. package/dist/chunk-JBMSGZEQ.js.map +0 -1
  1224. package/dist/chunk-JESOB2HO.js +0 -108
  1225. package/dist/chunk-JKDVIE52.js +0 -272
  1226. package/dist/chunk-JRNQ3RNA.js +0 -284
  1227. package/dist/chunk-JRNQ3RNA.js.map +0 -1
  1228. package/dist/chunk-K6WK37A6.js +0 -865
  1229. package/dist/chunk-K6WK37A6.js.map +0 -1
  1230. package/dist/chunk-MARWOCVP.js +0 -48
  1231. package/dist/chunk-MNU6ZBWT.js +0 -4454
  1232. package/dist/chunk-MNU6ZBWT.js.map +0 -1
  1233. package/dist/chunk-N5AKDXAI.js +0 -74
  1234. package/dist/chunk-OA3L7BFR.js +0 -183
  1235. package/dist/chunk-OA3L7BFR.js.map +0 -1
  1236. package/dist/chunk-OR64ZGRZ.js +0 -23
  1237. package/dist/chunk-P77UEOU2.js +0 -1521
  1238. package/dist/chunk-P77UEOU2.js.map +0 -1
  1239. package/dist/chunk-PH4C2U43.js +0 -239
  1240. package/dist/chunk-PH4C2U43.js.map +0 -1
  1241. package/dist/chunk-RVPLBATS.js +0 -1586
  1242. package/dist/chunk-RVPLBATS.js.map +0 -1
  1243. package/dist/chunk-U5JMRGKX.js +0 -340
  1244. package/dist/chunk-U5JMRGKX.js.map +0 -1
  1245. package/dist/chunk-URB2WSKZ.js +0 -350
  1246. package/dist/chunk-URB2WSKZ.js.map +0 -1
  1247. package/dist/chunk-UVMUAWVT.js +0 -596
  1248. package/dist/chunk-WEJG4TB5.js +0 -118
  1249. package/dist/chunk-X7HPGUVG.js +0 -271
  1250. package/dist/chunk-XAMBKFQS.js +0 -2777
  1251. package/dist/chunk-XAMBKFQS.js.map +0 -1
  1252. package/dist/chunk-XJKFSSDW.js +0 -726
  1253. package/dist/chunk-XJKFSSDW.js.map +0 -1
  1254. package/dist/chunk-XMHBH5H6.js +0 -283
  1255. package/dist/chunk-XMHBH5H6.js.map +0 -1
  1256. package/dist/chunk-XMVFHBHT.js +0 -277
  1257. package/dist/chunk-Y3VMVTYX.js +0 -53
  1258. package/dist/chunk-YNB73F22.js +0 -137
  1259. package/dist/chunk-YNB73F22.js.map +0 -1
  1260. package/dist/chunk-Z2E7VW55.js +0 -335
  1261. package/dist/chunk-Z2E7VW55.js.map +0 -1
  1262. package/dist/chunk-ZG7PTKBK.js +0 -2296
  1263. package/dist/chunk-ZNQN6ZTA.js +0 -135
  1264. package/dist/chunk-ZVTKDVVM.js +0 -827
  1265. package/dist/chunk-ZVTKDVVM.js.map +0 -1
  1266. package/dist/cli-BR8KpIU0.d.ts +0 -1259
  1267. package/dist/codex-materialize-CQlLTzke.d.ts +0 -139
  1268. package/dist/connectors-cli-DFGtY2DB.d.ts +0 -257
  1269. package/dist/contradiction-review-5LTTVDQV.js +0 -22
  1270. package/dist/contradiction-scan-QTXAMBUA.js +0 -414
  1271. package/dist/contradiction-scan-QTXAMBUA.js.map +0 -1
  1272. package/dist/engine-35M5BKQ7.js +0 -28
  1273. package/dist/fs-utils-IRVUFB6G.js +0 -30
  1274. package/dist/graph-edge-decay-PWB63GRE.js +0 -207
  1275. package/dist/memory-governance-IMPQZXFC.js +0 -37
  1276. package/dist/memory-projection-store-CY8TU40w.d.ts +0 -222
  1277. package/dist/orchestrator-DDMPqU6R.d.ts +0 -1792
  1278. package/dist/path-RMTY5Y5A.js +0 -9
  1279. package/dist/port-B6VEDIkC.d.ts +0 -53
  1280. package/dist/resolution-YGIBORXI.js +0 -101
  1281. package/dist/resolution-YGIBORXI.js.map +0 -1
  1282. package/dist/secure-store-4R2GSO7S.js +0 -156
  1283. package/dist/semantic-consolidation-ByBXb-sf.d.ts +0 -180
  1284. package/dist/state-store-3EH7HYIN.js +0 -16
  1285. package/dist/types-V3FJ26TF.js +0 -30
  1286. /package/dist/{capsule-crypto-SJS5VVAP.js.map → adapters/claude-code.js.map} +0 -0
  1287. /package/dist/{capsule-export-7QNCBZOQ.js.map → adapters/codex.js.map} +0 -0
  1288. /package/dist/{capsule-import-EPBHD2EN.js.map → adapters/hermes.js.map} +0 -0
  1289. /package/dist/{contradiction-review-5LTTVDQV.js.map → adapters/index.js.map} +0 -0
  1290. /package/dist/{engine-35M5BKQ7.js.map → adapters/registry.js.map} +0 -0
  1291. /package/dist/{fs-utils-IRVUFB6G.js.map → adapters/replit.js.map} +0 -0
  1292. /package/dist/{memory-governance-IMPQZXFC.js.map → adapters/types.js.map} +0 -0
  1293. /package/dist/{path-RMTY5Y5A.js.map → capsule-crypto-5CYAGVC5.js.map} +0 -0
  1294. /package/dist/{capsule-merge-DI7PNQ2H.js.map → capsule-merge-4MGKE7C5.js.map} +0 -0
  1295. /package/dist/{chunk-G4SK7DSQ.js.map → chunk-2WWLHTZY.js.map} +0 -0
  1296. /package/dist/{chunk-X7HPGUVG.js.map → chunk-4CRG46BG.js.map} +0 -0
  1297. /package/dist/{chunk-UVMUAWVT.js.map → chunk-7IASACLB.js.map} +0 -0
  1298. /package/dist/{chunk-HELQZFZO.js.map → chunk-EDTHC6UD.js.map} +0 -0
  1299. /package/dist/{chunk-4YM32CRU.js.map → chunk-EFJ3MQ4V.js.map} +0 -0
  1300. /package/dist/{chunk-E2UCDP5S.js.map → chunk-FBYESMQ2.js.map} +0 -0
  1301. /package/dist/{chunk-D54LZC5L.js.map → chunk-FDU6HUUL.js.map} +0 -0
  1302. /package/dist/{chunk-IB3BFHGN.js.map → chunk-GGKRUQOO.js.map} +0 -0
  1303. /package/dist/{chunk-242S3I2A.js.map → chunk-GL6I6MEQ.js.map} +0 -0
  1304. /package/dist/{secure-store-4R2GSO7S.js.map → chunk-HHLLAQGZ.js.map} +0 -0
  1305. /package/dist/{chunk-4IS4SXIQ.js.map → chunk-HXXBL2KD.js.map} +0 -0
  1306. /package/dist/{chunk-767ODGE6.js.map → chunk-KNKUID7G.js.map} +0 -0
  1307. /package/dist/{chunk-6TBWYBJ3.js.map → chunk-LPMVBPA3.js.map} +0 -0
  1308. /package/dist/{chunk-WEJG4TB5.js.map → chunk-MC26UJIM.js.map} +0 -0
  1309. /package/dist/{chunk-JKDVIE52.js.map → chunk-MGKYQQYF.js.map} +0 -0
  1310. /package/dist/{chunk-Y3VMVTYX.js.map → chunk-MT4HVDUZ.js.map} +0 -0
  1311. /package/dist/{chunk-G2WADRQ3.js.map → chunk-MY6TPVXW.js.map} +0 -0
  1312. /package/dist/{chunk-OR64ZGRZ.js.map → chunk-NNVTUXEB.js.map} +0 -0
  1313. /package/dist/{chunk-JESOB2HO.js.map → chunk-P4NEIHUT.js.map} +0 -0
  1314. /package/dist/{chunk-IXEJRKCZ.js.map → chunk-QRNI5JBH.js.map} +0 -0
  1315. /package/dist/{chunk-EEQLFRUM.js.map → chunk-RRF5UOBJ.js.map} +0 -0
  1316. /package/dist/{state-store-3EH7HYIN.js.map → chunk-SEDEKFYQ.js.map} +0 -0
  1317. /package/dist/{chunk-2LGMW3DJ.js.map → chunk-U3PN77QT.js.map} +0 -0
  1318. /package/dist/{chunk-XMVFHBHT.js.map → chunk-U3WSW6PZ.js.map} +0 -0
  1319. /package/dist/{chunk-N5AKDXAI.js.map → chunk-UWVJF25J.js.map} +0 -0
  1320. /package/dist/{types-V3FJ26TF.js.map → chunk-V5OCT34X.js.map} +0 -0
  1321. /package/dist/{chunk-ZG7PTKBK.js.map → chunk-W3LR522O.js.map} +0 -0
  1322. /package/dist/{chunk-MARWOCVP.js.map → chunk-XIG5PDM7.js.map} +0 -0
  1323. /package/dist/{chunk-ZNQN6ZTA.js.map → chunk-XVZ7B3HG.js.map} +0 -0
  1324. /package/dist/{graph-edge-decay-PWB63GRE.js.map → graph-edge-decay-5DI5GUNL.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/memory-projection-store.ts","../src/runtime/better-sqlite.ts"],"sourcesContent":["import path from \"node:path\";\nimport fs from \"node:fs\";\nimport type {\n MemoryGovernanceAppliedAction,\n MemoryGovernanceMetrics,\n MemoryGovernanceReviewQueueEntry,\n MemoryGovernanceSummary,\n} from \"./maintenance/memory-governance.js\";\nimport type {\n MemoryCategory,\n MemoryLifecycleEvent,\n MemoryProjectionCurrentState,\n MemoryStatus,\n} from \"./types.js\";\nimport {\n openBetterSqlite3,\n type BetterSqlite3Database,\n} from \"./runtime/better-sqlite.js\";\n\nexport const MEMORY_PROJECTION_SCHEMA_VERSION = 2;\n\nexport interface ProjectedMemoryBrowseOptions {\n query?: string;\n status?: string;\n category?: string;\n sort?: \"updated_desc\" | \"updated_asc\" | \"created_desc\" | \"created_asc\";\n limit: number;\n offset: number;\n}\n\nexport interface ProjectedMemoryBrowseRow {\n id: string;\n path: string;\n category: MemoryCategory;\n status: MemoryStatus;\n created?: string;\n updated?: string;\n tags: string[];\n entityRef?: string;\n preview: string;\n}\n\nexport interface ProjectedMemoryBrowsePage {\n total: number;\n memories: ProjectedMemoryBrowseRow[];\n}\n\nexport interface ProjectedEntityMentionRow {\n memoryId: string;\n entityRef: string;\n mentionSource: string;\n created: string;\n updated: string;\n}\n\nexport interface ProjectedNativeKnowledgeChunkRow {\n chunkId: string;\n sourcePath: string;\n title: string;\n sourceKind: string;\n startLine: number;\n endLine: number;\n derivedDate?: string;\n sessionKey?: string;\n workflowKey?: string;\n author?: string;\n agent?: string;\n namespace?: string;\n privacyClass?: string;\n sourceHash?: string;\n preview: string;\n}\n\nexport interface MemoryProjectionGovernanceReviewQueueRow {\n runId: string;\n entryId: string;\n memoryId: string;\n path: string;\n reasonCode: MemoryGovernanceReviewQueueEntry[\"reasonCode\"];\n severity: MemoryGovernanceReviewQueueEntry[\"severity\"];\n suggestedAction: MemoryGovernanceReviewQueueEntry[\"suggestedAction\"];\n suggestedStatus?: MemoryGovernanceReviewQueueEntry[\"suggestedStatus\"];\n relatedMemoryIds: string[];\n}\n\nexport interface MemoryProjectionGovernanceAppliedActionRow {\n runId: string;\n rowKey: string;\n action: MemoryGovernanceAppliedAction[\"action\"];\n memoryId: string;\n reasonCode: MemoryGovernanceAppliedAction[\"reasonCode\"];\n beforeStatus: MemoryGovernanceAppliedAction[\"beforeStatus\"];\n afterStatus?: MemoryGovernanceAppliedAction[\"afterStatus\"];\n originalPath: string;\n currentPath: string;\n}\n\nexport interface ProjectedReviewQueueSnapshot {\n found: boolean;\n runId?: string;\n summary?: MemoryGovernanceSummary;\n metrics?: MemoryGovernanceMetrics;\n reviewQueue?: MemoryGovernanceReviewQueueEntry[];\n appliedActions?: MemoryGovernanceAppliedAction[];\n report?: string;\n}\n\nexport function getMemoryProjectionPath(memoryDir: string): string {\n return path.join(memoryDir, \"state\", \"memory-projection.sqlite\");\n}\n\nfunction listTableColumns(db: BetterSqlite3Database, tableName: string): Set<string> {\n try {\n const rows = db.prepare(`PRAGMA table_info(${tableName})`).all() as Array<{ name?: unknown }>;\n return new Set(rows.map((row) => row.name).filter((name): name is string => typeof name === \"string\"));\n } catch {\n return new Set<string>();\n }\n}\n\nfunction migrateMemoryCurrentTable(db: BetterSqlite3Database): void {\n const columns = listTableColumns(db, \"memory_current\");\n if (columns.size === 0) return;\n\n if (!columns.has(\"tags_json\")) {\n db.exec(`ALTER TABLE memory_current ADD COLUMN tags_json TEXT NOT NULL DEFAULT '[]'`);\n }\n if (!columns.has(\"preview_text\")) {\n db.exec(`ALTER TABLE memory_current ADD COLUMN preview_text TEXT NOT NULL DEFAULT ''`);\n }\n}\n\nfunction memoryCurrentRequiresMigration(db: BetterSqlite3Database): boolean {\n const columns = listTableColumns(db, \"memory_current\");\n return columns.size > 0 && (!columns.has(\"tags_json\") || !columns.has(\"preview_text\"));\n}\n\nfunction migrateProjectionSchemaIfNeeded(memoryDir: string): void {\n const dbPath = getMemoryProjectionPath(memoryDir);\n try {\n const db = openBetterSqlite3(dbPath, { fileMustExist: true });\n try {\n if (!memoryCurrentRequiresMigration(db)) return;\n initializeMemoryProjectionDb(db);\n } finally {\n db.close();\n }\n } catch {\n // Fail open on migration attempts so readonly consumers can still use legacy rows.\n }\n}\n\nexport function memoryCurrentSelectExpressions(db: BetterSqlite3Database): {\n tagsJson: string;\n previewText: string;\n} {\n const columns = listTableColumns(db, \"memory_current\");\n return {\n tagsJson: columns.has(\"tags_json\") ? \"tags_json\" : `'[]' AS tags_json`,\n previewText: columns.has(\"preview_text\") ? \"preview_text\" : `'' AS preview_text`,\n };\n}\n\nexport function initializeMemoryProjectionDb(db: BetterSqlite3Database): void {\n db.exec(`\n CREATE TABLE IF NOT EXISTS meta (\n key TEXT PRIMARY KEY,\n value TEXT NOT NULL\n );\n\n CREATE TABLE IF NOT EXISTS memory_current (\n memory_id TEXT PRIMARY KEY,\n category TEXT NOT NULL,\n status TEXT NOT NULL,\n lifecycle_state TEXT,\n path_rel TEXT NOT NULL,\n created_at TEXT NOT NULL,\n updated_at TEXT NOT NULL,\n archived_at TEXT,\n superseded_at TEXT,\n entity_ref TEXT,\n source TEXT NOT NULL,\n confidence REAL NOT NULL,\n confidence_tier TEXT NOT NULL,\n memory_kind TEXT,\n access_count INTEGER,\n last_accessed TEXT,\n tags_json TEXT NOT NULL DEFAULT '[]',\n preview_text TEXT NOT NULL DEFAULT ''\n );\n\n CREATE INDEX IF NOT EXISTS idx_memory_current_status\n ON memory_current(status);\n\n CREATE INDEX IF NOT EXISTS idx_memory_current_category\n ON memory_current(category);\n\n CREATE INDEX IF NOT EXISTS idx_memory_current_updated\n ON memory_current(updated_at DESC);\n\n CREATE TABLE IF NOT EXISTS memory_timeline (\n event_id TEXT PRIMARY KEY,\n memory_id TEXT NOT NULL,\n event_type TEXT NOT NULL,\n timestamp TEXT NOT NULL,\n event_order INTEGER NOT NULL,\n actor TEXT NOT NULL,\n reason_code TEXT,\n rule_version TEXT NOT NULL,\n related_memory_ids_json TEXT,\n before_json TEXT,\n after_json TEXT,\n correlation_id TEXT\n );\n\n CREATE INDEX IF NOT EXISTS idx_memory_timeline_memory_ts\n ON memory_timeline(memory_id, timestamp, event_order);\n\n CREATE TABLE IF NOT EXISTS memory_entity_mentions (\n memory_id TEXT NOT NULL,\n entity_ref TEXT NOT NULL,\n mention_source TEXT NOT NULL,\n created_at TEXT NOT NULL,\n updated_at TEXT NOT NULL,\n PRIMARY KEY (memory_id, entity_ref, mention_source)\n );\n\n CREATE INDEX IF NOT EXISTS idx_memory_entity_mentions_entity\n ON memory_entity_mentions(entity_ref, updated_at DESC);\n\n CREATE TABLE IF NOT EXISTS native_knowledge_chunks (\n chunk_id TEXT PRIMARY KEY,\n source_path TEXT NOT NULL,\n title TEXT NOT NULL,\n source_kind TEXT NOT NULL,\n start_line INTEGER NOT NULL,\n end_line INTEGER NOT NULL,\n derived_date TEXT,\n session_key TEXT,\n workflow_key TEXT,\n author TEXT,\n agent TEXT,\n namespace TEXT,\n privacy_class TEXT,\n source_hash TEXT,\n preview_text TEXT NOT NULL\n );\n\n CREATE INDEX IF NOT EXISTS idx_native_knowledge_source_kind\n ON native_knowledge_chunks(source_kind);\n\n CREATE INDEX IF NOT EXISTS idx_native_knowledge_namespace\n ON native_knowledge_chunks(namespace);\n\n CREATE TABLE IF NOT EXISTS memory_review_runs (\n run_id TEXT PRIMARY KEY,\n created_at TEXT NOT NULL,\n mode TEXT NOT NULL,\n summary_json TEXT NOT NULL,\n metrics_json TEXT NOT NULL,\n applied_actions_json TEXT NOT NULL,\n report_markdown TEXT NOT NULL\n );\n\n CREATE INDEX IF NOT EXISTS idx_memory_review_runs_created\n ON memory_review_runs(created_at DESC);\n\n CREATE TABLE IF NOT EXISTS memory_review_queue (\n entry_id TEXT PRIMARY KEY,\n run_id TEXT NOT NULL,\n memory_id TEXT NOT NULL,\n path TEXT NOT NULL,\n reason_code TEXT NOT NULL,\n severity TEXT NOT NULL,\n suggested_action TEXT NOT NULL,\n suggested_status TEXT,\n related_memory_ids_json TEXT NOT NULL\n );\n\n CREATE INDEX IF NOT EXISTS idx_memory_review_queue_run\n ON memory_review_queue(run_id, reason_code, memory_id);\n\n CREATE TABLE IF NOT EXISTS memory_review_actions (\n row_key TEXT PRIMARY KEY,\n run_id TEXT NOT NULL,\n action TEXT NOT NULL,\n memory_id TEXT NOT NULL,\n reason_code TEXT NOT NULL,\n before_status TEXT NOT NULL,\n after_status TEXT,\n original_path TEXT NOT NULL,\n current_path TEXT NOT NULL\n );\n\n CREATE INDEX IF NOT EXISTS idx_memory_review_actions_run\n ON memory_review_actions(run_id, memory_id);\n `);\n\n migrateMemoryCurrentTable(db);\n db.prepare(\"INSERT OR REPLACE INTO meta(key, value) VALUES (?, ?)\")\n .run(\"schemaVersion\", String(MEMORY_PROJECTION_SCHEMA_VERSION));\n}\n\nfunction openProjectionReadonly(memoryDir: string): BetterSqlite3Database | null {\n const dbPath = getMemoryProjectionPath(memoryDir);\n try {\n return openBetterSqlite3(dbPath, { readonly: true, fileMustExist: true });\n } catch {\n return null;\n }\n}\n\nfunction withProjectionReadonly<T>(\n memoryDir: string,\n reader: (db: BetterSqlite3Database) => T,\n): T | null {\n const db = openProjectionReadonly(memoryDir);\n if (!db) return null;\n\n let needsMigration = false;\n try {\n needsMigration = memoryCurrentRequiresMigration(db);\n return reader(db);\n } catch {\n return null;\n } finally {\n db.close();\n if (needsMigration) {\n migrateProjectionSchemaIfNeeded(memoryDir);\n }\n }\n}\n\nfunction parseStringArray(value: unknown): string[] {\n if (typeof value !== \"string\" || value.length === 0) return [];\n try {\n const parsed = JSON.parse(value);\n return Array.isArray(parsed) ? parsed.filter((entry): entry is string => typeof entry === \"string\") : [];\n } catch {\n return [];\n }\n}\n\nfunction parseJsonObject<T>(value: unknown): T | undefined {\n if (typeof value !== \"string\" || value.length === 0) return undefined;\n try {\n return JSON.parse(value) as T;\n } catch {\n return undefined;\n }\n}\n\nexport function parseCurrentRow(\n memoryDir: string,\n row: Record<string, unknown> | undefined,\n): MemoryProjectionCurrentState | null {\n if (!row) return null;\n if (\n typeof row.memory_id !== \"string\" ||\n typeof row.category !== \"string\" ||\n typeof row.status !== \"string\" ||\n typeof row.path_rel !== \"string\" ||\n typeof row.created_at !== \"string\" ||\n typeof row.updated_at !== \"string\" ||\n typeof row.source !== \"string\" ||\n typeof row.confidence !== \"number\" ||\n typeof row.confidence_tier !== \"string\"\n ) {\n return null;\n }\n\n return {\n memoryId: row.memory_id,\n category: row.category as MemoryProjectionCurrentState[\"category\"],\n status: row.status as MemoryStatus,\n lifecycleState:\n typeof row.lifecycle_state === \"string\"\n ? (row.lifecycle_state as MemoryProjectionCurrentState[\"lifecycleState\"])\n : undefined,\n path: path.join(memoryDir, row.path_rel),\n pathRel: row.path_rel,\n created: row.created_at,\n updated: row.updated_at,\n archivedAt: typeof row.archived_at === \"string\" ? row.archived_at : undefined,\n supersededAt: typeof row.superseded_at === \"string\" ? row.superseded_at : undefined,\n entityRef: typeof row.entity_ref === \"string\" ? row.entity_ref : undefined,\n source: row.source,\n confidence: row.confidence,\n confidenceTier: row.confidence_tier as MemoryProjectionCurrentState[\"confidenceTier\"],\n memoryKind:\n typeof row.memory_kind === \"string\"\n ? (row.memory_kind as MemoryProjectionCurrentState[\"memoryKind\"])\n : undefined,\n accessCount: typeof row.access_count === \"number\" ? row.access_count : undefined,\n lastAccessed: typeof row.last_accessed === \"string\" ? row.last_accessed : undefined,\n tags: parseStringArray(row.tags_json),\n preview: typeof row.preview_text === \"string\" ? row.preview_text : \"\",\n };\n}\n\nexport function parseTimelineRows(rows: Array<Record<string, unknown>>): MemoryLifecycleEvent[] {\n const out: MemoryLifecycleEvent[] = [];\n for (const row of rows) {\n if (\n typeof row.event_id !== \"string\" ||\n typeof row.memory_id !== \"string\" ||\n typeof row.event_type !== \"string\" ||\n typeof row.timestamp !== \"string\" ||\n typeof row.actor !== \"string\" ||\n typeof row.rule_version !== \"string\"\n ) {\n continue;\n }\n\n out.push({\n eventId: row.event_id,\n memoryId: row.memory_id,\n eventType: row.event_type as MemoryLifecycleEvent[\"eventType\"],\n timestamp: row.timestamp,\n actor: row.actor,\n reasonCode: typeof row.reason_code === \"string\" ? row.reason_code : undefined,\n ruleVersion: row.rule_version,\n relatedMemoryIds: parseStringArray(row.related_memory_ids_json),\n before: parseJsonObject<MemoryLifecycleEvent[\"before\"]>(row.before_json),\n after: parseJsonObject<MemoryLifecycleEvent[\"after\"]>(row.after_json),\n correlationId: typeof row.correlation_id === \"string\" ? row.correlation_id : undefined,\n });\n }\n\n return out;\n}\n\nexport function readProjectedMemoryState(\n memoryDir: string,\n memoryId: string,\n): MemoryProjectionCurrentState | null {\n return withProjectionReadonly(memoryDir, (db) => {\n const currentSelect = memoryCurrentSelectExpressions(db);\n const row = db\n .prepare(\n `\n SELECT\n memory_id,\n category,\n status,\n lifecycle_state,\n path_rel,\n created_at,\n updated_at,\n archived_at,\n superseded_at,\n entity_ref,\n source,\n confidence,\n confidence_tier,\n memory_kind,\n access_count,\n last_accessed,\n ${currentSelect.tagsJson},\n ${currentSelect.previewText}\n FROM memory_current\n WHERE memory_id = ?\n `,\n )\n .get(memoryId) as Record<string, unknown> | undefined;\n return parseCurrentRow(memoryDir, row);\n });\n}\n\nexport function readProjectedMemoryTimeline(\n memoryDir: string,\n memoryId: string,\n limit: number,\n): MemoryLifecycleEvent[] | null {\n const db = openProjectionReadonly(memoryDir);\n if (!db) return null;\n\n try {\n const rows = db\n .prepare(\n `\n SELECT * FROM (\n SELECT\n event_id,\n memory_id,\n event_type,\n timestamp,\n event_order,\n actor,\n reason_code,\n rule_version,\n related_memory_ids_json,\n before_json,\n after_json,\n correlation_id\n FROM memory_timeline\n WHERE memory_id = ?\n ORDER BY timestamp DESC, event_order DESC\n LIMIT ?\n )\n ORDER BY timestamp ASC, event_order ASC\n `,\n )\n .all(memoryId, limit) as Array<Record<string, unknown>>;\n if (rows.length === 0) return null;\n return parseTimelineRows(rows);\n } catch {\n return null;\n } finally {\n db.close();\n }\n}\n\nexport function readProjectedMemoryBrowse(\n memoryDir: string,\n options: ProjectedMemoryBrowseOptions,\n): ProjectedMemoryBrowsePage | null {\n return withProjectionReadonly(memoryDir, (db) => {\n const normalizedQuery = options.query?.trim().toLowerCase() ?? \"\";\n\n const currentSelect = memoryCurrentSelectExpressions(db);\n const whereClauses: string[] = [];\n const params: unknown[] = [];\n\n if (options.status) {\n whereClauses.push(\"status = ?\");\n params.push(options.status);\n }\n if (options.category) {\n whereClauses.push(\"category = ?\");\n params.push(options.category);\n }\n const sort = options.sort ?? \"updated_desc\";\n const orderBySql = (() => {\n switch (sort) {\n case \"updated_asc\":\n return \"updated_at ASC, created_at ASC, memory_id ASC\";\n case \"created_desc\":\n return \"created_at DESC, updated_at DESC, memory_id ASC\";\n case \"created_asc\":\n return \"created_at ASC, updated_at ASC, memory_id ASC\";\n case \"updated_desc\":\n default:\n return \"updated_at DESC, created_at DESC, memory_id ASC\";\n }\n })();\n const whereSql = whereClauses.length > 0 ? `WHERE ${whereClauses.join(\" AND \")}` : \"\";\n\n if (normalizedQuery) {\n // Query-based browse: fetch all matching rows, filter by full file content, then paginate in JS\n const allRows = db\n .prepare(`\n SELECT\n memory_id,\n path_rel,\n category,\n status,\n created_at,\n updated_at,\n entity_ref,\n ${currentSelect.tagsJson},\n ${currentSelect.previewText}\n FROM memory_current\n ${whereSql}\n ORDER BY ${orderBySql}\n `)\n .all(...params) as Array<Record<string, unknown>>;\n\n const filtered = allRows.filter((row) => {\n if (typeof row.memory_id !== \"string\" || typeof row.path_rel !== \"string\") return false;\n // Check preview, category, entity_ref, tags first (fast)\n const preview = typeof row.preview_text === \"string\" ? row.preview_text.toLowerCase() : \"\";\n const category = typeof row.category === \"string\" ? row.category.toLowerCase() : \"\";\n const entityRef = typeof row.entity_ref === \"string\" ? row.entity_ref.toLowerCase() : \"\";\n const tags = typeof row.tags_json === \"string\" ? row.tags_json.toLowerCase() : \"\";\n if (preview.includes(normalizedQuery) || category.includes(normalizedQuery) ||\n entityRef.includes(normalizedQuery) || tags.includes(normalizedQuery)) {\n return true;\n }\n // Fall back to reading full file content from disk\n try {\n const filePath = path.join(memoryDir, row.path_rel as string);\n const content = fs.readFileSync(filePath, \"utf-8\").toLowerCase();\n return content.includes(normalizedQuery);\n } catch {\n return false;\n }\n });\n\n const pageRows = filtered.slice(options.offset, options.offset + options.limit);\n return {\n total: filtered.length,\n memories: pageRows\n .filter(\n (row) =>\n typeof row.memory_id === \"string\" &&\n typeof row.path_rel === \"string\" &&\n typeof row.category === \"string\" &&\n typeof row.status === \"string\",\n )\n .map((row) => ({\n id: row.memory_id as string,\n path: path.join(memoryDir, row.path_rel as string),\n category: row.category as MemoryCategory,\n status: row.status as MemoryStatus,\n created: typeof row.created_at === \"string\" ? row.created_at : undefined,\n updated: typeof row.updated_at === \"string\" ? row.updated_at : undefined,\n tags: parseStringArray(row.tags_json),\n entityRef: typeof row.entity_ref === \"string\" ? row.entity_ref : undefined,\n preview: typeof row.preview_text === \"string\" ? row.preview_text : \"\",\n })),\n };\n }\n\n // No query: use SQL pagination directly\n const totalRow = db\n .prepare(`SELECT COUNT(*) AS total FROM memory_current ${whereSql}`)\n .get(...params) as { total?: number } | undefined;\n const rows = db\n .prepare(`\n SELECT\n memory_id,\n path_rel,\n category,\n status,\n created_at,\n updated_at,\n entity_ref,\n ${currentSelect.tagsJson},\n ${currentSelect.previewText}\n FROM memory_current\n ${whereSql}\n ORDER BY ${orderBySql}\n LIMIT ? OFFSET ?\n `)\n .all(...params, options.limit, options.offset) as Array<Record<string, unknown>>;\n\n return {\n total: typeof totalRow?.total === \"number\" ? totalRow.total : 0,\n memories: rows\n .filter(\n (row) =>\n typeof row.memory_id === \"string\" &&\n typeof row.path_rel === \"string\" &&\n typeof row.category === \"string\" &&\n typeof row.status === \"string\",\n )\n .map((row) => ({\n id: row.memory_id as string,\n path: path.join(memoryDir, row.path_rel as string),\n category: row.category as MemoryCategory,\n status: row.status as MemoryStatus,\n created: typeof row.created_at === \"string\" ? row.created_at : undefined,\n updated: typeof row.updated_at === \"string\" ? row.updated_at : undefined,\n tags: parseStringArray(row.tags_json),\n entityRef: typeof row.entity_ref === \"string\" ? row.entity_ref : undefined,\n preview: typeof row.preview_text === \"string\" ? row.preview_text : \"\",\n })),\n };\n });\n}\n\nexport function readProjectedEntityMentions(\n memoryDir: string,\n memoryIds?: Set<string>,\n): ProjectedEntityMentionRow[] | null {\n const db = openProjectionReadonly(memoryDir);\n if (!db) return null;\n\n try {\n const rows = db\n .prepare(`\n SELECT\n memory_id,\n entity_ref,\n mention_source,\n created_at,\n updated_at\n FROM memory_entity_mentions\n ORDER BY entity_ref ASC, updated_at DESC, memory_id ASC\n `)\n .all() as Array<Record<string, unknown>>;\n\n return rows\n .filter(\n (row) =>\n typeof row.memory_id === \"string\" &&\n typeof row.entity_ref === \"string\" &&\n typeof row.mention_source === \"string\" &&\n typeof row.created_at === \"string\" &&\n typeof row.updated_at === \"string\" &&\n (!memoryIds || memoryIds.has(row.memory_id)),\n )\n .map((row) => ({\n memoryId: row.memory_id as string,\n entityRef: row.entity_ref as string,\n mentionSource: row.mention_source as string,\n created: row.created_at as string,\n updated: row.updated_at as string,\n }));\n } catch {\n return null;\n } finally {\n db.close();\n }\n}\n\nexport function readProjectedNativeKnowledgeChunks(\n memoryDir: string,\n): ProjectedNativeKnowledgeChunkRow[] | null {\n const db = openProjectionReadonly(memoryDir);\n if (!db) return null;\n\n try {\n const rows = db\n .prepare(`\n SELECT\n chunk_id,\n source_path,\n title,\n source_kind,\n start_line,\n end_line,\n derived_date,\n session_key,\n workflow_key,\n author,\n agent,\n namespace,\n privacy_class,\n source_hash,\n preview_text\n FROM native_knowledge_chunks\n ORDER BY source_kind ASC, source_path ASC, start_line ASC\n `)\n .all() as Array<Record<string, unknown>>;\n\n return rows\n .filter(\n (row) =>\n typeof row.chunk_id === \"string\" &&\n typeof row.source_path === \"string\" &&\n typeof row.title === \"string\" &&\n typeof row.source_kind === \"string\" &&\n typeof row.start_line === \"number\" &&\n typeof row.end_line === \"number\" &&\n typeof row.preview_text === \"string\",\n )\n .map((row) => ({\n chunkId: row.chunk_id as string,\n sourcePath: row.source_path as string,\n title: row.title as string,\n sourceKind: row.source_kind as string,\n startLine: row.start_line as number,\n endLine: row.end_line as number,\n derivedDate: typeof row.derived_date === \"string\" ? row.derived_date : undefined,\n sessionKey: typeof row.session_key === \"string\" ? row.session_key : undefined,\n workflowKey: typeof row.workflow_key === \"string\" ? row.workflow_key : undefined,\n author: typeof row.author === \"string\" ? row.author : undefined,\n agent: typeof row.agent === \"string\" ? row.agent : undefined,\n namespace: typeof row.namespace === \"string\" ? row.namespace : undefined,\n privacyClass: typeof row.privacy_class === \"string\" ? row.privacy_class : undefined,\n sourceHash: typeof row.source_hash === \"string\" ? row.source_hash : undefined,\n preview: row.preview_text as string,\n }));\n } catch {\n return null;\n } finally {\n db.close();\n }\n}\n\nexport function readProjectedLatestReviewQueue(\n memoryDir: string,\n): ProjectedReviewQueueSnapshot | null {\n const db = openProjectionReadonly(memoryDir);\n if (!db) return null;\n\n try {\n const latestRunId =\n (db.prepare(`SELECT value FROM meta WHERE key = 'latestGovernanceRunId'`).get() as { value?: string } | undefined)\n ?.value\n ?? (db.prepare(`SELECT run_id AS value FROM memory_review_runs ORDER BY created_at DESC LIMIT 1`).get() as {\n value?: string;\n } | undefined)?.value;\n if (!latestRunId) {\n return { found: false };\n }\n\n const runRow = db\n .prepare(`\n SELECT\n run_id,\n summary_json,\n metrics_json,\n applied_actions_json,\n report_markdown\n FROM memory_review_runs\n WHERE run_id = ?\n `)\n .get(latestRunId) as Record<string, unknown> | undefined;\n if (!runRow || typeof runRow.run_id !== \"string\") {\n return { found: false };\n }\n\n const queueRows = db\n .prepare(`\n SELECT\n entry_id,\n memory_id,\n path,\n reason_code,\n severity,\n suggested_action,\n suggested_status,\n related_memory_ids_json\n FROM memory_review_queue\n WHERE run_id = ?\n ORDER BY reason_code ASC, memory_id ASC\n `)\n .all(latestRunId) as Array<Record<string, unknown>>;\n\n const actionRows = db\n .prepare(`\n SELECT\n row_key,\n action,\n memory_id,\n reason_code,\n before_status,\n after_status,\n original_path,\n current_path\n FROM memory_review_actions\n WHERE run_id = ?\n ORDER BY memory_id ASC, action ASC\n `)\n .all(latestRunId) as Array<Record<string, unknown>>;\n\n const reviewQueue: MemoryGovernanceReviewQueueEntry[] = queueRows\n .filter(\n (row) =>\n typeof row.entry_id === \"string\" &&\n typeof row.memory_id === \"string\" &&\n typeof row.path === \"string\" &&\n typeof row.reason_code === \"string\" &&\n typeof row.severity === \"string\" &&\n typeof row.suggested_action === \"string\",\n )\n .map((row) => ({\n entryId: row.entry_id as string,\n memoryId: row.memory_id as string,\n path: row.path as string,\n reasonCode: row.reason_code as MemoryGovernanceReviewQueueEntry[\"reasonCode\"],\n severity: row.severity as MemoryGovernanceReviewQueueEntry[\"severity\"],\n suggestedAction: row.suggested_action as MemoryGovernanceReviewQueueEntry[\"suggestedAction\"],\n suggestedStatus:\n typeof row.suggested_status === \"string\"\n ? (row.suggested_status as MemoryGovernanceReviewQueueEntry[\"suggestedStatus\"])\n : undefined,\n relatedMemoryIds: parseStringArray(row.related_memory_ids_json),\n }));\n\n return {\n found: true,\n runId: latestRunId,\n summary: parseJsonObject<MemoryGovernanceSummary>(runRow.summary_json),\n metrics: parseJsonObject<MemoryGovernanceMetrics>(runRow.metrics_json),\n reviewQueue,\n appliedActions:\n actionRows.length > 0\n ? actionRows\n .filter(\n (row) =>\n typeof row.action === \"string\" &&\n typeof row.memory_id === \"string\" &&\n typeof row.reason_code === \"string\" &&\n typeof row.before_status === \"string\" &&\n typeof row.original_path === \"string\" &&\n typeof row.current_path === \"string\",\n )\n .map((row) => ({\n action: row.action as MemoryGovernanceAppliedAction[\"action\"],\n memoryId: row.memory_id as string,\n reasonCode: row.reason_code as MemoryGovernanceAppliedAction[\"reasonCode\"],\n beforeStatus: row.before_status as MemoryGovernanceAppliedAction[\"beforeStatus\"],\n afterStatus:\n typeof row.after_status === \"string\"\n ? (row.after_status as MemoryGovernanceAppliedAction[\"afterStatus\"])\n : undefined,\n originalPath: row.original_path as string,\n currentPath: row.current_path as string,\n }))\n : (parseJsonObject<MemoryGovernanceAppliedAction[]>(runRow.applied_actions_json) ?? []),\n report: typeof runRow.report_markdown === \"string\" ? runRow.report_markdown : undefined,\n };\n } catch {\n return null;\n } finally {\n db.close();\n }\n}\n\nexport function readProjectedGovernanceRecord(\n memoryDir: string,\n): {\n runId: string;\n summary: unknown;\n metrics: unknown;\n reviewQueueRows: MemoryProjectionGovernanceReviewQueueRow[];\n appliedActionRows: MemoryProjectionGovernanceAppliedActionRow[];\n report: string;\n} | null {\n const snapshot = readProjectedLatestReviewQueue(memoryDir);\n if (!snapshot?.found || !snapshot.runId) return null;\n\n return {\n runId: snapshot.runId,\n summary: snapshot.summary ?? {},\n metrics: snapshot.metrics ?? {},\n reviewQueueRows: (snapshot.reviewQueue ?? []).map((entry) => ({\n runId: snapshot.runId as string,\n entryId: entry.entryId,\n memoryId: entry.memoryId,\n path: entry.path,\n reasonCode: entry.reasonCode,\n severity: entry.severity,\n suggestedAction: entry.suggestedAction,\n suggestedStatus: entry.suggestedStatus,\n relatedMemoryIds: [...entry.relatedMemoryIds],\n })),\n appliedActionRows: (snapshot.appliedActions ?? []).map((action) => ({\n runId: snapshot.runId as string,\n rowKey: [\n action.action,\n action.memoryId,\n action.reasonCode,\n action.originalPath,\n action.currentPath,\n ].join(\"::\"),\n action: action.action,\n memoryId: action.memoryId,\n reasonCode: action.reasonCode,\n beforeStatus: action.beforeStatus,\n afterStatus: action.afterStatus,\n originalPath: action.originalPath,\n currentPath: action.currentPath,\n })),\n report: snapshot.report ?? \"\",\n };\n}\n","import { createRequire } from \"node:module\";\nimport type BetterSqlite3 from \"better-sqlite3\";\n\nexport type BetterSqlite3Database = BetterSqlite3.Database;\ntype BetterSqlite3Ctor = typeof BetterSqlite3;\ntype RuntimeRequire = ReturnType<typeof createRequire>;\n\nlet cachedCtor: BetterSqlite3Ctor | null = null;\n\nfunction loadBetterSqlite3(): BetterSqlite3Ctor {\n if (cachedCtor) return cachedCtor;\n\n const require = createRequire(import.meta.url);\n\n try {\n cachedCtor = requireBetterSqlite3Ctor(require);\n return cachedCtor;\n } catch (error) {\n throw unavailableError(error);\n }\n}\n\nexport function openBetterSqlite3(\n file: string,\n options?: ConstructorParameters<BetterSqlite3Ctor>[1],\n): BetterSqlite3Database {\n const Database = loadBetterSqlite3();\n return new Database(file, options);\n}\n\nfunction requireBetterSqlite3Ctor(require: RuntimeRequire): BetterSqlite3Ctor {\n const loaded = require(\"better-sqlite3\") as\n | BetterSqlite3Ctor\n | { default?: BetterSqlite3Ctor };\n const ctor = typeof loaded === \"function\" ? loaded : loaded.default;\n\n if (typeof ctor !== \"function\") {\n throw new Error(\"module did not export a constructor\");\n }\n\n return ctor;\n}\n\nexport function isLikelyBetterSqlite3NativeBindingError(error: unknown): boolean {\n const detail = errorDetail(error);\n return (\n detail.includes(\"Could not locate the bindings file\") ||\n detail.includes(\"better_sqlite3.node\") ||\n (detail.includes(\"node-v\") && detail.includes(\"better-sqlite3\")) ||\n (detail.includes(\"NODE_MODULE_VERSION\") && detail.includes(\"better-sqlite3\")) ||\n detail.includes(\"was compiled against a different Node.js version\")\n );\n}\n\nfunction unavailableError(error: unknown): Error {\n const detail = errorDetail(error);\n const nativeBindingHint = isLikelyBetterSqlite3NativeBindingError(error)\n ? \" This usually means the better-sqlite3 native binding was not compiled for this Node.js/platform combination. \" +\n \"Run `node scripts/ensure-better-sqlite3.mjs` from the Remnic install directory, or run \" +\n \"`npx node-gyp rebuild --directory=node_modules/better-sqlite3` if the verification script is unavailable.\"\n : \"\";\n return new Error(\n \"better-sqlite3 is unavailable. Remnic attempted to load the native SQLite binding and could not.\" +\n nativeBindingHint +\n (detail ? ` Original error: ${detail}` : \"\"),\n { cause: error instanceof Error ? error : undefined },\n );\n}\n\nfunction errorDetail(error: unknown): string {\n if (error instanceof Error) {\n const stack = error.stack && error.stack !== error.message ? `\\n${error.stack}` : \"\";\n return `${error.message}${stack}`;\n }\n return String(error ?? \"\");\n}\n"],"mappings":"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","names":["require"]}
@@ -1,283 +0,0 @@
1
- import {
2
- topicOverlapScore
3
- } from "./chunk-URB2WSKZ.js";
4
- import {
5
- countRecallTokenOverlap,
6
- normalizeRecallTokens
7
- } from "./chunk-DT5TVLJE.js";
8
- import {
9
- log
10
- } from "./chunk-2ODBA7MQ.js";
11
- import {
12
- assertIsoRecordedAt,
13
- assertString,
14
- isRecord,
15
- recordStoreDay
16
- } from "./chunk-DGXUHMOV.js";
17
- import {
18
- listJsonFiles,
19
- readJsonFile
20
- } from "./chunk-LPSF4OQH.js";
21
-
22
- // src/causal-chain.ts
23
- import path from "path";
24
- import { mkdir, readFile, writeFile } from "fs/promises";
25
- import { createHash } from "crypto";
26
- var STITCH_WEIGHTS = {
27
- followUpToGoal: 4,
28
- outcomeToGoal: 2,
29
- entityOverlap: 3,
30
- tagOverlap: 1.5,
31
- temporalProximity: 1
32
- };
33
- function validateCausalEdge(raw) {
34
- if (!isRecord(raw)) throw new Error("CausalEdge must be an object");
35
- if (raw.schemaVersion !== 1) throw new Error("CausalEdge.schemaVersion must be 1");
36
- const edgeType = assertString(raw.edgeType, "edgeType");
37
- const validEdgeTypes = ["follow_up_to_goal", "retry", "continuation", "correction"];
38
- if (!validEdgeTypes.includes(edgeType)) {
39
- throw new Error(`CausalEdge.edgeType must be one of ${validEdgeTypes.join(", ")}`);
40
- }
41
- const stitchMethod = assertString(raw.stitchMethod, "stitchMethod");
42
- const validMethods = ["lexical", "entity", "temporal", "explicit"];
43
- if (!validMethods.includes(stitchMethod)) {
44
- throw new Error(`CausalEdge.stitchMethod must be one of ${validMethods.join(", ")}`);
45
- }
46
- const confidence = typeof raw.confidence === "number" ? raw.confidence : 0;
47
- if (confidence < 0 || confidence > 1) throw new Error("CausalEdge.confidence must be in [0, 1]");
48
- return {
49
- schemaVersion: 1,
50
- edgeId: assertString(raw.edgeId, "edgeId"),
51
- fromTrajectoryId: assertString(raw.fromTrajectoryId, "fromTrajectoryId"),
52
- toTrajectoryId: assertString(raw.toTrajectoryId, "toTrajectoryId"),
53
- edgeType,
54
- confidence,
55
- stitchMethod,
56
- createdAt: assertIsoRecordedAt(assertString(raw.createdAt, "createdAt")),
57
- metadata: isRecord(raw.metadata) ? Object.fromEntries(
58
- Object.entries(raw.metadata).filter(
59
- (entry) => typeof entry[1] === "string"
60
- )
61
- ) : void 0
62
- };
63
- }
64
- function makeEdgeId(fromId, toId) {
65
- const digest = createHash("sha256").update(`${fromId}\0${toId}`).digest("hex").slice(0, 12);
66
- return `edge-${digest}`;
67
- }
68
- function resolveChainsDir(memoryDir, causalTrajectoryStoreDir) {
69
- const root = causalTrajectoryStoreDir ? path.join(memoryDir, causalTrajectoryStoreDir) : path.join(memoryDir, "state", "causal-trajectories");
70
- return path.join(root, "chains");
71
- }
72
- function chainIndexPath(chainsDir) {
73
- return path.join(chainsDir, "chain-index.json");
74
- }
75
- function edgeFilePath(chainsDir, edge) {
76
- const day = recordStoreDay(edge.createdAt);
77
- return path.join(chainsDir, "edges", day, `${edge.edgeId}.json`);
78
- }
79
- async function readChainIndex(chainsDir) {
80
- try {
81
- const raw = JSON.parse(await readFile(chainIndexPath(chainsDir), "utf8"));
82
- return {
83
- outgoing: isRecord(raw.outgoing) ? raw.outgoing : {},
84
- incoming: isRecord(raw.incoming) ? raw.incoming : {},
85
- edges: isRecord(raw.edges) ? raw.edges : {},
86
- updatedAt: typeof raw.updatedAt === "string" ? raw.updatedAt : (/* @__PURE__ */ new Date()).toISOString()
87
- };
88
- } catch {
89
- return { outgoing: {}, incoming: {}, edges: {}, updatedAt: (/* @__PURE__ */ new Date()).toISOString() };
90
- }
91
- }
92
- async function writeChainIndex(chainsDir, index) {
93
- await mkdir(chainsDir, { recursive: true });
94
- index.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
95
- await writeFile(chainIndexPath(chainsDir), JSON.stringify(index, null, 2), "utf8");
96
- }
97
- async function persistEdge(chainsDir, edge) {
98
- const filePath = edgeFilePath(chainsDir, edge);
99
- await mkdir(path.dirname(filePath), { recursive: true });
100
- await writeFile(filePath, JSON.stringify(edge, null, 2), "utf8");
101
- return filePath;
102
- }
103
- function addEdgeToIndex(index, edge) {
104
- if (!index.outgoing[edge.fromTrajectoryId]) {
105
- index.outgoing[edge.fromTrajectoryId] = [];
106
- }
107
- if (!index.outgoing[edge.fromTrajectoryId].includes(edge.edgeId)) {
108
- index.outgoing[edge.fromTrajectoryId].push(edge.edgeId);
109
- }
110
- if (!index.incoming[edge.toTrajectoryId]) {
111
- index.incoming[edge.toTrajectoryId] = [];
112
- }
113
- if (!index.incoming[edge.toTrajectoryId].includes(edge.edgeId)) {
114
- index.incoming[edge.toTrajectoryId].push(edge.edgeId);
115
- }
116
- index.edges[edge.edgeId] = edge;
117
- }
118
- function scoreStitchCandidate(newTrajectory, candidate) {
119
- let score = 0;
120
- let dominantMethod = "lexical";
121
- let maxComponent = 0;
122
- const newFollowUpTokens = new Set(
123
- normalizeRecallTokens(newTrajectory.followUpSummary ?? "", [])
124
- );
125
- const candidateGoalTokens = normalizeRecallTokens(candidate.goal, []);
126
- if (newFollowUpTokens.size > 0 && candidateGoalTokens.length > 0) {
127
- const overlap = countRecallTokenOverlap(newFollowUpTokens, candidate.goal, []);
128
- const normalized = overlap / Math.max(newFollowUpTokens.size, candidateGoalTokens.length);
129
- const component = normalized * STITCH_WEIGHTS.followUpToGoal;
130
- score += component;
131
- if (component > maxComponent) {
132
- maxComponent = component;
133
- dominantMethod = "lexical";
134
- }
135
- }
136
- const candidateFollowUpTokens = new Set(
137
- normalizeRecallTokens(candidate.followUpSummary ?? "", [])
138
- );
139
- const newGoalTokens = normalizeRecallTokens(newTrajectory.goal, []);
140
- if (candidateFollowUpTokens.size > 0 && newGoalTokens.length > 0) {
141
- const overlap = countRecallTokenOverlap(candidateFollowUpTokens, newTrajectory.goal, []);
142
- const normalized = overlap / Math.max(candidateFollowUpTokens.size, newGoalTokens.length);
143
- const component = normalized * 3;
144
- score += component;
145
- if (component > maxComponent) {
146
- maxComponent = component;
147
- dominantMethod = "lexical";
148
- }
149
- }
150
- const newOutcomeTokens = new Set(
151
- normalizeRecallTokens(newTrajectory.outcomeSummary, [])
152
- );
153
- if (newOutcomeTokens.size > 0) {
154
- const overlap = countRecallTokenOverlap(newOutcomeTokens, candidate.goal, []);
155
- const normalized = overlap / Math.max(newOutcomeTokens.size, candidateGoalTokens.length || 1);
156
- const component = normalized * STITCH_WEIGHTS.outcomeToGoal;
157
- score += component;
158
- if (component > maxComponent) {
159
- maxComponent = component;
160
- dominantMethod = "lexical";
161
- }
162
- }
163
- const newEntities = newTrajectory.entityRefs ?? [];
164
- const candidateEntities = candidate.entityRefs ?? [];
165
- if (newEntities.length > 0 && candidateEntities.length > 0) {
166
- const entityJaccard = topicOverlapScore(newEntities, candidateEntities);
167
- const component = entityJaccard * STITCH_WEIGHTS.entityOverlap;
168
- score += component;
169
- if (component > maxComponent) {
170
- maxComponent = component;
171
- dominantMethod = "entity";
172
- }
173
- }
174
- const newTags = newTrajectory.tags ?? [];
175
- const candidateTags = candidate.tags ?? [];
176
- if (newTags.length > 0 && candidateTags.length > 0) {
177
- const tagJaccard = topicOverlapScore(newTags, candidateTags);
178
- const component = tagJaccard * STITCH_WEIGHTS.tagOverlap;
179
- score += component;
180
- if (component > maxComponent) {
181
- maxComponent = component;
182
- dominantMethod = "lexical";
183
- }
184
- }
185
- const newMs = Date.parse(newTrajectory.recordedAt);
186
- const candidateMs = Date.parse(candidate.recordedAt);
187
- if (Number.isFinite(newMs) && Number.isFinite(candidateMs)) {
188
- const gapHours = Math.abs(newMs - candidateMs) / 36e5;
189
- const proximity = 1 / (1 + gapHours / 24);
190
- const component = proximity * STITCH_WEIGHTS.temporalProximity;
191
- score += component;
192
- if (component > maxComponent) {
193
- maxComponent = component;
194
- dominantMethod = "temporal";
195
- }
196
- }
197
- let edgeType = "continuation";
198
- const goalTokens = new Set(normalizeRecallTokens(newTrajectory.goal, []));
199
- const candidateGoalSet = new Set(candidateGoalTokens);
200
- const goalOverlap = [...goalTokens].filter((t) => candidateGoalSet.has(t)).length;
201
- const goalSimilarity = goalTokens.size > 0 ? goalOverlap / goalTokens.size : 0;
202
- if (goalSimilarity > 0.7 && candidate.outcomeKind === "failure") {
203
- edgeType = "retry";
204
- } else if (goalSimilarity > 0.7 && newTrajectory.outcomeKind !== candidate.outcomeKind) {
205
- edgeType = "correction";
206
- } else if (newFollowUpTokens.size > 0 && candidateGoalTokens.length > 0) {
207
- const followUpGoalOverlap = countRecallTokenOverlap(newFollowUpTokens, candidate.goal, []);
208
- if (followUpGoalOverlap > 0) {
209
- edgeType = "follow_up_to_goal";
210
- }
211
- }
212
- return { trajectory: candidate, score, edgeType, stitchMethod: dominantMethod };
213
- }
214
- async function readRecentTrajectories(memoryDir, causalTrajectoryStoreDir, currentSessionKey, lookbackDays) {
215
- const root = causalTrajectoryStoreDir ? path.join(memoryDir, causalTrajectoryStoreDir) : path.join(memoryDir, "state", "causal-trajectories");
216
- const trajectoriesDir = path.join(root, "trajectories");
217
- const files = await listJsonFiles(trajectoriesDir).catch(() => []);
218
- if (files.length === 0) return [];
219
- const cutoff = Date.now() - lookbackDays * 864e5;
220
- const results = [];
221
- for (const filePath of files) {
222
- try {
223
- const raw = await readJsonFile(filePath);
224
- if (!isRecord(raw)) continue;
225
- const sessionKey = typeof raw.sessionKey === "string" ? raw.sessionKey : "";
226
- if (sessionKey === currentSessionKey) continue;
227
- const recordedAt = typeof raw.recordedAt === "string" ? raw.recordedAt : "";
228
- const ms = Date.parse(recordedAt);
229
- if (!Number.isFinite(ms) || ms < cutoff) continue;
230
- results.push(raw);
231
- } catch {
232
- }
233
- }
234
- return results;
235
- }
236
- async function stitchCausalChain(options) {
237
- const { memoryDir, causalTrajectoryStoreDir, newTrajectory, config: stitchConfig } = options;
238
- const chainsDir = resolveChainsDir(memoryDir, causalTrajectoryStoreDir);
239
- const candidates = await readRecentTrajectories(
240
- memoryDir,
241
- causalTrajectoryStoreDir,
242
- newTrajectory.sessionKey,
243
- stitchConfig.lookbackDays
244
- );
245
- if (candidates.length === 0) return [];
246
- const scored = candidates.map((c) => scoreStitchCandidate(newTrajectory, c)).filter((s) => s.score >= stitchConfig.minScore).sort((a, b) => b.score - a.score).slice(0, stitchConfig.maxEdgesPerTrajectory);
247
- if (scored.length === 0) return [];
248
- const index = await readChainIndex(chainsDir);
249
- const newEdges = [];
250
- for (const candidate of scored) {
251
- const edgeId = makeEdgeId(candidate.trajectory.trajectoryId, newTrajectory.trajectoryId);
252
- if (index.edges[edgeId]) continue;
253
- const edge = {
254
- schemaVersion: 1,
255
- edgeId,
256
- fromTrajectoryId: candidate.trajectory.trajectoryId,
257
- toTrajectoryId: newTrajectory.trajectoryId,
258
- edgeType: candidate.edgeType,
259
- confidence: Math.min(1, candidate.score / 10),
260
- stitchMethod: candidate.stitchMethod,
261
- createdAt: (/* @__PURE__ */ new Date()).toISOString()
262
- };
263
- addEdgeToIndex(index, edge);
264
- await persistEdge(chainsDir, edge);
265
- newEdges.push(edge);
266
- }
267
- if (newEdges.length > 0) {
268
- await writeChainIndex(chainsDir, index);
269
- log.debug(`[cmc] stitched ${newEdges.length} causal edge(s) for trajectory ${newTrajectory.trajectoryId}`);
270
- }
271
- return newEdges;
272
- }
273
-
274
- export {
275
- validateCausalEdge,
276
- makeEdgeId,
277
- resolveChainsDir,
278
- readChainIndex,
279
- writeChainIndex,
280
- scoreStitchCandidate,
281
- stitchCausalChain
282
- };
283
- //# sourceMappingURL=chunk-XMHBH5H6.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/causal-chain.ts"],"sourcesContent":["/**\n * causal-chain.ts — Cross-session causal chain persistence for CMC.\n *\n * Stitches causal trajectories across session boundaries by detecting\n * when a trajectory in one session follows up on a trajectory from\n * another session. Persists edges in a graph index for later retrieval.\n */\n\nimport path from \"node:path\";\nimport { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { createHash } from \"node:crypto\";\nimport { listJsonFiles, readJsonFile } from \"./json-store.js\";\nimport type { CausalTrajectoryRecord } from \"./causal-trajectory.js\";\nimport { topicOverlapScore } from \"./boxes.js\";\nimport { countRecallTokenOverlap, normalizeRecallTokens } from \"./recall-tokenization.js\";\nimport {\n assertIsoRecordedAt,\n assertString,\n isRecord,\n recordStoreDay,\n} from \"./store-contract.js\";\nimport { log } from \"./logger.js\";\n\n// ─── Types ───────────────────────────────────────────────────────────────────\n\nexport interface CausalEdge {\n schemaVersion: 1;\n edgeId: string;\n fromTrajectoryId: string;\n toTrajectoryId: string;\n edgeType: \"follow_up_to_goal\" | \"retry\" | \"continuation\" | \"correction\";\n confidence: number;\n stitchMethod: \"lexical\" | \"entity\" | \"temporal\" | \"explicit\";\n createdAt: string;\n metadata?: Record<string, string>;\n}\n\nexport interface CausalChainIndex {\n outgoing: Record<string, string[]>;\n incoming: Record<string, string[]>;\n edges: Record<string, CausalEdge>;\n updatedAt: string;\n}\n\nexport interface StitchConfig {\n lookbackDays: number;\n minScore: number;\n maxEdgesPerTrajectory: number;\n}\n\nexport interface StitchCandidate {\n trajectory: CausalTrajectoryRecord;\n score: number;\n edgeType: CausalEdge[\"edgeType\"];\n stitchMethod: CausalEdge[\"stitchMethod\"];\n}\n\n// ─── Scoring Weights ─────────────────────────────────────────────────────────\n\nconst STITCH_WEIGHTS = {\n followUpToGoal: 4.0,\n outcomeToGoal: 2.0,\n entityOverlap: 3.0,\n tagOverlap: 1.5,\n temporalProximity: 1.0,\n} as const;\n\n// ─── Validation ──────────────────────────────────────────────────────────────\n\nexport function validateCausalEdge(raw: unknown): CausalEdge {\n if (!isRecord(raw)) throw new Error(\"CausalEdge must be an object\");\n if (raw.schemaVersion !== 1) throw new Error(\"CausalEdge.schemaVersion must be 1\");\n\n const edgeType = assertString(raw.edgeType, \"edgeType\");\n const validEdgeTypes = [\"follow_up_to_goal\", \"retry\", \"continuation\", \"correction\"];\n if (!validEdgeTypes.includes(edgeType)) {\n throw new Error(`CausalEdge.edgeType must be one of ${validEdgeTypes.join(\", \")}`);\n }\n\n const stitchMethod = assertString(raw.stitchMethod, \"stitchMethod\");\n const validMethods = [\"lexical\", \"entity\", \"temporal\", \"explicit\"];\n if (!validMethods.includes(stitchMethod)) {\n throw new Error(`CausalEdge.stitchMethod must be one of ${validMethods.join(\", \")}`);\n }\n\n const confidence = typeof raw.confidence === \"number\" ? raw.confidence : 0;\n if (confidence < 0 || confidence > 1) throw new Error(\"CausalEdge.confidence must be in [0, 1]\");\n\n return {\n schemaVersion: 1,\n edgeId: assertString(raw.edgeId, \"edgeId\"),\n fromTrajectoryId: assertString(raw.fromTrajectoryId, \"fromTrajectoryId\"),\n toTrajectoryId: assertString(raw.toTrajectoryId, \"toTrajectoryId\"),\n edgeType: edgeType as CausalEdge[\"edgeType\"],\n confidence: confidence,\n stitchMethod: stitchMethod as CausalEdge[\"stitchMethod\"],\n createdAt: assertIsoRecordedAt(assertString(raw.createdAt, \"createdAt\")),\n metadata: isRecord(raw.metadata)\n ? Object.fromEntries(\n Object.entries(raw.metadata).filter(\n (entry): entry is [string, string] => typeof entry[1] === \"string\",\n ),\n )\n : undefined,\n };\n}\n\n// ─── Stable Edge ID ──────────────────────────────────────────────────────────\n\nexport function makeEdgeId(fromId: string, toId: string): string {\n const digest = createHash(\"sha256\")\n .update(`${fromId}\\0${toId}`)\n .digest(\"hex\")\n .slice(0, 12);\n return `edge-${digest}`;\n}\n\n// ─── Storage Paths ───────────────────────────────────────────────────────────\n\nexport function resolveChainsDir(memoryDir: string, causalTrajectoryStoreDir?: string): string {\n const root = causalTrajectoryStoreDir\n ? path.join(memoryDir, causalTrajectoryStoreDir)\n : path.join(memoryDir, \"state\", \"causal-trajectories\");\n return path.join(root, \"chains\");\n}\n\nfunction chainIndexPath(chainsDir: string): string {\n return path.join(chainsDir, \"chain-index.json\");\n}\n\nfunction edgeFilePath(chainsDir: string, edge: CausalEdge): string {\n const day = recordStoreDay(edge.createdAt);\n return path.join(chainsDir, \"edges\", day, `${edge.edgeId}.json`);\n}\n\n// ─── Chain Index CRUD ────────────────────────────────────────────────────────\n\nexport async function readChainIndex(chainsDir: string): Promise<CausalChainIndex> {\n try {\n const raw = JSON.parse(await readFile(chainIndexPath(chainsDir), \"utf8\"));\n return {\n outgoing: isRecord(raw.outgoing) ? raw.outgoing as Record<string, string[]> : {},\n incoming: isRecord(raw.incoming) ? raw.incoming as Record<string, string[]> : {},\n edges: isRecord(raw.edges) ? raw.edges as Record<string, CausalEdge> : {},\n updatedAt: typeof raw.updatedAt === \"string\" ? raw.updatedAt : new Date().toISOString(),\n };\n } catch {\n return { outgoing: {}, incoming: {}, edges: {}, updatedAt: new Date().toISOString() };\n }\n}\n\nexport async function writeChainIndex(chainsDir: string, index: CausalChainIndex): Promise<void> {\n await mkdir(chainsDir, { recursive: true });\n index.updatedAt = new Date().toISOString();\n await writeFile(chainIndexPath(chainsDir), JSON.stringify(index, null, 2), \"utf8\");\n}\n\nasync function persistEdge(chainsDir: string, edge: CausalEdge): Promise<string> {\n const filePath = edgeFilePath(chainsDir, edge);\n await mkdir(path.dirname(filePath), { recursive: true });\n await writeFile(filePath, JSON.stringify(edge, null, 2), \"utf8\");\n return filePath;\n}\n\nfunction addEdgeToIndex(index: CausalChainIndex, edge: CausalEdge): void {\n if (!index.outgoing[edge.fromTrajectoryId]) {\n index.outgoing[edge.fromTrajectoryId] = [];\n }\n if (!index.outgoing[edge.fromTrajectoryId].includes(edge.edgeId)) {\n index.outgoing[edge.fromTrajectoryId].push(edge.edgeId);\n }\n\n if (!index.incoming[edge.toTrajectoryId]) {\n index.incoming[edge.toTrajectoryId] = [];\n }\n if (!index.incoming[edge.toTrajectoryId].includes(edge.edgeId)) {\n index.incoming[edge.toTrajectoryId].push(edge.edgeId);\n }\n\n index.edges[edge.edgeId] = edge;\n}\n\n// ─── Stitching Algorithm ─────────────────────────────────────────────────────\n\n/**\n * Score how strongly a candidate trajectory from another session\n * relates to the new trajectory being recorded.\n */\nexport function scoreStitchCandidate(\n newTrajectory: CausalTrajectoryRecord,\n candidate: CausalTrajectoryRecord,\n): StitchCandidate {\n let score = 0;\n let dominantMethod: CausalEdge[\"stitchMethod\"] = \"lexical\";\n let maxComponent = 0;\n\n // 1. Follow-up → Goal match (token overlap)\n const newFollowUpTokens = new Set(\n normalizeRecallTokens(newTrajectory.followUpSummary ?? \"\", []),\n );\n const candidateGoalTokens = normalizeRecallTokens(candidate.goal, []);\n if (newFollowUpTokens.size > 0 && candidateGoalTokens.length > 0) {\n const overlap = countRecallTokenOverlap(newFollowUpTokens, candidate.goal, []);\n const normalized = overlap / Math.max(newFollowUpTokens.size, candidateGoalTokens.length);\n const component = normalized * STITCH_WEIGHTS.followUpToGoal;\n score += component;\n if (component > maxComponent) {\n maxComponent = component;\n dominantMethod = \"lexical\";\n }\n }\n\n // 1b. Candidate follow-up → New goal match (reverse direction)\n const candidateFollowUpTokens = new Set(\n normalizeRecallTokens(candidate.followUpSummary ?? \"\", []),\n );\n const newGoalTokens = normalizeRecallTokens(newTrajectory.goal, []);\n if (candidateFollowUpTokens.size > 0 && newGoalTokens.length > 0) {\n const overlap = countRecallTokenOverlap(candidateFollowUpTokens, newTrajectory.goal, []);\n const normalized = overlap / Math.max(candidateFollowUpTokens.size, newGoalTokens.length);\n const component = normalized * 3.0;\n score += component;\n if (component > maxComponent) {\n maxComponent = component;\n dominantMethod = \"lexical\";\n }\n }\n\n // 2. Outcome → Goal match\n const newOutcomeTokens = new Set(\n normalizeRecallTokens(newTrajectory.outcomeSummary, []),\n );\n if (newOutcomeTokens.size > 0) {\n const overlap = countRecallTokenOverlap(newOutcomeTokens, candidate.goal, []);\n const normalized = overlap / Math.max(newOutcomeTokens.size, candidateGoalTokens.length || 1);\n const component = normalized * STITCH_WEIGHTS.outcomeToGoal;\n score += component;\n if (component > maxComponent) {\n maxComponent = component;\n dominantMethod = \"lexical\";\n }\n }\n\n // 3. Entity overlap (Jaccard)\n const newEntities = newTrajectory.entityRefs ?? [];\n const candidateEntities = candidate.entityRefs ?? [];\n if (newEntities.length > 0 && candidateEntities.length > 0) {\n const entityJaccard = topicOverlapScore(newEntities, candidateEntities);\n const component = entityJaccard * STITCH_WEIGHTS.entityOverlap;\n score += component;\n if (component > maxComponent) {\n maxComponent = component;\n dominantMethod = \"entity\";\n }\n }\n\n // 4. Tag overlap (Jaccard)\n const newTags = newTrajectory.tags ?? [];\n const candidateTags = candidate.tags ?? [];\n if (newTags.length > 0 && candidateTags.length > 0) {\n const tagJaccard = topicOverlapScore(newTags, candidateTags);\n const component = tagJaccard * STITCH_WEIGHTS.tagOverlap;\n score += component;\n if (component > maxComponent) {\n maxComponent = component;\n dominantMethod = \"lexical\";\n }\n }\n\n // 5. Temporal proximity: 1/(1 + gapHours/24)\n const newMs = Date.parse(newTrajectory.recordedAt);\n const candidateMs = Date.parse(candidate.recordedAt);\n if (Number.isFinite(newMs) && Number.isFinite(candidateMs)) {\n const gapHours = Math.abs(newMs - candidateMs) / 3_600_000;\n const proximity = 1 / (1 + gapHours / 24);\n const component = proximity * STITCH_WEIGHTS.temporalProximity;\n score += component;\n if (component > maxComponent) {\n maxComponent = component;\n dominantMethod = \"temporal\";\n }\n }\n\n // Determine edge type by heuristic\n let edgeType: CausalEdge[\"edgeType\"] = \"continuation\";\n const goalTokens = new Set(normalizeRecallTokens(newTrajectory.goal, []));\n const candidateGoalSet = new Set(candidateGoalTokens);\n const goalOverlap = [...goalTokens].filter((t) => candidateGoalSet.has(t)).length;\n const goalSimilarity = goalTokens.size > 0 ? goalOverlap / goalTokens.size : 0;\n\n if (goalSimilarity > 0.7 && candidate.outcomeKind === \"failure\") {\n edgeType = \"retry\";\n } else if (goalSimilarity > 0.7 && newTrajectory.outcomeKind !== candidate.outcomeKind) {\n edgeType = \"correction\";\n } else if (newFollowUpTokens.size > 0 && candidateGoalTokens.length > 0) {\n const followUpGoalOverlap = countRecallTokenOverlap(newFollowUpTokens, candidate.goal, []);\n if (followUpGoalOverlap > 0) {\n edgeType = \"follow_up_to_goal\";\n }\n }\n\n return { trajectory: candidate, score, edgeType, stitchMethod: dominantMethod };\n}\n\n/**\n * Read trajectory records from the causal-trajectories store within\n * the lookback window, excluding the current session.\n */\nasync function readRecentTrajectories(\n memoryDir: string,\n causalTrajectoryStoreDir: string | undefined,\n currentSessionKey: string,\n lookbackDays: number,\n): Promise<CausalTrajectoryRecord[]> {\n const root = causalTrajectoryStoreDir\n ? path.join(memoryDir, causalTrajectoryStoreDir)\n : path.join(memoryDir, \"state\", \"causal-trajectories\");\n const trajectoriesDir = path.join(root, \"trajectories\");\n\n const files = await listJsonFiles(trajectoriesDir).catch(() => [] as string[]);\n if (files.length === 0) return [];\n\n const cutoff = Date.now() - lookbackDays * 86_400_000;\n const results: CausalTrajectoryRecord[] = [];\n\n for (const filePath of files) {\n try {\n const raw = await readJsonFile(filePath);\n if (!isRecord(raw)) continue;\n const sessionKey = typeof raw.sessionKey === \"string\" ? raw.sessionKey : \"\";\n if (sessionKey === currentSessionKey) continue;\n const recordedAt = typeof raw.recordedAt === \"string\" ? raw.recordedAt : \"\";\n const ms = Date.parse(recordedAt);\n if (!Number.isFinite(ms) || ms < cutoff) continue;\n results.push(raw as unknown as CausalTrajectoryRecord);\n } catch {\n // skip invalid files\n }\n }\n\n return results;\n}\n\n/**\n * After a new trajectory is recorded, attempt to stitch it to\n * existing trajectories from other sessions.\n */\nexport async function stitchCausalChain(options: {\n memoryDir: string;\n causalTrajectoryStoreDir?: string;\n newTrajectory: CausalTrajectoryRecord;\n config: StitchConfig;\n}): Promise<CausalEdge[]> {\n const { memoryDir, causalTrajectoryStoreDir, newTrajectory, config: stitchConfig } = options;\n const chainsDir = resolveChainsDir(memoryDir, causalTrajectoryStoreDir);\n\n const candidates = await readRecentTrajectories(\n memoryDir,\n causalTrajectoryStoreDir,\n newTrajectory.sessionKey,\n stitchConfig.lookbackDays,\n );\n\n if (candidates.length === 0) return [];\n\n const scored = candidates\n .map((c) => scoreStitchCandidate(newTrajectory, c))\n .filter((s) => s.score >= stitchConfig.minScore)\n .sort((a, b) => b.score - a.score)\n .slice(0, stitchConfig.maxEdgesPerTrajectory);\n\n if (scored.length === 0) return [];\n\n const index = await readChainIndex(chainsDir);\n const newEdges: CausalEdge[] = [];\n\n for (const candidate of scored) {\n const edgeId = makeEdgeId(candidate.trajectory.trajectoryId, newTrajectory.trajectoryId);\n\n // Skip if edge already exists\n if (index.edges[edgeId]) continue;\n\n const edge: CausalEdge = {\n schemaVersion: 1,\n edgeId,\n fromTrajectoryId: candidate.trajectory.trajectoryId,\n toTrajectoryId: newTrajectory.trajectoryId,\n edgeType: candidate.edgeType,\n confidence: Math.min(1, candidate.score / 10),\n stitchMethod: candidate.stitchMethod,\n createdAt: new Date().toISOString(),\n };\n\n addEdgeToIndex(index, edge);\n await persistEdge(chainsDir, edge);\n newEdges.push(edge);\n }\n\n if (newEdges.length > 0) {\n await writeChainIndex(chainsDir, index);\n log.debug(`[cmc] stitched ${newEdges.length} causal edge(s) for trajectory ${newTrajectory.trajectoryId}`);\n }\n\n return newEdges;\n}\n"],"mappings":"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","names":[]}