@remnic/core 9.69.22 → 9.69.24

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 (772) hide show
  1. package/dist/abstraction-nodes.js +3 -2
  2. package/dist/access-admin-ops-surface.d.ts +14 -12
  3. package/dist/access-admin-ops-surface.js +94 -91
  4. package/dist/access-authorization-probe.d.ts +14 -12
  5. package/dist/access-authorization-probe.js +95 -92
  6. package/dist/access-boundary.d.ts +14 -12
  7. package/dist/access-boundary.js +94 -91
  8. package/dist/access-citation-namespace.js +3 -3
  9. package/dist/access-cli.js +200 -195
  10. package/dist/access-cli.js.map +1 -1
  11. package/dist/access-coding-context-resolution.d.ts +2 -1
  12. package/dist/access-extraction-force-flush.d.ts +14 -12
  13. package/dist/access-extraction-force-flush.js +94 -91
  14. package/dist/access-health-types.d.ts +2 -1
  15. package/dist/access-http-briefing.d.ts +156 -0
  16. package/dist/access-http-briefing.js +233 -0
  17. package/dist/access-http-lcm-compaction.d.ts +14 -12
  18. package/dist/access-http-lifecycle-flush.d.ts +14 -12
  19. package/dist/access-http-offline-stream.d.ts +14 -12
  20. package/dist/access-http-query.d.ts +3 -2
  21. package/dist/access-http-query.js +96 -93
  22. package/dist/access-http.d.ts +15 -13
  23. package/dist/access-http.js +119 -114
  24. package/dist/access-identity-continuity-surface.d.ts +12 -10
  25. package/dist/access-identity-continuity-surface.js +94 -91
  26. package/dist/access-lcm-surface.d.ts +14 -12
  27. package/dist/access-lcm-surface.js +94 -91
  28. package/dist/access-mcp.d.ts +14 -12
  29. package/dist/access-mcp.js +105 -101
  30. package/dist/access-memory-search-fanout.d.ts +3 -2
  31. package/dist/{access-namespace-preflight-BMHhxoL9.d.ts → access-namespace-preflight-BsvmyENS.d.ts} +1 -1
  32. package/dist/access-namespace-preflight.d.ts +4 -3
  33. package/dist/access-namespace-preflight.js +94 -91
  34. package/dist/access-observe-transcript.d.ts +12 -10
  35. package/dist/access-observe-write-surface.d.ts +14 -12
  36. package/dist/access-observe-write-surface.js +94 -91
  37. package/dist/access-offline-manifest.d.ts +12 -10
  38. package/dist/access-offline-manifest.js +15 -15
  39. package/dist/access-operations-batch.js +99 -95
  40. package/dist/access-operations.d.ts +14 -12
  41. package/dist/access-operations.js +104 -100
  42. package/dist/access-recall-concurrency.d.ts +14 -12
  43. package/dist/access-recall-concurrency.js +94 -91
  44. package/dist/access-recall-response.d.ts +14 -12
  45. package/dist/access-recall-response.js +94 -91
  46. package/dist/access-recall-surface.d.ts +14 -12
  47. package/dist/access-recall-surface.js +94 -91
  48. package/dist/access-schema.js +8 -7
  49. package/dist/{access-service-BlsNXFwx.d.ts → access-service-DWdY9Mlk.d.ts} +7 -7
  50. package/dist/access-service-helpers.d.ts +14 -12
  51. package/dist/access-service.d.ts +14 -12
  52. package/dist/access-service.js +94 -91
  53. package/dist/access-surface-catalog.d.ts +14 -12
  54. package/dist/access-surface-catalog.js +97 -93
  55. package/dist/access-surface-catalog.js.map +1 -1
  56. package/dist/access-wearables-meetings-surface.d.ts +4 -3
  57. package/dist/action-confidence.d.ts +2 -1
  58. package/dist/active-memory-bridge.d.ts +2 -1
  59. package/dist/active-recall.d.ts +2 -1
  60. package/dist/active-recall.js +16 -13
  61. package/dist/active-recall.js.map +1 -1
  62. package/dist/adapters/index.js +7 -7
  63. package/dist/adapters/registry.js +3 -3
  64. package/dist/ambient-provenance.d.ts +2 -1
  65. package/dist/artifact-search.d.ts +2 -1
  66. package/dist/{auto-sync-GRUJFD2F.js → auto-sync-WNGG2GC2.js} +9 -9
  67. package/dist/behavior-learner.d.ts +2 -1
  68. package/dist/behavior-signals.d.ts +2 -1
  69. package/dist/bootstrap.d.ts +12 -10
  70. package/dist/briefing-window.d.ts +3 -2
  71. package/dist/briefing.d.ts +3 -2
  72. package/dist/briefing.js +36 -36
  73. package/dist/buffer-surprise-report.d.ts +2 -1
  74. package/dist/buffer-turn-helpers.d.ts +2 -1
  75. package/dist/buffer.d.ts +3 -2
  76. package/dist/buffer.js +13 -13
  77. package/dist/bulk-import/index.d.ts +4 -3
  78. package/dist/calibration.d.ts +2 -1
  79. package/dist/calibration.js +2 -1
  80. package/dist/calibration.js.map +1 -1
  81. package/dist/capabilities.d.ts +2 -1
  82. package/dist/{capsule-crypto-7FJQINUR.js → capsule-crypto-YO5QJ6L3.js} +2 -2
  83. package/dist/{capsule-merge-SEHERWWP.js → capsule-merge-IPG4IOFP.js} +5 -5
  84. package/dist/{catalog-C1qHsGew.d.ts → catalog-CDZLyiXL.d.ts} +1 -1
  85. package/dist/causal-behavior.d.ts +2 -1
  86. package/dist/causal-behavior.js +4 -3
  87. package/dist/causal-behavior.js.map +1 -1
  88. package/dist/causal-chain.js +4 -3
  89. package/dist/causal-consolidation.d.ts +2 -1
  90. package/dist/causal-consolidation.js +42 -42
  91. package/dist/causal-retrieval.js +4 -3
  92. package/dist/causal-retrieval.js.map +1 -1
  93. package/dist/causal-trajectory-graph.d.ts +5 -2
  94. package/dist/causal-trajectory-graph.js +6 -2
  95. package/dist/causal-trajectory-graph.js.map +1 -1
  96. package/dist/causal-trajectory.js +3 -2
  97. package/dist/{chunk-KTVSPFCQ.js → chunk-22FVR2KE.js} +2 -2
  98. package/dist/{chunk-7Y5V3LAP.js → chunk-27QVNSQ3.js} +2 -2
  99. package/dist/{chunk-R7LY4YKF.js → chunk-2EKJDQZB.js} +2 -2
  100. package/dist/{chunk-FCATYKQA.js → chunk-2IOHTUP3.js} +263 -13
  101. package/dist/chunk-2IOHTUP3.js.map +1 -0
  102. package/dist/{chunk-HOUST5UX.js → chunk-2ITE4C2Z.js} +2 -2
  103. package/dist/{chunk-JOYC4RYC.js → chunk-2JVJ7UHC.js} +2 -2
  104. package/dist/{chunk-X2NFFBTO.js → chunk-2L5FSNPC.js} +7 -7
  105. package/dist/{chunk-DUAJKRR2.js → chunk-2SGLMP2E.js} +2 -2
  106. package/dist/{chunk-6FUMA6AA.js → chunk-2Z4GS5E6.js} +2 -2
  107. package/dist/{chunk-G6MXN2G5.js → chunk-37KUQPX4.js} +6 -6
  108. package/dist/{chunk-DDQQY2E3.js → chunk-3BTFBQLO.js} +7 -7
  109. package/dist/chunk-3BTFBQLO.js.map +1 -0
  110. package/dist/{chunk-UR6PBX2J.js → chunk-3K7V3HE6.js} +35 -60
  111. package/dist/chunk-3K7V3HE6.js.map +1 -0
  112. package/dist/{chunk-WKAXBXVA.js → chunk-3QQTXYZ6.js} +2 -2
  113. package/dist/{chunk-DJUKBGAD.js → chunk-46EST7JO.js} +5 -5
  114. package/dist/chunk-46EST7JO.js.map +1 -0
  115. package/dist/{chunk-4ZWCQJNM.js → chunk-46WM6JX2.js} +5 -5
  116. package/dist/{chunk-CASWJ2HM.js → chunk-46ZPIGWI.js} +3 -3
  117. package/dist/{chunk-HTIIXNJQ.js → chunk-4FIH6MPS.js} +6 -3
  118. package/dist/chunk-4FIH6MPS.js.map +1 -0
  119. package/dist/{chunk-MCA2X4WH.js → chunk-4IHBN6WU.js} +2 -2
  120. package/dist/{chunk-W7IGLX4G.js → chunk-4O6WRBGE.js} +7 -7
  121. package/dist/chunk-4O6WRBGE.js.map +1 -0
  122. package/dist/{chunk-FB7LAJQM.js → chunk-4TKJGOCJ.js} +2 -2
  123. package/dist/{chunk-H7BZBSP6.js → chunk-52II7PB6.js} +4 -4
  124. package/dist/{chunk-N4Y5T6VD.js → chunk-54WHLA65.js} +4 -4
  125. package/dist/chunk-56Y6EKZN.js +24 -0
  126. package/dist/chunk-56Y6EKZN.js.map +1 -0
  127. package/dist/{chunk-YVLENSNS.js → chunk-5ATKSPEQ.js} +2 -2
  128. package/dist/{chunk-OLT3YTDH.js → chunk-5FAGCOZD.js} +37 -24
  129. package/dist/chunk-5FAGCOZD.js.map +1 -0
  130. package/dist/{chunk-ZVZHG7AI.js → chunk-5UBH37SL.js} +3 -3
  131. package/dist/{chunk-N3WZU76A.js → chunk-66OJSCI6.js} +2 -2
  132. package/dist/{chunk-D35XLYQ7.js → chunk-6CVNSDCZ.js} +11 -11
  133. package/dist/{chunk-KA2HZCMG.js → chunk-6NXSYYGP.js} +2 -2
  134. package/dist/{chunk-2HIJHXB3.js → chunk-6WHJ2EAB.js} +2 -2
  135. package/dist/{chunk-ZZM476NV.js → chunk-6XL73HQ4.js} +4 -4
  136. package/dist/{chunk-EJ5RKUXW.js → chunk-AQ7SYDVO.js} +2 -2
  137. package/dist/{chunk-2Z3DG5CQ.js → chunk-B3O3IRZN.js} +2 -2
  138. package/dist/{chunk-P77QX3ID.js → chunk-B6O2YLUR.js} +21 -20
  139. package/dist/chunk-B6O2YLUR.js.map +1 -0
  140. package/dist/{chunk-RACZB5HT.js → chunk-BD7JTBYP.js} +4 -4
  141. package/dist/{chunk-I762GW7V.js → chunk-BLJWYCNO.js} +5 -5
  142. package/dist/{chunk-ACPCA4NO.js → chunk-BMWN7B3Y.js} +6 -6
  143. package/dist/chunk-BMWN7B3Y.js.map +1 -0
  144. package/dist/{chunk-2NLLXCJG.js → chunk-BXLOS5AJ.js} +2 -2
  145. package/dist/{chunk-KK66P5GQ.js → chunk-C553ZTLF.js} +46 -48
  146. package/dist/chunk-C553ZTLF.js.map +1 -0
  147. package/dist/{chunk-GCASGYIO.js → chunk-C7HJ3NEI.js} +2 -2
  148. package/dist/{chunk-C24UZSFW.js → chunk-CEH2AFXG.js} +6 -6
  149. package/dist/{chunk-WVGXCBOC.js → chunk-D5F7TKMH.js} +2 -2
  150. package/dist/chunk-DGS34QSY.js +141 -0
  151. package/dist/chunk-DGS34QSY.js.map +1 -0
  152. package/dist/{chunk-X7Y7WX73.js → chunk-DQEMWVMT.js} +1 -1
  153. package/dist/{chunk-2OXIPF3A.js → chunk-DZD3WGCD.js} +4 -4
  154. package/dist/{chunk-UMEOXLIZ.js → chunk-E2P7TZTF.js} +5 -5
  155. package/dist/{chunk-6FC3IZ26.js → chunk-EBA5DA77.js} +2 -2
  156. package/dist/{chunk-N7JK2RKG.js → chunk-EOQ6FSQP.js} +2 -2
  157. package/dist/chunk-EUT2WCWS.js +54 -0
  158. package/dist/chunk-EUT2WCWS.js.map +1 -0
  159. package/dist/{chunk-YNDLCWXS.js → chunk-EZ25VE3G.js} +4 -4
  160. package/dist/{chunk-XDMI5VKE.js → chunk-FVOP3NT7.js} +2 -2
  161. package/dist/{chunk-NRLELHAY.js → chunk-G7NYVKD6.js} +2 -2
  162. package/dist/{chunk-B3W7GWQB.js → chunk-GHTSNGBZ.js} +2 -2
  163. package/dist/chunk-GKCXTSFF.js +17 -0
  164. package/dist/chunk-GKCXTSFF.js.map +1 -0
  165. package/dist/{chunk-LUDBXTBJ.js → chunk-H272ZPQ3.js} +5 -5
  166. package/dist/{chunk-SN4JXNLL.js → chunk-H3TKENU4.js} +2 -2
  167. package/dist/{chunk-4HYNMLT6.js → chunk-H4SEGIZY.js} +2 -2
  168. package/dist/{chunk-ACZN5ZXD.js → chunk-H54VWRPS.js} +13 -13
  169. package/dist/{chunk-HTP6XRUI.js → chunk-HM7RHKS4.js} +2 -2
  170. package/dist/{chunk-Z3SQEEB6.js → chunk-HWLIMQE2.js} +2 -2
  171. package/dist/{chunk-NQFCLAYT.js → chunk-ICKJ52PE.js} +99 -322
  172. package/dist/chunk-ICKJ52PE.js.map +1 -0
  173. package/dist/{chunk-2QSZNTDO.js → chunk-JBPKEARU.js} +7 -7
  174. package/dist/{chunk-DK6GMO6D.js → chunk-JEC4DVM3.js} +16 -16
  175. package/dist/chunk-JEC4DVM3.js.map +1 -0
  176. package/dist/{chunk-ET2CNMLD.js → chunk-JN72EPOE.js} +2 -2
  177. package/dist/{chunk-U62OK7BB.js → chunk-JPKK466T.js} +188 -21
  178. package/dist/chunk-JPKK466T.js.map +1 -0
  179. package/dist/{chunk-JCCWJHOP.js → chunk-JYZSRNR7.js} +2 -2
  180. package/dist/{chunk-7D6HXODY.js → chunk-K7724CH2.js} +2 -2
  181. package/dist/{chunk-X33MJFD2.js → chunk-KAXCYM66.js} +3 -3
  182. package/dist/{chunk-7RRUHJPG.js → chunk-KB2G2I6Q.js} +3 -3
  183. package/dist/{chunk-ZXBTTMGZ.js → chunk-KEF46KL2.js} +5 -5
  184. package/dist/{chunk-5UZXUTVO.js → chunk-KNA3BXXL.js} +6 -2
  185. package/dist/chunk-KNA3BXXL.js.map +1 -0
  186. package/dist/{chunk-UWTDARPF.js → chunk-KTWG7CNY.js} +6 -6
  187. package/dist/{chunk-XQYTSZW3.js → chunk-L7Z57SID.js} +6 -6
  188. package/dist/{chunk-JMAG7WZ7.js → chunk-LO4UKPKX.js} +3 -3
  189. package/dist/{chunk-LDWIPYJ6.js → chunk-LS2FHUML.js} +3 -3
  190. package/dist/{chunk-GDB4J2H3.js → chunk-MPC7TYTZ.js} +2 -2
  191. package/dist/{chunk-2GF27PGH.js → chunk-MRPOZBJC.js} +3 -3
  192. package/dist/{chunk-BR3OOQZQ.js → chunk-MWN6QEI2.js} +2 -2
  193. package/dist/{chunk-NZGO2GKL.js → chunk-MY5EDR46.js} +4 -4
  194. package/dist/{chunk-LCMUZDBZ.js → chunk-N3ZOP7KC.js} +3 -3
  195. package/dist/{chunk-TVW4C7PV.js → chunk-NB3LRY4T.js} +6 -6
  196. package/dist/{chunk-QJCWK2A7.js → chunk-ND6IQGSZ.js} +2 -2
  197. package/dist/{chunk-NOB2T2FC.js → chunk-NHLLKEKK.js} +2 -2
  198. package/dist/{chunk-7GSSHAXC.js → chunk-NLYVH66G.js} +6 -6
  199. package/dist/chunk-NLYVH66G.js.map +1 -0
  200. package/dist/{chunk-EJIWBTVM.js → chunk-O6ZNNVSP.js} +2 -2
  201. package/dist/{chunk-AG46P24C.js → chunk-OB3XMWX5.js} +4 -4
  202. package/dist/{chunk-NYRB7BKY.js → chunk-OEYZXDQI.js} +6 -6
  203. package/dist/chunk-OEYZXDQI.js.map +1 -0
  204. package/dist/{chunk-46QMN7I7.js → chunk-PAZY2ZKP.js} +6 -6
  205. package/dist/{chunk-EF4JUM55.js → chunk-PX4UMA5Z.js} +2 -2
  206. package/dist/chunk-QLK3SL7Q.js +242 -0
  207. package/dist/chunk-QLK3SL7Q.js.map +1 -0
  208. package/dist/{chunk-GGYDJJBO.js → chunk-QOOBICJF.js} +5 -5
  209. package/dist/chunk-QOOBICJF.js.map +1 -0
  210. package/dist/{chunk-NNZFPYYX.js → chunk-R7QY5ZVB.js} +2 -2
  211. package/dist/{chunk-RO2X2EYM.js → chunk-R7RTXEYG.js} +2 -2
  212. package/dist/{chunk-3LJPSRAN.js → chunk-RBCQVOVJ.js} +3 -3
  213. package/dist/{chunk-N4F7ZSSG.js → chunk-RC5DXXWC.js} +2 -2
  214. package/dist/{chunk-VLAQV4HT.js → chunk-RJYJ7KR7.js} +1636 -611
  215. package/dist/chunk-RJYJ7KR7.js.map +1 -0
  216. package/dist/{chunk-5CF2R4NS.js → chunk-RKBLRTNT.js} +2 -2
  217. package/dist/{chunk-5QZR2RA3.js → chunk-ROBHL3GL.js} +2 -2
  218. package/dist/{chunk-D5ZNOKR7.js → chunk-S7T2TY65.js} +3 -3
  219. package/dist/{chunk-C2JCVZWX.js → chunk-SCXURCVT.js} +25 -13
  220. package/dist/chunk-SCXURCVT.js.map +1 -0
  221. package/dist/{chunk-3LADWWMA.js → chunk-SJDQ5RSN.js} +3 -3
  222. package/dist/{chunk-45XVII3J.js → chunk-SMWTZLHE.js} +99 -89
  223. package/dist/{chunk-45XVII3J.js.map → chunk-SMWTZLHE.js.map} +1 -1
  224. package/dist/{chunk-XOQGUGJL.js → chunk-SO7SV523.js} +1 -1
  225. package/dist/{chunk-XOQGUGJL.js.map → chunk-SO7SV523.js.map} +1 -1
  226. package/dist/{chunk-CHWUICVY.js → chunk-SV4Z2S67.js} +4 -4
  227. package/dist/{chunk-JHP45LO5.js → chunk-SVXJLDDC.js} +9 -7
  228. package/dist/{chunk-JHP45LO5.js.map → chunk-SVXJLDDC.js.map} +1 -1
  229. package/dist/{chunk-SEF4IOFE.js → chunk-SWIKABKI.js} +2 -2
  230. package/dist/{chunk-JRRQ747T.js → chunk-TBXAY2SS.js} +13 -13
  231. package/dist/{chunk-J6A3CX5N.js → chunk-TG3FAM2S.js} +33 -8
  232. package/dist/{chunk-J6A3CX5N.js.map → chunk-TG3FAM2S.js.map} +1 -1
  233. package/dist/{chunk-XZBXINXZ.js → chunk-TNSCIPBQ.js} +4 -4
  234. package/dist/{chunk-S37NN23M.js → chunk-TVEONGBU.js} +2 -2
  235. package/dist/{chunk-5RPMTFB6.js → chunk-TWF35IC6.js} +3 -3
  236. package/dist/{chunk-BZTJEILZ.js → chunk-U6N5IBVY.js} +2 -2
  237. package/dist/{chunk-7TUB6JWA.js → chunk-UCKYTA2T.js} +3 -3
  238. package/dist/{chunk-PPOT6SPR.js → chunk-UNNPNBR2.js} +11 -11
  239. package/dist/{chunk-KQAFEZQX.js → chunk-VDX2J7OX.js} +2 -2
  240. package/dist/{chunk-J2R275FN.js → chunk-VVX5PZFS.js} +4 -4
  241. package/dist/{chunk-ME35HVDJ.js → chunk-VYCOJKSX.js} +2 -2
  242. package/dist/{chunk-F5UWQ4LX.js → chunk-W24T5YMW.js} +2 -2
  243. package/dist/{chunk-HDQUQBPW.js → chunk-W3K3HITK.js} +2 -2
  244. package/dist/{chunk-GDASG7NC.js → chunk-W4F3C7N7.js} +2 -2
  245. package/dist/{chunk-LFK623SF.js → chunk-WJHGDE7X.js} +5 -5
  246. package/dist/{chunk-DP4EBV7C.js → chunk-WMLEPWMO.js} +16 -16
  247. package/dist/chunk-WMLEPWMO.js.map +1 -0
  248. package/dist/{chunk-3Q6RD76J.js → chunk-WQZZDN5M.js} +5 -5
  249. package/dist/{chunk-ZJWDWPX6.js → chunk-X5K5TAQZ.js} +4 -4
  250. package/dist/{chunk-ZL3XX5LW.js → chunk-XM24CDZX.js} +3 -3
  251. package/dist/{chunk-JTWZKNUH.js → chunk-XOVKXJEP.js} +3 -3
  252. package/dist/{chunk-OGTKQ5MJ.js → chunk-XSGUMQQQ.js} +62 -50
  253. package/dist/chunk-XSGUMQQQ.js.map +1 -0
  254. package/dist/{chunk-X5YYSAZX.js → chunk-XUE46UYW.js} +3 -3
  255. package/dist/{chunk-DJORULH3.js → chunk-YRLHEEQT.js} +2 -2
  256. package/dist/{chunk-TA7UZZMW.js → chunk-Z3O53WZR.js} +2 -2
  257. package/dist/{chunk-4LG4CPOC.js → chunk-Z6COGHHN.js} +2 -2
  258. package/dist/{chunk-RE3H6Y2X.js → chunk-ZIW5JVRM.js} +2 -2
  259. package/dist/{cli-BNtvR-nU.d.ts → cli-DD0P-lu8.d.ts} +6 -6
  260. package/dist/cli.d.ts +16 -14
  261. package/dist/cli.js +154 -149
  262. package/dist/coding/export-okf-codegraph.d.ts +2 -1
  263. package/dist/coding/export-okf-codegraph.js +37 -37
  264. package/dist/coding/pre-action-gate.d.ts +2 -1
  265. package/dist/coding/pre-action-gate.js +4 -3
  266. package/dist/commitment-ledger.js +3 -2
  267. package/dist/compounding/engine.d.ts +3 -2
  268. package/dist/compounding/engine.js +37 -37
  269. package/dist/compounding/preference-consolidator.d.ts +2 -1
  270. package/dist/compression-optimizer.d.ts +2 -1
  271. package/dist/config.d.ts +2 -1
  272. package/dist/config.js +16 -13
  273. package/dist/connectors/codex-materialize-runner.d.ts +2 -1
  274. package/dist/connectors/codex-materialize-runner.js +38 -38
  275. package/dist/connectors/codex-materialize.d.ts +2 -1
  276. package/dist/connectors/codex-materialize.js +4 -4
  277. package/dist/connectors/index.d.ts +2 -1
  278. package/dist/connectors/index.js +38 -38
  279. package/dist/consolidation-provenance-check.d.ts +3 -2
  280. package/dist/consolidation-provenance-check.js +4 -4
  281. package/dist/consolidation-undo.d.ts +3 -2
  282. package/dist/consolidation-undo.js +3 -3
  283. package/dist/contradiction/index.d.ts +4 -3
  284. package/dist/contradiction/index.js +9 -9
  285. package/dist/converge-config.d.ts +2 -1
  286. package/dist/convergence-refresh.d.ts +3 -2
  287. package/dist/convergence-refresh.js +38 -38
  288. package/dist/conversation-index/backend.d.ts +2 -1
  289. package/dist/conversation-index/chunker.d.ts +2 -1
  290. package/dist/conversation-index/faiss-adapter.d.ts +2 -1
  291. package/dist/conversation-index/indexer.d.ts +2 -1
  292. package/dist/conversation-index/search.d.ts +2 -1
  293. package/dist/corpus-watermark.d.ts +2 -1
  294. package/dist/corpus-watermark.js +38 -38
  295. package/dist/cross-lingual-recall.d.ts +2 -1
  296. package/dist/cue-anchors.js +4 -3
  297. package/dist/dashboard-runtime.js +2 -2
  298. package/dist/day-summary.d.ts +2 -1
  299. package/dist/deep-recall-http-glue.d.ts +14 -12
  300. package/dist/deep-recall-http-glue.js +9 -8
  301. package/dist/deep-recall-mcp-tools.d.ts +14 -12
  302. package/dist/deep-recall-policy-llm.d.ts +2 -1
  303. package/dist/deep-recall-seeds.d.ts +2 -1
  304. package/dist/deep-recall.js +2 -2
  305. package/dist/delinearize.d.ts +2 -1
  306. package/dist/dependency-propagation-config.d.ts +2 -1
  307. package/dist/{dependency-propagation-delivery-DjpUlhLi.d.ts → dependency-propagation-delivery-CQPCu0o5.d.ts} +1 -1
  308. package/dist/direct-answer-wiring.d.ts +2 -1
  309. package/dist/direct-answer.d.ts +2 -1
  310. package/dist/embedding-fallback.d.ts +2 -1
  311. package/dist/enrichment/index.d.ts +2 -1
  312. package/dist/entity-origin-fields.d.ts +2 -1
  313. package/dist/entity-retrieval.d.ts +3 -2
  314. package/dist/entity-retrieval.js +36 -36
  315. package/dist/entity-schema.d.ts +2 -1
  316. package/dist/episodic-context.d.ts +2 -1
  317. package/dist/eval-trajectory-contracts.d.ts +2 -1
  318. package/dist/eval-trajectory-store.d.ts +2 -1
  319. package/dist/eval-trajectory-store.js +4 -3
  320. package/dist/eval-trajectory.d.ts +2 -1
  321. package/dist/eval-trajectory.js +4 -3
  322. package/dist/evals.js +3 -2
  323. package/dist/event-order-recall.js +2 -2
  324. package/dist/explicit-capture.d.ts +12 -10
  325. package/dist/explicit-capture.js +10 -10
  326. package/dist/external-wiki-access.d.ts +14 -12
  327. package/dist/external-wiki-access.js +95 -92
  328. package/dist/external-wiki-collection-registration.d.ts +2 -1
  329. package/dist/external-wiki-collection.d.ts +2 -1
  330. package/dist/external-wiki-mcp-tools.d.ts +14 -12
  331. package/dist/extraction-error-classification.d.ts +2 -1
  332. package/dist/extraction-faithfulness.d.ts +2 -1
  333. package/dist/extraction-judge-telemetry.d.ts +2 -1
  334. package/dist/extraction-judge-training.d.ts +2 -1
  335. package/dist/extraction-judge.d.ts +2 -1
  336. package/dist/extraction-liveness.d.ts +2 -1
  337. package/dist/extraction-normalization.d.ts +2 -1
  338. package/dist/extraction-prompt.d.ts +2 -1
  339. package/dist/extraction-source-grounding-rules.d.ts +2 -1
  340. package/dist/extraction-source-grounding.d.ts +2 -1
  341. package/dist/extraction.d.ts +2 -1
  342. package/dist/extraction.js +43 -43
  343. package/dist/fallback-llm.d.ts +2 -1
  344. package/dist/{first-start-migration-KHIMCBIC.js → first-start-migration-RC345GPL.js} +6 -5
  345. package/dist/{first-start-migration-KHIMCBIC.js.map → first-start-migration-RC345GPL.js.map} +1 -1
  346. package/dist/{forget-2AE4MDK3.js → forget-SZ2BXDGF.js} +3 -3
  347. package/dist/{graph-444E-DrF.d.ts → graph-DRkl22KE.d.ts} +10 -12
  348. package/dist/graph-append-error.d.ts +40 -0
  349. package/dist/graph-append-error.js +8 -0
  350. package/dist/graph-dashboard-diff.d.ts +5 -2
  351. package/dist/graph-dashboard-key.d.ts +5 -2
  352. package/dist/graph-dashboard-parser.d.ts +5 -2
  353. package/dist/{graph-edge-decay-DGTBFALQ.js → graph-edge-decay-MKIRZ762.js} +10 -4
  354. package/dist/graph-edge-decay-MKIRZ762.js.map +1 -0
  355. package/dist/graph-edge-reinforcement.d.ts +5 -2
  356. package/dist/graph-jsonl.d.ts +82 -0
  357. package/dist/graph-jsonl.js +23 -0
  358. package/dist/graph-jsonl.js.map +1 -0
  359. package/dist/graph-path-reconstruction.d.ts +5 -2
  360. package/dist/graph-path-scoring.d.ts +5 -2
  361. package/dist/graph-snapshot.d.ts +5 -2
  362. package/dist/graph-snapshot.js +7 -3
  363. package/dist/graph-write-lock.d.ts +84 -0
  364. package/dist/graph-write-lock.js +15 -0
  365. package/dist/graph-write-lock.js.map +1 -0
  366. package/dist/graph.d.ts +5 -2
  367. package/dist/graph.js +10 -3
  368. package/dist/harmonic-construction.js +5 -4
  369. package/dist/harmonic-retrieval.js +5 -4
  370. package/dist/importance.d.ts +2 -1
  371. package/dist/importers/index.d.ts +2 -1
  372. package/dist/in-flight-reads.d.ts +2 -1
  373. package/dist/{index-CsUrdMyL.d.ts → index-C9VXenR8.d.ts} +2 -2
  374. package/dist/index.d.ts +39 -25
  375. package/dist/index.js +291 -284
  376. package/dist/intent.d.ts +2 -1
  377. package/dist/json-store.js +2 -1
  378. package/dist/lcm/engine.d.ts +2 -1
  379. package/dist/lcm/engine.js +3 -3
  380. package/dist/lcm/index.d.ts +2 -1
  381. package/dist/lcm/index.js +6 -6
  382. package/dist/lcm/tools.d.ts +2 -1
  383. package/dist/lifecycle.d.ts +2 -1
  384. package/dist/live-connectors-runner.d.ts +2 -1
  385. package/dist/live-connectors-runner.js +3 -2
  386. package/dist/local-llm.d.ts +2 -1
  387. package/dist/local-model-endpoint.d.ts +2 -1
  388. package/dist/location/index.d.ts +4 -3
  389. package/dist/location/index.js +39 -39
  390. package/dist/maintenance/memory-governance.d.ts +2 -1
  391. package/dist/maintenance/memory-governance.js +36 -36
  392. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +3 -2
  393. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +36 -36
  394. package/dist/maintenance/rebuild-memory-projection.d.ts +3 -2
  395. package/dist/maintenance/rebuild-memory-projection.js +37 -37
  396. package/dist/{maintenance-D1GRGLTE.d.ts → maintenance-C14sorKa.d.ts} +3 -3
  397. package/dist/mcp-memory-inspector-app.d.ts +14 -12
  398. package/dist/memory-action-policy.d.ts +2 -1
  399. package/dist/memory-cache.d.ts +2 -1
  400. package/dist/memory-controller.d.ts +2 -1
  401. package/dist/memory-lifecycle-ledger-utils.d.ts +2 -1
  402. package/dist/memory-projection-mutations.js +3 -3
  403. package/dist/memory-projection-store.d.ts +2 -1
  404. package/dist/memory-provenance.d.ts +2 -1
  405. package/dist/memory-snapshot.d.ts +2 -1
  406. package/dist/memory-subject-cli.d.ts +14 -12
  407. package/dist/memory-subject.d.ts +14 -12
  408. package/dist/memory-subject.js +5 -5
  409. package/dist/memory-worth-outcomes.d.ts +3 -2
  410. package/dist/models-json.d.ts +2 -1
  411. package/dist/namespaces/migrate.d.ts +4 -3
  412. package/dist/namespaces/migrate.js +37 -37
  413. package/dist/namespaces/principal.d.ts +2 -1
  414. package/dist/namespaces/search.d.ts +2 -1
  415. package/dist/namespaces/search.js +11 -11
  416. package/dist/namespaces/storage.d.ts +4 -3
  417. package/dist/namespaces/storage.js +36 -36
  418. package/dist/native-knowledge.d.ts +2 -1
  419. package/dist/objective-state-writers.js +4 -3
  420. package/dist/objective-state.js +3 -2
  421. package/dist/offline-sync-file-io.js +4 -3
  422. package/dist/offline-sync-impression-drain.d.ts +2 -1
  423. package/dist/offline-sync-impression-drain.js +7 -7
  424. package/dist/offline-sync.js +5 -4
  425. package/dist/operator-doctor-corpus.d.ts +2 -1
  426. package/dist/operator-doctor-corpus.js +39 -39
  427. package/dist/operator-doctor-replica.d.ts +2 -1
  428. package/dist/operator-toolkit.d.ts +6 -4
  429. package/dist/operator-toolkit.js +61 -58
  430. package/dist/orchestration/compression-guideline-coordinator.d.ts +3 -2
  431. package/dist/orchestration/maintenance.d.ts +5 -4
  432. package/dist/orchestration/maintenance.js +46 -46
  433. package/dist/{orchestrator-DeqaPGT5.d.ts → orchestrator-DgyvFfPR.d.ts} +9 -9
  434. package/dist/orchestrator.d.ts +12 -10
  435. package/dist/orchestrator.js +201 -196
  436. package/dist/page-versioning.d.ts +73 -4
  437. package/dist/page-versioning.js +11 -3
  438. package/dist/patterns-cli.d.ts +2 -1
  439. package/dist/{pipeline-umUzU0D1.d.ts → pipeline-DRUwHb1X.d.ts} +1 -1
  440. package/dist/policy-runtime.d.ts +2 -1
  441. package/dist/proactive-contention.d.ts +2 -1
  442. package/dist/provenance.d.ts +2 -1
  443. package/dist/{public-http-Bevrjll9.d.ts → public-http-C4i8Opxc.d.ts} +1 -1
  444. package/dist/{purge-OP6BEDFY.js → purge-TZKRE6ZQ.js} +5 -5
  445. package/dist/purge-TZKRE6ZQ.js.map +1 -0
  446. package/dist/{qmd-BasT78PP.d.ts → qmd-BVWlg1YS.d.ts} +1 -1
  447. package/dist/qmd-preflight.d.ts +3 -2
  448. package/dist/qmd-recall-cache.d.ts +2 -1
  449. package/dist/qmd.d.ts +3 -2
  450. package/dist/qmd.js +4 -4
  451. package/dist/recall-concurrency-config.d.ts +2 -1
  452. package/dist/recall-disclosure-escalation.d.ts +2 -1
  453. package/dist/recall-explain-renderer.d.ts +2 -1
  454. package/dist/recall-explain-renderer.js +3 -3
  455. package/dist/recall-memory-map.d.ts +2 -1
  456. package/dist/recall-navigate-access.d.ts +2 -1
  457. package/dist/recall-navigate-access.js +2 -2
  458. package/dist/recall-navigate-disclosure.d.ts +2 -1
  459. package/dist/recall-navigate-disclosure.js +1 -1
  460. package/dist/recall-navigate.d.ts +2 -1
  461. package/dist/recall-navigate.js +2 -2
  462. package/dist/recall-planner-llm.d.ts +2 -1
  463. package/dist/recall-state.d.ts +2 -1
  464. package/dist/recall-state.js +3 -3
  465. package/dist/recall-tag-filter.d.ts +2 -1
  466. package/dist/recall-timings.d.ts +2 -1
  467. package/dist/recall-xray-cli.d.ts +2 -1
  468. package/dist/recall-xray-cli.js +4 -4
  469. package/dist/recall-xray-renderer.d.ts +2 -1
  470. package/dist/recall-xray-renderer.js +3 -3
  471. package/dist/recall-xray.d.ts +2 -1
  472. package/dist/recall-xray.js +2 -2
  473. package/dist/reconcile/cursor.d.ts +2 -1
  474. package/dist/reconcile/manifest.d.ts +2 -1
  475. package/dist/reconcile/manifest.js +7 -7
  476. package/dist/reconcile/plan.d.ts +2 -1
  477. package/dist/replay/normalizers/chatgpt.d.ts +2 -1
  478. package/dist/replay/normalizers/claude.d.ts +2 -1
  479. package/dist/replay/normalizers/openclaw.d.ts +2 -1
  480. package/dist/replay/normalizers/shared.d.ts +2 -1
  481. package/dist/replay/runner.d.ts +2 -1
  482. package/dist/replay/types.d.ts +2 -1
  483. package/dist/replica-divergence.d.ts +2 -1
  484. package/dist/replica-peers-config.d.ts +2 -1
  485. package/dist/{resolution-4DLI3IOR.js → resolution-VKATP2HT.js} +10 -10
  486. package/dist/resolution-VKATP2HT.js.map +1 -0
  487. package/dist/resolve-auth-token.d.ts +2 -1
  488. package/dist/resume-bundles.js +21 -18
  489. package/dist/retrieval-agents.d.ts +3 -2
  490. package/dist/retrieval-tiers.d.ts +2 -1
  491. package/dist/routing/engine.d.ts +2 -1
  492. package/dist/routing/store.d.ts +2 -1
  493. package/dist/salvage-envelope.d.ts +2 -1
  494. package/dist/salvage-envelope.js +7 -7
  495. package/dist/{scope-profiles-DXYzyOXW.d.ts → scope-profiles-Vl00B1KU.d.ts} +1 -1
  496. package/dist/search/document-scanner.js +3 -3
  497. package/dist/search/embed-helper.d.ts +2 -1
  498. package/dist/search/factory.d.ts +2 -1
  499. package/dist/search/factory.js +10 -10
  500. package/dist/search/index.d.ts +2 -1
  501. package/dist/search/index.js +16 -16
  502. package/dist/search/lancedb-backend.d.ts +2 -1
  503. package/dist/search/lancedb-backend.js +4 -4
  504. package/dist/search/meilisearch-backend.d.ts +2 -1
  505. package/dist/search/meilisearch-backend.js +4 -4
  506. package/dist/search/noop-backend.d.ts +2 -1
  507. package/dist/search/orama-backend.d.ts +2 -1
  508. package/dist/search/orama-backend.js +4 -4
  509. package/dist/search/port.d.ts +2 -1
  510. package/dist/search/remote-backend.d.ts +2 -1
  511. package/dist/secure-store/index.js +3 -3
  512. package/dist/{semantic-consolidation-CqDeaY0U.d.ts → semantic-consolidation-BC9-GFuT.d.ts} +1 -1
  513. package/dist/semantic-consolidation.d.ts +3 -2
  514. package/dist/semantic-consolidation.js +39 -39
  515. package/dist/semantic-merge-config.d.ts +17 -0
  516. package/dist/semantic-merge-config.js +1 -0
  517. package/dist/semantic-merge-config.js.map +1 -0
  518. package/dist/semantic-rule-promotion.js +36 -36
  519. package/dist/semantic-rule-verifier.d.ts +2 -1
  520. package/dist/semantic-rule-verifier.js +36 -36
  521. package/dist/{service-BKD-DVYZ.d.ts → service-BOy6dHfc.d.ts} +2 -2
  522. package/dist/session-observer-bands.d.ts +2 -1
  523. package/dist/session-observer-state.d.ts +2 -1
  524. package/dist/shared-context/manager.d.ts +2 -1
  525. package/dist/signal.d.ts +2 -1
  526. package/dist/source-agent-qualifier.d.ts +2 -1
  527. package/dist/source-agent-qualifier.js +42 -42
  528. package/dist/source-attribution.d.ts +18 -6
  529. package/dist/source-attribution.js +3 -1
  530. package/dist/standup/build.js +36 -36
  531. package/dist/{storage-BcFd1lN_.d.ts → storage-BLJRnFi6.d.ts} +15 -8
  532. package/dist/storage.d.ts +3 -2
  533. package/dist/storage.js +35 -35
  534. package/dist/subject-config.d.ts +2 -1
  535. package/dist/subject-config.js +6 -6
  536. package/dist/summarizer.d.ts +2 -1
  537. package/dist/summary-snapshot.d.ts +2 -1
  538. package/dist/support-passport/index.d.ts +17 -15
  539. package/dist/support-passport/index.js +97 -94
  540. package/dist/temporal-supersession.d.ts +3 -2
  541. package/dist/temporal-timeline-recall.d.ts +2 -1
  542. package/dist/temporal-validity.d.ts +2 -1
  543. package/dist/threading.d.ts +2 -1
  544. package/dist/tier-migration.d.ts +3 -2
  545. package/dist/tier-routing.d.ts +2 -1
  546. package/dist/{tier-stats-2TOW3QNL.js → tier-stats-KA6OZX2C.js} +6 -5
  547. package/dist/{tier-stats-2TOW3QNL.js.map → tier-stats-KA6OZX2C.js.map} +1 -1
  548. package/dist/topics.d.ts +2 -1
  549. package/dist/transcript.d.ts +2 -1
  550. package/dist/transfer/backup.js +2 -2
  551. package/dist/transfer/capsule-export.js +2 -2
  552. package/dist/transfer/capsule-import.js +6 -6
  553. package/dist/transfer/export-okf.d.ts +2 -1
  554. package/dist/transfer/export-okf.js +37 -37
  555. package/dist/trust-score-stage.d.ts +2 -1
  556. package/dist/trust-score.d.ts +2 -1
  557. package/dist/trust-zones.js +3 -2
  558. package/dist/{types-BRg3tMyp.d.ts → types-YY-eKKU7.d.ts} +3 -0
  559. package/dist/types.d.ts +2 -1
  560. package/dist/types.js +1 -1
  561. package/dist/utility-learner.js +4 -3
  562. package/dist/utility-runtime.d.ts +2 -1
  563. package/dist/utility-runtime.js +5 -4
  564. package/dist/utility-telemetry.js +3 -2
  565. package/dist/verified-recall.js +36 -36
  566. package/dist/who-knows-cli.d.ts +14 -12
  567. package/dist/who-knows-cli.js +37 -37
  568. package/dist/who-knows.d.ts +14 -12
  569. package/dist/who-knows.js +36 -36
  570. package/dist/work/board.js +3 -3
  571. package/dist/work/storage.js +2 -2
  572. package/dist/work-product-ledger.js +3 -2
  573. package/dist/write-envelope.d.ts +2 -1
  574. package/dist/write-envelope.js +6 -6
  575. package/package.json +2 -2
  576. package/src/abstraction-nodes.ts +1 -4
  577. package/src/access-http-briefing.ts +35 -0
  578. package/src/access-http.test.ts +76 -0
  579. package/src/access-http.ts +20 -23
  580. package/src/access-surface-catalog.test.ts +9 -0
  581. package/src/access-surface-catalog.ts +1 -0
  582. package/src/binary-lifecycle/backend.ts +2 -1
  583. package/src/config.ts +2 -0
  584. package/src/connectors/live/github.ts +10 -17
  585. package/src/connectors/live/gmail.ts +8 -19
  586. package/src/connectors/live/google-drive.ts +6 -13
  587. package/src/connectors/live/notion.ts +11 -21
  588. package/src/cue-anchors.ts +1 -6
  589. package/src/dedup/connector-scope.ts +39 -0
  590. package/src/dedup/merge-content.test.ts +21 -0
  591. package/src/dedup/merge-content.ts +21 -7
  592. package/src/dedup/merge-judge.ts +146 -0
  593. package/src/dedup/merge.test.ts +3542 -0
  594. package/src/dedup/merge.ts +384 -0
  595. package/src/dedup/novelty-gate.ts +12 -10
  596. package/src/dedup/semantic.ts +7 -9
  597. package/src/graph-append-error.ts +28 -0
  598. package/src/graph-jsonl.ts +267 -0
  599. package/src/graph-write-lock.test.ts +228 -0
  600. package/src/graph-write-lock.ts +132 -0
  601. package/src/graph.ts +49 -45
  602. package/src/harmonic-construction.test.ts +329 -0
  603. package/src/json-store.ts +17 -20
  604. package/src/live-connectors-runner.ts +2 -1
  605. package/src/location/store.ts +1 -4
  606. package/src/maintenance/graph-edge-decay.ts +24 -13
  607. package/src/maintenance/purge.ts +2 -5
  608. package/src/maintenance/rebuild-memory-lifecycle-ledger.ts +3 -6
  609. package/src/maintenance/rebuild-memory-projection.ts +2 -5
  610. package/src/namespaces/catalog.ts +1 -9
  611. package/src/offline-sync-file-io.test.ts +39 -0
  612. package/src/offline-sync-file-io.ts +3 -7
  613. package/src/orchestration/contradiction-localization.integration.test.ts +35 -0
  614. package/src/orchestration/extraction-anchor-snapshot.ts +6 -1
  615. package/src/orchestration/extraction-persist-deps.ts +2 -1
  616. package/src/orchestration/extraction-persist-profile-promotion.test.ts +456 -0
  617. package/src/orchestration/extraction-persist-promotion.test.ts +534 -0
  618. package/src/orchestration/extraction-persist-promotion.ts +387 -1
  619. package/src/orchestration/extraction-persist.ts +95 -94
  620. package/src/orchestration/harmonic-construction-persist.test.ts +69 -0
  621. package/src/orchestration/harmonic-construction-persist.ts +55 -0
  622. package/src/orchestration/persistence-index.ts +35 -7
  623. package/src/orchestration/semantic-merge-commit-effects.ts +354 -0
  624. package/src/orchestration/semantic-merge-persist.ts +1095 -0
  625. package/src/orchestration/semantic-merge-promotion-payload.ts +161 -0
  626. package/src/orchestrator.ts +2 -2
  627. package/src/page-versioning.ts +396 -22
  628. package/src/procedural/procedure-miner.ts +1 -9
  629. package/src/search/document-scanner.ts +3 -6
  630. package/src/semantic-merge-config.ts +16 -0
  631. package/src/semantic-rule-promotion.ts +1 -4
  632. package/src/source-attribution-roundtrip.test.ts +21 -0
  633. package/src/source-attribution.ts +57 -17
  634. package/src/storage-contract/versioning.test.ts +500 -1
  635. package/src/storage.ts +30 -30
  636. package/src/testing/subjects/graph-edge-decay.test.ts +163 -0
  637. package/src/testing/subjects/semantic-merge-lifecycle.test.ts +1175 -0
  638. package/src/types.ts +2 -0
  639. package/src/utils/errno.test.ts +31 -0
  640. package/src/utils/errno.ts +5 -0
  641. package/src/wearables/index.ts +1 -0
  642. package/src/wearables/registry.ts +23 -0
  643. package/dist/chunk-5UZXUTVO.js.map +0 -1
  644. package/dist/chunk-7GSSHAXC.js.map +0 -1
  645. package/dist/chunk-ACPCA4NO.js.map +0 -1
  646. package/dist/chunk-C2JCVZWX.js.map +0 -1
  647. package/dist/chunk-DDQQY2E3.js.map +0 -1
  648. package/dist/chunk-DJUKBGAD.js.map +0 -1
  649. package/dist/chunk-DK6GMO6D.js.map +0 -1
  650. package/dist/chunk-DP4EBV7C.js.map +0 -1
  651. package/dist/chunk-FCATYKQA.js.map +0 -1
  652. package/dist/chunk-GGYDJJBO.js.map +0 -1
  653. package/dist/chunk-HTIIXNJQ.js.map +0 -1
  654. package/dist/chunk-KK66P5GQ.js.map +0 -1
  655. package/dist/chunk-NQFCLAYT.js.map +0 -1
  656. package/dist/chunk-NYRB7BKY.js.map +0 -1
  657. package/dist/chunk-OGTKQ5MJ.js.map +0 -1
  658. package/dist/chunk-OLT3YTDH.js.map +0 -1
  659. package/dist/chunk-P77QX3ID.js.map +0 -1
  660. package/dist/chunk-U62OK7BB.js.map +0 -1
  661. package/dist/chunk-UR6PBX2J.js.map +0 -1
  662. package/dist/chunk-VLAQV4HT.js.map +0 -1
  663. package/dist/chunk-W7IGLX4G.js.map +0 -1
  664. package/dist/purge-OP6BEDFY.js.map +0 -1
  665. /package/dist/{capsule-crypto-7FJQINUR.js.map → access-http-briefing.js.map} +0 -0
  666. /package/dist/{auto-sync-GRUJFD2F.js.map → auto-sync-WNGG2GC2.js.map} +0 -0
  667. /package/dist/{graph-edge-decay-DGTBFALQ.js.map → capsule-crypto-YO5QJ6L3.js.map} +0 -0
  668. /package/dist/{capsule-merge-SEHERWWP.js.map → capsule-merge-IPG4IOFP.js.map} +0 -0
  669. /package/dist/{chunk-KTVSPFCQ.js.map → chunk-22FVR2KE.js.map} +0 -0
  670. /package/dist/{chunk-7Y5V3LAP.js.map → chunk-27QVNSQ3.js.map} +0 -0
  671. /package/dist/{chunk-R7LY4YKF.js.map → chunk-2EKJDQZB.js.map} +0 -0
  672. /package/dist/{chunk-HOUST5UX.js.map → chunk-2ITE4C2Z.js.map} +0 -0
  673. /package/dist/{chunk-JOYC4RYC.js.map → chunk-2JVJ7UHC.js.map} +0 -0
  674. /package/dist/{chunk-X2NFFBTO.js.map → chunk-2L5FSNPC.js.map} +0 -0
  675. /package/dist/{chunk-DUAJKRR2.js.map → chunk-2SGLMP2E.js.map} +0 -0
  676. /package/dist/{chunk-6FUMA6AA.js.map → chunk-2Z4GS5E6.js.map} +0 -0
  677. /package/dist/{chunk-G6MXN2G5.js.map → chunk-37KUQPX4.js.map} +0 -0
  678. /package/dist/{chunk-WKAXBXVA.js.map → chunk-3QQTXYZ6.js.map} +0 -0
  679. /package/dist/{chunk-4ZWCQJNM.js.map → chunk-46WM6JX2.js.map} +0 -0
  680. /package/dist/{chunk-CASWJ2HM.js.map → chunk-46ZPIGWI.js.map} +0 -0
  681. /package/dist/{chunk-MCA2X4WH.js.map → chunk-4IHBN6WU.js.map} +0 -0
  682. /package/dist/{chunk-FB7LAJQM.js.map → chunk-4TKJGOCJ.js.map} +0 -0
  683. /package/dist/{chunk-H7BZBSP6.js.map → chunk-52II7PB6.js.map} +0 -0
  684. /package/dist/{chunk-N4Y5T6VD.js.map → chunk-54WHLA65.js.map} +0 -0
  685. /package/dist/{chunk-YVLENSNS.js.map → chunk-5ATKSPEQ.js.map} +0 -0
  686. /package/dist/{chunk-ZVZHG7AI.js.map → chunk-5UBH37SL.js.map} +0 -0
  687. /package/dist/{chunk-N3WZU76A.js.map → chunk-66OJSCI6.js.map} +0 -0
  688. /package/dist/{chunk-D35XLYQ7.js.map → chunk-6CVNSDCZ.js.map} +0 -0
  689. /package/dist/{chunk-KA2HZCMG.js.map → chunk-6NXSYYGP.js.map} +0 -0
  690. /package/dist/{chunk-2HIJHXB3.js.map → chunk-6WHJ2EAB.js.map} +0 -0
  691. /package/dist/{chunk-ZZM476NV.js.map → chunk-6XL73HQ4.js.map} +0 -0
  692. /package/dist/{chunk-EJ5RKUXW.js.map → chunk-AQ7SYDVO.js.map} +0 -0
  693. /package/dist/{chunk-2Z3DG5CQ.js.map → chunk-B3O3IRZN.js.map} +0 -0
  694. /package/dist/{chunk-RACZB5HT.js.map → chunk-BD7JTBYP.js.map} +0 -0
  695. /package/dist/{chunk-I762GW7V.js.map → chunk-BLJWYCNO.js.map} +0 -0
  696. /package/dist/{chunk-2NLLXCJG.js.map → chunk-BXLOS5AJ.js.map} +0 -0
  697. /package/dist/{chunk-GCASGYIO.js.map → chunk-C7HJ3NEI.js.map} +0 -0
  698. /package/dist/{chunk-C24UZSFW.js.map → chunk-CEH2AFXG.js.map} +0 -0
  699. /package/dist/{chunk-WVGXCBOC.js.map → chunk-D5F7TKMH.js.map} +0 -0
  700. /package/dist/{chunk-X7Y7WX73.js.map → chunk-DQEMWVMT.js.map} +0 -0
  701. /package/dist/{chunk-2OXIPF3A.js.map → chunk-DZD3WGCD.js.map} +0 -0
  702. /package/dist/{chunk-UMEOXLIZ.js.map → chunk-E2P7TZTF.js.map} +0 -0
  703. /package/dist/{chunk-6FC3IZ26.js.map → chunk-EBA5DA77.js.map} +0 -0
  704. /package/dist/{chunk-N7JK2RKG.js.map → chunk-EOQ6FSQP.js.map} +0 -0
  705. /package/dist/{chunk-YNDLCWXS.js.map → chunk-EZ25VE3G.js.map} +0 -0
  706. /package/dist/{chunk-XDMI5VKE.js.map → chunk-FVOP3NT7.js.map} +0 -0
  707. /package/dist/{chunk-NRLELHAY.js.map → chunk-G7NYVKD6.js.map} +0 -0
  708. /package/dist/{chunk-B3W7GWQB.js.map → chunk-GHTSNGBZ.js.map} +0 -0
  709. /package/dist/{chunk-LUDBXTBJ.js.map → chunk-H272ZPQ3.js.map} +0 -0
  710. /package/dist/{chunk-SN4JXNLL.js.map → chunk-H3TKENU4.js.map} +0 -0
  711. /package/dist/{chunk-4HYNMLT6.js.map → chunk-H4SEGIZY.js.map} +0 -0
  712. /package/dist/{chunk-ACZN5ZXD.js.map → chunk-H54VWRPS.js.map} +0 -0
  713. /package/dist/{chunk-HTP6XRUI.js.map → chunk-HM7RHKS4.js.map} +0 -0
  714. /package/dist/{chunk-Z3SQEEB6.js.map → chunk-HWLIMQE2.js.map} +0 -0
  715. /package/dist/{chunk-2QSZNTDO.js.map → chunk-JBPKEARU.js.map} +0 -0
  716. /package/dist/{chunk-ET2CNMLD.js.map → chunk-JN72EPOE.js.map} +0 -0
  717. /package/dist/{chunk-JCCWJHOP.js.map → chunk-JYZSRNR7.js.map} +0 -0
  718. /package/dist/{chunk-7D6HXODY.js.map → chunk-K7724CH2.js.map} +0 -0
  719. /package/dist/{chunk-X33MJFD2.js.map → chunk-KAXCYM66.js.map} +0 -0
  720. /package/dist/{chunk-7RRUHJPG.js.map → chunk-KB2G2I6Q.js.map} +0 -0
  721. /package/dist/{chunk-ZXBTTMGZ.js.map → chunk-KEF46KL2.js.map} +0 -0
  722. /package/dist/{chunk-UWTDARPF.js.map → chunk-KTWG7CNY.js.map} +0 -0
  723. /package/dist/{chunk-XQYTSZW3.js.map → chunk-L7Z57SID.js.map} +0 -0
  724. /package/dist/{chunk-JMAG7WZ7.js.map → chunk-LO4UKPKX.js.map} +0 -0
  725. /package/dist/{chunk-LDWIPYJ6.js.map → chunk-LS2FHUML.js.map} +0 -0
  726. /package/dist/{chunk-GDB4J2H3.js.map → chunk-MPC7TYTZ.js.map} +0 -0
  727. /package/dist/{chunk-2GF27PGH.js.map → chunk-MRPOZBJC.js.map} +0 -0
  728. /package/dist/{chunk-BR3OOQZQ.js.map → chunk-MWN6QEI2.js.map} +0 -0
  729. /package/dist/{chunk-NZGO2GKL.js.map → chunk-MY5EDR46.js.map} +0 -0
  730. /package/dist/{chunk-LCMUZDBZ.js.map → chunk-N3ZOP7KC.js.map} +0 -0
  731. /package/dist/{chunk-TVW4C7PV.js.map → chunk-NB3LRY4T.js.map} +0 -0
  732. /package/dist/{chunk-QJCWK2A7.js.map → chunk-ND6IQGSZ.js.map} +0 -0
  733. /package/dist/{chunk-NOB2T2FC.js.map → chunk-NHLLKEKK.js.map} +0 -0
  734. /package/dist/{chunk-EJIWBTVM.js.map → chunk-O6ZNNVSP.js.map} +0 -0
  735. /package/dist/{chunk-AG46P24C.js.map → chunk-OB3XMWX5.js.map} +0 -0
  736. /package/dist/{chunk-46QMN7I7.js.map → chunk-PAZY2ZKP.js.map} +0 -0
  737. /package/dist/{chunk-EF4JUM55.js.map → chunk-PX4UMA5Z.js.map} +0 -0
  738. /package/dist/{chunk-NNZFPYYX.js.map → chunk-R7QY5ZVB.js.map} +0 -0
  739. /package/dist/{chunk-RO2X2EYM.js.map → chunk-R7RTXEYG.js.map} +0 -0
  740. /package/dist/{chunk-3LJPSRAN.js.map → chunk-RBCQVOVJ.js.map} +0 -0
  741. /package/dist/{chunk-N4F7ZSSG.js.map → chunk-RC5DXXWC.js.map} +0 -0
  742. /package/dist/{chunk-5CF2R4NS.js.map → chunk-RKBLRTNT.js.map} +0 -0
  743. /package/dist/{chunk-5QZR2RA3.js.map → chunk-ROBHL3GL.js.map} +0 -0
  744. /package/dist/{chunk-D5ZNOKR7.js.map → chunk-S7T2TY65.js.map} +0 -0
  745. /package/dist/{chunk-3LADWWMA.js.map → chunk-SJDQ5RSN.js.map} +0 -0
  746. /package/dist/{chunk-CHWUICVY.js.map → chunk-SV4Z2S67.js.map} +0 -0
  747. /package/dist/{chunk-SEF4IOFE.js.map → chunk-SWIKABKI.js.map} +0 -0
  748. /package/dist/{chunk-JRRQ747T.js.map → chunk-TBXAY2SS.js.map} +0 -0
  749. /package/dist/{chunk-XZBXINXZ.js.map → chunk-TNSCIPBQ.js.map} +0 -0
  750. /package/dist/{chunk-S37NN23M.js.map → chunk-TVEONGBU.js.map} +0 -0
  751. /package/dist/{chunk-5RPMTFB6.js.map → chunk-TWF35IC6.js.map} +0 -0
  752. /package/dist/{chunk-BZTJEILZ.js.map → chunk-U6N5IBVY.js.map} +0 -0
  753. /package/dist/{chunk-7TUB6JWA.js.map → chunk-UCKYTA2T.js.map} +0 -0
  754. /package/dist/{chunk-PPOT6SPR.js.map → chunk-UNNPNBR2.js.map} +0 -0
  755. /package/dist/{chunk-KQAFEZQX.js.map → chunk-VDX2J7OX.js.map} +0 -0
  756. /package/dist/{chunk-J2R275FN.js.map → chunk-VVX5PZFS.js.map} +0 -0
  757. /package/dist/{chunk-ME35HVDJ.js.map → chunk-VYCOJKSX.js.map} +0 -0
  758. /package/dist/{chunk-F5UWQ4LX.js.map → chunk-W24T5YMW.js.map} +0 -0
  759. /package/dist/{chunk-HDQUQBPW.js.map → chunk-W3K3HITK.js.map} +0 -0
  760. /package/dist/{chunk-GDASG7NC.js.map → chunk-W4F3C7N7.js.map} +0 -0
  761. /package/dist/{chunk-LFK623SF.js.map → chunk-WJHGDE7X.js.map} +0 -0
  762. /package/dist/{chunk-3Q6RD76J.js.map → chunk-WQZZDN5M.js.map} +0 -0
  763. /package/dist/{chunk-ZJWDWPX6.js.map → chunk-X5K5TAQZ.js.map} +0 -0
  764. /package/dist/{chunk-ZL3XX5LW.js.map → chunk-XM24CDZX.js.map} +0 -0
  765. /package/dist/{chunk-JTWZKNUH.js.map → chunk-XOVKXJEP.js.map} +0 -0
  766. /package/dist/{chunk-X5YYSAZX.js.map → chunk-XUE46UYW.js.map} +0 -0
  767. /package/dist/{chunk-DJORULH3.js.map → chunk-YRLHEEQT.js.map} +0 -0
  768. /package/dist/{chunk-TA7UZZMW.js.map → chunk-Z3O53WZR.js.map} +0 -0
  769. /package/dist/{chunk-4LG4CPOC.js.map → chunk-Z6COGHHN.js.map} +0 -0
  770. /package/dist/{chunk-RE3H6Y2X.js.map → chunk-ZIW5JVRM.js.map} +0 -0
  771. /package/dist/{forget-2AE4MDK3.js.map → forget-SZ2BXDGF.js.map} +0 -0
  772. /package/dist/{resolution-4DLI3IOR.js.map → graph-append-error.js.map} +0 -0
