@remnic/core 1.1.12 → 1.1.14

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 +258 -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
@@ -0,0 +1,188 @@
1
+ // src/transfer/types.ts
2
+ import { z } from "zod";
3
+ var ExportManifestV1Schema = z.object({
4
+ format: z.literal("openclaw-engram-export"),
5
+ schemaVersion: z.literal(1),
6
+ createdAt: z.string(),
7
+ pluginVersion: z.string(),
8
+ includesTranscripts: z.boolean(),
9
+ files: z.array(
10
+ z.object({
11
+ path: z.string(),
12
+ sha256: z.string(),
13
+ bytes: z.number().int().nonnegative()
14
+ })
15
+ )
16
+ });
17
+ var ExportMemoryRecordV1Schema = z.object({
18
+ path: z.string(),
19
+ content: z.string()
20
+ });
21
+ var ExportBundleV1Schema = z.object({
22
+ manifest: ExportManifestV1Schema,
23
+ records: z.array(ExportMemoryRecordV1Schema)
24
+ });
25
+ var CAPSULE_ID_PATTERN = /^[A-Za-z0-9](?:[A-Za-z0-9]|-(?!-))*[A-Za-z0-9]$|^[A-Za-z0-9]$/;
26
+ var CapsuleIdSchema = z.string().min(1, "capsule.id must not be empty").max(64, "capsule.id must be 64 characters or fewer").regex(
27
+ CAPSULE_ID_PATTERN,
28
+ "capsule.id must be alphanumeric with single dashes (no spaces, no leading/trailing dashes)"
29
+ );
30
+ var SemverLikeSchema = z.string().min(1, "capsule.version must not be empty").regex(
31
+ /^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/,
32
+ "capsule.version must be a semver-like string (e.g. 1.0.0)"
33
+ );
34
+ function isSafePosixRelativePathPrefix(value) {
35
+ if (value.startsWith("/") || value.includes("\\")) return false;
36
+ const segments = value.split("/");
37
+ return segments.every((segment) => segment !== "" && segment !== "." && segment !== "..");
38
+ }
39
+ var CapsuleRetrievalPolicySchema = z.object({
40
+ /**
41
+ * Per-tier weight overrides applied during recall when the capsule is the
42
+ * active scope. Keys are tier names (e.g. `bm25`, `vector`, `graph`); values
43
+ * are non-negative finite multipliers. The set of valid keys is left open
44
+ * for now so future tiers do not break older manifests.
45
+ */
46
+ tierWeights: z.record(
47
+ z.string().min(1),
48
+ z.number().finite().nonnegative()
49
+ ),
50
+ /**
51
+ * Whether the direct-answer fast path is allowed when this capsule is
52
+ * active. Operators may disable it for capsules whose contents should
53
+ * always flow through the full retrieval pipeline.
54
+ */
55
+ directAnswerEnabled: z.boolean()
56
+ });
57
+ var CapsuleIncludesSchema = z.object({
58
+ taxonomy: z.boolean(),
59
+ identityAnchors: z.boolean(),
60
+ peerProfiles: z.boolean(),
61
+ procedural: z.boolean()
62
+ });
63
+ var CapsuleParentSchema = z.object({
64
+ capsuleId: CapsuleIdSchema,
65
+ version: SemverLikeSchema,
66
+ /**
67
+ * Posix-relative path prefix under the fork's memory root where the parent
68
+ * capsule's records were placed. Typically `forks/<parent-capsule-id>`.
69
+ * Must be a non-empty string with no leading slash.
70
+ */
71
+ forkRoot: z.string().min(1, "capsule.parent.forkRoot must not be empty").refine(isSafePosixRelativePathPrefix, {
72
+ message: "capsule.parent.forkRoot must be a normalized posix-relative path with no traversal segments"
73
+ })
74
+ });
75
+ var CapsuleBlockSchema = z.object({
76
+ id: CapsuleIdSchema,
77
+ version: SemverLikeSchema,
78
+ /**
79
+ * Taxonomy schema version the capsule was authored against. Free-form for
80
+ * now; later PRs may tighten this to a known taxonomy registry.
81
+ */
82
+ schemaVersion: z.string().min(1, "capsule.schemaVersion must not be empty"),
83
+ /**
84
+ * Optional reference to the parent capsule this one was forked or derived
85
+ * from. `null` (not `undefined`) is the explicit "no parent" sentinel so
86
+ * that round-trips through JSON do not silently drop the field.
87
+ *
88
+ * @deprecated Prefer {@link parent} (structured). This field is preserved
89
+ * for backward compatibility with V2 manifests written before PR 4/6.
90
+ */
91
+ parentCapsule: z.string().min(1).nullable(),
92
+ /**
93
+ * Structured fork-lineage pointer added in PR 4/6. When present, this
94
+ * capsule is a fork of the described parent. `null` is the explicit
95
+ * "not a fork" sentinel — round-trips through JSON cleanly without
96
+ * silently dropping the field.
97
+ *
98
+ * Defaults to `null` so that V2 manifests written before PR 4/6 (which
99
+ * omit this field) still parse without error. This preserves backward
100
+ * compatibility with the existing `makeV2Manifest()` test fixtures and
101
+ * any in-the-wild V2 archives produced by PR 2/6 and PR 3/6.
102
+ *
103
+ * Invariant: when `parent` is non-null, `parentCapsule` SHOULD equal
104
+ * `parent.capsuleId` for backward compatibility with readers that only
105
+ * understand the legacy field. `forkCapsule()` sets both.
106
+ */
107
+ parent: CapsuleParentSchema.nullable().default(null),
108
+ description: z.string(),
109
+ retrievalPolicy: CapsuleRetrievalPolicySchema,
110
+ includes: CapsuleIncludesSchema
111
+ });
112
+ var ExportManifestV2Schema = z.object({
113
+ format: z.literal("openclaw-engram-export"),
114
+ schemaVersion: z.literal(2),
115
+ createdAt: z.string(),
116
+ pluginVersion: z.string(),
117
+ includesTranscripts: z.boolean(),
118
+ files: z.array(
119
+ z.object({
120
+ path: z.string(),
121
+ sha256: z.string(),
122
+ bytes: z.number().int().nonnegative()
123
+ })
124
+ ),
125
+ capsule: CapsuleBlockSchema
126
+ });
127
+ var ExportBundleV2Schema = z.object({
128
+ manifest: ExportManifestV2Schema,
129
+ records: z.array(ExportMemoryRecordV1Schema)
130
+ });
131
+ function parseExportManifest(input) {
132
+ const version = typeof input === "object" && input !== null ? input.schemaVersion : void 0;
133
+ if (version === 2) {
134
+ const manifest = ExportManifestV2Schema.parse(input);
135
+ return {
136
+ capsuleVersion: 2,
137
+ manifest,
138
+ capsule: manifest.capsule
139
+ };
140
+ }
141
+ if (version === 1) {
142
+ const manifest = ExportManifestV1Schema.parse(input);
143
+ return { capsuleVersion: 1, manifest, capsule: null };
144
+ }
145
+ const v1 = ExportManifestV1Schema.safeParse(input);
146
+ if (v1.success) {
147
+ return { capsuleVersion: 1, manifest: v1.data, capsule: null };
148
+ }
149
+ const v2 = ExportManifestV2Schema.safeParse(input);
150
+ if (v2.success) {
151
+ return {
152
+ capsuleVersion: 2,
153
+ manifest: v2.data,
154
+ capsule: v2.data.capsule
155
+ };
156
+ }
157
+ throw v2.error;
158
+ }
159
+ function parseExportBundle(input) {
160
+ if (typeof input !== "object" || input === null) {
161
+ ExportBundleV1Schema.parse(input);
162
+ throw new Error("unreachable");
163
+ }
164
+ const manifestRaw = input.manifest;
165
+ const normalized = parseExportManifest(manifestRaw);
166
+ if (normalized.capsuleVersion === 2) {
167
+ const bundle2 = ExportBundleV2Schema.parse(input);
168
+ return { capsuleVersion: 2, bundle: bundle2, capsule: bundle2.manifest.capsule };
169
+ }
170
+ const bundle = ExportBundleV1Schema.parse(input);
171
+ return { capsuleVersion: 1, bundle, capsule: null };
172
+ }
173
+
174
+ export {
175
+ ExportManifestV1Schema,
176
+ ExportMemoryRecordV1Schema,
177
+ ExportBundleV1Schema,
178
+ CAPSULE_ID_PATTERN,
179
+ CapsuleRetrievalPolicySchema,
180
+ CapsuleIncludesSchema,
181
+ CapsuleParentSchema,
182
+ CapsuleBlockSchema,
183
+ ExportManifestV2Schema,
184
+ ExportBundleV2Schema,
185
+ parseExportManifest,
186
+ parseExportBundle
187
+ };
188
+ //# sourceMappingURL=chunk-WEHSQBFR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/transfer/types.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const ExportManifestV1Schema = z.object({\n format: z.literal(\"openclaw-engram-export\"),\n schemaVersion: z.literal(1),\n createdAt: z.string(),\n pluginVersion: z.string(),\n includesTranscripts: z.boolean(),\n files: z.array(\n z.object({\n path: z.string(),\n sha256: z.string(),\n bytes: z.number().int().nonnegative(),\n }),\n ),\n});\n\nexport type ExportManifestV1 = z.infer<typeof ExportManifestV1Schema>;\n\nexport const ExportMemoryRecordV1Schema = z.object({\n path: z.string(),\n content: z.string(),\n});\n\nexport type ExportMemoryRecordV1 = z.infer<typeof ExportMemoryRecordV1Schema>;\n\nexport const ExportBundleV1Schema = z.object({\n manifest: ExportManifestV1Schema,\n records: z.array(ExportMemoryRecordV1Schema),\n});\n\nexport type ExportBundleV1 = z.infer<typeof ExportBundleV1Schema>;\n\n// ---------------------------------------------------------------------------\n// V2 capsule manifest (issue #676 PR 1/6)\n// ---------------------------------------------------------------------------\n//\n// The V2 manifest extends V1 with a `capsule` block describing a reusable,\n// shareable bundle of memory state (\"capsule\"). This PR introduces ONLY the\n// schema and a backward-compatible reader. Actual export/import pipelines and\n// CLI surfaces are deferred to subsequent PRs (2/6 through 6/6).\n\n/**\n * Allowed pattern for a user-chosen capsule id.\n *\n * - lowercase or uppercase alphanumerics and dashes\n * - must start and end with an alphanumeric (no leading/trailing dashes)\n * - no consecutive dashes\n * - 1..64 characters\n *\n * The constraints are intentionally narrow so capsule ids round-trip cleanly\n * through filesystem paths, URLs, and registry slugs without escaping.\n */\nexport const CAPSULE_ID_PATTERN = /^[A-Za-z0-9](?:[A-Za-z0-9]|-(?!-))*[A-Za-z0-9]$|^[A-Za-z0-9]$/;\n\nconst CapsuleIdSchema = z\n .string()\n .min(1, \"capsule.id must not be empty\")\n .max(64, \"capsule.id must be 64 characters or fewer\")\n .regex(\n CAPSULE_ID_PATTERN,\n \"capsule.id must be alphanumeric with single dashes (no spaces, no leading/trailing dashes)\",\n );\n\n/**\n * Permissive semver-ish validator. We accept the common subset\n * `MAJOR.MINOR.PATCH` with optional pre-release / build suffixes. This is\n * intentionally looser than full semver 2.0 so capsule authors can use simple\n * versions like `1.0.0` or `0.1.0-rc.1` without pulling in a parser.\n */\nconst SemverLikeSchema = z\n .string()\n .min(1, \"capsule.version must not be empty\")\n .regex(\n /^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?(?:\\+[0-9A-Za-z.-]+)?$/,\n \"capsule.version must be a semver-like string (e.g. 1.0.0)\",\n );\n\nfunction isSafePosixRelativePathPrefix(value: string): boolean {\n if (value.startsWith(\"/\") || value.includes(\"\\\\\")) return false;\n const segments = value.split(\"/\");\n return segments.every((segment) => segment !== \"\" && segment !== \".\" && segment !== \"..\");\n}\n\nexport const CapsuleRetrievalPolicySchema = z.object({\n /**\n * Per-tier weight overrides applied during recall when the capsule is the\n * active scope. Keys are tier names (e.g. `bm25`, `vector`, `graph`); values\n * are non-negative finite multipliers. The set of valid keys is left open\n * for now so future tiers do not break older manifests.\n */\n tierWeights: z.record(\n z.string().min(1),\n z.number().finite().nonnegative(),\n ),\n /**\n * Whether the direct-answer fast path is allowed when this capsule is\n * active. Operators may disable it for capsules whose contents should\n * always flow through the full retrieval pipeline.\n */\n directAnswerEnabled: z.boolean(),\n});\n\nexport type CapsuleRetrievalPolicy = z.infer<typeof CapsuleRetrievalPolicySchema>;\n\nexport const CapsuleIncludesSchema = z.object({\n taxonomy: z.boolean(),\n identityAnchors: z.boolean(),\n peerProfiles: z.boolean(),\n procedural: z.boolean(),\n});\n\nexport type CapsuleIncludes = z.infer<typeof CapsuleIncludesSchema>;\n\n/**\n * Structured linkage to the capsule that was forked to produce this one.\n *\n * - `capsuleId` — the `id` field from the parent capsule's manifest block.\n * - `version` — the `version` field from the parent capsule's manifest block\n * at the time the fork was taken.\n * - `forkRoot` — the posix-relative directory prefix under which the parent's\n * records were planted inside the fork's memory root, e.g.\n * `forks/parent-id`. Stored here so downstream tooling can\n * locate the imported parent tree without re-parsing paths.\n */\nexport const CapsuleParentSchema = z.object({\n capsuleId: CapsuleIdSchema,\n version: SemverLikeSchema,\n /**\n * Posix-relative path prefix under the fork's memory root where the parent\n * capsule's records were placed. Typically `forks/<parent-capsule-id>`.\n * Must be a non-empty string with no leading slash.\n */\n forkRoot: z\n .string()\n .min(1, \"capsule.parent.forkRoot must not be empty\")\n .refine(isSafePosixRelativePathPrefix, {\n message:\n \"capsule.parent.forkRoot must be a normalized posix-relative path with no traversal segments\",\n }),\n});\n\nexport type CapsuleParent = z.infer<typeof CapsuleParentSchema>;\n\nexport const CapsuleBlockSchema = z.object({\n id: CapsuleIdSchema,\n version: SemverLikeSchema,\n /**\n * Taxonomy schema version the capsule was authored against. Free-form for\n * now; later PRs may tighten this to a known taxonomy registry.\n */\n schemaVersion: z.string().min(1, \"capsule.schemaVersion must not be empty\"),\n /**\n * Optional reference to the parent capsule this one was forked or derived\n * from. `null` (not `undefined`) is the explicit \"no parent\" sentinel so\n * that round-trips through JSON do not silently drop the field.\n *\n * @deprecated Prefer {@link parent} (structured). This field is preserved\n * for backward compatibility with V2 manifests written before PR 4/6.\n */\n parentCapsule: z.string().min(1).nullable(),\n /**\n * Structured fork-lineage pointer added in PR 4/6. When present, this\n * capsule is a fork of the described parent. `null` is the explicit\n * \"not a fork\" sentinel — round-trips through JSON cleanly without\n * silently dropping the field.\n *\n * Defaults to `null` so that V2 manifests written before PR 4/6 (which\n * omit this field) still parse without error. This preserves backward\n * compatibility with the existing `makeV2Manifest()` test fixtures and\n * any in-the-wild V2 archives produced by PR 2/6 and PR 3/6.\n *\n * Invariant: when `parent` is non-null, `parentCapsule` SHOULD equal\n * `parent.capsuleId` for backward compatibility with readers that only\n * understand the legacy field. `forkCapsule()` sets both.\n */\n parent: CapsuleParentSchema.nullable().default(null),\n description: z.string(),\n retrievalPolicy: CapsuleRetrievalPolicySchema,\n includes: CapsuleIncludesSchema,\n});\n\nexport type CapsuleBlock = z.infer<typeof CapsuleBlockSchema>;\n\nexport const ExportManifestV2Schema = z.object({\n format: z.literal(\"openclaw-engram-export\"),\n schemaVersion: z.literal(2),\n createdAt: z.string(),\n pluginVersion: z.string(),\n includesTranscripts: z.boolean(),\n files: z.array(\n z.object({\n path: z.string(),\n sha256: z.string(),\n bytes: z.number().int().nonnegative(),\n }),\n ),\n capsule: CapsuleBlockSchema,\n});\n\nexport type ExportManifestV2 = z.infer<typeof ExportManifestV2Schema>;\n\nexport const ExportBundleV2Schema = z.object({\n manifest: ExportManifestV2Schema,\n records: z.array(ExportMemoryRecordV1Schema),\n});\n\nexport type ExportBundleV2 = z.infer<typeof ExportBundleV2Schema>;\n\n// ---------------------------------------------------------------------------\n// Backward-compatible reader\n// ---------------------------------------------------------------------------\n\nexport type AnyExportManifest = ExportManifestV1 | ExportManifestV2;\nexport type AnyExportBundle = ExportBundleV1 | ExportBundleV2;\n\n/**\n * Normalized form returned by {@link parseExportManifest}. Callers that don't\n * care about the wire-format version can branch on `capsuleVersion` (1 or 2)\n * and trust that V1 manifests surface as `{ capsuleVersion: 1, capsule: null }`.\n */\nexport interface NormalizedExportManifest {\n capsuleVersion: 1 | 2;\n manifest: AnyExportManifest;\n capsule: CapsuleBlock | null;\n}\n\n/**\n * Parse an unknown manifest payload as either V1 or V2.\n *\n * Dispatch is driven by `schemaVersion` so we surface the most relevant\n * validation error per branch. If `schemaVersion` is missing or unknown we\n * fall back to V1 first (the historical wire format) and only report the V2\n * error if both branches fail.\n */\nexport function parseExportManifest(input: unknown): NormalizedExportManifest {\n const version =\n typeof input === \"object\" && input !== null\n ? (input as { schemaVersion?: unknown }).schemaVersion\n : undefined;\n\n if (version === 2) {\n const manifest = ExportManifestV2Schema.parse(input);\n return {\n capsuleVersion: 2,\n manifest,\n capsule: manifest.capsule,\n };\n }\n\n if (version === 1) {\n const manifest = ExportManifestV1Schema.parse(input);\n return { capsuleVersion: 1, manifest, capsule: null };\n }\n\n // Unknown / missing schemaVersion: try V1 then V2 so the reader stays\n // forgiving for hand-authored payloads but still produces a clear error.\n const v1 = ExportManifestV1Schema.safeParse(input);\n if (v1.success) {\n return { capsuleVersion: 1, manifest: v1.data, capsule: null };\n }\n const v2 = ExportManifestV2Schema.safeParse(input);\n if (v2.success) {\n return {\n capsuleVersion: 2,\n manifest: v2.data,\n capsule: v2.data.capsule,\n };\n }\n // Surface the V2 error since callers introducing capsules likely care most\n // about that branch's diagnostics.\n throw v2.error;\n}\n\n/**\n * Convenience: parse a full bundle (manifest + records) accepting either V1\n * or V2 manifests. Records currently share the V1 shape across both versions.\n */\nexport function parseExportBundle(input: unknown): {\n capsuleVersion: 1 | 2;\n bundle: AnyExportBundle;\n capsule: CapsuleBlock | null;\n} {\n if (typeof input !== \"object\" || input === null) {\n // Defer to V1 schema so the user sees a familiar zod error.\n ExportBundleV1Schema.parse(input);\n throw new Error(\"unreachable\");\n }\n const manifestRaw = (input as { manifest?: unknown }).manifest;\n const normalized = parseExportManifest(manifestRaw);\n if (normalized.capsuleVersion === 2) {\n const bundle = ExportBundleV2Schema.parse(input);\n return { capsuleVersion: 2, bundle, capsule: bundle.manifest.capsule };\n }\n const bundle = ExportBundleV1Schema.parse(input);\n return { capsuleVersion: 1, bundle, capsule: null };\n}\n"],"mappings":"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","names":["bundle"]}
@@ -0,0 +1,380 @@
1
+ import {
2
+ isErrnoCode
3
+ } from "./chunk-5UZXUTVO.js";
4
+
5
+ // src/work/storage.ts
6
+ import path from "path";
7
+ import { randomUUID } from "crypto";
8
+ import { mkdir, readdir, readFile, rm, writeFile } from "fs/promises";
9
+ var TASK_TRANSITIONS = {
10
+ todo: /* @__PURE__ */ new Set(["in_progress", "blocked", "cancelled"]),
11
+ in_progress: /* @__PURE__ */ new Set(["todo", "blocked", "done", "cancelled"]),
12
+ blocked: /* @__PURE__ */ new Set(["todo", "in_progress", "cancelled"]),
13
+ done: /* @__PURE__ */ new Set(),
14
+ cancelled: /* @__PURE__ */ new Set()
15
+ };
16
+ function serializeFrontmatter(values) {
17
+ const lines = Object.entries(values).map(([k, v]) => `${k}: ${JSON.stringify(v)}`);
18
+ return `---
19
+ ${lines.join("\n")}
20
+ ---`;
21
+ }
22
+ function parseFrontmatter(raw) {
23
+ const match = raw.match(/^---\n([\s\S]*?)\n---\n?([\s\S]*)$/);
24
+ if (!match) return null;
25
+ const fm = match[1] ?? "";
26
+ const body = match[2] ?? "";
27
+ const data = {};
28
+ for (const line of fm.split("\n")) {
29
+ if (!line.trim()) continue;
30
+ const idx = line.indexOf(":");
31
+ if (idx <= 0) continue;
32
+ const key = line.slice(0, idx).trim();
33
+ const rawValue = line.slice(idx + 1).trim();
34
+ try {
35
+ data[key] = JSON.parse(rawValue);
36
+ } catch {
37
+ data[key] = rawValue;
38
+ }
39
+ }
40
+ return { data, body };
41
+ }
42
+ function toSafeSlug(value) {
43
+ let slug = value.toLowerCase().trim().replace(/[^a-z0-9]+/g, "-");
44
+ let start = 0;
45
+ while (start < slug.length && slug[start] === "-") start++;
46
+ let end = slug.length;
47
+ while (end > start && slug[end - 1] === "-") end--;
48
+ return slug.slice(start, end).slice(0, 80);
49
+ }
50
+ var WORK_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9-]{0,127}$/;
51
+ function makeId(prefix, titleOrName, now) {
52
+ const slug = toSafeSlug(titleOrName) || "item";
53
+ const nonce = randomUUID().slice(0, 8);
54
+ return `${prefix}-${now.getTime()}-${slug}-${nonce}`;
55
+ }
56
+ function assertValidWorkId(id, kind) {
57
+ if (!WORK_ID_PATTERN.test(id)) {
58
+ throw new Error(`invalid ${kind} id: ${id}`);
59
+ }
60
+ }
61
+ function ensureString(value, fallback = "") {
62
+ return typeof value === "string" ? value : fallback;
63
+ }
64
+ function ensureStringArray(value) {
65
+ if (!Array.isArray(value)) return [];
66
+ return value.filter((entry) => typeof entry === "string");
67
+ }
68
+ function ensureNullableString(value) {
69
+ return typeof value === "string" ? value : null;
70
+ }
71
+ function ensureTaskStatus(value) {
72
+ if (value === "todo" || value === "in_progress" || value === "blocked" || value === "done" || value === "cancelled") {
73
+ return value;
74
+ }
75
+ return "todo";
76
+ }
77
+ function ensureTaskPriority(value) {
78
+ if (value === "low" || value === "medium" || value === "high") return value;
79
+ return "medium";
80
+ }
81
+ function ensureProjectStatus(value) {
82
+ if (value === "active" || value === "on_hold" || value === "completed" || value === "archived") return value;
83
+ return "active";
84
+ }
85
+ var WorkStorage = class {
86
+ constructor(memoryDir) {
87
+ this.memoryDir = memoryDir;
88
+ this.tasksDir = path.join(memoryDir, "work", "tasks");
89
+ this.projectsDir = path.join(memoryDir, "work", "projects");
90
+ }
91
+ memoryDir;
92
+ tasksDir;
93
+ projectsDir;
94
+ async ensureDirectories() {
95
+ await mkdir(this.tasksDir, { recursive: true });
96
+ await mkdir(this.projectsDir, { recursive: true });
97
+ }
98
+ taskPath(id) {
99
+ assertValidWorkId(id, "task");
100
+ return path.join(this.tasksDir, `${id}.md`);
101
+ }
102
+ projectPath(id) {
103
+ assertValidWorkId(id, "project");
104
+ return path.join(this.projectsDir, `${id}.md`);
105
+ }
106
+ serializeTask(task) {
107
+ return `${serializeFrontmatter(task)}
108
+
109
+ ${task.description}
110
+ `;
111
+ }
112
+ serializeProject(project) {
113
+ return `${serializeFrontmatter(project)}
114
+
115
+ ${project.description}
116
+ `;
117
+ }
118
+ async writeNewTask(task) {
119
+ try {
120
+ await writeFile(this.taskPath(task.id), this.serializeTask(task), { encoding: "utf-8", flag: "wx" });
121
+ } catch (error) {
122
+ if (isErrnoCode(error, "EEXIST")) {
123
+ throw new Error(`task already exists: ${task.id}`);
124
+ }
125
+ throw error;
126
+ }
127
+ }
128
+ async writeNewProject(project) {
129
+ try {
130
+ await writeFile(this.projectPath(project.id), this.serializeProject(project), { encoding: "utf-8", flag: "wx" });
131
+ } catch (error) {
132
+ if (isErrnoCode(error, "EEXIST")) {
133
+ throw new Error(`project already exists: ${project.id}`);
134
+ }
135
+ throw error;
136
+ }
137
+ }
138
+ parseTask(raw) {
139
+ const parsed = parseFrontmatter(raw);
140
+ if (!parsed) return null;
141
+ const d = parsed.data;
142
+ return {
143
+ id: ensureString(d.id),
144
+ title: ensureString(d.title),
145
+ description: ensureString(d.description, parsed.body.trim()),
146
+ status: ensureTaskStatus(d.status),
147
+ priority: ensureTaskPriority(d.priority),
148
+ owner: ensureNullableString(d.owner),
149
+ assignee: ensureNullableString(d.assignee),
150
+ projectId: ensureNullableString(d.projectId),
151
+ tags: ensureStringArray(d.tags),
152
+ dueAt: ensureNullableString(d.dueAt),
153
+ createdAt: ensureString(d.createdAt),
154
+ updatedAt: ensureString(d.updatedAt)
155
+ };
156
+ }
157
+ parseProject(raw) {
158
+ const parsed = parseFrontmatter(raw);
159
+ if (!parsed) return null;
160
+ const d = parsed.data;
161
+ return {
162
+ id: ensureString(d.id),
163
+ name: ensureString(d.name),
164
+ description: ensureString(d.description, parsed.body.trim()),
165
+ status: ensureProjectStatus(d.status),
166
+ owner: ensureNullableString(d.owner),
167
+ tags: ensureStringArray(d.tags),
168
+ taskIds: ensureStringArray(d.taskIds),
169
+ createdAt: ensureString(d.createdAt),
170
+ updatedAt: ensureString(d.updatedAt)
171
+ };
172
+ }
173
+ async createTask(input, now = /* @__PURE__ */ new Date()) {
174
+ await this.ensureDirectories();
175
+ const timestamp = now.toISOString();
176
+ const task = {
177
+ id: input.id ?? makeId("task", input.title, now),
178
+ title: input.title,
179
+ description: input.description ?? "",
180
+ status: input.status ?? "todo",
181
+ priority: input.priority ?? "medium",
182
+ owner: input.owner ?? null,
183
+ assignee: input.assignee ?? null,
184
+ projectId: input.projectId ?? null,
185
+ tags: input.tags ?? [],
186
+ dueAt: input.dueAt ?? null,
187
+ createdAt: timestamp,
188
+ updatedAt: timestamp
189
+ };
190
+ if (task.projectId) {
191
+ const project = await this.getProject(task.projectId);
192
+ if (!project) {
193
+ throw new Error(`project not found: ${task.projectId}`);
194
+ }
195
+ }
196
+ await this.writeNewTask(task);
197
+ if (task.projectId) {
198
+ await this.addTaskIdToProject(task.projectId, task.id, now);
199
+ }
200
+ return task;
201
+ }
202
+ async getTask(id) {
203
+ try {
204
+ const raw = await readFile(this.taskPath(id), "utf-8");
205
+ return this.parseTask(raw);
206
+ } catch {
207
+ return null;
208
+ }
209
+ }
210
+ async listTasks(filter) {
211
+ await this.ensureDirectories();
212
+ const entries = await readdir(this.tasksDir, { withFileTypes: true });
213
+ const out = [];
214
+ for (const entry of entries) {
215
+ if (!entry.isFile() || !entry.name.endsWith(".md")) continue;
216
+ const raw = await readFile(path.join(this.tasksDir, entry.name), "utf-8");
217
+ const task = this.parseTask(raw);
218
+ if (!task) continue;
219
+ if (filter?.status && task.status !== filter.status) continue;
220
+ if (filter?.owner && task.owner !== filter.owner) continue;
221
+ if (filter?.assignee && task.assignee !== filter.assignee) continue;
222
+ if (filter?.projectId && task.projectId !== filter.projectId) continue;
223
+ out.push(task);
224
+ }
225
+ out.sort((a, b) => a.createdAt.localeCompare(b.createdAt));
226
+ return out;
227
+ }
228
+ async updateTask(id, patch, now = /* @__PURE__ */ new Date(), options) {
229
+ const existing = await this.getTask(id);
230
+ if (!existing) return null;
231
+ const projectIdPatched = Object.prototype.hasOwnProperty.call(patch, "projectId");
232
+ const statusPatched = Object.prototype.hasOwnProperty.call(patch, "status");
233
+ const nextProjectId = projectIdPatched ? patch.projectId ?? null : existing.projectId;
234
+ if (statusPatched && patch.status && existing.status !== patch.status && options?.skipStatusTransitionValidation !== true && !TASK_TRANSITIONS[existing.status].has(patch.status)) {
235
+ throw new Error(`invalid task status transition: ${existing.status} -> ${patch.status}`);
236
+ }
237
+ if (projectIdPatched && nextProjectId) {
238
+ const nextProject = await this.getProject(nextProjectId);
239
+ if (!nextProject) {
240
+ throw new Error(`project not found: ${nextProjectId}`);
241
+ }
242
+ }
243
+ if (projectIdPatched && existing.projectId !== nextProjectId) {
244
+ if (existing.projectId) {
245
+ await this.removeTaskIdFromProject(existing.projectId, id, now);
246
+ }
247
+ if (nextProjectId) {
248
+ await this.addTaskIdToProject(nextProjectId, id, now);
249
+ }
250
+ }
251
+ const next = {
252
+ ...existing,
253
+ ...patch,
254
+ projectId: nextProjectId,
255
+ tags: patch.tags ?? existing.tags,
256
+ updatedAt: now.toISOString()
257
+ };
258
+ await writeFile(this.taskPath(id), this.serializeTask(next), "utf-8");
259
+ return next;
260
+ }
261
+ async transitionTask(id, nextStatus, now = /* @__PURE__ */ new Date()) {
262
+ const existing = await this.getTask(id);
263
+ if (!existing) throw new Error(`task not found: ${id}`);
264
+ if (existing.status === nextStatus) return existing;
265
+ if (!TASK_TRANSITIONS[existing.status].has(nextStatus)) {
266
+ throw new Error(`invalid task status transition: ${existing.status} -> ${nextStatus}`);
267
+ }
268
+ const updated = await this.updateTask(id, { status: nextStatus }, now);
269
+ if (!updated) throw new Error(`task not found after update: ${id}`);
270
+ return updated;
271
+ }
272
+ async deleteTask(id) {
273
+ try {
274
+ const existing = await this.getTask(id);
275
+ await rm(this.taskPath(id));
276
+ if (existing?.projectId) {
277
+ await this.removeTaskIdFromProject(existing.projectId, id);
278
+ }
279
+ return true;
280
+ } catch {
281
+ return false;
282
+ }
283
+ }
284
+ async createProject(input, now = /* @__PURE__ */ new Date()) {
285
+ await this.ensureDirectories();
286
+ const timestamp = now.toISOString();
287
+ const project = {
288
+ id: input.id ?? makeId("project", input.name, now),
289
+ name: input.name,
290
+ description: input.description ?? "",
291
+ status: input.status ?? "active",
292
+ owner: input.owner ?? null,
293
+ tags: input.tags ?? [],
294
+ taskIds: [],
295
+ createdAt: timestamp,
296
+ updatedAt: timestamp
297
+ };
298
+ await this.writeNewProject(project);
299
+ return project;
300
+ }
301
+ async getProject(id) {
302
+ try {
303
+ const raw = await readFile(this.projectPath(id), "utf-8");
304
+ return this.parseProject(raw);
305
+ } catch {
306
+ return null;
307
+ }
308
+ }
309
+ async listProjects() {
310
+ await this.ensureDirectories();
311
+ const entries = await readdir(this.projectsDir, { withFileTypes: true });
312
+ const out = [];
313
+ for (const entry of entries) {
314
+ if (!entry.isFile() || !entry.name.endsWith(".md")) continue;
315
+ const raw = await readFile(path.join(this.projectsDir, entry.name), "utf-8");
316
+ const project = this.parseProject(raw);
317
+ if (project) out.push(project);
318
+ }
319
+ out.sort((a, b) => a.createdAt.localeCompare(b.createdAt));
320
+ return out;
321
+ }
322
+ async updateProject(id, patch, now = /* @__PURE__ */ new Date()) {
323
+ const existing = await this.getProject(id);
324
+ if (!existing) return null;
325
+ const next = {
326
+ ...existing,
327
+ ...patch,
328
+ tags: patch.tags ?? existing.tags,
329
+ taskIds: patch.taskIds ? [...patch.taskIds].sort() : existing.taskIds,
330
+ updatedAt: now.toISOString()
331
+ };
332
+ await writeFile(this.projectPath(id), this.serializeProject(next), "utf-8");
333
+ return next;
334
+ }
335
+ async deleteProject(id) {
336
+ try {
337
+ const existing = await this.getProject(id);
338
+ if (existing) {
339
+ for (const taskId of existing.taskIds) {
340
+ await this.updateTask(taskId, { projectId: null });
341
+ }
342
+ }
343
+ await rm(this.projectPath(id));
344
+ return true;
345
+ } catch {
346
+ return false;
347
+ }
348
+ }
349
+ async linkTaskToProject(taskId, projectId, now = /* @__PURE__ */ new Date()) {
350
+ const task = await this.getTask(taskId);
351
+ if (!task) throw new Error(`task not found: ${taskId}`);
352
+ const project = await this.getProject(projectId);
353
+ if (!project) throw new Error(`project not found: ${projectId}`);
354
+ const updatedTask = await this.updateTask(taskId, { projectId }, now);
355
+ if (!updatedTask) throw new Error(`task not found after update: ${taskId}`);
356
+ const updatedProject = await this.getProject(projectId);
357
+ if (!updatedProject) throw new Error(`project not found after update: ${projectId}`);
358
+ return { task: updatedTask, project: updatedProject };
359
+ }
360
+ async removeTaskIdFromProject(projectId, taskId, now = /* @__PURE__ */ new Date()) {
361
+ const project = await this.getProject(projectId);
362
+ if (!project) return;
363
+ const filtered = project.taskIds.filter((id) => id !== taskId);
364
+ if (filtered.length === project.taskIds.length) return;
365
+ await this.updateProject(projectId, { taskIds: filtered }, now);
366
+ }
367
+ async addTaskIdToProject(projectId, taskId, now = /* @__PURE__ */ new Date()) {
368
+ const project = await this.getProject(projectId);
369
+ if (!project) return;
370
+ const taskIds = new Set(project.taskIds);
371
+ taskIds.add(taskId);
372
+ await this.updateProject(projectId, { taskIds: Array.from(taskIds) }, now);
373
+ }
374
+ };
375
+
376
+ export {
377
+ WORK_ID_PATTERN,
378
+ WorkStorage
379
+ };
380
+ //# sourceMappingURL=chunk-WELDCG6C.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/work/storage.ts"],"sourcesContent":["import path from \"node:path\";\nimport { randomUUID } from \"node:crypto\";\nimport { mkdir, readdir, readFile, rm, writeFile } from \"node:fs/promises\";\nimport type {\n CreateWorkProjectInput,\n CreateWorkTaskInput,\n UpdateWorkProjectInput,\n UpdateWorkTaskInput,\n WorkProject,\n WorkProjectStatus,\n WorkTask,\n WorkTaskListFilter,\n WorkTaskStatus,\n} from \"./types.js\";\nimport { isErrnoCode } from \"../utils/errno.js\";\n\nconst TASK_TRANSITIONS: Record<WorkTaskStatus, Set<WorkTaskStatus>> = {\n todo: new Set([\"in_progress\", \"blocked\", \"cancelled\"]),\n in_progress: new Set([\"todo\", \"blocked\", \"done\", \"cancelled\"]),\n blocked: new Set([\"todo\", \"in_progress\", \"cancelled\"]),\n done: new Set(),\n cancelled: new Set(),\n};\n\nfunction serializeFrontmatter(values: object): string {\n const lines = Object.entries(values).map(([k, v]) => `${k}: ${JSON.stringify(v)}`);\n return `---\\n${lines.join(\"\\n\")}\\n---`;\n}\n\nfunction parseFrontmatter(raw: string): { data: Record<string, unknown>; body: string } | null {\n const match = raw.match(/^---\\n([\\s\\S]*?)\\n---\\n?([\\s\\S]*)$/);\n if (!match) return null;\n const fm = match[1] ?? \"\";\n const body = match[2] ?? \"\";\n const data: Record<string, unknown> = {};\n for (const line of fm.split(\"\\n\")) {\n if (!line.trim()) continue;\n const idx = line.indexOf(\":\");\n if (idx <= 0) continue;\n const key = line.slice(0, idx).trim();\n const rawValue = line.slice(idx + 1).trim();\n try {\n data[key] = JSON.parse(rawValue);\n } catch {\n data[key] = rawValue;\n }\n }\n return { data, body };\n}\n\nfunction toSafeSlug(value: string): string {\n let slug = value.toLowerCase().trim().replace(/[^a-z0-9]+/g, \"-\");\n // Trim leading/trailing dashes without ReDoS-prone anchored quantifiers\n let start = 0;\n while (start < slug.length && slug[start] === \"-\") start++;\n let end = slug.length;\n while (end > start && slug[end - 1] === \"-\") end--;\n return slug.slice(start, end).slice(0, 80);\n}\n\nexport const WORK_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9-]{0,127}$/;\n\nfunction makeId(prefix: string, titleOrName: string, now: Date): string {\n const slug = toSafeSlug(titleOrName) || \"item\";\n const nonce = randomUUID().slice(0, 8);\n return `${prefix}-${now.getTime()}-${slug}-${nonce}`;\n}\n\nfunction assertValidWorkId(id: string, kind: \"task\" | \"project\"): void {\n if (!WORK_ID_PATTERN.test(id)) {\n throw new Error(`invalid ${kind} id: ${id}`);\n }\n}\n\nfunction ensureString(value: unknown, fallback = \"\"): string {\n return typeof value === \"string\" ? value : fallback;\n}\n\nfunction ensureStringArray(value: unknown): string[] {\n if (!Array.isArray(value)) return [];\n return value.filter((entry) => typeof entry === \"string\");\n}\n\nfunction ensureNullableString(value: unknown): string | null {\n return typeof value === \"string\" ? value : null;\n}\n\nfunction ensureTaskStatus(value: unknown): WorkTaskStatus {\n if (value === \"todo\" || value === \"in_progress\" || value === \"blocked\" || value === \"done\" || value === \"cancelled\") {\n return value;\n }\n return \"todo\";\n}\n\nfunction ensureTaskPriority(value: unknown): WorkTask[\"priority\"] {\n if (value === \"low\" || value === \"medium\" || value === \"high\") return value;\n return \"medium\";\n}\n\nfunction ensureProjectStatus(value: unknown): WorkProjectStatus {\n if (value === \"active\" || value === \"on_hold\" || value === \"completed\" || value === \"archived\") return value;\n return \"active\";\n}\n\nexport class WorkStorage {\n private readonly tasksDir: string;\n private readonly projectsDir: string;\n\n constructor(private readonly memoryDir: string) {\n this.tasksDir = path.join(memoryDir, \"work\", \"tasks\");\n this.projectsDir = path.join(memoryDir, \"work\", \"projects\");\n }\n\n async ensureDirectories(): Promise<void> {\n await mkdir(this.tasksDir, { recursive: true });\n await mkdir(this.projectsDir, { recursive: true });\n }\n\n private taskPath(id: string): string {\n assertValidWorkId(id, \"task\");\n return path.join(this.tasksDir, `${id}.md`);\n }\n\n private projectPath(id: string): string {\n assertValidWorkId(id, \"project\");\n return path.join(this.projectsDir, `${id}.md`);\n }\n\n private serializeTask(task: WorkTask): string {\n return `${serializeFrontmatter(task)}\\n\\n${task.description}\\n`;\n }\n\n private serializeProject(project: WorkProject): string {\n return `${serializeFrontmatter(project)}\\n\\n${project.description}\\n`;\n }\n\n private async writeNewTask(task: WorkTask): Promise<void> {\n try {\n await writeFile(this.taskPath(task.id), this.serializeTask(task), { encoding: \"utf-8\", flag: \"wx\" });\n } catch (error) {\n if (isErrnoCode(error, \"EEXIST\")) {\n throw new Error(`task already exists: ${task.id}`);\n }\n throw error;\n }\n }\n\n private async writeNewProject(project: WorkProject): Promise<void> {\n try {\n await writeFile(this.projectPath(project.id), this.serializeProject(project), { encoding: \"utf-8\", flag: \"wx\" });\n } catch (error) {\n if (isErrnoCode(error, \"EEXIST\")) {\n throw new Error(`project already exists: ${project.id}`);\n }\n throw error;\n }\n }\n\n private parseTask(raw: string): WorkTask | null {\n const parsed = parseFrontmatter(raw);\n if (!parsed) return null;\n const d = parsed.data;\n return {\n id: ensureString(d.id),\n title: ensureString(d.title),\n description: ensureString(d.description, parsed.body.trim()),\n status: ensureTaskStatus(d.status),\n priority: ensureTaskPriority(d.priority),\n owner: ensureNullableString(d.owner),\n assignee: ensureNullableString(d.assignee),\n projectId: ensureNullableString(d.projectId),\n tags: ensureStringArray(d.tags),\n dueAt: ensureNullableString(d.dueAt),\n createdAt: ensureString(d.createdAt),\n updatedAt: ensureString(d.updatedAt),\n };\n }\n\n private parseProject(raw: string): WorkProject | null {\n const parsed = parseFrontmatter(raw);\n if (!parsed) return null;\n const d = parsed.data;\n return {\n id: ensureString(d.id),\n name: ensureString(d.name),\n description: ensureString(d.description, parsed.body.trim()),\n status: ensureProjectStatus(d.status),\n owner: ensureNullableString(d.owner),\n tags: ensureStringArray(d.tags),\n taskIds: ensureStringArray(d.taskIds),\n createdAt: ensureString(d.createdAt),\n updatedAt: ensureString(d.updatedAt),\n };\n }\n\n async createTask(input: CreateWorkTaskInput, now = new Date()): Promise<WorkTask> {\n await this.ensureDirectories();\n const timestamp = now.toISOString();\n const task: WorkTask = {\n id: input.id ?? makeId(\"task\", input.title, now),\n title: input.title,\n description: input.description ?? \"\",\n status: input.status ?? \"todo\",\n priority: input.priority ?? \"medium\",\n owner: input.owner ?? null,\n assignee: input.assignee ?? null,\n projectId: input.projectId ?? null,\n tags: input.tags ?? [],\n dueAt: input.dueAt ?? null,\n createdAt: timestamp,\n updatedAt: timestamp,\n };\n\n if (task.projectId) {\n const project = await this.getProject(task.projectId);\n if (!project) {\n throw new Error(`project not found: ${task.projectId}`);\n }\n }\n\n await this.writeNewTask(task);\n\n if (task.projectId) {\n await this.addTaskIdToProject(task.projectId, task.id, now);\n }\n\n return task;\n }\n\n async getTask(id: string): Promise<WorkTask | null> {\n try {\n const raw = await readFile(this.taskPath(id), \"utf-8\");\n return this.parseTask(raw);\n } catch {\n return null;\n }\n }\n\n async listTasks(filter?: WorkTaskListFilter): Promise<WorkTask[]> {\n await this.ensureDirectories();\n const entries = await readdir(this.tasksDir, { withFileTypes: true });\n const out: WorkTask[] = [];\n for (const entry of entries) {\n if (!entry.isFile() || !entry.name.endsWith(\".md\")) continue;\n const raw = await readFile(path.join(this.tasksDir, entry.name), \"utf-8\");\n const task = this.parseTask(raw);\n if (!task) continue;\n if (filter?.status && task.status !== filter.status) continue;\n if (filter?.owner && task.owner !== filter.owner) continue;\n if (filter?.assignee && task.assignee !== filter.assignee) continue;\n if (filter?.projectId && task.projectId !== filter.projectId) continue;\n out.push(task);\n }\n out.sort((a, b) => a.createdAt.localeCompare(b.createdAt));\n return out;\n }\n\n async updateTask(\n id: string,\n patch: UpdateWorkTaskInput,\n now = new Date(),\n options?: { skipStatusTransitionValidation?: boolean },\n ): Promise<WorkTask | null> {\n const existing = await this.getTask(id);\n if (!existing) return null;\n\n const projectIdPatched = Object.prototype.hasOwnProperty.call(patch, \"projectId\");\n const statusPatched = Object.prototype.hasOwnProperty.call(patch, \"status\");\n const nextProjectId = projectIdPatched ? patch.projectId ?? null : existing.projectId;\n\n if (\n statusPatched\n && patch.status\n && existing.status !== patch.status\n && options?.skipStatusTransitionValidation !== true\n && !TASK_TRANSITIONS[existing.status].has(patch.status)\n ) {\n throw new Error(`invalid task status transition: ${existing.status} -> ${patch.status}`);\n }\n\n if (projectIdPatched && nextProjectId) {\n const nextProject = await this.getProject(nextProjectId);\n if (!nextProject) {\n throw new Error(`project not found: ${nextProjectId}`);\n }\n }\n\n if (projectIdPatched && existing.projectId !== nextProjectId) {\n if (existing.projectId) {\n await this.removeTaskIdFromProject(existing.projectId, id, now);\n }\n if (nextProjectId) {\n await this.addTaskIdToProject(nextProjectId, id, now);\n }\n }\n\n const next: WorkTask = {\n ...existing,\n ...patch,\n projectId: nextProjectId,\n tags: patch.tags ?? existing.tags,\n updatedAt: now.toISOString(),\n };\n await writeFile(this.taskPath(id), this.serializeTask(next), \"utf-8\");\n return next;\n }\n\n async transitionTask(id: string, nextStatus: WorkTaskStatus, now = new Date()): Promise<WorkTask> {\n const existing = await this.getTask(id);\n if (!existing) throw new Error(`task not found: ${id}`);\n if (existing.status === nextStatus) return existing;\n if (!TASK_TRANSITIONS[existing.status].has(nextStatus)) {\n throw new Error(`invalid task status transition: ${existing.status} -> ${nextStatus}`);\n }\n const updated = await this.updateTask(id, { status: nextStatus }, now);\n if (!updated) throw new Error(`task not found after update: ${id}`);\n return updated;\n }\n\n async deleteTask(id: string): Promise<boolean> {\n try {\n const existing = await this.getTask(id);\n await rm(this.taskPath(id));\n if (existing?.projectId) {\n await this.removeTaskIdFromProject(existing.projectId, id);\n }\n return true;\n } catch {\n return false;\n }\n }\n\n async createProject(input: CreateWorkProjectInput, now = new Date()): Promise<WorkProject> {\n await this.ensureDirectories();\n const timestamp = now.toISOString();\n const project: WorkProject = {\n id: input.id ?? makeId(\"project\", input.name, now),\n name: input.name,\n description: input.description ?? \"\",\n status: input.status ?? \"active\",\n owner: input.owner ?? null,\n tags: input.tags ?? [],\n taskIds: [],\n createdAt: timestamp,\n updatedAt: timestamp,\n };\n await this.writeNewProject(project);\n return project;\n }\n\n async getProject(id: string): Promise<WorkProject | null> {\n try {\n const raw = await readFile(this.projectPath(id), \"utf-8\");\n return this.parseProject(raw);\n } catch {\n return null;\n }\n }\n\n async listProjects(): Promise<WorkProject[]> {\n await this.ensureDirectories();\n const entries = await readdir(this.projectsDir, { withFileTypes: true });\n const out: WorkProject[] = [];\n for (const entry of entries) {\n if (!entry.isFile() || !entry.name.endsWith(\".md\")) continue;\n const raw = await readFile(path.join(this.projectsDir, entry.name), \"utf-8\");\n const project = this.parseProject(raw);\n if (project) out.push(project);\n }\n out.sort((a, b) => a.createdAt.localeCompare(b.createdAt));\n return out;\n }\n\n async updateProject(id: string, patch: UpdateWorkProjectInput, now = new Date()): Promise<WorkProject | null> {\n const existing = await this.getProject(id);\n if (!existing) return null;\n const next: WorkProject = {\n ...existing,\n ...patch,\n tags: patch.tags ?? existing.tags,\n taskIds: patch.taskIds ? [...patch.taskIds].sort() : existing.taskIds,\n updatedAt: now.toISOString(),\n };\n await writeFile(this.projectPath(id), this.serializeProject(next), \"utf-8\");\n return next;\n }\n\n async deleteProject(id: string): Promise<boolean> {\n try {\n const existing = await this.getProject(id);\n if (existing) {\n for (const taskId of existing.taskIds) {\n await this.updateTask(taskId, { projectId: null });\n }\n }\n await rm(this.projectPath(id));\n return true;\n } catch {\n return false;\n }\n }\n\n async linkTaskToProject(taskId: string, projectId: string, now = new Date()): Promise<{ task: WorkTask; project: WorkProject }> {\n const task = await this.getTask(taskId);\n if (!task) throw new Error(`task not found: ${taskId}`);\n const project = await this.getProject(projectId);\n if (!project) throw new Error(`project not found: ${projectId}`);\n\n const updatedTask = await this.updateTask(taskId, { projectId }, now);\n if (!updatedTask) throw new Error(`task not found after update: ${taskId}`);\n\n const updatedProject = await this.getProject(projectId);\n if (!updatedProject) throw new Error(`project not found after update: ${projectId}`);\n\n return { task: updatedTask, project: updatedProject };\n }\n\n private async removeTaskIdFromProject(projectId: string, taskId: string, now = new Date()): Promise<void> {\n const project = await this.getProject(projectId);\n if (!project) return;\n\n const filtered = project.taskIds.filter((id) => id !== taskId);\n if (filtered.length === project.taskIds.length) return;\n\n await this.updateProject(projectId, { taskIds: filtered }, now);\n }\n\n private async addTaskIdToProject(projectId: string, taskId: string, now = new Date()): Promise<void> {\n const project = await this.getProject(projectId);\n if (!project) return;\n\n const taskIds = new Set(project.taskIds);\n taskIds.add(taskId);\n await this.updateProject(projectId, { taskIds: Array.from(taskIds) }, now);\n }\n}\n"],"mappings":"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","names":[]}