@remnic/core 10.0.13 → 10.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (476) hide show
  1. package/dist/access-admin-ops-surface.js +86 -84
  2. package/dist/access-authorization-probe.js +87 -85
  3. package/dist/access-boundary.js +86 -84
  4. package/dist/access-cli.js +183 -180
  5. package/dist/access-cli.js.map +1 -1
  6. package/dist/access-extraction-force-flush.js +86 -84
  7. package/dist/access-http-briefing.js +87 -85
  8. package/dist/access-http-query.js +88 -86
  9. package/dist/access-http.js +110 -108
  10. package/dist/access-idempotency.js +3 -2
  11. package/dist/access-identity-continuity-surface.js +86 -84
  12. package/dist/access-lcm-surface.js +86 -84
  13. package/dist/access-mcp.js +99 -97
  14. package/dist/access-namespace-preflight.js +86 -84
  15. package/dist/access-observe-write-category.js +17 -17
  16. package/dist/access-observe-write-surface.js +86 -84
  17. package/dist/access-offline-manifest.js +16 -15
  18. package/dist/access-operations-batch.js +90 -88
  19. package/dist/access-operations.js +97 -95
  20. package/dist/access-recall-concurrency.js +86 -84
  21. package/dist/access-recall-diagnostics.js +2 -2
  22. package/dist/access-recall-response.js +86 -84
  23. package/dist/access-recall-surface.js +86 -84
  24. package/dist/access-schema.d.ts +2 -2
  25. package/dist/access-schema.js +12 -12
  26. package/dist/access-service.js +86 -84
  27. package/dist/access-surface-catalog.js +88 -86
  28. package/dist/access-surface-catalog.js.map +1 -1
  29. package/dist/active-recall.js +39 -37
  30. package/dist/active-recall.js.map +1 -1
  31. package/dist/adapters/index.js +4 -4
  32. package/dist/adapters/registry.js +2 -2
  33. package/dist/{auto-sync-DGJOZYGT.js → auto-sync-7WWAKW6F.js} +8 -8
  34. package/dist/briefing.js +29 -27
  35. package/dist/buffer.js +13 -13
  36. package/dist/{capsule-merge-M4HETD27.js → capsule-merge-LGYURS3C.js} +6 -5
  37. package/dist/{capsule-merge-M4HETD27.js.map → capsule-merge-LGYURS3C.js.map} +1 -1
  38. package/dist/capture-write-lock-backoff.d.ts +50 -0
  39. package/dist/capture-write-lock-backoff.d.ts.map +1 -0
  40. package/dist/capture-write-lock-backoff.js +30 -0
  41. package/dist/capture-write-lock.d.ts +6 -0
  42. package/dist/capture-write-lock.d.ts.map +1 -0
  43. package/dist/capture-write-lock.js +15 -0
  44. package/dist/causal-behavior.js +2 -2
  45. package/dist/causal-chain.js +2 -2
  46. package/dist/causal-consolidation.js +32 -30
  47. package/dist/causal-consolidation.js.map +1 -1
  48. package/dist/causal-retrieval.js +2 -2
  49. package/dist/causal-trajectory-graph.js +7 -6
  50. package/dist/causal-trajectory-graph.js.map +1 -1
  51. package/dist/causal-trajectory.js +1 -1
  52. package/dist/{chunk-ZUMXY4KA.js → chunk-22W2XWGH.js} +3 -3
  53. package/dist/{chunk-AV2OQF2O.js → chunk-3F3HA3R2.js} +2 -2
  54. package/dist/{chunk-QZZPUREO.js → chunk-3GYSZHMT.js} +3 -3
  55. package/dist/{chunk-QWWMS4AE.js → chunk-3MO4LWYU.js} +1 -1
  56. package/dist/chunk-3MO4LWYU.js.map +1 -0
  57. package/dist/{chunk-AL6EHLB5.js → chunk-3X3PNU3T.js} +2 -2
  58. package/dist/{chunk-BTJ6CAIA.js → chunk-4IYIGN53.js} +10 -10
  59. package/dist/{chunk-BZTRPCCH.js → chunk-4KY5GSMB.js} +2 -2
  60. package/dist/{chunk-UZSBCQEC.js → chunk-4OSG5Y6M.js} +2 -2
  61. package/dist/{chunk-EHRE7ZG3.js → chunk-5B5WYAHQ.js} +2 -2
  62. package/dist/{chunk-WCGJK4NQ.js → chunk-5FNZ3G6X.js} +10 -10
  63. package/dist/{chunk-Y6DZ33PA.js → chunk-5GX5457J.js} +4 -4
  64. package/dist/{chunk-OFCHT2TN.js → chunk-5LRV557D.js} +2 -2
  65. package/dist/{chunk-CKUUP64O.js → chunk-5WCJLQTM.js} +2 -2
  66. package/dist/{chunk-MZBWIJJN.js → chunk-63B2IZYE.js} +19 -19
  67. package/dist/{chunk-DGRMWDQY.js → chunk-66BCOVW2.js} +7 -7
  68. package/dist/chunk-6EDW54SQ.js +298 -0
  69. package/dist/chunk-6EDW54SQ.js.map +1 -0
  70. package/dist/{chunk-P2S6P7X6.js → chunk-6LG7BWKW.js} +2 -2
  71. package/dist/chunk-77R7BQZ2.js +152 -0
  72. package/dist/chunk-77R7BQZ2.js.map +1 -0
  73. package/dist/{chunk-IPLYGWQF.js → chunk-7LCGFUMB.js} +6 -6
  74. package/dist/{chunk-KYY4EACB.js → chunk-7Z3DLNSD.js} +2 -2
  75. package/dist/{chunk-LNH76ZJX.js → chunk-AIYXVWUH.js} +27 -2
  76. package/dist/{chunk-LNH76ZJX.js.map → chunk-AIYXVWUH.js.map} +1 -1
  77. package/dist/{chunk-O4KYRDRT.js → chunk-B665A6BO.js} +2 -2
  78. package/dist/{chunk-AKREOU5F.js → chunk-CB6ANA2I.js} +2 -2
  79. package/dist/{chunk-5JMI26Q7.js → chunk-CBH2Z4UA.js} +2 -2
  80. package/dist/{chunk-YRH3C2OJ.js → chunk-CIIHIAJ2.js} +13 -5
  81. package/dist/chunk-CIIHIAJ2.js.map +1 -0
  82. package/dist/{chunk-6M56RFFJ.js → chunk-CJRENHVZ.js} +3 -3
  83. package/dist/{chunk-EGDYVYU7.js → chunk-CLWBFR7Q.js} +3 -3
  84. package/dist/{chunk-375ARKRS.js → chunk-D5SSBCYY.js} +70 -59
  85. package/dist/chunk-D5SSBCYY.js.map +1 -0
  86. package/dist/{chunk-KI6UOSNR.js → chunk-DEY7B77Y.js} +2 -2
  87. package/dist/chunk-DEY7B77Y.js.map +1 -0
  88. package/dist/{chunk-6VAHJ2F6.js → chunk-DMDWFQMR.js} +2 -2
  89. package/dist/{chunk-6OQ6N5RP.js → chunk-DPR2WTN3.js} +20 -20
  90. package/dist/{chunk-K4QY55XV.js → chunk-EH4BQ7LT.js} +2 -2
  91. package/dist/chunk-EHHQJTAU.js +131 -0
  92. package/dist/chunk-EHHQJTAU.js.map +1 -0
  93. package/dist/{chunk-5JCLELOP.js → chunk-EPJDSQHF.js} +2 -2
  94. package/dist/{chunk-K2FSASGZ.js → chunk-EU534WGS.js} +2 -2
  95. package/dist/{chunk-GD7BWGIB.js → chunk-EU6IRUCY.js} +6 -4
  96. package/dist/{chunk-GD7BWGIB.js.map → chunk-EU6IRUCY.js.map} +1 -1
  97. package/dist/{chunk-IWHEJXR2.js → chunk-EUAIYYYR.js} +8 -8
  98. package/dist/{chunk-7KYJNHGM.js → chunk-EUCYTCFP.js} +2 -2
  99. package/dist/{chunk-YNDLCWXS.js → chunk-EZ25VE3G.js} +4 -4
  100. package/dist/{chunk-ON4ILX3G.js → chunk-FFOVKNQV.js} +2 -2
  101. package/dist/{chunk-2KRNPFPK.js → chunk-FLI6DEIU.js} +2 -2
  102. package/dist/{chunk-4G4B3Z2B.js → chunk-FP4JYE66.js} +2 -2
  103. package/dist/{chunk-B7CANWCA.js → chunk-FSIMZNBC.js} +2 -2
  104. package/dist/{chunk-OAIWPB2I.js → chunk-FT4UQYOV.js} +2 -2
  105. package/dist/{chunk-X3VID2TT.js → chunk-FUFAXVBA.js} +3 -3
  106. package/dist/{chunk-HYNEDMYJ.js → chunk-G2OYFTUD.js} +2 -2
  107. package/dist/{chunk-XTN54NML.js → chunk-G3T6YMBO.js} +4 -4
  108. package/dist/{chunk-XHWJRUVP.js → chunk-GELS5Z5Z.js} +3 -3
  109. package/dist/{chunk-RT6D3WN7.js → chunk-GH7AOMJD.js} +2 -2
  110. package/dist/{chunk-2LUSQV4U.js → chunk-GKJJNO7C.js} +2 -2
  111. package/dist/{chunk-6Z2AZ4AJ.js → chunk-GMXWTJNU.js} +2 -2
  112. package/dist/{chunk-B657ZGDH.js → chunk-HQSK2INQ.js} +2 -2
  113. package/dist/{chunk-RWRQ67OR.js → chunk-I7S55EOB.js} +2 -2
  114. package/dist/{chunk-KZO43HPY.js → chunk-J7JWFZHI.js} +100 -100
  115. package/dist/{chunk-EMFBC7L3.js → chunk-JDZFIR2S.js} +2 -2
  116. package/dist/{chunk-4THZGKQ2.js → chunk-JIHMUOOS.js} +3 -3
  117. package/dist/{chunk-YYO447A7.js → chunk-JNIVZNIB.js} +41 -253
  118. package/dist/chunk-JNIVZNIB.js.map +1 -0
  119. package/dist/{chunk-FZB4TS2W.js → chunk-JPTPS4OB.js} +5 -5
  120. package/dist/{chunk-CS2JEHTB.js → chunk-JQ7XU625.js} +8 -8
  121. package/dist/{chunk-3I3U6FFT.js → chunk-K7BN34IA.js} +2 -2
  122. package/dist/{chunk-7OAIOE5P.js → chunk-KH2LKDX7.js} +2 -2
  123. package/dist/{chunk-DA2INEB5.js → chunk-KR6ZKECI.js} +4 -4
  124. package/dist/{chunk-5AOAQR37.js → chunk-L5DAHSEZ.js} +3 -3
  125. package/dist/{chunk-RP5SJ3XR.js → chunk-LCKVXX5F.js} +2 -2
  126. package/dist/{chunk-ZI7LMSNI.js → chunk-LLHZZOIB.js} +2 -2
  127. package/dist/{chunk-OYKQ6T4V.js → chunk-MATDGSJ7.js} +2 -2
  128. package/dist/{chunk-3NFN4Y4P.js → chunk-MGCKZWAE.js} +5 -5
  129. package/dist/{chunk-6OMUHXHP.js → chunk-ML7ZJAKJ.js} +2 -2
  130. package/dist/{chunk-YDH2FSDI.js → chunk-N45NEBOD.js} +2 -2
  131. package/dist/{chunk-A2E4WNW4.js → chunk-N4C7QKOG.js} +2 -2
  132. package/dist/{chunk-B43NMCGQ.js → chunk-N7KYEVLK.js} +2 -2
  133. package/dist/{chunk-HT2C4EXO.js → chunk-NIRQGDYC.js} +4 -4
  134. package/dist/{chunk-DXHVD4DS.js → chunk-NW2E4CI2.js} +3 -3
  135. package/dist/{chunk-4NDWE44P.js → chunk-NZFFGO5O.js} +2 -2
  136. package/dist/{chunk-KC46VZR5.js → chunk-O2IPAX26.js} +8 -8
  137. package/dist/{chunk-M7V65M6H.js → chunk-O4SGYW7H.js} +2 -2
  138. package/dist/{chunk-QUA7RLK6.js → chunk-OP6N4H6A.js} +2 -2
  139. package/dist/{chunk-ZSJGYC3C.js → chunk-OQJKY3Z5.js} +2 -2
  140. package/dist/{chunk-OFEHITAZ.js → chunk-OXNTOHL6.js} +2 -2
  141. package/dist/{chunk-FQD2KPQH.js → chunk-P55FACBG.js} +2 -2
  142. package/dist/{chunk-XERVJYH2.js → chunk-P5NQN4JE.js} +3 -3
  143. package/dist/{chunk-XZLWYZ7C.js → chunk-P7TOIOT7.js} +2 -2
  144. package/dist/{chunk-Y3VDGK2O.js → chunk-PAZ35RJ4.js} +44 -31
  145. package/dist/chunk-PAZ35RJ4.js.map +1 -0
  146. package/dist/chunk-PGRZ3FYC.js +34 -0
  147. package/dist/chunk-PGRZ3FYC.js.map +1 -0
  148. package/dist/{chunk-PBVNVKYN.js → chunk-PIN5OPBA.js} +2 -2
  149. package/dist/{chunk-CNG2XVZG.js → chunk-PZHQWFR3.js} +2 -2
  150. package/dist/{chunk-SVDU4OHO.js → chunk-Q35L7TYB.js} +2 -2
  151. package/dist/{chunk-YEM7K3KD.js → chunk-QODKDRSP.js} +6 -6
  152. package/dist/{chunk-IZT3BVDW.js → chunk-QOZJCSFO.js} +2 -2
  153. package/dist/{chunk-6T42L5FI.js → chunk-QS3OLP5I.js} +2 -2
  154. package/dist/{chunk-PAAJWQH5.js → chunk-QUMKDRCF.js} +2 -2
  155. package/dist/{chunk-JFVCDEIC.js → chunk-QX6JN3O4.js} +7 -7
  156. package/dist/{chunk-KZEMFD6E.js → chunk-R2H4ZFBJ.js} +3 -3
  157. package/dist/{chunk-GKIXBH7Y.js → chunk-RTKV5XHL.js} +4 -4
  158. package/dist/{chunk-ZQ3WU6JO.js → chunk-RXFCU3CY.js} +2 -2
  159. package/dist/{chunk-BOOFTFFE.js → chunk-S2I7DL5Q.js} +1 -1
  160. package/dist/{chunk-2NCBDGND.js → chunk-SA6GMZJY.js} +3 -3
  161. package/dist/{chunk-NSFOERZQ.js → chunk-SIIRTDJ4.js} +2 -2
  162. package/dist/{chunk-A6TVQ3QP.js → chunk-SS3IS2JR.js} +3 -3
  163. package/dist/{chunk-VFTK5WKI.js → chunk-STBX5X6B.js} +2 -2
  164. package/dist/{chunk-WVHRNAXL.js → chunk-SWWHIJUJ.js} +2 -2
  165. package/dist/{chunk-WADSXS4K.js → chunk-SX4QDWXK.js} +2 -2
  166. package/dist/{chunk-ZIZ2G47N.js → chunk-TITG2NBS.js} +2 -2
  167. package/dist/{chunk-LZKOVXMX.js → chunk-TRMJ6BYC.js} +2 -2
  168. package/dist/{chunk-U7VPOXVM.js → chunk-TZNDKTX5.js} +65 -65
  169. package/dist/{chunk-WWSRLS4M.js → chunk-UMTCNEVQ.js} +15 -15
  170. package/dist/{chunk-4TTGRETU.js → chunk-UQDG3YLN.js} +5 -5
  171. package/dist/{chunk-AAM66QCP.js → chunk-UZRSI6NX.js} +2 -2
  172. package/dist/{chunk-2CXQZXWM.js → chunk-V4MB5ONM.js} +6 -6
  173. package/dist/{chunk-CYEK6Z3P.js → chunk-VW6VIJOS.js} +2 -2
  174. package/dist/{chunk-5ZJYHOJT.js → chunk-W47S5TIH.js} +8 -8
  175. package/dist/{chunk-CBP4HWCL.js → chunk-W5MCEVUS.js} +3 -3
  176. package/dist/{chunk-WETFW255.js → chunk-WLMZ2L5P.js} +2 -2
  177. package/dist/{chunk-XRBHXUTQ.js → chunk-WSGPFRBH.js} +5 -5
  178. package/dist/{chunk-UOKPJFO3.js → chunk-WVADKFWV.js} +3 -3
  179. package/dist/{chunk-P34FDDB5.js → chunk-XISROV24.js} +2 -2
  180. package/dist/{chunk-FZVROZKC.js → chunk-XVZA6VXC.js} +4 -4
  181. package/dist/{chunk-JUWJYXI4.js → chunk-Y4NKEXQT.js} +4 -4
  182. package/dist/{chunk-2ZQJLBV6.js → chunk-YE36AJL7.js} +4 -4
  183. package/dist/chunk-YET735EZ.js +99 -0
  184. package/dist/chunk-YET735EZ.js.map +1 -0
  185. package/dist/{chunk-PCWXLAJY.js → chunk-YFMBHQRG.js} +2 -2
  186. package/dist/{chunk-RBJQYMMT.js → chunk-YRULQW5J.js} +4 -4
  187. package/dist/{chunk-QUNDYIYZ.js → chunk-YYEOR4XN.js} +3 -3
  188. package/dist/{chunk-VYPFEVOM.js → chunk-ZJVMUBYF.js} +2 -2
  189. package/dist/{chunk-5MDM7UE4.js → chunk-ZSH2NRDV.js} +2 -2
  190. package/dist/{chunk-3J5JKBYD.js → chunk-ZV65I6ME.js} +67 -67
  191. package/dist/cli.js +138 -136
  192. package/dist/coding/export-okf-codegraph.js +29 -27
  193. package/dist/coding/export-okf-codegraph.js.map +1 -1
  194. package/dist/coding/pre-action-gate.js +2 -2
  195. package/dist/compounding/engine.js +31 -29
  196. package/dist/config.js +39 -37
  197. package/dist/connectors/codex-materialize-runner.js +29 -27
  198. package/dist/connectors/index.js +29 -27
  199. package/dist/console/trace.d.ts +5 -14
  200. package/dist/console/trace.d.ts.map +1 -1
  201. package/dist/consolidation-provenance-check.js +7 -6
  202. package/dist/consolidation-undo.js +5 -4
  203. package/dist/consolidation-undo.js.map +1 -1
  204. package/dist/contradiction/index.js +7 -6
  205. package/dist/converge-config.d.ts +2 -0
  206. package/dist/converge-config.d.ts.map +1 -1
  207. package/dist/converge-config.js +7 -3
  208. package/dist/convergence-refresh.js +31 -29
  209. package/dist/corpus-watermark.js +31 -29
  210. package/dist/dashboard-runtime.js +2 -2
  211. package/dist/deep-recall-http-glue.js +13 -13
  212. package/dist/deep-recall.js +2 -2
  213. package/dist/embedding-fallback.js +5 -4
  214. package/dist/embedding-generation-lock.js +4 -3
  215. package/dist/entity-retrieval.js +30 -28
  216. package/dist/explicit-capture.js +11 -8
  217. package/dist/external-wiki-access.js +87 -85
  218. package/dist/extraction-quote-grounding.d.ts +67 -0
  219. package/dist/extraction-quote-grounding.d.ts.map +1 -0
  220. package/dist/extraction-quote-grounding.js +27 -0
  221. package/dist/extraction-quote-grounding.js.map +1 -0
  222. package/dist/extraction-source-grounding-helpers.d.ts +8 -0
  223. package/dist/extraction-source-grounding-helpers.d.ts.map +1 -1
  224. package/dist/extraction-source-grounding-helpers.js +11 -1
  225. package/dist/extraction-source-grounding-rules.d.ts +3 -1
  226. package/dist/extraction-source-grounding-rules.d.ts.map +1 -1
  227. package/dist/extraction-source-grounding-rules.js +3 -2
  228. package/dist/extraction-source-grounding.d.ts +1 -1
  229. package/dist/extraction-source-grounding.d.ts.map +1 -1
  230. package/dist/extraction-source-grounding.js +4 -3
  231. package/dist/extraction-span-materialize.js +2 -2
  232. package/dist/extraction.js +40 -37
  233. package/dist/{first-start-migration-HYAMKJ6V.js → first-start-migration-6A5BJPDW.js} +4 -4
  234. package/dist/{forget-OHAJ6PSU.js → forget-GXBWFKRC.js} +5 -4
  235. package/dist/{forget-OHAJ6PSU.js.map → forget-GXBWFKRC.js.map} +1 -1
  236. package/dist/{graph-edge-decay-CZ3SYLM4.js → graph-edge-decay-BYPZVJT4.js} +10 -9
  237. package/dist/graph-edge-decay-BYPZVJT4.js.map +1 -0
  238. package/dist/graph-jsonl.js +8 -7
  239. package/dist/graph-snapshot.js +8 -7
  240. package/dist/graph-write-lock.js +4 -3
  241. package/dist/graph.js +9 -8
  242. package/dist/harmonic-retrieval.js +29 -27
  243. package/dist/http-retry.js +2 -1
  244. package/dist/http-retry.js.map +1 -1
  245. package/dist/index.d.ts +1 -1
  246. package/dist/index.d.ts.map +1 -1
  247. package/dist/index.js +223 -218
  248. package/dist/lcm/engine.js +4 -4
  249. package/dist/lcm/index.js +12 -12
  250. package/dist/location/index.js +32 -30
  251. package/dist/maintenance/memory-governance.js +29 -27
  252. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +29 -27
  253. package/dist/maintenance/rebuild-memory-projection-runner.js +31 -29
  254. package/dist/maintenance/rebuild-memory-projection.js +30 -28
  255. package/dist/memory-browse-operations.js +87 -85
  256. package/dist/memory-browse.js +7 -7
  257. package/dist/memory-subject.js +5 -4
  258. package/dist/namespaces/migrate.js +30 -28
  259. package/dist/namespaces/search.js +9 -9
  260. package/dist/namespaces/storage.js +29 -27
  261. package/dist/offline-sync-changeset-generations.js +7 -6
  262. package/dist/offline-sync-embedding-generation.js +6 -5
  263. package/dist/offline-sync-impression-drain.js +4 -4
  264. package/dist/offline-sync-snapshot-stream.js +9 -9
  265. package/dist/offline-sync.js +10 -10
  266. package/dist/operator-doctor-corpus.js +32 -30
  267. package/dist/operator-toolkit.js +53 -51
  268. package/dist/orchestration/maintenance.js +41 -39
  269. package/dist/orchestrator.js +185 -182
  270. package/dist/page-versioning.js +5 -4
  271. package/dist/qmd-daemon-session.js +2 -2
  272. package/dist/qmd.js +4 -4
  273. package/dist/recall-explain-renderer.js +3 -3
  274. package/dist/recall-navigate-access.js +2 -2
  275. package/dist/recall-navigate-disclosure.js +2 -2
  276. package/dist/recall-navigate.js +2 -2
  277. package/dist/recall-navigation-operations.js +87 -85
  278. package/dist/recall-navigation.js +86 -84
  279. package/dist/recall-state-view-admission.js +7 -7
  280. package/dist/recall-state.js +4 -3
  281. package/dist/recall-why-service.js +7 -7
  282. package/dist/recall-xray-cli.js +4 -4
  283. package/dist/recall-xray-renderer.js +3 -3
  284. package/dist/recall-xray.js +2 -2
  285. package/dist/reconcile/cursor.js +4 -2
  286. package/dist/reconcile/cursor.js.map +1 -1
  287. package/dist/reconcile/manifest.js +9 -6
  288. package/dist/reconcile/plan.js +4 -2
  289. package/dist/{resolution-EKJHREVJ.js → resolution-7AY36LGJ.js} +8 -7
  290. package/dist/resolution-7AY36LGJ.js.map +1 -0
  291. package/dist/resume-bundles.js +40 -38
  292. package/dist/salvage-envelope.js +7 -6
  293. package/dist/search/factory.js +8 -8
  294. package/dist/search/index.js +14 -14
  295. package/dist/semantic-consolidation.js +34 -32
  296. package/dist/semantic-rule-promotion.js +29 -27
  297. package/dist/semantic-rule-verifier.js +29 -27
  298. package/dist/source-agent-qualifier.js +37 -34
  299. package/dist/standup/build.js +29 -27
  300. package/dist/storage/content-hash-index.d.ts +10 -0
  301. package/dist/storage/content-hash-index.d.ts.map +1 -1
  302. package/dist/storage/tombstone-blocked-capture-index.d.ts +3 -0
  303. package/dist/storage/tombstone-blocked-capture-index.d.ts.map +1 -1
  304. package/dist/storage/tombstone-blocked-capture-mutation.d.ts +23 -3
  305. package/dist/storage/tombstone-blocked-capture-mutation.d.ts.map +1 -1
  306. package/dist/storage.d.ts +6 -0
  307. package/dist/storage.d.ts.map +1 -1
  308. package/dist/storage.js +30 -28
  309. package/dist/subject-config.js +6 -5
  310. package/dist/summarizer.js +4 -4
  311. package/dist/summary-snapshot.js +4 -3
  312. package/dist/support-passport/index.js +89 -87
  313. package/dist/{trace-LXXCMZJA.js → trace-QBQVS5BC.js} +5 -21
  314. package/dist/trace-QBQVS5BC.js.map +1 -0
  315. package/dist/transfer/autodetect.js +1 -1
  316. package/dist/transfer/backup.js +1 -1
  317. package/dist/transfer/capsule-export.js +3 -3
  318. package/dist/transfer/capsule-import.js +7 -6
  319. package/dist/transfer/export-okf.js +29 -27
  320. package/dist/types.d.ts +9 -0
  321. package/dist/types.d.ts.map +1 -1
  322. package/dist/types.js +1 -1
  323. package/dist/utils/serialize-mutations.js +3 -2
  324. package/dist/utils/sleep.d.ts +6 -0
  325. package/dist/utils/sleep.d.ts.map +1 -1
  326. package/dist/verified-recall.js +29 -27
  327. package/dist/who-knows-cli.js +30 -28
  328. package/dist/who-knows.js +29 -27
  329. package/dist/write-envelope.js +6 -5
  330. package/package.json +22 -2
  331. package/src/capture-write-lock-backoff.test.ts +534 -0
  332. package/src/capture-write-lock-backoff.ts +140 -0
  333. package/src/capture-write-lock.ts +8 -0
  334. package/src/console/trace.ts +5 -36
  335. package/src/converge-config.ts +80 -1
  336. package/src/extraction-quote-grounding.test.ts +546 -0
  337. package/src/extraction-quote-grounding.ts +232 -0
  338. package/src/extraction-source-grounding-helpers.ts +35 -0
  339. package/src/extraction-source-grounding-rules.ts +90 -65
  340. package/src/extraction-source-grounding.ts +11 -2
  341. package/src/index.ts +1 -1
  342. package/src/providers/codex-subscription.test.ts +15 -3
  343. package/src/storage/content-hash-index.ts +10 -0
  344. package/src/storage/tombstone-blocked-capture-index.ts +8 -1
  345. package/src/storage/tombstone-blocked-capture-mutation.ts +133 -43
  346. package/src/storage.ts +13 -0
  347. package/src/types.ts +9 -0
  348. package/src/utils/sleep.ts +28 -0
  349. package/dist/chunk-375ARKRS.js.map +0 -1
  350. package/dist/chunk-6MINUTGJ.js +0 -64
  351. package/dist/chunk-6MINUTGJ.js.map +0 -1
  352. package/dist/chunk-7LEQREP2.js +0 -9
  353. package/dist/chunk-7LEQREP2.js.map +0 -1
  354. package/dist/chunk-KI6UOSNR.js.map +0 -1
  355. package/dist/chunk-QWWMS4AE.js.map +0 -1
  356. package/dist/chunk-Y3VDGK2O.js.map +0 -1
  357. package/dist/chunk-YRH3C2OJ.js.map +0 -1
  358. package/dist/chunk-YYO447A7.js.map +0 -1
  359. package/dist/trace-LXXCMZJA.js.map +0 -1
  360. /package/dist/{auto-sync-DGJOZYGT.js.map → auto-sync-7WWAKW6F.js.map} +0 -0
  361. /package/dist/{graph-edge-decay-CZ3SYLM4.js.map → capture-write-lock-backoff.js.map} +0 -0
  362. /package/dist/{resolution-EKJHREVJ.js.map → capture-write-lock.js.map} +0 -0
  363. /package/dist/{chunk-ZUMXY4KA.js.map → chunk-22W2XWGH.js.map} +0 -0
  364. /package/dist/{chunk-AV2OQF2O.js.map → chunk-3F3HA3R2.js.map} +0 -0
  365. /package/dist/{chunk-QZZPUREO.js.map → chunk-3GYSZHMT.js.map} +0 -0
  366. /package/dist/{chunk-AL6EHLB5.js.map → chunk-3X3PNU3T.js.map} +0 -0
  367. /package/dist/{chunk-BTJ6CAIA.js.map → chunk-4IYIGN53.js.map} +0 -0
  368. /package/dist/{chunk-BZTRPCCH.js.map → chunk-4KY5GSMB.js.map} +0 -0
  369. /package/dist/{chunk-UZSBCQEC.js.map → chunk-4OSG5Y6M.js.map} +0 -0
  370. /package/dist/{chunk-EHRE7ZG3.js.map → chunk-5B5WYAHQ.js.map} +0 -0
  371. /package/dist/{chunk-WCGJK4NQ.js.map → chunk-5FNZ3G6X.js.map} +0 -0
  372. /package/dist/{chunk-Y6DZ33PA.js.map → chunk-5GX5457J.js.map} +0 -0
  373. /package/dist/{chunk-OFCHT2TN.js.map → chunk-5LRV557D.js.map} +0 -0
  374. /package/dist/{chunk-CKUUP64O.js.map → chunk-5WCJLQTM.js.map} +0 -0
  375. /package/dist/{chunk-MZBWIJJN.js.map → chunk-63B2IZYE.js.map} +0 -0
  376. /package/dist/{chunk-DGRMWDQY.js.map → chunk-66BCOVW2.js.map} +0 -0
  377. /package/dist/{chunk-P2S6P7X6.js.map → chunk-6LG7BWKW.js.map} +0 -0
  378. /package/dist/{chunk-IPLYGWQF.js.map → chunk-7LCGFUMB.js.map} +0 -0
  379. /package/dist/{chunk-KYY4EACB.js.map → chunk-7Z3DLNSD.js.map} +0 -0
  380. /package/dist/{chunk-O4KYRDRT.js.map → chunk-B665A6BO.js.map} +0 -0
  381. /package/dist/{chunk-AKREOU5F.js.map → chunk-CB6ANA2I.js.map} +0 -0
  382. /package/dist/{chunk-5JMI26Q7.js.map → chunk-CBH2Z4UA.js.map} +0 -0
  383. /package/dist/{chunk-6M56RFFJ.js.map → chunk-CJRENHVZ.js.map} +0 -0
  384. /package/dist/{chunk-EGDYVYU7.js.map → chunk-CLWBFR7Q.js.map} +0 -0
  385. /package/dist/{chunk-6VAHJ2F6.js.map → chunk-DMDWFQMR.js.map} +0 -0
  386. /package/dist/{chunk-6OQ6N5RP.js.map → chunk-DPR2WTN3.js.map} +0 -0
  387. /package/dist/{chunk-K4QY55XV.js.map → chunk-EH4BQ7LT.js.map} +0 -0
  388. /package/dist/{chunk-5JCLELOP.js.map → chunk-EPJDSQHF.js.map} +0 -0
  389. /package/dist/{chunk-K2FSASGZ.js.map → chunk-EU534WGS.js.map} +0 -0
  390. /package/dist/{chunk-IWHEJXR2.js.map → chunk-EUAIYYYR.js.map} +0 -0
  391. /package/dist/{chunk-7KYJNHGM.js.map → chunk-EUCYTCFP.js.map} +0 -0
  392. /package/dist/{chunk-YNDLCWXS.js.map → chunk-EZ25VE3G.js.map} +0 -0
  393. /package/dist/{chunk-ON4ILX3G.js.map → chunk-FFOVKNQV.js.map} +0 -0
  394. /package/dist/{chunk-2KRNPFPK.js.map → chunk-FLI6DEIU.js.map} +0 -0
  395. /package/dist/{chunk-4G4B3Z2B.js.map → chunk-FP4JYE66.js.map} +0 -0
  396. /package/dist/{chunk-B7CANWCA.js.map → chunk-FSIMZNBC.js.map} +0 -0
  397. /package/dist/{chunk-OAIWPB2I.js.map → chunk-FT4UQYOV.js.map} +0 -0
  398. /package/dist/{chunk-X3VID2TT.js.map → chunk-FUFAXVBA.js.map} +0 -0
  399. /package/dist/{chunk-HYNEDMYJ.js.map → chunk-G2OYFTUD.js.map} +0 -0
  400. /package/dist/{chunk-XTN54NML.js.map → chunk-G3T6YMBO.js.map} +0 -0
  401. /package/dist/{chunk-XHWJRUVP.js.map → chunk-GELS5Z5Z.js.map} +0 -0
  402. /package/dist/{chunk-RT6D3WN7.js.map → chunk-GH7AOMJD.js.map} +0 -0
  403. /package/dist/{chunk-2LUSQV4U.js.map → chunk-GKJJNO7C.js.map} +0 -0
  404. /package/dist/{chunk-6Z2AZ4AJ.js.map → chunk-GMXWTJNU.js.map} +0 -0
  405. /package/dist/{chunk-B657ZGDH.js.map → chunk-HQSK2INQ.js.map} +0 -0
  406. /package/dist/{chunk-RWRQ67OR.js.map → chunk-I7S55EOB.js.map} +0 -0
  407. /package/dist/{chunk-KZO43HPY.js.map → chunk-J7JWFZHI.js.map} +0 -0
  408. /package/dist/{chunk-EMFBC7L3.js.map → chunk-JDZFIR2S.js.map} +0 -0
  409. /package/dist/{chunk-4THZGKQ2.js.map → chunk-JIHMUOOS.js.map} +0 -0
  410. /package/dist/{chunk-FZB4TS2W.js.map → chunk-JPTPS4OB.js.map} +0 -0
  411. /package/dist/{chunk-CS2JEHTB.js.map → chunk-JQ7XU625.js.map} +0 -0
  412. /package/dist/{chunk-3I3U6FFT.js.map → chunk-K7BN34IA.js.map} +0 -0
  413. /package/dist/{chunk-7OAIOE5P.js.map → chunk-KH2LKDX7.js.map} +0 -0
  414. /package/dist/{chunk-DA2INEB5.js.map → chunk-KR6ZKECI.js.map} +0 -0
  415. /package/dist/{chunk-5AOAQR37.js.map → chunk-L5DAHSEZ.js.map} +0 -0
  416. /package/dist/{chunk-RP5SJ3XR.js.map → chunk-LCKVXX5F.js.map} +0 -0
  417. /package/dist/{chunk-ZI7LMSNI.js.map → chunk-LLHZZOIB.js.map} +0 -0
  418. /package/dist/{chunk-OYKQ6T4V.js.map → chunk-MATDGSJ7.js.map} +0 -0
  419. /package/dist/{chunk-3NFN4Y4P.js.map → chunk-MGCKZWAE.js.map} +0 -0
  420. /package/dist/{chunk-6OMUHXHP.js.map → chunk-ML7ZJAKJ.js.map} +0 -0
  421. /package/dist/{chunk-YDH2FSDI.js.map → chunk-N45NEBOD.js.map} +0 -0
  422. /package/dist/{chunk-A2E4WNW4.js.map → chunk-N4C7QKOG.js.map} +0 -0
  423. /package/dist/{chunk-B43NMCGQ.js.map → chunk-N7KYEVLK.js.map} +0 -0
  424. /package/dist/{chunk-HT2C4EXO.js.map → chunk-NIRQGDYC.js.map} +0 -0
  425. /package/dist/{chunk-DXHVD4DS.js.map → chunk-NW2E4CI2.js.map} +0 -0
  426. /package/dist/{chunk-4NDWE44P.js.map → chunk-NZFFGO5O.js.map} +0 -0
  427. /package/dist/{chunk-KC46VZR5.js.map → chunk-O2IPAX26.js.map} +0 -0
  428. /package/dist/{chunk-M7V65M6H.js.map → chunk-O4SGYW7H.js.map} +0 -0
  429. /package/dist/{chunk-QUA7RLK6.js.map → chunk-OP6N4H6A.js.map} +0 -0
  430. /package/dist/{chunk-ZSJGYC3C.js.map → chunk-OQJKY3Z5.js.map} +0 -0
  431. /package/dist/{chunk-OFEHITAZ.js.map → chunk-OXNTOHL6.js.map} +0 -0
  432. /package/dist/{chunk-FQD2KPQH.js.map → chunk-P55FACBG.js.map} +0 -0
  433. /package/dist/{chunk-XERVJYH2.js.map → chunk-P5NQN4JE.js.map} +0 -0
  434. /package/dist/{chunk-XZLWYZ7C.js.map → chunk-P7TOIOT7.js.map} +0 -0
  435. /package/dist/{chunk-PBVNVKYN.js.map → chunk-PIN5OPBA.js.map} +0 -0
  436. /package/dist/{chunk-CNG2XVZG.js.map → chunk-PZHQWFR3.js.map} +0 -0
  437. /package/dist/{chunk-SVDU4OHO.js.map → chunk-Q35L7TYB.js.map} +0 -0
  438. /package/dist/{chunk-YEM7K3KD.js.map → chunk-QODKDRSP.js.map} +0 -0
  439. /package/dist/{chunk-IZT3BVDW.js.map → chunk-QOZJCSFO.js.map} +0 -0
  440. /package/dist/{chunk-6T42L5FI.js.map → chunk-QS3OLP5I.js.map} +0 -0
  441. /package/dist/{chunk-PAAJWQH5.js.map → chunk-QUMKDRCF.js.map} +0 -0
  442. /package/dist/{chunk-JFVCDEIC.js.map → chunk-QX6JN3O4.js.map} +0 -0
  443. /package/dist/{chunk-KZEMFD6E.js.map → chunk-R2H4ZFBJ.js.map} +0 -0
  444. /package/dist/{chunk-GKIXBH7Y.js.map → chunk-RTKV5XHL.js.map} +0 -0
  445. /package/dist/{chunk-ZQ3WU6JO.js.map → chunk-RXFCU3CY.js.map} +0 -0
  446. /package/dist/{chunk-BOOFTFFE.js.map → chunk-S2I7DL5Q.js.map} +0 -0
  447. /package/dist/{chunk-2NCBDGND.js.map → chunk-SA6GMZJY.js.map} +0 -0
  448. /package/dist/{chunk-NSFOERZQ.js.map → chunk-SIIRTDJ4.js.map} +0 -0
  449. /package/dist/{chunk-A6TVQ3QP.js.map → chunk-SS3IS2JR.js.map} +0 -0
  450. /package/dist/{chunk-VFTK5WKI.js.map → chunk-STBX5X6B.js.map} +0 -0
  451. /package/dist/{chunk-WVHRNAXL.js.map → chunk-SWWHIJUJ.js.map} +0 -0
  452. /package/dist/{chunk-WADSXS4K.js.map → chunk-SX4QDWXK.js.map} +0 -0
  453. /package/dist/{chunk-ZIZ2G47N.js.map → chunk-TITG2NBS.js.map} +0 -0
  454. /package/dist/{chunk-LZKOVXMX.js.map → chunk-TRMJ6BYC.js.map} +0 -0
  455. /package/dist/{chunk-U7VPOXVM.js.map → chunk-TZNDKTX5.js.map} +0 -0
  456. /package/dist/{chunk-WWSRLS4M.js.map → chunk-UMTCNEVQ.js.map} +0 -0
  457. /package/dist/{chunk-4TTGRETU.js.map → chunk-UQDG3YLN.js.map} +0 -0
  458. /package/dist/{chunk-AAM66QCP.js.map → chunk-UZRSI6NX.js.map} +0 -0
  459. /package/dist/{chunk-2CXQZXWM.js.map → chunk-V4MB5ONM.js.map} +0 -0
  460. /package/dist/{chunk-CYEK6Z3P.js.map → chunk-VW6VIJOS.js.map} +0 -0
  461. /package/dist/{chunk-5ZJYHOJT.js.map → chunk-W47S5TIH.js.map} +0 -0
  462. /package/dist/{chunk-CBP4HWCL.js.map → chunk-W5MCEVUS.js.map} +0 -0
  463. /package/dist/{chunk-WETFW255.js.map → chunk-WLMZ2L5P.js.map} +0 -0
  464. /package/dist/{chunk-XRBHXUTQ.js.map → chunk-WSGPFRBH.js.map} +0 -0
  465. /package/dist/{chunk-UOKPJFO3.js.map → chunk-WVADKFWV.js.map} +0 -0
  466. /package/dist/{chunk-P34FDDB5.js.map → chunk-XISROV24.js.map} +0 -0
  467. /package/dist/{chunk-FZVROZKC.js.map → chunk-XVZA6VXC.js.map} +0 -0
  468. /package/dist/{chunk-JUWJYXI4.js.map → chunk-Y4NKEXQT.js.map} +0 -0
  469. /package/dist/{chunk-2ZQJLBV6.js.map → chunk-YE36AJL7.js.map} +0 -0
  470. /package/dist/{chunk-PCWXLAJY.js.map → chunk-YFMBHQRG.js.map} +0 -0
  471. /package/dist/{chunk-RBJQYMMT.js.map → chunk-YRULQW5J.js.map} +0 -0
  472. /package/dist/{chunk-QUNDYIYZ.js.map → chunk-YYEOR4XN.js.map} +0 -0
  473. /package/dist/{chunk-VYPFEVOM.js.map → chunk-ZJVMUBYF.js.map} +0 -0
  474. /package/dist/{chunk-5MDM7UE4.js.map → chunk-ZSH2NRDV.js.map} +0 -0
  475. /package/dist/{chunk-3J5JKBYD.js.map → chunk-ZV65I6ME.js.map} +0 -0
  476. /package/dist/{first-start-migration-HYAMKJ6V.js.map → first-start-migration-6A5BJPDW.js.map} +0 -0
