@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
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isErrnoCode
3
- } from "./chunk-5UZXUTVO.js";
3
+ } from "./chunk-KNA3BXXL.js";
4
4
 
5
5
  // src/utils/path-containment.ts
6
6
  import path from "path";
@@ -68,4 +68,4 @@ export {
68
68
  listContainedSpillFiles,
69
69
  ensureContainedSpillDir
70
70
  };
71
- //# sourceMappingURL=chunk-GCASGYIO.js.map
71
+ //# sourceMappingURL=chunk-C7HJ3NEI.js.map
@@ -1,6 +1,11 @@
1
1
  import {
2
2
  resolveEnsureCollectionArgs
3
3
  } from "./chunk-JXN77SGO.js";
4
+ import {
5
+ EMPTY_QMD_STATUS,
6
+ embedQmdFiles,
7
+ fetchQmdStatus
8
+ } from "./chunk-IUM3VSHI.js";
4
9
  import {
5
10
  QMD_PROBE_RETRY_BACKOFF_MS,
6
11
  QMD_PROBE_TIMEOUT_MS,
@@ -13,11 +18,6 @@ import {
13
18
  qmdVersionToString,
14
19
  resolveQmdCapabilities
15
20
  } from "./chunk-ZLQ37WJX.js";
16
- import {
17
- EMPTY_QMD_STATUS,
18
- embedQmdFiles,
19
- fetchQmdStatus
20
- } from "./chunk-IUM3VSHI.js";
21
21
  import {
22
22
  clearQmdResultCaches,
23
23
  getCachedQmdSearch,
@@ -2245,4 +2245,4 @@ export {
2245
2245
  sharedDaemonSessionCountForTest,
2246
2246
  QmdClient
2247
2247
  };
2248
- //# sourceMappingURL=chunk-C24UZSFW.js.map
2248
+ //# sourceMappingURL=chunk-CEH2AFXG.js.map
@@ -19,7 +19,7 @@ import {
19
19
  import {
20
20
  decryptMemoryDirToPlaintext,
21
21
  migrateMemoryDirToEncrypted
22
- } from "./chunk-ET2CNMLD.js";
22
+ } from "./chunk-JN72EPOE.js";
23
23
  import {
24
24
  generateSalt
25
25
  } from "./chunk-A6XUJE5D.js";
@@ -499,4 +499,4 @@ export {
499
499
  renderStatusReport,
500
500
  createPassphraseReader
501
501
  };
502
- //# sourceMappingURL=chunk-WVGXCBOC.js.map
502
+ //# sourceMappingURL=chunk-D5F7TKMH.js.map
@@ -0,0 +1,141 @@
1
+ import {
2
+ graphFilePath,
3
+ readEdgesStrict
4
+ } from "./chunk-5FAGCOZD.js";
5
+ import {
6
+ assertGraphLockHeld,
7
+ withGraphWriteLock,
8
+ yieldForLockHeartbeat
9
+ } from "./chunk-EUT2WCWS.js";
10
+ import {
11
+ log
12
+ } from "./chunk-3WCASNQZ.js";
13
+
14
+ // src/graph-jsonl.ts
15
+ import { mkdir, rename, writeFile } from "fs/promises";
16
+ import * as path from "path";
17
+ var EDGE_SERIALIZE_YIELD_BATCH = 5e3;
18
+ async function writeGraphJsonlAtomic(filePath, edges, lock) {
19
+ await mkdir(path.dirname(filePath), { recursive: true });
20
+ let body = "";
21
+ for (let i = 0; i < edges.length; i += EDGE_SERIALIZE_YIELD_BATCH) {
22
+ if (i > 0) await yieldForLockHeartbeat();
23
+ const end = Math.min(i + EDGE_SERIALIZE_YIELD_BATCH, edges.length);
24
+ for (let j = i; j < end; j += 1) {
25
+ body += `${JSON.stringify(edges[j])}
26
+ `;
27
+ }
28
+ }
29
+ const tempPath = `${filePath}.${process.pid}.${Date.now()}.${Math.random().toString(36).slice(2)}.tmp`;
30
+ await writeFile(tempPath, body, "utf-8");
31
+ await assertGraphLockHeld(filePath, lock);
32
+ await rename(tempPath, filePath);
33
+ }
34
+ function isNodeGeneratedEdge(edge, type, memoryPath) {
35
+ return type === "entity" ? edge.from === memoryPath : edge.to === memoryPath;
36
+ }
37
+ async function removeNodeEdgesForRewrite(memoryDir, memoryPath, types) {
38
+ const results = [];
39
+ for (const type of types) {
40
+ const filePath = graphFilePath(memoryDir, type);
41
+ let removed;
42
+ try {
43
+ removed = await withGraphWriteLock(filePath, async (lock) => {
44
+ const edges = await readEdgesStrict(memoryDir, type);
45
+ const removedEdges = edges.filter((edge) => isNodeGeneratedEdge(edge, type, memoryPath));
46
+ if (removedEdges.length === 0) return [];
47
+ await assertGraphLockHeld(filePath, lock);
48
+ await writeGraphJsonlAtomic(
49
+ filePath,
50
+ edges.filter((edge) => !isNodeGeneratedEdge(edge, type, memoryPath)),
51
+ lock
52
+ );
53
+ return removedEdges;
54
+ });
55
+ } catch (err) {
56
+ for (const done of results) {
57
+ await restoreRemovedNodeEdges(memoryDir, done).catch(() => void 0);
58
+ }
59
+ throw err;
60
+ }
61
+ if (removed.length > 0) results.push({ type, filePath, removed });
62
+ }
63
+ return results;
64
+ }
65
+ async function restoreRemovedNodeEdges(memoryDir, removed) {
66
+ if (removed.removed.length === 0) return 0;
67
+ return withGraphWriteLock(removed.filePath, async (lock) => {
68
+ const current = await readEdgesStrict(memoryDir, removed.type);
69
+ const present = new Set(current.map((edge) => JSON.stringify(edge)));
70
+ const toRestore = removed.removed.filter((edge) => !present.has(JSON.stringify(edge)));
71
+ if (toRestore.length === 0) return 0;
72
+ await assertGraphLockHeld(removed.filePath, lock);
73
+ await writeGraphJsonlAtomic(removed.filePath, [...current, ...toRestore], lock);
74
+ return toRestore.length;
75
+ });
76
+ }
77
+ async function rollbackNodeEdgeRewrite(memoryDir, memoryPath, types, removed, nodeId, appended) {
78
+ let residue = /* @__PURE__ */ new Set();
79
+ const cleanup = appended ? removeAppendedNodeEdges(memoryDir, memoryPath, types, appended) : removeNodeEdgesForRewrite(memoryDir, memoryPath, types).then(() => /* @__PURE__ */ new Set());
80
+ await cleanup.then((left) => {
81
+ residue = left;
82
+ }).catch(
83
+ (cleanErr) => log.error(
84
+ `semantic-merge: partial graph edge cleanup failed for ${nodeId} \u2014 edges from the failed rebuild remain; rebuild with graph health repair: ${cleanErr instanceof Error ? cleanErr.message : String(cleanErr)}`
85
+ )
86
+ );
87
+ for (const entry of removed) {
88
+ if (residue.has(entry.type)) {
89
+ log.warn(
90
+ `semantic-merge: skipped ${entry.type} snapshot restore for ${nodeId} \u2014 a newer writer's rebuilt edges are live in that graph`
91
+ );
92
+ continue;
93
+ }
94
+ await restoreRemovedNodeEdges(memoryDir, entry).catch(
95
+ (restoreErr) => log.error(
96
+ `semantic-merge: graph edge restore failed for ${nodeId} ${entry.type} graph \u2014 the prior edges may be lost; rebuild with graph health repair: ${restoreErr instanceof Error ? restoreErr.message : String(restoreErr)}`
97
+ )
98
+ );
99
+ }
100
+ }
101
+ async function removeAppendedNodeEdges(memoryDir, memoryPath, types, appended) {
102
+ const mineByType = /* @__PURE__ */ new Map();
103
+ for (const edge of appended) {
104
+ const list = mineByType.get(edge.type) ?? [];
105
+ list.push(JSON.stringify(edge));
106
+ mineByType.set(edge.type, list);
107
+ }
108
+ const residue = /* @__PURE__ */ new Set();
109
+ for (const type of types) {
110
+ const filePath = graphFilePath(memoryDir, type);
111
+ const mine = mineByType.get(type) ?? [];
112
+ await withGraphWriteLock(filePath, async (lock) => {
113
+ const edges = await readEdgesStrict(memoryDir, type);
114
+ if (mine.length > 0) {
115
+ const identities = new Set(mine);
116
+ const kept = edges.filter((edge) => !identities.has(JSON.stringify(edge)));
117
+ if (kept.length !== edges.length) {
118
+ try {
119
+ await assertGraphLockHeld(filePath, lock);
120
+ } catch {
121
+ residue.add(type);
122
+ return;
123
+ }
124
+ await writeGraphJsonlAtomic(filePath, kept, lock);
125
+ }
126
+ }
127
+ if (edges.some((edge) => isNodeGeneratedEdge(edge, type, memoryPath) && !mine.includes(JSON.stringify(edge)))) {
128
+ residue.add(type);
129
+ }
130
+ });
131
+ }
132
+ return residue;
133
+ }
134
+
135
+ export {
136
+ writeGraphJsonlAtomic,
137
+ removeNodeEdgesForRewrite,
138
+ restoreRemovedNodeEdges,
139
+ rollbackNodeEdgeRewrite
140
+ };
141
+ //# sourceMappingURL=chunk-DGS34QSY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/graph-jsonl.ts"],"sourcesContent":["/**\n * Graph JSONL rewrite primitives (sibling of graph.ts, kept out so graph.ts\n * stays under the 1200-LOC new-work cap of issue #1995).\n *\n * `appendEdge` in graph.ts is append-only by design. These helpers are the\n * REPLACE path: callers that re-write an existing node's edges (the\n * judge-merged target of issue #2330) must first drop the node's prior\n * generated edges or every re-write duplicates them.\n */\n\nimport { mkdir, rename, writeFile } from \"node:fs/promises\";\nimport * as path from \"node:path\";\nimport { log } from \"./logger.js\";\nimport { graphFilePath, readEdgesStrict, withGraphWriteLock, type GraphEdge, type GraphType } from \"./graph.js\";\nimport {\n assertGraphLockHeld,\n yieldForLockHeartbeat,\n type GraphWriteLockSection,\n} from \"./graph-write-lock.js\";\n\n/**\n * Write a graph JSONL file atomically using temp+rename (gotcha #54: never\n * delete-then-rename; rename is atomic on the same filesystem). Shared by\n * the edge-decay rewrite and node-edge replacement so every JSONL rewrite\n * path serializes on the same lock and the same atomic-write discipline.\n */\n/** Serialize batch size at which body building yields to the event loop\n * (round N+19 A): one `map+join` over a large corpus blocks the loop past\n * the lock's heartbeat window. */\nconst EDGE_SERIALIZE_YIELD_BATCH = 5_000;\n\nexport async function writeGraphJsonlAtomic(\n filePath: string,\n edges: GraphEdge[],\n lock: GraphWriteLockSection,\n): Promise<void> {\n await mkdir(path.dirname(filePath), { recursive: true });\n // Chunked with event-loop yields: the caller holds the graph write lock,\n // and its mtime heartbeat is a timer that cannot fire while a single\n // synchronous stringify pass over a multi-hundred-thousand-row corpus\n // blocks the loop (round N+19 A).\n let body = \"\";\n for (let i = 0; i < edges.length; i += EDGE_SERIALIZE_YIELD_BATCH) {\n if (i > 0) await yieldForLockHeartbeat();\n const end = Math.min(i + EDGE_SERIALIZE_YIELD_BATCH, edges.length);\n for (let j = i; j < end; j += 1) {\n body += `${JSON.stringify(edges[j])}\\n`;\n }\n }\n const tempPath = `${filePath}.${process.pid}.${Date.now()}.${Math.random().toString(36).slice(2)}.tmp`;\n await writeFile(tempPath, body, \"utf-8\");\n // Round N+20 (A): the callers' pre-build guards cannot cover the build\n // itself — a section paused past the stale window between the caller's\n // check and this rename resumes to publish over the peer that broke the\n // lock and wrote its own newer graph. Revalidate ownership immediately\n // before the destructive rename; a lost lock aborts and leaves the peer's\n // file untouched (the staged temp is orphaned, same as a rename failure).\n await assertGraphLockHeld(filePath, lock);\n await rename(tempPath, filePath);\n}\n\n/**\n * Which edges a node's OWN write generates, per graph type (round N+7 G):\n * - entity: the node is the `from` side (node → entity siblings);\n * - time/causal: the node is the `to` side (predecessor → node) — the\n * write links BACK to its predecessor, so the inbound edge is the one\n * this node's write created. The node's outbound time/causal edges\n * (node → later nodes) belong to those LATER nodes' writes and are never\n * touched here.\n */\nfunction isNodeGeneratedEdge(edge: GraphEdge, type: GraphType, memoryPath: string): boolean {\n return type === \"entity\" ? edge.from === memoryPath : edge.to === memoryPath;\n}\n\n/** The edges one removal dropped from one graph file, kept for restoration. */\nexport interface RemovedNodeEdges {\n type: GraphType;\n filePath: string;\n removed: GraphEdge[];\n}\n\n/**\n * Remove an existing node's prior generated edges across the given graph\n * types so a RE-write of the same node (a judge-merged memory, issue #2330)\n * REPLACES them instead of re-appending them into the append-only JSONL —\n * duplicates `spreadingActivation` sums into candidate scores and that grow\n * without bound. One shared routine covers every enabled type; there is no\n * per-type copy. Read and rewrite run under the same per-file write lock as\n * `appendEdge` so a concurrent append cannot be dropped (issue #729). The\n * removed edges are RETURNED so the caller can restore them when the\n * replacement build fails (round N+7 E).\n */\nexport async function removeNodeEdgesForRewrite(\n memoryDir: string,\n memoryPath: string,\n types: readonly GraphType[],\n): Promise<RemovedNodeEdges[]> {\n const results: RemovedNodeEdges[] = [];\n for (const type of types) {\n const filePath = graphFilePath(memoryDir, type);\n let removed: GraphEdge[];\n try {\n removed = await withGraphWriteLock(filePath, async (lock) => {\n const edges = await readEdgesStrict(memoryDir, type);\n const removedEdges = edges.filter((edge) => isNodeGeneratedEdge(edge, type, memoryPath));\n if (removedEdges.length === 0) return [];\n // Round N+19 A: a peer may have stale-broken this lock while a large\n // parse blocked the loop — revalidate ownership before publishing the\n // replacement; a lost lock aborts (the catch below restores any\n // earlier committed types, then rethrows).\n await assertGraphLockHeld(filePath, lock);\n await writeGraphJsonlAtomic(\n filePath,\n edges.filter((edge) => !isNodeGeneratedEdge(edge, type, memoryPath)),\n lock,\n );\n return removedEdges;\n });\n } catch (err) {\n // A partial pass (type 1 committed, type 2 failed) must not leave the\n // committed removal stranded: undo what already landed, then surface.\n for (const done of results) {\n await restoreRemovedNodeEdges(memoryDir, done).catch(() => undefined);\n }\n throw err;\n }\n if (removed.length > 0) results.push({ type, filePath, removed });\n }\n return results;\n}\n\n/**\n * Restore edges a {@link removeNodeEdgesForRewrite} pass dropped, after the\n * replacement build FAILED (round N+7 E): failure must leave either the old\n * or the new complete set, never none. Appends the removed edges back under\n * the same per-file lock, deduped on the exact JSON row so a retry that\n * partially succeeded cannot double them.\n */\nexport async function restoreRemovedNodeEdges(\n memoryDir: string,\n removed: RemovedNodeEdges,\n): Promise<number> {\n if (removed.removed.length === 0) return 0;\n return withGraphWriteLock(removed.filePath, async (lock) => {\n const current = await readEdgesStrict(memoryDir, removed.type);\n const present = new Set(current.map((edge) => JSON.stringify(edge)));\n const toRestore = removed.removed.filter((edge) => !present.has(JSON.stringify(edge)));\n if (toRestore.length === 0) return 0;\n // Round N+19 A: revalidate ownership before restoring over the file —\n // a peer that broke the lock owns the file now, and restoring our older\n // snapshot over its write would clobber it. The throw leaves the current\n // (peer-owned) file intact; callers log the skipped restore.\n await assertGraphLockHeld(removed.filePath, lock);\n await writeGraphJsonlAtomic(removed.filePath, [...current, ...toRestore], lock);\n return toRestore.length;\n });\n}\n\n/**\n * Round N+10 (C) + N+14 companion to {@link removeNodeEdgesForRewrite}: the\n * replacement build FAILED or was superseded, possibly after appending SOME\n * of the node's new edges. Two duties, both scoped to what THIS writer did:\n *\n * 1. Remove the rows the failed build actually appended. When `appended` is\n * provided the removal is surgical — by exact JSON row identity, per\n * file, under the same per-file lock — so rows a NEWER writer appended\n * after this writer's removal (never in this writer's snapshot) survive.\n * Rows a newer writer already swept are simply absent and the removal is\n * a no-op. Since round N+16 (A) a THROWING build carries its partial row\n * set on `GraphEdgeAppendError`, so the surgical path holds on the throw\n * too; only a build that neither returns rows nor wraps its failure\n * falls back to the node-wide sweep of\n * {@link removeNodeEdgesForRewrite}: identical outcome when no newer\n * writer interleaved.\n * 2. Restore the snapshot the original removal dropped — but only for graph\n * types whose file holds NO unexplained node rows after step 1. A type\n * that still has node rows this writer cannot account for is owned by the\n * newer writer's completed rebuild; restoring the older snapshot over it\n * left the memory holding B's body while graph recall reflected the\n * pre-A state (the N+14 finding). Types swept clean restore verbatim\n * (N+7 E: failure leaves the old or the new complete set, never none).\n */\nexport async function rollbackNodeEdgeRewrite(\n memoryDir: string,\n memoryPath: string,\n types: readonly GraphType[],\n removed: RemovedNodeEdges[],\n nodeId: string,\n appended?: readonly GraphEdge[],\n): Promise<void> {\n let residue = new Set<GraphType>();\n const cleanup = appended\n ? removeAppendedNodeEdges(memoryDir, memoryPath, types, appended)\n : removeNodeEdgesForRewrite(memoryDir, memoryPath, types).then((): Set<GraphType> => new Set());\n await cleanup\n .then((left) => {\n residue = left;\n })\n .catch((cleanErr) =>\n log.error(\n `semantic-merge: partial graph edge cleanup failed for ${nodeId} — edges from the failed rebuild remain; rebuild with graph health repair: ${cleanErr instanceof Error ? cleanErr.message : String(cleanErr)}`,\n ),\n );\n for (const entry of removed) {\n if (residue.has(entry.type)) {\n log.warn(\n `semantic-merge: skipped ${entry.type} snapshot restore for ${nodeId} — a newer writer's rebuilt edges are live in that graph`,\n );\n continue;\n }\n await restoreRemovedNodeEdges(memoryDir, entry).catch((restoreErr) =>\n log.error(\n `semantic-merge: graph edge restore failed for ${nodeId} ${entry.type} graph — the prior edges may be lost; rebuild with graph health repair: ${restoreErr instanceof Error ? restoreErr.message : String(restoreErr)}`,\n ),\n );\n }\n}\n\n/**\n * Round N+14: remove exactly the rows a failed/superseded build appended,\n * then report which of the rewrite types still hold node-generated rows this\n * writer did NOT append (a newer writer's live rebuild) so the caller can\n * skip restoring its older snapshot over them.\n */\nasync function removeAppendedNodeEdges(\n memoryDir: string,\n memoryPath: string,\n types: readonly GraphType[],\n appended: readonly GraphEdge[],\n): Promise<Set<GraphType>> {\n const mineByType = new Map<GraphType, string[]>();\n for (const edge of appended) {\n const list = mineByType.get(edge.type) ?? [];\n list.push(JSON.stringify(edge));\n mineByType.set(edge.type, list);\n }\n const residue = new Set<GraphType>();\n for (const type of types) {\n const filePath = graphFilePath(memoryDir, type);\n const mine = mineByType.get(type) ?? [];\n await withGraphWriteLock(filePath, async (lock) => {\n const edges = await readEdgesStrict(memoryDir, type);\n if (mine.length > 0) {\n const identities = new Set(mine);\n const kept = edges.filter((edge) => !identities.has(JSON.stringify(edge)));\n if (kept.length !== edges.length) {\n // Round N+19 A: lost lock — a peer owns the file. Cleaning it would\n // clobber the peer's write, so leave it, mark the type as residue,\n // and let the caller skip restoring its older snapshot over it\n // (our appended rows may survive as duplicates; graph health\n // repair reconciles). Never old-plus-partial-new over a peer.\n try {\n await assertGraphLockHeld(filePath, lock);\n } catch {\n residue.add(type);\n return;\n }\n await writeGraphJsonlAtomic(filePath, kept, lock);\n }\n }\n if (edges.some((edge) => isNodeGeneratedEdge(edge, type, memoryPath) && !mine.includes(JSON.stringify(edge)))) {\n residue.add(type);\n }\n });\n }\n return residue;\n}\n"],"mappings":";;;;;;;;;;;;;;AAUA,SAAS,OAAO,QAAQ,iBAAiB;AACzC,YAAY,UAAU;AAkBtB,IAAM,6BAA6B;AAEnC,eAAsB,sBACpB,UACA,OACA,MACe;AACf,QAAM,MAAW,aAAQ,QAAQ,GAAG,EAAE,WAAW,KAAK,CAAC;AAKvD,MAAI,OAAO;AACX,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK,4BAA4B;AACjE,QAAI,IAAI,EAAG,OAAM,sBAAsB;AACvC,UAAM,MAAM,KAAK,IAAI,IAAI,4BAA4B,MAAM,MAAM;AACjE,aAAS,IAAI,GAAG,IAAI,KAAK,KAAK,GAAG;AAC/B,cAAQ,GAAG,KAAK,UAAU,MAAM,CAAC,CAAC,CAAC;AAAA;AAAA,IACrC;AAAA,EACF;AACA,QAAM,WAAW,GAAG,QAAQ,IAAI,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;AAChG,QAAM,UAAU,UAAU,MAAM,OAAO;AAOvC,QAAM,oBAAoB,UAAU,IAAI;AACxC,QAAM,OAAO,UAAU,QAAQ;AACjC;AAWA,SAAS,oBAAoB,MAAiB,MAAiB,YAA6B;AAC1F,SAAO,SAAS,WAAW,KAAK,SAAS,aAAa,KAAK,OAAO;AACpE;AAoBA,eAAsB,0BACpB,WACA,YACA,OAC6B;AAC7B,QAAM,UAA8B,CAAC;AACrC,aAAW,QAAQ,OAAO;AACxB,UAAM,WAAW,cAAc,WAAW,IAAI;AAC9C,QAAI;AACJ,QAAI;AACF,gBAAU,MAAM,mBAAmB,UAAU,OAAO,SAAS;AAC3D,cAAM,QAAQ,MAAM,gBAAgB,WAAW,IAAI;AACnD,cAAM,eAAe,MAAM,OAAO,CAAC,SAAS,oBAAoB,MAAM,MAAM,UAAU,CAAC;AACvF,YAAI,aAAa,WAAW,EAAG,QAAO,CAAC;AAKvC,cAAM,oBAAoB,UAAU,IAAI;AACxC,cAAM;AAAA,UACJ;AAAA,UACA,MAAM,OAAO,CAAC,SAAS,CAAC,oBAAoB,MAAM,MAAM,UAAU,CAAC;AAAA,UACnE;AAAA,QACF;AACA,eAAO;AAAA,MACT,CAAC;AAAA,IACH,SAAS,KAAK;AAGZ,iBAAW,QAAQ,SAAS;AAC1B,cAAM,wBAAwB,WAAW,IAAI,EAAE,MAAM,MAAM,MAAS;AAAA,MACtE;AACA,YAAM;AAAA,IACR;AACA,QAAI,QAAQ,SAAS,EAAG,SAAQ,KAAK,EAAE,MAAM,UAAU,QAAQ,CAAC;AAAA,EAClE;AACA,SAAO;AACT;AASA,eAAsB,wBACpB,WACA,SACiB;AACjB,MAAI,QAAQ,QAAQ,WAAW,EAAG,QAAO;AACzC,SAAO,mBAAmB,QAAQ,UAAU,OAAO,SAAS;AAC1D,UAAM,UAAU,MAAM,gBAAgB,WAAW,QAAQ,IAAI;AAC7D,UAAM,UAAU,IAAI,IAAI,QAAQ,IAAI,CAAC,SAAS,KAAK,UAAU,IAAI,CAAC,CAAC;AACnE,UAAM,YAAY,QAAQ,QAAQ,OAAO,CAAC,SAAS,CAAC,QAAQ,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC;AACrF,QAAI,UAAU,WAAW,EAAG,QAAO;AAKnC,UAAM,oBAAoB,QAAQ,UAAU,IAAI;AAChD,UAAM,sBAAsB,QAAQ,UAAU,CAAC,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI;AAC9E,WAAO,UAAU;AAAA,EACnB,CAAC;AACH;AA0BA,eAAsB,wBACpB,WACA,YACA,OACA,SACA,QACA,UACe;AACf,MAAI,UAAU,oBAAI,IAAe;AACjC,QAAM,UAAU,WACZ,wBAAwB,WAAW,YAAY,OAAO,QAAQ,IAC9D,0BAA0B,WAAW,YAAY,KAAK,EAAE,KAAK,MAAsB,oBAAI,IAAI,CAAC;AAChG,QAAM,QACH,KAAK,CAAC,SAAS;AACd,cAAU;AAAA,EACZ,CAAC,EACA;AAAA,IAAM,CAAC,aACN,IAAI;AAAA,MACF,yDAAyD,MAAM,mFAA8E,oBAAoB,QAAQ,SAAS,UAAU,OAAO,QAAQ,CAAC;AAAA,IAC9M;AAAA,EACF;AACF,aAAW,SAAS,SAAS;AAC3B,QAAI,QAAQ,IAAI,MAAM,IAAI,GAAG;AAC3B,UAAI;AAAA,QACF,2BAA2B,MAAM,IAAI,yBAAyB,MAAM;AAAA,MACtE;AACA;AAAA,IACF;AACA,UAAM,wBAAwB,WAAW,KAAK,EAAE;AAAA,MAAM,CAAC,eACrD,IAAI;AAAA,QACF,iDAAiD,MAAM,IAAI,MAAM,IAAI,gFAA2E,sBAAsB,QAAQ,WAAW,UAAU,OAAO,UAAU,CAAC;AAAA,MACvN;AAAA,IACF;AAAA,EACF;AACF;AAQA,eAAe,wBACb,WACA,YACA,OACA,UACyB;AACzB,QAAM,aAAa,oBAAI,IAAyB;AAChD,aAAW,QAAQ,UAAU;AAC3B,UAAM,OAAO,WAAW,IAAI,KAAK,IAAI,KAAK,CAAC;AAC3C,SAAK,KAAK,KAAK,UAAU,IAAI,CAAC;AAC9B,eAAW,IAAI,KAAK,MAAM,IAAI;AAAA,EAChC;AACA,QAAM,UAAU,oBAAI,IAAe;AACnC,aAAW,QAAQ,OAAO;AACxB,UAAM,WAAW,cAAc,WAAW,IAAI;AAC9C,UAAM,OAAO,WAAW,IAAI,IAAI,KAAK,CAAC;AACtC,UAAM,mBAAmB,UAAU,OAAO,SAAS;AACjD,YAAM,QAAQ,MAAM,gBAAgB,WAAW,IAAI;AACnD,UAAI,KAAK,SAAS,GAAG;AACnB,cAAM,aAAa,IAAI,IAAI,IAAI;AAC/B,cAAM,OAAO,MAAM,OAAO,CAAC,SAAS,CAAC,WAAW,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC;AACzE,YAAI,KAAK,WAAW,MAAM,QAAQ;AAMhC,cAAI;AACF,kBAAM,oBAAoB,UAAU,IAAI;AAAA,UAC1C,QAAQ;AACN,oBAAQ,IAAI,IAAI;AAChB;AAAA,UACF;AACA,gBAAM,sBAAsB,UAAU,MAAM,IAAI;AAAA,QAClD;AAAA,MACF;AACA,UAAI,MAAM,KAAK,CAAC,SAAS,oBAAoB,MAAM,MAAM,UAAU,KAAK,CAAC,KAAK,SAAS,KAAK,UAAU,IAAI,CAAC,CAAC,GAAG;AAC7G,gBAAQ,IAAI,IAAI;AAAA,MAClB;AAAA,IACF,CAAC;AAAA,EACH;AACA,SAAO;AACT;","names":[]}
@@ -246,4 +246,4 @@ export {
246
246
  decryptCapsuleFile,
247
247
  decryptCapsuleFileInMemory
248
248
  };
249
- //# sourceMappingURL=chunk-X7Y7WX73.js.map
249
+ //# sourceMappingURL=chunk-DQEMWVMT.js.map
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  drainPendingLifecycleForSyncOrThrow,
6
6
  drainPendingLifecycleLedgerForSync
7
- } from "./chunk-JRRQ747T.js";
7
+ } from "./chunk-TBXAY2SS.js";
8
8
  import {
9
9
  displayErrorDetail
10
10
  } from "./chunk-RL6NEVXT.js";
