@remnic/core 10.0.3 → 10.0.5

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 (410) hide show
  1. package/dist/access-admin-ops-surface.js +62 -62
  2. package/dist/access-authorization-probe.js +63 -63
  3. package/dist/access-boundary.js +62 -62
  4. package/dist/access-cli.d.ts.map +1 -1
  5. package/dist/access-cli.js +146 -139
  6. package/dist/access-cli.js.map +1 -1
  7. package/dist/access-extraction-force-flush.js +62 -62
  8. package/dist/access-http-briefing.js +63 -63
  9. package/dist/access-http-query.js +64 -64
  10. package/dist/access-http.d.ts.map +1 -1
  11. package/dist/access-http.js +86 -85
  12. package/dist/access-identity-continuity-surface.js +62 -62
  13. package/dist/access-lcm-surface.js +62 -62
  14. package/dist/access-mcp-correction-tools.d.ts +10 -0
  15. package/dist/access-mcp-correction-tools.d.ts.map +1 -0
  16. package/dist/access-mcp-correction-tools.js +8 -0
  17. package/dist/access-mcp.d.ts.map +1 -1
  18. package/dist/access-mcp.js +76 -75
  19. package/dist/access-namespace-preflight.js +62 -62
  20. package/dist/access-observe-write-category.js +5 -5
  21. package/dist/access-observe-write-surface.js +62 -62
  22. package/dist/access-offline-manifest.js +8 -8
  23. package/dist/access-operations-batch.js +65 -65
  24. package/dist/access-operations.d.ts +1 -0
  25. package/dist/access-operations.d.ts.map +1 -1
  26. package/dist/access-operations.js +72 -72
  27. package/dist/access-recall-concurrency.js +62 -62
  28. package/dist/access-recall-diagnostics.js +2 -2
  29. package/dist/access-recall-response.js +62 -62
  30. package/dist/access-recall-surface.js +62 -62
  31. package/dist/access-service.d.ts.map +1 -1
  32. package/dist/access-service.js +62 -62
  33. package/dist/access-surface-catalog.js +64 -64
  34. package/dist/active-recall.js +31 -30
  35. package/dist/active-recall.js.map +1 -1
  36. package/dist/adapters/index.js +7 -7
  37. package/dist/adapters/registry.js +3 -3
  38. package/dist/{auto-sync-PAWBFQWL.js → auto-sync-FN7E3OTO.js} +6 -6
  39. package/dist/briefing.js +26 -26
  40. package/dist/buffer.js +8 -8
  41. package/dist/causal-consolidation.js +26 -26
  42. package/dist/{chunk-YQSWNFZE.js → chunk-2CP577K6.js} +2 -2
  43. package/dist/{chunk-6JIHC5AS.js → chunk-37HCPM56.js} +78 -67
  44. package/dist/chunk-37HCPM56.js.map +1 -0
  45. package/dist/{chunk-345MEMRU.js → chunk-3OUGSOJP.js} +2 -2
  46. package/dist/{chunk-CHI37EHP.js → chunk-4CWUZBPF.js} +8 -6
  47. package/dist/chunk-4CWUZBPF.js.map +1 -0
  48. package/dist/{chunk-G2STTRYB.js → chunk-4D2YH47Z.js} +2 -2
  49. package/dist/{chunk-IXYIW3MZ.js → chunk-4K2H4KTR.js} +5 -5
  50. package/dist/{chunk-UVVSOSHL.js → chunk-52CQKST6.js} +53 -53
  51. package/dist/{chunk-H7BZBSP6.js → chunk-52II7PB6.js} +4 -4
  52. package/dist/{chunk-BLHPADUX.js → chunk-5BPXMAUP.js} +22 -78
  53. package/dist/chunk-5BPXMAUP.js.map +1 -0
  54. package/dist/{chunk-ZS7RK6H6.js → chunk-5BY3IA2U.js} +16 -53
  55. package/dist/chunk-5BY3IA2U.js.map +1 -0
  56. package/dist/{chunk-2QZFZNXO.js → chunk-5CQO6LVM.js} +2 -2
  57. package/dist/{chunk-NLDMTXWV.js → chunk-5LNPW7NE.js} +2 -2
  58. package/dist/{chunk-WHTMVTU4.js → chunk-5X4ZJESN.js} +2 -2
  59. package/dist/{chunk-WI37MWRZ.js → chunk-63UNVGZW.js} +5 -5
  60. package/dist/{chunk-G3T6YMBO.js → chunk-64S6X4IU.js} +7 -7
  61. package/dist/{chunk-CFCEJNOE.js → chunk-6KHF6PAB.js} +2 -2
  62. package/dist/{chunk-5GINB5LC.js → chunk-6MKLMEBE.js} +1 -1
  63. package/dist/{chunk-5GINB5LC.js.map → chunk-6MKLMEBE.js.map} +1 -1
  64. package/dist/{chunk-35A7GCHG.js → chunk-6T42L5FI.js} +2 -2
  65. package/dist/{chunk-JDOBIFBK.js → chunk-7CXL25AA.js} +2 -2
  66. package/dist/{chunk-YLBE6PLR.js → chunk-7IGMKQWK.js} +2 -2
  67. package/dist/{chunk-CSLK7BN6.js → chunk-7LYRFI5A.js} +2 -2
  68. package/dist/{chunk-IB63OVUB.js → chunk-AJ6ORARY.js} +6 -6
  69. package/dist/{chunk-CGOKNQDK.js → chunk-ANZXWOYD.js} +2 -2
  70. package/dist/{chunk-5QXMESS7.js → chunk-AXC7UTLM.js} +2 -2
  71. package/dist/{chunk-RFIJRZ4K.js → chunk-B657ZGDH.js} +2 -2
  72. package/dist/{chunk-AW4QUFQF.js → chunk-BTNNL7ZW.js} +3 -2
  73. package/dist/{chunk-AW4QUFQF.js.map → chunk-BTNNL7ZW.js.map} +1 -1
  74. package/dist/{chunk-MY7B3HYC.js → chunk-CLCMDKTB.js} +2 -2
  75. package/dist/{chunk-QPWUG2S3.js → chunk-CYEK6Z3P.js} +4 -4
  76. package/dist/{chunk-IHCYCE6D.js → chunk-DJMVSUPK.js} +4 -4
  77. package/dist/{chunk-HP4CU2ZA.js → chunk-DST7HRSG.js} +2 -2
  78. package/dist/{chunk-IIFFC3RL.js → chunk-EDR6CVWZ.js} +2 -2
  79. package/dist/{chunk-AUWMKDKL.js → chunk-EMVJU7WC.js} +2 -2
  80. package/dist/{chunk-O6AYMAPJ.js → chunk-ENNC3RZ6.js} +2 -2
  81. package/dist/{chunk-2JRB3Z5N.js → chunk-EP5WXE2G.js} +3 -3
  82. package/dist/{chunk-QLK3SL7Q.js → chunk-ETSJD5IV.js} +131 -12
  83. package/dist/chunk-ETSJD5IV.js.map +1 -0
  84. package/dist/chunk-EWMRFW3F.js +38 -0
  85. package/dist/chunk-EWMRFW3F.js.map +1 -0
  86. package/dist/{chunk-I2KEH2LS.js → chunk-FC6RCOIU.js} +2 -2
  87. package/dist/{chunk-OZVHLBH6.js → chunk-FLV7M7CT.js} +2 -2
  88. package/dist/{chunk-Q6GI7HEC.js → chunk-FRH2UC7Q.js} +2 -2
  89. package/dist/{chunk-3SL52JKD.js → chunk-FZVROZKC.js} +5 -5
  90. package/dist/{chunk-2EZB2DL5.js → chunk-GE6HETIF.js} +3 -3
  91. package/dist/{chunk-2DHJTJIY.js → chunk-GEGUBU3D.js} +2 -2
  92. package/dist/{chunk-6AA7XFMO.js → chunk-GF4H3B3R.js} +8 -8
  93. package/dist/{chunk-NGOZH7R5.js → chunk-GVUW5XK5.js} +311 -142
  94. package/dist/chunk-GVUW5XK5.js.map +1 -0
  95. package/dist/{chunk-ME2LMFHF.js → chunk-HPAOMYKM.js} +92 -92
  96. package/dist/{chunk-4NRZ7BRS.js → chunk-I25RINZK.js} +2 -2
  97. package/dist/{chunk-XG4XXI66.js → chunk-I25RQA65.js} +2 -2
  98. package/dist/chunk-I56MTWE7.js +80 -0
  99. package/dist/chunk-I56MTWE7.js.map +1 -0
  100. package/dist/{chunk-EJJMDLVB.js → chunk-IJ4FEGZR.js} +2 -2
  101. package/dist/{chunk-EUL3S3LE.js → chunk-J5WI4QRP.js} +4 -4
  102. package/dist/{chunk-LMMC55WM.js → chunk-JA54KIYD.js} +4 -4
  103. package/dist/{chunk-5FLFPTDK.js → chunk-JA72X46J.js} +2 -2
  104. package/dist/{chunk-6GU3TNJJ.js → chunk-JMF5Q4JY.js} +246 -49
  105. package/dist/chunk-JMF5Q4JY.js.map +1 -0
  106. package/dist/{chunk-IDSSDL4W.js → chunk-JXSYWTFK.js} +21 -4
  107. package/dist/{chunk-IDSSDL4W.js.map → chunk-JXSYWTFK.js.map} +1 -1
  108. package/dist/{chunk-NLYOOGZ7.js → chunk-KE5PWLI6.js} +3 -3
  109. package/dist/chunk-KIUVEMBI.js +49 -0
  110. package/dist/chunk-KIUVEMBI.js.map +1 -0
  111. package/dist/{chunk-4DDIWRT7.js → chunk-KQI2PKYP.js} +2 -2
  112. package/dist/{chunk-Y2ADLCB3.js → chunk-KSUOM3YU.js} +9 -9
  113. package/dist/{chunk-BTOHGPHC.js → chunk-KZEMFD6E.js} +3 -3
  114. package/dist/{chunk-NXVD46HT.js → chunk-L2VS27PZ.js} +4 -4
  115. package/dist/{chunk-MYYHACOW.js → chunk-L34W4W4I.js} +2 -2
  116. package/dist/{chunk-KRTIHXWC.js → chunk-L3PWXD73.js} +2 -2
  117. package/dist/{chunk-NQHSXHJP.js → chunk-L6GNS5GB.js} +2 -2
  118. package/dist/{chunk-44PBRUXB.js → chunk-M47Q6566.js} +2 -2
  119. package/dist/{chunk-E7FN5N5E.js → chunk-MQNOIH2C.js} +7 -7
  120. package/dist/{chunk-IDSZNHIP.js → chunk-MULNBSPP.js} +4 -4
  121. package/dist/{chunk-RKSGUMVL.js → chunk-NBQIFCJE.js} +2 -2
  122. package/dist/{chunk-I6WFBNA4.js → chunk-NHSVW7UT.js} +15 -15
  123. package/dist/{chunk-32HO62I4.js → chunk-OFEHITAZ.js} +2 -2
  124. package/dist/{chunk-PCO3P7WJ.js → chunk-OGVJXIHX.js} +2 -2
  125. package/dist/{chunk-RYN4AIRM.js → chunk-OZABSIOV.js} +4 -4
  126. package/dist/{chunk-HO7IQP7G.js → chunk-QMFKW4OU.js} +3 -3
  127. package/dist/{chunk-34G4U6HS.js → chunk-QRZMJ2WN.js} +2 -2
  128. package/dist/{chunk-RKDSELA3.js → chunk-QWWMS4AE.js} +1 -1
  129. package/dist/chunk-QWWMS4AE.js.map +1 -0
  130. package/dist/{chunk-GUD6FYQG.js → chunk-RSMIRLKM.js} +2 -2
  131. package/dist/{chunk-TNVZCLJU.js → chunk-S5TGRZWY.js} +2 -2
  132. package/dist/{chunk-O24EWFPQ.js → chunk-SNXBXYUE.js} +3 -3
  133. package/dist/{chunk-KW77LGDX.js → chunk-SUAX5JWY.js} +2 -2
  134. package/dist/{chunk-PNFWIB4X.js → chunk-SWRN6U7Q.js} +2 -2
  135. package/dist/{chunk-X6X4UASX.js → chunk-SZXPKUMN.js} +232 -83
  136. package/dist/chunk-SZXPKUMN.js.map +1 -0
  137. package/dist/{chunk-R4NGLTUS.js → chunk-TDMNADPI.js} +2 -2
  138. package/dist/{chunk-QCP75JGO.js → chunk-TFA6HPOA.js} +5 -5
  139. package/dist/{chunk-LI76ESJL.js → chunk-TZQOCQXB.js} +2 -2
  140. package/dist/{chunk-OV7EYM6M.js → chunk-U6OXJQEH.js} +12 -12
  141. package/dist/{chunk-OWHPA4JS.js → chunk-V32NHP2R.js} +2 -2
  142. package/dist/{chunk-JSUA4YFE.js → chunk-WG4TMZJ2.js} +2 -2
  143. package/dist/{chunk-DQTCGVFK.js → chunk-WHCD4Z3D.js} +2 -2
  144. package/dist/{chunk-GBA4N2SG.js → chunk-WRICYGYG.js} +27 -26
  145. package/dist/chunk-WRICYGYG.js.map +1 -0
  146. package/dist/{chunk-KATEWTQJ.js → chunk-X7J56GPG.js} +2 -2
  147. package/dist/{chunk-7KICGR5W.js → chunk-XPRAOTJY.js} +2 -2
  148. package/dist/{chunk-2NV7MMMM.js → chunk-XQSJXNWC.js} +2 -2
  149. package/dist/{chunk-22DYJLFN.js → chunk-XVC7JU2N.js} +39 -18
  150. package/dist/chunk-XVC7JU2N.js.map +1 -0
  151. package/dist/{chunk-RXT6UB25.js → chunk-YJAOYEWI.js} +2 -2
  152. package/dist/{chunk-L6DJJEFW.js → chunk-YJEUHGZZ.js} +2 -2
  153. package/dist/{chunk-AXFWMRKI.js → chunk-YQJCWR4R.js} +2 -2
  154. package/dist/cli.js +110 -108
  155. package/dist/coding/export-okf-codegraph.js +25 -25
  156. package/dist/compounding/engine.js +25 -25
  157. package/dist/config.d.ts.map +1 -1
  158. package/dist/config.js +31 -30
  159. package/dist/connectors/codex-materialize-runner.js +25 -25
  160. package/dist/connectors/index.js +25 -25
  161. package/dist/consolidation-provenance-check.js +2 -2
  162. package/dist/contradiction/index.js +7 -7
  163. package/dist/convergence-refresh.js +27 -27
  164. package/dist/conversation-index/backend.js +2 -2
  165. package/dist/corpus-read-cancellation.d.ts +7 -0
  166. package/dist/corpus-read-cancellation.d.ts.map +1 -1
  167. package/dist/corpus-read-cancellation.js +1 -1
  168. package/dist/corpus-watermark.js +27 -27
  169. package/dist/correction/correction-access-wiring.d.ts +6 -6
  170. package/dist/correction/correction-access-wiring.d.ts.map +1 -1
  171. package/dist/correction/correction-classify.d.ts +25 -0
  172. package/dist/correction/correction-classify.d.ts.map +1 -0
  173. package/dist/correction/correction-config.d.ts +11 -0
  174. package/dist/correction/correction-config.d.ts.map +1 -0
  175. package/dist/correction/correction-contract.d.ts +13 -1
  176. package/dist/correction/correction-contract.d.ts.map +1 -1
  177. package/dist/correction/correction-executor.d.ts +2 -0
  178. package/dist/correction/correction-executor.d.ts.map +1 -1
  179. package/dist/correction/correction-planner.d.ts +24 -3
  180. package/dist/correction/correction-planner.d.ts.map +1 -1
  181. package/dist/directory-sidecars.js +2 -2
  182. package/dist/entity-retrieval.js +25 -25
  183. package/dist/event-order-recall.js +2 -2
  184. package/dist/explicit-capture.js +2 -2
  185. package/dist/external-wiki-access.js +63 -63
  186. package/dist/extraction-span-materialize.js +2 -2
  187. package/dist/extraction.js +34 -34
  188. package/dist/harmonic-retrieval.js +25 -25
  189. package/dist/index.js +221 -218
  190. package/dist/lcm/index.js +3 -3
  191. package/dist/local-llm.d.ts.map +1 -1
  192. package/dist/local-llm.js +1 -1
  193. package/dist/location/index.js +28 -28
  194. package/dist/maintenance/archive-observations.js +2 -2
  195. package/dist/maintenance/atomic-file.d.ts +1 -1
  196. package/dist/maintenance/atomic-file.d.ts.map +1 -1
  197. package/dist/maintenance/atomic-file.js +1 -1
  198. package/dist/maintenance/memory-governance.js +25 -25
  199. package/dist/maintenance/migrate-observations.js +3 -3
  200. package/dist/maintenance/observation-ledger-utils.js +2 -2
  201. package/dist/maintenance/projection-rebuild-abort.d.ts +17 -0
  202. package/dist/maintenance/projection-rebuild-abort.d.ts.map +1 -0
  203. package/dist/maintenance/projection-timeline.d.ts +19 -0
  204. package/dist/maintenance/projection-timeline.d.ts.map +1 -0
  205. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +25 -25
  206. package/dist/maintenance/rebuild-memory-projection-runner.d.ts +8 -0
  207. package/dist/maintenance/rebuild-memory-projection-runner.d.ts.map +1 -0
  208. package/dist/maintenance/rebuild-memory-projection-runner.js +113 -0
  209. package/dist/maintenance/rebuild-memory-projection-runner.js.map +1 -0
  210. package/dist/maintenance/rebuild-memory-projection.d.ts +8 -0
  211. package/dist/maintenance/rebuild-memory-projection.d.ts.map +1 -1
  212. package/dist/maintenance/rebuild-memory-projection.js +26 -26
  213. package/dist/maintenance/rebuild-observations.js +3 -3
  214. package/dist/memory-browse-operations.js +63 -63
  215. package/dist/memory-browse.js +7 -7
  216. package/dist/memory-subject.js +1 -1
  217. package/dist/namespaces/migrate.js +26 -26
  218. package/dist/namespaces/search.js +10 -10
  219. package/dist/namespaces/storage.js +25 -25
  220. package/dist/offline-sync-impression-drain.js +3 -3
  221. package/dist/operator-doctor-corpus.js +28 -28
  222. package/dist/operator-toolkit.js +41 -40
  223. package/dist/orchestration/full-corpus-heap-guard.d.ts +25 -0
  224. package/dist/orchestration/full-corpus-heap-guard.d.ts.map +1 -0
  225. package/dist/orchestration/maintenance.d.ts.map +1 -1
  226. package/dist/orchestration/maintenance.js +38 -36
  227. package/dist/orchestration/projection-rebuild-schedule.d.ts +40 -0
  228. package/dist/orchestration/projection-rebuild-schedule.d.ts.map +1 -1
  229. package/dist/orchestration/session-context.d.ts.map +1 -1
  230. package/dist/orchestrator.js +142 -139
  231. package/dist/projection-rebuild-config.d.ts +52 -0
  232. package/dist/projection-rebuild-config.d.ts.map +1 -0
  233. package/dist/projection-rebuild-config.js +14 -0
  234. package/dist/projection-rebuild-config.js.map +1 -0
  235. package/dist/qmd.js +4 -4
  236. package/dist/recall-explain-renderer.js +3 -3
  237. package/dist/recall-navigate-access.js +2 -2
  238. package/dist/recall-navigate-disclosure.js +2 -2
  239. package/dist/recall-navigate.js +2 -2
  240. package/dist/recall-navigation-operations.js +63 -63
  241. package/dist/recall-navigation.js +62 -62
  242. package/dist/recall-state-view-admission.js +7 -7
  243. package/dist/recall-state.js +2 -2
  244. package/dist/recall-why-service.js +8 -8
  245. package/dist/recall-xray-cli.js +4 -4
  246. package/dist/recall-xray-renderer.js +3 -3
  247. package/dist/recall-xray.js +2 -2
  248. package/dist/reconcile/manifest.js +3 -3
  249. package/dist/relevance.js +2 -2
  250. package/dist/{resolution-RSG4HZTL.js → resolution-TV3F7ZTH.js} +7 -7
  251. package/dist/resolution-TV3F7ZTH.js.map +1 -0
  252. package/dist/resume-bundles.js +32 -31
  253. package/dist/salvage-envelope.js +1 -1
  254. package/dist/search/factory.js +9 -9
  255. package/dist/search/index.js +17 -17
  256. package/dist/semantic-consolidation.js +31 -31
  257. package/dist/semantic-rule-promotion.js +25 -25
  258. package/dist/semantic-rule-verifier.js +25 -25
  259. package/dist/source-agent-qualifier.js +29 -29
  260. package/dist/standup/build.js +25 -25
  261. package/dist/storage/memory-lifecycle-ledger-access.d.ts +5 -3
  262. package/dist/storage/memory-lifecycle-ledger-access.d.ts.map +1 -1
  263. package/dist/storage/memory-read-store.d.ts +2 -2
  264. package/dist/storage/memory-read-store.d.ts.map +1 -1
  265. package/dist/storage.d.ts +4 -2
  266. package/dist/storage.d.ts.map +1 -1
  267. package/dist/storage.js +24 -24
  268. package/dist/subject-config.js +1 -1
  269. package/dist/summarizer.js +3 -3
  270. package/dist/support-passport/index.js +78 -78
  271. package/dist/transfer/export-okf.js +26 -26
  272. package/dist/types.d.ts +8 -40
  273. package/dist/types.d.ts.map +1 -1
  274. package/dist/types.js +1 -1
  275. package/dist/verified-recall.js +25 -25
  276. package/dist/who-knows-cli.js +26 -26
  277. package/dist/who-knows.js +25 -25
  278. package/dist/write-envelope.js +1 -1
  279. package/package.json +2 -2
  280. package/src/access-cli.ts +4 -0
  281. package/src/access-http.ts +1 -0
  282. package/src/access-mcp-correction-tools.ts +56 -0
  283. package/src/access-mcp.ts +4 -49
  284. package/src/access-operations.ts +3 -0
  285. package/src/access-service.ts +12 -21
  286. package/src/config.test.ts +35 -0
  287. package/src/config.ts +6 -65
  288. package/src/corpus-read-cancellation.ts +7 -0
  289. package/src/correction/correction-access-wiring.ts +56 -16
  290. package/src/correction/correction-classify.test.ts +185 -0
  291. package/src/correction/correction-classify.ts +157 -0
  292. package/src/correction/correction-config.ts +93 -0
  293. package/src/correction/correction-contract.ts +61 -14
  294. package/src/correction/correction-executor.test.ts +102 -2
  295. package/src/correction/correction-executor.ts +19 -1
  296. package/src/correction/correction-planner.test.ts +141 -0
  297. package/src/correction/correction-planner.ts +117 -11
  298. package/src/correction/correction-surfaces.test.ts +22 -1
  299. package/src/local-llm-qos.test.ts +36 -0
  300. package/src/local-llm.ts +20 -3
  301. package/src/maintenance/atomic-file.ts +2 -0
  302. package/src/maintenance/projection-rebuild-abort.ts +40 -0
  303. package/src/maintenance/projection-timeline.ts +209 -0
  304. package/src/maintenance/rebuild-memory-projection-runner.ts +94 -0
  305. package/src/maintenance/rebuild-memory-projection.memory.test.ts +159 -0
  306. package/src/maintenance/rebuild-memory-projection.retain-raw.test.ts +202 -0
  307. package/src/maintenance/rebuild-memory-projection.ts +63 -91
  308. package/src/orchestration/full-corpus-heap-guard.ts +38 -0
  309. package/src/orchestration/maintenance.test.ts +2 -2
  310. package/src/orchestration/maintenance.ts +2 -0
  311. package/src/orchestration/projection-rebuild-schedule.test.ts +498 -0
  312. package/src/orchestration/projection-rebuild-schedule.ts +280 -9
  313. package/src/orchestration/session-context.ts +0 -15
  314. package/src/projection-rebuild-config.ts +82 -0
  315. package/src/recall-handles-wiring.test.ts +24 -0
  316. package/src/storage/memory-lifecycle-ledger-access.ts +61 -33
  317. package/src/storage/memory-read-store.ts +10 -4
  318. package/src/storage.ts +45 -33
  319. package/src/types.ts +8 -41
  320. package/dist/chunk-22DYJLFN.js.map +0 -1
  321. package/dist/chunk-6GU3TNJJ.js.map +0 -1
  322. package/dist/chunk-6JIHC5AS.js.map +0 -1
  323. package/dist/chunk-BLHPADUX.js.map +0 -1
  324. package/dist/chunk-CHI37EHP.js.map +0 -1
  325. package/dist/chunk-GBA4N2SG.js.map +0 -1
  326. package/dist/chunk-NGOZH7R5.js.map +0 -1
  327. package/dist/chunk-QLK3SL7Q.js.map +0 -1
  328. package/dist/chunk-RKDSELA3.js.map +0 -1
  329. package/dist/chunk-X6X4UASX.js.map +0 -1
  330. package/dist/chunk-ZS7RK6H6.js.map +0 -1
  331. /package/dist/{resolution-RSG4HZTL.js.map → access-mcp-correction-tools.js.map} +0 -0
  332. /package/dist/{auto-sync-PAWBFQWL.js.map → auto-sync-FN7E3OTO.js.map} +0 -0
  333. /package/dist/{chunk-YQSWNFZE.js.map → chunk-2CP577K6.js.map} +0 -0
  334. /package/dist/{chunk-345MEMRU.js.map → chunk-3OUGSOJP.js.map} +0 -0
  335. /package/dist/{chunk-G2STTRYB.js.map → chunk-4D2YH47Z.js.map} +0 -0
  336. /package/dist/{chunk-IXYIW3MZ.js.map → chunk-4K2H4KTR.js.map} +0 -0
  337. /package/dist/{chunk-UVVSOSHL.js.map → chunk-52CQKST6.js.map} +0 -0
  338. /package/dist/{chunk-H7BZBSP6.js.map → chunk-52II7PB6.js.map} +0 -0
  339. /package/dist/{chunk-2QZFZNXO.js.map → chunk-5CQO6LVM.js.map} +0 -0
  340. /package/dist/{chunk-NLDMTXWV.js.map → chunk-5LNPW7NE.js.map} +0 -0
  341. /package/dist/{chunk-WHTMVTU4.js.map → chunk-5X4ZJESN.js.map} +0 -0
  342. /package/dist/{chunk-WI37MWRZ.js.map → chunk-63UNVGZW.js.map} +0 -0
  343. /package/dist/{chunk-G3T6YMBO.js.map → chunk-64S6X4IU.js.map} +0 -0
  344. /package/dist/{chunk-CFCEJNOE.js.map → chunk-6KHF6PAB.js.map} +0 -0
  345. /package/dist/{chunk-35A7GCHG.js.map → chunk-6T42L5FI.js.map} +0 -0
  346. /package/dist/{chunk-JDOBIFBK.js.map → chunk-7CXL25AA.js.map} +0 -0
  347. /package/dist/{chunk-YLBE6PLR.js.map → chunk-7IGMKQWK.js.map} +0 -0
  348. /package/dist/{chunk-CSLK7BN6.js.map → chunk-7LYRFI5A.js.map} +0 -0
  349. /package/dist/{chunk-IB63OVUB.js.map → chunk-AJ6ORARY.js.map} +0 -0
  350. /package/dist/{chunk-CGOKNQDK.js.map → chunk-ANZXWOYD.js.map} +0 -0
  351. /package/dist/{chunk-5QXMESS7.js.map → chunk-AXC7UTLM.js.map} +0 -0
  352. /package/dist/{chunk-RFIJRZ4K.js.map → chunk-B657ZGDH.js.map} +0 -0
  353. /package/dist/{chunk-MY7B3HYC.js.map → chunk-CLCMDKTB.js.map} +0 -0
  354. /package/dist/{chunk-QPWUG2S3.js.map → chunk-CYEK6Z3P.js.map} +0 -0
  355. /package/dist/{chunk-IHCYCE6D.js.map → chunk-DJMVSUPK.js.map} +0 -0
  356. /package/dist/{chunk-HP4CU2ZA.js.map → chunk-DST7HRSG.js.map} +0 -0
  357. /package/dist/{chunk-IIFFC3RL.js.map → chunk-EDR6CVWZ.js.map} +0 -0
  358. /package/dist/{chunk-AUWMKDKL.js.map → chunk-EMVJU7WC.js.map} +0 -0
  359. /package/dist/{chunk-O6AYMAPJ.js.map → chunk-ENNC3RZ6.js.map} +0 -0
  360. /package/dist/{chunk-2JRB3Z5N.js.map → chunk-EP5WXE2G.js.map} +0 -0
  361. /package/dist/{chunk-I2KEH2LS.js.map → chunk-FC6RCOIU.js.map} +0 -0
  362. /package/dist/{chunk-OZVHLBH6.js.map → chunk-FLV7M7CT.js.map} +0 -0
  363. /package/dist/{chunk-Q6GI7HEC.js.map → chunk-FRH2UC7Q.js.map} +0 -0
  364. /package/dist/{chunk-3SL52JKD.js.map → chunk-FZVROZKC.js.map} +0 -0
  365. /package/dist/{chunk-2EZB2DL5.js.map → chunk-GE6HETIF.js.map} +0 -0
  366. /package/dist/{chunk-2DHJTJIY.js.map → chunk-GEGUBU3D.js.map} +0 -0
  367. /package/dist/{chunk-6AA7XFMO.js.map → chunk-GF4H3B3R.js.map} +0 -0
  368. /package/dist/{chunk-ME2LMFHF.js.map → chunk-HPAOMYKM.js.map} +0 -0
  369. /package/dist/{chunk-4NRZ7BRS.js.map → chunk-I25RINZK.js.map} +0 -0
  370. /package/dist/{chunk-XG4XXI66.js.map → chunk-I25RQA65.js.map} +0 -0
  371. /package/dist/{chunk-EJJMDLVB.js.map → chunk-IJ4FEGZR.js.map} +0 -0
  372. /package/dist/{chunk-EUL3S3LE.js.map → chunk-J5WI4QRP.js.map} +0 -0
  373. /package/dist/{chunk-LMMC55WM.js.map → chunk-JA54KIYD.js.map} +0 -0
  374. /package/dist/{chunk-5FLFPTDK.js.map → chunk-JA72X46J.js.map} +0 -0
  375. /package/dist/{chunk-NLYOOGZ7.js.map → chunk-KE5PWLI6.js.map} +0 -0
  376. /package/dist/{chunk-4DDIWRT7.js.map → chunk-KQI2PKYP.js.map} +0 -0
  377. /package/dist/{chunk-Y2ADLCB3.js.map → chunk-KSUOM3YU.js.map} +0 -0
  378. /package/dist/{chunk-BTOHGPHC.js.map → chunk-KZEMFD6E.js.map} +0 -0
  379. /package/dist/{chunk-NXVD46HT.js.map → chunk-L2VS27PZ.js.map} +0 -0
  380. /package/dist/{chunk-MYYHACOW.js.map → chunk-L34W4W4I.js.map} +0 -0
  381. /package/dist/{chunk-KRTIHXWC.js.map → chunk-L3PWXD73.js.map} +0 -0
  382. /package/dist/{chunk-NQHSXHJP.js.map → chunk-L6GNS5GB.js.map} +0 -0
  383. /package/dist/{chunk-44PBRUXB.js.map → chunk-M47Q6566.js.map} +0 -0
  384. /package/dist/{chunk-E7FN5N5E.js.map → chunk-MQNOIH2C.js.map} +0 -0
  385. /package/dist/{chunk-IDSZNHIP.js.map → chunk-MULNBSPP.js.map} +0 -0
  386. /package/dist/{chunk-RKSGUMVL.js.map → chunk-NBQIFCJE.js.map} +0 -0
  387. /package/dist/{chunk-I6WFBNA4.js.map → chunk-NHSVW7UT.js.map} +0 -0
  388. /package/dist/{chunk-32HO62I4.js.map → chunk-OFEHITAZ.js.map} +0 -0
  389. /package/dist/{chunk-PCO3P7WJ.js.map → chunk-OGVJXIHX.js.map} +0 -0
  390. /package/dist/{chunk-RYN4AIRM.js.map → chunk-OZABSIOV.js.map} +0 -0
  391. /package/dist/{chunk-HO7IQP7G.js.map → chunk-QMFKW4OU.js.map} +0 -0
  392. /package/dist/{chunk-34G4U6HS.js.map → chunk-QRZMJ2WN.js.map} +0 -0
  393. /package/dist/{chunk-GUD6FYQG.js.map → chunk-RSMIRLKM.js.map} +0 -0
  394. /package/dist/{chunk-TNVZCLJU.js.map → chunk-S5TGRZWY.js.map} +0 -0
  395. /package/dist/{chunk-O24EWFPQ.js.map → chunk-SNXBXYUE.js.map} +0 -0
  396. /package/dist/{chunk-KW77LGDX.js.map → chunk-SUAX5JWY.js.map} +0 -0
  397. /package/dist/{chunk-PNFWIB4X.js.map → chunk-SWRN6U7Q.js.map} +0 -0
  398. /package/dist/{chunk-R4NGLTUS.js.map → chunk-TDMNADPI.js.map} +0 -0
  399. /package/dist/{chunk-QCP75JGO.js.map → chunk-TFA6HPOA.js.map} +0 -0
  400. /package/dist/{chunk-LI76ESJL.js.map → chunk-TZQOCQXB.js.map} +0 -0
  401. /package/dist/{chunk-OV7EYM6M.js.map → chunk-U6OXJQEH.js.map} +0 -0
  402. /package/dist/{chunk-OWHPA4JS.js.map → chunk-V32NHP2R.js.map} +0 -0
  403. /package/dist/{chunk-JSUA4YFE.js.map → chunk-WG4TMZJ2.js.map} +0 -0
  404. /package/dist/{chunk-DQTCGVFK.js.map → chunk-WHCD4Z3D.js.map} +0 -0
  405. /package/dist/{chunk-KATEWTQJ.js.map → chunk-X7J56GPG.js.map} +0 -0
  406. /package/dist/{chunk-7KICGR5W.js.map → chunk-XPRAOTJY.js.map} +0 -0
  407. /package/dist/{chunk-2NV7MMMM.js.map → chunk-XQSJXNWC.js.map} +0 -0
  408. /package/dist/{chunk-RXT6UB25.js.map → chunk-YJAOYEWI.js.map} +0 -0
  409. /package/dist/{chunk-L6DJJEFW.js.map → chunk-YJEUHGZZ.js.map} +0 -0
  410. /package/dist/{chunk-AXFWMRKI.js.map → chunk-YQJCWR4R.js.map} +0 -0