@@ -1,21 +1,22 @@
1
1
  import {
2
2
  ExtractionEngine,
3
3
  shouldEnableLocalExtractionThinking
4
- } from "./chunk-XRBHXUTQ.js";
5
- import "./chunk-ZUMXY4KA.js";
4
+ } from "./chunk-WSGPFRBH.js";
5
+ import "./chunk-22W2XWGH.js";
6
6
  import "./chunk-54V4BZWP.js";
7
7
  import "./chunk-2CGLBUW3.js";
8
8
  import "./chunk-AAQA6ZUP.js";
9
9
  import "./chunk-JHU4EYDV.js";
10
10
  import "./chunk-E4X2YX2F.js";
11
- import "./chunk-FZVROZKC.js";
11
+ import "./chunk-XVZA6VXC.js";
12
+ import "./chunk-JE26AUX6.js";
12
13
  import "./chunk-A6CXG5WI.js";
13
14
  import "./chunk-QJ2AX6DU.js";
14
- import "./chunk-JE26AUX6.js";
15
- import "./chunk-YRH3C2OJ.js";
16
- import "./chunk-375ARKRS.js";
15
+ import "./chunk-CIIHIAJ2.js";
16
+ import "./chunk-D5SSBCYY.js";
17
+ import "./chunk-77R7BQZ2.js";
18
+ import "./chunk-AIYXVWUH.js";
17
19
  import "./chunk-BVRZSI7Q.js";