@@ -3,10 +3,17 @@ import {
3
3
  } from "./chunk-KJTKLXTH.js";
4
4
  import {
5
5
  StorageManager
6
- } from "./chunk-OGTKQ5MJ.js";
6
+ } from "./chunk-XSGUMQQQ.js";
7
7
  import {
8
8
  assertInjectedStorageRooted
9
- } from "./chunk-JRRQ747T.js";
9
+ } from "./chunk-TBXAY2SS.js";
10
+ import {
11
+ displayErrorDetail
12
+ } from "./chunk-RL6NEVXT.js";
13
+ import {
14
+ copyExistingFileToBackup,
15
+ writeFileAtomically
16
+ } from "./chunk-AW4QUFQF.js";
10
17
  import {
11
18
  MEMORY_LIFECYCLE_LEDGER_LOCK_STALE_MS,
12
19
  buildLifecycleEventsForMemory,
@@ -16,19 +23,15 @@ import {
16
23
  memoryLifecycleLedgerLockPath,
17
24
  sortMemoryLifecycleEvents
18
25
  } from "./chunk-7RJUVTVF.js";
19
- import {
20
- displayErrorDetail
21
- } from "./chunk-RL6NEVXT.js";
22
- import {
23
- copyExistingFileToBackup,
24
- writeFileAtomically
25
- } from "./chunk-AW4QUFQF.js";
26
26
  import {
27
27
  withHeldFileLock
28
28
  } from "./chunk-FFAZ2XFU.js";
29
29
  import {
30
30
  probeEncryptedRegularFileHeader
31
- } from "./chunk-ET2CNMLD.js";
31
+ } from "./chunk-JN72EPOE.js";
32
+ import {
33
+ isErrnoCode
34
+ } from "./chunk-KNA3BXXL.js";
32
35
  import {
33
36
  log
34
37
  } from "./chunk-3WCASNQZ.js";