@@ -2,7 +2,7 @@ import {
2
2
  SupportPassportError,
3
3
  SupportPassportOwnerCreateGrantRequestSchema,
4
4
  getOperation
5
- } from "./chunk-NGOZH7R5.js";
5
+ } from "./chunk-GVUW5XK5.js";
6
6
 
7
7
  // src/support-passport/access-http.ts
8
8
  var OWNER_ROOT = "/engram/v1/support-passport";
@@ -137,4 +137,4 @@ export {
137
137
  SUPPORT_PASSPORT_OWNER_HTTP_ROUTES,
138
138
  handleSupportPassportOwnerHttp
139
139
  };
140
- //# sourceMappingURL=chunk-2QZFZNXO.js.map
140
+ //# sourceMappingURL=chunk-5CQO6LVM.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getOperation
3
- } from "./chunk-NGOZH7R5.js";
3
+ } from "./chunk-GVUW5XK5.js";
4
4
  import {
5
5
  EngramAccessInputError
6
6
  } from "./chunk-3MUKQQ7A.js";
@@ -21,4 +21,4 @@ async function respondBriefingHttp(options) {
21
21
  export {
22
22
  respondBriefingHttp
23
23
  };
24
- //# sourceMappingURL=chunk-NLDMTXWV.js.map
24
+ //# sourceMappingURL=chunk-5LNPW7NE.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-EEDI3OXB.js";
4
4
  import {
5
5
  isRecallDisclosure
6
- } from "./chunk-RKDSELA3.js";
6
+ } from "./chunk-QWWMS4AE.js";
7
7
  import {
8
8
  EngramAccessInputError
9
9
  } from "./chunk-3MUKQQ7A.js";