18
- import "./chunk-LNH76ZJX.js";
19
20
  import {
20
21
  classifyExtractionThrownError,
21
22
  classifyFallbackParseFailure,
@@ -34,11 +35,11 @@ import "./chunk-5TJEOU6Y.js";
34
35
  import "./chunk-754XN6LX.js";
35
36
  import "./chunk-BLVHDY2U.js";
36
37
  import "./chunk-5MA7ZLPD.js";
37
- import "./chunk-ZIZ2G47N.js";
38
+ import "./chunk-TITG2NBS.js";
38
39
  import "./chunk-3UXOZBHV.js";
39
40
  import "./chunk-PIWFNPQT.js";
40
- import "./chunk-EGDYVYU7.js";
41
- import "./chunk-PBVNVKYN.js";
41
+ import "./chunk-CLWBFR7Q.js";
42
+ import "./chunk-PIN5OPBA.js";
42
43
  import "./chunk-CSAKJVXW.js";
43
44
  import "./chunk-K2XUWZBM.js";
44
45
  import "./chunk-OD4FM2U7.js";
@@ -52,19 +53,19 @@ import "./chunk-ADXCCZL2.js";
52
53
  import "./chunk-236PXYG7.js";
53
54
  import "./chunk-ZCUTSMR2.js";
54
55
  import "./chunk-QDW3E4RD.js";
55
- import "./chunk-Y3VDGK2O.js";
56
+ import "./chunk-PAZ35RJ4.js";
56
57
  import "./chunk-UHVXE24Y.js";
57
- import "./chunk-LZKOVXMX.js";
58
+ import "./chunk-TRMJ6BYC.js";
58
59
  import "./chunk-V4JZCTMK.js";
59
- import "./chunk-A2E4WNW4.js";
60
- import "./chunk-KC46VZR5.js";
60
+ import "./chunk-N4C7QKOG.js";
61
+ import "./chunk-O2IPAX26.js";
62
+ import "./chunk-S7LWX2PQ.js";
63
+ import "./chunk-T2YX56QI.js";
61
64
  import "./chunk-CYEPCZN5.js";
62
65
  import "./chunk-T3FMRLWQ.js";
63
66
  import "./chunk-7VO6E5UD.js";
64
- import "./chunk-VOKHZRHW.js";
65
- import "./chunk-S7LWX2PQ.js";
66
- import "./chunk-T2YX56QI.js";
67
67
  import "./chunk-4O6WRBGE.js";
68
+ import "./chunk-VOKHZRHW.js";
68
69
  import "./chunk-GUMZC2BO.js";
69
70
  import "./chunk-TFA6HPOA.js";
70
71
  import "./chunk-F4TWWUMP.js";
@@ -74,37 +75,38 @@ import "./chunk-S2V7RUCL.js";
74
75
  import "./chunk-X3724WL4.js";
75
76
  import "./chunk-MRPOZBJC.js";
76
77
  import "./chunk-S2HLHAZ4.js";
77
- import "./chunk-LDXUBPMO.js";
78
78
  import "./chunk-DM2T26WE.js";
79
- import "./chunk-FF6N7BXC.js";
79
+ import "./chunk-LDXUBPMO.js";
80
80
  import "./chunk-2DT7PIDZ.js";
81
81
  import "./chunk-AAD2ZS6P.js";
82
- import "./chunk-YYO447A7.js";
82
+ import "./chunk-FF6N7BXC.js";
83
+ import "./chunk-JNIVZNIB.js";
84
+ import "./chunk-YXZG5TVN.js";
83
85
  import "./chunk-ZIKENA2C.js";
84
86
  import "./chunk-3OUGSOJP.js";
85
87
  import "./chunk-SCU65EZI.js";
86
88
  import "./chunk-3ONXXHQO.js";
87
- import "./chunk-YXZG5TVN.js";
88
- import "./chunk-3WU7XOFN.js";
89
89
  import "./chunk-6MKLMEBE.js";
90
- import "./chunk-QZZPUREO.js";
90
+ import "./chunk-3WU7XOFN.js";
91
+ import "./chunk-G7D6GZ5J.js";
92
+ import "./chunk-3GYSZHMT.js";
91
93
  import "./chunk-M5GVCJSJ.js";
92
94
  import "./chunk-RBOJCG4T.js";
93
- import "./chunk-4NDWE44P.js";
95
+ import "./chunk-NZFFGO5O.js";
94
96
  import "./chunk-5WITETWU.js";
95
97
  import "./chunk-6CIAGZ6X.js";
96
98
  import "./chunk-7CT3AI52.js";
97
- import "./chunk-G7D6GZ5J.js";
99
+ import "./chunk-6EDW54SQ.js";
98
100
  import "./chunk-ZJP66Q4I.js";
99
- import "./chunk-DGRMWDQY.js";
101
+ import "./chunk-66BCOVW2.js";
100
102
  import "./chunk-G26YNEOC.js";
103
+ import "./chunk-SWWHIJUJ.js";
104
+ import "./chunk-TPSLVZHS.js";
101
105
  import "./chunk-SIGAGKNE.js";
102
106
  import "./chunk-IUM3VSHI.js";
103
- import "./chunk-WVHRNAXL.js";
104
- import "./chunk-TPSLVZHS.js";
105
- import "./chunk-23G5P7TA.js";
106
107
  import "./chunk-C64XATK7.js";
107
108
  import "./chunk-42JKGUFJ.js";
109
+ import "./chunk-23G5P7TA.js";
108
110
  import "./chunk-TKC5LZ43.js";
109
111
  import "./chunk-I55KAVET.js";
110
112
  import "./chunk-L2EXJQJP.js";
@@ -118,39 +120,40 @@ import "./chunk-YCVB7X56.js";
118
120
  import "./chunk-PQVCH2AE.js";
119
121
  import "./chunk-PJKTFXE2.js";
120
122
  import "./chunk-W5BIQOAJ.js";
121
- import "./chunk-QWWMS4AE.js";
123
+ import "./chunk-3MO4LWYU.js";
122
124
  import "./chunk-YBA52OKG.js";
123
- import "./chunk-3I3U6FFT.js";
125
+ import "./chunk-K7BN34IA.js";
124
126
  import "./chunk-353C5UNV.js";
125
- import "./chunk-OFCHT2TN.js";
127
+ import "./chunk-5LRV557D.js";
126
128
  import "./chunk-BT7NVCML.js";
127
- import "./chunk-VFTK5WKI.js";
129
+ import "./chunk-STBX5X6B.js";
128
130
  import "./chunk-BJMBJZ2Y.js";
129
131
  import "./chunk-UKJAGEXH.js";
130
132
  import "./chunk-FP2373TW.js";
131
133
  import "./chunk-WC3V7HHP.js";
132
134
  import "./chunk-L272A5QW.js";
133
- import "./chunk-FQD2KPQH.js";
135
+ import "./chunk-P55FACBG.js";
134
136
  import "./chunk-ZA53AZND.js";
135
137
  import "./chunk-7RJUVTVF.js";
136
138
  import "./chunk-AL3UYZ5N.js";
137
139
  import "./chunk-RL6NEVXT.js";
140
+ import "./chunk-YET735EZ.js";
138
141
  import "./chunk-PWPIERBM.js";
139
142
  import "./chunk-IG747LRN.js";
140
143
  import "./chunk-C7HJ3NEI.js";
141
- import "./chunk-KI6UOSNR.js";
144
+ import "./chunk-DEY7B77Y.js";
142
145
  import "./chunk-5FVVY2EB.js";
143
146
  import "./chunk-BTNNL7ZW.js";
144
147
  import "./chunk-JDSVLVCG.js";
145
148
  import "./chunk-5GKPFL3S.js";
146
149
  import "./chunk-JAKIDQB2.js";
147
- import "./chunk-EHRE7ZG3.js";
150
+ import "./chunk-5B5WYAHQ.js";
148
151
  import "./chunk-P7FMDTKL.js";
149
152
  import "./chunk-ESG6ITGP.js";
150
153
  import "./chunk-PCXDUHQH.js";
151
154
  import "./chunk-VUFL7X3H.js";
152
155
  import "./chunk-C5LWPYS3.js";
153
- import "./chunk-7LEQREP2.js";
156
+ import "./chunk-PGRZ3FYC.js";
154
157
  import "./chunk-3Q3N35W7.js";
155
158
  import "./chunk-ZEFVK7XC.js";
156
159
  import "./chunk-6KH5NLQS.js";
@@ -2,12 +2,12 @@ import {
2
2
  applyUtilityPromotionRuntimePolicy,
3
3
  loadUtilityRuntimeValues
4
4
  } from "./chunk-SWIKABKI.js";
5
- import {
6
- TierMigrationExecutor
7
- } from "./chunk-YRFAYOFQ.js";
8
5
  import {
9
6
  decideTierTransition
10
7
  } from "./chunk-GCBIXUPT.js";
8
+ import {
9
+ TierMigrationExecutor
10
+ } from "./chunk-YRFAYOFQ.js";
11
11
  import "./chunk-W3K3HITK.js";
12
12
  import "./chunk-EBA5DA77.js";
13
13
  import "./chunk-TBBDFYXW.js";
@@ -273,4 +273,4 @@ export {
273
273
  LIFECYCLE_INIT_DONE_MARKER,
274
274
  runFirstStartMigration
275
275
  };
276
- //# sourceMappingURL=first-start-migration-HYAMKJ6V.js.map
276
+ //# sourceMappingURL=first-start-migration-6A5BJPDW.js.map
@@ -1,13 +1,14 @@
1
1
  import {
2
2
  buildRetiredFactTombstoneInputs
3
- } from "./chunk-LZKOVXMX.js";
3
+ } from "./chunk-TRMJ6BYC.js";
4
4
  import {
5
5
  supersessionKeysForFact
6
6
  } from "./chunk-5WITETWU.js";