@@ -14,7 +14,7 @@ import {
14
14
  import {
15
15
  assertPathInsideRoot,
16
16
  pathIsInside
17
- } from "./chunk-GCASGYIO.js";
17
+ } from "./chunk-C7HJ3NEI.js";
18
18
  import {
19
19
  isSafeRouteNamespace
20
20
  } from "./chunk-PCXDUHQH.js";
@@ -23,7 +23,7 @@ import {
23
23
  } from "./chunk-VUFL7X3H.js";
24
24
  import {
25
25
  isErrnoCode
26
- } from "./chunk-5UZXUTVO.js";
26
+ } from "./chunk-KNA3BXXL.js";
27
27
  import {
28
28
  log
29
29
  } from "./chunk-3WCASNQZ.js";
@@ -181,4 +181,4 @@ export {
181
181
  offlineSyncStorageForSnapshot,
182
182
  drainPendingLifecycleForOfflineSync
183
183
  };
184
- //# sourceMappingURL=chunk-2OXIPF3A.js.map
184
+ //# sourceMappingURL=chunk-DZD3WGCD.js.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  StorageManager
3
- } from "./chunk-OGTKQ5MJ.js";
3
+ } from "./chunk-XSGUMQQQ.js";
4
+ import {
5
+ MutationSerializer
6
+ } from "./chunk-FFAZ2XFU.js";
4
7
  import {
5
8
  keyring_exports,
6
9
  secureStoreDir
7
10
  } from "./chunk-BJMBJZ2Y.js";