@@ -165,4 +165,4 @@ export {
165
165
  handleRecallWhyHttpQuery,
166
166
  handleRecallXrayHttpQuery
167
167
  };
168
- //# sourceMappingURL=chunk-WHTMVTU4.js.map
168
+ //# sourceMappingURL=chunk-5X4ZJESN.js.map
@@ -8,13 +8,13 @@ import {
8
8
  } from "./chunk-N7QV3CMX.js";
9
9
  import {
10
10
  offlineSyncStorageForSnapshot
11
- } from "./chunk-2JRB3Z5N.js";
12
- import {
13
- iterateOfflineSyncSnapshotFileRecords
14
- } from "./chunk-TGF43K66.js";
11
+ } from "./chunk-EP5WXE2G.js";
15
12
  import {
16
13
  createPersistedSupportPassportPrivateFileExclusion
17
14
  } from "./chunk-PWPIERBM.js";
15
+ import {
16
+ iterateOfflineSyncSnapshotFileRecords
17
+ } from "./chunk-TGF43K66.js";
18
18
 
19
19
  // src/access-offline-manifest.ts
20
20
  import * as nodePath from "path";
@@ -250,4 +250,4 @@ export {
250
250
  retainExcludedClassifications,
251
251
  createOfflineSyncManifestStream
252
252
  };