7
7
  import "./chunk-6CIAGZ6X.js";
8
8
  import "./chunk-5FVVY2EB.js";
9
- import "./chunk-EHRE7ZG3.js";
10
- import "./chunk-7LEQREP2.js";
9
+ import "./chunk-5B5WYAHQ.js";
10
+ import "./chunk-PGRZ3FYC.js";
11
+ import "./chunk-BTTPKDIL.js";
11
12
  import "./chunk-3WCASNQZ.js";
12
13
  import "./chunk-PZ5AY32C.js";
13
14
 
@@ -99,4 +100,4 @@ export {
99
100
  ForgetMemoryNotFoundError,
100
101
  forgetMemory
101
102
  };
102
- //# sourceMappingURL=forget-OHAJ6PSU.js.map
103
+ //# sourceMappingURL=forget-GXBWFKRC.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/maintenance/forget.ts"],"sourcesContent":["/**\n * Operator-facing memory forgetting (issue #686 PR 4/6).\n *\n * `remnic forget <id>` marks a memory as forgotten — a soft-delete that:\n *\n * 1. Sets `status: \"forgotten\"`, `forgottenAt`, optional\n * `forgottenReason` in YAML frontmatter via the existing\n * `storage.writeMemoryFrontmatter` path (which logs the change\n * to the lifecycle ledger and invalidates caches).\n * 2. Returns a structured result describing what changed so the\n * CLI and downstream telemetry can render it.\n *\n * Memories with `status === \"forgotten\"` are excluded from recall,\n * browse, and entity attribution by the status filters that serve\n * active user context. A future maintenance cron will hard-delete\n * forgotten memories after a configurable retention window (default\n * 90 days) — for this PR the file stays on disk and the act is\n * reversible by editing the YAML directly.\n *\n * This module ships the pure helper; the CLI wires it in `cli.ts` as\n * a new `remnic forget` subcommand.\n */\n\nimport type { StorageManager } from \"../storage.js\";\nimport { buildRetiredFactTombstoneInputs } from \"../lifecycle/tombstones.js\";\nimport { supersessionKeysForFact } from \"../temporal-supersession.js\";\nimport type { MemoryFile } from \"../types.js\";\n\nexport interface ForgetMemoryRequest {\n /** Memory id (frontmatter `id`) to forget. */\n id: string;\n /** Optional human-readable reason. */\n reason?: string;\n /** Override the timestamp written to `forgottenAt`. Defaults to `new Date().toISOString()`. */\n now?: () => Date;\n}\n\nexport interface ForgetMemoryResult {\n /** Memory id that was forgotten. */\n id: string;\n /** Filesystem path of the forgotten memory. */\n path: string;\n /** Prior status before the forget call, for audit. */\n priorStatus: string;\n /** Timestamp written to `forgottenAt`. */\n forgottenAt: string;\n /** Reason captured (or empty string if none). */\n reason: string;\n}\n\nexport class ForgetMemoryNotFoundError extends Error {\n readonly code = \"memory_not_found\" as const;\n constructor(id: string) {\n super(`memory not found: ${id}`);\n this.name = \"ForgetMemoryNotFoundError\";\n }\n}\n\nexport class ForgetMemoryAlreadyForgottenError extends Error {\n readonly code = \"already_forgotten\" as const;\n constructor(id: string, forgottenAt: string) {\n super(`memory ${id} was already forgotten at ${forgottenAt}`);\n this.name = \"ForgetMemoryAlreadyForgottenError\";\n }\n}\n\n/**\n * Mark a memory as forgotten. Pure orchestration over storage —\n * caller supplies the storage instance and the request. Status\n * filters elsewhere in the codebase exclude `status: \"forgotten\"`\n * from recall/browse surfaces before they serve active user context.\n */\nexport async function forgetMemory(\n storage: StorageManager,\n request: ForgetMemoryRequest,\n): Promise<ForgetMemoryResult> {\n const id = typeof request.id === \"string\" ? request.id.trim() : \"\";\n if (id.length === 0) {\n throw new Error(\"forget: memory id is required and must be non-empty\");\n }\n const memory = await findMemoryById(storage, id);\n if (!memory) {\n throw new ForgetMemoryNotFoundError(id);\n }\n if (memory.frontmatter.status === \"forgotten\") {\n throw new ForgetMemoryAlreadyForgottenError(\n id,\n memory.frontmatter.forgottenAt ?? \"(unknown)\",\n );\n }\n const priorStatus =\n typeof memory.frontmatter.status === \"string\" ? memory.frontmatter.status : \"active\";\n const now = (request.now ?? (() => new Date()))();\n const forgottenAt = now.toISOString();\n const reason = typeof request.reason === \"string\" ? request.reason.trim() : \"\";\n await storage.writeMemoryFrontmatter(memory, {\n status: \"forgotten\",\n forgottenAt,\n forgottenReason: reason.length > 0 ? reason : undefined,\n updated: forgottenAt,\n }, {\n actor: \"remnic-forget\",\n reasonCode: \"operator_forget\",\n });\n // Issue #1579 thread OchiF: emit a LIVE tombstone at forget time so a\n // forgotten FACT cannot resurrect via re-extraction/import before an\n // operator runs `remnic doctor --rebuild-tombstones`. Without this, the\n // non-resurrection chokepoint in writeMemory has nothing to match — the\n // forgotten fact's content hash is gone from the active index but no\n // tombstone exists until a manual rebuild derives one — so the same fact\n // written again through writeMemory becomes active. Mirrors supersedeMemory\n // (contradiction) and applyTemporalSupersession via the shared\n // buildRetiredFactTombstoneInputs helper. Best-effort (rule 34): a tombstone\n // append failure must not fail the forget, which already succeeded on disk.\n if (memory.frontmatter.category === \"fact\") {\n for (const input of buildRetiredFactTombstoneInputs(\n {\n id,\n content: memory.content,\n ...(memory.frontmatter.contentHash\n ? { contentHash: memory.frontmatter.contentHash }\n : {}),\n ...(memory.frontmatter.entityRef\n ? { entityRef: memory.frontmatter.entityRef }\n : {}),\n ...(memory.frontmatter.structuredAttributes\n ? { structuredAttributes: memory.frontmatter.structuredAttributes }\n : {}),\n },\n {\n reason: \"retraction\",\n createdBy: \"user_correction\",\n createdAt: forgottenAt,\n supersessionKeysForFact,\n },\n )) {\n try {\n await storage.appendTombstone(input);\n } catch {\n // Best-effort — the forget already succeeded on disk.\n }\n }\n }\n return {\n id,\n path: memory.path,\n priorStatus,\n forgottenAt,\n reason,\n };\n}\n\nasync function findMemoryById(\n storage: StorageManager,\n id: string,\n): Promise<MemoryFile | null> {\n const hot = await storage.readAllMemories();\n const hotMatch = hot.find((m) => m.frontmatter.id === id);\n if (hotMatch) return hotMatch;\n\n const archived = await storage.readArchivedMemories();\n const archivedMatch = archived.find((m) => m.frontmatter.id === id);\n if (archivedMatch) return archivedMatch;\n\n const cold = await storage.readAllColdMemories();\n return cold.find((m) => m.frontmatter.id === id) ?? null;\n}\n"],"mappings":";;;;;;;;;;;;;;AAkDO,IAAM,4BAAN,cAAwC,MAAM;AAAA,EAC1C,OAAO;AAAA,EAChB,YAAY,IAAY;AACtB,UAAM,qBAAqB,EAAE,EAAE;AAC/B,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,oCAAN,cAAgD,MAAM;AAAA,EAClD,OAAO;AAAA,EAChB,YAAY,IAAY,aAAqB;AAC3C,UAAM,UAAU,EAAE,6BAA6B,WAAW,EAAE;AAC5D,SAAK,OAAO;AAAA,EACd;AACF;AAQA,eAAsB,aACpB,SACA,SAC6B;AAC7B,QAAM,KAAK,OAAO,QAAQ,OAAO,WAAW,QAAQ,GAAG,KAAK,IAAI;AAChE,MAAI,GAAG,WAAW,GAAG;AACnB,UAAM,IAAI,MAAM,qDAAqD;AAAA,EACvE;AACA,QAAM,SAAS,MAAM,eAAe,SAAS,EAAE;AAC/C,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,0BAA0B,EAAE;AAAA,EACxC;AACA,MAAI,OAAO,YAAY,WAAW,aAAa;AAC7C,UAAM,IAAI;AAAA,MACR;AAAA,MACA,OAAO,YAAY,eAAe;AAAA,IACpC;AAAA,EACF;AACA,QAAM,cACJ,OAAO,OAAO,YAAY,WAAW,WAAW,OAAO,YAAY,SAAS;AAC9E,QAAM,OAAO,QAAQ,QAAQ,MAAM,oBAAI,KAAK,IAAI;AAChD,QAAM,cAAc,IAAI,YAAY;AACpC,QAAM,SAAS,OAAO,QAAQ,WAAW,WAAW,QAAQ,OAAO,KAAK,IAAI;AAC5E,QAAM,QAAQ,uBAAuB,QAAQ;AAAA,IAC3C,QAAQ;AAAA,IACR;AAAA,IACA,iBAAiB,OAAO,SAAS,IAAI,SAAS;AAAA,IAC9C,SAAS;AAAA,EACX,GAAG;AAAA,IACD,OAAO;AAAA,IACP,YAAY;AAAA,EACd,CAAC;AAWD,MAAI,OAAO,YAAY,aAAa,QAAQ;AAC1C,eAAW,SAAS;AAAA,MAClB;AAAA,QACE;AAAA,QACA,SAAS,OAAO;AAAA,QAChB,GAAI,OAAO,YAAY,cACnB,EAAE,aAAa,OAAO,YAAY,YAAY,IAC9C,CAAC;AAAA,QACL,GAAI,OAAO,YAAY,YACnB,EAAE,WAAW,OAAO,YAAY,UAAU,IAC1C,CAAC;AAAA,QACL,GAAI,OAAO,YAAY,uBACnB,EAAE,sBAAsB,OAAO,YAAY,qBAAqB,IAChE,CAAC;AAAA,MACP;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,WAAW;AAAA,QACX;AAAA,MACF;AAAA,IACF,GAAG;AACD,UAAI;AACF,cAAM,QAAQ,gBAAgB,KAAK;AAAA,MACrC,QAAQ;AAAA,MAER;AAAA,IACF;AAAA,EACF;AACA,SAAO;AAAA,IACL;AAAA,IACA,MAAM,OAAO;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,eAAe,eACb,SACA,IAC4B;AAC5B,QAAM,MAAM,MAAM,QAAQ,gBAAgB;AAC1C,QAAM,WAAW,IAAI,KAAK,CAAC,MAAM,EAAE,YAAY,OAAO,EAAE;AACxD,MAAI,SAAU,QAAO;AAErB,QAAM,WAAW,MAAM,QAAQ,qBAAqB;AACpD,QAAM,gBAAgB,SAAS,KAAK,CAAC,MAAM,EAAE,YAAY,OAAO,EAAE;AAClE,MAAI,cAAe,QAAO;AAE1B,QAAM,OAAO,MAAM,QAAQ,oBAAoB;AAC/C,SAAO,KAAK,KAAK,CAAC,MAAM,EAAE,YAAY,OAAO,EAAE,KAAK;AACtD;","names":[]}
1
+ {"version":3,"sources":["../src/maintenance/forget.ts"],"sourcesContent":["/**\n * Operator-facing memory forgetting (issue #686 PR 4/6).\n *\n * `remnic forget <id>` marks a memory as forgotten — a soft-delete that:\n *\n * 1. Sets `status: \"forgotten\"`, `forgottenAt`, optional\n * `forgottenReason` in YAML frontmatter via the existing\n * `storage.writeMemoryFrontmatter` path (which logs the change\n * to the lifecycle ledger and invalidates caches).\n * 2. Returns a structured result describing what changed so the\n * CLI and downstream telemetry can render it.\n *\n * Memories with `status === \"forgotten\"` are excluded from recall,\n * browse, and entity attribution by the status filters that serve\n * active user context. A future maintenance cron will hard-delete\n * forgotten memories after a configurable retention window (default\n * 90 days) — for this PR the file stays on disk and the act is\n * reversible by editing the YAML directly.\n *\n * This module ships the pure helper; the CLI wires it in `cli.ts` as\n * a new `remnic forget` subcommand.\n */\n\nimport type { StorageManager } from \"../storage.js\";\nimport { buildRetiredFactTombstoneInputs } from \"../lifecycle/tombstones.js\";\nimport { supersessionKeysForFact } from \"../temporal-supersession.js\";\nimport type { MemoryFile } from \"../types.js\";\n\nexport interface ForgetMemoryRequest {\n /** Memory id (frontmatter `id`) to forget. */\n id: string;\n /** Optional human-readable reason. */\n reason?: string;\n /** Override the timestamp written to `forgottenAt`. Defaults to `new Date().toISOString()`. */\n now?: () => Date;\n}\n\nexport interface ForgetMemoryResult {\n /** Memory id that was forgotten. */\n id: string;\n /** Filesystem path of the forgotten memory. */\n path: string;\n /** Prior status before the forget call, for audit. */\n priorStatus: string;\n /** Timestamp written to `forgottenAt`. */\n forgottenAt: string;\n /** Reason captured (or empty string if none). */\n reason: string;\n}\n\nexport class ForgetMemoryNotFoundError extends Error {\n readonly code = \"memory_not_found\" as const;\n constructor(id: string) {\n super(`memory not found: ${id}`);\n this.name = \"ForgetMemoryNotFoundError\";\n }\n}\n\nexport class ForgetMemoryAlreadyForgottenError extends Error {\n readonly code = \"already_forgotten\" as const;\n constructor(id: string, forgottenAt: string) {\n super(`memory ${id} was already forgotten at ${forgottenAt}`);\n this.name = \"ForgetMemoryAlreadyForgottenError\";\n }\n}\n\n/**\n * Mark a memory as forgotten. Pure orchestration over storage —\n * caller supplies the storage instance and the request. Status\n * filters elsewhere in the codebase exclude `status: \"forgotten\"`\n * from recall/browse surfaces before they serve active user context.\n */\nexport async function forgetMemory(\n storage: StorageManager,\n request: ForgetMemoryRequest,\n): Promise<ForgetMemoryResult> {\n const id = typeof request.id === \"string\" ? request.id.trim() : \"\";\n if (id.length === 0) {\n throw new Error(\"forget: memory id is required and must be non-empty\");\n }\n const memory = await findMemoryById(storage, id);\n if (!memory) {\n throw new ForgetMemoryNotFoundError(id);\n }\n if (memory.frontmatter.status === \"forgotten\") {\n throw new ForgetMemoryAlreadyForgottenError(\n id,\n memory.frontmatter.forgottenAt ?? \"(unknown)\",\n );\n }\n const priorStatus =\n typeof memory.frontmatter.status === \"string\" ? memory.frontmatter.status : \"active\";\n const now = (request.now ?? (() => new Date()))();\n const forgottenAt = now.toISOString();\n const reason = typeof request.reason === \"string\" ? request.reason.trim() : \"\";\n await storage.writeMemoryFrontmatter(memory, {\n status: \"forgotten\",\n forgottenAt,\n forgottenReason: reason.length > 0 ? reason : undefined,\n updated: forgottenAt,\n }, {\n actor: \"remnic-forget\",\n reasonCode: \"operator_forget\",\n });\n // Issue #1579 thread OchiF: emit a LIVE tombstone at forget time so a\n // forgotten FACT cannot resurrect via re-extraction/import before an\n // operator runs `remnic doctor --rebuild-tombstones`. Without this, the\n // non-resurrection chokepoint in writeMemory has nothing to match — the\n // forgotten fact's content hash is gone from the active index but no\n // tombstone exists until a manual rebuild derives one — so the same fact\n // written again through writeMemory becomes active. Mirrors supersedeMemory\n // (contradiction) and applyTemporalSupersession via the shared\n // buildRetiredFactTombstoneInputs helper. Best-effort (rule 34): a tombstone\n // append failure must not fail the forget, which already succeeded on disk.\n if (memory.frontmatter.category === \"fact\") {\n for (const input of buildRetiredFactTombstoneInputs(\n {\n id,\n content: memory.content,\n ...(memory.frontmatter.contentHash\n ? { contentHash: memory.frontmatter.contentHash }\n : {}),\n ...(memory.frontmatter.entityRef\n ? { entityRef: memory.frontmatter.entityRef }\n : {}),\n ...(memory.frontmatter.structuredAttributes\n ? { structuredAttributes: memory.frontmatter.structuredAttributes }\n : {}),\n },\n {\n reason: \"retraction\",\n createdBy: \"user_correction\",\n createdAt: forgottenAt,\n supersessionKeysForFact,\n },\n )) {\n try {\n await storage.appendTombstone(input);\n } catch {\n // Best-effort — the forget already succeeded on disk.\n }\n }\n }\n return {\n id,\n path: memory.path,\n priorStatus,\n forgottenAt,\n reason,\n };\n}\n\nasync function findMemoryById(\n storage: StorageManager,\n id: string,\n): Promise<MemoryFile | null> {\n const hot = await storage.readAllMemories();\n const hotMatch = hot.find((m) => m.frontmatter.id === id);\n if (hotMatch) return hotMatch;\n\n const archived = await storage.readArchivedMemories();\n const archivedMatch = archived.find((m) => m.frontmatter.id === id);\n if (archivedMatch) return archivedMatch;\n\n const cold = await storage.readAllColdMemories();\n return cold.find((m) => m.frontmatter.id === id) ?? null;\n}\n"],"mappings":";;;;;;;;;;;;;;;AAkDO,IAAM,4BAAN,cAAwC,MAAM;AAAA,EAC1C,OAAO;AAAA,EAChB,YAAY,IAAY;AACtB,UAAM,qBAAqB,EAAE,EAAE;AAC/B,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,oCAAN,cAAgD,MAAM;AAAA,EAClD,OAAO;AAAA,EAChB,YAAY,IAAY,aAAqB;AAC3C,UAAM,UAAU,EAAE,6BAA6B,WAAW,EAAE;AAC5D,SAAK,OAAO;AAAA,EACd;AACF;AAQA,eAAsB,aACpB,SACA,SAC6B;AAC7B,QAAM,KAAK,OAAO,QAAQ,OAAO,WAAW,QAAQ,GAAG,KAAK,IAAI;AAChE,MAAI,GAAG,WAAW,GAAG;AACnB,UAAM,IAAI,MAAM,qDAAqD;AAAA,EACvE;AACA,QAAM,SAAS,MAAM,eAAe,SAAS,EAAE;AAC/C,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,0BAA0B,EAAE;AAAA,EACxC;AACA,MAAI,OAAO,YAAY,WAAW,aAAa;AAC7C,UAAM,IAAI;AAAA,MACR;AAAA,MACA,OAAO,YAAY,eAAe;AAAA,IACpC;AAAA,EACF;AACA,QAAM,cACJ,OAAO,OAAO,YAAY,WAAW,WAAW,OAAO,YAAY,SAAS;AAC9E,QAAM,OAAO,QAAQ,QAAQ,MAAM,oBAAI,KAAK,IAAI;AAChD,QAAM,cAAc,IAAI,YAAY;AACpC,QAAM,SAAS,OAAO,QAAQ,WAAW,WAAW,QAAQ,OAAO,KAAK,IAAI;AAC5E,QAAM,QAAQ,uBAAuB,QAAQ;AAAA,IAC3C,QAAQ;AAAA,IACR;AAAA,IACA,iBAAiB,OAAO,SAAS,IAAI,SAAS;AAAA,IAC9C,SAAS;AAAA,EACX,GAAG;AAAA,IACD,OAAO;AAAA,IACP,YAAY;AAAA,EACd,CAAC;AAWD,MAAI,OAAO,YAAY,aAAa,QAAQ;AAC1C,eAAW,SAAS;AAAA,MAClB;AAAA,QACE;AAAA,QACA,SAAS,OAAO;AAAA,QAChB,GAAI,OAAO,YAAY,cACnB,EAAE,aAAa,OAAO,YAAY,YAAY,IAC9C,CAAC;AAAA,QACL,GAAI,OAAO,YAAY,YACnB,EAAE,WAAW,OAAO,YAAY,UAAU,IAC1C,CAAC;AAAA,QACL,GAAI,OAAO,YAAY,uBACnB,EAAE,sBAAsB,OAAO,YAAY,qBAAqB,IAChE,CAAC;AAAA,MACP;AAAA,MACA;AAAA,QACE,QAAQ;AAAA,QACR,WAAW;AAAA,QACX,WAAW;AAAA,QACX;AAAA,MACF;AAAA,IACF,GAAG;AACD,UAAI;AACF,cAAM,QAAQ,gBAAgB,KAAK;AAAA,MACrC,QAAQ;AAAA,MAER;AAAA,IACF;AAAA,EACF;AACA,SAAO;AAAA,IACL;AAAA,IACA,MAAM,OAAO;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,eAAe,eACb,SACA,IAC4B;AAC5B,QAAM,MAAM,MAAM,QAAQ,gBAAgB;AAC1C,QAAM,WAAW,IAAI,KAAK,CAAC,MAAM,EAAE,YAAY,OAAO,EAAE;AACxD,MAAI,SAAU,QAAO;AAErB,QAAM,WAAW,MAAM,QAAQ,qBAAqB;AACpD,QAAM,gBAAgB,SAAS,KAAK,CAAC,MAAM,EAAE,YAAY,OAAO,EAAE;AAClE,MAAI,cAAe,QAAO;AAE1B,QAAM,OAAO,MAAM,QAAQ,oBAAoB;AAC/C,SAAO,KAAK,KAAK,CAAC,MAAM,EAAE,YAAY,OAAO,EAAE,KAAK;AACtD;","names":[]}
@@ -5,18 +5,19 @@ import {
5
5
  readGraphEdgeDecayStatus,
6
6
  runGraphEdgeDecayMaintenance,
7
7
  runGraphEdgeDecayMaintenanceAcrossNamespaces
8
- } from "./chunk-Y6DZ33PA.js";
9
- import "./chunk-QUNDYIYZ.js";
10
- import "./chunk-BTJ6CAIA.js";
11
- import "./chunk-LXY5VVGM.js";
12
- import "./chunk-ZQ3WU6JO.js";
13
- import "./chunk-GKCXTSFF.js";
8
+ } from "./chunk-5GX5457J.js";
9
+ import "./chunk-YYEOR4XN.js";
10
+ import "./chunk-4IYIGN53.js";
11
+ import "./chunk-RXFCU3CY.js";
14
12
  import "./chunk-2LSZVONP.js";