8
- import {
9
- MutationSerializer
10
- } from "./chunk-FFAZ2XFU.js";
11
11
  import {
12
12
  isSafeRouteNamespace
13
13
  } from "./chunk-PCXDUHQH.js";
@@ -412,4 +412,4 @@ export {
412
412
  resolveNamespaceStorageRoot,
413
413
  NamespaceStorageRouter
414
414
  };
415
- //# sourceMappingURL=chunk-UMEOXLIZ.js.map
415
+ //# sourceMappingURL=chunk-E2P7TZTF.js.map
@@ -10,7 +10,7 @@ import {
10
10
  import {
11
11
  listJsonFiles,
12
12
  readJsonFile
13
- } from "./chunk-P77QX3ID.js";
13
+ } from "./chunk-B6O2YLUR.js";
14
14
 
15
15
  // src/utility-telemetry.ts
16
16
  import path from "path";
@@ -151,4 +151,4 @@ export {
151
151
  readUtilityTelemetryEvents,
152
152
  getUtilityTelemetryStatus
153
153
  };
154
- //# sourceMappingURL=chunk-6FC3IZ26.js.map
154
+ //# sourceMappingURL=chunk-EBA5DA77.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveCorpusNamespaceRoots
3
- } from "./chunk-EJ5RKUXW.js";
3
+ } from "./chunk-AQ7SYDVO.js";
4
4
  import {
5
5
  capabilityAllowsNamespace
6
6
  } from "./chunk-MZWSOLMT.js";