253
- //# sourceMappingURL=chunk-WI37MWRZ.js.map
253
+ //# sourceMappingURL=chunk-63UNVGZW.js.map
@@ -1,15 +1,15 @@
1
- import {
2
- ReplitAdapter
3
- } from "./chunk-SI36RWC3.js";
4
- import {
5
- ClaudeCodeAdapter
6
- } from "./chunk-3JKYQBLC.js";
7
1
  import {
8
2
  CodexAdapter
9
3
  } from "./chunk-7RKSJVOQ.js";
10
4
  import {
11
5
  HermesAdapter
12
6
  } from "./chunk-HCAGBFE7.js";
7
+ import {
8
+ ReplitAdapter
9
+ } from "./chunk-SI36RWC3.js";
10
+ import {
11
+ ClaudeCodeAdapter
12
+ } from "./chunk-3JKYQBLC.js";
13
13
  import {
14
14
  headerValue
15
15
  } from "./chunk-NJAIR57U.js";
@@ -110,4 +110,4 @@ export {
110
110
  OpenCodeAdapter,
111
111
  AdapterRegistry
112
112
  };
113
- //# sourceMappingURL=chunk-G3T6YMBO.js.map
113
+ //# sourceMappingURL=chunk-64S6X4IU.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  StorageManager
3
- } from "./chunk-6JIHC5AS.js";
3
+ } from "./chunk-37HCPM56.js";
4
4
  import {
5
5
  keyring_exports,
6
6
  secureStoreDir
@@ -412,4 +412,4 @@ export {
412
412
  resolveNamespaceStorageRoot,
413
413
  NamespaceStorageRouter
414
414
  };
415
- //# sourceMappingURL=chunk-CFCEJNOE.js.map
415
+ //# sourceMappingURL=chunk-6KHF6PAB.js.map
@@ -10,4 +10,4 @@ function checkCorpusReadAbort(options) {
10
10
  export {
11
11
  checkCorpusReadAbort
12
12
  };
13
- //# sourceMappingURL=chunk-5GINB5LC.js.map
13
+ //# sourceMappingURL=chunk-6MKLMEBE.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/corpus-read-cancellation.ts"],"sourcesContent":["/**\n * Cancellation contract for the shared full-corpus read primitives (issue #2307).\n *\n * `readAllArtifactsCached`, `readAllEntityFiles`, `readAllMemories`, and the\n * artifact source-status snapshot each walk and parse an entire memory tree. Issue\n * #2291 bounded the recall providers that call them, so a timed-out recall returns\n * on time — but the scan underneath kept running, and for the primitives without\n * in-flight coalescing every abandoned request started another one. On a large or\n * network-mounted store those pile up into sustained I/O no live request needs.\n *\n * The mechanism is a plain optional parameter, not ambient async context: these\n * primitives have dozens of callers across extraction, maintenance, wearables, and\n * coding surfaces, and an ambient signal would silently attach a request's\n * cancellation to background work that merely shares its async context. An\n * explicit parameter is greppable, and a caller that does not opt in behaves\n * exactly as before.\n *\n * Two invariants bind every implementation:\n *\n * 1. **Checked before the cache lookup.** A caller that has already given up gets\n * an `AbortError`, warm cache or not — the same contract the recall providers\n * follow, so cancellation never depends on cache state.\n * 2. **A cancelled read never publishes.** Every checkpoint throws, so control\n * leaves before the cache write. A partial corpus must never be cached, or\n * served, as if it were complete.\n */\n\nimport { throwIfAborted } from \"./abort-error.js\";\n\nexport interface CorpusReadOptions {\n /**\n * Stops the read at its next directory, batch, or attempt boundary. A single\n * in-flight file read is not interrupted; the boundaries are what bound the\n * work, and on a tree large enough to matter there are thousands of them.\n */\n abortSignal?: AbortSignal;\n}\n\n/** Stop a corpus read at a scan boundary when its caller has given up. */\nexport function checkCorpusReadAbort(options?: CorpusReadOptions): void {\n throwIfAborted(options?.abortSignal, \"corpus read aborted\");\n}\n"],"mappings":";;;;;AAuCO,SAAS,qBAAqB,SAAmC;AACtE,iBAAe,SAAS,aAAa,qBAAqB;AAC5D;","names":[]}
1
+ {"version":3,"sources":["../src/corpus-read-cancellation.ts"],"sourcesContent":["/**\n * Cancellation contract for the shared full-corpus read primitives (issue #2307).\n *\n * `readAllArtifactsCached`, `readAllEntityFiles`, `readAllMemories`, and the\n * artifact source-status snapshot each walk and parse an entire memory tree. Issue\n * #2291 bounded the recall providers that call them, so a timed-out recall returns\n * on time — but the scan underneath kept running, and for the primitives without\n * in-flight coalescing every abandoned request started another one. On a large or\n * network-mounted store those pile up into sustained I/O no live request needs.\n *\n * The mechanism is a plain optional parameter, not ambient async context: these\n * primitives have dozens of callers across extraction, maintenance, wearables, and\n * coding surfaces, and an ambient signal would silently attach a request's\n * cancellation to background work that merely shares its async context. An\n * explicit parameter is greppable, and a caller that does not opt in behaves\n * exactly as before.\n *\n * Two invariants bind every implementation:\n *\n * 1. **Checked before the cache lookup.** A caller that has already given up gets\n * an `AbortError`, warm cache or not — the same contract the recall providers\n * follow, so cancellation never depends on cache state.\n * 2. **A cancelled read never publishes.** Every checkpoint throws, so control\n * leaves before the cache write. A partial corpus must never be cached, or\n * served, as if it were complete.\n */\n\nimport { throwIfAborted } from \"./abort-error.js\";\n\nexport interface CorpusReadOptions {\n /**\n * Stops the read at its next directory, batch, or attempt boundary. A single\n * in-flight file read is not interrupted; the boundaries are what bound the\n * work, and on a tree large enough to matter there are thousands of them.\n */\n abortSignal?: AbortSignal;\n /**\n * When `false`, parsed memories are returned without the raw file text kept\n * beside them (`rememberRawFrontmatter`). Default (unset) retains that copy.\n * A `false` read bypasses the shared corpus caches so it cannot replace a\n * raw-retaining snapshot other callers still need.\n */\n retainRaw?: boolean;\n}\n\n/** Stop a corpus read at a scan boundary when its caller has given up. */\nexport function checkCorpusReadAbort(options?: CorpusReadOptions): void {\n throwIfAborted(options?.abortSignal, \"corpus read aborted\");\n}\n"],"mappings":";;;;;AA8CO,SAAS,qBAAqB,SAAmC;AACtE,iBAAe,SAAS,aAAa,qBAAqB;AAC5D;","names":[]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  RECALL_DISCLOSURE_LEVELS,
3
3
  isRecallDisclosure
4
- } from "./chunk-RKDSELA3.js";
4
+ } from "./chunk-QWWMS4AE.js";
5
5
 
6
6
  // src/recall-navigate-disclosure.ts
7
7
  function disclosureRank(level) {
@@ -27,4 +27,4 @@ export {
27
27
  disclosureRank,
28
28
  planDisclosureStep
29
29
  };
30
- //# sourceMappingURL=chunk-35A7GCHG.js.map
30
+ //# sourceMappingURL=chunk-6T42L5FI.js.map
@@ -37,7 +37,7 @@ import {
37
37
  } from "./chunk-YCVB7X56.js";
38
38
  import {
39
39
  fillWearableConversationLocations
40
- } from "./chunk-MY7B3HYC.js";
40
+ } from "./chunk-CLCMDKTB.js";
41
41
  import {
42
42
  composeMemoryEnvelope
43
43
  } from "./chunk-5AYUHSAU.js";
@@ -1329,4 +1329,4 @@ export {
1329
1329
  syncWearableSource,
1330
1330
  defaultTimezone
1331
1331
  };
1332
- //# sourceMappingURL=chunk-JDOBIFBK.js.map
1332
+ //# sourceMappingURL=chunk-7CXL25AA.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  writeFileAtomically
3
- } from "./chunk-AW4QUFQF.js";
3
+ } from "./chunk-BTNNL7ZW.js";
4
4
 