@@ -36,9 +39,6 @@ import {
36
39
  // src/maintenance/rebuild-memory-lifecycle-ledger.ts
37
40
  import path from "path";
38
41
  import { stat } from "fs/promises";
39
- function isNodeError(err) {
40
- return typeof err === "object" && err !== null && "code" in err;
41
- }
42
42
  function lifecycleRowBytes(event) {
43
43
  return Buffer.byteLength(`${JSON.stringify(event)}
44
44
  `, "utf8");
@@ -72,7 +72,7 @@ async function backupExistingLedger(memoryDir, outputPath, now) {
72
72
  try {
73
73
  await stat(outputPath);
74
74
  } catch (err) {
75
- if (isNodeError(err) && err.code === "ENOENT") {
75
+ if (isErrnoCode(err, "ENOENT")) {
76
76
  return void 0;
77
77
  }
78
78
  throw err;
@@ -206,7 +206,7 @@ async function rebuildMemoryLifecycleLedger(options) {
206
206
  currentEncrypted = await probeEncryptedRegularFileHeader(outputPath);
207
207
  priorRawBuffer = await storage.readMemoryLifecycleLedgerRawBufferForCompaction();
208
208
  } catch (err) {
209
- if (!isNodeError(err) || err.code !== "ENOENT") throw err;
209
+ if (!isErrnoCode(err, "ENOENT")) throw err;
210
210
  }
211
211
  const forceEncrypt = secureRewrite && currentEncrypted && storage.isSecureStoreUnlocked();
212
212
  const replacementEncrypted = secureRewrite && (storage.willEncryptStateWrites() || forceEncrypt);
@@ -260,4 +260,4 @@ export {
260
260
  backupExistingLedger,
261
261
  rebuildMemoryLifecycleLedger
262
262
  };
263
- //# sourceMappingURL=chunk-DP4EBV7C.js.map
263
+ //# sourceMappingURL=chunk-WMLEPWMO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/maintenance/rebuild-memory-lifecycle-ledger.ts"],"sourcesContent":["import path from \"node:path\";\nimport { stat } from \"node:fs/promises\";\nimport { StorageManager } from \"../storage.js\";\nimport { assertInjectedStorageRooted } from \"./projection-support.js\";\nimport { log } from \"../logger.js\";\nimport { displayErrorDetail } from \"../runtime/better-sqlite.js\";\nimport type { MemoryLifecycleEvent } from \"../types.js\";\nimport { toBackupStamp } from \"./backup-stamp.js\";\nimport { copyExistingFileToBackup, writeFileAtomically } from \"./atomic-file.js\";\nimport {\n buildLifecycleEventsForMemory,\n compareMemoryLifecycleEvents,\n sortMemoryLifecycleEvents,\n isFrontmatterDerivedLifecycleEventType,\n memoryLifecycleEventProjectionIdentity,\n memoryLifecycleLedgerLockPath,\n MEMORY_LIFECYCLE_LEDGER_LOCK_STALE_MS,\n} from \"../memory-lifecycle-ledger-utils.js\";\nimport { withHeldFileLock, type HeldFileLockOptions, type HeldFileLockController } from \"../utils/serialize-mutations.js\";\nimport { probeEncryptedRegularFileHeader } from \"../secure-store/secure-fs.js\";\nimport { isErrnoCode } from \"../utils/errno.js\";\n\n\nexport interface RebuildMemoryLifecycleLedgerOptions {\n memoryDir: string;\n dryRun?: boolean;\n now?: Date;\n /**\n * Active storage context (issue #1910). When provided, memories are read\n * through it (so encrypted-at-rest memories in a secure-store deployment are\n * decrypted with the live key) and the rebuilt ledger is rewritten through\n * its secure writer (so it stays encrypted at rest). Its `dir` MUST equal\n * `memoryDir`. When omitted, a fresh plaintext `StorageManager` is used and\n * the ledger is written as plaintext — the CLI default.\n */\n storage?: StorageManager;\n /**\n * Preserve append-only lifecycle events that have no frontmatter equivalent\n * (issue #1910). `buildLifecycleEventsForMemory` only reconstructs\n * `created`/`updated`/`superseded`/`archived` from frontmatter, so a bare\n * rebuild silently drops history like `explicit_capture_accepted`,\n * `explicit_capture_queued`, `imported`, `promoted`, `merged`, `restored`,\n * and `rejected`. When true, the existing ledger's non-reconstructable rows\n * are read (via the same secure/permissive `readAllMemoryLifecycleEvents`\n * path), merged with the rebuilt rows, deduplicated by `eventId`, and sorted\n * canonically. Background auto-compaction sets this so it never loses events;\n * the manual/CLI repair rebuild leaves it off (reconstruct purely from\n * frontmatter).\n */\n preserveExistingEvents?: boolean;\n /**\n * Override the ledger-lock acquisition timing (issue #2033). Only\n * `maxWaitMs`/`pollMs` are honored; `staleMs` stays fixed at\n * `MEMORY_LIFECYCLE_LEDGER_LOCK_STALE_MS`. Used by tests to force the\n * lock-acquisition-failure branch (`acquired=false`) deterministically\n * without a multi-second wait.\n */\n lockOptions?: Pick<HeldFileLockOptions, \"maxWaitMs\" | \"pollMs\">;\n /**\n * Upper bound (bytes) on the rewritten ledger when preserving events (issue\n * #2033). A preserving compaction carries over ALL append-only history, which\n * — if the history alone is large — could leave the rewritten ledger over the\n * whole-file read/decrypt cap (STATE_FILE_MAX_DECRYPT_BYTES), the exact\n * unreadable-ledger failure compaction exists to prevent. When set and the\n * preserved payload would exceed it, the OLDEST rows are dropped from the\n * active ledger until it fits; because the full pre-compaction ledger is\n * copied verbatim to the timestamped backup first, those rows are archived,\n * not lost. Ignored when `preserveExistingEvents` is off (a frontmatter-only\n * rebuild is already bounded by the corpus). `0`/undefined disables bounding.\n */\n maxLedgerBytes?: number;\n}\n\nexport interface SkippedLifecycleBlankIdMemory {\n path: string;\n}\n\nexport interface SkippedDuplicateLifecycleEvent {\n eventId: string;\n keptPath: string;\n skippedPath: string;\n}\n\nexport interface RebuildMemoryLifecycleLedgerResult {\n dryRun: boolean;\n scannedMemories: number;\n rebuiltRows: number;\n outputPath: string;\n backupPath?: string;\n skippedBlankIdMemories: SkippedLifecycleBlankIdMemory[];\n skippedDuplicateEvents: SkippedDuplicateLifecycleEvent[];\n /**\n * Count of existing-ledger rows carried over beyond the frontmatter\n * reconstruction (only set when `preserveExistingEvents` is on; issue #1910):\n * append-only history with no frontmatter equivalent, plus any\n * frontmatter-derived row that raced in after the corpus scan and so was not\n * reproduced by the reconstruction (#2033).\n */\n preservedAppendOnlyRows?: number;\n /**\n * Count of oldest rows dropped from the ACTIVE ledger to keep it under\n * `maxLedgerBytes` (issue #2033). They remain in the verbatim timestamped\n * backup, so this is a bound-and-archive, not a loss. Set only when bounding\n * actually trimmed rows.\n */\n archivedOverflowRows?: number;\n /**\n * Whether the active ledger was actually backed up and rewritten (issue #2033\n * thread PRRT_kwDORJXyws6SExst). A preserving write-mode rebuild that would\n * reproduce the current ledger byte-for-byte (same decrypted content AND same\n * at-rest format) skips the backup+rewrite, so callers can distinguish a real\n * compaction from a no-op and avoid re-archiving an unchanged ledger every\n * interval. `true` for every dry run's non-write preview is never set — only\n * write-mode results carry it; defaults to `false` when no rewrite happened.\n */\n rewritten?: boolean;\n}\n\n/** Serialized on-disk size (bytes, incl. trailing newline) of one ledger row. */\nfunction lifecycleRowBytes(event: MemoryLifecycleEvent): number {\n return Buffer.byteLength(`${JSON.stringify(event)}\\n`, \"utf8\");\n}\n\n/**\n * Keep the NEWEST canonically-ordered events whose serialized payload fits\n * strictly under `cap` bytes (issue #2033). Recency is by `timestamp` (newest\n * first), tie-broken by the canonical comparator, so a large append-only\n * history is trimmed to its most recent rows rather than to a single memoryId\n * group (the ledger's on-disk order is by memoryId then time).\n *\n * A row too large to fit the remaining budget is SKIPPED, and scanning\n * continues to older rows that still fit — one oversized (or future-dated,\n * hence recency-first) row cannot truncate the entire older history. The kept\n * subset is returned in the input's canonical order; the caller relies on the\n * verbatim backup to retain the dropped rows.\n */\nexport function boundLifecycleEventsToByteCap(\n events: MemoryLifecycleEvent[],\n cap: number,\n): { kept: MemoryLifecycleEvent[]; dropped: number } {\n if (!(cap > 0)) return { kept: events, dropped: 0 };\n const sizes = new Map<MemoryLifecycleEvent, number>();\n let total = 0;\n for (const event of events) {\n const bytes = lifecycleRowBytes(event);\n sizes.set(event, bytes);\n total += bytes;\n }\n if (total <= cap) return { kept: events, dropped: 0 };\n const byRecency = [...events].sort((a, b) => {\n if (a.timestamp !== b.timestamp) return b.timestamp.localeCompare(a.timestamp);\n return -compareMemoryLifecycleEvents(a, b);\n });\n const keep = new Set<MemoryLifecycleEvent>();\n let running = 0;\n for (const event of byRecency) {\n const bytes = sizes.get(event)!;\n if (running + bytes > cap) continue; // skip this row, keep scanning older rows that still fit\n running += bytes;\n keep.add(event);\n }\n const kept = events.filter((event) => keep.has(event));\n return { kept, dropped: events.length - kept.length };\n}\n\nexport async function backupExistingLedger(\n memoryDir: string,\n outputPath: string,\n now: Date,\n): Promise<string | undefined> {\n try {\n await stat(outputPath);\n } catch (err) {\n if (isErrnoCode(err, \"ENOENT\")) {\n return undefined;\n }\n throw err;\n }\n\n const backupPath = path.join(\n memoryDir,\n \"archive\",\n \"memory-lifecycle-ledger\",\n toBackupStamp(now),\n \"state\",\n \"memory-lifecycle-ledger.jsonl\",\n );\n return backupPath;\n}\n\nexport async function rebuildMemoryLifecycleLedger(\n options: RebuildMemoryLifecycleLedgerOptions,\n): Promise<RebuildMemoryLifecycleLedgerResult> {\n const dryRun = options.dryRun !== false;\n const now = options.now ?? new Date();\n const outputPath = path.join(options.memoryDir, \"state\", \"memory-lifecycle-ledger.jsonl\");\n const storage = assertInjectedStorageRooted(\"rebuildMemoryLifecycleLedger\", options.memoryDir, options.storage) ?? new StorageManager(options.memoryDir);\n const secureRewrite = options.storage !== undefined;\n const tiers = [\n await storage.readAllMemories(),\n await storage.readAllColdMemories(),\n await storage.readArchivedMemories(),\n ];\n const allMemories = tiers.flat();\n const skippedBlankIdMemories: SkippedLifecycleBlankIdMemory[] = [];\n const eventCandidates: Array<{ event: MemoryLifecycleEvent; path: string }> = [];\n for (const tier of tiers) {\n for (const memory of [...tier].sort((left, right) => left.path.localeCompare(right.path))) {\n if (!memory.frontmatter.id.trim()) {\n skippedBlankIdMemories.push({ path: memory.path });\n log.warn(`lifecycle ledger rebuild skipped blank memory id: path=${memory.path}`);\n continue;\n }\n for (const event of buildLifecycleEventsForMemory(memory)) {\n eventCandidates.push({ event, path: memory.path });\n }\n }\n }\n\n const orderedEvents = sortMemoryLifecycleEvents(eventCandidates.map((candidate) => candidate.event));\n const candidateByEvent = new Map(\n eventCandidates.map((candidate) => [candidate.event, candidate]),\n );\n const keptByEventId = new Map<string, { event: MemoryLifecycleEvent; path: string }>();\n const events: MemoryLifecycleEvent[] = [];\n const skippedDuplicateEvents: SkippedDuplicateLifecycleEvent[] = [];\n for (const event of orderedEvents) {\n const candidate = candidateByEvent.get(event)!;\n const kept = keptByEventId.get(event.eventId);\n if (kept) {\n skippedDuplicateEvents.push({\n eventId: event.eventId,\n keptPath: kept.path,\n skippedPath: candidate.path,\n });\n log.warn(\n `lifecycle ledger rebuild skipped duplicate event_id=${event.eventId}: `\n + `kept=${kept.path} skipped=${candidate.path}`,\n );\n continue;\n }\n keptByEventId.set(event.eventId, candidate);\n events.push(event);\n }\n\n let finalEvents = events;\n let preservedAppendOnlyRows: number | undefined;\n let archivedOverflowRows: number | undefined;\n let backupPath: string | undefined;\n let rewritten = false;\n // The preserve-read + whole-file rewrite are serialized against concurrent\n // lifecycle appends ONLY in write mode (issue #1910, codex):\n // appendMemoryLifecycleEvents holds this same cross-process lock, so an event\n // appended after the preserve-read but before the atomic rename waits and\n // lands on the compacted ledger instead of being clobbered by the rename. A\n // DRY RUN takes no lock — it reads the ledger read-only to compute the\n // preserve/merge/byte-cap PREVIEW and never rewrites, so it must not block\n // appends (#2033 Cursor). The corpus scan above stays outside the lock in\n // both modes — frontmatter-derived rows come from the memory files.\n const runLedgerCriticalSection = async (\n acquired: boolean,\n lock: HeldFileLockController | null,\n ): Promise<void> => {\n // A WRITE that read or rewrote the ledger without the lock could race a\n // concurrent append/rewrite and lose data, so REFUSE the unlocked fallback\n // withHeldFileLock takes on acquisition timeout (issue #2033 CodeRabbit\n // Critical / codex). A dry run passes lock=null and acquired=true: it never\n // reaches the rewrite, so the unlocked preview read is safe.\n if (!dryRun && !acquired) {\n throw new Error(\n \"lifecycle ledger rebuild aborted: could not acquire the ledger lock within the \"\n + \"acquisition budget; refusing to read or rewrite unlocked so a concurrent append \"\n + \"or compaction cannot be clobbered (issue #1910).\",\n );\n }\n if (options.preserveExistingEvents) {\n // Merge the frontmatter reconstruction (`events`) with the CURRENT ledger\n // so compaction never deletes a lifecycle row that raced the scan (issue\n // #1910, #2033). Read the existing ledger through the uncapped BUFFER\n // path — it decrypts with the live key when `storage` carries the secure\n // context and bypasses the whole-file string decrypt cap, so an oversize\n // encrypted ledger (the exact file compaction must shrink) is still\n // readable here rather than aborting (#2033 Cursor High).\n // preserveExistingEvents means \"never lose history\": if the current\n // ledger genuinely cannot be read (corruption, or a locked required\n // store), ABORT rather than rewrite from frontmatter only and silently\n // drop that history. An absent ledger reads as [] (ENOENT swallowed\n // downstream), so a throw here is always a real read failure.\n let existing: MemoryLifecycleEvent[];\n try {\n existing = await storage.readAllMemoryLifecycleEventsForCompaction();\n } catch (err) {\n throw new Error(\n `lifecycle ledger rebuild aborted: cannot read existing events to preserve `\n + `(${displayErrorDetail(err) || \"unknown error\"})`,\n );\n }\n // The corpus scan (`events`) runs OUTSIDE the lock and is therefore a\n // stale snapshot; `existing` is read here under the lock and is\n // authoritative for what the ledger holds at rewrite time. A\n // frontmatter-derived row (created/updated/superseded/archived) is safe to\n // collapse into the reconstruction ONLY when the scan actually reproduced\n // the same logical event — same (memoryId, eventType, timestamp), which is\n // exactly what the live append stamps (fm.created/updated/...) and what\n // makeRebuiltMemoryLifecycleEvent emits. A frontmatter-derived row whose\n // content key the reconstruction did NOT produce raced in after the scan\n // (a memory created/updated between the scan and this locked read); the\n // reconstruction has no equivalent, so dropping it by eventType alone\n // would delete it. Preserve it instead, deduped by content key so a\n // retried append of the same logical event still collapses to one. Rows\n // that are not frontmatter-derived are append-only history with no\n // reconstruction — always carried over, deduped by eventId in the merge.\n const reconstructedKeys = new Set(events.map(memoryLifecycleEventProjectionIdentity));\n const racedFrontmatterByKey = new Map<string, MemoryLifecycleEvent>();\n const appendOnly: MemoryLifecycleEvent[] = [];\n for (const event of existing) {\n if (!isFrontmatterDerivedLifecycleEventType(event.eventType)) {\n appendOnly.push(event);\n continue;\n }\n const key = memoryLifecycleEventProjectionIdentity(event);\n if (reconstructedKeys.has(key)) continue; // collapsed into reconstruction\n if (!racedFrontmatterByKey.has(key)) racedFrontmatterByKey.set(key, event);\n }\n const mergedById = new Map<string, MemoryLifecycleEvent>();\n for (const event of sortMemoryLifecycleEvents([\n ...events,\n ...racedFrontmatterByKey.values(),\n ...appendOnly,\n ])) {\n if (!mergedById.has(event.eventId)) mergedById.set(event.eventId, event);\n }\n finalEvents = [...mergedById.values()];\n preservedAppendOnlyRows = finalEvents.length - events.length;\n // Bound the rewritten ledger so a preserving compaction can never leave it\n // over the whole-file read/decrypt cap (#2033). This must run whenever a\n // cap is set — NOT only when `existing.length > 0`: an oversized on-disk\n // ledger whose every row fails validation reads as `existing === []`, yet\n // `finalEvents` (the frontmatter reconstruction) can itself exceed the cap.\n // Overflow (oldest) rows are dropped from the active ledger but survive\n // both in the timestamped backup (a verbatim copy when the ledger is\n // plaintext, re-encrypted under the backup path's own AAD when it is\n // encrypted so it still decrypts there, #2033) and, for frontmatter-derived\n // rows, in the memory files they were reconstructed from — so a later full\n // rebuild regenerates them.\n if (options.maxLedgerBytes && options.maxLedgerBytes > 0) {\n const bounded = boundLifecycleEventsToByteCap(finalEvents, options.maxLedgerBytes);\n if (bounded.dropped > 0) {\n finalEvents = bounded.kept;\n archivedOverflowRows = bounded.dropped;\n log.warn(\n `lifecycle ledger rebuild bounded to ${options.maxLedgerBytes} bytes: `\n + `dropped ${bounded.dropped} oldest row(s) from the active ledger `\n + `(preserved in the backup) to stay under the read/decrypt cap.`,\n );\n }\n }\n }\n\n // Re-assert the lock immediately before the destructive active-ledger\n // rewrite. Everything above (the preserve read, merge, sort, byte-cap\n // bound, and JSON serialize) is CPU-bound and blocks the event loop, so the\n // timer heartbeat inside withHeldFileLock cannot refresh the lock's mtime;\n // a peer that judged the lock stale within the 30s window could have broken\n // it and appended to the current ledger. `lock.refresh()` (a) reports the\n // lock LOST so we ABORT rather than rename our compacted file over that\n // peer's append, and (b) when still held, re-stamps the mtime so the bounded\n // write below cannot itself be judged stale mid-rename (issue #1910/#2033).\n const abortIfLockLost = async (): Promise<void> => {\n if (lock && await lock.refresh()) return;\n throw new Error(\n \"lifecycle ledger rebuild aborted: lost the ledger lock during the compaction \"\n + \"rewrite (a peer stale-broke it while the event loop was blocked by CPU-bound \"\n + \"merge/serialize); refusing to clobber a concurrent append (issue #1910/#2033).\",\n );\n };\n if (!dryRun) {\n const payload = finalEvents.map((event) => JSON.stringify(event)).join(\"\\n\");\n const content = payload.length > 0 ? `${payload}\\n` : \"\";\n // No-op skip (#2033 thread PRRT_kwDORJXyws6SExst): a preserving rebuild\n // bounds the ACTIVE ledger to the read/decrypt cap, so a VALID ledger that\n // sits above the configured compaction trigger but below the cap would\n // otherwise be rewritten to identical content and re-archived on every\n // maintenance interval — unbounded growth of archive/memory-lifecycle-ledger\n // plus pointless disk/CPU churn. Skip the backup+rewrite when it would\n // change neither the logical (decrypted) content NOR the at-rest format.\n // The raw read here doubles as the source for the encrypted verbatim backup\n // below, so the current ledger is read at most once. An absent ledger reads\n // as ENOENT (a create is always a real change) and any other read/probe\n // error propagates rather than masking a needed rewrite.\n let currentEncrypted = false;\n let priorRawBuffer: Buffer | null = null;\n try {\n currentEncrypted = await probeEncryptedRegularFileHeader(outputPath);\n priorRawBuffer = await storage.readMemoryLifecycleLedgerRawBufferForCompaction();\n } catch (err) {\n if (!isErrnoCode(err, \"ENOENT\")) throw err;\n }\n // Preserve encryption at rest (#2033). An already-encrypted ledger (or its\n // encrypted backup) MUST be rewritten encrypted even when the\n // `secureStoreEncryptOnWrite` policy is paused — otherwise the compaction\n // silently DOWNGRADES encrypted state to plaintext. Force encryption\n // whenever the current ledger is encrypted and the store is unlocked (a\n // key is available); reaching this point with an encrypted ledger already\n // implies an unlocked store, since the raw read above decrypts and would\n // have thrown under a locked key. A plaintext ledger keeps the ordinary\n // policy (`willEncryptStateWrites`), so existing plaintext behavior holds.\n const forceEncrypt =\n secureRewrite && currentEncrypted && storage.isSecureStoreUnlocked();\n const replacementEncrypted =\n secureRewrite && (storage.willEncryptStateWrites() || forceEncrypt);\n // Compare as buffers, never decoding the raw ledger to one giant string:\n // a multi-hundred-MB decrypted ledger can exceed V8's max string length,\n // so `priorRawBuffer.equals(...)` (byte compare) must be used, NOT\n // `.toString()` (#2033 giant-string invariant). `content` is the freshly\n // serialized replacement, already a string; Buffer.from() reuses it.\n if (\n priorRawBuffer !== null &&\n currentEncrypted === replacementEncrypted &&\n priorRawBuffer.equals(Buffer.from(content, \"utf8\"))\n ) {\n // Nothing to change: leave the active ledger and archive untouched.\n rewritten = false;\n } else {\n const desiredBackup = await backupExistingLedger(options.memoryDir, outputPath, now);\n if (secureRewrite) {\n // Preserve encrypted-at-rest (issue #1910). The BACKUP needs care under\n // secure-store (#2033): when the existing ledger is encrypted, its bytes\n // are path-bound via AAD, so a byte-for-byte copy to the archive path\n // cannot be decrypted there — it would silently orphan the overflow rows\n // a bounded rewrite claims to preserve. Reuse the RAW decrypted ledger\n // content read above (no event parsing, so malformed/truncated/future\n // rows survive exactly as the plaintext verbatim copy keeps them) and\n // re-encrypt it under the backup path's own AAD, yielding a directly\n // decryptable backup that retains every original byte. A PLAINTEXT\n // existing ledger is already readable, so a verbatim copy is correct.\n // Then rewrite the active ledger through the secure writer.\n if (desiredBackup && currentEncrypted) {\n const rawForBackup =\n priorRawBuffer ?? (await storage.readMemoryLifecycleLedgerRawBufferForCompaction());\n await storage.writeMemoryLifecycleLedgerContent(rawForBackup, desiredBackup, forceEncrypt);\n backupPath = desiredBackup;\n } else {\n backupPath = desiredBackup\n ? await copyExistingFileToBackup(outputPath, desiredBackup)\n : undefined;\n }\n await abortIfLockLost();\n await storage.writeMemoryLifecycleLedgerContent(content, undefined, forceEncrypt);\n } else {\n await abortIfLockLost();\n backupPath = await writeFileAtomically(outputPath, content, desiredBackup);\n }\n rewritten = true;\n }\n }\n };\n // Write mode holds the ledger lock across the preserve-read and atomic\n // rewrite so a concurrent append lands on the compacted ledger instead of\n // being clobbered. A dry run computes the SAME preserve/merge/byte-cap\n // preview but WITHOUT the lock (read-only, no rewrite), so `rebuiltRows`,\n // `preservedAppendOnlyRows`, and `archivedOverflowRows` report what a --write\n // would apply while never blocking concurrent appends (#2033 Cursor). A dry\n // run with nothing to preserve touches nothing at all.\n if (!dryRun) {\n await withHeldFileLock(\n memoryLifecycleLedgerLockPath(outputPath),\n { staleMs: MEMORY_LIFECYCLE_LEDGER_LOCK_STALE_MS, ...options.lockOptions },\n runLedgerCriticalSection,\n );\n } else if (options.preserveExistingEvents) {\n await runLedgerCriticalSection(true, null);\n }\n\n return {\n dryRun,\n scannedMemories: allMemories.length,\n rebuiltRows: finalEvents.length,\n outputPath,\n backupPath,\n skippedBlankIdMemories,\n skippedDuplicateEvents,\n preservedAppendOnlyRows,\n archivedOverflowRows,\n rewritten,\n };\n}\n"],"mappings":"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","names":[]}
@@ -7,16 +7,16 @@ import {
7
7
  sha256Bytes,
8
8
  validateArchiveRelativePath
9
9
  } from "./chunk-GCGJW34D.js";
10
+ import {
11
+ DEFAULT_OFFLINE_SYNC_EXCLUDE_GLOBS
12
+ } from "./chunk-AREGMX2J.js";
10
13
  import {
11
14
  isEncryptedOfflineSyncFile,
12
15
  plainFileDigest,
13
16
  readPlainOfflineSyncFileChunk,
14
17
  sha256OfflineSyncFile,
15
18
  shouldExcludeOfflineSyncFile
16
- } from "./chunk-DDQQY2E3.js";
17
- import {
18
- DEFAULT_OFFLINE_SYNC_EXCLUDE_GLOBS
19
- } from "./chunk-AREGMX2J.js";
19
+ } from "./chunk-3BTFBQLO.js";
20
20
  import {
21
21
  CENSUS_MAX_MTIME_MS,
22
22
  isCensusMtimeMs,
@@ -1897,4 +1897,4 @@ export {
1897
1897
  normalizeOfflineSyncState,
1898
1898
  fileStatesFromSnapshot
1899
1899
  };
1900
- //# sourceMappingURL=chunk-3Q6RD76J.js.map
1900
+ //# sourceMappingURL=chunk-WQZZDN5M.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  resolveDefaultNamespaceRoot
3
- } from "./chunk-UMEOXLIZ.js";
3
+ } from "./chunk-E2P7TZTF.js";
4
4
  import {
5
5
  StorageManager
6
- } from "./chunk-OGTKQ5MJ.js";
6
+ } from "./chunk-XSGUMQQQ.js";
7
7
  import {
8
8
  composeLocationDayBody,
9
9
  composeLocationDayMeta,
@@ -23,7 +23,7 @@ import {
23
23
  serializeLocationDay,
24
24
  updateLocationSourceDay,
25
25
  writeLocationDay
26
- } from "./chunk-7GSSHAXC.js";
26
+ } from "./chunk-NLYVH66G.js";
27
27
  import {
28
28
  resolveNamespaceCapabilities
29
29
  } from "./chunk-JUOZ62Y7.js";
@@ -728,4 +728,4 @@ export {
728
728
  runLocationBackfill,
729
729
  runLocationCliCommand
730
730
  };
731
- //# sourceMappingURL=chunk-ZJWDWPX6.js.map
731
+ //# sourceMappingURL=chunk-X5K5TAQZ.js.map
@@ -4,10 +4,10 @@ import {
4
4
  } from "./chunk-IN673LEP.js";
5
5
  import {
6
6
  composeSalvagedEnvelope
7
- } from "./chunk-N4F7ZSSG.js";
7
+ } from "./chunk-RC5DXXWC.js";
8
8
  import {
9
9
  StorageManager
10
- } from "./chunk-OGTKQ5MJ.js";
10
+ } from "./chunk-XSGUMQQQ.js";
11
11
  import {
12
12
  parseContinuityImprovementLoops
13
13
  } from "./chunk-LDXUBPMO.js";