15
13
  import "./chunk-DEUNUKTD.js";
16
- import "./chunk-EHRE7ZG3.js";
14
+ import "./chunk-LXY5VVGM.js";
15
+ import "./chunk-GKCXTSFF.js";
16
+ import "./chunk-5B5WYAHQ.js";
17
17
  import "./chunk-PCXDUHQH.js";
18
18
  import "./chunk-VUFL7X3H.js";
19
- import "./chunk-7LEQREP2.js";
19
+ import "./chunk-PGRZ3FYC.js";
20
+ import "./chunk-BTTPKDIL.js";
20
21
  import "./chunk-KNA3BXXL.js";
21
22
  import "./chunk-3WCASNQZ.js";
22
23
  import "./chunk-PZ5AY32C.js";
@@ -28,4 +29,4 @@ export {
28
29
  runGraphEdgeDecayMaintenance,
29
30
  runGraphEdgeDecayMaintenanceAcrossNamespaces
30
31
  };
31
- //# sourceMappingURL=graph-edge-decay-CZ3SYLM4.js.map
32
+ //# sourceMappingURL=graph-edge-decay-BYPZVJT4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -3,15 +3,16 @@ import {
3
3
  restoreRemovedNodeEdges,
4
4
  rollbackNodeEdgeRewrite,