5
5
  // src/maintenance/archive-observations.ts
6
6
  import path from "path";
@@ -131,4 +131,4 @@ async function archiveObservations(options) {
131
131
  export {
132
132
  archiveObservations
133
133
  };
134
- //# sourceMappingURL=chunk-YLBE6PLR.js.map
134
+ //# sourceMappingURL=chunk-7IGMKQWK.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveCorpusNamespaceRoots
3
- } from "./chunk-CGOKNQDK.js";
3
+ } from "./chunk-ANZXWOYD.js";
4
4
  import {
5
5
  capabilityAllowsNamespace
6
6
  } from "./chunk-IG747LRN.js";
@@ -200,4 +200,4 @@ async function readAggregateExtractionWatermark(options) {
200
200
  export {
201
201
  readAggregateExtractionWatermark
202
202
  };
203
- //# sourceMappingURL=chunk-CSLK7BN6.js.map
203
+ //# sourceMappingURL=chunk-7LYRFI5A.js.map
@@ -1,3 +1,8 @@
1
+ import {
2
+ EMPTY_QMD_STATUS,
3
+ embedQmdFiles,
4
+ fetchQmdStatus
5
+ } from "./chunk-IUM3VSHI.js";
1
6
  import {
2
7
  resolveEnsureCollectionArgs
3
8
  } from "./chunk-G26YNEOC.js";
@@ -20,11 +25,6 @@ import {
20
25
  qmdVersionToString,
21
26
  resolveQmdCapabilities
22
27
  } from "./chunk-SIGAGKNE.js";
23
- import {
24
- EMPTY_QMD_STATUS,
25
- embedQmdFiles,
26
- fetchQmdStatus
27
- } from "./chunk-IUM3VSHI.js";
28
28
  import {
29
29
  clearQmdResultCaches,
30
30
  getCachedQmdSearch,
@@ -2028,4 +2028,4 @@ export {
2028
2028
  sharedDaemonSessionCountForTest,
2029
2029
  QmdClient
2030
2030
  };
2031
- //# sourceMappingURL=chunk-IB63OVUB.js.map
2031
+ //# sourceMappingURL=chunk-AJ6ORARY.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  listNamespaces
3
- } from "./chunk-O24EWFPQ.js";
3
+ } from "./chunk-SNXBXYUE.js";
4
4
  import {
5
5
  capabilityAllowsNamespace
6
6
  } from "./chunk-IG747LRN.js";
@@ -282,4 +282,4 @@ export {
282
282
  computeServiceCorpusWatermarks,
283
283
  computeServiceCorpusCensus
284
284
  };
285
- //# sourceMappingURL=chunk-CGOKNQDK.js.map
285
+ //# sourceMappingURL=chunk-ANZXWOYD.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  defineOperation
3
- } from "./chunk-NGOZH7R5.js";
3
+ } from "./chunk-GVUW5XK5.js";
4
4
  import {
5
5
  EngramAccessInputError
6
6
  } from "./chunk-3MUKQQ7A.js";
@@ -92,4 +92,4 @@ defineOperation({
92
92
  };
93
93
  }
94
94
  });
95
- //# sourceMappingURL=chunk-5QXMESS7.js.map
95
+ //# sourceMappingURL=chunk-AXC7UTLM.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  RECALL_DISCLOSURE_LEVELS
3
- } from "./chunk-RKDSELA3.js";
3
+ } from "./chunk-QWWMS4AE.js";
4
4
 
5
5
  // src/recall-navigate.ts
6
6
  var RECALL_NAV_LINK_TYPES = [
@@ -48,4 +48,4 @@ export {
48
48
  expandRecallNode,
49
49
  traverseRecallLink
50
50
  };
51
- //# sourceMappingURL=chunk-RFIJRZ4K.js.map
51
+ //# sourceMappingURL=chunk-B657ZGDH.js.map
@@ -54,13 +54,14 @@ async function writeFileAtomically(outputPath, content, backupPath) {
54
54
  throw err;
55
55
  }
56
56
  }
