@remnic/core 9.30.0 → 9.31.0

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 (495) hide show
  1. package/dist/access-admin-ops-surface.d.ts +10 -10
  2. package/dist/access-admin-ops-surface.js +50 -44
  3. package/dist/access-authorization-probe.d.ts +10 -10
  4. package/dist/access-authorization-probe.js +51 -45
  5. package/dist/access-boundary.d.ts +13 -11
  6. package/dist/access-boundary.js +50 -44
  7. package/dist/access-cli.js +168 -123
  8. package/dist/access-cli.js.map +1 -1
  9. package/dist/access-extraction-force-flush.d.ts +119 -0
  10. package/dist/access-extraction-force-flush.js +166 -0
  11. package/dist/access-health-types.d.ts +1 -1
  12. package/dist/access-http-lcm-compaction.d.ts +47 -13
  13. package/dist/access-http-lcm-compaction.js +7 -3
  14. package/dist/access-http-lifecycle-flush.d.ts +132 -0
  15. package/dist/access-http-lifecycle-flush.js +9 -0
  16. package/dist/access-http-lifecycle-flush.js.map +1 -0
  17. package/dist/access-http.d.ts +11 -10
  18. package/dist/access-http.js +66 -59
  19. package/dist/access-identity-continuity-surface.d.ts +8 -8
  20. package/dist/access-identity-continuity-surface.js +50 -44
  21. package/dist/access-lcm-surface.d.ts +10 -10
  22. package/dist/access-lcm-surface.js +50 -44
  23. package/dist/access-mcp-output-schemas.js +1 -1
  24. package/dist/access-mcp.d.ts +16 -10
  25. package/dist/access-mcp.js +58 -52
  26. package/dist/access-memory-search-fanout.d.ts +2 -2
  27. package/dist/{access-namespace-preflight-VfXssvoI.d.ts → access-namespace-preflight-D4vW97H1.d.ts} +1 -1
  28. package/dist/access-namespace-preflight.d.ts +3 -3
  29. package/dist/access-namespace-preflight.js +50 -44
  30. package/dist/access-observe-helpers.d.ts +22 -0
  31. package/dist/access-observe-helpers.js +10 -0
  32. package/dist/access-observe-helpers.js.map +1 -0
  33. package/dist/access-observe-write-surface.d.ts +51 -47
  34. package/dist/access-observe-write-surface.js +50 -44
  35. package/dist/access-operations-batch.js +53 -47
  36. package/dist/access-operations.d.ts +11 -11
  37. package/dist/access-operations.js +55 -49
  38. package/dist/access-recall-concurrency.d.ts +10 -10
  39. package/dist/access-recall-concurrency.js +50 -44
  40. package/dist/access-recall-response.d.ts +10 -10
  41. package/dist/access-recall-response.js +50 -44
  42. package/dist/access-recall-surface.d.ts +10 -10
  43. package/dist/access-recall-surface.js +50 -44
  44. package/dist/access-schema.d.ts +37 -7
  45. package/dist/access-schema.js +5 -3
  46. package/dist/{access-service-B5RwVsTV.d.ts → access-service-B6PZ_xUL.d.ts} +44 -20
  47. package/dist/access-service-helpers.d.ts +113 -0
  48. package/dist/access-service-helpers.js +8 -0
  49. package/dist/access-service-helpers.js.map +1 -0
  50. package/dist/access-service.d.ts +10 -10
  51. package/dist/access-service.js +50 -44
  52. package/dist/access-surface-catalog.d.ts +10 -10
  53. package/dist/access-surface-catalog.js +2 -0
  54. package/dist/access-surface-catalog.js.map +1 -1
  55. package/dist/access-wearables-meetings-surface.d.ts +3 -3
  56. package/dist/action-confidence.d.ts +1 -1
  57. package/dist/active-memory-bridge.d.ts +1 -1
  58. package/dist/active-recall.d.ts +1 -1
  59. package/dist/active-recall.js +1 -1
  60. package/dist/adapters/index.js +7 -7
  61. package/dist/adapters/registry.js +3 -3
  62. package/dist/behavior-learner.d.ts +1 -1
  63. package/dist/behavior-signals.d.ts +1 -1
  64. package/dist/bootstrap.d.ts +8 -8
  65. package/dist/briefing.d.ts +2 -2
  66. package/dist/briefing.js +14 -14
  67. package/dist/buffer-surprise-report.d.ts +1 -1
  68. package/dist/buffer-turn-helpers.d.ts +5 -0
  69. package/dist/buffer-turn-helpers.js +24 -0
  70. package/dist/buffer-turn-helpers.js.map +1 -0
  71. package/dist/buffer.d.ts +17 -4
  72. package/dist/buffer.js +21 -1
  73. package/dist/bulk-import/index.d.ts +3 -3
  74. package/dist/calibration.d.ts +1 -1
  75. package/dist/capabilities.d.ts +1 -1
  76. package/dist/{capsule-crypto-GWVG7LGC.js → capsule-crypto-7FJQINUR.js} +2 -2
  77. package/dist/capsule-crypto-7FJQINUR.js.map +1 -0
  78. package/dist/{capsule-merge-5KKJQBWQ.js → capsule-merge-2H2IUTBT.js} +4 -4
  79. package/dist/{catalog-V7inUQdp.d.ts → catalog-CGFYmTT8.d.ts} +1 -1
  80. package/dist/causal-behavior.d.ts +1 -1
  81. package/dist/causal-behavior.js +2 -2
  82. package/dist/causal-chain.js +2 -2
  83. package/dist/causal-consolidation.d.ts +1 -1
  84. package/dist/causal-consolidation.js +19 -19
  85. package/dist/causal-retrieval.js +2 -2
  86. package/dist/causal-trajectory-graph.d.ts +1 -1
  87. package/dist/causal-trajectory.js +1 -1
  88. package/dist/{chunk-LEPOP46W.js → chunk-227UFSEQ.js} +4 -4
  89. package/dist/{chunk-GIBMDSJ2.js → chunk-27P5YVDU.js} +2 -2
  90. package/dist/{chunk-2SA56WMI.js → chunk-2LTDWSR6.js} +4 -4
  91. package/dist/{chunk-OWHERGF2.js → chunk-2NLLXCJG.js} +2 -2
  92. package/dist/{chunk-YTSNAUXN.js → chunk-3F2LKUMU.js} +22 -8
  93. package/dist/chunk-3F2LKUMU.js.map +1 -0
  94. package/dist/chunk-3QL24R5Y.js +9 -0
  95. package/dist/chunk-3QL24R5Y.js.map +1 -0
  96. package/dist/chunk-4RNZMRAV.js +60 -0
  97. package/dist/chunk-4RNZMRAV.js.map +1 -0
  98. package/dist/{chunk-6U7F52DE.js → chunk-4XHR3I67.js} +60 -60
  99. package/dist/chunk-5IVLTFOV.js +65 -0
  100. package/dist/chunk-5IVLTFOV.js.map +1 -0
  101. package/dist/{chunk-2EUVEDF5.js → chunk-5XA7PQ5I.js} +2 -2
  102. package/dist/{chunk-ALSGMEJR.js → chunk-65ZPVYTA.js} +7 -7
  103. package/dist/{chunk-5VQJBH2G.js → chunk-6TAUHL33.js} +2 -2
  104. package/dist/{chunk-HUHX2OCX.js → chunk-7DRETLP5.js} +1 -1
  105. package/dist/chunk-7DRETLP5.js.map +1 -0
  106. package/dist/{chunk-RGIWINDN.js → chunk-7G5MH4NT.js} +30 -30
  107. package/dist/{chunk-WVO4G37W.js → chunk-7TEZUUGM.js} +3 -3
  108. package/dist/{chunk-MJCGLM25.js → chunk-7VUAG236.js} +5 -5
  109. package/dist/{chunk-M3C2V3PV.js → chunk-AJEMDQNA.js} +12 -12
  110. package/dist/{chunk-RKNJBZ55.js → chunk-AU7Q3LSC.js} +7 -7
  111. package/dist/{chunk-ACXPX4AG.js → chunk-BR2K43MK.js} +2 -2
  112. package/dist/{chunk-IYZ5K7MU.js → chunk-BUE5E2HL.js} +4 -187
  113. package/dist/chunk-BUE5E2HL.js.map +1 -0
  114. package/dist/{chunk-CZRYLSSW.js → chunk-BUGVGH4N.js} +2 -2
  115. package/dist/{chunk-YTQNQ4KB.js → chunk-C4VQMFVM.js} +3 -3
  116. package/dist/{chunk-ZPSVBSOF.js → chunk-CIVDJD6P.js} +3 -3
  117. package/dist/{chunk-K5GB36ME.js → chunk-CZDOT5I2.js} +2 -2
  118. package/dist/{chunk-VI2JQPNQ.js → chunk-E4PWACUN.js} +2 -2
  119. package/dist/{chunk-D2ANTDGO.js → chunk-E6BMSH7U.js} +2 -2
  120. package/dist/{chunk-P5PXWTW7.js → chunk-EJCAV3QZ.js} +3 -3
  121. package/dist/{chunk-CKMO4RDY.js → chunk-EMDLM3LW.js} +4 -4
  122. package/dist/chunk-ER7W6H4T.js +112 -0
  123. package/dist/chunk-ER7W6H4T.js.map +1 -0
  124. package/dist/{chunk-6FUPCJUL.js → chunk-FI4F5X2V.js} +54 -54
  125. package/dist/chunk-FI4F5X2V.js.map +1 -0
  126. package/dist/{chunk-LGHKJABJ.js → chunk-GOUILH55.js} +40 -18
  127. package/dist/chunk-GOUILH55.js.map +1 -0
  128. package/dist/{chunk-G5R3D5UP.js → chunk-GTTAHHD3.js} +2 -2
  129. package/dist/{chunk-H5CPS5JP.js → chunk-H36LJIPD.js} +3 -3
  130. package/dist/{chunk-AITCS2RC.js → chunk-IJ7HK452.js} +4 -4
  131. package/dist/{chunk-D3LMYTBV.js → chunk-J7WZUL2K.js} +9 -9
  132. package/dist/{chunk-5W4ZLBEZ.js → chunk-JCFTIQBR.js} +2 -2
  133. package/dist/{chunk-XOZ4ALGB.js → chunk-KE353EWI.js} +3 -3
  134. package/dist/{chunk-W5EG6LE3.js → chunk-KIT6M7EB.js} +3 -3
  135. package/dist/{chunk-5W7CTZ2E.js → chunk-KQAFEZQX.js} +4 -4
  136. package/dist/{chunk-Z54EM5YZ.js → chunk-MAXVH44E.js} +7 -7
  137. package/dist/{chunk-WZFAPHIK.js → chunk-MU7ZHSZE.js} +2 -2
  138. package/dist/chunk-N5Z4EVOR.js +123 -0
  139. package/dist/chunk-N5Z4EVOR.js.map +1 -0
  140. package/dist/{chunk-66772WBP.js → chunk-NFXQJHJD.js} +5 -5
  141. package/dist/{chunk-AZ5BTEKX.js → chunk-NQUF7XKR.js} +2 -2
  142. package/dist/{chunk-W4FBGYGK.js → chunk-NRV4Y3PM.js} +1 -1
  143. package/dist/{chunk-NHWB6HG2.js → chunk-NYCGIQRA.js} +2 -2
  144. package/dist/{chunk-4WKA6I65.js → chunk-OGCNZPKX.js} +1119 -309
  145. package/dist/chunk-OGCNZPKX.js.map +1 -0
  146. package/dist/{chunk-QJAQNXWI.js → chunk-ONHRRJZM.js} +6 -6
  147. package/dist/{chunk-FDAMS4PK.js → chunk-PNPOWBGC.js} +2 -2
  148. package/dist/{chunk-IC6CBHCA.js → chunk-QGENAYVS.js} +2 -2
  149. package/dist/{chunk-GBJ4RDFR.js → chunk-QIHIHZYC.js} +66 -91
  150. package/dist/chunk-QIHIHZYC.js.map +1 -0
  151. package/dist/{chunk-PUS63Q3G.js → chunk-RUYJ7TWU.js} +517 -2011
  152. package/dist/chunk-RUYJ7TWU.js.map +1 -0
  153. package/dist/{chunk-4A6YGWQN.js → chunk-TL4TO3EA.js} +115 -120
  154. package/dist/chunk-TL4TO3EA.js.map +1 -0
  155. package/dist/{chunk-SPJXKAVF.js → chunk-U52AKICI.js} +14 -13
  156. package/dist/chunk-U52AKICI.js.map +1 -0
  157. package/dist/chunk-ULARSG5Z.js +203 -0
  158. package/dist/chunk-ULARSG5Z.js.map +1 -0
  159. package/dist/{chunk-62U4J2GN.js → chunk-UR77VKF7.js} +2 -2
  160. package/dist/{chunk-JCBWCYEJ.js → chunk-VANLTS5F.js} +2 -2
  161. package/dist/{chunk-4Z4XNEWZ.js → chunk-VCD4PSK2.js} +56 -12
  162. package/dist/chunk-VCD4PSK2.js.map +1 -0
  163. package/dist/{chunk-RMMVQQA6.js → chunk-WDISJRMG.js} +2 -2
  164. package/dist/{chunk-B6JDYXL7.js → chunk-WWUVONGW.js} +7 -1
  165. package/dist/chunk-WWUVONGW.js.map +1 -0
  166. package/dist/{chunk-UVYI6VIX.js → chunk-X7Y7WX73.js} +1 -1
  167. package/dist/{chunk-TH2LSRMG.js → chunk-XHDIB4T4.js} +2 -2
  168. package/dist/{chunk-CVILPI77.js → chunk-XOQSEF7X.js} +6 -6
  169. package/dist/{chunk-LBOD4U5B.js → chunk-YFOMN2II.js} +6 -6
  170. package/dist/{chunk-RPW2NOU6.js → chunk-YIAA2X3D.js} +41 -1
  171. package/dist/chunk-YIAA2X3D.js.map +1 -0
  172. package/dist/chunk-YPC7W6GA.js +1604 -0
  173. package/dist/chunk-YPC7W6GA.js.map +1 -0
  174. package/dist/{chunk-I5NLEENJ.js → chunk-Z4SWV4VW.js} +3 -3
  175. package/dist/{chunk-PHWUFPCO.js → chunk-ZCPP5OW6.js} +61 -53
  176. package/dist/chunk-ZCPP5OW6.js.map +1 -0
  177. package/dist/{cli-C4GbETPC.d.ts → cli-BptUDTtp.d.ts} +5 -5
  178. package/dist/cli.d.ts +12 -12
  179. package/dist/cli.js +91 -84
  180. package/dist/compounding/engine.d.ts +2 -2
  181. package/dist/compounding/engine.js +14 -14
  182. package/dist/compounding/preference-consolidator.d.ts +1 -1
  183. package/dist/compression-optimizer.d.ts +1 -1
  184. package/dist/config.d.ts +1 -1
  185. package/dist/config.js +1 -1
  186. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  187. package/dist/connectors/codex-materialize-runner.js +14 -14
  188. package/dist/connectors/codex-materialize.d.ts +1 -1
  189. package/dist/connectors/index.d.ts +1 -1
  190. package/dist/connectors/index.js +17 -17
  191. package/dist/consolidation-provenance-check.d.ts +2 -2
  192. package/dist/consolidation-provenance-check.js +5 -5
  193. package/dist/consolidation-undo.d.ts +2 -2
  194. package/dist/consolidation-undo.js +3 -3
  195. package/dist/contradiction/index.d.ts +2 -2
  196. package/dist/contradiction/index.js +4 -4
  197. package/dist/conversation-index/backend.d.ts +1 -1
  198. package/dist/conversation-index/backend.js +2 -2
  199. package/dist/conversation-index/chunker.d.ts +1 -1
  200. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  201. package/dist/conversation-index/indexer.d.ts +1 -1
  202. package/dist/conversation-index/search.d.ts +1 -1
  203. package/dist/corpus-watermark.d.ts +1 -1
  204. package/dist/corpus-watermark.js +26 -26
  205. package/dist/day-summary.d.ts +1 -1
  206. package/dist/delinearize.d.ts +1 -1
  207. package/dist/direct-answer-wiring.d.ts +1 -1
  208. package/dist/direct-answer.d.ts +1 -1
  209. package/dist/embedding-fallback.d.ts +1 -1
  210. package/dist/enrichment/index.d.ts +1 -1
  211. package/dist/entity-retrieval.d.ts +2 -2
  212. package/dist/entity-retrieval.js +14 -14
  213. package/dist/entity-schema.d.ts +1 -1
  214. package/dist/explicit-capture.d.ts +8 -8
  215. package/dist/extraction-error-classification.d.ts +1 -1
  216. package/dist/extraction-faithfulness.d.ts +1 -1
  217. package/dist/extraction-judge-telemetry.d.ts +1 -1
  218. package/dist/extraction-judge-training.d.ts +1 -1
  219. package/dist/extraction-judge.d.ts +1 -1
  220. package/dist/extraction-liveness.d.ts +1 -1
  221. package/dist/extraction-source-grounding-rules.d.ts +1 -1
  222. package/dist/extraction-source-grounding.d.ts +15 -2
  223. package/dist/extraction-source-grounding.js +10 -1
  224. package/dist/extraction.d.ts +2 -15
  225. package/dist/extraction.js +5 -4
  226. package/dist/fallback-llm.d.ts +1 -1
  227. package/dist/graph-dashboard-diff.d.ts +1 -1
  228. package/dist/graph-dashboard-key.d.ts +1 -1
  229. package/dist/graph-dashboard-parser.d.ts +1 -1
  230. package/dist/graph-edge-reinforcement.d.ts +1 -1
  231. package/dist/graph-snapshot.d.ts +1 -1
  232. package/dist/graph.d.ts +1 -1
  233. package/dist/importance.d.ts +1 -1
  234. package/dist/importers/index.d.ts +1 -1
  235. package/dist/in-flight-reads.d.ts +1 -1
  236. package/dist/index.d.ts +19 -19
  237. package/dist/index.js +215 -207
  238. package/dist/intent.d.ts +1 -1
  239. package/dist/lcm/engine.d.ts +1 -1
  240. package/dist/lcm/engine.js +3 -3
  241. package/dist/lcm/index.d.ts +1 -1
  242. package/dist/lcm/index.js +6 -6
  243. package/dist/lcm/tools.d.ts +1 -1
  244. package/dist/lifecycle.d.ts +1 -1
  245. package/dist/live-connectors-runner.d.ts +1 -1
  246. package/dist/local-llm-helpers.d.ts +7 -0
  247. package/dist/local-llm-helpers.js +16 -0
  248. package/dist/local-llm-helpers.js.map +1 -0
  249. package/dist/local-llm.d.ts +3 -6
  250. package/dist/local-llm.js +2 -1
  251. package/dist/local-model-endpoint.d.ts +1 -1
  252. package/dist/maintenance/memory-governance.d.ts +1 -1
  253. package/dist/maintenance/memory-governance.js +14 -14
  254. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -2
  255. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +14 -14
  256. package/dist/maintenance/rebuild-memory-projection.d.ts +2 -2
  257. package/dist/maintenance/rebuild-memory-projection.js +15 -15
  258. package/dist/{maintenance-CL30NWtc.d.ts → maintenance-b6f92bRz.d.ts} +3 -3
  259. package/dist/mcp-memory-inspector-app.d.ts +10 -10
  260. package/dist/memory-action-policy.d.ts +1 -1
  261. package/dist/memory-cache.d.ts +1 -1
  262. package/dist/memory-corpus-version.js +2 -2
  263. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  264. package/dist/memory-projection-store.d.ts +1 -1
  265. package/dist/memory-provenance.d.ts +1 -1
  266. package/dist/memory-worth-outcomes.d.ts +2 -2
  267. package/dist/models-json.d.ts +1 -1
  268. package/dist/namespaces/migrate.d.ts +3 -3
  269. package/dist/namespaces/migrate.js +24 -24
  270. package/dist/namespaces/principal.d.ts +1 -1
  271. package/dist/namespaces/search.d.ts +1 -1
  272. package/dist/namespaces/search.js +9 -9
  273. package/dist/namespaces/storage.d.ts +3 -3
  274. package/dist/namespaces/storage.js +14 -14
  275. package/dist/native-knowledge.d.ts +1 -1
  276. package/dist/offline-sync-impression-drain.d.ts +1 -1
  277. package/dist/offline-sync-impression-drain.js +6 -5
  278. package/dist/operator-doctor-corpus.d.ts +1 -1
  279. package/dist/operator-doctor-corpus.js +29 -29
  280. package/dist/operator-doctor-replica.d.ts +1 -1
  281. package/dist/operator-doctor-replica.js +3 -3
  282. package/dist/operator-toolkit.d.ts +3 -3
  283. package/dist/operator-toolkit.js +38 -37
  284. package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
  285. package/dist/orchestration/maintenance.d.ts +4 -4
  286. package/dist/orchestration/maintenance.js +22 -21
  287. package/dist/{orchestrator-CKTCRwWV.d.ts → orchestrator-3uGxC1qO.d.ts} +72 -34
  288. package/dist/orchestrator.d.ts +8 -8
  289. package/dist/orchestrator.js +167 -159
  290. package/dist/page-versioning.js +3 -3
  291. package/dist/patterns-cli.d.ts +1 -1
  292. package/dist/{pipeline-B7wj4rRZ.d.ts → pipeline-DepuNr-m.d.ts} +1 -1
  293. package/dist/policy-runtime.d.ts +1 -1
  294. package/dist/proactive-contention.d.ts +1 -1
  295. package/dist/provenance.d.ts +1 -1
  296. package/dist/{qmd-q9tg4dHp.d.ts → qmd-Dalr3Jby.d.ts} +1 -1
  297. package/dist/qmd-preflight.d.ts +2 -2
  298. package/dist/qmd-recall-cache.d.ts +1 -1
  299. package/dist/qmd.d.ts +2 -2
  300. package/dist/qmd.js +4 -4
  301. package/dist/recall-concurrency-config.d.ts +1 -1
  302. package/dist/recall-disclosure-escalation.d.ts +1 -1
  303. package/dist/recall-explain-renderer.d.ts +1 -1
  304. package/dist/recall-explain-renderer.js +3 -3
  305. package/dist/recall-memory-map.d.ts +1 -1
  306. package/dist/recall-planner-llm.d.ts +1 -1
  307. package/dist/recall-state.d.ts +1 -1
  308. package/dist/recall-tag-filter.d.ts +1 -1
  309. package/dist/recall-timings.d.ts +1 -1
  310. package/dist/recall-xray-cli.d.ts +1 -1
  311. package/dist/recall-xray-cli.js +4 -4
  312. package/dist/recall-xray-renderer.d.ts +1 -1
  313. package/dist/recall-xray-renderer.js +3 -3
  314. package/dist/recall-xray.d.ts +1 -1
  315. package/dist/recall-xray.js +2 -2
  316. package/dist/replay/normalizers/chatgpt.d.ts +1 -1
  317. package/dist/replay/normalizers/claude.d.ts +1 -1
  318. package/dist/replay/normalizers/openclaw.d.ts +1 -1
  319. package/dist/replay/normalizers/shared.d.ts +1 -1
  320. package/dist/replay/runner.d.ts +1 -1
  321. package/dist/replay/types.d.ts +1 -1
  322. package/dist/replica-divergence.d.ts +1 -1
  323. package/dist/replica-divergence.js +2 -2
  324. package/dist/replica-peers-config.d.ts +1 -1
  325. package/dist/resolve-auth-token.d.ts +1 -1
  326. package/dist/resume-bundles.js +1 -1
  327. package/dist/retrieval-agents.d.ts +2 -2
  328. package/dist/retrieval-tiers.d.ts +1 -1
  329. package/dist/routing/engine.d.ts +1 -1
  330. package/dist/routing/store.d.ts +1 -1
  331. package/dist/salvage-envelope.d.ts +1 -1
  332. package/dist/{scope-profiles-CWDyglPM.d.ts → scope-profiles-BpiM5hTU.d.ts} +1 -1
  333. package/dist/search/embed-helper.d.ts +1 -1
  334. package/dist/search/factory.d.ts +1 -1
  335. package/dist/search/factory.js +8 -8
  336. package/dist/search/index.d.ts +1 -1
  337. package/dist/search/index.js +12 -12
  338. package/dist/search/lancedb-backend.d.ts +1 -1
  339. package/dist/search/meilisearch-backend.d.ts +1 -1
  340. package/dist/search/noop-backend.d.ts +1 -1
  341. package/dist/search/orama-backend.d.ts +1 -1
  342. package/dist/search/port.d.ts +1 -1
  343. package/dist/search/remote-backend.d.ts +1 -1
  344. package/dist/{semantic-consolidation-BUE3deLn.d.ts → semantic-consolidation-CMtVrf9f.d.ts} +1 -1
  345. package/dist/semantic-consolidation.d.ts +2 -2
  346. package/dist/semantic-consolidation.js +16 -16
  347. package/dist/semantic-rule-promotion.js +14 -14
  348. package/dist/semantic-rule-verifier.d.ts +1 -1
  349. package/dist/semantic-rule-verifier.js +14 -14
  350. package/dist/{service-CXgM0bQG.d.ts → service-DuAxwSgg.d.ts} +2 -2
  351. package/dist/session-observer-bands.d.ts +1 -1
  352. package/dist/session-observer-state.d.ts +1 -1
  353. package/dist/shared-context/manager.d.ts +1 -1
  354. package/dist/signal.d.ts +1 -1
  355. package/dist/{storage-DysJq-XH.d.ts → storage-CF0Ih8GP.d.ts} +1 -1
  356. package/dist/storage.d.ts +2 -2
  357. package/dist/storage.js +13 -13
  358. package/dist/summarizer.d.ts +1 -1
  359. package/dist/summarizer.js +3 -2
  360. package/dist/summary-snapshot.d.ts +1 -1
  361. package/dist/temporal-supersession.d.ts +2 -2
  362. package/dist/temporal-timeline-recall.d.ts +1 -1
  363. package/dist/temporal-validity.d.ts +1 -1
  364. package/dist/threading.d.ts +1 -1
  365. package/dist/tier-migration.d.ts +2 -2
  366. package/dist/tier-routing.d.ts +1 -1
  367. package/dist/tokens.js +2 -2
  368. package/dist/topics.d.ts +1 -1
  369. package/dist/transcript.d.ts +1 -1
  370. package/dist/transfer/backup.js +2 -2
  371. package/dist/transfer/capsule-export.js +2 -2
  372. package/dist/transfer/capsule-import.js +5 -5
  373. package/dist/trust-score-stage.d.ts +1 -1
  374. package/dist/trust-score.d.ts +1 -1
  375. package/dist/{types-aPPzhnjT.d.ts → types-BpaYvJ6v.d.ts} +22 -2
  376. package/dist/types.d.ts +1 -1
  377. package/dist/types.js +1 -1
  378. package/dist/utility-runtime.d.ts +1 -1
  379. package/dist/verified-recall.js +14 -14
  380. package/dist/write-envelope.d.ts +1 -1
  381. package/package.json +2 -2
  382. package/src/access-boundary.ts +3 -0
  383. package/src/access-cli.test.ts +93 -0
  384. package/src/access-cli.ts +56 -2
  385. package/src/access-extraction-force-flush.ts +177 -0
  386. package/src/access-http-extraction-force-flush.test.ts +132 -0
  387. package/src/access-http-lcm-compaction.ts +99 -22
  388. package/src/access-http-lifecycle-flush.ts +81 -0
  389. package/src/access-http.test.ts +227 -0
  390. package/src/access-http.ts +33 -40
  391. package/src/access-mcp-output-schemas.ts +6 -0
  392. package/src/access-mcp.test.ts +40 -0
  393. package/src/access-mcp.ts +32 -1
  394. package/src/access-observe-helpers.ts +180 -0
  395. package/src/access-observe-write-surface.ts +78 -19
  396. package/src/access-operations-batch.ts +2 -1
  397. package/src/access-schema-pi.test.ts +17 -0
  398. package/src/access-schema.ts +28 -11
  399. package/src/access-service-helpers.ts +46 -0
  400. package/src/access-service-observe-lcm-parity.test.ts +781 -31
  401. package/src/access-service-observe-scope.test.ts +88 -0
  402. package/src/access-service.ts +46 -128
  403. package/src/access-surface-catalog.test.ts +32 -0
  404. package/src/access-surface-catalog.ts +2 -0
  405. package/src/buffer-session.test.ts +148 -0
  406. package/src/buffer-turn-helpers.ts +152 -0
  407. package/src/buffer.ts +126 -201
  408. package/src/correction/correction-access-wiring.ts +79 -27
  409. package/src/correction/correction-executor.test.ts +542 -1
  410. package/src/correction/correction-executor.ts +309 -89
  411. package/src/correction/correction-planner.test.ts +35 -1
  412. package/src/correction/correction-planner.ts +50 -3
  413. package/src/correction/correction-service.ts +12 -7
  414. package/src/correction/correction-storage-integration.test.ts +172 -1
  415. package/src/correction/passive-capture.test.ts +35 -0
  416. package/src/correction/passive-capture.ts +17 -3
  417. package/src/extraction-source-grounding.ts +55 -1
  418. package/src/extraction-timeout.test.ts +51 -0
  419. package/src/extraction.ts +64 -90
  420. package/src/local-llm-headers-timeout.test.ts +48 -0
  421. package/src/local-llm-helpers.ts +58 -0
  422. package/src/local-llm.ts +62 -58
  423. package/src/orchestration/extraction-run-helpers.ts +309 -0
  424. package/src/orchestration/extraction-run.test.ts +350 -7
  425. package/src/orchestration/extraction-run.ts +327 -250
  426. package/src/orchestration/recall-internal-deps.ts +385 -0
  427. package/src/orchestration/recall-internal.ts +16 -375
  428. package/src/orchestration/session-context.ts +193 -18
  429. package/src/orchestration/turn-ingestion.ts +61 -11
  430. package/src/orchestrator-flush.test.ts +511 -5
  431. package/src/orchestrator.ts +8 -6
  432. package/src/types.ts +2 -2
  433. package/dist/chunk-4A6YGWQN.js.map +0 -1
  434. package/dist/chunk-4WKA6I65.js.map +0 -1
  435. package/dist/chunk-4Z4XNEWZ.js.map +0 -1
  436. package/dist/chunk-6FUPCJUL.js.map +0 -1
  437. package/dist/chunk-B6JDYXL7.js.map +0 -1
  438. package/dist/chunk-GBJ4RDFR.js.map +0 -1
  439. package/dist/chunk-HUHX2OCX.js.map +0 -1
  440. package/dist/chunk-IYZ5K7MU.js.map +0 -1
  441. package/dist/chunk-LGHKJABJ.js.map +0 -1
  442. package/dist/chunk-PHWUFPCO.js.map +0 -1
  443. package/dist/chunk-PUS63Q3G.js.map +0 -1
  444. package/dist/chunk-RPW2NOU6.js.map +0 -1
  445. package/dist/chunk-SPJXKAVF.js.map +0 -1
  446. package/dist/chunk-YTSNAUXN.js.map +0 -1
  447. /package/dist/{capsule-crypto-GWVG7LGC.js.map → access-extraction-force-flush.js.map} +0 -0
  448. /package/dist/{capsule-merge-5KKJQBWQ.js.map → capsule-merge-2H2IUTBT.js.map} +0 -0
  449. /package/dist/{chunk-LEPOP46W.js.map → chunk-227UFSEQ.js.map} +0 -0
  450. /package/dist/{chunk-GIBMDSJ2.js.map → chunk-27P5YVDU.js.map} +0 -0
  451. /package/dist/{chunk-2SA56WMI.js.map → chunk-2LTDWSR6.js.map} +0 -0
  452. /package/dist/{chunk-OWHERGF2.js.map → chunk-2NLLXCJG.js.map} +0 -0
  453. /package/dist/{chunk-6U7F52DE.js.map → chunk-4XHR3I67.js.map} +0 -0
  454. /package/dist/{chunk-2EUVEDF5.js.map → chunk-5XA7PQ5I.js.map} +0 -0
  455. /package/dist/{chunk-ALSGMEJR.js.map → chunk-65ZPVYTA.js.map} +0 -0
  456. /package/dist/{chunk-5VQJBH2G.js.map → chunk-6TAUHL33.js.map} +0 -0
  457. /package/dist/{chunk-RGIWINDN.js.map → chunk-7G5MH4NT.js.map} +0 -0
  458. /package/dist/{chunk-WVO4G37W.js.map → chunk-7TEZUUGM.js.map} +0 -0
  459. /package/dist/{chunk-MJCGLM25.js.map → chunk-7VUAG236.js.map} +0 -0
  460. /package/dist/{chunk-M3C2V3PV.js.map → chunk-AJEMDQNA.js.map} +0 -0
  461. /package/dist/{chunk-RKNJBZ55.js.map → chunk-AU7Q3LSC.js.map} +0 -0
  462. /package/dist/{chunk-ACXPX4AG.js.map → chunk-BR2K43MK.js.map} +0 -0
  463. /package/dist/{chunk-CZRYLSSW.js.map → chunk-BUGVGH4N.js.map} +0 -0
  464. /package/dist/{chunk-YTQNQ4KB.js.map → chunk-C4VQMFVM.js.map} +0 -0
  465. /package/dist/{chunk-ZPSVBSOF.js.map → chunk-CIVDJD6P.js.map} +0 -0
  466. /package/dist/{chunk-K5GB36ME.js.map → chunk-CZDOT5I2.js.map} +0 -0
  467. /package/dist/{chunk-VI2JQPNQ.js.map → chunk-E4PWACUN.js.map} +0 -0
  468. /package/dist/{chunk-D2ANTDGO.js.map → chunk-E6BMSH7U.js.map} +0 -0
  469. /package/dist/{chunk-P5PXWTW7.js.map → chunk-EJCAV3QZ.js.map} +0 -0
  470. /package/dist/{chunk-CKMO4RDY.js.map → chunk-EMDLM3LW.js.map} +0 -0
  471. /package/dist/{chunk-G5R3D5UP.js.map → chunk-GTTAHHD3.js.map} +0 -0
  472. /package/dist/{chunk-H5CPS5JP.js.map → chunk-H36LJIPD.js.map} +0 -0
  473. /package/dist/{chunk-AITCS2RC.js.map → chunk-IJ7HK452.js.map} +0 -0
  474. /package/dist/{chunk-D3LMYTBV.js.map → chunk-J7WZUL2K.js.map} +0 -0
  475. /package/dist/{chunk-5W4ZLBEZ.js.map → chunk-JCFTIQBR.js.map} +0 -0
  476. /package/dist/{chunk-XOZ4ALGB.js.map → chunk-KE353EWI.js.map} +0 -0
  477. /package/dist/{chunk-W5EG6LE3.js.map → chunk-KIT6M7EB.js.map} +0 -0
  478. /package/dist/{chunk-5W7CTZ2E.js.map → chunk-KQAFEZQX.js.map} +0 -0
  479. /package/dist/{chunk-Z54EM5YZ.js.map → chunk-MAXVH44E.js.map} +0 -0
  480. /package/dist/{chunk-WZFAPHIK.js.map → chunk-MU7ZHSZE.js.map} +0 -0
  481. /package/dist/{chunk-66772WBP.js.map → chunk-NFXQJHJD.js.map} +0 -0
  482. /package/dist/{chunk-AZ5BTEKX.js.map → chunk-NQUF7XKR.js.map} +0 -0
  483. /package/dist/{chunk-W4FBGYGK.js.map → chunk-NRV4Y3PM.js.map} +0 -0
  484. /package/dist/{chunk-NHWB6HG2.js.map → chunk-NYCGIQRA.js.map} +0 -0
  485. /package/dist/{chunk-QJAQNXWI.js.map → chunk-ONHRRJZM.js.map} +0 -0
  486. /package/dist/{chunk-FDAMS4PK.js.map → chunk-PNPOWBGC.js.map} +0 -0
  487. /package/dist/{chunk-IC6CBHCA.js.map → chunk-QGENAYVS.js.map} +0 -0
  488. /package/dist/{chunk-62U4J2GN.js.map → chunk-UR77VKF7.js.map} +0 -0
  489. /package/dist/{chunk-JCBWCYEJ.js.map → chunk-VANLTS5F.js.map} +0 -0
  490. /package/dist/{chunk-RMMVQQA6.js.map → chunk-WDISJRMG.js.map} +0 -0
  491. /package/dist/{chunk-UVYI6VIX.js.map → chunk-X7Y7WX73.js.map} +0 -0
  492. /package/dist/{chunk-TH2LSRMG.js.map → chunk-XHDIB4T4.js.map} +0 -0
  493. /package/dist/{chunk-CVILPI77.js.map → chunk-XOQSEF7X.js.map} +0 -0
  494. /package/dist/{chunk-LBOD4U5B.js.map → chunk-YFOMN2II.js.map} +0 -0
  495. /package/dist/{chunk-I5NLEENJ.js.map → chunk-Z4SWV4VW.js.map} +0 -0