5
5
  writeGraphJsonlAtomic
6
- } from "./chunk-QUNDYIYZ.js";
7
- import "./chunk-BTJ6CAIA.js";
8
- import "./chunk-LXY5VVGM.js";
9
- import "./chunk-ZQ3WU6JO.js";
10
- import "./chunk-GKCXTSFF.js";
6
+ } from "./chunk-YYEOR4XN.js";
7
+ import "./chunk-4IYIGN53.js";
8
+ import "./chunk-RXFCU3CY.js";
11
9
  import "./chunk-2LSZVONP.js";
12
10
  import "./chunk-DEUNUKTD.js";
13
- import "./chunk-EHRE7ZG3.js";
14
- import "./chunk-7LEQREP2.js";
11
+ import "./chunk-LXY5VVGM.js";
12
+ import "./chunk-GKCXTSFF.js";
13
+ import "./chunk-5B5WYAHQ.js";
14
+ import "./chunk-PGRZ3FYC.js";
15
+ import "./chunk-BTTPKDIL.js";
15
16
  import "./chunk-KNA3BXXL.js";
16
17
  import "./chunk-3WCASNQZ.js";
17
18
  import "./chunk-PZ5AY32C.js";
@@ -4,15 +4,16 @@ import {
4
4
  buildGraphSnapshot,
5
5
  normalizeGraphSnapshotLimit,
6
6
  parseGraphSnapshotSince
7
- } from "./chunk-6VAHJ2F6.js";
8
- import "./chunk-BTJ6CAIA.js";
9
- import "./chunk-LXY5VVGM.js";
10
- import "./chunk-ZQ3WU6JO.js";
11
- import "./chunk-GKCXTSFF.js";
7
+ } from "./chunk-DMDWFQMR.js";
8
+ import "./chunk-4IYIGN53.js";
9
+ import "./chunk-RXFCU3CY.js";
12
10
  import "./chunk-2LSZVONP.js";
13
11
  import "./chunk-DEUNUKTD.js";
14
- import "./chunk-EHRE7ZG3.js";
15
- import "./chunk-7LEQREP2.js";
12
+ import "./chunk-LXY5VVGM.js";
13
+ import "./chunk-GKCXTSFF.js";
14
+ import "./chunk-5B5WYAHQ.js";
15
+ import "./chunk-PGRZ3FYC.js";
16
+ import "./chunk-BTTPKDIL.js";
16
17
  import "./chunk-KNA3BXXL.js";
17
18
  import "./chunk-PZ5AY32C.js";
18
19
  export {
@@ -3,9 +3,10 @@ import {
3
3
  assertGraphLockHeld,
4
4
  withGraphWriteLock,
5
5
  yieldForLockHeartbeat
6
- } from "./chunk-ZQ3WU6JO.js";
7
- import "./chunk-EHRE7ZG3.js";
8
- import "./chunk-7LEQREP2.js";
6
+ } from "./chunk-RXFCU3CY.js";
7
+ import "./chunk-5B5WYAHQ.js";
8
+ import "./chunk-PGRZ3FYC.js";
9
+ import "./chunk-BTTPKDIL.js";
9
10
  import "./chunk-PZ5AY32C.js";
10
11
  export {
11
12
  GraphLockLostError,
package/dist/graph.js CHANGED
@@ -16,19 +16,20 @@ import {
16
16
  readAllEdges,
17
17
  readEdges,
18
18
  readEdgesStrict
19
- } from "./chunk-BTJ6CAIA.js";
20
- import {
21
- reconstructActivationPath
22
- } from "./chunk-LXY5VVGM.js";
19
+ } from "./chunk-4IYIGN53.js";
23
20
  import {
24
21
  GraphLockLostError,
25
22
  withGraphWriteLock
26
- } from "./chunk-ZQ3WU6JO.js";
27
- import "./chunk-GKCXTSFF.js";
23
+ } from "./chunk-RXFCU3CY.js";
28
24
  import "./chunk-2LSZVONP.js";
29
25
  import "./chunk-DEUNUKTD.js";
30
- import "./chunk-EHRE7ZG3.js";
31
- import "./chunk-7LEQREP2.js";
26
+ import {
27
+ reconstructActivationPath
28
+ } from "./chunk-LXY5VVGM.js";
29
+ import "./chunk-GKCXTSFF.js";
30
+ import "./chunk-5B5WYAHQ.js";
31
+ import "./chunk-PGRZ3FYC.js";
32
+ import "./chunk-BTTPKDIL.js";
32
33
  import "./chunk-KNA3BXXL.js";
33
34
  import "./chunk-PZ5AY32C.js";
34
35
  export {
@@ -3,23 +3,23 @@ import {
3
3
  readCueAnchors,
4
4
  readProjectedHarmonicGraph,
5
5
  searchHarmonicRetrieval
6
- } from "./chunk-VYPFEVOM.js";
6
+ } from "./chunk-ZJVMUBYF.js";
7
7
  import "./chunk-5VC7J76U.js";
8
8
  import "./chunk-AZEZSQ5R.js";
9
9
  import "./chunk-BMWN7B3Y.js";
10
- import "./chunk-Y3VDGK2O.js";
10
+ import "./chunk-PAZ35RJ4.js";
11
11
  import "./chunk-UHVXE24Y.js";
12
- import "./chunk-LZKOVXMX.js";
12
+ import "./chunk-TRMJ6BYC.js";
13
13
  import "./chunk-V4JZCTMK.js";
14
- import "./chunk-A2E4WNW4.js";
15
- import "./chunk-KC46VZR5.js";
14
+ import "./chunk-N4C7QKOG.js";
15
+ import "./chunk-O2IPAX26.js";
16
+ import "./chunk-S7LWX2PQ.js";
17
+ import "./chunk-T2YX56QI.js";
16
18
  import "./chunk-CYEPCZN5.js";
17
19
  import "./chunk-T3FMRLWQ.js";
18
20
  import "./chunk-7VO6E5UD.js";
19
- import "./chunk-VOKHZRHW.js";
20
- import "./chunk-S7LWX2PQ.js";
21
- import "./chunk-T2YX56QI.js";
22
21
  import "./chunk-4O6WRBGE.js";
22
+ import "./chunk-VOKHZRHW.js";
23
23
  import "./chunk-GUMZC2BO.js";