57
- async function commitPreparedFileAtomically(tempPath, outputPath, backupPath) {
57
+ async function commitPreparedFileAtomically(tempPath, outputPath, backupPath, beforeRename) {
58
58
  const dir = path.dirname(outputPath);
59
59
  let resolvedBackupPath;
60
60
  try {
61
61
  if (backupPath) {
62
62
  resolvedBackupPath = await copyExistingFileToBackup(outputPath, backupPath);
63
63
  }
64
+ if (beforeRename) await beforeRename();
64
65
  await rename(tempPath, outputPath);
65
66
  await syncDirectory(dir);
66
67
  return resolvedBackupPath;
@@ -75,4 +76,4 @@ export {
75
76
  writeFileAtomically,
76
77
  commitPreparedFileAtomically
77
78
  };
78
- //# sourceMappingURL=chunk-AW4QUFQF.js.map
79
+ //# sourceMappingURL=chunk-BTNNL7ZW.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/maintenance/atomic-file.ts"],"sourcesContent":["import path from \"node:path\";\nimport { copyFile, mkdir, open, rename, rm, stat } from \"node:fs/promises\";\n\nasync function syncDirectory(dir: string): Promise<void> {\n let handle: Awaited<ReturnType<typeof open>> | undefined;\n try {\n handle = await open(dir, \"r\");\n await handle.sync();\n } catch {\n // Directory fsync is best-effort across platforms and filesystems.\n } finally {\n await handle?.close().catch(() => undefined);\n }\n}\n\nfunction tempPathFor(outputPath: string): string {\n const suffix = `${process.pid}.${Date.now()}.${Math.random().toString(36).slice(2)}`;\n return path.join(path.dirname(outputPath), `.${path.basename(outputPath)}.${suffix}.tmp`);\n}\n\nexport async function copyExistingFileToBackup(\n sourcePath: string,\n backupPath: string,\n): Promise<string | undefined> {\n try {\n await stat(sourcePath);\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === \"ENOENT\") return undefined;\n throw err;\n }\n\n await mkdir(path.dirname(backupPath), { recursive: true });\n await copyFile(sourcePath, backupPath);\n return backupPath;\n}\n\nexport async function writeFileAtomically(\n outputPath: string,\n content: string | Uint8Array,\n backupPath?: string,\n): Promise<string | undefined> {\n const dir = path.dirname(outputPath);\n await mkdir(dir, { recursive: true });\n const tempPath = tempPathFor(outputPath);\n let handle: Awaited<ReturnType<typeof open>> | undefined;\n let resolvedBackupPath: string | undefined;\n try {\n handle = await open(tempPath, \"w\");\n if (typeof content === \"string\") {\n await handle.writeFile(content, \"utf-8\");\n } else {\n await handle.writeFile(content);\n }\n await handle.sync();\n await handle.close();\n handle = undefined;\n\n if (backupPath) {\n resolvedBackupPath = await copyExistingFileToBackup(outputPath, backupPath);\n }\n await rename(tempPath, outputPath);\n await syncDirectory(dir);\n return resolvedBackupPath;\n } catch (err) {\n await handle?.close().catch(() => undefined);\n await rm(tempPath, { force: true }).catch(() => undefined);\n throw err;\n }\n}\n\nexport async function commitPreparedFileAtomically(\n tempPath: string,\n outputPath: string,\n backupPath?: string,\n): Promise<string | undefined> {\n const dir = path.dirname(outputPath);\n let resolvedBackupPath: string | undefined;\n try {\n if (backupPath) {\n resolvedBackupPath = await copyExistingFileToBackup(outputPath, backupPath);\n }\n await rename(tempPath, outputPath);\n await syncDirectory(dir);\n return resolvedBackupPath;\n } catch (err) {\n await rm(tempPath, { force: true }).catch(() => undefined);\n throw err;\n }\n}\n"],"mappings":";AAAA,OAAO,UAAU;AACjB,SAAS,UAAU,OAAO,MAAM,QAAQ,IAAI,YAAY;AAExD,eAAe,cAAc,KAA4B;AACvD,MAAI;AACJ,MAAI;AACF,aAAS,MAAM,KAAK,KAAK,GAAG;AAC5B,UAAM,OAAO,KAAK;AAAA,EACpB,QAAQ;AAAA,EAER,UAAE;AACA,UAAM,QAAQ,MAAM,EAAE,MAAM,MAAM,MAAS;AAAA,EAC7C;AACF;AAEA,SAAS,YAAY,YAA4B;AAC/C,QAAM,SAAS,GAAG,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;AAClF,SAAO,KAAK,KAAK,KAAK,QAAQ,UAAU,GAAG,IAAI,KAAK,SAAS,UAAU,CAAC,IAAI,MAAM,MAAM;AAC1F;AAEA,eAAsB,yBACpB,YACA,YAC6B;AAC7B,MAAI;AACF,UAAM,KAAK,UAAU;AAAA,EACvB,SAAS,KAAK;AACZ,QAAK,IAA8B,SAAS,SAAU,QAAO;AAC7D,UAAM;AAAA,EACR;AAEA,QAAM,MAAM,KAAK,QAAQ,UAAU,GAAG,EAAE,WAAW,KAAK,CAAC;AACzD,QAAM,SAAS,YAAY,UAAU;AACrC,SAAO;AACT;AAEA,eAAsB,oBACpB,YACA,SACA,YAC6B;AAC7B,QAAM,MAAM,KAAK,QAAQ,UAAU;AACnC,QAAM,MAAM,KAAK,EAAE,WAAW,KAAK,CAAC;AACpC,QAAM,WAAW,YAAY,UAAU;AACvC,MAAI;AACJ,MAAI;AACJ,MAAI;AACF,aAAS,MAAM,KAAK,UAAU,GAAG;AACjC,QAAI,OAAO,YAAY,UAAU;AAC/B,YAAM,OAAO,UAAU,SAAS,OAAO;AAAA,IACzC,OAAO;AACL,YAAM,OAAO,UAAU,OAAO;AAAA,IAChC;AACA,UAAM,OAAO,KAAK;AAClB,UAAM,OAAO,MAAM;AACnB,aAAS;AAET,QAAI,YAAY;AACd,2BAAqB,MAAM,yBAAyB,YAAY,UAAU;AAAA,IAC5E;AACA,UAAM,OAAO,UAAU,UAAU;AACjC,UAAM,cAAc,GAAG;AACvB,WAAO;AAAA,EACT,SAAS,KAAK;AACZ,UAAM,QAAQ,MAAM,EAAE,MAAM,MAAM,MAAS;AAC3C,UAAM,GAAG,UAAU,EAAE,OAAO,KAAK,CAAC,EAAE,MAAM,MAAM,MAAS;AACzD,UAAM;AAAA,EACR;AACF;AAEA,eAAsB,6BACpB,UACA,YACA,YAC6B;AAC7B,QAAM,MAAM,KAAK,QAAQ,UAAU;AACnC,MAAI;AACJ,MAAI;AACF,QAAI,YAAY;AACd,2BAAqB,MAAM,yBAAyB,YAAY,UAAU;AAAA,IAC5E;AACA,UAAM,OAAO,UAAU,UAAU;AACjC,UAAM,cAAc,GAAG;AACvB,WAAO;AAAA,EACT,SAAS,KAAK;AACZ,UAAM,GAAG,UAAU,EAAE,OAAO,KAAK,CAAC,EAAE,MAAM,MAAM,MAAS;AACzD,UAAM;AAAA,EACR;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/maintenance/atomic-file.ts"],"sourcesContent":["import path from \"node:path\";\nimport { copyFile, mkdir, open, rename, rm, stat } from \"node:fs/promises\";\n\nasync function syncDirectory(dir: string): Promise<void> {\n let handle: Awaited<ReturnType<typeof open>> | undefined;\n try {\n handle = await open(dir, \"r\");\n await handle.sync();\n } catch {\n // Directory fsync is best-effort across platforms and filesystems.\n } finally {\n await handle?.close().catch(() => undefined);\n }\n}\n\nfunction tempPathFor(outputPath: string): string {\n const suffix = `${process.pid}.${Date.now()}.${Math.random().toString(36).slice(2)}`;\n return path.join(path.dirname(outputPath), `.${path.basename(outputPath)}.${suffix}.tmp`);\n}\n\nexport async function copyExistingFileToBackup(\n sourcePath: string,\n backupPath: string,\n): Promise<string | undefined> {\n try {\n await stat(sourcePath);\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === \"ENOENT\") return undefined;\n throw err;\n }\n\n await mkdir(path.dirname(backupPath), { recursive: true });\n await copyFile(sourcePath, backupPath);\n return backupPath;\n}\n\nexport async function writeFileAtomically(\n outputPath: string,\n content: string | Uint8Array,\n backupPath?: string,\n): Promise<string | undefined> {\n const dir = path.dirname(outputPath);\n await mkdir(dir, { recursive: true });\n const tempPath = tempPathFor(outputPath);\n let handle: Awaited<ReturnType<typeof open>> | undefined;\n let resolvedBackupPath: string | undefined;\n try {\n handle = await open(tempPath, \"w\");\n if (typeof content === \"string\") {\n await handle.writeFile(content, \"utf-8\");\n } else {\n await handle.writeFile(content);\n }\n await handle.sync();\n await handle.close();\n handle = undefined;\n\n if (backupPath) {\n resolvedBackupPath = await copyExistingFileToBackup(outputPath, backupPath);\n }\n await rename(tempPath, outputPath);\n await syncDirectory(dir);\n return resolvedBackupPath;\n } catch (err) {\n await handle?.close().catch(() => undefined);\n await rm(tempPath, { force: true }).catch(() => undefined);\n throw err;\n }\n}\n\nexport async function commitPreparedFileAtomically(\n tempPath: string,\n outputPath: string,\n backupPath?: string,\n beforeRename?: () => void | Promise<void>,\n): Promise<string | undefined> {\n const dir = path.dirname(outputPath);\n let resolvedBackupPath: string | undefined;\n try {\n if (backupPath) {\n resolvedBackupPath = await copyExistingFileToBackup(outputPath, backupPath);\n }\n if (beforeRename) await beforeRename();\n await rename(tempPath, outputPath);\n await syncDirectory(dir);\n return resolvedBackupPath;\n } catch (err) {\n await rm(tempPath, { force: true }).catch(() => undefined);\n throw err;\n }\n}\n"],"mappings":";AAAA,OAAO,UAAU;AACjB,SAAS,UAAU,OAAO,MAAM,QAAQ,IAAI,YAAY;AAExD,eAAe,cAAc,KAA4B;AACvD,MAAI;AACJ,MAAI;AACF,aAAS,MAAM,KAAK,KAAK,GAAG;AAC5B,UAAM,OAAO,KAAK;AAAA,EACpB,QAAQ;AAAA,EAER,UAAE;AACA,UAAM,QAAQ,MAAM,EAAE,MAAM,MAAM,MAAS;AAAA,EAC7C;AACF;AAEA,SAAS,YAAY,YAA4B;AAC/C,QAAM,SAAS,GAAG,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;AAClF,SAAO,KAAK,KAAK,KAAK,QAAQ,UAAU,GAAG,IAAI,KAAK,SAAS,UAAU,CAAC,IAAI,MAAM,MAAM;AAC1F;AAEA,eAAsB,yBACpB,YACA,YAC6B;AAC7B,MAAI;AACF,UAAM,KAAK,UAAU;AAAA,EACvB,SAAS,KAAK;AACZ,QAAK,IAA8B,SAAS,SAAU,QAAO;AAC7D,UAAM;AAAA,EACR;AAEA,QAAM,MAAM,KAAK,QAAQ,UAAU,GAAG,EAAE,WAAW,KAAK,CAAC;AACzD,QAAM,SAAS,YAAY,UAAU;AACrC,SAAO;AACT;AAEA,eAAsB,oBACpB,YACA,SACA,YAC6B;AAC7B,QAAM,MAAM,KAAK,QAAQ,UAAU;AACnC,QAAM,MAAM,KAAK,EAAE,WAAW,KAAK,CAAC;AACpC,QAAM,WAAW,YAAY,UAAU;AACvC,MAAI;AACJ,MAAI;AACJ,MAAI;AACF,aAAS,MAAM,KAAK,UAAU,GAAG;AACjC,QAAI,OAAO,YAAY,UAAU;AAC/B,YAAM,OAAO,UAAU,SAAS,OAAO;AAAA,IACzC,OAAO;AACL,YAAM,OAAO,UAAU,OAAO;AAAA,IAChC;AACA,UAAM,OAAO,KAAK;AAClB,UAAM,OAAO,MAAM;AACnB,aAAS;AAET,QAAI,YAAY;AACd,2BAAqB,MAAM,yBAAyB,YAAY,UAAU;AAAA,IAC5E;AACA,UAAM,OAAO,UAAU,UAAU;AACjC,UAAM,cAAc,GAAG;AACvB,WAAO;AAAA,EACT,SAAS,KAAK;AACZ,UAAM,QAAQ,MAAM,EAAE,MAAM,MAAM,MAAS;AAC3C,UAAM,GAAG,UAAU,EAAE,OAAO,KAAK,CAAC,EAAE,MAAM,MAAM,MAAS;AACzD,UAAM;AAAA,EACR;AACF;AAEA,eAAsB,6BACpB,UACA,YACA,YACA,cAC6B;AAC7B,QAAM,MAAM,KAAK,QAAQ,UAAU;AACnC,MAAI;AACJ,MAAI;AACF,QAAI,YAAY;AACd,2BAAqB,MAAM,yBAAyB,YAAY,UAAU;AAAA,IAC5E;AACA,QAAI,aAAc,OAAM,aAAa;AACrC,UAAM,OAAO,UAAU,UAAU;AACjC,UAAM,cAAc,GAAG;AACvB,WAAO;AAAA,EACT,SAAS,KAAK;AACZ,UAAM,GAAG,UAAU,EAAE,OAAO,KAAK,CAAC,EAAE,MAAM,MAAM,MAAS;AACzD,UAAM;AAAA,EACR;AACF;","names":[]}
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-C7HJ3NEI.js";
12
12
  import {
13
13
  writeFileAtomically
14
- } from "./chunk-AW4QUFQF.js";
14
+ } from "./chunk-BTNNL7ZW.js";
15
15
  import {
16
16
  isErrnoCode
17
17
  } from "./chunk-KNA3BXXL.js";
@@ -889,4 +889,4 @@ export {
889
889
  applyBriefingLocationContext,
890
890
  daySummaryAutoOptions
891
891
  };
892
- //# sourceMappingURL=chunk-MY7B3HYC.js.map
892
+ //# sourceMappingURL=chunk-CLCMDKTB.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  estimateTokenCount
3
3
  } from "./chunk-TOTT6S2V.js";
4
+ import {
5
+ isRecallDisclosure
6
+ } from "./chunk-QWWMS4AE.js";
4
7
  import {
5
8
  normalizeRetrievedMemoryProvenance
6
9
  } from "./chunk-I4WBNM3M.js";
7
- import {
8
- isRecallDisclosure
9
- } from "./chunk-RKDSELA3.js";
10
10
 
11
11
  // src/recall-xray.ts
12
12
  import { randomUUID } from "crypto";
@@ -312,4 +312,4 @@ export {
312
312
  RecallXrayBuilder,
313
313
  summarizeDisclosureTokens
314
314
  };
315
- //# sourceMappingURL=chunk-QPWUG2S3.js.map
315
+ //# sourceMappingURL=chunk-CYEK6Z3P.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  resolveDefaultNamespaceRoot
3
- } from "./chunk-CFCEJNOE.js";
3
+ } from "./chunk-6KHF6PAB.js";
4
4
  import {
5
5
  StorageManager
6
- } from "./chunk-6JIHC5AS.js";
6
+ } from "./chunk-37HCPM56.js";
7
7
  import {
8
8
  composeLocationDayBody,
9
9
  composeLocationDayMeta,
@@ -23,7 +23,7 @@ import {
23
23
  serializeLocationDay,
24
24
  updateLocationSourceDay,
25
25
  writeLocationDay
26
- } from "./chunk-MY7B3HYC.js";
26
+ } from "./chunk-CLCMDKTB.js";
27
27
  import {
28
28
  resolveNamespaceCapabilities
29
29
  } from "./chunk-2EMROIXS.js";