@@ -200,4 +200,4 @@ async function readAggregateExtractionWatermark(options) {
200
200
  export {
201
201
  readAggregateExtractionWatermark
202
202
  };
203
- //# sourceMappingURL=chunk-N7JK2RKG.js.map
203
+ //# sourceMappingURL=chunk-EOQ6FSQP.js.map
@@ -0,0 +1,54 @@
1
+ import {
2
+ withHeldFileLock
3
+ } from "./chunk-FFAZ2XFU.js";
4
+
5
+ // src/graph-write-lock.ts
6
+ var graphWriteLocks = /* @__PURE__ */ new Map();
7
+ var GRAPH_LOCK_STALE_MS = 3e4;
8
+ var GRAPH_LOCK_MAX_WAIT_MS = 1e4;
9
+ var GraphLockLostError = class extends Error {
10
+ constructor(filePath) {
11
+ super(
12
+ `graph: the write lock for ${filePath} was lost mid-section \u2014 a peer stale-broke and replaced it; aborting this write instead of clobbering the peer's`
13
+ );
14
+ this.name = "GraphLockLostError";
15
+ }
16
+ };
17
+ async function assertGraphLockHeld(filePath, lock) {
18
+ if (!await lock.refresh()) throw new GraphLockLostError(filePath);
19
+ }
20
+ function yieldForLockHeartbeat() {
21
+ return new Promise((resolve) => setImmediate(resolve));
22
+ }
23
+ function withGraphWriteLock(filePath, fn) {
24
+ const run = () => withHeldFileLock(
25
+ `${filePath}.lock`,
26
+ { staleMs: GRAPH_LOCK_STALE_MS, maxWaitMs: GRAPH_LOCK_MAX_WAIT_MS },
27
+ (acquired, lock) => {
28
+ if (!acquired) {
29
+ throw new Error(
30
+ `graph: could not acquire the graph write lock for ${filePath} within ${GRAPH_LOCK_MAX_WAIT_MS}ms \u2014 another process holds it`
31
+ );
32
+ }
33
+ return fn(lock);
34
+ }
35
+ );
36
+ const prev = graphWriteLocks.get(filePath) ?? Promise.resolve();
37
+ const next = prev.then(run, run);
38
+ graphWriteLocks.set(
39
+ filePath,
40
+ next.then(
41
+ () => void 0,
42
+ () => void 0
43
+ )
44
+ );
45
+ return next;
46
+ }
47
+
48
+ export {
49
+ GraphLockLostError,
50
+ assertGraphLockHeld,
51
+ yieldForLockHeartbeat,
52
+ withGraphWriteLock
53
+ };
54
+ //# sourceMappingURL=chunk-EUT2WCWS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/graph-write-lock.ts"],"sourcesContent":["/**\n * Cross-process-safe write lock for graph JSONL files (issue #2330 round\n * N+18 A). Sibling of graph.ts — extracted there so graph.ts stays within\n * its file-size ratchet; graph.ts re-exports {@link withGraphWriteLock}\n * because `@remnic/core/graph` is a public subpath export.\n *\n * Three layers, one per section:\n *\n * 1. An in-process promise chain keyed by JSONL file path (gotcha #40):\n * the append path (`appendEdge`) and the rewrite path used by the decay\n * maintenance job serialize on the same lock. Without this, an\n * extraction can append a new edge between the decay job's\n * read-snapshot and rewrite, silently dropping the appended edge during\n * active traffic (issue #729 / Codex P1).\n *\n * 2. A cross-process advisory lock: the promise chain only serializes THIS\n * process. A peer Remnic process sharing the memory directory could\n * append an edge after this process reads its JSONL snapshot but before\n * the rename-backed rewrite publishes, permanently discarding the\n * peer's edge — so every section also holds the established\n * `withHeldFileLock` advisory lock (the same primitive round N+16 gave\n * the page-versioning manifest) as a sibling `<file>.lock`. A lock that\n * cannot be taken within the bounded wait FAILS the write (strict,\n * matching the manifest): proceeding unsynchronized would reintroduce\n * the lost-write race the lock exists to prevent. Graph write callers\n * are fail-open, so the surfaced error degrades to a logged skip.\n *\n * 3. Ownership revalidation before destructive writes (round N+19 A): the\n * lock's mtime heartbeat is a TIMER — it cannot fire while a\n * synchronous parse/serialize of a large graph blocks the event loop.\n * A peer can then judge the lock stale past the 30s window, break it,\n * and publish its own write. Every section therefore receives the\n * lock's {@link GraphWriteLockSection} controller and MUST pass it to\n * {@link assertGraphLockHeld} immediately before publishing a\n * replacement (or appending): a lost lock aborts THIS write with\n * {@link GraphLockLostError} instead of clobbering the peer's. Long\n * CPU passes inside a section should await {@link\n * yieldForLockHeartbeat} every few thousand rows so the heartbeat\n * timer gets a turn and the section is less likely to be broken in\n * the first place.\n */\n\nimport { withHeldFileLock, type HeldFileLockController } from \"./utils/serialize-mutations.js\";\n\nconst graphWriteLocks = new Map<string, Promise<void>>();\n\n/** Stale-lock window for the cross-process graph lock (crashed holder). */\nconst GRAPH_LOCK_STALE_MS = 30_000;\n/** Bounded acquisition wait for the cross-process graph lock. */\nconst GRAPH_LOCK_MAX_WAIT_MS = 10_000;\n\n/** Control surface handed to a graph write-lock section (round N+19 A). */\nexport type GraphWriteLockSection = HeldFileLockController;\n\n/**\n * A graph write section lost its advisory lock mid-critical-section — a peer\n * stale-broke and replaced it while this process's event loop was blocked.\n * The thrower has NOT published its write; callers treat it like any other\n * write failure (graph callers are fail-open).\n */\nexport class GraphLockLostError extends Error {\n constructor(filePath: string) {\n super(\n `graph: the write lock for ${filePath} was lost mid-section — a peer stale-broke and replaced it; aborting this write instead of clobbering the peer's`,\n );\n this.name = \"GraphLockLostError\";\n }\n}\n\n/**\n * Revalidate lock ownership immediately before a destructive graph write.\n * Throws {@link GraphLockLostError} when the lock was broken/replaced, so the\n * caller aborts and leaves the peer's write intact.\n */\nexport async function assertGraphLockHeld(\n filePath: string,\n lock: GraphWriteLockSection,\n): Promise<void> {\n if (!(await lock.refresh())) throw new GraphLockLostError(filePath);\n}\n\n/**\n * Yield one event-loop turn so the lock's heartbeat timer can fire during a\n * long, CPU-bound parse/serialize/decay pass inside a held graph lock\n * section (round N+19 A). `setImmediate` runs in the check phase, after any\n * due timers, so each yield lets an overdue heartbeat stamp the lock's mtime\n * before a peer judges it stale.\n */\nexport function yieldForLockHeartbeat(): Promise<void> {\n return new Promise<void>((resolve) => setImmediate(resolve));\n}\n\n/**\n * Run `fn` while holding the write lock for the given graph JSONL file,\n * handing it the section's {@link GraphWriteLockSection} controller.\n *\n * The lock is keyed by absolute file path so concurrent writes to\n * different graph types proceed independently. The chain recovers from\n * rejection (gotcha #40) so a single I/O failure does not poison all\n * future writers, but the original error is still surfaced to the\n * caller of `withGraphWriteLock`. The in-process chain runs INSIDE the\n * cross-process advisory lock, so peers serialize against every section\n * this process runs, one section at a time.\n */\nexport function withGraphWriteLock<T>(\n filePath: string,\n fn: (lock: GraphWriteLockSection) => Promise<T>,\n): Promise<T> {\n const run = () =>\n withHeldFileLock(\n `${filePath}.lock`,\n { staleMs: GRAPH_LOCK_STALE_MS, maxWaitMs: GRAPH_LOCK_MAX_WAIT_MS },\n (acquired, lock) => {\n if (!acquired) {\n throw new Error(\n `graph: could not acquire the graph write lock for ${filePath} within ${GRAPH_LOCK_MAX_WAIT_MS}ms — another process holds it`,\n );\n }\n return fn(lock);\n },\n );\n const prev = graphWriteLocks.get(filePath) ?? Promise.resolve();\n const next = prev.then(run, run);\n graphWriteLocks.set(\n filePath,\n next.then(\n () => undefined,\n () => undefined\n )\n );\n return next;\n}\n"],"mappings":";;;;;AA4CA,IAAM,kBAAkB,oBAAI,IAA2B;AAGvD,IAAM,sBAAsB;AAE5B,IAAM,yBAAyB;AAWxB,IAAM,qBAAN,cAAiC,MAAM;AAAA,EAC5C,YAAY,UAAkB;AAC5B;AAAA,MACE,6BAA6B,QAAQ;AAAA,IACvC;AACA,SAAK,OAAO;AAAA,EACd;AACF;AAOA,eAAsB,oBACpB,UACA,MACe;AACf,MAAI,CAAE,MAAM,KAAK,QAAQ,EAAI,OAAM,IAAI,mBAAmB,QAAQ;AACpE;AASO,SAAS,wBAAuC;AACrD,SAAO,IAAI,QAAc,CAAC,YAAY,aAAa,OAAO,CAAC;AAC7D;AAcO,SAAS,mBACd,UACA,IACY;AACZ,QAAM,MAAM,MACV;AAAA,IACE,GAAG,QAAQ;AAAA,IACX,EAAE,SAAS,qBAAqB,WAAW,uBAAuB;AAAA,IAClE,CAAC,UAAU,SAAS;AAClB,UAAI,CAAC,UAAU;AACb,cAAM,IAAI;AAAA,UACR,qDAAqD,QAAQ,WAAW,sBAAsB;AAAA,QAChG;AAAA,MACF;AACA,aAAO,GAAG,IAAI;AAAA,IAChB;AAAA,EACF;AACF,QAAM,OAAO,gBAAgB,IAAI,QAAQ,KAAK,QAAQ,QAAQ;AAC9D,QAAM,OAAO,KAAK,KAAK,KAAK,GAAG;AAC/B,kBAAgB;AAAA,IACd;AAAA,IACA,KAAK;AAAA,MACH,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AACA,SAAO;AACT;","names":[]}
@@ -1,9 +1,9 @@
1
- import {
2
- diffGraphSnapshots
3
- } from "./chunk-AUDJPF4N.js";
4
1
  import {
5
2
  graphSnapshotFromMemoryDir
6
3
  } from "./chunk-44442YCH.js";
4
+ import {
5
+ diffGraphSnapshots
6
+ } from "./chunk-AUDJPF4N.js";
7
7
 
8
8
  // src/dashboard-runtime.ts
9
9
  import { createHash, timingSafeEqual } from "crypto";
@@ -370,4 +370,4 @@ var GraphDashboardServer = class {
370
370
  export {
371
371
  GraphDashboardServer
372
372
  };
373
- //# sourceMappingURL=chunk-YNDLCWXS.js.map
373
+ //# sourceMappingURL=chunk-EZ25VE3G.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SupportPassportError,
3
3
  getOperation
4
- } from "./chunk-NQFCLAYT.js";
4
+ } from "./chunk-ICKJ52PE.js";
5
5
  import {
6
6
  abortError,
7
7
  isAbortError
@@ -499,4 +499,4 @@ export {
499
499
  buildSupportPassportPublicRequestHandler,
500
500
  composeSupportPassportExternalRequestHandlers
501
501
  };
502
- //# sourceMappingURL=chunk-XDMI5VKE.js.map
502
+ //# sourceMappingURL=chunk-FVOP3NT7.js.map
@@ -15,7 +15,7 @@ import {
15
15
  import {
16
16
  listJsonFiles,
17
17
  readJsonFile
18
- } from "./chunk-P77QX3ID.js";
18
+ } from "./chunk-B6O2YLUR.js";
19
19
 
20
20
  // src/work-product-ledger.ts
21
21
  import path from "path";
@@ -182,4 +182,4 @@ export {
182
182
  searchWorkProductLedgerEntries,
183
183
  getWorkProductLedgerStatus
184
184
  };
185
- //# sourceMappingURL=chunk-NRLELHAY.js.map
185
+ //# sourceMappingURL=chunk-G7NYVKD6.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  deepRecallRequestSchema
3
- } from "./chunk-LCMUZDBZ.js";
3
+ } from "./chunk-N3ZOP7KC.js";
4
4
  import {
5
5
  EngramAccessInputError
6
6
  } from "./chunk-2Z24E5W2.js";
