@remnic/core 1.1.30 → 9.3.515

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 (1091) hide show
  1. package/dist/abstraction-nodes.js +2 -2
  2. package/dist/access-cli.d.ts +1 -1
  3. package/dist/access-cli.js +156 -119
  4. package/dist/access-cli.js.map +1 -1
  5. package/dist/access-http.d.ts +9 -5
  6. package/dist/access-http.js +51 -51
  7. package/dist/access-idempotency.d.ts +2 -0
  8. package/dist/access-idempotency.js +1 -1
  9. package/dist/access-mcp.d.ts +16 -9
  10. package/dist/access-mcp.js +44 -44
  11. package/dist/access-schema.d.ts +47 -15
  12. package/dist/access-schema.js +8 -8
  13. package/dist/{access-service-B5hgZPCN.d.ts → access-service-qrrIrC-0.d.ts} +11 -129
  14. package/dist/access-service.d.ts +7 -4
  15. package/dist/access-service.js +40 -40
  16. package/dist/action-confidence.d.ts +1 -0
  17. package/dist/active-memory-bridge.d.ts +1 -0
  18. package/dist/active-memory-bridge.js +3 -2
  19. package/dist/active-recall.d.ts +1 -0
  20. package/dist/active-recall.js +14 -9
  21. package/dist/active-recall.js.map +1 -1
  22. package/dist/adapters/claude-code.d.ts +6 -2
  23. package/dist/adapters/claude-code.js +2 -2
  24. package/dist/adapters/codex.d.ts +5 -1
  25. package/dist/adapters/codex.js +2 -2
  26. package/dist/adapters/hermes.js +2 -2
  27. package/dist/adapters/index.js +6 -6
  28. package/dist/adapters/registry.js +6 -6
  29. package/dist/adapters/replit.d.ts +4 -2
  30. package/dist/adapters/replit.js +2 -2
  31. package/dist/adapters/types.d.ts +4 -0
  32. package/dist/adapters/types.js +1 -1
  33. package/dist/behavior-learner.d.ts +1 -0
  34. package/dist/behavior-signals.d.ts +1 -0
  35. package/dist/behavior-signals.js +1 -1
  36. package/dist/bootstrap.d.ts +5 -3
  37. package/dist/bootstrap.js +2 -2
  38. package/dist/boxes.d.ts +1 -0
  39. package/dist/boxes.js +1 -1
  40. package/dist/briefing.d.ts +1 -0
  41. package/dist/briefing.js +9 -9
  42. package/dist/buffer-surprise-report.d.ts +1 -0
  43. package/dist/buffer.d.ts +1 -0
  44. package/dist/buffer.js +2 -2
  45. package/dist/bulk-import/index.d.ts +28 -0
  46. package/dist/bulk-import/index.js +31 -0
  47. package/dist/calibration.d.ts +2 -0
  48. package/dist/calibration.js +50 -17
  49. package/dist/calibration.js.map +1 -1
  50. package/dist/{capsule-crypto-5CYAGVC5.js → capsule-crypto-7FJQINUR.js} +2 -2
  51. package/dist/{capsule-merge-4MGKE7C5.js → capsule-merge-T2JRE46P.js} +3 -3
  52. package/dist/causal-behavior.d.ts +1 -0
  53. package/dist/causal-behavior.js +4 -4
  54. package/dist/causal-chain.js +4 -4
  55. package/dist/causal-consolidation.d.ts +16 -1
  56. package/dist/causal-consolidation.js +115 -32
  57. package/dist/causal-consolidation.js.map +1 -1
  58. package/dist/causal-retrieval.js +14 -6
  59. package/dist/causal-retrieval.js.map +1 -1
  60. package/dist/causal-trajectory-graph.js +2 -2
  61. package/dist/causal-trajectory.js +2 -2
  62. package/dist/{chunk-SAZS2QZB.js → chunk-23UORJ4S.js} +3 -3
  63. package/dist/{chunk-76FLAAUC.js → chunk-2AN2L4NL.js} +17 -6
  64. package/dist/chunk-2AN2L4NL.js.map +1 -0
  65. package/dist/{chunk-W4L6CZKA.js → chunk-2DL3OFLD.js} +15 -10
  66. package/dist/chunk-2DL3OFLD.js.map +1 -0
  67. package/dist/{chunk-7OZ53EXP.js → chunk-2NLLXCJG.js} +21 -10
  68. package/dist/chunk-2NLLXCJG.js.map +1 -0
  69. package/dist/{chunk-PK7H5L6Y.js → chunk-2NM43EWN.js} +2 -2
  70. package/dist/{chunk-PYXS46O7.js → chunk-3BP57I6J.js} +2 -2
  71. package/dist/{chunk-FBYESMQ2.js → chunk-3C5RPJAX.js} +2 -2
  72. package/dist/{chunk-QKZGQIPJ.js → chunk-3Q4H3OBR.js} +171 -64
  73. package/dist/chunk-3Q4H3OBR.js.map +1 -0
  74. package/dist/{chunk-FKFMOY3N.js → chunk-42NQ7AVG.js} +3 -4
  75. package/dist/{chunk-FKFMOY3N.js.map → chunk-42NQ7AVG.js.map} +1 -1
  76. package/dist/chunk-4426WSWL.js +73 -0
  77. package/dist/chunk-4426WSWL.js.map +1 -0
  78. package/dist/{chunk-LIRZNNUP.js → chunk-44442YCH.js} +5 -2
  79. package/dist/chunk-44442YCH.js.map +1 -0
  80. package/dist/{chunk-H3ME6L6D.js → chunk-46GJIW5M.js} +23 -20
  81. package/dist/chunk-46GJIW5M.js.map +1 -0
  82. package/dist/{chunk-QDZ2RLEC.js → chunk-472U7RDF.js} +3 -3
  83. package/dist/chunk-472U7RDF.js.map +1 -0
  84. package/dist/{chunk-NN2DKE4T.js → chunk-4H5ZJHEN.js} +16 -3
  85. package/dist/{chunk-NN2DKE4T.js.map → chunk-4H5ZJHEN.js.map} +1 -1
  86. package/dist/{chunk-56K5QLHX.js → chunk-4HP7HIE3.js} +56 -13
  87. package/dist/chunk-4HP7HIE3.js.map +1 -0
  88. package/dist/{chunk-RK2Y4XOM.js → chunk-4JRRISLU.js} +9 -6
  89. package/dist/chunk-4JRRISLU.js.map +1 -0
  90. package/dist/{chunk-MG7NA5H3.js → chunk-4Q73JBSM.js} +17 -12
  91. package/dist/chunk-4Q73JBSM.js.map +1 -0
  92. package/dist/{chunk-XKLD5OK4.js → chunk-4RR6ROTB.js} +10 -11
  93. package/dist/chunk-4RR6ROTB.js.map +1 -0
  94. package/dist/{chunk-4KGVTPGD.js → chunk-6F6BXB7A.js} +9 -8
  95. package/dist/chunk-6F6BXB7A.js.map +1 -0
  96. package/dist/{chunk-NMZY542O.js → chunk-6URPAY2D.js} +41 -17
  97. package/dist/chunk-6URPAY2D.js.map +1 -0
  98. package/dist/{chunk-N53K2EXC.js → chunk-6VF75M3X.js} +2 -2
  99. package/dist/{chunk-XSZEP4SF.js → chunk-6XSPNR6L.js} +6 -5
  100. package/dist/chunk-6XSPNR6L.js.map +1 -0
  101. package/dist/{chunk-6H2TESSP.js → chunk-765K3SAT.js} +3 -3
  102. package/dist/{chunk-EDTHC6UD.js → chunk-77NAFXUD.js} +2 -2
  103. package/dist/{chunk-S7KDBTWT.js → chunk-7F7Z6MOS.js} +29 -14
  104. package/dist/chunk-7F7Z6MOS.js.map +1 -0
  105. package/dist/{chunk-MZH6EHNR.js → chunk-7H6CFEBJ.js} +41 -14
  106. package/dist/chunk-7H6CFEBJ.js.map +1 -0
  107. package/dist/{chunk-575RMLWN.js → chunk-7MV5CWTE.js} +26 -20
  108. package/dist/chunk-7MV5CWTE.js.map +1 -0
  109. package/dist/{chunk-MGKYQQYF.js → chunk-7Q3RCKAQ.js} +2 -2
  110. package/dist/chunk-7RXCMVFQ.js +27 -0
  111. package/dist/chunk-7RXCMVFQ.js.map +1 -0
  112. package/dist/{chunk-DGXUHMOV.js → chunk-A2IYSXDQ.js} +25 -6
  113. package/dist/chunk-A2IYSXDQ.js.map +1 -0
  114. package/dist/{chunk-EABGC2TL.js → chunk-A2Z6UCWT.js} +26 -4
  115. package/dist/chunk-A2Z6UCWT.js.map +1 -0
  116. package/dist/{chunk-3VAL7ZL2.js → chunk-A52AKD7C.js} +59 -24
  117. package/dist/chunk-A52AKD7C.js.map +1 -0
  118. package/dist/{chunk-5375UYTQ.js → chunk-A6D7A2FW.js} +4 -4
  119. package/dist/chunk-A6D7A2FW.js.map +1 -0
  120. package/dist/{chunk-FAAFWE4G.js → chunk-ALEPI75L.js} +24 -6
  121. package/dist/chunk-ALEPI75L.js.map +1 -0
  122. package/dist/{chunk-3SLRNYNG.js → chunk-AUDJPF4N.js} +15 -4
  123. package/dist/chunk-AUDJPF4N.js.map +1 -0
  124. package/dist/chunk-B5XMS73R.js +145 -0
  125. package/dist/chunk-B5XMS73R.js.map +1 -0
  126. package/dist/{chunk-HXXBL2KD.js → chunk-BECQDWBA.js} +44 -4
  127. package/dist/chunk-BECQDWBA.js.map +1 -0
  128. package/dist/{chunk-7SEAZFFB.js → chunk-BEUDU7Y4.js} +24 -4
  129. package/dist/chunk-BEUDU7Y4.js.map +1 -0
  130. package/dist/{chunk-XVVIG67A.js → chunk-BLZAVUD2.js} +61 -17
  131. package/dist/chunk-BLZAVUD2.js.map +1 -0
  132. package/dist/chunk-CHBI22MI.js +159 -0
  133. package/dist/chunk-CHBI22MI.js.map +1 -0
  134. package/dist/{chunk-GDFS42HT.js → chunk-CHCA44C3.js} +15 -8
  135. package/dist/chunk-CHCA44C3.js.map +1 -0
  136. package/dist/chunk-CINZGPSJ.js +22 -0
  137. package/dist/chunk-CINZGPSJ.js.map +1 -0
  138. package/dist/chunk-CMTINOFS.js +36 -0
  139. package/dist/chunk-CMTINOFS.js.map +1 -0
  140. package/dist/{chunk-34DQE4KF.js → chunk-CO7ZO4TU.js} +2 -2
  141. package/dist/{chunk-PFV5C235.js → chunk-CPPS65WS.js} +2 -1
  142. package/dist/{chunk-PFV5C235.js.map → chunk-CPPS65WS.js.map} +1 -1
  143. package/dist/{chunk-DINWEURR.js → chunk-CSKLPDN6.js} +20 -6
  144. package/dist/chunk-CSKLPDN6.js.map +1 -0
  145. package/dist/chunk-CWWMTTQE.js +566 -0
  146. package/dist/chunk-CWWMTTQE.js.map +1 -0
  147. package/dist/{chunk-IQT3XTKW.js → chunk-D24OXEPB.js} +13 -7
  148. package/dist/chunk-D24OXEPB.js.map +1 -0
  149. package/dist/{chunk-KRBK4BQH.js → chunk-D6WE5MTW.js} +272 -411
  150. package/dist/chunk-D6WE5MTW.js.map +1 -0
  151. package/dist/{chunk-WIICJPET.js → chunk-DEUNUKTD.js} +6 -4
  152. package/dist/{chunk-WIICJPET.js.map → chunk-DEUNUKTD.js.map} +1 -1
  153. package/dist/{chunk-ZYVPLJ4T.js → chunk-DHGSZ3UD.js} +9 -7
  154. package/dist/chunk-DHGSZ3UD.js.map +1 -0
  155. package/dist/{chunk-JR4ZC3G4.js → chunk-DLJ4IR6M.js} +91 -41
  156. package/dist/chunk-DLJ4IR6M.js.map +1 -0
  157. package/dist/{chunk-U4SCL7B7.js → chunk-DRD2Q7HQ.js} +82 -18
  158. package/dist/chunk-DRD2Q7HQ.js.map +1 -0
  159. package/dist/{chunk-2IWUMAES.js → chunk-E62SBGQ3.js} +28 -13
  160. package/dist/chunk-E62SBGQ3.js.map +1 -0
  161. package/dist/{chunk-C5BCH4ZS.js → chunk-EAZGEEG2.js} +21 -3
  162. package/dist/chunk-EAZGEEG2.js.map +1 -0
  163. package/dist/{chunk-TPB3I2AC.js → chunk-ECZU5BJH.js} +31 -10
  164. package/dist/chunk-ECZU5BJH.js.map +1 -0
  165. package/dist/{chunk-77H5NU3M.js → chunk-EDBEWFJO.js} +82 -18
  166. package/dist/chunk-EDBEWFJO.js.map +1 -0
  167. package/dist/chunk-EDQVAMQI.js +308 -0
  168. package/dist/chunk-EDQVAMQI.js.map +1 -0
  169. package/dist/{chunk-RRF5UOBJ.js → chunk-EI6V5UXY.js} +22 -15
  170. package/dist/chunk-EI6V5UXY.js.map +1 -0
  171. package/dist/{chunk-I5GLV3VE.js → chunk-EIPUHVKE.js} +31 -24
  172. package/dist/{chunk-I5GLV3VE.js.map → chunk-EIPUHVKE.js.map} +1 -1
  173. package/dist/{chunk-ZKSK55RC.js → chunk-ETUPBUHB.js} +2 -2
  174. package/dist/{chunk-25MQ7IHJ.js → chunk-EUML3N6B.js} +17 -6
  175. package/dist/chunk-EUML3N6B.js.map +1 -0
  176. package/dist/{chunk-5RGLBDQF.js → chunk-EVZFIAPG.js} +12 -12
  177. package/dist/chunk-EVZFIAPG.js.map +1 -0
  178. package/dist/{chunk-QRNI5JBH.js → chunk-EYIEWJNI.js} +2 -2
  179. package/dist/{chunk-3OWUCDKH.js → chunk-FER4WARO.js} +176 -42
  180. package/dist/chunk-FER4WARO.js.map +1 -0
  181. package/dist/{chunk-43PJZYGL.js → chunk-FPGE5NVO.js} +45 -10
  182. package/dist/chunk-FPGE5NVO.js.map +1 -0
  183. package/dist/{chunk-C6QPK5GG.js → chunk-FZZ2QTJI.js} +2 -2
  184. package/dist/{chunk-D46YSIYX.js → chunk-G3Z3QEF5.js} +19 -11
  185. package/dist/{chunk-D46YSIYX.js.map → chunk-G3Z3QEF5.js.map} +1 -1
  186. package/dist/{chunk-3JXBXXM2.js → chunk-G4IAEX6D.js} +2 -2
  187. package/dist/{chunk-MSWG7JI6.js → chunk-G56P5RLD.js} +8 -2
  188. package/dist/chunk-G56P5RLD.js.map +1 -0
  189. package/dist/{chunk-AGZQD76C.js → chunk-GCGJW34D.js} +48 -2
  190. package/dist/chunk-GCGJW34D.js.map +1 -0
  191. package/dist/chunk-H2NCNXMS.js +159 -0
  192. package/dist/chunk-H2NCNXMS.js.map +1 -0
  193. package/dist/{chunk-XYIK4LF6.js → chunk-H3FZVNRN.js} +8 -2
  194. package/dist/chunk-H3FZVNRN.js.map +1 -0
  195. package/dist/{chunk-TK4UEOSK.js → chunk-HDDRVXX4.js} +8 -8
  196. package/dist/chunk-HDDRVXX4.js.map +1 -0
  197. package/dist/{chunk-LLQ2LLWF.js → chunk-HENLZHIT.js} +15 -5
  198. package/dist/chunk-HENLZHIT.js.map +1 -0
  199. package/dist/{chunk-N2D6GXBM.js → chunk-HINSGUA7.js} +28 -20
  200. package/dist/chunk-HINSGUA7.js.map +1 -0
  201. package/dist/{chunk-APO3DCMU.js → chunk-HLAVGJ62.js} +30 -8
  202. package/dist/chunk-HLAVGJ62.js.map +1 -0
  203. package/dist/{chunk-TPMQ3G6Z.js → chunk-HOJZMQ4J.js} +2 -2
  204. package/dist/chunk-HOJZMQ4J.js.map +1 -0
  205. package/dist/{chunk-LUDTDZLK.js → chunk-HPWVAEET.js} +33 -7
  206. package/dist/chunk-HPWVAEET.js.map +1 -0
  207. package/dist/{chunk-NZL6GGQE.js → chunk-HQ6NIBL6.js} +92 -30
  208. package/dist/chunk-HQ6NIBL6.js.map +1 -0
  209. package/dist/{chunk-UWVJF25J.js → chunk-HWVTS5NO.js} +20 -6
  210. package/dist/chunk-HWVTS5NO.js.map +1 -0
  211. package/dist/{chunk-2WWLHTZY.js → chunk-IC4GELZE.js} +2 -2
  212. package/dist/{chunk-QA2ZAPBU.js → chunk-IPLYGWQF.js} +28 -20
  213. package/dist/chunk-IPLYGWQF.js.map +1 -0
  214. package/dist/{chunk-A6KTB5R6.js → chunk-IQ3OI2RR.js} +3 -3
  215. package/dist/chunk-IQ3OI2RR.js.map +1 -0
  216. package/dist/{chunk-6LVVDPJ4.js → chunk-J64TK33U.js} +3 -4
  217. package/dist/chunk-J64TK33U.js.map +1 -0
  218. package/dist/{chunk-6FC5EGNV.js → chunk-JBPKEARU.js} +15 -5
  219. package/dist/{chunk-6FC5EGNV.js.map → chunk-JBPKEARU.js.map} +1 -1
  220. package/dist/{chunk-RHY3HH7P.js → chunk-JFEKNTX7.js} +125 -33
  221. package/dist/chunk-JFEKNTX7.js.map +1 -0
  222. package/dist/{chunk-TZOLIGIG.js → chunk-JJEJJ7RK.js} +4 -2
  223. package/dist/chunk-JJEJJ7RK.js.map +1 -0
  224. package/dist/{chunk-PCUKNJAZ.js → chunk-JKV57BTN.js} +2 -2
  225. package/dist/{chunk-EJI5XIBB.js → chunk-JLNBQWZ2.js} +55 -7
  226. package/dist/chunk-JLNBQWZ2.js.map +1 -0
  227. package/dist/{chunk-XIG5PDM7.js → chunk-JUC24CTX.js} +8 -12
  228. package/dist/chunk-JUC24CTX.js.map +1 -0
  229. package/dist/{chunk-UL2NNBUL.js → chunk-JYIKKAK3.js} +106 -44
  230. package/dist/chunk-JYIKKAK3.js.map +1 -0
  231. package/dist/{chunk-OIGNEXKZ.js → chunk-K5O2QY6T.js} +5 -1
  232. package/dist/{chunk-OIGNEXKZ.js.map → chunk-K5O2QY6T.js.map} +1 -1
  233. package/dist/{chunk-ZTFCYYEZ.js → chunk-KCYE2MZM.js} +3 -3
  234. package/dist/chunk-KCYE2MZM.js.map +1 -0
  235. package/dist/{chunk-JWPLJLDU.js → chunk-KD3QD3A5.js} +2 -2
  236. package/dist/{chunk-JWPLJLDU.js.map → chunk-KD3QD3A5.js.map} +1 -1
  237. package/dist/{chunk-YRMVARQP.js → chunk-KFY3SGN7.js} +49 -2
  238. package/dist/chunk-KFY3SGN7.js.map +1 -0
  239. package/dist/{chunk-CYFQJMUV.js → chunk-KIB7SDIJ.js} +15 -10
  240. package/dist/chunk-KIB7SDIJ.js.map +1 -0
  241. package/dist/{chunk-3KW65B36.js → chunk-KILOTVIF.js} +95 -48
  242. package/dist/chunk-KILOTVIF.js.map +1 -0
  243. package/dist/{chunk-MXFBBHJU.js → chunk-KJMYHC7K.js} +10 -5
  244. package/dist/chunk-KJMYHC7K.js.map +1 -0
  245. package/dist/{chunk-W3LR522O.js → chunk-KM2A35EO.js} +36 -34
  246. package/dist/chunk-KM2A35EO.js.map +1 -0
  247. package/dist/{chunk-WELDCG6C.js → chunk-L227SKTB.js} +109 -36
  248. package/dist/chunk-L227SKTB.js.map +1 -0
  249. package/dist/{chunk-W6AQJ2PY.js → chunk-L7S47WZT.js} +35 -16
  250. package/dist/chunk-L7S47WZT.js.map +1 -0
  251. package/dist/{chunk-BVF3AGJP.js → chunk-LJBOVCQG.js} +26 -11
  252. package/dist/chunk-LJBOVCQG.js.map +1 -0
  253. package/dist/{chunk-2KI4QFHU.js → chunk-LMDRGRJ2.js} +2 -2
  254. package/dist/{chunk-MY6TPVXW.js → chunk-LMPHTYJC.js} +2 -2
  255. package/dist/{chunk-EHRTFRWW.js → chunk-LQHDIS7L.js} +10 -5
  256. package/dist/chunk-LQHDIS7L.js.map +1 -0
  257. package/dist/chunk-LUDUFZTV.js +170 -0
  258. package/dist/chunk-LUDUFZTV.js.map +1 -0
  259. package/dist/{chunk-5HRY2WRF.js → chunk-LZ3VEOU5.js} +2 -2
  260. package/dist/{chunk-Q7P4WJDP.js → chunk-M5T4Q2ZU.js} +1 -1
  261. package/dist/chunk-M5T4Q2ZU.js.map +1 -0
  262. package/dist/{chunk-ICRIXAP2.js → chunk-MC4FJXPA.js} +16 -6
  263. package/dist/chunk-MC4FJXPA.js.map +1 -0
  264. package/dist/{chunk-WPGJYVUH.js → chunk-MGVIEM2O.js} +23 -6
  265. package/dist/chunk-MGVIEM2O.js.map +1 -0
  266. package/dist/{chunk-OC7KHOOX.js → chunk-O27WNHTT.js} +22 -6
  267. package/dist/chunk-O27WNHTT.js.map +1 -0
  268. package/dist/{chunk-NGAVDO7E.js → chunk-OADWQ5CR.js} +2 -2
  269. package/dist/{chunk-2NMMFZ5T.js → chunk-OD4FM2U7.js} +6 -3
  270. package/dist/chunk-OD4FM2U7.js.map +1 -0
  271. package/dist/{chunk-OZHRDTDX.js → chunk-OKTXM5H4.js} +11 -1
  272. package/dist/chunk-OKTXM5H4.js.map +1 -0
  273. package/dist/{chunk-RXDLTSWT.js → chunk-ONPLNAPX.js} +16 -7
  274. package/dist/chunk-ONPLNAPX.js.map +1 -0
  275. package/dist/{chunk-FJ43PRLT.js → chunk-ORFGK3XI.js} +20 -14
  276. package/dist/chunk-ORFGK3XI.js.map +1 -0
  277. package/dist/{chunk-DOM4GKSW.js → chunk-OZKVVUJB.js} +3 -3
  278. package/dist/{chunk-MT4HVDUZ.js → chunk-PM3QHTFT.js} +3 -3
  279. package/dist/{chunk-4DWOBS2A.js → chunk-PRQJ5ESM.js} +27 -2
  280. package/dist/{chunk-4DWOBS2A.js.map → chunk-PRQJ5ESM.js.map} +1 -1
  281. package/dist/chunk-PU44GBL4.js +52 -0
  282. package/dist/chunk-PU44GBL4.js.map +1 -0
  283. package/dist/{chunk-MJFNCJXV.js → chunk-Q4CAQGKQ.js} +47 -9
  284. package/dist/chunk-Q4CAQGKQ.js.map +1 -0
  285. package/dist/{chunk-U3WSW6PZ.js → chunk-QMYXNM4P.js} +90 -35
  286. package/dist/chunk-QMYXNM4P.js.map +1 -0
  287. package/dist/{chunk-NBNN5GOB.js → chunk-QY7YA7OL.js} +11 -2
  288. package/dist/chunk-QY7YA7OL.js.map +1 -0
  289. package/dist/{chunk-QLLBRHAT.js → chunk-R26QUUQN.js} +181 -257
  290. package/dist/chunk-R26QUUQN.js.map +1 -0
  291. package/dist/{chunk-ZK7I7JYV.js → chunk-R3PS27B4.js} +7 -7
  292. package/dist/{chunk-TMQLARTH.js → chunk-RCTS5CKK.js} +33 -14
  293. package/dist/chunk-RCTS5CKK.js.map +1 -0
  294. package/dist/{chunk-2PRLKQAH.js → chunk-RLV3PQGH.js} +35 -19
  295. package/dist/chunk-RLV3PQGH.js.map +1 -0
  296. package/dist/{chunk-WW3QQF4H.js → chunk-ROZJACKP.js} +16 -1
  297. package/dist/chunk-ROZJACKP.js.map +1 -0
  298. package/dist/{chunk-7MNMYOFP.js → chunk-RSUYKGGZ.js} +3 -4
  299. package/dist/chunk-RSUYKGGZ.js.map +1 -0
  300. package/dist/{chunk-LT3NLYSI.js → chunk-RUZOJKNF.js} +10 -7
  301. package/dist/chunk-RUZOJKNF.js.map +1 -0
  302. package/dist/{chunk-326G7DJK.js → chunk-RW5DGAGO.js} +67 -13
  303. package/dist/chunk-RW5DGAGO.js.map +1 -0
  304. package/dist/{chunk-KOSORCJG.js → chunk-S53PKKWK.js} +63 -24
  305. package/dist/chunk-S53PKKWK.js.map +1 -0
  306. package/dist/{chunk-65PG43EQ.js → chunk-S7WU3Y3D.js} +21 -4
  307. package/dist/chunk-S7WU3Y3D.js.map +1 -0
  308. package/dist/{chunk-SKE7JYKA.js → chunk-SFXKHM7P.js} +2 -2
  309. package/dist/{chunk-HMDCOMYU.js → chunk-SKGV326D.js} +3 -3
  310. package/dist/chunk-T2PO5MUF.js +62 -0
  311. package/dist/chunk-T2PO5MUF.js.map +1 -0
  312. package/dist/{chunk-C7VW7C3F.js → chunk-TDKQGLJW.js} +3 -3
  313. package/dist/chunk-TDKQGLJW.js.map +1 -0
  314. package/dist/{chunk-3QKK7QOS.js → chunk-TERNBNJB.js} +3 -3
  315. package/dist/chunk-TERNBNJB.js.map +1 -0
  316. package/dist/{chunk-MXC3AP5I.js → chunk-TGQ2NTWH.js} +12 -7
  317. package/dist/chunk-TGQ2NTWH.js.map +1 -0
  318. package/dist/{chunk-3Y4P7RXM.js → chunk-TMSXWOBZ.js} +3 -4
  319. package/dist/chunk-TMSXWOBZ.js.map +1 -0
  320. package/dist/{chunk-3TNBOMQT.js → chunk-TVRN5QKH.js} +11 -11
  321. package/dist/{chunk-3TNBOMQT.js.map → chunk-TVRN5QKH.js.map} +1 -1
  322. package/dist/{chunk-5UM2VJ6D.js → chunk-UEY3VB6W.js} +2 -2
  323. package/dist/{chunk-I6K5FBRQ.js → chunk-UI3NYK34.js} +4 -1
  324. package/dist/{chunk-I6K5FBRQ.js.map → chunk-UI3NYK34.js.map} +1 -1
  325. package/dist/{chunk-VBJ7V5SK.js → chunk-UIPDNLXA.js} +21 -8
  326. package/dist/chunk-UIPDNLXA.js.map +1 -0
  327. package/dist/{chunk-GIF42EW3.js → chunk-UP6MOYCB.js} +3 -3
  328. package/dist/{chunk-K4FLSOR5.js → chunk-USYGGIJZ.js} +44 -15
  329. package/dist/chunk-USYGGIJZ.js.map +1 -0
  330. package/dist/{chunk-FIT6DMX6.js → chunk-UWY7GIVS.js} +152 -54
  331. package/dist/chunk-UWY7GIVS.js.map +1 -0
  332. package/dist/{chunk-MRILGULB.js → chunk-V2RCP53Q.js} +2 -2
  333. package/dist/{chunk-XKECPATV.js → chunk-VFUEZZBS.js} +113 -4
  334. package/dist/chunk-VFUEZZBS.js.map +1 -0
  335. package/dist/{chunk-FSFEQI74.js → chunk-W7L6HXUC.js} +2 -2
  336. package/dist/{chunk-3IQ2TR4N.js → chunk-WLEB7WCG.js} +2 -2
  337. package/dist/{chunk-GL6I6MEQ.js → chunk-WSGF57U2.js} +3 -3
  338. package/dist/{chunk-KNKUID7G.js → chunk-X7Y7WX73.js} +72 -6
  339. package/dist/chunk-X7Y7WX73.js.map +1 -0
  340. package/dist/{chunk-5NPGSAVB.js → chunk-XEKAG3FM.js} +23 -5
  341. package/dist/chunk-XEKAG3FM.js.map +1 -0
  342. package/dist/{chunk-3APJ5EVB.js → chunk-XKIQZXUB.js} +41 -26
  343. package/dist/chunk-XKIQZXUB.js.map +1 -0
  344. package/dist/chunk-XKXKSQU7.js +92 -0
  345. package/dist/chunk-XKXKSQU7.js.map +1 -0
  346. package/dist/{chunk-JA3AK3PT.js → chunk-XNLXAWHX.js} +4 -4
  347. package/dist/{chunk-CULXMQJH.js → chunk-XPXEJRUB.js} +3 -3
  348. package/dist/chunk-XPXEJRUB.js.map +1 -0
  349. package/dist/{chunk-PZIAX57I.js → chunk-XR6DNK4U.js} +7 -4
  350. package/dist/chunk-XR6DNK4U.js.map +1 -0
  351. package/dist/{chunk-47VWKCAF.js → chunk-XSQ4SGM5.js} +33 -4
  352. package/dist/chunk-XSQ4SGM5.js.map +1 -0
  353. package/dist/{chunk-66DHUKLO.js → chunk-XSWKORGM.js} +16 -14
  354. package/dist/chunk-XSWKORGM.js.map +1 -0
  355. package/dist/{chunk-QR3C7BKQ.js → chunk-XZ4WBBB5.js} +7 -8
  356. package/dist/chunk-XZ4WBBB5.js.map +1 -0
  357. package/dist/{chunk-WNARATI3.js → chunk-Y2SXZ5KZ.js} +59 -11
  358. package/dist/chunk-Y2SXZ5KZ.js.map +1 -0
  359. package/dist/{chunk-SIC6U3GZ.js → chunk-YHV3KRKS.js} +3 -3
  360. package/dist/{chunk-ZPKBYX2F.js → chunk-YNDLCWXS.js} +85 -9
  361. package/dist/chunk-YNDLCWXS.js.map +1 -0
  362. package/dist/{chunk-VLXA6PI2.js → chunk-YQMZ7IH2.js} +4 -4
  363. package/dist/{chunk-TMM4S4IJ.js → chunk-YR6GIWWY.js} +58 -8
  364. package/dist/chunk-YR6GIWWY.js.map +1 -0
  365. package/dist/{chunk-DK5LDEQM.js → chunk-YR7XMOWK.js} +39 -23
  366. package/dist/chunk-YR7XMOWK.js.map +1 -0
  367. package/dist/chunk-ZFXCQPNO.js +27 -0
  368. package/dist/chunk-ZFXCQPNO.js.map +1 -0
  369. package/dist/citations.js +1 -1
  370. package/dist/{cli-CJKI2JIe.d.ts → cli-X4NJoqSe.d.ts} +8 -31
  371. package/dist/cli.d.ts +10 -6
  372. package/dist/cli.js +122 -117
  373. package/dist/commitment-ledger.js +2 -2
  374. package/dist/compat/checks.js +1 -2
  375. package/dist/compounding/engine.d.ts +3 -2
  376. package/dist/compounding/engine.js +11 -11
  377. package/dist/compounding/preference-consolidator.d.ts +1 -0
  378. package/dist/compounding/preference-consolidator.js +8 -8
  379. package/dist/compounding/preference-consolidator.js.map +1 -1
  380. package/dist/compression-optimizer.d.ts +1 -0
  381. package/dist/compression-optimizer.js +1 -1
  382. package/dist/config.d.ts +1 -0
  383. package/dist/config.js +3 -2
  384. package/dist/connectors/codex-materialize-runner.d.ts +1 -0
  385. package/dist/connectors/codex-materialize-runner.js +12 -11
  386. package/dist/connectors/codex-materialize.d.ts +1 -0
  387. package/dist/connectors/codex-materialize.js +3 -2
  388. package/dist/connectors/index.d.ts +1 -0
  389. package/dist/connectors/index.js +14 -14
  390. package/dist/{connectors-cli-CwbyjGR7.d.ts → connectors-cli-DbTPNj2H.d.ts} +7 -1
  391. package/dist/connectors-cli.d.ts +1 -1
  392. package/dist/connectors-cli.js +3 -1
  393. package/dist/consolidation-provenance-check.d.ts +1 -0
  394. package/dist/consolidation-provenance-check.js +2 -2
  395. package/dist/consolidation-undo.d.ts +1 -0
  396. package/dist/consolidation-undo.js +1 -1
  397. package/dist/contradiction/index.d.ts +3 -1
  398. package/dist/contradiction/index.js +3 -3
  399. package/dist/{contradiction-review-ATP4S6IC.js → contradiction-review-6V2LXXK6.js} +2 -2
  400. package/dist/{contradiction-scan-5A4IDZV5.js → contradiction-scan-GIRVC4C7.js} +3 -3
  401. package/dist/conversation-index/backend.d.ts +3 -1
  402. package/dist/conversation-index/backend.js +3 -3
  403. package/dist/conversation-index/chunker.d.ts +1 -0
  404. package/dist/conversation-index/cleanup.js +1 -1
  405. package/dist/conversation-index/faiss-adapter.d.ts +2 -1
  406. package/dist/conversation-index/faiss-adapter.js +1 -1
  407. package/dist/conversation-index/indexer.d.ts +5 -2
  408. package/dist/conversation-index/indexer.js +1 -1
  409. package/dist/conversation-index/search.d.ts +2 -1
  410. package/dist/cross-namespace-budget.js +1 -1
  411. package/dist/cue-anchors.js +2 -2
  412. package/dist/dashboard-runtime.d.ts +6 -0
  413. package/dist/dashboard-runtime.js +3 -3
  414. package/dist/day-summary.d.ts +1 -0
  415. package/dist/day-summary.js +2 -2
  416. package/dist/delinearize.d.ts +1 -0
  417. package/dist/direct-answer-wiring.d.ts +1 -0
  418. package/dist/direct-answer.d.ts +1 -0
  419. package/dist/{dreams-ledger-LR2NBAZE.js → dreams-ledger-3WSCI5V4.js} +5 -4
  420. package/dist/{dreams-ledger-LR2NBAZE.js.map → dreams-ledger-3WSCI5V4.js.map} +1 -1
  421. package/dist/embedding-fallback.d.ts +3 -0
  422. package/dist/embedding-fallback.js +2 -2
  423. package/dist/enrichment/index.d.ts +1 -0
  424. package/dist/enrichment/index.js +1 -1
  425. package/dist/entity-retrieval.d.ts +2 -0
  426. package/dist/entity-retrieval.js +9 -9
  427. package/dist/entity-schema.d.ts +1 -0
  428. package/dist/evals.js +1 -1
  429. package/dist/explicit-capture.d.ts +5 -3
  430. package/dist/explicit-capture.js +2 -2
  431. package/dist/extraction-judge-telemetry.d.ts +2 -0
  432. package/dist/extraction-judge-training.d.ts +2 -0
  433. package/dist/extraction-judge.d.ts +2 -0
  434. package/dist/extraction.d.ts +2 -0
  435. package/dist/extraction.js +12 -12
  436. package/dist/{faiss-adapter-CzPghc4C.d.ts → faiss-adapter-BHecI1fF.d.ts} +4 -1
  437. package/dist/fallback-llm.d.ts +11 -1
  438. package/dist/fallback-llm.js +8 -6
  439. package/dist/{first-start-migration-4MHQEOSD.js → first-start-migration-CKTCTCQI.js} +5 -5
  440. package/dist/graph-dashboard-diff.d.ts +4 -0
  441. package/dist/graph-dashboard-diff.js +1 -1
  442. package/dist/graph-dashboard-parser.js +1 -1
  443. package/dist/{graph-edge-decay-5DI5GUNL.js → graph-edge-decay-MUP5J7CC.js} +6 -6
  444. package/dist/graph-events.js +1 -1
  445. package/dist/graph-snapshot.js +3 -3
  446. package/dist/graph.js +2 -2
  447. package/dist/harmonic-retrieval.js +4 -4
  448. package/dist/identity-continuity.d.ts +1 -0
  449. package/dist/importance.d.ts +1 -0
  450. package/dist/importers/index.d.ts +244 -0
  451. package/dist/importers/index.js +20 -0
  452. package/dist/index.d.ts +21 -351
  453. package/dist/index.js +886 -561
  454. package/dist/index.js.map +1 -1
  455. package/dist/intent.d.ts +1 -0
  456. package/dist/lcm/archive.d.ts +2 -2
  457. package/dist/lcm/archive.js +2 -2
  458. package/dist/lcm/engine.d.ts +3 -2
  459. package/dist/lcm/engine.js +6 -6
  460. package/dist/lcm/index.d.ts +1 -0
  461. package/dist/lcm/index.js +8 -8
  462. package/dist/lcm/recall.js +1 -1
  463. package/dist/lcm/summarizer.js +3 -3
  464. package/dist/lcm/tools.d.ts +1 -0
  465. package/dist/lifecycle.d.ts +1 -0
  466. package/dist/live-connectors-runner.d.ts +1 -0
  467. package/dist/live-connectors-runner.js +6 -6
  468. package/dist/local-llm.d.ts +1 -0
  469. package/dist/local-llm.js +2 -2
  470. package/dist/maintenance/archive-observations.js +1 -1
  471. package/dist/maintenance/memory-governance.d.ts +3 -1
  472. package/dist/maintenance/memory-governance.js +10 -8
  473. package/dist/maintenance/migrate-observations.js +3 -2
  474. package/dist/maintenance/observation-ledger-utils.d.ts +3 -0
  475. package/dist/maintenance/observation-ledger-utils.js +2 -1
  476. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -1
  477. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +11 -8
  478. package/dist/maintenance/rebuild-memory-projection.d.ts +2 -1
  479. package/dist/maintenance/rebuild-memory-projection.js +13 -10
  480. package/dist/maintenance/rebuild-observations.d.ts +1 -0
  481. package/dist/maintenance/rebuild-observations.js +3 -2
  482. package/dist/mcp-memory-inspector-app.d.ts +7 -4
  483. package/dist/mcp-memory-inspector-app.js +1 -1
  484. package/dist/memory-action-policy.d.ts +1 -0
  485. package/dist/memory-cache.d.ts +1 -0
  486. package/dist/memory-cache.js +1 -1
  487. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -0
  488. package/dist/memory-projection-store.d.ts +1 -0
  489. package/dist/memory-projection-store.js +1 -1
  490. package/dist/memory-provenance.d.ts +1 -0
  491. package/dist/memory-worth-outcomes.d.ts +1 -0
  492. package/dist/migrate/from-engram.js +2 -2
  493. package/dist/{migrate-from-identity-anchor-G27MCD6A.js → migrate-from-identity-anchor-EB4XI4Q2.js} +2 -2
  494. package/dist/model-registry.js +1 -1
  495. package/dist/models-json.d.ts +1 -0
  496. package/dist/namespaces/migrate.d.ts +3 -0
  497. package/dist/namespaces/migrate.js +24 -22
  498. package/dist/namespaces/principal.d.ts +1 -0
  499. package/dist/namespaces/principal.js +2 -1
  500. package/dist/namespaces/search.d.ts +1 -0
  501. package/dist/namespaces/search.js +15 -13
  502. package/dist/namespaces/storage.d.ts +4 -2
  503. package/dist/namespaces/storage.js +10 -9
  504. package/dist/native-knowledge.d.ts +1 -0
  505. package/dist/native-knowledge.js +1 -1
  506. package/dist/negative.js +1 -1
  507. package/dist/network/webdav.d.ts +16 -1
  508. package/dist/network/webdav.js +5 -3
  509. package/dist/objective-state-writers.js +4 -4
  510. package/dist/objective-state.js +2 -2
  511. package/dist/offline-sync.d.ts +8 -1
  512. package/dist/offline-sync.js +6 -4
  513. package/dist/operator-toolkit.d.ts +1 -0
  514. package/dist/operator-toolkit.js +35 -32
  515. package/dist/opik-exporter.js +1 -1
  516. package/dist/{orchestrator-DuWl9Hwx.d.ts → orchestrator-Co9nxRLF.d.ts} +4 -74
  517. package/dist/orchestrator.d.ts +5 -3
  518. package/dist/orchestrator.js +99 -96
  519. package/dist/page-versioning.js +1 -1
  520. package/dist/path-X2K5XCHL.js +9 -0
  521. package/dist/patterns-cli.d.ts +1 -0
  522. package/dist/peers/index.d.ts +328 -0
  523. package/dist/{peers-HCVGHMAE.js → peers/index.js} +4 -4
  524. package/dist/pipeline-D18UAKlN.d.ts +32 -0
  525. package/dist/plugin-entry-resolver.d.ts +9 -0
  526. package/dist/plugin-entry-resolver.js +8 -0
  527. package/dist/plugin-entry-resolver.js.map +1 -0
  528. package/dist/plugin-id.d.ts +2 -21
  529. package/dist/plugin-id.js +33 -4
  530. package/dist/plugin-id.js.map +1 -1
  531. package/dist/policy-runtime.d.ts +4 -0
  532. package/dist/policy-runtime.js +1 -1
  533. package/dist/profiling.js +1 -1
  534. package/dist/qmd-recall-cache.d.ts +1 -0
  535. package/dist/qmd.d.ts +1 -0
  536. package/dist/qmd.js +3 -3
  537. package/dist/recall-disclosure-escalation.d.ts +1 -0
  538. package/dist/recall-explain-renderer.d.ts +1 -0
  539. package/dist/recall-explain-renderer.js +3 -3
  540. package/dist/recall-state.d.ts +8 -1
  541. package/dist/recall-state.js +2 -1
  542. package/dist/recall-tag-filter.d.ts +1 -0
  543. package/dist/recall-xray-cli.d.ts +1 -0
  544. package/dist/recall-xray-cli.js +4 -4
  545. package/dist/recall-xray-renderer.d.ts +1 -0
  546. package/dist/recall-xray-renderer.js +3 -3
  547. package/dist/recall-xray.d.ts +1 -0
  548. package/dist/recall-xray.js +2 -2
  549. package/dist/relevance.d.ts +7 -1
  550. package/dist/relevance.js +2 -1
  551. package/dist/replay/normalizers/chatgpt.js +2 -2
  552. package/dist/replay/normalizers/claude.js +2 -2
  553. package/dist/replay/normalizers/openclaw.js +2 -2
  554. package/dist/replay/normalizers/shared.js +1 -1
  555. package/dist/replay/runner.js +1 -1
  556. package/dist/rerank.js +1 -1
  557. package/dist/{resolution-B7FNQSSP.js → resolution-ZY7VM6WS.js} +3 -3
  558. package/dist/resolution-ZY7VM6WS.js.map +1 -0
  559. package/dist/resolve-auth-token.d.ts +1 -0
  560. package/dist/resolve-auth-token.js +1 -1
  561. package/dist/resolve-provider-secret.d.ts +19 -29
  562. package/dist/resolve-provider-secret.js +2 -6
  563. package/dist/resume-bundles.js +10 -9
  564. package/dist/retrieval-agents.d.ts +2 -1
  565. package/dist/retrieval-agents.js +2 -1
  566. package/dist/retrieval-tiers.d.ts +1 -0
  567. package/dist/routing/engine.d.ts +1 -0
  568. package/dist/routing/store.d.ts +3 -0
  569. package/dist/routing/store.js +1 -1
  570. package/dist/runtime/env.js +1 -1
  571. package/dist/schemas.d.ts +213 -39
  572. package/dist/schemas.js +1 -1
  573. package/dist/sdk-compat.js +1 -1
  574. package/dist/search/document-scanner.js +1 -1
  575. package/dist/search/embed-helper.d.ts +7 -2
  576. package/dist/search/embed-helper.js +3 -1
  577. package/dist/search/factory.d.ts +2 -1
  578. package/dist/search/factory.js +13 -12
  579. package/dist/search/index.d.ts +2 -1
  580. package/dist/search/index.js +19 -18
  581. package/dist/search/lancedb-backend.d.ts +7 -6
  582. package/dist/search/lancedb-backend.js +4 -2
  583. package/dist/search/meilisearch-backend.d.ts +7 -6
  584. package/dist/search/meilisearch-backend.js +4 -2
  585. package/dist/search/noop-backend.d.ts +1 -0
  586. package/dist/search/orama-backend.d.ts +9 -7
  587. package/dist/search/orama-backend.js +8 -4
  588. package/dist/search/port.d.ts +1 -0
  589. package/dist/search/remote-backend.d.ts +1 -0
  590. package/dist/secure-store/index.d.ts +16 -3
  591. package/dist/secure-store/index.js +2 -2
  592. package/dist/{semantic-VwGI14Ok.d.ts → semantic-SLAa_prH.d.ts} +5 -3
  593. package/dist/semantic-consolidation.d.ts +1 -0
  594. package/dist/semantic-consolidation.js +14 -13
  595. package/dist/semantic-rule-promotion.js +8 -8
  596. package/dist/semantic-rule-verifier.d.ts +1 -0
  597. package/dist/semantic-rule-verifier.js +8 -8
  598. package/dist/session-integrity.d.ts +1 -0
  599. package/dist/session-integrity.js +1 -1
  600. package/dist/session-observer-bands.d.ts +1 -0
  601. package/dist/session-observer-state.d.ts +6 -1
  602. package/dist/session-observer-state.js +1 -1
  603. package/dist/shared-context/manager.d.ts +5 -0
  604. package/dist/shared-context/manager.js +3 -3
  605. package/dist/signal.d.ts +1 -0
  606. package/dist/signal.js +1 -1
  607. package/dist/source-attribution.js +1 -1
  608. package/dist/state-store-4QZISH3J.js +30 -0
  609. package/dist/state-store-4QZISH3J.js.map +1 -0
  610. package/dist/storage-C4DX8CuG.d.ts +157 -0
  611. package/dist/storage.d.ts +2 -0
  612. package/dist/storage.js +7 -7
  613. package/dist/store-contract.js +1 -1
  614. package/dist/summarizer.d.ts +1 -0
  615. package/dist/summarizer.js +7 -7
  616. package/dist/summary-snapshot.d.ts +1 -0
  617. package/dist/surfaces/dreams.js +48 -17
  618. package/dist/surfaces/dreams.js.map +1 -1
  619. package/dist/temporal-supersession.d.ts +1 -0
  620. package/dist/temporal-supersession.js +1 -1
  621. package/dist/temporal-validity.d.ts +1 -0
  622. package/dist/threading.d.ts +1 -0
  623. package/dist/tier-migration.d.ts +1 -0
  624. package/dist/tier-routing.d.ts +1 -0
  625. package/dist/{tier-stats-62ZVDFKS.js → tier-stats-SKML2OSF.js} +5 -5
  626. package/dist/tmt.js +1 -1
  627. package/dist/tokens.js +2 -2
  628. package/dist/topics.d.ts +1 -0
  629. package/dist/{trace-C5ETWBEF.js → trace-WM7V4CKI.js} +31 -1
  630. package/dist/trace-WM7V4CKI.js.map +1 -0
  631. package/dist/transcript.d.ts +1 -0
  632. package/dist/transcript.js +2 -2
  633. package/dist/transfer/autodetect.js +7 -7
  634. package/dist/transfer/backup.js +5 -5
  635. package/dist/transfer/capsule-export.js +5 -5
  636. package/dist/transfer/capsule-import.d.ts +6 -0
  637. package/dist/transfer/capsule-import.js +4 -4
  638. package/dist/transfer/export-json.js +3 -3
  639. package/dist/transfer/export-md.js +3 -3
  640. package/dist/transfer/export-sqlite.js +3 -3
  641. package/dist/transfer/fs-utils.d.ts +2 -1
  642. package/dist/transfer/fs-utils.js +5 -3
  643. package/dist/transfer/import-json.js +3 -3
  644. package/dist/transfer/import-md.js +3 -3
  645. package/dist/transfer/import-sqlite.js +3 -3
  646. package/dist/transfer/types.d.ts +12 -12
  647. package/dist/trust-zones.js +2 -2
  648. package/dist/types-B1VHaf2w.d.ts +126 -0
  649. package/dist/types-BliCnURB.d.ts +83 -0
  650. package/dist/types.d.ts +35 -0
  651. package/dist/types.js +1 -1
  652. package/dist/utility-learner.js +3 -3
  653. package/dist/utility-runtime.d.ts +1 -0
  654. package/dist/utility-runtime.js +4 -4
  655. package/dist/utility-telemetry.js +2 -2
  656. package/dist/verified-recall.js +9 -9
  657. package/dist/work/board.js +2 -2
  658. package/dist/work/boundary.js +1 -1
  659. package/dist/work/storage.d.ts +5 -0
  660. package/dist/work/storage.js +1 -1
  661. package/dist/work-product-ledger.js +2 -2
  662. package/package.json +74 -3
  663. package/scripts/ensure-better-sqlite3.mjs +8 -7
  664. package/scripts/faiss_index.py +141 -29
  665. package/src/access-cli.test.ts +87 -2
  666. package/src/access-cli.ts +59 -5
  667. package/src/access-http.test.ts +321 -0
  668. package/src/access-http.ts +201 -35
  669. package/src/access-idempotency.ts +136 -3
  670. package/src/access-mcp.test.ts +155 -0
  671. package/src/access-mcp.ts +116 -30
  672. package/src/access-schema.ts +22 -4
  673. package/src/access-service-project-tag.test.ts +37 -0
  674. package/src/access-service.ts +42 -10
  675. package/src/active-recall.test.ts +29 -1
  676. package/src/active-recall.ts +11 -7
  677. package/src/adapters/claude-code.ts +7 -8
  678. package/src/adapters/codex.ts +6 -7
  679. package/src/adapters/hermes.ts +1 -5
  680. package/src/adapters/registry.test.ts +63 -0
  681. package/src/adapters/registry.ts +10 -0
  682. package/src/adapters/replit.ts +5 -7
  683. package/src/adapters/types.ts +24 -1
  684. package/src/behavior-signals.ts +1 -1
  685. package/src/binary-lifecycle/backend.ts +16 -4
  686. package/src/binary-lifecycle/pipeline.test.ts +149 -0
  687. package/src/binary-lifecycle/pipeline.ts +49 -7
  688. package/src/binary-lifecycle/scanner.ts +19 -4
  689. package/src/boxes.ts +119 -32
  690. package/src/buffer-session.test.ts +28 -0
  691. package/src/buffer.ts +10 -14
  692. package/src/bulk-import/types.ts +10 -0
  693. package/src/calibration.test.ts +99 -0
  694. package/src/calibration.ts +57 -13
  695. package/src/causal-consolidation.test.ts +214 -0
  696. package/src/causal-consolidation.ts +131 -14
  697. package/src/causal-retrieval.ts +16 -3
  698. package/src/citations.test.ts +75 -0
  699. package/src/citations.ts +19 -6
  700. package/src/cli.ts +134 -109
  701. package/src/coding/coding-namespace.test.ts +7 -0
  702. package/src/coding/coding-namespace.ts +8 -0
  703. package/src/coding/review-context.test.ts +30 -0
  704. package/src/coding/review-context.ts +79 -9
  705. package/src/coding/wire-coding-context.test.ts +16 -0
  706. package/src/compat/checks.test.ts +33 -0
  707. package/src/compat/checks.ts +64 -4
  708. package/src/compounding/engine.ts +2 -2
  709. package/src/compounding/preference-consolidator.test.ts +47 -0
  710. package/src/compounding/preference-consolidator.ts +8 -8
  711. package/src/compression-optimizer.ts +5 -2
  712. package/src/config.test.ts +34 -2
  713. package/src/config.ts +62 -18
  714. package/src/connectors/codex-materialize-runner.ts +4 -3
  715. package/src/connectors/codex-materialize.ts +149 -34
  716. package/src/connectors/index.test.ts +144 -7
  717. package/src/connectors/index.ts +86 -15
  718. package/src/connectors/live/github.test.ts +47 -0
  719. package/src/connectors/live/github.ts +29 -1
  720. package/src/connectors/live/index.ts +2 -0
  721. package/src/connectors/live/live-connectors.test.ts +359 -73
  722. package/src/connectors/live/notion.test.ts +84 -0
  723. package/src/connectors/live/notion.ts +18 -1
  724. package/src/connectors/live/state-store.ts +419 -38
  725. package/src/connectors/weclone-installer.test.ts +16 -18
  726. package/src/connectors-cli.ts +19 -0
  727. package/src/console/trace.test.ts +28 -0
  728. package/src/console/trace.ts +42 -5
  729. package/src/contradiction/contradiction-judge.test.ts +49 -0
  730. package/src/contradiction/contradiction-judge.ts +15 -5
  731. package/src/contradiction/contradiction-review.ts +31 -7
  732. package/src/contradiction/contradiction-scan.ts +28 -18
  733. package/src/contradiction/contradiction.test.ts +237 -1
  734. package/src/contradiction/resolution.ts +43 -4
  735. package/src/conversation-index/backend.ts +13 -5
  736. package/src/conversation-index/cleanup.ts +25 -4
  737. package/src/conversation-index/faiss-adapter.ts +24 -15
  738. package/src/conversation-index/indexer.test.ts +71 -10
  739. package/src/conversation-index/indexer.ts +22 -3
  740. package/src/cross-namespace-budget.test.ts +59 -0
  741. package/src/cross-namespace-budget.ts +15 -7
  742. package/src/curation/index.ts +18 -17
  743. package/src/dashboard-runtime.test.ts +98 -0
  744. package/src/dashboard-runtime.ts +96 -6
  745. package/src/dedup/index.test.ts +133 -0
  746. package/src/dedup/index.ts +73 -10
  747. package/src/dedup/semantic.test.ts +77 -2
  748. package/src/dedup/semantic.ts +26 -6
  749. package/src/embedding-fallback.ts +47 -15
  750. package/src/enrichment/audit.ts +8 -1
  751. package/src/enrichment/pipeline.ts +21 -13
  752. package/src/enrichment/web-search-provider.ts +1 -6
  753. package/src/entity-retrieval.ts +57 -6
  754. package/src/evals.ts +22 -13
  755. package/src/explicit-capture.test.ts +40 -0
  756. package/src/explicit-capture.ts +14 -2
  757. package/src/extraction.ts +42 -30
  758. package/src/fallback-llm.ts +35 -2
  759. package/src/graph-dashboard-diff.test.ts +57 -0
  760. package/src/graph-dashboard-diff.ts +24 -2
  761. package/src/graph-dashboard-parser.test.ts +31 -0
  762. package/src/graph-dashboard-parser.ts +4 -1
  763. package/src/graph-events.ts +6 -4
  764. package/src/graph.test.ts +69 -0
  765. package/src/graph.ts +7 -4
  766. package/src/importers/base.test.ts +70 -0
  767. package/src/importers/base.ts +56 -7
  768. package/src/index.ts +6 -2
  769. package/src/lcm/archive.ts +65 -16
  770. package/src/lcm/engine.ts +27 -8
  771. package/src/lcm/recall.ts +5 -5
  772. package/src/lcm-engine.test.ts +87 -1
  773. package/src/lcm-recall.test.ts +71 -0
  774. package/src/live-connectors-runner.ts +100 -36
  775. package/src/maintenance/archive-observations.ts +24 -3
  776. package/src/maintenance/atomic-file.ts +85 -0
  777. package/src/maintenance/dreams-ledger.ts +15 -8
  778. package/src/maintenance/memory-governance.test.ts +53 -0
  779. package/src/maintenance/memory-governance.ts +15 -5
  780. package/src/maintenance/observation-ledger-utils.ts +6 -5
  781. package/src/maintenance/purge.test.ts +64 -0
  782. package/src/maintenance/rebuild-memory-lifecycle-ledger.ts +22 -9
  783. package/src/maintenance/rebuild-memory-projection.ts +22 -9
  784. package/src/maintenance/rebuild-observations.ts +7 -3
  785. package/src/mcp-memory-inspector-app.ts +26 -3
  786. package/src/memory-cache.test.ts +19 -0
  787. package/src/memory-cache.ts +1 -0
  788. package/src/memory-extension/codex-publisher.ts +25 -4
  789. package/src/memory-extension-host/host-discovery.test.ts +69 -0
  790. package/src/memory-extension-host/host-discovery.ts +63 -6
  791. package/src/memory-projection-store.ts +114 -62
  792. package/src/message-parts/index.ts +46 -31
  793. package/src/message-parts/message-parts.test.ts +77 -0
  794. package/src/migrate/from-engram.ts +68 -14
  795. package/src/model-registry.test.ts +38 -0
  796. package/src/model-registry.ts +12 -7
  797. package/src/namespaces/identity.test.ts +66 -0
  798. package/src/namespaces/identity.ts +23 -0
  799. package/src/namespaces/migrate.test.ts +62 -0
  800. package/src/namespaces/migrate.ts +82 -14
  801. package/src/namespaces/principal.test.ts +37 -1
  802. package/src/namespaces/principal.ts +18 -7
  803. package/src/namespaces/search.test.ts +76 -6
  804. package/src/namespaces/search.ts +22 -21
  805. package/src/namespaces/storage.ts +93 -11
  806. package/src/native-knowledge.ts +23 -3
  807. package/src/negative.ts +50 -5
  808. package/src/network/webdav.ts +177 -58
  809. package/src/offline-sync.ts +22 -11
  810. package/src/onboarding/index.test.ts +105 -0
  811. package/src/onboarding/index.ts +17 -5
  812. package/src/operator-toolkit.ts +39 -4
  813. package/src/orchestrator.ts +52 -17
  814. package/src/page-versioning.ts +31 -5
  815. package/src/peers/peers.test.ts +70 -0
  816. package/src/peers/storage.ts +32 -3
  817. package/src/plugin-entry-resolver.test.ts +60 -0
  818. package/src/plugin-entry-resolver.ts +48 -0
  819. package/src/plugin-id.test.ts +38 -0
  820. package/src/plugin-id.ts +31 -64
  821. package/src/policy-runtime.test.ts +75 -0
  822. package/src/policy-runtime.ts +32 -3
  823. package/src/procedural/procedure-miner.test.ts +152 -0
  824. package/src/procedural/procedure-miner.ts +124 -19
  825. package/src/profiling.test.ts +23 -0
  826. package/src/profiling.ts +10 -1
  827. package/src/projection/index.test.ts +253 -0
  828. package/src/projection/index.ts +159 -18
  829. package/src/qmd-client.test.ts +45 -0
  830. package/src/qmd.ts +8 -8
  831. package/src/recall-disclosure.test.ts +15 -1
  832. package/src/recall-state.ts +24 -5
  833. package/src/relevance.ts +24 -5
  834. package/src/replay/normalizers/chatgpt.ts +14 -4
  835. package/src/replay/normalizers/claude.ts +8 -3
  836. package/src/replay/normalizers/openclaw.ts +35 -12
  837. package/src/replay/normalizers/replay-normalizers.test.ts +65 -0
  838. package/src/replay/normalizers/shared.ts +4 -1
  839. package/src/replay/runner.ts +1 -1
  840. package/src/rerank.test.ts +41 -1
  841. package/src/rerank.ts +2 -2
  842. package/src/resolve-auth-token.test.ts +29 -0
  843. package/src/resolve-auth-token.ts +12 -7
  844. package/src/resolve-provider-secret.test.ts +78 -22
  845. package/src/resolve-provider-secret.ts +55 -223
  846. package/src/retrieval-agents.ts +51 -14
  847. package/src/review/index.test.ts +75 -1
  848. package/src/review/index.ts +88 -30
  849. package/src/routing/store.ts +36 -6
  850. package/src/runtime/env.test.ts +73 -0
  851. package/src/runtime/env.ts +7 -11
  852. package/src/schemas.ts +16 -1
  853. package/src/search/abort.ts +18 -0
  854. package/src/search/document-scanner.test.ts +80 -0
  855. package/src/search/document-scanner.ts +51 -9
  856. package/src/search/embed-helper.ts +19 -6
  857. package/src/search/factory.ts +9 -5
  858. package/src/search/lancedb-backend.ts +62 -22
  859. package/src/search/meilisearch-backend.ts +35 -12
  860. package/src/search/orama-backend.test.ts +27 -0
  861. package/src/search/orama-backend.ts +65 -15
  862. package/src/secure-store/cli-handlers.ts +70 -6
  863. package/src/secure-store/cli-renderer.ts +13 -7
  864. package/src/secure-store/secure-fs.ts +11 -5
  865. package/src/secure-store/secure-store.test.ts +70 -0
  866. package/src/semantic-consolidation.test.ts +45 -0
  867. package/src/semantic-consolidation.ts +3 -3
  868. package/src/session-integrity.test.ts +98 -0
  869. package/src/session-integrity.ts +51 -1
  870. package/src/session-observer-state.ts +108 -41
  871. package/src/shared-context/manager.ts +93 -15
  872. package/src/signal.test.ts +14 -0
  873. package/src/signal.ts +8 -1
  874. package/src/source-attribution.test.ts +8 -0
  875. package/src/source-attribution.ts +24 -2
  876. package/src/spaces/index.test.ts +93 -0
  877. package/src/spaces/index.ts +75 -9
  878. package/src/storage.ts +14 -1
  879. package/src/store-contract.test.ts +35 -0
  880. package/src/store-contract.ts +39 -5
  881. package/src/summarizer.ts +24 -18
  882. package/src/summary-snapshot.test.ts +77 -0
  883. package/src/surfaces/dreams.test.ts +73 -0
  884. package/src/surfaces/dreams.ts +53 -19
  885. package/src/sync/index.ts +42 -17
  886. package/src/taxonomy/taxonomy-loader.ts +43 -4
  887. package/src/temporal-supersession.test.ts +67 -0
  888. package/src/temporal-supersession.ts +8 -0
  889. package/src/tmt.test.ts +50 -0
  890. package/src/tmt.ts +35 -11
  891. package/src/tokens.test.ts +18 -0
  892. package/src/tokens.ts +7 -0
  893. package/src/training-export/converter.test.ts +55 -2
  894. package/src/training-export/converter.ts +36 -10
  895. package/src/training-export/registry.test.ts +17 -0
  896. package/src/training-export/registry.ts +19 -1
  897. package/src/transcript.ts +2 -2
  898. package/src/transfer/backup.ts +18 -7
  899. package/src/transfer/capsule-crypto.ts +105 -21
  900. package/src/transfer/capsule-encrypt.test.ts +106 -7
  901. package/src/transfer/capsule-export.ts +23 -14
  902. package/src/transfer/capsule-import.ts +11 -2
  903. package/src/transfer/exclusions.ts +7 -0
  904. package/src/transfer/export-sqlite.ts +14 -13
  905. package/src/transfer/fs-utils.ts +52 -1
  906. package/src/transfer/import-json.ts +12 -7
  907. package/src/transfer/import-md.ts +5 -5
  908. package/src/transfer/import-sqlite.ts +4 -5
  909. package/src/trust-zones.ts +1 -1
  910. package/src/types.ts +25 -0
  911. package/src/utility-telemetry.ts +1 -1
  912. package/src/utils/category-dir.test.ts +15 -0
  913. package/src/utils/category-dir.ts +3 -1
  914. package/src/work/boundary.ts +30 -18
  915. package/src/work/storage.ts +116 -38
  916. package/src/work-product-ledger.ts +1 -1
  917. package/dist/chunk-25MQ7IHJ.js.map +0 -1
  918. package/dist/chunk-2IWUMAES.js.map +0 -1
  919. package/dist/chunk-2NMMFZ5T.js.map +0 -1
  920. package/dist/chunk-2PRLKQAH.js.map +0 -1
  921. package/dist/chunk-326G7DJK.js.map +0 -1
  922. package/dist/chunk-3APJ5EVB.js.map +0 -1
  923. package/dist/chunk-3KW65B36.js.map +0 -1
  924. package/dist/chunk-3OWUCDKH.js.map +0 -1
  925. package/dist/chunk-3QKK7QOS.js.map +0 -1
  926. package/dist/chunk-3SLRNYNG.js.map +0 -1
  927. package/dist/chunk-3VAL7ZL2.js.map +0 -1
  928. package/dist/chunk-3Y4P7RXM.js.map +0 -1
  929. package/dist/chunk-43PJZYGL.js.map +0 -1
  930. package/dist/chunk-47VWKCAF.js.map +0 -1
  931. package/dist/chunk-4KGVTPGD.js.map +0 -1
  932. package/dist/chunk-5375UYTQ.js.map +0 -1
  933. package/dist/chunk-56K5QLHX.js.map +0 -1
  934. package/dist/chunk-575RMLWN.js.map +0 -1
  935. package/dist/chunk-5NPGSAVB.js.map +0 -1
  936. package/dist/chunk-5RGLBDQF.js.map +0 -1
  937. package/dist/chunk-65PG43EQ.js.map +0 -1
  938. package/dist/chunk-66DHUKLO.js.map +0 -1
  939. package/dist/chunk-6LVVDPJ4.js.map +0 -1
  940. package/dist/chunk-76FLAAUC.js.map +0 -1
  941. package/dist/chunk-77H5NU3M.js.map +0 -1
  942. package/dist/chunk-7MNMYOFP.js.map +0 -1
  943. package/dist/chunk-7OZ53EXP.js.map +0 -1
  944. package/dist/chunk-7SEAZFFB.js.map +0 -1
  945. package/dist/chunk-A6KTB5R6.js.map +0 -1
  946. package/dist/chunk-AGZQD76C.js.map +0 -1
  947. package/dist/chunk-APO3DCMU.js.map +0 -1
  948. package/dist/chunk-BVF3AGJP.js.map +0 -1
  949. package/dist/chunk-C5BCH4ZS.js.map +0 -1
  950. package/dist/chunk-C7VW7C3F.js.map +0 -1
  951. package/dist/chunk-CULXMQJH.js.map +0 -1
  952. package/dist/chunk-CYFQJMUV.js.map +0 -1
  953. package/dist/chunk-D654IBA6.js +0 -61
  954. package/dist/chunk-D654IBA6.js.map +0 -1
  955. package/dist/chunk-DGXUHMOV.js.map +0 -1
  956. package/dist/chunk-DINWEURR.js.map +0 -1
  957. package/dist/chunk-DK5LDEQM.js.map +0 -1
  958. package/dist/chunk-EABGC2TL.js.map +0 -1
  959. package/dist/chunk-EHRTFRWW.js.map +0 -1
  960. package/dist/chunk-EJI5XIBB.js.map +0 -1
  961. package/dist/chunk-FAAFWE4G.js.map +0 -1
  962. package/dist/chunk-FAJ7FZYM.js +0 -11
  963. package/dist/chunk-FAJ7FZYM.js.map +0 -1
  964. package/dist/chunk-FDU6HUUL.js +0 -147
  965. package/dist/chunk-FDU6HUUL.js.map +0 -1
  966. package/dist/chunk-FIT6DMX6.js.map +0 -1
  967. package/dist/chunk-FJ43PRLT.js.map +0 -1
  968. package/dist/chunk-FLTNHQK6.js +0 -262
  969. package/dist/chunk-FLTNHQK6.js.map +0 -1
  970. package/dist/chunk-GDFS42HT.js.map +0 -1
  971. package/dist/chunk-H3ME6L6D.js.map +0 -1
  972. package/dist/chunk-HXXBL2KD.js.map +0 -1
  973. package/dist/chunk-ICRIXAP2.js.map +0 -1
  974. package/dist/chunk-IQT3XTKW.js.map +0 -1
  975. package/dist/chunk-JR4ZC3G4.js.map +0 -1
  976. package/dist/chunk-K4FLSOR5.js.map +0 -1
  977. package/dist/chunk-KNKUID7G.js.map +0 -1
  978. package/dist/chunk-KOSORCJG.js.map +0 -1
  979. package/dist/chunk-KRBK4BQH.js.map +0 -1
  980. package/dist/chunk-LIRZNNUP.js.map +0 -1
  981. package/dist/chunk-LLQ2LLWF.js.map +0 -1
  982. package/dist/chunk-LPMVBPA3.js +0 -236
  983. package/dist/chunk-LPMVBPA3.js.map +0 -1
  984. package/dist/chunk-LT3NLYSI.js.map +0 -1
  985. package/dist/chunk-LUDTDZLK.js.map +0 -1
  986. package/dist/chunk-MG7NA5H3.js.map +0 -1
  987. package/dist/chunk-MJFNCJXV.js.map +0 -1
  988. package/dist/chunk-MSWG7JI6.js.map +0 -1
  989. package/dist/chunk-MXC3AP5I.js.map +0 -1
  990. package/dist/chunk-MXFBBHJU.js.map +0 -1
  991. package/dist/chunk-MZH6EHNR.js.map +0 -1
  992. package/dist/chunk-N2D6GXBM.js.map +0 -1
  993. package/dist/chunk-NBNN5GOB.js.map +0 -1
  994. package/dist/chunk-NMZY542O.js.map +0 -1
  995. package/dist/chunk-NZL6GGQE.js.map +0 -1
  996. package/dist/chunk-OC7KHOOX.js.map +0 -1
  997. package/dist/chunk-OZHRDTDX.js.map +0 -1
  998. package/dist/chunk-PZIAX57I.js.map +0 -1
  999. package/dist/chunk-Q7P4WJDP.js.map +0 -1
  1000. package/dist/chunk-QA2ZAPBU.js.map +0 -1
  1001. package/dist/chunk-QDZ2RLEC.js.map +0 -1
  1002. package/dist/chunk-QKZGQIPJ.js.map +0 -1
  1003. package/dist/chunk-QLLBRHAT.js.map +0 -1
  1004. package/dist/chunk-QR3C7BKQ.js.map +0 -1
  1005. package/dist/chunk-RHY3HH7P.js.map +0 -1
  1006. package/dist/chunk-RK2Y4XOM.js.map +0 -1
  1007. package/dist/chunk-RR2PKP3I.js +0 -63
  1008. package/dist/chunk-RR2PKP3I.js.map +0 -1
  1009. package/dist/chunk-RRF5UOBJ.js.map +0 -1
  1010. package/dist/chunk-RXDLTSWT.js.map +0 -1
  1011. package/dist/chunk-RYED3SPJ.js +0 -42
  1012. package/dist/chunk-RYED3SPJ.js.map +0 -1
  1013. package/dist/chunk-S7KDBTWT.js.map +0 -1
  1014. package/dist/chunk-TK4UEOSK.js.map +0 -1
  1015. package/dist/chunk-TMM4S4IJ.js.map +0 -1
  1016. package/dist/chunk-TMQLARTH.js.map +0 -1
  1017. package/dist/chunk-TPB3I2AC.js.map +0 -1
  1018. package/dist/chunk-TPMQ3G6Z.js.map +0 -1
  1019. package/dist/chunk-TZOLIGIG.js.map +0 -1
  1020. package/dist/chunk-U3WSW6PZ.js.map +0 -1
  1021. package/dist/chunk-U4SCL7B7.js.map +0 -1
  1022. package/dist/chunk-U66YHYC7.js +0 -31
  1023. package/dist/chunk-U66YHYC7.js.map +0 -1
  1024. package/dist/chunk-UL2NNBUL.js.map +0 -1
  1025. package/dist/chunk-UWVJF25J.js.map +0 -1
  1026. package/dist/chunk-VBJ7V5SK.js.map +0 -1
  1027. package/dist/chunk-W3LR522O.js.map +0 -1
  1028. package/dist/chunk-W4L6CZKA.js.map +0 -1
  1029. package/dist/chunk-W6AQJ2PY.js.map +0 -1
  1030. package/dist/chunk-WELDCG6C.js.map +0 -1
  1031. package/dist/chunk-WNARATI3.js.map +0 -1
  1032. package/dist/chunk-WPGJYVUH.js.map +0 -1
  1033. package/dist/chunk-WW3QQF4H.js.map +0 -1
  1034. package/dist/chunk-XIG5PDM7.js.map +0 -1
  1035. package/dist/chunk-XKECPATV.js.map +0 -1
  1036. package/dist/chunk-XKLD5OK4.js.map +0 -1
  1037. package/dist/chunk-XSZEP4SF.js.map +0 -1
  1038. package/dist/chunk-XVVIG67A.js.map +0 -1
  1039. package/dist/chunk-XYIK4LF6.js.map +0 -1
  1040. package/dist/chunk-YRMVARQP.js.map +0 -1
  1041. package/dist/chunk-ZPKBYX2F.js.map +0 -1
  1042. package/dist/chunk-ZTFCYYEZ.js.map +0 -1
  1043. package/dist/chunk-ZYVPLJ4T.js.map +0 -1
  1044. package/dist/path-MR5JPYOP.js +0 -9
  1045. package/dist/state-store-VZU2IA53.js +0 -16
  1046. package/dist/trace-C5ETWBEF.js.map +0 -1
  1047. /package/dist/{capsule-crypto-5CYAGVC5.js.map → bulk-import/index.js.map} +0 -0
  1048. /package/dist/{contradiction-review-ATP4S6IC.js.map → capsule-crypto-7FJQINUR.js.map} +0 -0
  1049. /package/dist/{capsule-merge-4MGKE7C5.js.map → capsule-merge-T2JRE46P.js.map} +0 -0
  1050. /package/dist/{chunk-SAZS2QZB.js.map → chunk-23UORJ4S.js.map} +0 -0
  1051. /package/dist/{chunk-PK7H5L6Y.js.map → chunk-2NM43EWN.js.map} +0 -0
  1052. /package/dist/{chunk-PYXS46O7.js.map → chunk-3BP57I6J.js.map} +0 -0
  1053. /package/dist/{chunk-FBYESMQ2.js.map → chunk-3C5RPJAX.js.map} +0 -0
  1054. /package/dist/{chunk-N53K2EXC.js.map → chunk-6VF75M3X.js.map} +0 -0
  1055. /package/dist/{chunk-6H2TESSP.js.map → chunk-765K3SAT.js.map} +0 -0
  1056. /package/dist/{chunk-EDTHC6UD.js.map → chunk-77NAFXUD.js.map} +0 -0
  1057. /package/dist/{chunk-MGKYQQYF.js.map → chunk-7Q3RCKAQ.js.map} +0 -0
  1058. /package/dist/{chunk-34DQE4KF.js.map → chunk-CO7ZO4TU.js.map} +0 -0
  1059. /package/dist/{chunk-ZKSK55RC.js.map → chunk-ETUPBUHB.js.map} +0 -0
  1060. /package/dist/{chunk-QRNI5JBH.js.map → chunk-EYIEWJNI.js.map} +0 -0
  1061. /package/dist/{chunk-C6QPK5GG.js.map → chunk-FZZ2QTJI.js.map} +0 -0
  1062. /package/dist/{chunk-3JXBXXM2.js.map → chunk-G4IAEX6D.js.map} +0 -0
  1063. /package/dist/{chunk-2WWLHTZY.js.map → chunk-IC4GELZE.js.map} +0 -0
  1064. /package/dist/{chunk-PCUKNJAZ.js.map → chunk-JKV57BTN.js.map} +0 -0
  1065. /package/dist/{chunk-2KI4QFHU.js.map → chunk-LMDRGRJ2.js.map} +0 -0
  1066. /package/dist/{chunk-MY6TPVXW.js.map → chunk-LMPHTYJC.js.map} +0 -0
  1067. /package/dist/{chunk-5HRY2WRF.js.map → chunk-LZ3VEOU5.js.map} +0 -0
  1068. /package/dist/{chunk-NGAVDO7E.js.map → chunk-OADWQ5CR.js.map} +0 -0
  1069. /package/dist/{chunk-DOM4GKSW.js.map → chunk-OZKVVUJB.js.map} +0 -0
  1070. /package/dist/{chunk-MT4HVDUZ.js.map → chunk-PM3QHTFT.js.map} +0 -0
  1071. /package/dist/{chunk-ZK7I7JYV.js.map → chunk-R3PS27B4.js.map} +0 -0
  1072. /package/dist/{chunk-SKE7JYKA.js.map → chunk-SFXKHM7P.js.map} +0 -0
  1073. /package/dist/{chunk-HMDCOMYU.js.map → chunk-SKGV326D.js.map} +0 -0
  1074. /package/dist/{chunk-5UM2VJ6D.js.map → chunk-UEY3VB6W.js.map} +0 -0
  1075. /package/dist/{chunk-GIF42EW3.js.map → chunk-UP6MOYCB.js.map} +0 -0
  1076. /package/dist/{chunk-MRILGULB.js.map → chunk-V2RCP53Q.js.map} +0 -0
  1077. /package/dist/{chunk-FSFEQI74.js.map → chunk-W7L6HXUC.js.map} +0 -0
  1078. /package/dist/{chunk-3IQ2TR4N.js.map → chunk-WLEB7WCG.js.map} +0 -0
  1079. /package/dist/{chunk-GL6I6MEQ.js.map → chunk-WSGF57U2.js.map} +0 -0
  1080. /package/dist/{chunk-JA3AK3PT.js.map → chunk-XNLXAWHX.js.map} +0 -0
  1081. /package/dist/{chunk-SIC6U3GZ.js.map → chunk-YHV3KRKS.js.map} +0 -0
  1082. /package/dist/{chunk-VLXA6PI2.js.map → chunk-YQMZ7IH2.js.map} +0 -0
  1083. /package/dist/{contradiction-scan-5A4IDZV5.js.map → contradiction-review-6V2LXXK6.js.map} +0 -0
  1084. /package/dist/{migrate-from-identity-anchor-G27MCD6A.js.map → contradiction-scan-GIRVC4C7.js.map} +0 -0
  1085. /package/dist/{first-start-migration-4MHQEOSD.js.map → first-start-migration-CKTCTCQI.js.map} +0 -0
  1086. /package/dist/{graph-edge-decay-5DI5GUNL.js.map → graph-edge-decay-MUP5J7CC.js.map} +0 -0
  1087. /package/dist/{path-MR5JPYOP.js.map → importers/index.js.map} +0 -0
  1088. /package/dist/{peers-HCVGHMAE.js.map → migrate-from-identity-anchor-EB4XI4Q2.js.map} +0 -0
  1089. /package/dist/{resolution-B7FNQSSP.js.map → path-X2K5XCHL.js.map} +0 -0
  1090. /package/dist/{state-store-VZU2IA53.js.map → peers/index.js.map} +0 -0
  1091. /package/dist/{tier-stats-62ZVDFKS.js.map → tier-stats-SKML2OSF.js.map} +0 -0