@@ -728,4 +728,4 @@ export {
728
728
  runLocationBackfill,
729
729
  runLocationCliCommand
730
730
  };
731
- //# sourceMappingURL=chunk-IHCYCE6D.js.map
731
+ //# sourceMappingURL=chunk-DJMVSUPK.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SupportPassportError,
3
3
  getOperation
4
- } from "./chunk-NGOZH7R5.js";
4
+ } from "./chunk-GVUW5XK5.js";
5
5
  import {
6
6
  abortError,
7
7
  isAbortError
@@ -499,4 +499,4 @@ export {
499
499
  buildSupportPassportPublicRequestHandler,
500
500
  composeSupportPassportExternalRequestHandlers
501
501
  };
502
- //# sourceMappingURL=chunk-HP4CU2ZA.js.map
502
+ //# sourceMappingURL=chunk-DST7HRSG.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  backupAndWriteRebuiltObservations,
3
3
  toHourBucketIso
4
- } from "./chunk-AXFWMRKI.js";
4
+ } from "./chunk-YQJCWR4R.js";
5
5
 
6
6
  // src/maintenance/migrate-observations.ts
7
7
  import path from "path";
@@ -156,4 +156,4 @@ async function migrateObservations(options) {
156
156
  export {
157
157
  migrateObservations
158
158
  };
159
- //# sourceMappingURL=chunk-IIFFC3RL.js.map
159
+ //# sourceMappingURL=chunk-EDR6CVWZ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  parseFrontmatter
3
- } from "./chunk-6JIHC5AS.js";
3
+ } from "./chunk-37HCPM56.js";
4
4
  import {
5
5
  activityDigestPath,
6
6
  isValidActivityDate
@@ -199,4 +199,4 @@ export {
199
199
  buildStandup,
200
200
  standupHelp
201
201
  };
202
- //# sourceMappingURL=chunk-AUWMKDKL.js.map
202
+ //# sourceMappingURL=chunk-EMVJU7WC.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  StorageManager
3
- } from "./chunk-6JIHC5AS.js";
3
+ } from "./chunk-37HCPM56.js";
4
4
  import {
5
5
  getCachedRuleMemories,
6
6
  setCachedRuleMemories
@@ -119,4 +119,4 @@ export {
119
119
  compareVerifiedSemanticRuleResults,
120
120
  searchVerifiedSemanticRules
121
121
  };
122
- //# sourceMappingURL=chunk-O6AYMAPJ.js.map
122
+ //# sourceMappingURL=chunk-ENNC3RZ6.js.map
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  drainPendingLifecycleForSyncOrThrow,
6
6
  drainPendingLifecycleLedgerForSync
7
- } from "./chunk-22DYJLFN.js";
7
+ } from "./chunk-XVC7JU2N.js";
8
8
  import {
9
9
  displayErrorDetail
10
10
  } from "./chunk-RL6NEVXT.js";
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-C7HJ3NEI.js";
15
15
  import {
16
16
  writeFileAtomically
17
- } from "./chunk-AW4QUFQF.js";
17
+ } from "./chunk-BTNNL7ZW.js";
18
18
  import {
19
19
  isSafeRouteNamespace
20
20
  } from "./chunk-PCXDUHQH.js";
@@ -181,4 +181,4 @@ export {
181
181
  offlineSyncStorageForSnapshot,
182
182
  drainPendingLifecycleForOfflineSync
183
183
  };
184
- //# sourceMappingURL=chunk-2JRB3Z5N.js.map
184
+ //# sourceMappingURL=chunk-EP5WXE2G.js.map
@@ -1,3 +1,8 @@
1
+ import {
2
+ coerceBool,
3
+ coerceNumber
4
+ } from "./chunk-PQVCH2AE.js";
5
+
1
6
  // src/correction/correction-contract.ts