@@ -39,4 +39,4 @@ async function respondDeepRecall(req, res, respondJson, readJsonBody, service, s
39
39
  export {
40
40
  respondDeepRecall
41
41
  };
42
- //# sourceMappingURL=chunk-B3W7GWQB.js.map
42
+ //# sourceMappingURL=chunk-GHTSNGBZ.js.map
@@ -0,0 +1,17 @@
1
+ // src/graph-append-error.ts
2
+ var GraphEdgeAppendError = class extends Error {
3
+ appendedEdges;
4
+ constructor(cause, appendedEdges) {
5
+ super(
6
+ `graph edge append failed after ${appendedEdges.length} row(s): ${cause instanceof Error ? cause.message : String(cause)}`,
7
+ { cause }
8
+ );
9
+ this.name = "GraphEdgeAppendError";
10
+ this.appendedEdges = appendedEdges;
11
+ }
12
+ };
13
+
14
+ export {
15
+ GraphEdgeAppendError
16
+ };
17
+ //# sourceMappingURL=chunk-GKCXTSFF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/graph-append-error.ts"],"sourcesContent":["/**\n * Sibling of {@link \"./graph.js\"} holding the append-failure error type so\n * graph.ts stays within its file-size ratchet cap (issue #1995). Type-only\n * dependency on GraphEdge — no runtime cycle with graph.ts.\n */\nimport type { GraphEdge } from \"./graph.js\";\n\n/**\n * Issue #2330 round N+16 (A): thrown by `GraphIndex.onMemoryWritten` when an\n * append fails, carrying the rows this call had ALREADY appended — tracked\n * incrementally as each row is written, before any return value exists. A\n * rollback that only sees the raw failure used to fall back to a node-wide\n * sweep, which also deleted rows a NEWER writer had rebuilt inside the\n * failing writer's window; with the partial set on the error, the rollback\n * stays surgical even on the throwing path. The original failure is\n * preserved as `cause` (create-path callers only log it).\n */\nexport class GraphEdgeAppendError extends Error {\n readonly appendedEdges: readonly GraphEdge[];\n constructor(cause: unknown, appendedEdges: readonly GraphEdge[]) {\n super(\n `graph edge append failed after ${appendedEdges.length} row(s): ${cause instanceof Error ? cause.message : String(cause)}`,\n { cause },\n );\n this.name = \"GraphEdgeAppendError\";\n this.appendedEdges = appendedEdges;\n }\n}\n"],"mappings":";AAiBO,IAAM,uBAAN,cAAmC,MAAM;AAAA,EACrC;AAAA,EACT,YAAY,OAAgB,eAAqC;AAC/D;AAAA,MACE,kCAAkC,cAAc,MAAM,YAAY,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,MACxH,EAAE,MAAM;AAAA,IACV;AACA,SAAK,OAAO;AACZ,SAAK,gBAAgB;AAAA,EACvB;AACF;","names":[]}
@@ -2,7 +2,7 @@ import {
2
2
  pathMayCarryEntityRefs,
3
3
  requestEntityCanonicalIdReconcile,
4
4
  withRawEntityPageMutation
5
- } from "./chunk-NNZFPYYX.js";
5
+ } from "./chunk-R7QY5ZVB.js";
6
6
  import {
7
7
  bumpArchiveMutationForPath
8
8
  } from "./chunk-W5BIQOAJ.js";