24
24
  import "./chunk-TFA6HPOA.js";
25
25
  import "./chunk-F4TWWUMP.js";
@@ -29,36 +29,37 @@ import "./chunk-S2V7RUCL.js";
29
29
  import "./chunk-X3724WL4.js";
30
30
  import "./chunk-MRPOZBJC.js";
31
31
  import "./chunk-S2HLHAZ4.js";
32
- import "./chunk-LDXUBPMO.js";
33
32
  import "./chunk-DM2T26WE.js";
34
- import "./chunk-FF6N7BXC.js";
33
+ import "./chunk-LDXUBPMO.js";
35
34
  import "./chunk-2DT7PIDZ.js";
36
35
  import "./chunk-AAD2ZS6P.js";
37
- import "./chunk-YYO447A7.js";
36
+ import "./chunk-FF6N7BXC.js";
37
+ import "./chunk-JNIVZNIB.js";
38
+ import "./chunk-YXZG5TVN.js";
38
39
  import "./chunk-ZIKENA2C.js";
39
40
  import "./chunk-3OUGSOJP.js";
40
41
  import "./chunk-SCU65EZI.js";
41
42
  import "./chunk-3ONXXHQO.js";
42
- import "./chunk-YXZG5TVN.js";
43
- import "./chunk-3WU7XOFN.js";
44
43
  import "./chunk-6MKLMEBE.js";
45
- import "./chunk-QZZPUREO.js";
44
+ import "./chunk-3WU7XOFN.js";
45
+ import "./chunk-G7D6GZ5J.js";
46
+ import "./chunk-3GYSZHMT.js";
46
47
  import "./chunk-M5GVCJSJ.js";
47
48
  import "./chunk-RBOJCG4T.js";
48
- import "./chunk-4NDWE44P.js";
49
+ import "./chunk-NZFFGO5O.js";
49
50
  import "./chunk-5WITETWU.js";
50
51
  import "./chunk-6CIAGZ6X.js";
51
52
  import "./chunk-7CT3AI52.js";
52
- import "./chunk-G7D6GZ5J.js";
53
- import "./chunk-DGRMWDQY.js";
53
+ import "./chunk-6EDW54SQ.js";
54
+ import "./chunk-66BCOVW2.js";
54
55
  import "./chunk-G26YNEOC.js";
56
+ import "./chunk-SWWHIJUJ.js";
57
+ import "./chunk-TPSLVZHS.js";
55
58
  import "./chunk-SIGAGKNE.js";
56
59
  import "./chunk-IUM3VSHI.js";
57
- import "./chunk-WVHRNAXL.js";
58
- import "./chunk-TPSLVZHS.js";
59
- import "./chunk-23G5P7TA.js";
60
60
  import "./chunk-C64XATK7.js";
61
61
  import "./chunk-42JKGUFJ.js";
62
+ import "./chunk-23G5P7TA.js";
62
63
  import "./chunk-TKC5LZ43.js";
63
64
  import "./chunk-I55KAVET.js";
64
65
  import "./chunk-L2EXJQJP.js";
@@ -71,33 +72,34 @@ import "./chunk-YCVB7X56.js";
71
72
  import "./chunk-PQVCH2AE.js";
72
73
  import "./chunk-PJKTFXE2.js";
73
74
  import "./chunk-W5BIQOAJ.js";
74
- import "./chunk-QWWMS4AE.js";
75
+ import "./chunk-3MO4LWYU.js";
75
76
  import "./chunk-YBA52OKG.js";
76
- import "./chunk-OFCHT2TN.js";
77
+ import "./chunk-5LRV557D.js";
77
78
  import "./chunk-BT7NVCML.js";
78
- import "./chunk-VFTK5WKI.js";
79
+ import "./chunk-STBX5X6B.js";
79
80
  import "./chunk-BJMBJZ2Y.js";
80
81
  import "./chunk-UKJAGEXH.js";
81
82
  import "./chunk-FP2373TW.js";
82
83
  import "./chunk-L272A5QW.js";
83
- import "./chunk-FQD2KPQH.js";
84
+ import "./chunk-P55FACBG.js";
84
85
  import "./chunk-ZA53AZND.js";
85
86
  import "./chunk-7RJUVTVF.js";
86
87
  import "./chunk-AL3UYZ5N.js";
87
88
  import "./chunk-RL6NEVXT.js";
89
+ import "./chunk-YET735EZ.js";
88
90
  import "./chunk-PWPIERBM.js";
89
91
  import "./chunk-C7HJ3NEI.js";
90
- import "./chunk-KI6UOSNR.js";
92
+ import "./chunk-DEY7B77Y.js";
91
93
  import "./chunk-5FVVY2EB.js";
92
94
  import "./chunk-BTNNL7ZW.js";
93
95
  import "./chunk-JDSVLVCG.js";
94
96
  import "./chunk-5GKPFL3S.js";
95
97
  import "./chunk-JAKIDQB2.js";
96
- import "./chunk-EHRE7ZG3.js";
98
+ import "./chunk-5B5WYAHQ.js";
97
99
  import "./chunk-P7FMDTKL.js";
98
100
  import "./chunk-VUFL7X3H.js";
99
101
  import "./chunk-C5LWPYS3.js";
100
- import "./chunk-7LEQREP2.js";
102
+ import "./chunk-PGRZ3FYC.js";
101
103
  import "./chunk-ZEFVK7XC.js";
102
104
  import "./chunk-6KH5NLQS.js";
103
105
  import "./chunk-P2QRMMVQ.js";
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  sleep
3
- } from "./chunk-7LEQREP2.js";
3
+ } from "./chunk-PGRZ3FYC.js";
4
+ import "./chunk-BTTPKDIL.js";
4
5
  import "./chunk-PZ5AY32C.js";
5
6
 