2
7
  var MEMORY_CATEGORIES = [
3
8
  "fact",
@@ -23,6 +28,7 @@ var CORRECTION_ACTION_KINDS = [
23
28
  ];
24
29
  var CORRECTION_TEXT_MAX = 1e4;
25
30
  var REDACTION_PATTERN_MAX = 256;
31
+ var CORRECTION_MEMORY_ID_MAX = 512;
26
32
  function validateCorrectionRequest(request) {
27
33
  if (!request || typeof request !== "object") {
28
34
  throw new CorrectionContractError("CorrectionRequest must be an object.");
@@ -37,22 +43,45 @@ function validateCorrectionRequest(request) {
37
43
  );
38
44
  }
39
45
  const targetIds = Array.isArray(request.targetIds) ? request.targetIds.filter((id) => typeof id === "string" && id.length > 0) : void 0;
40
- if (targetIds !== void 0 && targetIds.length === 0) {
41
- return {
42
- text,
43
- ...request.sessionKey ? { sessionKey: request.sessionKey } : {},
44
- ...request.principal ? { principal: request.principal } : {},
45
- ...request.namespace ? { namespace: request.namespace } : {}
46
- };
46
+ const normalizedTargets = targetIds !== void 0 && targetIds.length === 0 ? void 0 : targetIds;
47
+ const duplicateOf = readDuplicateOf(request.duplicateOf);
48
+ if (duplicateOf) {
49
+ if (!normalizedTargets || normalizedTargets.length !== 1) {
50
+ throw new CorrectionContractError(
51
+ "CorrectionRequest.duplicateOf requires exactly one targetIds entry (the duplicate memory)."
52
+ );
53
+ }
54
+ if (normalizedTargets[0] === duplicateOf) {
55
+ throw new CorrectionContractError(
56
+ "CorrectionRequest.duplicateOf must be a different memory from targetIds."
57
+ );
58
+ }
47
59
  }
48
60
  return {
49
61
  text,
50
- ...targetIds ? { targetIds } : {},
62
+ ...normalizedTargets ? { targetIds: normalizedTargets } : {},
63
+ ...duplicateOf ? { duplicateOf } : {},
51
64
  ...request.sessionKey ? { sessionKey: request.sessionKey } : {},
52
65
  ...request.principal ? { principal: request.principal } : {},
53
66
  ...request.namespace ? { namespace: request.namespace } : {}
54
67
  };
55
68
  }
69
+ function readDuplicateOf(value) {
70
+ if (value === void 0 || value === null) return void 0;
71
+ if (typeof value !== "string") {
72
+ throw new CorrectionContractError("CorrectionRequest.duplicateOf must be a memory id string.");
73
+ }
74
+ const id = value.trim();
75
+ if (id.length === 0 || id !== value) {
76
+ throw new CorrectionContractError("CorrectionRequest.duplicateOf must be a non-empty memory id.");
77
+ }
78
+ if (id.length > CORRECTION_MEMORY_ID_MAX) {
79
+ throw new CorrectionContractError(
80
+ `CorrectionRequest.duplicateOf exceeds the ${CORRECTION_MEMORY_ID_MAX}-character limit (${id.length}).`
81
+ );
82
+ }
83
+ return id;
84
+ }
56
85
  function validateRedactionPattern(pattern) {
57
86
  if (typeof pattern !== "string") {
58
87
  throw new CorrectionContractError("redaction_rule.pattern must be a string.");
@@ -145,8 +174,21 @@ function validateCorrectionAction(action) {
145
174
  if (typeof a.loserId !== "string" || a.loserId.length === 0) {
146
175
  throw new CorrectionContractError("supersede.loserId is required.");
147
176
  }
148
- if (a.replacement !== void 0 && a.replacement !== null) {
149
- validateMemoryDraft(a.replacement);
177
+ {
178
+ const hasReplacement = a.replacement !== void 0 && a.replacement !== null;
179
+ const hasWinner = a.winnerId !== void 0 && a.winnerId !== null;
180
+ if (hasWinner) {
181
+ if (typeof a.winnerId !== "string" || a.winnerId.trim().length === 0 || a.winnerId !== a.winnerId.trim()) {
182
+ throw new CorrectionContractError("supersede.winnerId must be a non-empty memory id.");
183
+ }
184
+ if (a.winnerId === a.loserId) {
185
+ throw new CorrectionContractError("supersede.winnerId must differ from loserId.");
186
+ }
187
+ if (hasReplacement) {
188
+ throw new CorrectionContractError("supersede.winnerId cannot be combined with a replacement draft.");
189
+ }
190
+ }
191
+ if (hasReplacement) validateMemoryDraft(a.replacement);
150
192
  }
151
193
  break;
152
194
  case "edit":
@@ -229,6 +271,80 @@ var CorrectionContractError = class extends Error {
229
271
  }
230
272
  };
231
273
 
274
+ // src/correction/correction-config.ts
275
+ var DEFAULT_CORRECTION_CLASSIFY_TIMEOUT_MS = 45e3;
276
+ var MAX_CORRECTION_CLASSIFY_TIMEOUT_MS = 3e5;
277
+ function parseCorrectionConfig(cfg) {
278
+ return {
279
+ correctionEnabled: (() => {
280
+ const nested = cfg.correction?.enabled;
281
+ const raw = nested !== void 0 ? nested : cfg.correctionEnabled;
282
+ if (raw === void 0 || raw === null) return true;
283
+ const value = coerceBool(raw);
284
+ if (value === void 0) {
285
+ throw new Error(`Invalid correction.enabled: expected a boolean, got ${JSON.stringify(raw)}`);
286
+ }
287
+ return value;
288
+ })(),
289
+ correctionApplyRequiresConfirm: (() => {
290
+ const nested = cfg.correction?.applyRequiresConfirm;
291
+ const raw = nested !== void 0 ? nested : cfg.correctionApplyRequiresConfirm;
292
+ if (raw === void 0 || raw === null) return true;
293
+ const value = coerceBool(raw);
294
+ if (value === void 0) {
295
+ throw new Error(`Invalid correction.applyRequiresConfirm: expected a boolean, got ${JSON.stringify(raw)}`);
296
+ }
297
+ return value;
298
+ })(),
299
+ correctionMaxAffected: (() => {
300
+ const rawNested = cfg.correction?.maxAffected;
301
+ const raw = rawNested !== void 0 ? rawNested : cfg.correctionMaxAffected;
302
+ if (raw === void 0 || raw === null) return 10;
303
+ const n = coerceNumber(raw);
304
+ if (n === void 0 || !Number.isFinite(n) || n < 1 || !Number.isInteger(n)) {
305
+ throw new Error(`Invalid correction.maxAffected: expected an integer >= 1, got ${JSON.stringify(raw)}`);
306
+ }
307
+ return n;
308
+ })(),
309
+ correctionPlanTtlHours: (() => {
310
+ const nested = cfg.correction?.planTtlHours;
311
+ const fromNested = nested !== void 0 ? coerceNumber(nested) : void 0;
312
+ if (fromNested !== void 0 && fromNested >= 1) return fromNested;
313
+ if (nested !== void 0 && fromNested === void 0) {
314
+ throw new Error(`Invalid correction.planTtlHours: expected a number >= 1, got ${JSON.stringify(nested)}`);
315
+ }
316
+ if (fromNested !== void 0 && fromNested < 1) {
317
+ throw new Error(`Invalid correction.planTtlHours: expected a number >= 1, got ${JSON.stringify(nested)}`);
318
+ }
319
+ const fromFlat = coerceNumber(cfg.correctionPlanTtlHours);
320
+ if (fromFlat !== void 0 && fromFlat >= 1) return fromFlat;
321
+ if (cfg.correctionPlanTtlHours !== void 0 && fromFlat === void 0) {
322
+ throw new Error(
323
+ `Invalid correction.planTtlHours: expected a number >= 1, got ${JSON.stringify(cfg.correctionPlanTtlHours)}`
324
+ );
325
+ }
326
+ if (fromFlat !== void 0 && fromFlat < 1) {
327
+ throw new Error(
328
+ `Invalid correction.planTtlHours: expected a number >= 1, got ${JSON.stringify(cfg.correctionPlanTtlHours)}`
329
+ );
330
+ }
331
+ return 24;
332
+ })(),
333
+ correctionClassifyTimeoutMs: (() => {
334
+ const nested = cfg.correction?.classifyTimeoutMs;
335
+ const raw = nested !== void 0 ? nested : cfg.correctionClassifyTimeoutMs;
336
+ if (raw === void 0 || raw === null) return DEFAULT_CORRECTION_CLASSIFY_TIMEOUT_MS;
337
+ const n = coerceNumber(raw);
338
+ if (n === void 0 || !Number.isInteger(n) || n < 1 || n > MAX_CORRECTION_CLASSIFY_TIMEOUT_MS) {
339
+ throw new Error(
340
+ `Invalid correction.classifyTimeoutMs: expected an integer from 1 to ${MAX_CORRECTION_CLASSIFY_TIMEOUT_MS}, got ${JSON.stringify(raw)}`
341
+ );
342
+ }
343
+ return n;
344
+ })()
345
+ };
346
+ }
347
+
232
348
  export {
233
349
  MEMORY_CATEGORIES,
234
350
  CORRECTION_TEXT_MAX,
@@ -237,6 +353,9 @@ export {
237
353
  validateCorrectionAction,
238
354
  deterministicFallbackPlan,
239
355
  newPlanId,
240
- CorrectionContractError
356
+ CorrectionContractError,
357
+ DEFAULT_CORRECTION_CLASSIFY_TIMEOUT_MS,
358
+ MAX_CORRECTION_CLASSIFY_TIMEOUT_MS,
359
+ parseCorrectionConfig
241
360
  };
242
- //# sourceMappingURL=chunk-QLK3SL7Q.js.map
361
+ //# sourceMappingURL=chunk-ETSJD5IV.js.map