@@ -12,7 +12,7 @@ import {
12
12
  import {
13
13
  CONTENT_HASH_INDEX_RETRY_MAX_DELAY_MS,
14
14
  ContentHashIndex
15
- } from "./chunk-TVW4C7PV.js";
15
+ } from "./chunk-NB3LRY4T.js";
16
16
  import {
17
17
  withHeldFileLock
18
18
  } from "./chunk-FFAZ2XFU.js";
@@ -22,13 +22,13 @@ import {
22
22
  import {
23
23
  readMaybeEncryptedFileFromChunks,
24
24
  writeMaybeEncryptedFileFromChunks
25
- } from "./chunk-ET2CNMLD.js";
25
+ } from "./chunk-JN72EPOE.js";
26
26
  import {
27
27
  RECALL_FALLBACK_DIRS
28
28
  } from "./chunk-VS2IYZRU.js";
29
29
  import {
30
30
  isErrnoCode
31
- } from "./chunk-5UZXUTVO.js";
31
+ } from "./chunk-KNA3BXXL.js";
32
32
  import {
33
33
  log
34
34
  } from "./chunk-3WCASNQZ.js";
@@ -1815,4 +1815,4 @@ export {
1815
1815
  parseTombstoneBlockedOfflineSyncMemory,
1816
1816
  TombstoneBlockedCaptureIndexHost
1817
1817
  };