@@ -1283,4 +1283,4 @@ export {
1283
1283
  defaultTierMigrationCycleBudget,
1284
1284
  CompoundingEngine
1285
1285
  };
1286
- //# sourceMappingURL=chunk-ZL3XX5LW.js.map
1286
+ //# sourceMappingURL=chunk-XM24CDZX.js.map
@@ -15,11 +15,11 @@ import {
15
15
  } from "./chunk-XCB6QDL6.js";
16
16
  import {
17
17
  composeMemoryEnvelope
18
- } from "./chunk-WKAXBXVA.js";
18
+ } from "./chunk-3QQTXYZ6.js";
19
19
  import {
20
20
  readJsonFile,
21
21
  writeJsonFileAtomic
22
- } from "./chunk-P77QX3ID.js";
22
+ } from "./chunk-B6O2YLUR.js";
23
23
  import {
24
24
  log
25
25
  } from "./chunk-3WCASNQZ.js";
@@ -876,4 +876,4 @@ export {
876
876
  isValidResolutionVerb,
877
877
  executeResolution
878
878
  };
879
- //# sourceMappingURL=chunk-JTWZKNUH.js.map
879
+ //# sourceMappingURL=chunk-XOVKXJEP.js.map
@@ -14,20 +14,17 @@ import {
14
14
  applyTombstoneResurrectionGate,
15
15
  buildRetiredFactTombstoneInputs,
16
16
  collectRetiredMemoriesForRebuild
17
- } from "./chunk-4ZWCQJNM.js";
17
+ } from "./chunk-46WM6JX2.js";
18
18
  import {
19
19
  normalizeQmdResultPath
20
- } from "./chunk-6FUMA6AA.js";
20
+ } from "./chunk-2Z4GS5E6.js";
21
21
  import {
22
22
  withholdToolScopedFromSharedNamespace
23
23
  } from "./chunk-S2V7RUCL.js";