6
7
  // src/http-retry.ts
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/http-retry.ts"],"sourcesContent":["/**\n * Shared retrying fetch for connector packages (issue #2792).\n *\n * One copy of the retry loop that six connector clients and the X MCP\n * client duplicated: attempt counting, per-attempt timeout signal,\n * 429/5xx retry with Retry-After (seconds or HTTP-date) plus capped\n * exponential backoff, raw rethrow of caller aborts, and socket\n * release on retryable responses. Vendors keep everything\n * request-specific: headers/body, the error classes their callers\n * match on, and what happens to a successful response body.\n *\n * Import via the `@remnic/core/http-retry` subpath (same pattern as\n * `@remnic/core/abort-error`) — the root index stays untouched.\n */\n\nimport { sleep as defaultSleep } from \"./utils/sleep.js\";\n\nexport interface RetryingFetchOptions {\n /** Request init for every attempt. Ignored when `buildInit` is set. */\n init?: RequestInit;\n /**\n * Init builder invoked ONCE, before the retry loop. Request\n * construction (e.g. token acquisition) must stay outside the\n * transport retry boundary: a deterministic provider failure —\n * missing grant, revoked grant, unpersistable token file — runs once\n * and propagates unwrapped, never retried or vendor-wrapped.\n */\n buildInit?: () => RequestInit | Promise<RequestInit>;\n fetchImpl?: typeof fetch;\n sleep?: (ms: number) => Promise<void>;\n signal?: AbortSignal;\n timeoutMs?: number;\n /** Retries after the first attempt. Default 3 (4 attempts total). */\n maxRetries?: number;\n maxRetryDelayMs?: number;\n /** First backoff step; doubles per attempt. Default 1_000. */\n backoffBaseMs?: number;\n /**\n * Vendor Retry-After parsing (e.g. a body field). A `null`/`undefined`\n * result falls back to the shared Retry-After header parse, then to\n * exponential backoff. A number (including 0) is used as-is.\n */\n retryAfterMs?: (response: Response) => number | null | undefined | Promise<number | null | undefined>;\n /** Wraps an exhausted network/timeout failure into the vendor error. */\n networkError: (err: unknown, attempts: number, context: NetworkErrorContext) => Error;\n /** Wraps a retryable (429/5xx) response; thrown when retries are exhausted. */\n retryableError: (response: Response) => Error | Promise<Error>;\n}\n\nexport interface NetworkErrorContext {\n /** True when the helper's own timeout signal fired (not a caller abort). */\n timedOut: boolean;\n}\n\n/**\n * Base class for connector API errors: a message plus optional HTTP\n * status and vendor detail. Vendor subclasses set their own `name`.\n */\nexport class ConnectorApiError extends Error {\n constructor(\n message: string,\n readonly status?: number,\n readonly detail?: string,\n ) {\n super(message);\n this.name = \"ConnectorApiError\";\n }\n}\n\nconst DEFAULT_TIMEOUT_MS = 30_000;\nconst DEFAULT_MAX_RETRIES = 3;\nconst DEFAULT_MAX_RETRY_DELAY_MS = 30_000;\nconst DEFAULT_BACKOFF_BASE_MS = 1_000;\n\n/**\n * Network/timeout failures wrap Node error text that can carry loader\n * paths or stack fragments; sync errors reach MCP clients verbatim, so\n * only the error name + code survive.\n */\nexport function describeNetworkError(err: unknown): string {\n if (!(err instanceof Error)) return \"unexpected non-Error failure\";\n const code = (err as NodeJS.ErrnoException).code;\n return typeof code === \"string\" && code.length > 0 ? `${err.name} (${code})` : err.name;\n}\n\n/** Loop instead of `/\\/+$/` — CodeQL js/polynomial-redos on user-set URLs. */\nexport function stripTrailingSlashes(value: string): string {\n let end = value.length;\n while (end > 0 && value.charCodeAt(end - 1) === 0x2f) end--;\n return value.slice(0, end);\n}\n\n/** Release the socket back to the pool: an unconsumed response body pins the undici connection. */\nexport function discardResponseBody(response: Response): void {\n void response.body?.cancel().catch(() => {});\n}\n\n/**\n * Parse a `Retry-After` header as delay in ms, capped at `capMs`:\n * delay-seconds first, then HTTP-date. `undefined` when absent or\n * unparseable.\n */\nexport function retryAfterHeaderMs(response: Response, capMs: number): number | undefined {\n const header = response.headers.get(\"retry-after\");\n if (header === null || header.length === 0) return undefined;\n const seconds = Number(header);\n if (Number.isFinite(seconds) && seconds >= 0) {\n return Math.min(capMs, Math.ceil(seconds * 1_000));\n }\n const when = Date.parse(header);\n if (Number.isFinite(when)) {\n return Math.min(capMs, Math.max(0, when - Date.now()));\n }\n return undefined;\n}\n\n/**\n * Fetch with retries on network failures, 429, and 5xx. Returns the\n * final response (ok or non-retryable status) for the caller to\n * interpret; throws the vendor-wrapped error when retries are exhausted\n * or the transport fails.\n */\nexport async function retryingFetch(\n url: string,\n options: RetryingFetchOptions,\n): Promise<Response> {\n const fetchImpl = options.fetchImpl ?? fetch;\n const sleep = options.sleep ?? defaultSleep;\n const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n const maxRetries = options.maxRetries ?? DEFAULT_MAX_RETRIES;\n const maxRetryDelayMs = options.maxRetryDelayMs ?? DEFAULT_MAX_RETRY_DELAY_MS;\n const backoffBaseMs = options.backoffBaseMs ?? DEFAULT_BACKOFF_BASE_MS;\n const backoffMs = (attempt: number): number =>\n Math.min(maxRetryDelayMs, backoffBaseMs * 2 ** attempt);\n const attempts = maxRetries + 1;\n\n // Request construction runs once, outside the retry boundary: only\n // fetch/network/HTTP-retryable failures retry, so initializer/token\n // provider errors execute once and propagate unchanged (issue #2792).\n options.signal?.throwIfAborted();\n const init = options.buildInit ? await options.buildInit() : options.init;\n\n let lastError: unknown;\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n options.signal?.throwIfAborted();\n const timeoutSignal = AbortSignal.timeout(timeoutMs);\n const combined = options.signal\n ? AbortSignal.any([options.signal, timeoutSignal])\n : timeoutSignal;\n let response: Response;\n try {\n response = await fetchImpl(url, { ...init, signal: combined });\n } catch (err) {\n // The caller's abort always propagates unwrapped and unretried.\n if (options.signal?.aborted) throw err;\n if (attempt < maxRetries) {\n await sleep(backoffMs(attempt));\n continue;\n }\n throw options.networkError(err, attempts, { timedOut: timeoutSignal.aborted });\n }\n\n if (response.status === 429 || response.status >= 500) {\n lastError = await options.retryableError(response);\n if (attempt < maxRetries) {\n const override = options.retryAfterMs ? await options.retryAfterMs(response) : undefined;\n const delay = override ?? retryAfterHeaderMs(response, maxRetryDelayMs) ?? backoffMs(attempt);\n discardResponseBody(response);\n await sleep(delay);\n continue;\n }\n discardResponseBody(response);\n throw lastError;\n }\n return response;\n }\n // Unreachable: every terminal loop path throws. Kept for exhaustiveness.\n throw lastError instanceof Error ? lastError : new ConnectorApiError(\"request failed\");\n}\n"],"mappings":";;;;;;AA0DO,IAAM,oBAAN,cAAgC,MAAM;AAAA,EAC3C,YACE,SACS,QACA,QACT;AACA,UAAM,OAAO;AAHJ;AACA;AAGT,SAAK,OAAO;AAAA,EACd;AAAA,EALW;AAAA,EACA;AAKb;AAEA,IAAM,qBAAqB;AAC3B,IAAM,sBAAsB;AAC5B,IAAM,6BAA6B;AACnC,IAAM,0BAA0B;AAOzB,SAAS,qBAAqB,KAAsB;AACzD,MAAI,EAAE,eAAe,OAAQ,QAAO;AACpC,QAAM,OAAQ,IAA8B;AAC5C,SAAO,OAAO,SAAS,YAAY,KAAK,SAAS,IAAI,GAAG,IAAI,IAAI,KAAK,IAAI,MAAM,IAAI;AACrF;AAGO,SAAS,qBAAqB,OAAuB;AAC1D,MAAI,MAAM,MAAM;AAChB,SAAO,MAAM,KAAK,MAAM,WAAW,MAAM,CAAC,MAAM,GAAM;AACtD,SAAO,MAAM,MAAM,GAAG,GAAG;AAC3B;AAGO,SAAS,oBAAoB,UAA0B;AAC5D,OAAK,SAAS,MAAM,OAAO,EAAE,MAAM,MAAM;AAAA,EAAC,CAAC;AAC7C;AAOO,SAAS,mBAAmB,UAAoB,OAAmC;AACxF,QAAM,SAAS,SAAS,QAAQ,IAAI,aAAa;AACjD,MAAI,WAAW,QAAQ,OAAO,WAAW,EAAG,QAAO;AACnD,QAAM,UAAU,OAAO,MAAM;AAC7B,MAAI,OAAO,SAAS,OAAO,KAAK,WAAW,GAAG;AAC5C,WAAO,KAAK,IAAI,OAAO,KAAK,KAAK,UAAU,GAAK,CAAC;AAAA,EACnD;AACA,QAAM,OAAO,KAAK,MAAM,MAAM;AAC9B,MAAI,OAAO,SAAS,IAAI,GAAG;AACzB,WAAO,KAAK,IAAI,OAAO,KAAK,IAAI,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC;AAAA,EACvD;AACA,SAAO;AACT;AAQA,eAAsB,cACpB,KACA,SACmB;AACnB,QAAM,YAAY,QAAQ,aAAa;AACvC,QAAMA,SAAQ,QAAQ,SAAS;AAC/B,QAAM,YAAY,QAAQ,aAAa;AACvC,QAAM,aAAa,QAAQ,cAAc;AACzC,QAAM,kBAAkB,QAAQ,mBAAmB;AACnD,QAAM,gBAAgB,QAAQ,iBAAiB;AAC/C,QAAM,YAAY,CAAC,YACjB,KAAK,IAAI,iBAAiB,gBAAgB,KAAK,OAAO;AACxD,QAAM,WAAW,aAAa;AAK9B,UAAQ,QAAQ,eAAe;AAC/B,QAAM,OAAO,QAAQ,YAAY,MAAM,QAAQ,UAAU,IAAI,QAAQ;AAErE,MAAI;AACJ,WAAS,UAAU,GAAG,WAAW,YAAY,WAAW;AACtD,YAAQ,QAAQ,eAAe;AAC/B,UAAM,gBAAgB,YAAY,QAAQ,SAAS;AACnD,UAAM,WAAW,QAAQ,SACrB,YAAY,IAAI,CAAC,QAAQ,QAAQ,aAAa,CAAC,IAC/C;AACJ,QAAI;AACJ,QAAI;AACF,iBAAW,MAAM,UAAU,KAAK,EAAE,GAAG,MAAM,QAAQ,SAAS,CAAC;AAAA,IAC/D,SAAS,KAAK;AAEZ,UAAI,QAAQ,QAAQ,QAAS,OAAM;AACnC,UAAI,UAAU,YAAY;AACxB,cAAMA,OAAM,UAAU,OAAO,CAAC;AAC9B;AAAA,MACF;AACA,YAAM,QAAQ,aAAa,KAAK,UAAU,EAAE,UAAU,cAAc,QAAQ,CAAC;AAAA,IAC/E;AAEA,QAAI,SAAS,WAAW,OAAO,SAAS,UAAU,KAAK;AACrD,kBAAY,MAAM,QAAQ,eAAe,QAAQ;AACjD,UAAI,UAAU,YAAY;AACxB,cAAM,WAAW,QAAQ,eAAe,MAAM,QAAQ,aAAa,QAAQ,IAAI;AAC/E,cAAM,QAAQ,YAAY,mBAAmB,UAAU,eAAe,KAAK,UAAU,OAAO;AAC5F,4BAAoB,QAAQ;AAC5B,cAAMA,OAAM,KAAK;AACjB;AAAA,MACF;AACA,0BAAoB,QAAQ;AAC5B,YAAM;AAAA,IACR;AACA,WAAO;AAAA,EACT;AAEA,QAAM,qBAAqB,QAAQ,YAAY,IAAI,kBAAkB,gBAAgB;AACvF;","names":["sleep"]}
1
+ {"version":3,"sources":["../src/http-retry.ts"],"sourcesContent":["/**\n * Shared retrying fetch for connector packages (issue #2792).\n *\n * One copy of the retry loop that six connector clients and the X MCP\n * client duplicated: attempt counting, per-attempt timeout signal,\n * 429/5xx retry with Retry-After (seconds or HTTP-date) plus capped\n * exponential backoff, raw rethrow of caller aborts, and socket\n * release on retryable responses. Vendors keep everything\n * request-specific: headers/body, the error classes their callers\n * match on, and what happens to a successful response body.\n *\n * Import via the `@remnic/core/http-retry` subpath (same pattern as\n * `@remnic/core/abort-error`) — the root index stays untouched.\n */\n\nimport { sleep as defaultSleep } from \"./utils/sleep.js\";\n\nexport interface RetryingFetchOptions {\n /** Request init for every attempt. Ignored when `buildInit` is set. */\n init?: RequestInit;\n /**\n * Init builder invoked ONCE, before the retry loop. Request\n * construction (e.g. token acquisition) must stay outside the\n * transport retry boundary: a deterministic provider failure —\n * missing grant, revoked grant, unpersistable token file — runs once\n * and propagates unwrapped, never retried or vendor-wrapped.\n */\n buildInit?: () => RequestInit | Promise<RequestInit>;\n fetchImpl?: typeof fetch;\n sleep?: (ms: number) => Promise<void>;\n signal?: AbortSignal;\n timeoutMs?: number;\n /** Retries after the first attempt. Default 3 (4 attempts total). */\n maxRetries?: number;\n maxRetryDelayMs?: number;\n /** First backoff step; doubles per attempt. Default 1_000. */\n backoffBaseMs?: number;\n /**\n * Vendor Retry-After parsing (e.g. a body field). A `null`/`undefined`\n * result falls back to the shared Retry-After header parse, then to\n * exponential backoff. A number (including 0) is used as-is.\n */\n retryAfterMs?: (response: Response) => number | null | undefined | Promise<number | null | undefined>;\n /** Wraps an exhausted network/timeout failure into the vendor error. */\n networkError: (err: unknown, attempts: number, context: NetworkErrorContext) => Error;\n /** Wraps a retryable (429/5xx) response; thrown when retries are exhausted. */\n retryableError: (response: Response) => Error | Promise<Error>;\n}\n\nexport interface NetworkErrorContext {\n /** True when the helper's own timeout signal fired (not a caller abort). */\n timedOut: boolean;\n}\n\n/**\n * Base class for connector API errors: a message plus optional HTTP\n * status and vendor detail. Vendor subclasses set their own `name`.\n */\nexport class ConnectorApiError extends Error {\n constructor(\n message: string,\n readonly status?: number,\n readonly detail?: string,\n ) {\n super(message);\n this.name = \"ConnectorApiError\";\n }\n}\n\nconst DEFAULT_TIMEOUT_MS = 30_000;\nconst DEFAULT_MAX_RETRIES = 3;\nconst DEFAULT_MAX_RETRY_DELAY_MS = 30_000;\nconst DEFAULT_BACKOFF_BASE_MS = 1_000;\n\n/**\n * Network/timeout failures wrap Node error text that can carry loader\n * paths or stack fragments; sync errors reach MCP clients verbatim, so\n * only the error name + code survive.\n */\nexport function describeNetworkError(err: unknown): string {\n if (!(err instanceof Error)) return \"unexpected non-Error failure\";\n const code = (err as NodeJS.ErrnoException).code;\n return typeof code === \"string\" && code.length > 0 ? `${err.name} (${code})` : err.name;\n}\n\n/** Loop instead of `/\\/+$/` — CodeQL js/polynomial-redos on user-set URLs. */\nexport function stripTrailingSlashes(value: string): string {\n let end = value.length;\n while (end > 0 && value.charCodeAt(end - 1) === 0x2f) end--;\n return value.slice(0, end);\n}\n\n/** Release the socket back to the pool: an unconsumed response body pins the undici connection. */\nexport function discardResponseBody(response: Response): void {\n void response.body?.cancel().catch(() => {});\n}\n\n/**\n * Parse a `Retry-After` header as delay in ms, capped at `capMs`:\n * delay-seconds first, then HTTP-date. `undefined` when absent or\n * unparseable.\n */\nexport function retryAfterHeaderMs(response: Response, capMs: number): number | undefined {\n const header = response.headers.get(\"retry-after\");\n if (header === null || header.length === 0) return undefined;\n const seconds = Number(header);\n if (Number.isFinite(seconds) && seconds >= 0) {\n return Math.min(capMs, Math.ceil(seconds * 1_000));\n }\n const when = Date.parse(header);\n if (Number.isFinite(when)) {\n return Math.min(capMs, Math.max(0, when - Date.now()));\n }\n return undefined;\n}\n\n/**\n * Fetch with retries on network failures, 429, and 5xx. Returns the\n * final response (ok or non-retryable status) for the caller to\n * interpret; throws the vendor-wrapped error when retries are exhausted\n * or the transport fails.\n */\nexport async function retryingFetch(\n url: string,\n options: RetryingFetchOptions,\n): Promise<Response> {\n const fetchImpl = options.fetchImpl ?? fetch;\n const sleep = options.sleep ?? defaultSleep;\n const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;\n const maxRetries = options.maxRetries ?? DEFAULT_MAX_RETRIES;\n const maxRetryDelayMs = options.maxRetryDelayMs ?? DEFAULT_MAX_RETRY_DELAY_MS;\n const backoffBaseMs = options.backoffBaseMs ?? DEFAULT_BACKOFF_BASE_MS;\n const backoffMs = (attempt: number): number =>\n Math.min(maxRetryDelayMs, backoffBaseMs * 2 ** attempt);\n const attempts = maxRetries + 1;\n\n // Request construction runs once, outside the retry boundary: only\n // fetch/network/HTTP-retryable failures retry, so initializer/token\n // provider errors execute once and propagate unchanged (issue #2792).\n options.signal?.throwIfAborted();\n const init = options.buildInit ? await options.buildInit() : options.init;\n\n let lastError: unknown;\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n options.signal?.throwIfAborted();\n const timeoutSignal = AbortSignal.timeout(timeoutMs);\n const combined = options.signal\n ? AbortSignal.any([options.signal, timeoutSignal])\n : timeoutSignal;\n let response: Response;\n try {\n response = await fetchImpl(url, { ...init, signal: combined });\n } catch (err) {\n // The caller's abort always propagates unwrapped and unretried.\n if (options.signal?.aborted) throw err;\n if (attempt < maxRetries) {\n await sleep(backoffMs(attempt));\n continue;\n }\n throw options.networkError(err, attempts, { timedOut: timeoutSignal.aborted });\n }\n\n if (response.status === 429 || response.status >= 500) {\n lastError = await options.retryableError(response);\n if (attempt < maxRetries) {\n const override = options.retryAfterMs ? await options.retryAfterMs(response) : undefined;\n const delay = override ?? retryAfterHeaderMs(response, maxRetryDelayMs) ?? backoffMs(attempt);\n discardResponseBody(response);\n await sleep(delay);\n continue;\n }\n discardResponseBody(response);\n throw lastError;\n }\n return response;\n }\n // Unreachable: every terminal loop path throws. Kept for exhaustiveness.\n throw lastError instanceof Error ? lastError : new ConnectorApiError(\"request failed\");\n}\n"],"mappings":"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","names":["sleep"]}
package/dist/index.d.ts CHANGED
@@ -170,7 +170,7 @@ export type { AnomalyDetectorConfig, AnomalyDetectorInput, AnomalyDetectorResult
170
170
  export { AccessAuditAdapter } from "./access-audit.js";
171
171
  export type { AccessAuditConfig, AccessAuditResult, } from "./access-audit.js";
172
172
  export type { PluginConfig, GatewayConfig, EntityFile, EntityStructuredSection, ConsolidationObservation, MemoryFile, MemoryFrontmatter, MemoryObservation, ExtractedFact, MemoryCategory, MemoryScope, MemoryActionType, MemoryActionEligibilityContext, MemoryActionEligibilitySource, ContinuityImprovementLoop, BriefingConfig, BriefingWindow, BriefingFocus, BriefingActiveThread, BriefingRecentEntity, BriefingOpenCommitment, BriefingFollowup, BriefingSections, BriefingResult, CalendarEvent, CalendarSource, RecallDisclosure, } from "./types.js";
173
- export { CONVERGE_CONFLICT_POLICIES, DEFAULT_CONVERGE_CONFLICT_POLICY, DEFAULT_CONVERGE_PEER_REQUEST_TIMEOUT_MS, MAX_CONVERGE_PEER_REQUEST_TIMEOUT_MS, envConvergePeerRequestTimeoutMs, normalizeConvergePeerRequestTimeoutMs, parseConvergeConfig } from "./converge-config.js";
173
+ export { CONVERGE_CONFLICT_POLICIES, DEFAULT_CONVERGE_CONFLICT_POLICY, DEFAULT_CONVERGE_PEER_REQUEST_TIMEOUT_MS, MAX_CONVERGE_PEER_REQUEST_TIMEOUT_MS, envConvergePeerRequestTimeoutMs, normalizeConvergePeerRequestTimeoutMs, parseConvergeConfig, resolveConvergeCaptureWriteLockBackoff } from "./converge-config.js";
174
174
  export { DEFAULT_RECALL_DISCLOSURE, RECALL_DISCLOSURE_LEVELS, isRecallDisclosure, } from "./types.js";
175
175
  export type { Peer, PeerKind, PeerProfile, PeerProfileFieldProvenance, PeerInteractionLogEntry, } from "./peers/index.js";
176
176
  export { PEER_ID_PATTERN, PEER_ID_MAX_LENGTH, PEERS_DIR_NAME, assertValidPeerId, readPeer, writePeer, listPeers, appendInteractionLog, readInteractionLogRaw, readPeerProfile, writePeerProfile, } from "./peers/index.js";