1818
- //# sourceMappingURL=chunk-LUDBXTBJ.js.map
1818
+ //# sourceMappingURL=chunk-H272ZPQ3.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  PROMOTION_CANDIDATES_DEFAULT_MIN_ACCESS,
3
3
  isSubjectGuardMode
4
- } from "./chunk-ME35HVDJ.js";
4
+ } from "./chunk-VYCOJKSX.js";
5
5
  import {
6
6
  coerceBool,
7
7
  coerceNumber
@@ -52,4 +52,4 @@ function parseSubjectRuntimeConfig(cfg) {
52
52
  export {
53
53
  parseSubjectRuntimeConfig
54
54
  };
55
- //# sourceMappingURL=chunk-SN4JXNLL.js.map
55
+ //# sourceMappingURL=chunk-H3TKENU4.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  runLocationSync
3
- } from "./chunk-ZJWDWPX6.js";
3
+ } from "./chunk-X5K5TAQZ.js";
4
4
  import {
5
5
  log
6
6
  } from "./chunk-3WCASNQZ.js";
@@ -58,4 +58,4 @@ export {
58
58
  LOCATION_SYNC_DEFAULT_INTERVAL_MS,
59
59
  startLocationAutoSync
60
60
  };
61
- //# sourceMappingURL=chunk-4HYNMLT6.js.map
61
+ //# sourceMappingURL=chunk-H4SEGIZY.js.map
@@ -3,7 +3,7 @@ import {
3
3
  readNamespaceMaintenanceLastRanStatuses,
4
4
  readNamespaceMaintenanceStatuses,
5
5
  runNamespaceMaintenancePlan
6
- } from "./chunk-3LADWWMA.js";
6
+ } from "./chunk-SJDQ5RSN.js";
7
7
  import {
8
8
  analyzeSessionIntegrity,
9
9
  applySessionRepair,
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-CMTINOFS.js";
15
15
  import {
16
16
  summarizeCorpusAndReplica
17
- } from "./chunk-BR3OOQZQ.js";
17
+ } from "./chunk-MWN6QEI2.js";
18
18
  import {
19
19
  readJudgeVerdictStats
20
20
  } from "./chunk-OZKOPQCM.js";