@@ -21,6 +21,7 @@
21
21
  */
22
22
 
23
23
  import path from "node:path";
24
+ import { throwIfAborted } from "../abort-error.js";
24
25
  import { composeMemoryEnvelope, isMemoryCategory } from "../write-envelope.js";
25
26
  import { log } from "../logger.js";
26
27
  import { createHash } from "node:crypto";
@@ -352,23 +353,24 @@ function makeExecutorDeps(
352
353
  opts: { biTemporalEnabled: boolean },
353
354
  ): ExecutorDeps {
354
355
  return {
355
- getMemory: async (namespace, memoryId) => getExecutorMemory(wiring, namespace, memoryId),
356
- writeReplacement: async (namespace, draft) =>
357
- writeReplacementMemory(wiring, namespace, draft),
358
- applyEdit: async (namespace, memoryId, patch) =>
359
- applyEditMemory(wiring, namespace, memoryId, patch),
360
- retireMemory: async (namespace, memoryId, retireOpts) =>
361
- retireMemoryFn(wiring, namespace, memoryId, retireOpts),
362
- rescopeMemory: async (namespace, memoryId, toNamespace) =>
363
- rescopeMemoryFn(wiring, namespace, memoryId, toNamespace),
364
- appendTombstone: async (namespace, input) =>
365
- appendTombstoneFn(wiring, namespace, input),
366
- registerRedactionRule: async (namespace, pattern) =>
367
- registerRedactionRuleFn(wiring, namespace, pattern),
368
- appendAuditRecord: async (namespace, record) =>
369
- appendAuditRecordFn(wiring, namespace, record),
370
- propagate: async (namespace, touchedMemoryIds) =>
371
- propagateFn(wiring, namespace, touchedMemoryIds),
356
+ getMemory: async (namespace, memoryId, abortSignal) =>
357
+ getExecutorMemory(wiring, namespace, memoryId, abortSignal),
358
+ writeReplacement: async (namespace, draft, abortSignal) =>
359
+ writeReplacementMemory(wiring, namespace, draft, abortSignal),
360
+ applyEdit: async (namespace, memoryId, patch, abortSignal) =>
361
+ applyEditMemory(wiring, namespace, memoryId, patch, abortSignal),
362
+ retireMemory: async (namespace, memoryId, retireOpts, abortSignal) =>
363
+ retireMemoryFn(wiring, namespace, memoryId, retireOpts, abortSignal),
364
+ rescopeMemory: async (namespace, memoryId, toNamespace, abortSignal) =>
365
+ rescopeMemoryFn(wiring, namespace, memoryId, toNamespace, abortSignal),
366
+ appendTombstone: async (namespace, input, abortSignal) =>
367
+ appendTombstoneFn(wiring, namespace, input, abortSignal),
368
+ registerRedactionRule: async (namespace, pattern, abortSignal) =>
369
+ registerRedactionRuleFn(wiring, namespace, pattern, abortSignal),
370
+ appendAuditRecord: async (namespace, record, abortSignal) =>
371
+ appendAuditRecordFn(wiring, namespace, record, abortSignal),
372
+ propagate: async (namespace, touchedMemoryIds, abortSignal) =>
373
+ propagateFn(wiring, namespace, touchedMemoryIds, abortSignal),
372
374
  biTemporalEnabled: opts.biTemporalEnabled,
373
375
  now: () => new Date(),
374
376
  };
@@ -378,9 +380,13 @@ async function getExecutorMemory(
378
380
  wiring: CorrectionAccessWiring,
379
381
  namespace: string,
380
382
  memoryId: string,
383
+ abortSignal?: AbortSignal,
381
384
  ): Promise<ExecutorMemory | null> {
385
+ throwIfAborted(abortSignal, "correction apply aborted");
382
386
  const storage = await wiring.orchestrator.getStorage(namespace);
387
+ throwIfAborted(abortSignal, "correction apply aborted");
383
388
  const m = await storage.getMemoryById(memoryId);
389
+ throwIfAborted(abortSignal, "correction apply aborted");
384
390
  if (!m) return null;
385
391
  return toExecutorMemory(m);
386
392
  }
@@ -399,8 +405,11 @@ async function writeReplacementMemory(
399
405
  structuredAttributes?: Record<string, string>;
400
406
  supersedes?: string;
401
407
  },
408
+ abortSignal?: AbortSignal,
402
409
  ): Promise<string> {
410
+ throwIfAborted(abortSignal, "correction apply aborted");
403
411
  const storage = await wiring.orchestrator.getStorage(namespace);
412
+ throwIfAborted(abortSignal, "correction apply aborted");
404
413
  // writeMemory is the single storage chokepoint — catalog/dedup/reindex fire
405
414
  // here (rule 43). Tombstone blocking also fires here (#1579), so a
406
415
  // resurrected fact lands as pending_review rather than silently overwriting.
@@ -433,6 +442,7 @@ async function writeReplacementMemory(
433
442
  if (draftEnvelope.salvageNotes.length > 0) {
434
443
  log.warn(`correction write salvaged invalid fields: ${draftEnvelope.salvageNotes.join("; ")}`);
435
444
  }
445
+ throwIfAborted(abortSignal, "correction apply aborted");
436
446
  const { id, tombstoneBlocked } = await storage.writeSealedMemory(draftEnvelope, {
437
447
  ...(draft.observedAt ? { observedAt: draft.observedAt } : {}),
438
448
  ...(draft.supersedes ? { supersedes: draft.supersedes } : {}),
@@ -455,9 +465,13 @@ async function applyEditMemory(
455
465
  namespace: string,
456
466
  memoryId: string,
457
467
  patch: string,
468
+ abortSignal?: AbortSignal,
458
469
  ): Promise<string> {
470
+ throwIfAborted(abortSignal, "correction apply aborted");
459
471
  const storage = await wiring.orchestrator.getStorage(namespace);
472
+ throwIfAborted(abortSignal, "correction apply aborted");
460
473
  const existing = await storage.getMemoryById(memoryId);
474
+ throwIfAborted(abortSignal, "correction apply aborted");
461
475
  if (!existing) throw new CorrectionContractError(`memory not found for edit: ${memoryId}`);
462
476
  // Apply the patch by overwriting content through the storage chokepoint.
463
477
  // The StorageManager's writeMemoryFrontmatter snapshots the prior version
@@ -473,6 +487,7 @@ async function applyEditMemory(
473
487
  existing.frontmatter.category === "fact"
474
488
  ? computeContentHash(sanitizeMemoryContent(patch).text)
475
489
  : undefined;
490
+ throwIfAborted(abortSignal, "correction apply aborted");
476
491
  await storage.writeMemoryFrontmatter(
477
492
  { ...existing, content: patch },
478
493
  {
@@ -488,23 +503,20 @@ async function retireMemoryFn(
488
503
  namespace: string,
489
504
  memoryId: string,
490
505
  opts: { status: "superseded" | "retracted"; supersededBy?: string; validUntil?: string },
506
+ abortSignal?: AbortSignal,
491
507
  ): Promise<void> {
508
+ throwIfAborted(abortSignal, "correction apply aborted");
492
509
  const storage = await wiring.orchestrator.getStorage(namespace);
510
+ throwIfAborted(abortSignal, "correction apply aborted");
493
511
  const memory = await storage.getMemoryById(memoryId);
512
+ throwIfAborted(abortSignal, "correction apply aborted");
494
513
  if (!memory) throw new CorrectionContractError(`memory not found for retire: ${memoryId}`);
495
- // Map the correction-domain status to the storage-domain MemoryStatus.
496
- // `retracted` (a correction concept) becomes `forgotten` — the soft-delete
497
- // status that excludes the memory from recall/browse/attribution while
498
- // keeping a page-version snapshot for reversibility (#686). `superseded`
499
- // maps to itself.
500
514
  const storageStatus: MemoryStatus = opts.status === "retracted" ? "forgotten" : "superseded";
501
- // Flip status + stamp validUntil (when bi-temporal is on, #1578) +
502
- // link the superseder. writeMemoryFrontmatter is the chokepoint.
515
+ throwIfAborted(abortSignal, "correction apply aborted");
503
516
  await storage.writeMemoryFrontmatter(memory, {
504
517
  status: storageStatus,
505
518
  ...(opts.supersededBy ? { supersededBy: opts.supersededBy } : {}),
506
519
  ...(opts.status === "superseded" ? { supersededAt: new Date().toISOString() } : {}),
507
- // validUntil is the bi-temporal end; absent when the gate is off.
508
520
  ...(opts.validUntil ? { invalid_at: opts.validUntil } : {}),
509
521
  });
510
522
  }
@@ -514,11 +526,15 @@ async function rescopeMemoryFn(
514
526
  namespace: string,
515
527
  memoryId: string,
516
528
  toNamespace: string,
529
+ abortSignal?: AbortSignal,
517
530
  ): Promise<string> {
518
531
  // The destination namespace is re-authorized by the service before the
519
532
  // executor runs; here we perform the move atomically (write-then-unlink).
533
+ throwIfAborted(abortSignal, "correction apply aborted");
520
534
  const sourceStorage = await wiring.orchestrator.getStorage(namespace);
535
+ throwIfAborted(abortSignal, "correction apply aborted");
521
536
  const memory = await sourceStorage.getMemoryById(memoryId);
537
+ throwIfAborted(abortSignal, "correction apply aborted");
522
538
  if (!memory) throw new CorrectionContractError(`memory not found for rescope: ${memoryId}`);
523
539
  if (memory.frontmatter.status && memory.frontmatter.status !== "active") {
524
540
  // Don't copy a stale source: rescoping a superseded/retracted/archived
@@ -527,7 +543,9 @@ async function rescopeMemoryFn(
527
543
  `cannot rescope memory ${memoryId}: source is ${memory.frontmatter.status}, not active`,
528
544
  );
529
545
  }
546
+ throwIfAborted(abortSignal, "correction apply aborted");
530
547
  const destStorage = await wiring.orchestrator.getStorage(toNamespace);
548
+ throwIfAborted(abortSignal, "correction apply aborted");
531
549
  const fm = memory.frontmatter;
532
550
  // Strip the `[Attributes: …]` suffix writeMemory appended to the source body
533
551
  // (review thread Of0p6): we forward `structuredAttributes` separately, so
@@ -557,6 +575,7 @@ async function rescopeMemoryFn(
557
575
  if (rescopeEnvelope.salvageNotes.length > 0) {
558
576
  log.warn(`rescope write salvaged invalid fields: ${rescopeEnvelope.salvageNotes.join("; ")}`);
559
577
  }
578
+ throwIfAborted(abortSignal, "correction apply aborted");
560
579
  const { id: destId, tombstoneBlocked: destBlocked } = await destStorage.writeSealedMemory(rescopeEnvelope, {
561
580
  ...(fm.observedAt ? { observedAt: fm.observedAt } : {}),
562
581
  ...(fm.memoryKind ? { memoryKind: fm.memoryKind } : {}),
@@ -575,6 +594,8 @@ async function rescopeMemoryFn(
575
594
  // fails AFTER the destination write succeeded, compensate by archiving the
576
595
  // destination too so no duplicate ACTIVE fact remains, then re-throw so the
577
596
  // executor records the action as failed (review: rescope-duplicates-on-fail).
597
+ // Once the destination write resolves, cancellation cannot interrupt the
598
+ // source retirement or leave both memories active.
578
599
  try {
579
600
  await sourceStorage.writeMemoryFrontmatter(memory, {
580
601
  status: "archived",
@@ -609,8 +630,11 @@ async function appendTombstoneFn(
609
630
  supersessionKeys?: string[];
610
631
  contentHash?: string;
611
632
  },
633
+ abortSignal?: AbortSignal,
612
634
  ): Promise<string | null> {
635
+ throwIfAborted(abortSignal, "correction apply aborted");
613
636
  const storage = await wiring.orchestrator.getStorage(namespace);
637
+ throwIfAborted(abortSignal, "correction apply aborted");
614
638
  // storage.appendTombstone returns null for TWO reasons: tombstones disabled
615
639
  // (off = pre-feature behavior) OR a swallowed store error (it catches I/O
616
640
  // failures and returns null — review thread OgIqp). The executor writes the
@@ -637,7 +661,13 @@ async function appendTombstoneFn(
637
661
  : [undefined];
638
662
  const writtenIds: string[] = [];
639
663
  let firstId: string | null = null;
664
+ let committed = false;
640
665
  for (const key of keys) {
666
+ // Once one tombstone is durable, finish the complete tombstone set even
667
+ // if the caller aborts. The executor must retire the source after the
668
+ // tombstone commit or compensate it; returning an abort here would leave
669
+ // an active source behind a committed resurrection block.
670
+ if (!committed) throwIfAborted(abortSignal, "correction apply aborted");
641
671
  const result = await storage.appendTombstone({
642
672
  reason: input.reason,
643
673
  createdBy: "user_correction",
@@ -660,7 +690,10 @@ async function appendTombstoneFn(
660
690
  );
661
691
  }
662
692
  if (firstId === null) firstId = result;
663
- if (result) writtenIds.push(result);
693
+ if (result) {
694
+ writtenIds.push(result);
695
+ committed = true;
696
+ }
664
697
  }
665
698
  return firstId;
666
699
  }
@@ -669,12 +702,16 @@ async function registerRedactionRuleFn(
669
702
  wiring: CorrectionAccessWiring,
670
703
  namespace: string,
671
704
  pattern: string,
705
+ abortSignal?: AbortSignal,
672
706
  ): Promise<void> {
673
707
  // Persist the redaction rule under state/ so extraction consults it the
674
708
  // same way tombstones are consulted (route through the same chokepoint).
709
+ throwIfAborted(abortSignal, "correction apply aborted");
675
710
  const storage = await wiring.orchestrator.getStorage(namespace);
711
+ throwIfAborted(abortSignal, "correction apply aborted");
676
712
  const dir = path.join(storage.dir, "state", "corrections", "redaction-rules");
677
713
  await mkdir(dir, { recursive: true });
714
+ throwIfAborted(abortSignal, "correction apply aborted");
678
715
  // Idempotent: filename is a slug + short hash of the full pattern so
679
716
  // re-registering the same pattern overwrites rather than duplicates, while
680
717
  // distinct patterns that slug identically (e.g. "abc+def" vs "abc.def" →
@@ -683,11 +720,13 @@ async function registerRedactionRuleFn(
683
720
  const slugBase = pattern.replace(/[^a-zA-Z0-9]+/g, "-").slice(0, 48) || "rule";
684
721
  const patternHash = createHash("sha256").update(pattern).digest("hex").slice(0, 16);
685
722
  const slug = `${slugBase}-${patternHash}`;
723
+ throwIfAborted(abortSignal, "correction apply aborted");
686
724
  await writeFile(
687
725
  path.join(dir, `${slug}.json`),
688
726
  `${JSON.stringify({ pattern, namespace, createdAt: new Date().toISOString() })}\n`,
689
727
  "utf-8",
690
728
  );
729
+ throwIfAborted(abortSignal, "correction apply aborted");
691
730
  }
692
731
 
693
732
  async function appendAuditRecordFn(
@@ -699,13 +738,17 @@ async function appendAuditRecordFn(
699
738
  outcome: CorrectionOutcome;
700
739
  requestText: string;
701
740
  },
741
+ abortSignal?: AbortSignal,
702
742
  ): Promise<string> {
743
+ throwIfAborted(abortSignal, "correction apply aborted");
703
744
  const storage = await wiring.orchestrator.getStorage(namespace);
745
+ throwIfAborted(abortSignal, "correction apply aborted");
704
746
  // Corrections are themselves memories, searchable and namespaced (issue
705
747
  // #1580 design §4). Write a correction-category memory capturing the
706
748
  // plan + outcome as the audit trail.
707
749
  // Sealed-envelope write (issue #1989 PR4): system-built audit body —
708
750
  // strict compose; an invalid audit record is a code bug.
751
+ throwIfAborted(abortSignal, "correction apply aborted");
709
752
  const { id: id } = await storage.writeSealedMemory(
710
753
  composeMemoryEnvelope(
711
754
  {
@@ -718,6 +761,7 @@ async function appendAuditRecordFn(
718
761
  ),
719
762
  {},
720
763
  );
764
+ throwIfAborted(abortSignal, "correction apply aborted");
721
765
  return id;
722
766
  }
723
767
 
@@ -760,22 +804,27 @@ async function propagateFn(
760
804
  wiring: CorrectionAccessWiring,
761
805
  namespace: string,
762
806
  touchedMemoryIds: readonly string[],
807
+ abortSignal?: AbortSignal,
763
808
  ): Promise<void> {
764
809
  // Best-effort post-write propagation. The orchestrator's indexPersistedMemory
765
810
  // fires the QMD reindex for a touched file (checklist §31). A failure here
766
811
  // is non-fatal — the executor records it as a warning, never a failed action.
767
812
  for (const id of touchedMemoryIds) {
813
+ throwIfAborted(abortSignal, "correction apply aborted");
768
814
  try {
769
815
  // indexPersistedMemory is keyed by the namespace's storage, NOT the
770
816
  // default namespace (review thread: propagation-hardcodes-default-ns).
771
817
  const storage = await wiring.orchestrator.getStorage(namespace);
818
+ throwIfAborted(abortSignal, "correction apply aborted");
772
819
  const orchestrator = wiring.orchestrator as unknown as {
773
820
  indexPersistedMemory?(storage: unknown, memoryId: string): Promise<void>;
774
821
  };
775
822
  if (typeof orchestrator.indexPersistedMemory === "function") {
776
823
  await orchestrator.indexPersistedMemory(storage, id);
824
+ throwIfAborted(abortSignal, "correction apply aborted");
777
825
  }
778
- } catch {
826
+ } catch (err) {
827
+ if (abortSignal?.aborted) throw err;
779
828
  // Swallow — propagation is best-effort.
780
829
  }
781
830
  }
@@ -1032,4 +1081,7 @@ export {
1032
1081
  isEligibleCorrectionCandidate,
1033
1082
  applyEditMemory,
1034
1083
  appendTombstoneFn,
1084
+ retireMemoryFn,
1085
+ rescopeMemoryFn,
1086
+ writeReplacementMemory,
1035
1087
  };