@@ -58,6 +58,8 @@ interface TokenEntry {
58
58
  token: string;
59
59
  }
60
60
 
61
+ type PersistRollbackManifest = () => Promise<void>;
62
+
61
63
  const MARKER_FILE = ".migrated-from-engram";
62
64
  const LOCK_FILE = ".migration.lock";
63
65
  const ROLLBACK_MANIFEST = ".rollback.json";
@@ -163,11 +165,32 @@ async function pathExistsNoFollow(filePath: string): Promise<boolean> {
163
165
  }
164
166
  }
165
167
 
168
+ async function assertExistingRegularFileNoFollow(filePath: string, label: string): Promise<void> {
169
+ const fileStat = await lstat(filePath);
170
+ if (fileStat.isSymbolicLink()) {
171
+ throw new Error(`${label} must not be a symlink: ${filePath}`);
172
+ }
173
+ if (!fileStat.isFile()) {
174
+ throw new Error(`${label} must be a regular file: ${filePath}`);
175
+ }
176
+ }
177
+
178
+ async function isExistingRegularFileNoFollow(filePath: string): Promise<boolean> {
179
+ try {
180
+ const fileStat = await lstat(filePath);
181
+ return fileStat.isFile() && !fileStat.isSymbolicLink();
182
+ } catch (error) {
183
+ if ((error as NodeJS.ErrnoException).code === "ENOENT") return false;
184
+ throw error;
185
+ }
186
+ }
187
+
166
188
  async function copyTreeMissing(
167
189
  source: string,
168
190
  destination: string,
169
191
  copied: string[],
170
192
  manifest: RollbackManifest,
193
+ persistManifest?: PersistRollbackManifest,
171
194
  isRoot = true,
172
195
  ): Promise<void> {
173
196
  if (!existsSync(source)) return;
@@ -190,6 +213,7 @@ async function copyTreeMissing(
190
213
  path.join(destination, entry.name),
191
214
  copied,
192
215
  manifest,
216
+ persistManifest,
193
217
  false,
194
218
  );
195
219
  }