24
24
  import {
25
25
  SPECULATIVE_TTL_DAYS,
26
26
  confidenceTier
27
- } from "./chunk-XOQGUGJL.js";
28
- import {
29
- createMemorySnapshot
30
- } from "./chunk-S2HLHAZ4.js";
27
+ } from "./chunk-SO7SV523.js";
31
28
  import {
32
29
  normalizeProjectionPreview,
33
30
  normalizeProjectionTags
@@ -35,7 +32,10 @@ import {
35
32
  import {
36
33
  rewriteProjectedEntityReferences,
37
34
  rewriteProjectedMemoryEntityReference
38
- } from "./chunk-2GF27PGH.js";
35
+ } from "./chunk-MRPOZBJC.js";
36
+ import {
37
+ createMemorySnapshot
38
+ } from "./chunk-S2HLHAZ4.js";
39
39
  import {
40
40
  rotateMarkdownFileToArchive
41
41
  } from "./chunk-DM2T26WE.js";
@@ -61,7 +61,7 @@ import {
61
61
  isQueuedReviewMemory,
62
62
  parseTombstoneBlockedOfflineSyncMemory,
63
63
  tombstoneBlocked
64
- } from "./chunk-LUDBXTBJ.js";
64
+ } from "./chunk-H272ZPQ3.js";
65
65
  import {
66
66
  normalizeEntityName
67
67
  } from "./chunk-YXZG5TVN.js";
