@remnic/core 10.0.92 → 10.0.93

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 (486) hide show
  1. package/dist/access-admin-ops-surface.js +331 -58
  2. package/dist/access-authorization-probe.js +2 -283
  3. package/dist/access-boundary.d.ts +1 -1
  4. package/dist/access-boundary.d.ts.map +1 -1
  5. package/dist/access-boundary.js +1 -282
  6. package/dist/access-cli.js +286 -302
  7. package/dist/access-cli.js.map +1 -1
  8. package/dist/access-coding-context-resolution.js +3 -3
  9. package/dist/access-extraction-force-flush.js +331 -58
  10. package/dist/access-http-briefing.js +331 -59
  11. package/dist/access-http-query.js +331 -60
  12. package/dist/access-http.js +329 -111
  13. package/dist/access-identity-continuity-surface.js +331 -58
  14. package/dist/access-lcm-surface.js +331 -58
  15. package/dist/access-mcp-frames.d.ts +20 -6
  16. package/dist/access-mcp-frames.d.ts.map +1 -1
  17. package/dist/access-mcp-frames.js +1 -1
  18. package/dist/access-mcp.d.ts +5 -0
  19. package/dist/access-mcp.d.ts.map +1 -1
  20. package/dist/access-mcp.js +329 -86
  21. package/dist/access-namespace-preflight.js +2 -282
  22. package/dist/access-observe-transcript.js +3 -3
  23. package/dist/access-observe-write-category.js +6 -6
  24. package/dist/access-observe-write-surface.js +331 -58
  25. package/dist/access-offline-manifest.js +12 -11
  26. package/dist/access-operations-batch.js +329 -63
  27. package/dist/access-operations.js +329 -72
  28. package/dist/access-recall-concurrency.js +331 -58
  29. package/dist/access-recall-diagnostics.js +5 -4
  30. package/dist/access-recall-response.js +331 -58
  31. package/dist/access-recall-surface.js +331 -58
  32. package/dist/access-schema.js +2 -2
  33. package/dist/access-service.js +334 -61
  34. package/dist/access-surface-catalog.js +6 -283
  35. package/dist/access-surface-catalog.js.map +1 -1
  36. package/dist/active-context-transform.js +1 -1
  37. package/dist/active-memory-bridge.js +3 -2
  38. package/dist/active-recall.js +35 -36
  39. package/dist/active-recall.js.map +1 -1
  40. package/dist/activity/journal-extract.d.ts +13 -1
  41. package/dist/activity/journal-extract.d.ts.map +1 -1
  42. package/dist/{auto-sync-3AZW7MXI.js → auto-sync-BO5YZKM6.js} +13 -15
  43. package/dist/{auto-sync-3AZW7MXI.js.map → auto-sync-BO5YZKM6.js.map} +1 -1
  44. package/dist/briefing.js +19 -19
  45. package/dist/buffer.js +16 -16
  46. package/dist/calibration.js +10 -10
  47. package/dist/{capsule-merge-2IIXFXN5.js → capsule-merge-6IDAYTKG.js} +6 -6
  48. package/dist/causal-consolidation.js +22 -22
  49. package/dist/{chunk-ATPWZ4F7.js → chunk-2LMA22UU.js} +5 -5
  50. package/dist/{chunk-RGUUBAT5.js → chunk-2WCLTWV2.js} +3 -3
  51. package/dist/{chunk-BQZEGOZ4.js → chunk-2YODOG2O.js} +2 -2
  52. package/dist/{chunk-WYG5UNDY.js → chunk-3AUDELZL.js} +2 -2
  53. package/dist/{chunk-N4KAE2NB.js → chunk-3CYOCE6U.js} +3 -3
  54. package/dist/{chunk-MB6ZJDN6.js → chunk-3FBAEPCU.js} +2 -2
  55. package/dist/{chunk-PIITB2YZ.js → chunk-3ZS3NUEI.js} +4 -4
  56. package/dist/{chunk-ANZZLRUX.js → chunk-4IVRQMZW.js} +2 -2
  57. package/dist/{chunk-63E37JCN.js → chunk-4RAJT5L2.js} +4 -4
  58. package/dist/{chunk-45VUHDV2.js → chunk-5CO5G4MN.js} +2 -2
  59. package/dist/{chunk-BRLXOZLM.js → chunk-5YT2IIFX.js} +729 -17
  60. package/dist/chunk-5YT2IIFX.js.map +1 -0
  61. package/dist/{chunk-E4IRW2FG.js → chunk-622V2AZA.js} +233 -40
  62. package/dist/chunk-622V2AZA.js.map +1 -0
  63. package/dist/{chunk-LUJCQQ3L.js → chunk-65HWAQ4F.js} +2 -2
  64. package/dist/{chunk-T67LUYCR.js → chunk-77NTFICT.js} +5 -5
  65. package/dist/chunk-A2WFUMUN.js +86 -0
  66. package/dist/chunk-A2WFUMUN.js.map +1 -0
  67. package/dist/{chunk-UE6RRXMF.js → chunk-A4F7OIC5.js} +2 -2
  68. package/dist/chunk-AHA5VQGP.js +117 -0
  69. package/dist/chunk-AHA5VQGP.js.map +1 -0
  70. package/dist/{chunk-SUSW74WU.js → chunk-ATG2PQ4V.js} +56 -5
  71. package/dist/chunk-ATG2PQ4V.js.map +1 -0
  72. package/dist/{chunk-U6UNF5ZS.js → chunk-B33YWUJV.js} +3 -3
  73. package/dist/{chunk-RRJBDXAQ.js → chunk-B377OKUP.js} +2 -2
  74. package/dist/{chunk-IUKYFTGW.js → chunk-B3DR2JBZ.js} +140 -125
  75. package/dist/chunk-B3DR2JBZ.js.map +1 -0
  76. package/dist/{chunk-ETZLQOUR.js → chunk-BGHCSLE5.js} +2 -2
  77. package/dist/{chunk-YYOMGOHB.js → chunk-BOK6BN5M.js} +2 -2
  78. package/dist/{chunk-OH7QLI6W.js → chunk-BPPUH5JM.js} +5 -5
  79. package/dist/{chunk-4J363OAA.js → chunk-BTI4C4MA.js} +2 -2
  80. package/dist/{chunk-O6ZSWHVR.js → chunk-C2KE5DMD.js} +4 -4
  81. package/dist/{chunk-47F6WWLQ.js → chunk-C73N66PR.js} +2 -2
  82. package/dist/{chunk-E3A7ELSG.js → chunk-CGJYL633.js} +2 -2
  83. package/dist/{chunk-WRT7GJ2D.js → chunk-CIWMTNHW.js} +4 -4
  84. package/dist/{chunk-O55EKIEC.js → chunk-D3ZKHLN2.js} +2 -2
  85. package/dist/{chunk-CD4BCCNP.js → chunk-DJ7WVEWX.js} +2 -2
  86. package/dist/{chunk-PWXPRVLK.js → chunk-EFL24KOI.js} +2 -2
  87. package/dist/{chunk-4CJTQHEG.js → chunk-ESLOLCD4.js} +3 -3
  88. package/dist/{chunk-6F42QONS.js → chunk-ETBVCRVL.js} +4 -4
  89. package/dist/{chunk-VILPVT4S.js → chunk-EZ47HOJ6.js} +4 -4
  90. package/dist/{chunk-EFYN5I7Z.js → chunk-F4QFU5IZ.js} +2 -2
  91. package/dist/{chunk-T6OZW2WR.js → chunk-FA7SLQ5X.js} +7 -1
  92. package/dist/chunk-FA7SLQ5X.js.map +1 -0
  93. package/dist/{chunk-7W3RXOIG.js → chunk-FMKILENU.js} +14 -14
  94. package/dist/{chunk-YLXETSAH.js → chunk-GCZJ7XRI.js} +2 -2
  95. package/dist/{chunk-5HFXGXE5.js → chunk-GQXOBKPL.js} +7 -9
  96. package/dist/{chunk-5HFXGXE5.js.map → chunk-GQXOBKPL.js.map} +1 -1
  97. package/dist/{chunk-UDKWFDV2.js → chunk-HLUHEMN4.js} +27 -3
  98. package/dist/chunk-HLUHEMN4.js.map +1 -0
  99. package/dist/{chunk-QFEDITXM.js → chunk-JNDMIAJ4.js} +2 -2
  100. package/dist/chunk-JTSSSR4L.js +359 -0
  101. package/dist/chunk-JTSSSR4L.js.map +1 -0
  102. package/dist/{chunk-5KBIOI4G.js → chunk-JVBAPAWZ.js} +217 -13
  103. package/dist/chunk-JVBAPAWZ.js.map +1 -0
  104. package/dist/{chunk-E5PPE4VA.js → chunk-K2VRKCPA.js} +2 -2
  105. package/dist/{chunk-MKRYQROF.js → chunk-LGEHAQHK.js} +4 -4
  106. package/dist/{chunk-7HTUYFR3.js → chunk-LLPMMMWG.js} +27 -10
  107. package/dist/chunk-LLPMMMWG.js.map +1 -0
  108. package/dist/{chunk-XYTQJD7F.js → chunk-LMJVP5CM.js} +2 -2
  109. package/dist/{chunk-FQKBJJYB.js → chunk-LPV72KRQ.js} +2 -2
  110. package/dist/{chunk-2LCRG2YV.js → chunk-M2XR6B6V.js} +2 -2
  111. package/dist/{chunk-P4WNBSTW.js → chunk-MH632KPO.js} +2 -2
  112. package/dist/{chunk-EQ4U73UH.js → chunk-MLAMXQAW.js} +14 -2
  113. package/dist/chunk-MLAMXQAW.js.map +1 -0
  114. package/dist/{chunk-ZU5JDLOH.js → chunk-MMRTPH3J.js} +2 -2
  115. package/dist/{chunk-PMJFRDJI.js → chunk-MUX7IL77.js} +2 -2
  116. package/dist/{chunk-HF3BKUVV.js → chunk-NAQ4A5IX.js} +7 -7
  117. package/dist/{chunk-TVIVY7KU.js → chunk-NED7IR7B.js} +4 -4
  118. package/dist/{chunk-6F5MJFXY.js → chunk-NHVAX7MH.js} +2 -2
  119. package/dist/{chunk-TG3R2SID.js → chunk-NMGHGTVR.js} +5 -5
  120. package/dist/{chunk-YCNIGRRF.js → chunk-NS7U4ZYU.js} +13 -117
  121. package/dist/chunk-NS7U4ZYU.js.map +1 -0
  122. package/dist/{chunk-NGHDW6UU.js → chunk-NUQEREIP.js} +2 -2
  123. package/dist/{chunk-5IIQU4JZ.js → chunk-OB72KNMF.js} +4 -4
  124. package/dist/{chunk-JV4S6VDH.js → chunk-OJXJWNFY.js} +2 -2
  125. package/dist/{chunk-QJPJXCS4.js → chunk-P3WRNWWM.js} +157 -4
  126. package/dist/chunk-P3WRNWWM.js.map +1 -0
  127. package/dist/{chunk-E6M225BJ.js → chunk-PC5DRBGD.js} +18 -8
  128. package/dist/chunk-PC5DRBGD.js.map +1 -0
  129. package/dist/{chunk-Z7JIZ42P.js → chunk-PRAUN6PN.js} +3 -3
  130. package/dist/{chunk-RWGRSKN5.js → chunk-PT4DZDJA.js} +2 -2
  131. package/dist/{chunk-7EPY3IQL.js → chunk-PZJQ46DH.js} +2 -2
  132. package/dist/{chunk-MXHMNKWG.js → chunk-QDESY76F.js} +3 -3
  133. package/dist/{chunk-I6QGI65T.js → chunk-QRMG4HK4.js} +3 -3
  134. package/dist/{chunk-ZU3NJNO7.js → chunk-QSF5SJAM.js} +4 -4
  135. package/dist/{chunk-5IYOKDM4.js → chunk-R23JWJD3.js} +5 -5
  136. package/dist/{chunk-RHQLIHMB.js → chunk-R4BBGPI2.js} +218 -218
  137. package/dist/chunk-R4BBGPI2.js.map +1 -0
  138. package/dist/{chunk-7GLJMDEQ.js → chunk-RM2YUFH6.js} +6 -6
  139. package/dist/{chunk-IPT2OY4B.js → chunk-RQFXZYTF.js} +35 -33
  140. package/dist/chunk-RQFXZYTF.js.map +1 -0
  141. package/dist/{chunk-AP6NCP3V.js → chunk-S3S72HRM.js} +8 -6
  142. package/dist/chunk-S3S72HRM.js.map +1 -0
  143. package/dist/{chunk-RIMK327Y.js → chunk-SGQPR5SX.js} +7 -7
  144. package/dist/{chunk-ZGFLIK5H.js → chunk-SPAKBUJY.js} +2 -2
  145. package/dist/{chunk-ER7XANP3.js → chunk-SQ3GEIEL.js} +4 -4
  146. package/dist/{chunk-BLJT6JP2.js → chunk-SVT5IA2H.js} +2 -2
  147. package/dist/{chunk-HVX4LPNY.js → chunk-T4KY6UYF.js} +5 -3
  148. package/dist/{chunk-HVX4LPNY.js.map → chunk-T4KY6UYF.js.map} +1 -1
  149. package/dist/{chunk-GVGAO3WV.js → chunk-TJ4F6H4H.js} +3 -3
  150. package/dist/{chunk-R6HMAIKM.js → chunk-TOSPNM4T.js} +2 -2
  151. package/dist/{chunk-HH5LY6RR.js → chunk-TRQE3RYR.js} +5 -5
  152. package/dist/{chunk-RMXS4I66.js → chunk-TVDJEUV5.js} +2 -2
  153. package/dist/{chunk-PLCYKAWH.js → chunk-TYRWSE4B.js} +2 -2
  154. package/dist/{chunk-B4QYQFGY.js → chunk-UBEKET2V.js} +383 -36
  155. package/dist/chunk-UBEKET2V.js.map +1 -0
  156. package/dist/{chunk-IQWUACVG.js → chunk-UHMHJX5G.js} +3 -3
  157. package/dist/{chunk-YODUDA6R.js → chunk-UN4RVUG2.js} +22 -22
  158. package/dist/{chunk-E6Z4FBX6.js → chunk-V2QSNFCT.js} +2 -2
  159. package/dist/{chunk-NBH6K6G5.js → chunk-V65H7MI6.js} +345 -16
  160. package/dist/chunk-V65H7MI6.js.map +1 -0
  161. package/dist/chunk-W54Z2MOP.js +4500 -0
  162. package/dist/chunk-W54Z2MOP.js.map +1 -0
  163. package/dist/{chunk-E7YZXWIS.js → chunk-WKSQTMU7.js} +2 -2
  164. package/dist/{chunk-RIZ5NUNN.js → chunk-WQ4XKIOX.js} +4 -4
  165. package/dist/{chunk-FSO3G4JJ.js → chunk-WQURALGV.js} +4995 -2747
  166. package/dist/chunk-WQURALGV.js.map +1 -0
  167. package/dist/{chunk-QEYTRFR3.js → chunk-X26YOFGS.js} +2 -2
  168. package/dist/{chunk-ITHZFHST.js → chunk-X2BVB74H.js} +2 -2
  169. package/dist/{chunk-XYKBWTWI.js → chunk-XIYLWEXC.js} +2 -2
  170. package/dist/{chunk-IBJ6U753.js → chunk-XKZBZOKV.js} +4 -4
  171. package/dist/{chunk-65AUYLU3.js → chunk-XPXHQI6N.js} +2 -2
  172. package/dist/{chunk-EXHXJETE.js → chunk-XRDYRWZI.js} +2 -2
  173. package/dist/chunk-XRWWCW4H.js +102 -0
  174. package/dist/chunk-XRWWCW4H.js.map +1 -0
  175. package/dist/chunk-YKJBSMMP.js +67137 -0
  176. package/dist/chunk-YKJBSMMP.js.map +1 -0
  177. package/dist/{chunk-2JSDPUKD.js → chunk-YMFPFXEX.js} +2 -2
  178. package/dist/{chunk-645WOU5I.js → chunk-ZDZJNXL6.js} +4 -4
  179. package/dist/{chunk-6TCXIRP5.js → chunk-ZKE4CO6B.js} +4 -4
  180. package/dist/{chunk-FNXQZGUS.js → chunk-ZSE774RV.js} +2 -2
  181. package/dist/cli.js +302 -184
  182. package/dist/coding/export-okf-codegraph.js +28 -28
  183. package/dist/compounding/engine.js +22 -23
  184. package/dist/config.js +35 -36
  185. package/dist/connectors/codex-materialize-runner.js +19 -19
  186. package/dist/connectors/index.js +20 -20
  187. package/dist/connectors/live/google-drive.d.ts +2 -0
  188. package/dist/connectors/live/google-drive.d.ts.map +1 -1
  189. package/dist/consolidation-provenance-check.js +4 -4
  190. package/dist/consolidation-undo.js +5 -5
  191. package/dist/contradiction/index.js +7 -6
  192. package/dist/{contradiction-scan-P2MHYFVG.js → contradiction-scan-IBPYGQZF.js} +4 -3
  193. package/dist/convergence-refresh.js +21 -21
  194. package/dist/corpus-watermark.js +22 -22
  195. package/dist/deep-recall-http-glue.js +2 -2
  196. package/dist/deep-recall-policy-llm.js +4 -4
  197. package/dist/direct-answer-wiring.js +2 -2
  198. package/dist/embedding-fallback.js +1 -1
  199. package/dist/entity-retrieval.js +20 -20
  200. package/dist/eval-trajectory-store.js +2 -2
  201. package/dist/eval-trajectory.js +2 -2
  202. package/dist/event-order-recall.js +2 -2
  203. package/dist/explicit-capture.d.ts +3 -2
  204. package/dist/explicit-capture.d.ts.map +1 -1
  205. package/dist/explicit-capture.js +530 -6
  206. package/dist/explicit-cue-recall.js +2 -2
  207. package/dist/external-wiki-access.js +2 -283
  208. package/dist/extraction-faithfulness.js +4 -4
  209. package/dist/extraction-judge.js +5 -5
  210. package/dist/extraction-normalization.js +1 -1
  211. package/dist/extraction-quote-grounding.d.ts.map +1 -1
  212. package/dist/extraction-quote-grounding.js +1 -1
  213. package/dist/extraction-source-grounding-rules.js +2 -2
  214. package/dist/extraction-source-grounding.js +3 -3
  215. package/dist/extraction.js +42 -43
  216. package/dist/fallback-llm-codex-subscription.js +2 -2
  217. package/dist/fallback-llm.js +3 -3
  218. package/dist/{first-start-migration-QFI7B5SH.js → first-start-migration-FILJH3RO.js} +6 -5
  219. package/dist/{first-start-migration-QFI7B5SH.js.map → first-start-migration-FILJH3RO.js.map} +1 -1
  220. package/dist/focused-list-recall.js +2 -2
  221. package/dist/harmonic-retrieval.js +19 -19
  222. package/dist/index.js +772 -793
  223. package/dist/lcm/index.js +2 -2
  224. package/dist/live-connectors-runner.js +2 -3
  225. package/dist/local-llm-config.js +2 -2
  226. package/dist/local-llm-helpers.d.ts +4 -0
  227. package/dist/local-llm-helpers.d.ts.map +1 -1
  228. package/dist/local-llm-helpers.js +3 -1
  229. package/dist/local-llm.d.ts +4 -1
  230. package/dist/local-llm.d.ts.map +1 -1
  231. package/dist/local-llm.js +4 -4
  232. package/dist/location/index.js +26 -28
  233. package/dist/maintenance/memory-governance.js +19 -19
  234. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +19 -19
  235. package/dist/maintenance/rebuild-memory-projection-runner.js +21 -21
  236. package/dist/maintenance/rebuild-memory-projection.js +20 -20
  237. package/dist/memory-browse-operations.js +2 -283
  238. package/dist/memory-browse.js +8 -7
  239. package/dist/memory-controller.js +2 -2
  240. package/dist/memory-subject.js +2 -2
  241. package/dist/namespaces/migrate.js +20 -20
  242. package/dist/namespaces/search.js +5 -5
  243. package/dist/namespaces/storage.js +19 -19
  244. package/dist/offline-sync-changeset-generations.js +1 -1
  245. package/dist/offline-sync-embedding-generation.js +1 -1
  246. package/dist/offline-sync-impression-drain.js +6 -6
  247. package/dist/offline-sync-snapshot-stream.js +1 -1
  248. package/dist/offline-sync.js +1 -1
  249. package/dist/operator-doctor-corpus.js +23 -23
  250. package/dist/operator-toolkit.js +57 -60
  251. package/dist/orchestration/backlog-scheduler.js +277 -293
  252. package/dist/orchestration/backlog-scheduler.js.map +1 -1
  253. package/dist/orchestration/buffer-drain-runner.js +277 -293
  254. package/dist/orchestration/extraction-run.d.ts +4 -0
  255. package/dist/orchestration/extraction-run.d.ts.map +1 -1
  256. package/dist/orchestration/fact-dedup-window.d.ts +1 -1
  257. package/dist/orchestration/fact-dedup-window.d.ts.map +1 -1
  258. package/dist/orchestration/maintenance.js +38 -41
  259. package/dist/orchestrator.d.ts +9 -11
  260. package/dist/orchestrator.d.ts.map +1 -1
  261. package/dist/orchestrator.js +289 -306
  262. package/dist/page-versioning.js +3 -3
  263. package/dist/qmd-daemon-session.js +2 -2
  264. package/dist/qmd.js +3 -3
  265. package/dist/recall-explain-renderer.js +1 -1
  266. package/dist/recall-navigation-operations.js +2 -283
  267. package/dist/recall-navigation.js +331 -58
  268. package/dist/recall-planner-llm.js +3 -3
  269. package/dist/recall-state-view-admission.js +6 -6
  270. package/dist/recall-why-service.js +10 -9
  271. package/dist/recall-why.js +4 -3
  272. package/dist/recall-xray-cli.js +2 -2
  273. package/dist/recall-xray-renderer.js +1 -1
  274. package/dist/reconcile/manifest.js +3 -3
  275. package/dist/{resolution-N7H3F2E4.js → resolution-OVVIF7ZY.js} +8 -7
  276. package/dist/response-guidance-recall.js +2 -2
  277. package/dist/resume-bundles.js +39 -40
  278. package/dist/salvage-envelope.js +4 -4
  279. package/dist/search/factory.js +4 -4
  280. package/dist/search/index.js +4 -4
  281. package/dist/semantic-consolidation.js +22 -22
  282. package/dist/semantic-rule-promotion.js +19 -19
  283. package/dist/semantic-rule-verifier.js +19 -19
  284. package/dist/shared-context/manager.js +2 -3
  285. package/dist/source-agent-qualifier.js +31 -32
  286. package/dist/standup/build.js +19 -19
  287. package/dist/storage/content-hash-index.d.ts +10 -0
  288. package/dist/storage/content-hash-index.d.ts.map +1 -1
  289. package/dist/storage.js +18 -18
  290. package/dist/subject-config.js +3 -3
  291. package/dist/summarizer.d.ts +4 -1
  292. package/dist/summarizer.d.ts.map +1 -1
  293. package/dist/summarizer.js +6 -6
  294. package/dist/support-passport/index.js +53 -297
  295. package/dist/targeted-fact-recall.js +2 -2
  296. package/dist/tier-routing.js +3 -2
  297. package/dist/{tier-stats-FQGQSFET.js → tier-stats-FXEUJN73.js} +6 -5
  298. package/dist/{tier-stats-FQGQSFET.js.map → tier-stats-FXEUJN73.js.map} +1 -1
  299. package/dist/transcript.js +2 -2
  300. package/dist/transfer/capsule-import.js +4 -4
  301. package/dist/transfer/export-okf.js +19 -19
  302. package/dist/verified-recall.js +19 -19
  303. package/dist/wearables/memory-gen.d.ts +5 -1
  304. package/dist/wearables/memory-gen.d.ts.map +1 -1
  305. package/dist/wearables/service.d.ts.map +1 -1
  306. package/dist/who-knows-cli.js +20 -20
  307. package/dist/who-knows.js +19 -19
  308. package/dist/write-envelope.js +3 -3
  309. package/package.json +2 -2
  310. package/src/access-boundary.ts +5 -1
  311. package/src/access-category-alias.test.ts +5 -0
  312. package/src/access-mcp-frames.test.ts +60 -5
  313. package/src/access-mcp-frames.ts +72 -18
  314. package/src/access-mcp.test.ts +66 -2
  315. package/src/access-mcp.ts +19 -13
  316. package/src/access-service-coding-write.test.ts +7 -0
  317. package/src/activity/journal-extract-storage.test.ts +31 -0
  318. package/src/activity/journal-extract.test.ts +1 -0
  319. package/src/activity/journal-extract.ts +24 -3
  320. package/src/connectors/live/google-drive.test.ts +39 -0
  321. package/src/connectors/live/google-drive.ts +41 -12
  322. package/src/explicit-capture.test.ts +109 -17
  323. package/src/explicit-capture.ts +90 -37
  324. package/src/extraction-quote-grounding.test.ts +20 -0
  325. package/src/extraction-quote-grounding.ts +21 -11
  326. package/src/fact-dedup-window.test.ts +37 -0
  327. package/src/local-llm-helpers.ts +12 -0
  328. package/src/local-llm-shutdown.test.ts +194 -0
  329. package/src/local-llm.ts +32 -30
  330. package/src/orchestration/extraction-run.ts +12 -3
  331. package/src/orchestration/fact-dedup-window.ts +5 -1
  332. package/src/orchestrator-connector-dedup.test.ts +9 -5
  333. package/src/orchestrator.ts +47 -50
  334. package/src/storage/content-hash-index.ts +27 -2
  335. package/src/storage-fact-hash-publish-failure.test.ts +87 -0
  336. package/src/summarizer-shutdown.test.ts +195 -0
  337. package/src/summarizer.ts +15 -2
  338. package/src/wearables/memory-gen.test.ts +20 -0
  339. package/src/wearables/memory-gen.ts +14 -7
  340. package/src/wearables/service.ts +14 -1
  341. package/src/wearables/storage-io.test.ts +25 -0
  342. package/dist/chunk-2FGLEF7C.js +0 -61
  343. package/dist/chunk-2FGLEF7C.js.map +0 -1
  344. package/dist/chunk-3RLK65ZK.js +0 -203
  345. package/dist/chunk-3RLK65ZK.js.map +0 -1
  346. package/dist/chunk-4WR2OD7K.js +0 -43
  347. package/dist/chunk-4WR2OD7K.js.map +0 -1
  348. package/dist/chunk-5KBIOI4G.js.map +0 -1
  349. package/dist/chunk-5M5M22GW.js +0 -346
  350. package/dist/chunk-5M5M22GW.js.map +0 -1
  351. package/dist/chunk-7HTUYFR3.js.map +0 -1
  352. package/dist/chunk-AP6NCP3V.js.map +0 -1
  353. package/dist/chunk-B4QYQFGY.js.map +0 -1
  354. package/dist/chunk-BJRTMNCB.js +0 -1919
  355. package/dist/chunk-BJRTMNCB.js.map +0 -1
  356. package/dist/chunk-BRLXOZLM.js.map +0 -1
  357. package/dist/chunk-BSACVS6R.js +0 -621
  358. package/dist/chunk-BSACVS6R.js.map +0 -1
  359. package/dist/chunk-DKAA2IHQ.js +0 -3644
  360. package/dist/chunk-DKAA2IHQ.js.map +0 -1
  361. package/dist/chunk-E4IRW2FG.js.map +0 -1
  362. package/dist/chunk-E6M225BJ.js.map +0 -1
  363. package/dist/chunk-EQ4U73UH.js.map +0 -1
  364. package/dist/chunk-ETSJD5IV.js +0 -361
  365. package/dist/chunk-ETSJD5IV.js.map +0 -1
  366. package/dist/chunk-F55YQP7N.js +0 -336
  367. package/dist/chunk-F55YQP7N.js.map +0 -1
  368. package/dist/chunk-FHGWKODN.js +0 -2300
  369. package/dist/chunk-FHGWKODN.js.map +0 -1
  370. package/dist/chunk-FLRP63GU.js +0 -32219
  371. package/dist/chunk-FLRP63GU.js.map +0 -1
  372. package/dist/chunk-FSO3G4JJ.js.map +0 -1
  373. package/dist/chunk-ID6JGIMD.js +0 -25
  374. package/dist/chunk-ID6JGIMD.js.map +0 -1
  375. package/dist/chunk-IGLJNHOX.js +0 -62
  376. package/dist/chunk-IGLJNHOX.js.map +0 -1
  377. package/dist/chunk-IPT2OY4B.js.map +0 -1
  378. package/dist/chunk-IUKYFTGW.js.map +0 -1
  379. package/dist/chunk-NBH6K6G5.js.map +0 -1
  380. package/dist/chunk-NTRUKAAE.js +0 -223
  381. package/dist/chunk-NTRUKAAE.js.map +0 -1
  382. package/dist/chunk-OGXXGHW6.js +0 -223
  383. package/dist/chunk-OGXXGHW6.js.map +0 -1
  384. package/dist/chunk-PPCLZ4JU.js +0 -28
  385. package/dist/chunk-PPCLZ4JU.js.map +0 -1
  386. package/dist/chunk-QJPJXCS4.js.map +0 -1
  387. package/dist/chunk-R2LBF4HH.js +0 -729
  388. package/dist/chunk-R2LBF4HH.js.map +0 -1
  389. package/dist/chunk-RHQLIHMB.js.map +0 -1
  390. package/dist/chunk-RRTVGD3J.js +0 -792
  391. package/dist/chunk-RRTVGD3J.js.map +0 -1
  392. package/dist/chunk-SUSW74WU.js.map +0 -1
  393. package/dist/chunk-T6OZW2WR.js.map +0 -1
  394. package/dist/chunk-UDKWFDV2.js.map +0 -1
  395. package/dist/chunk-V7IZKJI3.js +0 -22
  396. package/dist/chunk-V7IZKJI3.js.map +0 -1
  397. package/dist/chunk-X562NQFA.js +0 -10144
  398. package/dist/chunk-X562NQFA.js.map +0 -1
  399. package/dist/chunk-XDSCJOH7.js +0 -3991
  400. package/dist/chunk-XDSCJOH7.js.map +0 -1
  401. package/dist/chunk-YCNIGRRF.js.map +0 -1
  402. package/dist/chunk-ZTTCDQ4I.js +0 -18796
  403. package/dist/chunk-ZTTCDQ4I.js.map +0 -1
  404. /package/dist/{capsule-merge-2IIXFXN5.js.map → capsule-merge-6IDAYTKG.js.map} +0 -0
  405. /package/dist/{chunk-ATPWZ4F7.js.map → chunk-2LMA22UU.js.map} +0 -0
  406. /package/dist/{chunk-RGUUBAT5.js.map → chunk-2WCLTWV2.js.map} +0 -0
  407. /package/dist/{chunk-BQZEGOZ4.js.map → chunk-2YODOG2O.js.map} +0 -0
  408. /package/dist/{chunk-WYG5UNDY.js.map → chunk-3AUDELZL.js.map} +0 -0
  409. /package/dist/{chunk-N4KAE2NB.js.map → chunk-3CYOCE6U.js.map} +0 -0
  410. /package/dist/{chunk-MB6ZJDN6.js.map → chunk-3FBAEPCU.js.map} +0 -0
  411. /package/dist/{chunk-PIITB2YZ.js.map → chunk-3ZS3NUEI.js.map} +0 -0
  412. /package/dist/{chunk-ANZZLRUX.js.map → chunk-4IVRQMZW.js.map} +0 -0
  413. /package/dist/{chunk-63E37JCN.js.map → chunk-4RAJT5L2.js.map} +0 -0
  414. /package/dist/{chunk-45VUHDV2.js.map → chunk-5CO5G4MN.js.map} +0 -0
  415. /package/dist/{chunk-LUJCQQ3L.js.map → chunk-65HWAQ4F.js.map} +0 -0
  416. /package/dist/{chunk-T67LUYCR.js.map → chunk-77NTFICT.js.map} +0 -0
  417. /package/dist/{chunk-UE6RRXMF.js.map → chunk-A4F7OIC5.js.map} +0 -0
  418. /package/dist/{chunk-U6UNF5ZS.js.map → chunk-B33YWUJV.js.map} +0 -0
  419. /package/dist/{chunk-RRJBDXAQ.js.map → chunk-B377OKUP.js.map} +0 -0
  420. /package/dist/{chunk-ETZLQOUR.js.map → chunk-BGHCSLE5.js.map} +0 -0
  421. /package/dist/{chunk-YYOMGOHB.js.map → chunk-BOK6BN5M.js.map} +0 -0
  422. /package/dist/{chunk-OH7QLI6W.js.map → chunk-BPPUH5JM.js.map} +0 -0
  423. /package/dist/{chunk-4J363OAA.js.map → chunk-BTI4C4MA.js.map} +0 -0
  424. /package/dist/{chunk-O6ZSWHVR.js.map → chunk-C2KE5DMD.js.map} +0 -0
  425. /package/dist/{chunk-47F6WWLQ.js.map → chunk-C73N66PR.js.map} +0 -0
  426. /package/dist/{chunk-E3A7ELSG.js.map → chunk-CGJYL633.js.map} +0 -0
  427. /package/dist/{chunk-WRT7GJ2D.js.map → chunk-CIWMTNHW.js.map} +0 -0
  428. /package/dist/{chunk-O55EKIEC.js.map → chunk-D3ZKHLN2.js.map} +0 -0
  429. /package/dist/{chunk-CD4BCCNP.js.map → chunk-DJ7WVEWX.js.map} +0 -0
  430. /package/dist/{chunk-PWXPRVLK.js.map → chunk-EFL24KOI.js.map} +0 -0
  431. /package/dist/{chunk-4CJTQHEG.js.map → chunk-ESLOLCD4.js.map} +0 -0
  432. /package/dist/{chunk-6F42QONS.js.map → chunk-ETBVCRVL.js.map} +0 -0
  433. /package/dist/{chunk-VILPVT4S.js.map → chunk-EZ47HOJ6.js.map} +0 -0
  434. /package/dist/{chunk-EFYN5I7Z.js.map → chunk-F4QFU5IZ.js.map} +0 -0
  435. /package/dist/{chunk-7W3RXOIG.js.map → chunk-FMKILENU.js.map} +0 -0
  436. /package/dist/{chunk-YLXETSAH.js.map → chunk-GCZJ7XRI.js.map} +0 -0
  437. /package/dist/{chunk-QFEDITXM.js.map → chunk-JNDMIAJ4.js.map} +0 -0
  438. /package/dist/{chunk-E5PPE4VA.js.map → chunk-K2VRKCPA.js.map} +0 -0
  439. /package/dist/{chunk-MKRYQROF.js.map → chunk-LGEHAQHK.js.map} +0 -0
  440. /package/dist/{chunk-XYTQJD7F.js.map → chunk-LMJVP5CM.js.map} +0 -0
  441. /package/dist/{chunk-FQKBJJYB.js.map → chunk-LPV72KRQ.js.map} +0 -0
  442. /package/dist/{chunk-2LCRG2YV.js.map → chunk-M2XR6B6V.js.map} +0 -0
  443. /package/dist/{chunk-P4WNBSTW.js.map → chunk-MH632KPO.js.map} +0 -0
  444. /package/dist/{chunk-ZU5JDLOH.js.map → chunk-MMRTPH3J.js.map} +0 -0
  445. /package/dist/{chunk-PMJFRDJI.js.map → chunk-MUX7IL77.js.map} +0 -0
  446. /package/dist/{chunk-HF3BKUVV.js.map → chunk-NAQ4A5IX.js.map} +0 -0
  447. /package/dist/{chunk-TVIVY7KU.js.map → chunk-NED7IR7B.js.map} +0 -0
  448. /package/dist/{chunk-6F5MJFXY.js.map → chunk-NHVAX7MH.js.map} +0 -0
  449. /package/dist/{chunk-TG3R2SID.js.map → chunk-NMGHGTVR.js.map} +0 -0
  450. /package/dist/{chunk-NGHDW6UU.js.map → chunk-NUQEREIP.js.map} +0 -0
  451. /package/dist/{chunk-5IIQU4JZ.js.map → chunk-OB72KNMF.js.map} +0 -0
  452. /package/dist/{chunk-JV4S6VDH.js.map → chunk-OJXJWNFY.js.map} +0 -0
  453. /package/dist/{chunk-Z7JIZ42P.js.map → chunk-PRAUN6PN.js.map} +0 -0
  454. /package/dist/{chunk-RWGRSKN5.js.map → chunk-PT4DZDJA.js.map} +0 -0
  455. /package/dist/{chunk-7EPY3IQL.js.map → chunk-PZJQ46DH.js.map} +0 -0
  456. /package/dist/{chunk-MXHMNKWG.js.map → chunk-QDESY76F.js.map} +0 -0
  457. /package/dist/{chunk-I6QGI65T.js.map → chunk-QRMG4HK4.js.map} +0 -0
  458. /package/dist/{chunk-ZU3NJNO7.js.map → chunk-QSF5SJAM.js.map} +0 -0
  459. /package/dist/{chunk-5IYOKDM4.js.map → chunk-R23JWJD3.js.map} +0 -0
  460. /package/dist/{chunk-7GLJMDEQ.js.map → chunk-RM2YUFH6.js.map} +0 -0
  461. /package/dist/{chunk-RIMK327Y.js.map → chunk-SGQPR5SX.js.map} +0 -0
  462. /package/dist/{chunk-ZGFLIK5H.js.map → chunk-SPAKBUJY.js.map} +0 -0
  463. /package/dist/{chunk-ER7XANP3.js.map → chunk-SQ3GEIEL.js.map} +0 -0
  464. /package/dist/{chunk-BLJT6JP2.js.map → chunk-SVT5IA2H.js.map} +0 -0
  465. /package/dist/{chunk-GVGAO3WV.js.map → chunk-TJ4F6H4H.js.map} +0 -0
  466. /package/dist/{chunk-R6HMAIKM.js.map → chunk-TOSPNM4T.js.map} +0 -0
  467. /package/dist/{chunk-HH5LY6RR.js.map → chunk-TRQE3RYR.js.map} +0 -0
  468. /package/dist/{chunk-RMXS4I66.js.map → chunk-TVDJEUV5.js.map} +0 -0
  469. /package/dist/{chunk-PLCYKAWH.js.map → chunk-TYRWSE4B.js.map} +0 -0
  470. /package/dist/{chunk-IQWUACVG.js.map → chunk-UHMHJX5G.js.map} +0 -0
  471. /package/dist/{chunk-YODUDA6R.js.map → chunk-UN4RVUG2.js.map} +0 -0
  472. /package/dist/{chunk-E6Z4FBX6.js.map → chunk-V2QSNFCT.js.map} +0 -0
  473. /package/dist/{chunk-E7YZXWIS.js.map → chunk-WKSQTMU7.js.map} +0 -0
  474. /package/dist/{chunk-RIZ5NUNN.js.map → chunk-WQ4XKIOX.js.map} +0 -0
  475. /package/dist/{chunk-QEYTRFR3.js.map → chunk-X26YOFGS.js.map} +0 -0
  476. /package/dist/{chunk-ITHZFHST.js.map → chunk-X2BVB74H.js.map} +0 -0
  477. /package/dist/{chunk-XYKBWTWI.js.map → chunk-XIYLWEXC.js.map} +0 -0
  478. /package/dist/{chunk-IBJ6U753.js.map → chunk-XKZBZOKV.js.map} +0 -0
  479. /package/dist/{chunk-65AUYLU3.js.map → chunk-XPXHQI6N.js.map} +0 -0
  480. /package/dist/{chunk-EXHXJETE.js.map → chunk-XRDYRWZI.js.map} +0 -0
  481. /package/dist/{chunk-2JSDPUKD.js.map → chunk-YMFPFXEX.js.map} +0 -0
  482. /package/dist/{chunk-645WOU5I.js.map → chunk-ZDZJNXL6.js.map} +0 -0
  483. /package/dist/{chunk-6TCXIRP5.js.map → chunk-ZKE4CO6B.js.map} +0 -0
  484. /package/dist/{chunk-FNXQZGUS.js.map → chunk-ZSE774RV.js.map} +0 -0
  485. /package/dist/{contradiction-scan-P2MHYFVG.js.map → contradiction-scan-IBPYGQZF.js.map} +0 -0
  486. /package/dist/{resolution-N7H3F2E4.js.map → resolution-OVVIF7ZY.js.map} +0 -0