@@ -199,7 +223,7 @@ async function copyTreeMissing(
199
223
  if (await pathExistsNoFollow(destination)) return;
200
224
  await ensureParent(destination);
201
225
  await copyFile(source, destination);
202
- await recordCreatedPath(destination, manifest);
226
+ await recordCreatedPath(destination, manifest, persistManifest);
203
227
  copied.push(destination);
204
228
  }
205
229
 
@@ -251,6 +275,7 @@ function isPlainJsonObject(value: unknown): value is Record<string, unknown> {
251
275
 
252
276
  async function rewriteTokensIfPresent(filePath: string): Promise<number> {
253
277
  if (!existsSync(filePath)) return 0;
278
+ await assertExistingRegularFileNoFollow(filePath, "Remnic token store");
254
279
  await secureTokenFilePermissions(filePath);
255
280
  let raw: Record<string, unknown>;
256
281
  try {
@@ -294,8 +319,13 @@ async function mergeLegacyTokens(
294
319
  homeDir: string,
295
320
  manifest: RollbackManifest,
296
321
  backupExisting: boolean,
322
+ persistManifest?: PersistRollbackManifest,
297
323
  ): Promise<number> {
324
+ if (existsSync(legacyTokensPath)) {
325
+ await assertExistingRegularFileNoFollow(legacyTokensPath, "legacy Engram token store");
326
+ }
298
327
  if (!existsSync(remnicTokensPath)) return 0;
328
+ await assertExistingRegularFileNoFollow(remnicTokensPath, "Remnic token store");
299
329
  await secureTokenFilePermissions(remnicTokensPath);
300
330
  if (!existsSync(legacyTokensPath)) return rewriteTokensIfPresent(remnicTokensPath);
301
331
 
@@ -325,7 +355,7 @@ async function mergeLegacyTokens(
325
355
  });
326
356
 
327
357
  if (backupExisting) {
328
- await backupFile(remnicTokensPath, originalRemnic, homeDir, manifest);
358
+ await backupFile(remnicTokensPath, originalRemnic, homeDir, manifest, persistManifest);
329
359
  }
330
360
 
331
361
  await writeTokenStoreFile(
@@ -364,7 +394,7 @@ async function mergeLegacyTokens(
364
394
  if (!changed) return rewritten;
365
395
 
366
396
  if (backupExisting) {
367
- await backupFile(remnicTokensPath, originalRemnic, homeDir, manifest);
397
+ await backupFile(remnicTokensPath, originalRemnic, homeDir, manifest, persistManifest);
368
398
  }
369
399
 
370
400
  await writeTokenStoreFile(
@@ -378,8 +408,16 @@ async function rewriteJsonFile(
378
408
  targetPath: string,
379
409
  homeDir: string,
380
410
  manifest: RollbackManifest,
411
+ persistManifest?: PersistRollbackManifest,
381
412
  ): Promise<boolean> {
382
413
  if (!existsSync(targetPath)) return false;
414
+ const targetStat = await lstat(targetPath);
415
+ if (targetStat.isSymbolicLink()) return false;
416
+ if (!targetStat.isFile()) {
417
+ const error = new Error(`connector config must be a regular file: ${targetPath}`) as NodeJS.ErrnoException;
418
+ error.code = targetStat.isDirectory() ? "EISDIR" : "EINVAL";
419
+ throw error;
420
+ }
383
421
 
384
422
  const original = await readFile(targetPath, "utf8");
385
423
  let parsed: unknown;
@@ -408,7 +446,7 @@ async function rewriteJsonFile(
408
446
  const next = `${rewritten}\n`;
409
447
  if (!changed && next === original) return false;
410
448
 
411
- await backupFile(targetPath, original, homeDir, manifest);
449
+ await backupFile(targetPath, original, homeDir, manifest, persistManifest);
412
450
  await writeFile(targetPath, next, "utf8");
413
451
  return true;
414
452
  }
@@ -418,6 +456,7 @@ async function backupFile(
418
456
  originalContent: string,
419
457
  homeDir: string,
420
458
  manifest: RollbackManifest,
459
+ persistManifest?: PersistRollbackManifest,
421
460
  ): Promise<void> {
422
461
  if (manifest.entries.some((entry) => entry.targetPath === targetPath && entry.backupPath)) {
423
462
  return;
@@ -433,11 +472,17 @@ async function backupFile(
433
472
  await chmod(backupPath, originalMode);
434
473
  }
435
474
  manifest.entries.push({ targetPath, backupPath });
475
+ await persistManifest?.();
436
476
  }
437
477
 
438
- async function recordCreatedPath(filePath: string, manifest: RollbackManifest): Promise<void> {
478
+ async function recordCreatedPath(
479
+ filePath: string,
480
+ manifest: RollbackManifest,
481
+ persistManifest?: PersistRollbackManifest,
482
+ ): Promise<void> {
439
483
  if (manifest.entries.some((entry) => entry.targetPath === filePath)) return;
440
484
  manifest.entries.push({ targetPath: filePath, createdByMigration: true });
485
+ await persistManifest?.();
441
486
  }
442
487
 
443
488
  function defaultConnectorConfigPaths(homeDir: string, cwd: string): string[] {
@@ -454,11 +499,12 @@ async function updateConnectorConfigs(
454
499
  cwd: string,
455
500
  options: MigrationOptions | undefined,
456
501
  manifest: RollbackManifest,
502
+ persistManifest?: PersistRollbackManifest,
457
503
  ): Promise<string[]> {
458
504
  const updated: string[] = [];
459
505
  const candidates = options?.connectorConfigPaths ?? defaultConnectorConfigPaths(homeDir, cwd);
460
506
  for (const targetPath of candidates) {
461
- if (await rewriteJsonFile(targetPath, homeDir, manifest)) {
507
+ if (await rewriteJsonFile(targetPath, homeDir, manifest, persistManifest)) {
462
508
  updated.push(targetPath);
463
509
  }
464
510
  }
@@ -469,10 +515,12 @@ async function copyLegacyConfig(
469
515
  homeDir: string,
470
516
  copied: string[],
471
517
  manifest: RollbackManifest,
518
+ persistManifest?: PersistRollbackManifest,
472
519
  ): Promise<void> {
473
520
  const source = legacyConfigPath(homeDir);
474
521
  const destination = remnicConfigPath(homeDir);
475
522
  if (!existsSync(source) || existsSync(destination)) return;
523
+ if (!(await isExistingRegularFileNoFollow(source))) return;
476
524
  await ensureParent(destination);
477
525
  const original = await readFile(source, "utf8");
478
526
  let next = rewriteRemnicText(original);
@@ -487,7 +535,7 @@ async function copyLegacyConfig(
487
535
  // Keep rewritten text when config is not JSON.
488
536
  }
489
537
  await writeFile(destination, `${next.trimEnd()}\n`, "utf8");
490
- await recordCreatedPath(destination, manifest);
538
+ await recordCreatedPath(destination, manifest, persistManifest);
491
539
  copied.push(destination);
492
540
  }
493
541
 
@@ -499,6 +547,7 @@ async function migrateServices(
499
547
  homeDir: string,
500
548
  options: MigrationOptions | undefined,
501
549
  manifest: RollbackManifest,
550
+ persistManifest?: PersistRollbackManifest,
502
551
  ): Promise<string[]> {
503
552
  const logger = resolveLogger(options);
504
553
  const exec = resolveExec(options);
@@ -509,10 +558,11 @@ async function migrateServices(
509
558
  const legacyPlist = path.join(homeDir, "Library", "LaunchAgents", "ai.engram.daemon.plist");
510
559
  const remnicPlist = path.join(homeDir, "Library", "LaunchAgents", "ai.remnic.daemon.plist");
511
560
  if (existsSync(legacyPlist) && !existsSync(remnicPlist)) {
561
+ if (!(await isExistingRegularFileNoFollow(legacyPlist))) return servicesReinstalled;
512
562
  const next = rewriteServiceText(await readFile(legacyPlist, "utf8"));
513
563
  await ensureParent(remnicPlist);
514
564
  await writeFile(remnicPlist, next, "utf8");
515
- await recordCreatedPath(remnicPlist, manifest);
565
+ await recordCreatedPath(remnicPlist, manifest, persistManifest);
516
566
  try {
517
567
  exec("launchctl", ["unload", legacyPlist]);
518
568
  } catch {
@@ -533,10 +583,11 @@ async function migrateServices(
533
583
  const legacyUnit = path.join(homeDir, ".config", "systemd", "user", "engram.service");
534
584
  const remnicUnit = path.join(homeDir, ".config", "systemd", "user", "remnic.service");
535
585
  if (existsSync(legacyUnit) && !existsSync(remnicUnit)) {
586
+ if (!(await isExistingRegularFileNoFollow(legacyUnit))) return servicesReinstalled;
536
587
  const next = rewriteServiceText(await readFile(legacyUnit, "utf8"));
537
588
  await ensureParent(remnicUnit);
538
589
  await writeFile(remnicUnit, next, "utf8");
539
- await recordCreatedPath(remnicUnit, manifest);
590
+ await recordCreatedPath(remnicUnit, manifest, persistManifest);
540
591
  try {
541
592
  exec("systemctl", ["--user", "stop", "engram.service"]);
542
593
  exec("systemctl", ["--user", "disable", "engram.service"]);
@@ -738,16 +789,18 @@ export async function migrateFromEngram(options?: MigrationOptions): Promise<Mig
738
789
  };
739
790
  }
740
791
 
741
- const manifest: RollbackManifest = {
792
+ const manifest: RollbackManifest = await readRollbackManifest(homeDir) ?? {
742
793
  version: 1,
743
794
  createdAt: new Date().toISOString(),
744
795
  entries: [],
745
796
  };
797
+ const persistManifest = () => writeRollbackManifest(homeDir, manifest);
746
798
 
747
799
  logger("First run after Engram -> Remnic rename. Migrating...");
748
800
  await mkdir(remnicRoot(homeDir), { recursive: true });
749
- await copyTreeMissing(legacyRoot(homeDir), remnicRoot(homeDir), copied, manifest);
750
- await copyLegacyConfig(homeDir, copied, manifest);
801
+ await persistManifest();
802
+ await copyTreeMissing(legacyRoot(homeDir), remnicRoot(homeDir), copied, manifest, persistManifest);
803
+ await copyLegacyConfig(homeDir, copied, manifest, persistManifest);
751
804
 
752
805
  const legacyTokens = path.join(legacyRoot(homeDir), "tokens.json");
753
806
  const remnicTokens = path.join(remnicRoot(homeDir), "tokens.json");
@@ -760,18 +813,19 @@ export async function migrateFromEngram(options?: MigrationOptions): Promise<Mig
760
813
  homeDir,
761
814
  manifest,
762
815
  true,
816
+ persistManifest,
763
817
  );
764
818
  }
765
819
  if (existsSync(remnicTokens)) {
766
820
  logger("tokens copied to ~/.remnic/tokens.json (legacy prefixes rewritten)");
767
821
  }
768
822
 
769
- const updatedConfigs = await updateConnectorConfigs(homeDir, cwd, options, manifest);
823
+ const updatedConfigs = await updateConnectorConfigs(homeDir, cwd, options, manifest, persistManifest);
770
824
  for (const updated of updatedConfigs) {
771
825
  logger(`Updated connector config: ${updated}`);
772
826
  }
773
827
 
774
- servicesReinstalled = await migrateServices(homeDir, options, manifest);
828
+ servicesReinstalled = await migrateServices(homeDir, options, manifest, persistManifest);
775
829
  await writeRollbackManifest(homeDir, manifest);
776
830
  await writeFile(markerPath(homeDir), `${new Date().toISOString()}\n`, "utf8");
777
831
  logger("Migration complete. Welcome to Remnic.");
@@ -0,0 +1,38 @@
1
+ import assert from "node:assert/strict";
2
+ import { mkdtempSync, rmSync } from "node:fs";
3
+ import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
+ import test from "node:test";
6
+
7
+ import { ModelRegistry } from "./model-registry.js";
8
+
9
+ test("calculateContextSizes keeps output budget inside a small valid override", () => {
10
+ const dir = mkdtempSync(join(tmpdir(), "remnic-model-registry-"));
11
+ try {
12
+ const registry = new ModelRegistry(dir);
13
+ const sizes = registry.calculateContextSizes("local-model", 1024);
14
+
15
+ assert.equal(sizes.maxOutputTokens, 256);
16
+ assert.match(sizes.description, /1,024 context \(user override\)/);
17
+ assert.ok(sizes.maxInputChars > 0);
18
+ assert.ok(sizes.maxOutputTokens < 1024);
19
+ } finally {
20
+ rmSync(dir, { recursive: true, force: true });
21
+ }
22
+ });
23
+
24
+ test("calculateContextSizes ignores invalid or tiny override values before budgeting", () => {
25
+ const dir = mkdtempSync(join(tmpdir(), "remnic-model-registry-"));
26
+ try {
27
+ const registry = new ModelRegistry(dir);
28
+ for (const override of [0, 128, 256, Number.NaN, Number.POSITIVE_INFINITY]) {
29
+ const sizes = registry.calculateContextSizes("local-model", override);
30
+
31
+ assert.match(sizes.description, /32,768 context \(default\)/);
32
+ assert.ok(sizes.maxInputChars > 0);
33
+ assert.ok(sizes.maxOutputTokens < 32768);
34
+ }
35
+ } finally {
36
+ rmSync(dir, { recursive: true, force: true });
37
+ }
38
+ });
@@ -235,13 +235,20 @@ export class ModelRegistry {
235
235
  const caps = this.getCapabilities(modelId);
236
236
 
237
237
  // Use override if provided (e.g., user knows their LLM server limits), otherwise use detected caps
238
- const effectiveContextWindow = maxContextOverride ?? caps.contextWindow;
238
+ const sanitizedOverride =
239
+ typeof maxContextOverride === "number" &&
240
+ Number.isFinite(maxContextOverride) &&
241
+ Number.isInteger(maxContextOverride) &&
242
+ maxContextOverride >= 1024
243
+ ? maxContextOverride
244
+ : undefined;
245
+ const effectiveContextWindow = sanitizedOverride ?? Math.max(1024, Math.floor(caps.contextWindow));
239
246
 
240
247
  // Guardrails: never allow output budget to exceed the model/server context window.
241
248
  // If we do, input budget goes negative and we end up generating huge, invalid prompts.
242
249
  const overheadTokens = Math.min(1000, Math.floor(effectiveContextWindow / 10)); // <=10% overhead, max 1k
243
250
  const minInputTokens = Math.min(512, Math.floor(effectiveContextWindow / 4)); // keep some room even on small contexts
244
- const minOutputTokens = 256;
251
+ const minOutputTokens = Math.min(256, Math.max(1, effectiveContextWindow - overheadTokens - minInputTokens));
245
252
 
246
253
  // Base output budget: typical output, but scaled down for small contexts.
247
254
  let outputTokens = caps.typicalOutputTokens;
@@ -255,10 +262,8 @@ export class ModelRegistry {
255
262
  outputTokens = Math.min(outputTokens, Math.floor(effectiveContextWindow / 4));
256
263
 
257
264
  // Clamp output so we always have positive input headroom.
258
- outputTokens = Math.max(
259
- minOutputTokens,
260
- Math.min(outputTokens, effectiveContextWindow - overheadTokens - minInputTokens),
261
- );
265
+ const maxOutputTokens = Math.max(1, effectiveContextWindow - overheadTokens - minInputTokens);
266
+ outputTokens = Math.min(maxOutputTokens, Math.max(minOutputTokens, outputTokens));
262
267
 
263
268
  const availableForInput = Math.max(
264
269
  0,
@@ -268,7 +273,7 @@ export class ModelRegistry {
268
273
  // Convert to characters (rough estimate: 1 token ≈ 4 chars)
269
274
  const maxInputChars = Math.max(0, Math.floor(availableForInput * 3.5)); // Conservative: 3.5 chars/token
270
275
 
271
- const source = maxContextOverride ? "user override" : caps.source;
276
+ const source = sanitizedOverride ? "user override" : caps.source;
272
277
  return {
273
278
  maxInputChars,
274
279
  maxOutputTokens: outputTokens,
@@ -0,0 +1,66 @@
1
+ import assert from "node:assert/strict";
2
+ import { mkdir, mkdtemp, rm } from "node:fs/promises";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ import test from "node:test";
6
+
7
+ import { namespaceCollectionName } from "./search.js";
8
+ import { NamespaceStorageRouter } from "./storage.js";
9
+ import type { PluginConfig } from "../types.js";
10
+
11
+ test("namespace collection names preserve case-variant namespace identity", () => {
12
+ const upper = namespaceCollectionName("remnic", "ProjectA");
13
+ const lower = namespaceCollectionName("remnic", "projecta");
14
+
15
+ assert.notEqual(upper, lower);
16
+ assert.match(upper, /^remnic--ns-[0-9a-f]+$/);
17
+ assert.match(lower, /^remnic--ns-[0-9a-f]+$/);
18
+ });
19
+
20
+ test("namespace storage paths preserve case-variant namespace identity", async () => {
21
+ const memoryDir = await mkdtemp(path.join(os.tmpdir(), "remnic-ns-"));
22
+ try {
23
+ const config = {
24
+ memoryDir,
25
+ namespacesEnabled: true,
26
+ defaultNamespace: "default",
27
+ entitySchemas: {},
28
+ inlineSourceAttributionFormat: undefined,
29
+ } as unknown as PluginConfig;
30
+ const router = new NamespaceStorageRouter(config);
31
+
32
+ const upper = await router.storageFor("ProjectA");
33
+ const lower = await router.storageFor("projecta");
34
+
35
+ assert.notEqual(upper.dir, lower.dir);
36
+ assert.ok(upper.dir.startsWith(path.join(memoryDir, "namespaces")));
37
+ assert.ok(lower.dir.startsWith(path.join(memoryDir, "namespaces")));
38
+ } finally {
39
+ await rm(memoryDir, { recursive: true, force: true });
40
+ }
41
+ });
42
+
43
+ test("namespace storage prefers tokenized roots that contain migrated data", async () => {
44
+ const memoryDir = await mkdtemp(path.join(os.tmpdir(), "remnic-ns-"));
45
+ try {
46
+ const config = {
47
+ memoryDir,
48
+ namespacesEnabled: true,
49
+ defaultNamespace: "default",
50
+ entitySchemas: {},
51
+ inlineSourceAttributionFormat: undefined,
52
+ } as unknown as PluginConfig;
53
+ await mkdir(path.join(memoryDir, "namespaces", "team-beta"), { recursive: true });
54
+ const router = new NamespaceStorageRouter(config);
55
+ const beforeMigration = await router.storageFor("team-beta");
56
+ assert.equal(beforeMigration.dir, path.join(memoryDir, "namespaces", "team-beta"));
57
+
58
+ await mkdir(path.join(memoryDir, "namespaces", "ns-7465616d2d62657461", "preferences"), {
59
+ recursive: true,
60
+ });
61
+ const afterMigration = await router.storageFor("team-beta");
62
+ assert.equal(afterMigration.dir, path.join(memoryDir, "namespaces", "ns-7465616d2d62657461"));
63
+ } finally {
64
+ await rm(memoryDir, { recursive: true, force: true });
65
+ }
66
+ });
@@ -0,0 +1,23 @@
1
+ export function normalizeNamespaceIdentity(namespace: string): string {
2
+ return namespace.trim();
3
+ }
4
+
5
+ export function namespaceIdentityToken(namespace: string): string {
6
+ const normalized = normalizeNamespaceIdentity(namespace);
7
+ const bytes = new TextEncoder().encode(normalized);
8
+ const hex = Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join("");
9
+ return `ns-${hex || "default"}`;
10
+ }
11
+
12
+ export function namespaceIdentityFromToken(token: string): string | null {
13
+ if (!token.startsWith("ns-")) return null;
14
+ const hex = token.slice(3);
15
+ if (hex === "default") return "";
16
+ if (hex.length === 0 || hex.length % 2 !== 0 || !/^[0-9a-f]+$/i.test(hex)) {
17
+ return null;
18
+ }
19
+ const decoded = Buffer.from(hex, "hex").toString("utf8");
20
+ return namespaceIdentityToken(decoded).toLowerCase() === token.toLowerCase()
21
+ ? decoded
22
+ : null;
23
+ }
@@ -0,0 +1,62 @@
1
+ import assert from "node:assert/strict";
2
+ import { mkdir, mkdtemp, rm } from "node:fs/promises";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ import test from "node:test";
6
+ import type { PluginConfig } from "../types.js";
7
+ import { namespaceIdentityToken } from "./identity.js";
8
+ import { listNamespaces } from "./migrate.js";
9
+
10
+ test("listNamespaces decodes tokenized namespace directories", async () => {
11
+ const memoryDir = await mkdtemp(path.join(os.tmpdir(), "remnic-ns-migrate-"));
12
+ try {
13
+ const namespace = "team-beta";
14
+ await mkdir(path.join(memoryDir, "namespaces", namespaceIdentityToken(namespace), "facts"), {
15
+ recursive: true,
16
+ });
17
+ const namespaces = await listNamespaces({
18
+ config: {
19
+ memoryDir,
20
+ namespacesEnabled: true,
21
+ defaultNamespace: "default",
22
+ sharedNamespace: "shared",
23
+ namespacePolicies: [],
24
+ qmdCollection: "remnic",
25
+ entitySchemas: {},
26
+ inlineSourceAttributionFormat: undefined,
27
+ } as unknown as PluginConfig,
28
+ });
29
+
30
+ assert.ok(namespaces.some((entry) => entry.namespace === namespace && entry.hasMemoryData));
31
+ assert.ok(!namespaces.some((entry) => entry.namespace === namespaceIdentityToken(namespace)));
32
+ } finally {
33
+ await rm(memoryDir, { recursive: true, force: true });
34
+ }
35
+ });
36
+
37
+ test("listNamespaces preserves configured raw namespace names that look tokenized", async () => {
38
+ const memoryDir = await mkdtemp(path.join(os.tmpdir(), "remnic-ns-migrate-"));
39
+ try {
40
+ const namespace = namespaceIdentityToken("team-beta");
41
+ await mkdir(path.join(memoryDir, "namespaces", namespace, "facts"), {
42
+ recursive: true,
43
+ });
44
+ const namespaces = await listNamespaces({
45
+ config: {
46
+ memoryDir,
47
+ namespacesEnabled: true,
48
+ defaultNamespace: "default",
49
+ sharedNamespace: "shared",
50
+ namespacePolicies: [{ name: namespace, readPrincipals: ["*"], writePrincipals: ["*"] }],
51
+ qmdCollection: "remnic",
52
+ entitySchemas: {},
53
+ inlineSourceAttributionFormat: undefined,
54
+ } as unknown as PluginConfig,
55
+ });
56
+
57
+ assert.ok(namespaces.some((entry) => entry.namespace === namespace && entry.hasMemoryData));
58
+ assert.ok(!namespaces.some((entry) => entry.namespace === "team-beta"));
59
+ } finally {
60
+ await rm(memoryDir, { recursive: true, force: true });
61
+ }
62
+ });
@@ -1,25 +1,20 @@
1
1
  import path from "node:path";
2
- import { access, mkdir, readdir, rename } from "node:fs/promises";
2
+ import { access, lstat, mkdir, readdir, realpath, rename, rmdir } from "node:fs/promises";
3
3
  import type { PluginConfig } from "../types.js";
4
4
  import { NamespaceStorageRouter } from "./storage.js";
5
5
  import { namespaceCollectionName } from "./search.js";
6
6
  import { isSafeRouteNamespace } from "../routing/engine.js";
7
+ import { namespaceIdentityFromToken, namespaceIdentityToken } from "./identity.js";
8
+ import { ALL_CATEGORY_DIRS } from "../utils/category-dir.js";
7
9
 
8
10
  const LEGACY_NAMESPACE_CHILDREN = [
9
- "facts",
10
- "corrections",
11
+ ...ALL_CATEGORY_DIRS,
11
12
  "entities",
12
- "questions",
13
13
  "artifacts",
14
14
  "identity",
15
15
  "state",
16
16
  "config",
17
17
  "summaries",
18
- "procedures",
19
- // Issue #564 PR 3: reasoning_trace memories live in their own subtree.
20
- // Must be included here so namespace migration moves existing traces
21
- // into the target namespace root alongside other memory data.
22
- "reasoning-traces",
23
18
  "profile.md",
24
19
  ] as const;
25
20
 
@@ -75,13 +70,18 @@ async function discoverConfiguredNamespaces(
75
70
  config.sharedNamespace,
76
71
  ...config.namespacePolicies.map((policy) => policy.name),
77
72
  ]);
73
+ const configuredNamespaces = new Set(discovered);
78
74
 
79
75
  const namespacesDir = path.join(config.memoryDir, "namespaces");
80
76
  try {
81
77
  const entries = await readdir(namespacesDir, { withFileTypes: true });
82
78
  for (const entry of entries) {
83
- if (entry.isDirectory() && isSafeRouteNamespace(entry.name)) {
84
- discovered.add(entry.name);
79
+ if (!entry.isDirectory()) continue;
80
+ const namespace = configuredNamespaces.has(entry.name)
81
+ ? entry.name
82
+ : namespaceIdentityFromToken(entry.name) ?? entry.name;
83
+ if (isSafeRouteNamespace(namespace)) {
84
+ discovered.add(namespace);
85
85
  }
86
86
  }
87
87
  } catch {
@@ -144,6 +144,7 @@ export async function runNamespaceMigration(options: {
144
144
  config: PluginConfig;
145
145
  to: string;
146
146
  dryRun?: boolean;
147
+ renameFn?: typeof rename;
147
148
  }): Promise<NamespaceMigrationReport> {
148
149
  if (!options.config.namespacesEnabled) {
149
150
  throw new Error("Namespaces are disabled.");
@@ -154,8 +155,13 @@ export async function runNamespaceMigration(options: {
154
155
  throw new Error(`Invalid namespace: ${options.to}`);
155
156
  }
156
157
 
157
- const targetRoot = path.join(options.config.memoryDir, "namespaces", targetNamespace);
158
+ const targetRoot = path.join(
159
+ options.config.memoryDir,
160
+ "namespaces",
161
+ namespaceIdentityToken(targetNamespace),
162
+ );
158
163
  const moved: NamespaceMigrationMove[] = [];
164
+ const renamePath = options.renameFn ?? rename;
159
165
 
160
166
  for (const child of LEGACY_NAMESPACE_CHILDREN) {
161
167
  const from = path.join(options.config.memoryDir, child);
@@ -164,13 +170,45 @@ export async function runNamespaceMigration(options: {
164
170
  if (await exists(to)) {
165
171
  throw new Error(`Target already contains ${child}: ${to}`);
166
172
  }
173
+ const sourceStat = await lstat(from);
174
+ if (sourceStat.isSymbolicLink()) {
175
+ throw new Error(`Refusing to migrate symlinked legacy path: ${from}`);
176
+ }
167
177
  moved.push({ from, to });
168
178
  }
169
179
 
170
180
  if (!options.dryRun && moved.length > 0) {
181
+ await assertSafeNamespaceTarget(options.config.memoryDir, targetRoot);
171
182
  await mkdir(targetRoot, { recursive: true });
172
- for (const move of moved) {
173
- await rename(move.from, move.to);
183
+ await assertSafeNamespaceTarget(options.config.memoryDir, targetRoot);
184
+ const completed: NamespaceMigrationMove[] = [];
185
+ try {
186
+ for (const move of moved) {
187
+ await renamePath(move.from, move.to);
188
+ completed.push(move);
189
+ }
190
+ } catch (cause) {
191
+ const rollbackErrors: string[] = [];
192
+ for (const move of completed.reverse()) {
193
+ try {
194
+ if (!(await exists(move.from)) && (await exists(move.to))) {
195
+ await rename(move.to, move.from);
196
+ }
197
+ } catch (rollbackCause) {
198
+ rollbackErrors.push(rollbackCause instanceof Error ? rollbackCause.message : String(rollbackCause));
199
+ }
200
+ }
201
+ try {
202
+ await rmdir(targetRoot);
203
+ } catch {
204
+ // Target may predate migration or still contain unrelated files.
205
+ }
206
+ const message = cause instanceof Error ? cause.message : String(cause);
207
+ throw new Error(
208
+ `Namespace migration failed and was rolled back: ${message}` +
209
+ (rollbackErrors.length > 0 ? `; rollback errors: ${rollbackErrors.join("; ")}` : ""),
210
+ { cause },
211
+ );
174
212
  }
175
213
  }
176
214
 
@@ -185,3 +223,33 @@ export async function runNamespaceMigration(options: {
185
223
  }),
186
224
  };
187
225
  }
226
+
227
+ async function assertSafeNamespaceTarget(memoryDir: string, targetRoot: string): Promise<void> {
228
+ const memoryReal = await realpath(memoryDir);
229
+ const namespacesDir = path.join(memoryDir, "namespaces");
230
+ if (await exists(namespacesDir)) {
231
+ const namespacesStat = await lstat(namespacesDir);
232
+ if (namespacesStat.isSymbolicLink()) {
233
+ throw new Error(`Refusing to migrate through symlinked namespaces directory: ${namespacesDir}`);
234
+ }
235
+ const namespacesReal = await realpath(namespacesDir);
236
+ if (!isPathInside(memoryReal, namespacesReal)) {
237
+ throw new Error(`Refusing to migrate through namespaces directory outside memoryDir: ${namespacesDir}`);
238
+ }
239
+ }
240
+ if (await exists(targetRoot)) {
241
+ const targetStat = await lstat(targetRoot);
242
+ if (targetStat.isSymbolicLink()) {
243
+ throw new Error(`Refusing to migrate into symlinked namespace root: ${targetRoot}`);
244
+ }
245
+ const targetReal = await realpath(targetRoot);
246
+ if (!isPathInside(memoryReal, targetReal)) {
247
+ throw new Error(`Refusing to migrate into namespace root outside memoryDir: ${targetRoot}`);
248
+ }
249
+ }
250
+ }
251
+
252
+ function isPathInside(root: string, child: string): boolean {
253
+ const relative = path.relative(root, child);
254
+ return relative === "" || (!relative.startsWith("..") && !path.isAbsolute(relative));
255
+ }