@@ -24,7 +24,7 @@ import {
24
24
  runEvalBaselineDeltaReport,
25
25
  runEvalBenchmarkCiGate,
26
26
  validateEvalBenchmarkPack
27
- } from "./chunk-MCA2X4WH.js";
27
+ } from "./chunk-4IHBN6WU.js";
28
28
  import {
29
29
  resolveCuratedIncludeFilesStatePath,
30
30
  resolveNativeKnowledgeStatePath,
@@ -32,29 +32,29 @@ import {
32
32
  } from "./chunk-2DQ2XREU.js";
33
33
  import {
34
34
  runConsolidationProvenanceCheck
35
- } from "./chunk-DUAJKRR2.js";
35
+ } from "./chunk-2SGLMP2E.js";
36
36
  import {
37
37
  reportBufferSurpriseDistribution
38
38
  } from "./chunk-YBPYIAA5.js";
39
39
  import {
40
40
  parseConfig
41
- } from "./chunk-FCATYKQA.js";
41
+ } from "./chunk-2IOHTUP3.js";
42
42
  import {
43
43
  readAggregateExtractionWatermark
44
- } from "./chunk-N7JK2RKG.js";
44
+ } from "./chunk-EOQ6FSQP.js";
45
45
  import {
46
46
  listMemoryGovernanceRuns,
47
47
  readMemoryGovernanceRunArtifact
48
- } from "./chunk-NZGO2GKL.js";
48
+ } from "./chunk-MY5EDR46.js";
49
49
  import {
50
50
  listNamespaces
51
- } from "./chunk-3LJPSRAN.js";
51
+ } from "./chunk-RBCQVOVJ.js";
52
52
  import {
53
53
  analyzeGraphHealth
54
- } from "./chunk-OLT3YTDH.js";
54
+ } from "./chunk-5FAGCOZD.js";
55
55
  import {
56
56
  StorageManager
57
- } from "./chunk-OGTKQ5MJ.js";
57
+ } from "./chunk-XSGUMQQQ.js";
58
58
  import {
59
59
  lintWorkspaceFiles
60
60
  } from "./chunk-DM2T26WE.js";
@@ -1069,7 +1069,7 @@ async function summarizeBufferSurpriseDistribution(storage, config) {
1069
1069
  }
1070
1070
  }
1071
1071
  async function summarizeGraphEdgeDecayStatus(config) {
1072
- const { readGraphEdgeDecayStatus } = await import("./graph-edge-decay-DGTBFALQ.js");
1072
+ const { readGraphEdgeDecayStatus } = await import("./graph-edge-decay-MKIRZ762.js");
1073
1073
  const { graphEdgeDecayEnabled } = config;
1074
1074
  const enabled = graphEdgeDecayEnabled === true;
1075
1075
  if (!enabled) {
@@ -1109,7 +1109,7 @@ async function summarizeGraphEdgeDecayStatus(config) {
1109
1109
  }
1110
1110
  async function summarizeTierDistribution(storage) {
1111
1111
  try {
1112
- const { summarizeTiers } = await import("./tier-stats-2TOW3QNL.js");
1112
+ const { summarizeTiers } = await import("./tier-stats-KA6OZX2C.js");
1113
1113
  const summary = await summarizeTiers(storage);
1114
1114
  const storageDir = storage.dir ?? "";
1115
1115
  const journalPath = storageDir.length > 0 ? path.join(storageDir, "state", "tier-migration-journal.jsonl") : null;
@@ -1683,4 +1683,4 @@ export {
1683
1683
  runBenchmarkRecall,
1684
1684
  runOperatorRepair
1685
1685
  };
1686
- //# sourceMappingURL=chunk-ACZN5ZXD.js.map
1686
+ //# sourceMappingURL=chunk-H54VWRPS.js.map