@@ -77,7 +77,7 @@ import {
77
77
  } from "./chunk-G7D6GZ5J.js";
78
78
  import {
79
79
  createVersion
80
- } from "./chunk-U62OK7BB.js";
80
+ } from "./chunk-JPKK466T.js";
81
81
  import {
82
82
  attachInFlightReader,
83
83
  beginCoalescedScan,
@@ -99,7 +99,7 @@ import {
99
99
  requestEntityCanonicalIdReconcileSync,
100
100
  resolveHistoricalEntityCanonicalId,
101
101
  withEntityCanonicalMutationLock
102
- } from "./chunk-NNZFPYYX.js";
102
+ } from "./chunk-R7QY5ZVB.js";
103
103
  import {
104
104
  computeSupersessionKey,
105
105
  normalizeSupersessionKey,
@@ -109,7 +109,7 @@ import {
109
109
  composeMemoryEnvelope,
110
110
  isSealedMemoryEnvelope,
111
111
  sealedWriteToLegacyArgs
112
- } from "./chunk-WKAXBXVA.js";
112
+ } from "./chunk-3QQTXYZ6.js";
113
113
  import {
114
114
  clearMemoryCache,
115
115
  getCachedEntities,
@@ -123,15 +123,6 @@ import {
123
123
  updateCacheOnDelete,
124
124
  updateCacheOnWrite
125
125
  } from "./chunk-C64XATK7.js";
126
- import {
127
- archive_mutation_version_exports,
128
- bumpArchiveMutationIfChanged,
129
- getArchiveMutationVersionForDir,
130
- recordArchiveDelete
131
- } from "./chunk-W5BIQOAJ.js";
132
- import {
133
- selectArtifactMatches
134
- } from "./chunk-Z7L72ZHL.js";
135
126
  import {
136
127
  parseProvenanceSources,
137
128
  parseProvenanceTag,
@@ -146,11 +137,20 @@ import {
146
137
  import {
147
138
  parseOriginClass
148
139
  } from "./chunk-6Q3ZTEF6.js";
140
+ import {
141
+ archive_mutation_version_exports,
142
+ bumpArchiveMutationIfChanged,
143
+ getArchiveMutationVersionForDir,
144
+ recordArchiveDelete
145
+ } from "./chunk-W5BIQOAJ.js";
146
+ import {
147
+ selectArtifactMatches
148
+ } from "./chunk-Z7L72ZHL.js";
149
149
  import {
150
150
  DEFAULT_CITATION_FORMAT,
151
151
  hasCitationForTemplate,
152
152
  stripCitationForTemplate
153
- } from "./chunk-J6A3CX5N.js";
153
+ } from "./chunk-TG3FAM2S.js";
154
154
  import {
155
155
  ProjectionLedgerLagManager,
156
156
  appendLifecycleEventsSerialized,
@@ -165,16 +165,11 @@ import {
165
165
  readMemoryActionEventRowsFromLines,
166
166
  readProjectionRebuiltAt,
167
167
  serializeLifecycleAppendPayload
168
- } from "./chunk-JRRQ747T.js";
168
+ } from "./chunk-TBXAY2SS.js";
169
169
  import {
170
170
  assertMemoryFrontmatterId,
171
171
  warnProjectionFallback
172
172
  } from "./chunk-ZA53AZND.js";
173
- import {
174
- inferMemoryStatus,
175
- isArchivedMemoryPath,
176
- toMemoryPathRel
177
- } from "./chunk-7RJUVTVF.js";
178
173
  import {
179
174
  markProjectedMemoryPathInvalid,
180
175
  readProjectedGovernanceRecord,
@@ -186,21 +181,26 @@ import {
186
181
  import {
187
182
  assertPathInsideRoot,
188
183
  pathIsInside
189
- } from "./chunk-GCASGYIO.js";
184
+ } from "./chunk-C7HJ3NEI.js";
190
185
  import {
191
- isSupportPassportPrivateMemory
192
- } from "./chunk-EEOUMG3J.js";
186
+ inferMemoryStatus,
187
+ isArchivedMemoryPath,
188
+ toMemoryPathRel
189
+ } from "./chunk-7RJUVTVF.js";
193
190
  import {
194
191
  CONTENT_HASH_INDEX_RETRY_MAX_DELAY_MS,
195
192
  ContentHashIndex,
196
193
  FactHashIndexNotAuthoritativeError
197
- } from "./chunk-TVW4C7PV.js";
194
+ } from "./chunk-NB3LRY4T.js";
195
+ import {
196
+ computeLegacyContentHash
197
+ } from "./chunk-5FVVY2EB.js";
198
198
  import {
199
199
  withHeldFileLock
200
200
  } from "./chunk-FFAZ2XFU.js";
201
201
  import {
202
- computeLegacyContentHash
203
- } from "./chunk-5FVVY2EB.js";
202
+ isSupportPassportPrivateMemory
203
+ } from "./chunk-EEOUMG3J.js";
204
204
  import {
205
205
  assemblePersistedBody,
206
206
  storedContentIdentityCandidates,
@@ -234,7 +234,7 @@ import {
234
234
  readMaybeEncryptedFile,
235
235
  readMaybeEncryptedFileBuffer,
236
236
  writeMaybeEncryptedFile
237
- } from "./chunk-ET2CNMLD.js";
237
+ } from "./chunk-JN72EPOE.js";
238
238
  import {
239
239
  ALL_CATEGORY_DIRS,
240
240
  RECALL_FALLBACK_DIRS,
@@ -243,7 +243,7 @@ import {
243
243
  } from "./chunk-VS2IYZRU.js";
244
244
  import {
245
245
  isErrnoCode
246
- } from "./chunk-5UZXUTVO.js";
246
+ } from "./chunk-KNA3BXXL.js";
247
247
  import {
248
248
  log
249
249
  } from "./chunk-3WCASNQZ.js";