@@ -11,6 +11,9 @@ import {
11
11
  import {
12
12
  parseLocationConfig
13
13
  } from "./chunk-QNJQCLI6.js";
14
+ import {
15
+ parseCodingKnowledgeConfig
16
+ } from "./chunk-FEHIOYML.js";
14
17
  import {
15
18
  PRE_ACTION_GATE_DEFAULT_TIMEOUT_MS,
16
19
  normalizeActionIntent,
@@ -18,7 +21,7 @@ import {
18
21
  } from "./chunk-CIEEYVUB.js";
19
22
  import {
20
23
  parseSubjectRuntimeConfig
21
- } from "./chunk-WYG5UNDY.js";
24
+ } from "./chunk-3AUDELZL.js";
22
25
  import {
23
26
  parseRecallStandingBlock,
24
27
  parseStandingBlockFreshDays,
@@ -34,15 +37,24 @@ import {
34
37
  parseRecallRecognitionTier,
35
38
  parseRecognitionIndexMaxEntries
36
39
  } from "./chunk-4KQIWY4A.js";
40
+ import {
41
+ parseRecallStateViews
42
+ } from "./chunk-EH3HNCAM.js";
43
+ import {
44
+ parseRecallNavigationConfig
45
+ } from "./chunk-LVTT5AUG.js";
37
46
  import {
38
47
  parseRecallConcurrencyConfig
39
48
  } from "./chunk-6ZMAMSHS.js";
40
49
  import {
41
50
  parseProjectionRebuildScheduleConfig
42
51
  } from "./chunk-EWMRFW3F.js";
52
+ import {
53
+ parseReplicaPeersConfig
54
+ } from "./chunk-WNIUPHWV.js";
43
55
  import {
44
56
  parseLocalLlmConfig
45
- } from "./chunk-O6ZSWHVR.js";
57
+ } from "./chunk-C2KE5DMD.js";
46
58
  import {
47
59
  parseGraphPathScoringConfig
48
60
  } from "./chunk-6ZN34ISG.js";
@@ -56,6 +68,9 @@ import {
56
68
  import {
57
69
  parseExternalWikiRoots
58
70
  } from "./chunk-NDNTNE3S.js";
71
+ import {
72
+ parseExternalWikiRecallGuard
73
+ } from "./chunk-JV3C2MNQ.js";
59
74
  import {
60
75
  resolveEmitLegacyTools,
61
76
  resolveNamespaceCatalogEnabled
@@ -63,6 +78,9 @@ import {
63
78
  import {
64
79
  parseDependencyPropagationConfig
65
80
  } from "./chunk-VUDMT5CP.js";
81
+ import {
82
+ parseDeepRecallConfig
83
+ } from "./chunk-IEEV27BC.js";
66
84
  import {
67
85
  parseContradictionLocalizationConfig,
68
86
  parseContradictionScanConfig
@@ -81,37 +99,6 @@ import {
81
99
  import {
82
100
  parseSecurityConfig
83
101
  } from "./chunk-G2XTGEGL.js";
84
- import {
85
- parseBoundedJsonlStateConfig
86
- } from "./chunk-KFZY2OFH.js";
87
- import {
88
- parseActiveContextFields
89
- } from "./chunk-B32WYRXX.js";
90
- import {
91
- parseBackgroundGeneration
92
- } from "./chunk-27NO2KVB.js";
93
- import {
94
- MEMORY_CATEGORIES,
95
- parseCorrectionConfig
96
- } from "./chunk-ETSJD5IV.js";
97
- import {
98
- parseCodingKnowledgeConfig
99
- } from "./chunk-FEHIOYML.js";
100
- import {
101
- parseRecallStateViews
102
- } from "./chunk-EH3HNCAM.js";
103
- import {
104
- parseRecallNavigationConfig
105
- } from "./chunk-LVTT5AUG.js";
106
- import {
107
- parseReplicaPeersConfig
108
- } from "./chunk-WNIUPHWV.js";
109
- import {
110
- parseExternalWikiRecallGuard
111
- } from "./chunk-JV3C2MNQ.js";
112
- import {
113
- parseDeepRecallConfig
114
- } from "./chunk-IEEV27BC.js";
115
102
  import {
116
103
  parseSkillProjectionConfig
117
104
  } from "./chunk-236PXYG7.js";
@@ -128,12 +115,21 @@ import {
128
115
  normalizeRecallTokenSet,
129
116
  normalizeRecallTokens
130
117
  } from "./chunk-YCVB7X56.js";
118
+ import {
119
+ parseBoundedJsonlStateConfig
120
+ } from "./chunk-KFZY2OFH.js";
121
+ import {
122
+ parseActiveContextFields
123
+ } from "./chunk-B32WYRXX.js";
131
124
  import {
132
125
  coerceBool,
133
126
  coerceBooleanLike,
134
127
  coerceInstallExtension,
135
128
  coerceNumber
136
129
  } from "./chunk-PQVCH2AE.js";
130
+ import {
131
+ parseBackgroundGeneration
132
+ } from "./chunk-27NO2KVB.js";
137
133
  import {
138
134
  parseConvergeConfig
139
135
  } from "./chunk-EHHQJTAU.js";
@@ -142,10 +138,10 @@ import {
142
138
  } from "./chunk-7RJUVTVF.js";
143
139
  import {
144
140
  excludeSupportPassportPrivateMemories
145
- } from "./chunk-YCNIGRRF.js";
141
+ } from "./chunk-NS7U4ZYU.js";
146
142
  import {
147
143
  STRUCTURED_ATTRIBUTE_LIMITS
148
- } from "./chunk-QEYTRFR3.js";
144
+ } from "./chunk-X26YOFGS.js";
149
145
  import {
150
146
  parseOfflineSyncExcludes
151
147
  } from "./chunk-63LFM77Z.js";
@@ -172,6 +168,80 @@ import {
172
168
  // src/config.ts
173
169
  import path2 from "path";
174
170
 
171
+ // src/correction/correction-config.ts
172
+ var DEFAULT_CORRECTION_CLASSIFY_TIMEOUT_MS = 45e3;
173
+ var MAX_CORRECTION_CLASSIFY_TIMEOUT_MS = 3e5;
174
+ function parseCorrectionConfig(cfg) {
175
+ return {
176
+ correctionEnabled: (() => {
177
+ const nested = cfg.correction?.enabled;
178
+ const raw = nested !== void 0 ? nested : cfg.correctionEnabled;
179
+ if (raw === void 0 || raw === null) return true;
180
+ const value = coerceBool(raw);
181
+ if (value === void 0) {
182
+ throw new Error(`Invalid correction.enabled: expected a boolean, got ${JSON.stringify(raw)}`);
183
+ }
184
+ return value;
185
+ })(),
186
+ correctionApplyRequiresConfirm: (() => {
187
+ const nested = cfg.correction?.applyRequiresConfirm;
188
+ const raw = nested !== void 0 ? nested : cfg.correctionApplyRequiresConfirm;
189
+ if (raw === void 0 || raw === null) return true;
190
+ const value = coerceBool(raw);
191
+ if (value === void 0) {
192
+ throw new Error(`Invalid correction.applyRequiresConfirm: expected a boolean, got ${JSON.stringify(raw)}`);
193
+ }
194
+ return value;
195
+ })(),
196
+ correctionMaxAffected: (() => {
197
+ const rawNested = cfg.correction?.maxAffected;
198
+ const raw = rawNested !== void 0 ? rawNested : cfg.correctionMaxAffected;
199
+ if (raw === void 0 || raw === null) return 10;
200
+ const n = coerceNumber(raw);
201
+ if (n === void 0 || !Number.isFinite(n) || n < 1 || !Number.isInteger(n)) {
202
+ throw new Error(`Invalid correction.maxAffected: expected an integer >= 1, got ${JSON.stringify(raw)}`);
203
+ }
204
+ return n;
205
+ })(),
206
+ correctionPlanTtlHours: (() => {
207
+ const nested = cfg.correction?.planTtlHours;
208
+ const fromNested = nested !== void 0 ? coerceNumber(nested) : void 0;
209
+ if (fromNested !== void 0 && fromNested >= 1) return fromNested;
210
+ if (nested !== void 0 && fromNested === void 0) {
211
+ throw new Error(`Invalid correction.planTtlHours: expected a number >= 1, got ${JSON.stringify(nested)}`);
212
+ }
213
+ if (fromNested !== void 0 && fromNested < 1) {
214
+ throw new Error(`Invalid correction.planTtlHours: expected a number >= 1, got ${JSON.stringify(nested)}`);
215
+ }
216
+ const fromFlat = coerceNumber(cfg.correctionPlanTtlHours);
217
+ if (fromFlat !== void 0 && fromFlat >= 1) return fromFlat;
218
+ if (cfg.correctionPlanTtlHours !== void 0 && fromFlat === void 0) {
219
+ throw new Error(
220
+ `Invalid correction.planTtlHours: expected a number >= 1, got ${JSON.stringify(cfg.correctionPlanTtlHours)}`
221
+ );
222
+ }
223
+ if (fromFlat !== void 0 && fromFlat < 1) {
224
+ throw new Error(
225
+ `Invalid correction.planTtlHours: expected a number >= 1, got ${JSON.stringify(cfg.correctionPlanTtlHours)}`
226
+ );
227
+ }
228
+ return 24;
229
+ })(),
230
+ correctionClassifyTimeoutMs: (() => {
231
+ const nested = cfg.correction?.classifyTimeoutMs;
232
+ const raw = nested !== void 0 ? nested : cfg.correctionClassifyTimeoutMs;
233
+ if (raw === void 0 || raw === null) return DEFAULT_CORRECTION_CLASSIFY_TIMEOUT_MS;
234
+ const n = coerceNumber(raw);
235
+ if (n === void 0 || !Number.isInteger(n) || n < 1 || n > MAX_CORRECTION_CLASSIFY_TIMEOUT_MS) {
236
+ throw new Error(
237
+ `Invalid correction.classifyTimeoutMs: expected an integer from 1 to ${MAX_CORRECTION_CLASSIFY_TIMEOUT_MS}, got ${JSON.stringify(raw)}`
238
+ );
239
+ }
240
+ return n;
241
+ })()
242
+ };
243
+ }
244
+
175
245
  // src/procedural/maintenance-config.ts
176
246
  function parseProceduralMaintenanceConfig(raw) {
177
247
  if (raw !== void 0 && (raw === null || typeof raw !== "object" || Array.isArray(raw))) {
@@ -1115,6 +1185,274 @@ async function applyNoveltyGate(opts) {
1115
1185
  }
1116
1186
  }
1117
1187
 
1188
+ // src/correction/correction-contract.ts
1189
+ var MEMORY_CATEGORIES = [
1190
+ "fact",
1191
+ "preference",
1192
+ "correction",
1193
+ "entity",
1194
+ "decision",
1195
+ "relationship",
1196
+ "principle",
1197
+ "commitment",
1198
+ "moment",
1199
+ "skill",
1200
+ "rule",
1201
+ "procedure",
1202
+ "reasoning_trace"
1203
+ ];
1204
+ var CORRECTION_ACTION_KINDS = [
1205
+ "supersede",
1206
+ "edit",
1207
+ "retract",
1208
+ "rescope",
1209
+ "redaction_rule"
1210
+ ];
1211
+ var CORRECTION_TEXT_MAX = 1e4;
1212
+ var REDACTION_PATTERN_MAX = 256;
1213
+ var CORRECTION_MEMORY_ID_MAX = 512;
1214
+ function validateCorrectionRequest(request) {
1215
+ if (!request || typeof request !== "object") {
1216
+ throw new CorrectionContractError("CorrectionRequest must be an object.");
1217
+ }
1218
+ const text = typeof request.text === "string" ? request.text.trim() : "";
1219
+ if (text.length === 0) {
1220
+ throw new CorrectionContractError("CorrectionRequest.text is required and must be non-empty.");
1221
+ }
1222
+ if (text.length > CORRECTION_TEXT_MAX) {
1223
+ throw new CorrectionContractError(
1224
+ `CorrectionRequest.text exceeds the ${CORRECTION_TEXT_MAX}-character limit (${text.length}).`
1225
+ );
1226
+ }
1227
+ const targetIds = Array.isArray(request.targetIds) ? request.targetIds.filter((id) => typeof id === "string" && id.length > 0) : void 0;
1228
+ const normalizedTargets = targetIds !== void 0 && targetIds.length === 0 ? void 0 : targetIds;
1229
+ const duplicateOf = readDuplicateOf(request.duplicateOf);
1230
+ if (duplicateOf) {
1231
+ if (!normalizedTargets || normalizedTargets.length !== 1) {
1232
+ throw new CorrectionContractError(
1233
+ "CorrectionRequest.duplicateOf requires exactly one targetIds entry (the duplicate memory)."
1234
+ );
1235
+ }
1236
+ if (normalizedTargets[0] === duplicateOf) {
1237
+ throw new CorrectionContractError(
1238
+ "CorrectionRequest.duplicateOf must be a different memory from targetIds."
1239
+ );
1240
+ }
1241
+ }
1242
+ return {
1243
+ text,
1244
+ ...normalizedTargets ? { targetIds: normalizedTargets } : {},
1245
+ ...duplicateOf ? { duplicateOf } : {},
1246
+ ...request.sessionKey ? { sessionKey: request.sessionKey } : {},
1247
+ ...request.principal ? { principal: request.principal } : {},
1248
+ ...request.namespace ? { namespace: request.namespace } : {}
1249
+ };
1250
+ }
1251
+ function readDuplicateOf(value) {
1252
+ if (value === void 0 || value === null) return void 0;
1253
+ if (typeof value !== "string") {
1254
+ throw new CorrectionContractError("CorrectionRequest.duplicateOf must be a memory id string.");
1255
+ }
1256
+ const id = value.trim();
1257
+ if (id.length === 0 || id !== value) {
1258
+ throw new CorrectionContractError("CorrectionRequest.duplicateOf must be a non-empty memory id.");
1259
+ }
1260
+ if (id.length > CORRECTION_MEMORY_ID_MAX) {
1261
+ throw new CorrectionContractError(
1262
+ `CorrectionRequest.duplicateOf exceeds the ${CORRECTION_MEMORY_ID_MAX}-character limit (${id.length}).`
1263
+ );
1264
+ }
1265
+ return id;
1266
+ }
1267
+ function validateRedactionPattern(pattern) {
1268
+ if (typeof pattern !== "string") {
1269
+ throw new CorrectionContractError("redaction_rule.pattern must be a string.");
1270
+ }
1271
+ const trimmed = pattern.trim();
1272
+ if (trimmed.length === 0) {
1273
+ throw new CorrectionContractError("redaction_rule.pattern is required.");
1274
+ }
1275
+ if (trimmed.length > REDACTION_PATTERN_MAX) {
1276
+ throw new CorrectionContractError(
1277
+ `redaction_rule.pattern exceeds the ${REDACTION_PATTERN_MAX}-character bound.`
1278
+ );
1279
+ }
1280
+ if (isRegexLike(trimmed) && isUnsafeRedactionRegex(trimmed)) {
1281
+ throw new CorrectionContractError(
1282
+ "redaction_rule.pattern is unsafe \u2014 use a bounded literal or a regex without nested quantifiers / overlapping alternation."
1283
+ );
1284
+ }
1285
+ if (isRegexLike(trimmed)) {
1286
+ const regexBody = trimmed.slice(1, -1);
1287
+ if (regexBody.length === 0) {
1288
+ throw new CorrectionContractError("redaction_rule.pattern body is empty \u2014 use a non-empty regex.");
1289
+ }
1290
+ try {
1291
+ if (new RegExp(regexBody).test("")) {
1292
+ throw new CorrectionContractError(
1293
+ "redaction_rule.pattern matches the empty string \u2014 it would withhold every fact."
1294
+ );
1295
+ }
1296
+ } catch (e) {
1297
+ if (e instanceof CorrectionContractError) throw e;
1298
+ }
1299
+ }
1300
+ return trimmed;
1301
+ }
1302
+ function isRegexLike(pattern) {
1303
+ return pattern.startsWith("/") && pattern.endsWith("/") && pattern.length >= 2;
1304
+ }
1305
+ function isUnsafeRedactionRegex(pattern) {
1306
+ const body = pattern.startsWith("/") && pattern.endsWith("/") ? pattern.slice(1, -1) : pattern;
1307
+ if (/(?:^|[^\\])\(\.\*\)|(?:^|[^\\])\.\*|(?:^|[^\\])\.\+|^\.([^*+]?)$/.test(body)) {
1308
+ return true;
1309
+ }
1310
+ if (body.length > 512) return true;
1311
+ for (let i = 0; i < body.length; i++) {
1312
+ if (body[i] !== "(") continue;
1313
+ let depth = 1;
1314
+ let j = i + 1;
1315
+ while (j < body.length && depth > 0) {
1316
+ if (body[j] === "\\") {
1317
+ j += 2;
1318
+ continue;
1319
+ }
1320
+ if (body[j] === "(") depth++;
1321
+ else if (body[j] === ")") depth--;
1322
+ j++;
1323
+ }
1324
+ if (depth !== 0) continue;
1325
+ const afterGroup = body[j];
1326
+ if (afterGroup !== "+" && afterGroup !== "*" && afterGroup !== "{") continue;
1327
+ const groupBody = body.slice(i + 1, j - 1);
1328
+ if (/[+*?]$/.test(groupBody) || /\{\d+,?\d*\}[+*?]?$/.test(groupBody)) {
1329
+ return true;
1330
+ }
1331
+ if (groupBody.includes("|")) {
1332
+ const branches = groupBody.split("|");
1333
+ if (branches.length >= 2) {
1334
+ const firstChars = new Set(branches.map((b) => b[0]).filter(Boolean));
1335
+ if (firstChars.size < branches.filter((b) => b.length > 0).length) {
1336
+ return true;
1337
+ }
1338
+ }
1339
+ }
1340
+ i = j;
1341
+ }
1342
+ return false;
1343
+ }
1344
+ function validateCorrectionAction(action) {
1345
+ if (!action || typeof action !== "object") {
1346
+ throw new CorrectionContractError("CorrectionAction must be an object.");
1347
+ }
1348
+ const a = action;
1349
+ if (typeof a.kind !== "string" || !CORRECTION_ACTION_KINDS.includes(a.kind)) {
1350
+ throw new CorrectionContractError(
1351
+ `CorrectionAction.kind must be one of: ${CORRECTION_ACTION_KINDS.join(", ")}.`
1352
+ );
1353
+ }
1354
+ switch (a.kind) {
1355
+ case "supersede":
1356
+ if (typeof a.loserId !== "string" || a.loserId.length === 0) {
1357
+ throw new CorrectionContractError("supersede.loserId is required.");
1358
+ }
1359
+ {
1360
+ const hasReplacement = a.replacement !== void 0 && a.replacement !== null;
1361
+ const hasWinner = a.winnerId !== void 0 && a.winnerId !== null;
1362
+ if (hasWinner) {
1363
+ if (typeof a.winnerId !== "string" || a.winnerId.trim().length === 0 || a.winnerId !== a.winnerId.trim()) {
1364
+ throw new CorrectionContractError("supersede.winnerId must be a non-empty memory id.");
1365
+ }
1366
+ if (a.winnerId === a.loserId) {
1367
+ throw new CorrectionContractError("supersede.winnerId must differ from loserId.");
1368
+ }
1369
+ if (hasReplacement) {
1370
+ throw new CorrectionContractError("supersede.winnerId cannot be combined with a replacement draft.");
1371
+ }
1372
+ }
1373
+ if (hasReplacement) validateMemoryDraft(a.replacement);
1374
+ }
1375
+ break;
1376
+ case "edit":
1377
+ if (typeof a.memoryId !== "string" || a.memoryId.length === 0) {
1378
+ throw new CorrectionContractError("edit.memoryId is required.");
1379
+ }
1380
+ if (typeof a.patch !== "string" || a.patch.length === 0) {
1381
+ throw new CorrectionContractError("edit.patch is required and must be non-empty.");
1382
+ }
1383
+ break;
1384
+ case "retract":
1385
+ if (typeof a.memoryId !== "string" || a.memoryId.length === 0) {
1386
+ throw new CorrectionContractError("retract.memoryId is required.");
1387
+ }
1388
+ break;
1389
+ case "rescope":
1390
+ if (typeof a.memoryId !== "string" || a.memoryId.length === 0) {
1391
+ throw new CorrectionContractError("rescope.memoryId is required.");
1392
+ }
1393
+ if (typeof a.toNamespace !== "string" || a.toNamespace.trim().length === 0) {
1394
+ throw new CorrectionContractError("rescope.toNamespace is required.");
1395
+ }
1396
+ break;
1397
+ case "redaction_rule":
1398
+ if (typeof a.pattern !== "string") {
1399
+ throw new CorrectionContractError("redaction_rule.pattern is required.");
1400
+ }
1401
+ validateRedactionPattern(a.pattern);
1402
+ break;
1403
+ }
1404
+ }
1405
+ function validateMemoryDraft(draft) {
1406
+ if (!draft || typeof draft !== "object") {
1407
+ throw new CorrectionContractError("MemoryDraft must be an object.");
1408
+ }
1409
+ const d = draft;
1410
+ if (typeof d.content !== "string" || d.content.trim().length === 0) {
1411
+ throw new CorrectionContractError("MemoryDraft.content is required and must be non-empty.");
1412
+ }
1413
+ if (d.category !== void 0) {
1414
+ if (typeof d.category !== "string" || !MEMORY_CATEGORIES.includes(d.category)) {
1415
+ throw new CorrectionContractError(
1416
+ `MemoryDraft.category must be one of: ${MEMORY_CATEGORIES.join(", ")}.`
1417
+ );
1418
+ }
1419
+ }
1420
+ if (d.confidence !== void 0 && (typeof d.confidence !== "number" || d.confidence < 0 || d.confidence > 1)) {
1421
+ throw new CorrectionContractError("MemoryDraft.confidence must be a number in [0, 1].");
1422
+ }
1423
+ if (d.tags !== void 0 && !Array.isArray(d.tags)) {
1424
+ throw new CorrectionContractError("MemoryDraft.tags must be an array.");
1425
+ }
1426
+ if (d.structuredAttributes !== void 0 && (typeof d.structuredAttributes !== "object" || d.structuredAttributes === null)) {
1427
+ throw new CorrectionContractError("MemoryDraft.structuredAttributes must be an object.");
1428
+ }
1429
+ }
1430
+ function deterministicFallbackPlan(args) {
1431
+ return {
1432
+ planId: newPlanId(),
1433
+ request: args.request,
1434
+ namespace: args.namespace,
1435
+ affected: args.affected,
1436
+ classification: "outdated",
1437
+ actions: [],
1438
+ diff: "",
1439
+ confidence: 0,
1440
+ warnings: [...args.warnings, "planner LLM unavailable \u2014 manual action selection required"],
1441
+ createdAt: args.createdAt,
1442
+ expiresAt: args.expiresAt,
1443
+ status: "pending"
1444
+ };
1445
+ }
1446
+ function newPlanId() {
1447
+ return `corr-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
1448
+ }
1449
+ var CorrectionContractError = class extends Error {
1450
+ constructor(message) {
1451
+ super(message);
1452
+ this.name = "CorrectionContractError";
1453
+ }
1454
+ };
1455
+
1118
1456
  // src/dedup/merge-min-score.ts
1119
1457
  function describeValue(value) {
1120
1458
  try {
@@ -5469,6 +5807,15 @@ function parseTrustScoreWeights(value) {
5469
5807
  }
5470
5808
 
5471
5809
  export {
5810
+ CORRECTION_TEXT_MAX,
5811
+ validateCorrectionRequest,
5812
+ validateRedactionPattern,
5813
+ validateCorrectionAction,
5814
+ deterministicFallbackPlan,
5815
+ newPlanId,
5816
+ CorrectionContractError,
5817
+ DEFAULT_CORRECTION_CLASSIFY_TIMEOUT_MS,
5818
+ MAX_CORRECTION_CLASSIFY_TIMEOUT_MS,
5472
5819
  DRIFT_DETECTION_DEFAULTS,
5473
5820
  parseDriftDetectionConfig,
5474
5821
  buildMergeFrontmatterUpdate,
@@ -5507,4 +5854,4 @@ export {
5507
5854
  VALID_MEMORY_CATEGORIES,
5508
5855
  parseConfig
5509
5856
  };
5510
- //# sourceMappingURL=chunk-B4QYQFGY.js.map
5857
+ //# sourceMappingURL=chunk-UBEKET2V.js.map