@@ -8809,11 +8809,10 @@ ${sanitized.text}
8809
8809
  if (memory.frontmatter.category !== "fact") return [];
8810
8810
  return this.corpusRegisteredHashes(memory);
8811
8811
  }
8812
- async addActiveFactContentHash(memory) {
8812
+ /** Publish `hashes` for an ACTIVE fact through the SAME locked reconcile the write path uses. */
8813
+ async publishActiveFactHashes(memory, hashes) {
8813
8814
  if (memory.frontmatter.category !== "fact") return;
8814
8815
  if (inferMemoryStatus(memory.frontmatter, memory.path) !== "active") return;
8815
- const hashes = this.factContentHashesForRemoval(memory);
8816
- if (hashes.length === 0) return;
8817
8816
  await this.ensureFactHashIndexAuthoritative();
8818
8817
  const factHashIndex = await this.getFactHashIndex();
8819
8818
  for (const hash of hashes) {
@@ -8822,19 +8821,33 @@ ${sanitized.text}
8822
8821
  await factHashIndex.saveMergingWithDisk();
8823
8822
  await factHashIndex.flushReconcileRetry();
8824
8823
  }
8824
+ /**
8825
+ * Register an EXPLICITLY computed content hash for an active fact (issue
8826
+ * #2330 round N+16 C): the degraded merge repair indexes the COMMITTED
8827
+ * body while the persisted `frontmatter.contentHash` is the stale
8828
+ * PRE-merge identity. Round N+20 (B): body-coupled (`expectedContent`) —
8829
+ * repair), so no obsolete hash lands on a newer record. No-op otherwise.
8830
+ */
8831
+ async registerFactContentHash(memoryId, contentHash, expectedContent) {
8832
+ if (!contentHash) return;
8833
+ const memory = await this.getMemoryByIdIncludingArchived(memoryId);
8834
+ if (!memory || memory.content !== expectedContent) return;
8835
+ await this.publishActiveFactHashes(memory, [contentHash]);
8836
+ }
8837
+ async addActiveFactContentHash(memory) {
8838
+ const hashes = this.factContentHashesForRemoval(memory);
8839
+ if (hashes.length === 0) return;
8840
+ await this.publishActiveFactHashes(memory, hashes);
8841
+ }
8825
8842
  /**
8826
8843
  * Re-register a fact's contentHash in the dedup index after a tombstone
8827
- * block is lifted on approval (issue #1579 thread ObnTy). `writeMemory`
8828
- * skips hash-index registration for tombstone-blocked facts (rule 44); when
8829
- * the review queue later promotes such a fact back to `status: active`, the
8830
- * hash must enter the index or the next extraction of the same content
8831
- * creates a second active fact. Reads the memory by id so the caller (the
8832
- * review CLI) does not need to re-parse the file. No-op for non-facts or
8833
- * facts that are not active.
8844
+ * block is lifted on approval (issue #1579 thread ObnTy): `writeMemory`
8845
+ * skips registration for tombstone-blocked facts (rule 44), so a promoted
8846
+ * fact must re-enter the index or the next extraction of the same content
8847
+ * creates a second active fact. No-op for non-facts or inactive facts.
8834
8848
  */
8835
8849
  async restoreFactHashAfterApproval(memoryId) {
8836
- const all = await this.readAllMemories();
8837
- const memory = all.find((m) => m.frontmatter.id === memoryId);
8850
+ const memory = await this.getMemoryByIdIncludingArchived(memoryId);
8838
8851
  if (!memory) return;
8839
8852
  await this.addActiveFactContentHash(memory);
8840
8853
  }
@@ -8844,8 +8857,7 @@ ${sanitized.text}
8844
8857
  const afterHashes = this.factContentHashesForRemoval(after);
8845
8858
  const beforeStatus = inferMemoryStatus(before.frontmatter, before.path);
8846
8859
  const afterStatus = inferMemoryStatus(after.frontmatter, after.path);
8847
- const hashesChanged = beforeHashes.length !== afterHashes.length || beforeHashes.some((hash, index) => hash !== afterHashes[index]);
8848
- if (!hashesChanged && beforeStatus === afterStatus) return;
8860
+ const hashesChanged = beforeHashes.length !== afterHashes.length || beforeHashes.some((h, i) => h !== afterHashes[i]);
8849
8861
  if (beforeStatus === "active" && beforeHashes.length > 0 && (hashesChanged || afterStatus !== "active")) {
8850
8862
  await this.removeFactContentHashesForMemories([before]);
8851
8863
  }
@@ -11374,4 +11386,4 @@ export {
11374
11386
  isValidBufferSurpriseEvent,
11375
11387
  StorageManager3 as StorageManager
11376
11388
  };
11377
- //# sourceMappingURL=chunk-OGTKQ5MJ.js.map
11389
+ //# sourceMappingURL=chunk-XSGUMQQQ.js.map