@remnic/core 9.69.23 → 9.69.25

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 (438) hide show
  1. package/dist/abstraction-nodes.js +3 -2
  2. package/dist/access-admin-ops-surface.d.ts +1 -1
  3. package/dist/access-admin-ops-surface.js +53 -53
  4. package/dist/access-authorization-probe.d.ts +1 -1
  5. package/dist/access-authorization-probe.js +54 -54
  6. package/dist/access-boundary.d.ts +1 -1
  7. package/dist/access-boundary.js +53 -53
  8. package/dist/access-citation-namespace.js +3 -3
  9. package/dist/access-cli.js +112 -112
  10. package/dist/access-extraction-force-flush.d.ts +1 -1
  11. package/dist/access-extraction-force-flush.js +53 -53
  12. package/dist/access-http-briefing.d.ts +1 -1
  13. package/dist/access-http-briefing.js +54 -54
  14. package/dist/access-http-lcm-compaction.d.ts +1 -1
  15. package/dist/access-http-lifecycle-flush.d.ts +1 -1
  16. package/dist/access-http-offline-stream.d.ts +1 -1
  17. package/dist/access-http-query.js +55 -55
  18. package/dist/access-http.d.ts +2 -2
  19. package/dist/access-http.js +72 -72
  20. package/dist/access-identity-continuity-surface.js +53 -53
  21. package/dist/access-lcm-surface.d.ts +1 -1
  22. package/dist/access-lcm-surface.js +53 -53
  23. package/dist/access-mcp.d.ts +1 -1
  24. package/dist/access-mcp.js +64 -64
  25. package/dist/access-namespace-preflight.js +53 -53
  26. package/dist/access-observe-write-surface.d.ts +1 -1
  27. package/dist/access-observe-write-surface.js +53 -53
  28. package/dist/access-offline-manifest.js +10 -10
  29. package/dist/access-operations-batch.js +58 -58
  30. package/dist/access-operations.d.ts +1 -1
  31. package/dist/access-operations.js +63 -63
  32. package/dist/access-recall-concurrency.d.ts +1 -1
  33. package/dist/access-recall-concurrency.js +53 -53
  34. package/dist/access-recall-response.d.ts +1 -1
  35. package/dist/access-recall-response.js +53 -53
  36. package/dist/access-recall-surface.d.ts +1 -1
  37. package/dist/access-recall-surface.js +53 -53
  38. package/dist/access-schema.js +6 -5
  39. package/dist/access-service-helpers.d.ts +1 -1
  40. package/dist/access-service.d.ts +1 -1
  41. package/dist/access-service.js +53 -53
  42. package/dist/access-surface-catalog.d.ts +1 -1
  43. package/dist/access-surface-catalog.js +55 -55
  44. package/dist/active-recall.js +12 -11
  45. package/dist/active-recall.js.map +1 -1
  46. package/dist/{auto-sync-TTIEWJ5X.js → auto-sync-WNGG2GC2.js} +7 -7
  47. package/dist/briefing.js +20 -20
  48. package/dist/buffer.js +9 -9
  49. package/dist/calibration.js +2 -1
  50. package/dist/calibration.js.map +1 -1
  51. package/dist/{capsule-merge-CU6QJBSV.js → capsule-merge-IPG4IOFP.js} +4 -4
  52. package/dist/causal-behavior.js +4 -3
  53. package/dist/causal-behavior.js.map +1 -1
  54. package/dist/causal-chain.js +4 -3
  55. package/dist/causal-consolidation.js +25 -25
  56. package/dist/causal-retrieval.js +4 -3
  57. package/dist/causal-retrieval.js.map +1 -1
  58. package/dist/causal-trajectory-graph.js +2 -1
  59. package/dist/causal-trajectory-graph.js.map +1 -1
  60. package/dist/causal-trajectory.js +3 -2
  61. package/dist/{chunk-5RWHODVF.js → chunk-27QVNSQ3.js} +2 -2
  62. package/dist/{chunk-2MX7RU7B.js → chunk-2EKJDQZB.js} +2 -2
  63. package/dist/{chunk-XLRM6PPI.js → chunk-2IOHTUP3.js} +4 -4
  64. package/dist/{chunk-ZGQDTD5T.js → chunk-2ITE4C2Z.js} +2 -2
  65. package/dist/{chunk-O5ZR7SXV.js → chunk-2SGLMP2E.js} +2 -2
  66. package/dist/{chunk-FYWLSFFS.js → chunk-2Z4GS5E6.js} +2 -2
  67. package/dist/{chunk-WELP4CG6.js → chunk-37KUQPX4.js} +6 -6
  68. package/dist/{chunk-DDQQY2E3.js → chunk-3BTFBQLO.js} +7 -7
  69. package/dist/chunk-3BTFBQLO.js.map +1 -0
  70. package/dist/{chunk-UR6PBX2J.js → chunk-3K7V3HE6.js} +35 -60
  71. package/dist/chunk-3K7V3HE6.js.map +1 -0
  72. package/dist/{chunk-MRSLR6TB.js → chunk-3QQTXYZ6.js} +2 -2
  73. package/dist/{chunk-DJUKBGAD.js → chunk-46EST7JO.js} +5 -5
  74. package/dist/chunk-46EST7JO.js.map +1 -0
  75. package/dist/{chunk-CI6C33EO.js → chunk-46ZPIGWI.js} +3 -3
  76. package/dist/{chunk-HTIIXNJQ.js → chunk-4FIH6MPS.js} +6 -3
  77. package/dist/chunk-4FIH6MPS.js.map +1 -0
  78. package/dist/{chunk-MCA2X4WH.js → chunk-4IHBN6WU.js} +2 -2
  79. package/dist/{chunk-W7IGLX4G.js → chunk-4O6WRBGE.js} +7 -7
  80. package/dist/chunk-4O6WRBGE.js.map +1 -0
  81. package/dist/{chunk-TOZCM7WN.js → chunk-4TKJGOCJ.js} +2 -2
  82. package/dist/{chunk-3ADRFFRO.js → chunk-54WHLA65.js} +4 -4
  83. package/dist/{chunk-Z2N2AHEM.js → chunk-56Y6EKZN.js} +2 -2
  84. package/dist/{chunk-2H2N5UQW.js → chunk-5ATKSPEQ.js} +2 -2
  85. package/dist/{chunk-MSOXFXCA.js → chunk-5FAGCOZD.js} +5 -5
  86. package/dist/chunk-5FAGCOZD.js.map +1 -0
  87. package/dist/{chunk-ZVZHG7AI.js → chunk-5UBH37SL.js} +3 -3
  88. package/dist/{chunk-YZYZ2BEU.js → chunk-66OJSCI6.js} +2 -2
  89. package/dist/{chunk-HNPE66LB.js → chunk-6CVNSDCZ.js} +4 -4
  90. package/dist/{chunk-ERVJFFTR.js → chunk-6NXSYYGP.js} +2 -2
  91. package/dist/{chunk-2HIJHXB3.js → chunk-6WHJ2EAB.js} +2 -2
  92. package/dist/{chunk-34VTBPNE.js → chunk-6XL73HQ4.js} +4 -4
  93. package/dist/{chunk-YK3UIF7X.js → chunk-AQ7SYDVO.js} +2 -2
  94. package/dist/{chunk-DSCCM66R.js → chunk-B3O3IRZN.js} +2 -2
  95. package/dist/{chunk-P77QX3ID.js → chunk-B6O2YLUR.js} +21 -20
  96. package/dist/chunk-B6O2YLUR.js.map +1 -0
  97. package/dist/{chunk-N37X5RU7.js → chunk-BD7JTBYP.js} +2 -2
  98. package/dist/{chunk-VO43BJ2F.js → chunk-BLJWYCNO.js} +5 -5
  99. package/dist/{chunk-ACPCA4NO.js → chunk-BMWN7B3Y.js} +6 -6
  100. package/dist/chunk-BMWN7B3Y.js.map +1 -0
  101. package/dist/{chunk-HSKSVY3Q.js → chunk-C553ZTLF.js} +15 -15
  102. package/dist/{chunk-GCASGYIO.js → chunk-C7HJ3NEI.js} +2 -2
  103. package/dist/{chunk-WVGXCBOC.js → chunk-D5F7TKMH.js} +2 -2
  104. package/dist/{chunk-UFT2XNBW.js → chunk-DGS34QSY.js} +2 -2
  105. package/dist/{chunk-VAOL3SOT.js → chunk-DZD3WGCD.js} +4 -4
  106. package/dist/{chunk-KHMS2FQS.js → chunk-E2P7TZTF.js} +2 -2
  107. package/dist/{chunk-6FC3IZ26.js → chunk-EBA5DA77.js} +2 -2
  108. package/dist/{chunk-E6EANYLD.js → chunk-EOQ6FSQP.js} +2 -2
  109. package/dist/{chunk-7RPPCA26.js → chunk-FVOP3NT7.js} +2 -2
  110. package/dist/{chunk-NRLELHAY.js → chunk-G7NYVKD6.js} +2 -2
  111. package/dist/{chunk-QY34X2QJ.js → chunk-GHTSNGBZ.js} +2 -2
  112. package/dist/{chunk-SLIOMMPF.js → chunk-H272ZPQ3.js} +5 -5
  113. package/dist/{chunk-ZZBQNQS6.js → chunk-H3TKENU4.js} +2 -2
  114. package/dist/{chunk-5OPNUUBX.js → chunk-H4SEGIZY.js} +2 -2
  115. package/dist/{chunk-F2HMDGLC.js → chunk-H54VWRPS.js} +13 -13
  116. package/dist/{chunk-HTP6XRUI.js → chunk-HM7RHKS4.js} +2 -2
  117. package/dist/{chunk-O7H3P2SJ.js → chunk-HWLIMQE2.js} +2 -2
  118. package/dist/{chunk-62WZDHTW.js → chunk-ICKJ52PE.js} +33 -33
  119. package/dist/chunk-ICKJ52PE.js.map +1 -0
  120. package/dist/{chunk-I3FDDCY3.js → chunk-JEC4DVM3.js} +8 -8
  121. package/dist/chunk-JEC4DVM3.js.map +1 -0
  122. package/dist/{chunk-ET2CNMLD.js → chunk-JN72EPOE.js} +2 -2
  123. package/dist/{chunk-E7UQOS4C.js → chunk-JPKK466T.js} +2 -2
  124. package/dist/{chunk-JCCWJHOP.js → chunk-JYZSRNR7.js} +2 -2
  125. package/dist/{chunk-7IUESBLV.js → chunk-K7724CH2.js} +2 -2
  126. package/dist/{chunk-UK7HXNNJ.js → chunk-KAXCYM66.js} +3 -3
  127. package/dist/{chunk-7XVP4P4O.js → chunk-KB2G2I6Q.js} +3 -3
  128. package/dist/{chunk-K7LTRJZU.js → chunk-KEF46KL2.js} +2 -2
  129. package/dist/{chunk-5UZXUTVO.js → chunk-KNA3BXXL.js} +6 -2
  130. package/dist/chunk-KNA3BXXL.js.map +1 -0
  131. package/dist/{chunk-JYYTWCPU.js → chunk-KTWG7CNY.js} +6 -6
  132. package/dist/{chunk-XTYDEO7M.js → chunk-L7Z57SID.js} +2 -2
  133. package/dist/{chunk-EYMPUXAN.js → chunk-LO4UKPKX.js} +3 -3
  134. package/dist/{chunk-LDWIPYJ6.js → chunk-LS2FHUML.js} +3 -3
  135. package/dist/{chunk-GDB4J2H3.js → chunk-MPC7TYTZ.js} +2 -2
  136. package/dist/{chunk-2GF27PGH.js → chunk-MRPOZBJC.js} +3 -3
  137. package/dist/{chunk-7OLKAQMG.js → chunk-MWN6QEI2.js} +2 -2
  138. package/dist/{chunk-J62HG52Z.js → chunk-MY5EDR46.js} +4 -4
  139. package/dist/{chunk-IZRMWPGS.js → chunk-N3ZOP7KC.js} +2 -2
  140. package/dist/{chunk-N6A2RP5S.js → chunk-NB3LRY4T.js} +3 -3
  141. package/dist/{chunk-4N5BIR2U.js → chunk-ND6IQGSZ.js} +2 -2
  142. package/dist/{chunk-NOB2T2FC.js → chunk-NHLLKEKK.js} +2 -2
  143. package/dist/{chunk-WW6B7NQJ.js → chunk-NLYVH66G.js} +6 -6
  144. package/dist/chunk-NLYVH66G.js.map +1 -0
  145. package/dist/{chunk-M5CQNOQN.js → chunk-O6ZNNVSP.js} +2 -2
  146. package/dist/{chunk-NNBZS3DY.js → chunk-OB3XMWX5.js} +2 -2
  147. package/dist/{chunk-TXJNRGMI.js → chunk-OEYZXDQI.js} +6 -6
  148. package/dist/chunk-OEYZXDQI.js.map +1 -0
  149. package/dist/{chunk-SIBVIP2Y.js → chunk-PAZY2ZKP.js} +2 -2
  150. package/dist/{chunk-LXESHEBP.js → chunk-PX4UMA5Z.js} +2 -2
  151. package/dist/{chunk-4KNRKJXQ.js → chunk-QOOBICJF.js} +5 -5
  152. package/dist/chunk-QOOBICJF.js.map +1 -0
  153. package/dist/{chunk-NNZFPYYX.js → chunk-R7QY5ZVB.js} +2 -2
  154. package/dist/{chunk-WTRTFIIN.js → chunk-R7RTXEYG.js} +2 -2
  155. package/dist/{chunk-XRBJ5R3P.js → chunk-RBCQVOVJ.js} +3 -3
  156. package/dist/{chunk-WFZNT4KB.js → chunk-RC5DXXWC.js} +2 -2
  157. package/dist/{chunk-OH7LZHGJ.js → chunk-RJYJ7KR7.js} +52 -52
  158. package/dist/{chunk-OH7LZHGJ.js.map → chunk-RJYJ7KR7.js.map} +1 -1
  159. package/dist/{chunk-5QZR2RA3.js → chunk-ROBHL3GL.js} +2 -2
  160. package/dist/{chunk-6PST2SFW.js → chunk-SCXURCVT.js} +3 -3
  161. package/dist/{chunk-AYG7ML7O.js → chunk-SJDQ5RSN.js} +3 -3
  162. package/dist/{chunk-3ZBLKIHJ.js → chunk-SMWTZLHE.js} +51 -41
  163. package/dist/{chunk-3ZBLKIHJ.js.map → chunk-SMWTZLHE.js.map} +1 -1
  164. package/dist/{chunk-IQXDSKTL.js → chunk-SVXJLDDC.js} +6 -6
  165. package/dist/{chunk-SEF4IOFE.js → chunk-SWIKABKI.js} +2 -2
  166. package/dist/{chunk-ZJABRLCZ.js → chunk-TBXAY2SS.js} +4 -4
  167. package/dist/{chunk-GIC6BASP.js → chunk-TNSCIPBQ.js} +2 -2
  168. package/dist/{chunk-ZMDMHSV2.js → chunk-TVEONGBU.js} +2 -2
  169. package/dist/{chunk-4FSEZRGK.js → chunk-TWF35IC6.js} +2 -2
  170. package/dist/{chunk-LS2SGMQE.js → chunk-U6N5IBVY.js} +2 -2
  171. package/dist/{chunk-62YW6OYI.js → chunk-UCKYTA2T.js} +3 -3
  172. package/dist/{chunk-YFCHNOGJ.js → chunk-UNNPNBR2.js} +9 -9
  173. package/dist/{chunk-Z2M7F4QM.js → chunk-VVX5PZFS.js} +3 -3
  174. package/dist/{chunk-NTYLZXDX.js → chunk-VYCOJKSX.js} +2 -2
  175. package/dist/{chunk-UICSQESY.js → chunk-W24T5YMW.js} +2 -2
  176. package/dist/{chunk-HDQUQBPW.js → chunk-W3K3HITK.js} +2 -2
  177. package/dist/{chunk-GDASG7NC.js → chunk-W4F3C7N7.js} +2 -2
  178. package/dist/{chunk-YBLZFNIQ.js → chunk-WJHGDE7X.js} +2 -2
  179. package/dist/{chunk-ZBPXG5PJ.js → chunk-WMLEPWMO.js} +9 -9
  180. package/dist/chunk-WMLEPWMO.js.map +1 -0
  181. package/dist/{chunk-4F24PHNX.js → chunk-WQZZDN5M.js} +2 -2
  182. package/dist/{chunk-CDZEUCV7.js → chunk-X5K5TAQZ.js} +4 -4
  183. package/dist/{chunk-5AUODSOQ.js → chunk-XM24CDZX.js} +3 -3
  184. package/dist/{chunk-6VML2LII.js → chunk-XOVKXJEP.js} +3 -3
  185. package/dist/{chunk-OU5TIWDQ.js → chunk-XSGUMQQQ.js} +12 -12
  186. package/dist/{chunk-7CFVBWDC.js → chunk-XUE46UYW.js} +3 -3
  187. package/dist/{chunk-DJORULH3.js → chunk-YRLHEEQT.js} +2 -2
  188. package/dist/{chunk-YRWDPE32.js → chunk-Z3O53WZR.js} +2 -2
  189. package/dist/{chunk-CSY5DA7O.js → chunk-Z6COGHHN.js} +2 -2
  190. package/dist/{chunk-OYR3IPHD.js → chunk-ZIW5JVRM.js} +2 -2
  191. package/dist/{cli-B_YwqoIr.d.ts → cli-BqMNkQn5.d.ts} +1 -1
  192. package/dist/cli.d.ts +2 -2
  193. package/dist/cli.js +94 -94
  194. package/dist/coding/export-okf-codegraph.js +21 -21
  195. package/dist/coding/pre-action-gate.js +4 -3
  196. package/dist/commitment-ledger.js +3 -2
  197. package/dist/compounding/engine.js +21 -21
  198. package/dist/config.js +12 -11
  199. package/dist/connectors/codex-materialize-runner.js +21 -21
  200. package/dist/connectors/codex-materialize.js +3 -3
  201. package/dist/connectors/index.js +21 -21
  202. package/dist/consolidation-provenance-check.js +4 -4
  203. package/dist/consolidation-undo.js +3 -3
  204. package/dist/contradiction/index.js +7 -7
  205. package/dist/convergence-refresh.js +22 -22
  206. package/dist/corpus-watermark.js +22 -22
  207. package/dist/cue-anchors.js +4 -3
  208. package/dist/deep-recall-http-glue.d.ts +1 -1
  209. package/dist/deep-recall-http-glue.js +7 -6
  210. package/dist/deep-recall-mcp-tools.d.ts +1 -1
  211. package/dist/entity-retrieval.js +20 -20
  212. package/dist/eval-trajectory-store.js +4 -3
  213. package/dist/eval-trajectory.js +4 -3
  214. package/dist/evals.js +3 -2
  215. package/dist/explicit-capture.js +8 -8
  216. package/dist/external-wiki-access.d.ts +1 -1
  217. package/dist/external-wiki-access.js +54 -54
  218. package/dist/external-wiki-mcp-tools.d.ts +1 -1
  219. package/dist/extraction.js +25 -25
  220. package/dist/{first-start-migration-KHIMCBIC.js → first-start-migration-RC345GPL.js} +6 -5
  221. package/dist/{first-start-migration-KHIMCBIC.js.map → first-start-migration-RC345GPL.js.map} +1 -1
  222. package/dist/{graph-edge-decay-CJW4OT2X.js → graph-edge-decay-MKIRZ762.js} +5 -4
  223. package/dist/graph-jsonl.js +3 -2
  224. package/dist/graph-snapshot.js +3 -2
  225. package/dist/graph.js +2 -1
  226. package/dist/harmonic-construction.js +5 -4
  227. package/dist/harmonic-retrieval.js +5 -4
  228. package/dist/index.d.ts +19 -7
  229. package/dist/index.js +114 -112
  230. package/dist/json-store.js +2 -1
  231. package/dist/live-connectors-runner.js +3 -2
  232. package/dist/location/index.js +23 -23
  233. package/dist/maintenance/memory-governance.js +20 -20
  234. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +20 -20
  235. package/dist/maintenance/rebuild-memory-projection.js +21 -21
  236. package/dist/mcp-memory-inspector-app.d.ts +1 -1
  237. package/dist/memory-projection-mutations.js +3 -3
  238. package/dist/memory-subject-cli.d.ts +1 -1
  239. package/dist/memory-subject.d.ts +1 -1
  240. package/dist/memory-subject.js +4 -4
  241. package/dist/namespaces/migrate.js +21 -21
  242. package/dist/namespaces/search.js +8 -8
  243. package/dist/namespaces/storage.js +20 -20
  244. package/dist/objective-state-writers.js +4 -3
  245. package/dist/objective-state.js +3 -2
  246. package/dist/offline-sync-file-io.js +4 -3
  247. package/dist/offline-sync-impression-drain.js +5 -5
  248. package/dist/offline-sync.js +5 -4
  249. package/dist/operator-doctor-corpus.js +23 -23
  250. package/dist/operator-toolkit.js +38 -38
  251. package/dist/orchestration/maintenance.js +29 -29
  252. package/dist/orchestrator.js +112 -112
  253. package/dist/page-versioning.js +3 -3
  254. package/dist/{public-http-D6d4W8x-.d.ts → public-http-ByX2eTla.d.ts} +1 -1
  255. package/dist/{purge-OP6BEDFY.js → purge-TZKRE6ZQ.js} +5 -5
  256. package/dist/purge-TZKRE6ZQ.js.map +1 -0
  257. package/dist/recall-state.js +3 -3
  258. package/dist/reconcile/manifest.js +4 -4
  259. package/dist/{resolution-U5O4QANY.js → resolution-VKATP2HT.js} +8 -8
  260. package/dist/resume-bundles.js +16 -15
  261. package/dist/salvage-envelope.js +6 -6
  262. package/dist/schemas.d.ts +42 -42
  263. package/dist/search/document-scanner.js +3 -3
  264. package/dist/search/factory.js +7 -7
  265. package/dist/search/index.js +7 -7
  266. package/dist/search/lancedb-backend.js +4 -4
  267. package/dist/search/meilisearch-backend.js +4 -4
  268. package/dist/search/orama-backend.js +4 -4
  269. package/dist/secure-store/index.js +3 -3
  270. package/dist/semantic-consolidation.js +22 -22
  271. package/dist/semantic-rule-promotion.js +20 -20
  272. package/dist/semantic-rule-verifier.js +20 -20
  273. package/dist/source-agent-qualifier.js +24 -24
  274. package/dist/standup/build.js +20 -20
  275. package/dist/storage.js +19 -19
  276. package/dist/subject-config.js +5 -5
  277. package/dist/support-passport/index.d.ts +4 -4
  278. package/dist/support-passport/index.js +56 -56
  279. package/dist/{tier-stats-2TOW3QNL.js → tier-stats-KA6OZX2C.js} +6 -5
  280. package/dist/{tier-stats-2TOW3QNL.js.map → tier-stats-KA6OZX2C.js.map} +1 -1
  281. package/dist/transfer/capsule-import.js +4 -4
  282. package/dist/transfer/export-okf.js +21 -21
  283. package/dist/transfer/types.d.ts +12 -12
  284. package/dist/trust-zones.js +3 -2
  285. package/dist/utility-learner.js +4 -3
  286. package/dist/utility-runtime.js +5 -4
  287. package/dist/utility-telemetry.js +3 -2
  288. package/dist/verified-recall.js +20 -20
  289. package/dist/who-knows-cli.d.ts +1 -1
  290. package/dist/who-knows-cli.js +21 -21
  291. package/dist/who-knows.d.ts +1 -1
  292. package/dist/who-knows.js +20 -20
  293. package/dist/work/board.js +3 -3
  294. package/dist/work/storage.js +2 -2
  295. package/dist/work-product-ledger.js +3 -2
  296. package/dist/write-envelope.js +5 -5
  297. package/package.json +2 -2
  298. package/src/abstraction-nodes.ts +1 -4
  299. package/src/binary-lifecycle/backend.ts +2 -1
  300. package/src/connectors/live/github.ts +10 -17
  301. package/src/connectors/live/gmail.ts +8 -19
  302. package/src/connectors/live/google-drive.ts +6 -13
  303. package/src/connectors/live/notion.ts +11 -21
  304. package/src/cue-anchors.ts +1 -6
  305. package/src/graph.ts +2 -4
  306. package/src/json-store.ts +17 -20
  307. package/src/live-connectors-runner.ts +2 -1
  308. package/src/location/store.ts +1 -4
  309. package/src/maintenance/purge.ts +2 -5
  310. package/src/maintenance/rebuild-memory-lifecycle-ledger.ts +3 -6
  311. package/src/maintenance/rebuild-memory-projection.ts +2 -5
  312. package/src/namespaces/catalog.ts +1 -9
  313. package/src/offline-sync-file-io.test.ts +39 -0
  314. package/src/offline-sync-file-io.ts +3 -7
  315. package/src/procedural/procedure-miner.ts +1 -9
  316. package/src/search/document-scanner.ts +3 -6
  317. package/src/semantic-rule-promotion.ts +1 -4
  318. package/src/utils/errno.test.ts +31 -0
  319. package/src/utils/errno.ts +5 -0
  320. package/src/wearables/index.ts +1 -0
  321. package/src/wearables/registry.ts +23 -0
  322. package/dist/chunk-4KNRKJXQ.js.map +0 -1
  323. package/dist/chunk-5UZXUTVO.js.map +0 -1
  324. package/dist/chunk-62WZDHTW.js.map +0 -1
  325. package/dist/chunk-ACPCA4NO.js.map +0 -1
  326. package/dist/chunk-DDQQY2E3.js.map +0 -1
  327. package/dist/chunk-DJUKBGAD.js.map +0 -1
  328. package/dist/chunk-HTIIXNJQ.js.map +0 -1
  329. package/dist/chunk-I3FDDCY3.js.map +0 -1
  330. package/dist/chunk-MSOXFXCA.js.map +0 -1
  331. package/dist/chunk-P77QX3ID.js.map +0 -1
  332. package/dist/chunk-TXJNRGMI.js.map +0 -1
  333. package/dist/chunk-UR6PBX2J.js.map +0 -1
  334. package/dist/chunk-W7IGLX4G.js.map +0 -1
  335. package/dist/chunk-WW6B7NQJ.js.map +0 -1
  336. package/dist/chunk-ZBPXG5PJ.js.map +0 -1
  337. package/dist/purge-OP6BEDFY.js.map +0 -1
  338. package/dist/{access-service-Cv8Rizo0.d.ts → access-service-GrdVg_-Z.d.ts} +6 -6
  339. /package/dist/{auto-sync-TTIEWJ5X.js.map → auto-sync-WNGG2GC2.js.map} +0 -0
  340. /package/dist/{capsule-merge-CU6QJBSV.js.map → capsule-merge-IPG4IOFP.js.map} +0 -0
  341. /package/dist/{chunk-5RWHODVF.js.map → chunk-27QVNSQ3.js.map} +0 -0
  342. /package/dist/{chunk-2MX7RU7B.js.map → chunk-2EKJDQZB.js.map} +0 -0
  343. /package/dist/{chunk-XLRM6PPI.js.map → chunk-2IOHTUP3.js.map} +0 -0
  344. /package/dist/{chunk-ZGQDTD5T.js.map → chunk-2ITE4C2Z.js.map} +0 -0
  345. /package/dist/{chunk-O5ZR7SXV.js.map → chunk-2SGLMP2E.js.map} +0 -0
  346. /package/dist/{chunk-FYWLSFFS.js.map → chunk-2Z4GS5E6.js.map} +0 -0
  347. /package/dist/{chunk-WELP4CG6.js.map → chunk-37KUQPX4.js.map} +0 -0
  348. /package/dist/{chunk-MRSLR6TB.js.map → chunk-3QQTXYZ6.js.map} +0 -0
  349. /package/dist/{chunk-CI6C33EO.js.map → chunk-46ZPIGWI.js.map} +0 -0
  350. /package/dist/{chunk-MCA2X4WH.js.map → chunk-4IHBN6WU.js.map} +0 -0
  351. /package/dist/{chunk-TOZCM7WN.js.map → chunk-4TKJGOCJ.js.map} +0 -0
  352. /package/dist/{chunk-3ADRFFRO.js.map → chunk-54WHLA65.js.map} +0 -0
  353. /package/dist/{chunk-Z2N2AHEM.js.map → chunk-56Y6EKZN.js.map} +0 -0
  354. /package/dist/{chunk-2H2N5UQW.js.map → chunk-5ATKSPEQ.js.map} +0 -0
  355. /package/dist/{chunk-ZVZHG7AI.js.map → chunk-5UBH37SL.js.map} +0 -0
  356. /package/dist/{chunk-YZYZ2BEU.js.map → chunk-66OJSCI6.js.map} +0 -0
  357. /package/dist/{chunk-HNPE66LB.js.map → chunk-6CVNSDCZ.js.map} +0 -0
  358. /package/dist/{chunk-ERVJFFTR.js.map → chunk-6NXSYYGP.js.map} +0 -0
  359. /package/dist/{chunk-2HIJHXB3.js.map → chunk-6WHJ2EAB.js.map} +0 -0
  360. /package/dist/{chunk-34VTBPNE.js.map → chunk-6XL73HQ4.js.map} +0 -0
  361. /package/dist/{chunk-YK3UIF7X.js.map → chunk-AQ7SYDVO.js.map} +0 -0
  362. /package/dist/{chunk-DSCCM66R.js.map → chunk-B3O3IRZN.js.map} +0 -0
  363. /package/dist/{chunk-N37X5RU7.js.map → chunk-BD7JTBYP.js.map} +0 -0
  364. /package/dist/{chunk-VO43BJ2F.js.map → chunk-BLJWYCNO.js.map} +0 -0
  365. /package/dist/{chunk-HSKSVY3Q.js.map → chunk-C553ZTLF.js.map} +0 -0
  366. /package/dist/{chunk-GCASGYIO.js.map → chunk-C7HJ3NEI.js.map} +0 -0
  367. /package/dist/{chunk-WVGXCBOC.js.map → chunk-D5F7TKMH.js.map} +0 -0
  368. /package/dist/{chunk-UFT2XNBW.js.map → chunk-DGS34QSY.js.map} +0 -0
  369. /package/dist/{chunk-VAOL3SOT.js.map → chunk-DZD3WGCD.js.map} +0 -0
  370. /package/dist/{chunk-KHMS2FQS.js.map → chunk-E2P7TZTF.js.map} +0 -0
  371. /package/dist/{chunk-6FC3IZ26.js.map → chunk-EBA5DA77.js.map} +0 -0
  372. /package/dist/{chunk-E6EANYLD.js.map → chunk-EOQ6FSQP.js.map} +0 -0
  373. /package/dist/{chunk-7RPPCA26.js.map → chunk-FVOP3NT7.js.map} +0 -0
  374. /package/dist/{chunk-NRLELHAY.js.map → chunk-G7NYVKD6.js.map} +0 -0
  375. /package/dist/{chunk-QY34X2QJ.js.map → chunk-GHTSNGBZ.js.map} +0 -0
  376. /package/dist/{chunk-SLIOMMPF.js.map → chunk-H272ZPQ3.js.map} +0 -0
  377. /package/dist/{chunk-ZZBQNQS6.js.map → chunk-H3TKENU4.js.map} +0 -0
  378. /package/dist/{chunk-5OPNUUBX.js.map → chunk-H4SEGIZY.js.map} +0 -0
  379. /package/dist/{chunk-F2HMDGLC.js.map → chunk-H54VWRPS.js.map} +0 -0
  380. /package/dist/{chunk-HTP6XRUI.js.map → chunk-HM7RHKS4.js.map} +0 -0
  381. /package/dist/{chunk-O7H3P2SJ.js.map → chunk-HWLIMQE2.js.map} +0 -0
  382. /package/dist/{chunk-ET2CNMLD.js.map → chunk-JN72EPOE.js.map} +0 -0
  383. /package/dist/{chunk-E7UQOS4C.js.map → chunk-JPKK466T.js.map} +0 -0
  384. /package/dist/{chunk-JCCWJHOP.js.map → chunk-JYZSRNR7.js.map} +0 -0
  385. /package/dist/{chunk-7IUESBLV.js.map → chunk-K7724CH2.js.map} +0 -0
  386. /package/dist/{chunk-UK7HXNNJ.js.map → chunk-KAXCYM66.js.map} +0 -0
  387. /package/dist/{chunk-7XVP4P4O.js.map → chunk-KB2G2I6Q.js.map} +0 -0
  388. /package/dist/{chunk-K7LTRJZU.js.map → chunk-KEF46KL2.js.map} +0 -0
  389. /package/dist/{chunk-JYYTWCPU.js.map → chunk-KTWG7CNY.js.map} +0 -0
  390. /package/dist/{chunk-XTYDEO7M.js.map → chunk-L7Z57SID.js.map} +0 -0
  391. /package/dist/{chunk-EYMPUXAN.js.map → chunk-LO4UKPKX.js.map} +0 -0
  392. /package/dist/{chunk-LDWIPYJ6.js.map → chunk-LS2FHUML.js.map} +0 -0
  393. /package/dist/{chunk-GDB4J2H3.js.map → chunk-MPC7TYTZ.js.map} +0 -0
  394. /package/dist/{chunk-2GF27PGH.js.map → chunk-MRPOZBJC.js.map} +0 -0
  395. /package/dist/{chunk-7OLKAQMG.js.map → chunk-MWN6QEI2.js.map} +0 -0
  396. /package/dist/{chunk-J62HG52Z.js.map → chunk-MY5EDR46.js.map} +0 -0
  397. /package/dist/{chunk-IZRMWPGS.js.map → chunk-N3ZOP7KC.js.map} +0 -0
  398. /package/dist/{chunk-N6A2RP5S.js.map → chunk-NB3LRY4T.js.map} +0 -0
  399. /package/dist/{chunk-4N5BIR2U.js.map → chunk-ND6IQGSZ.js.map} +0 -0
  400. /package/dist/{chunk-NOB2T2FC.js.map → chunk-NHLLKEKK.js.map} +0 -0
  401. /package/dist/{chunk-M5CQNOQN.js.map → chunk-O6ZNNVSP.js.map} +0 -0
  402. /package/dist/{chunk-NNBZS3DY.js.map → chunk-OB3XMWX5.js.map} +0 -0
  403. /package/dist/{chunk-SIBVIP2Y.js.map → chunk-PAZY2ZKP.js.map} +0 -0
  404. /package/dist/{chunk-LXESHEBP.js.map → chunk-PX4UMA5Z.js.map} +0 -0
  405. /package/dist/{chunk-NNZFPYYX.js.map → chunk-R7QY5ZVB.js.map} +0 -0
  406. /package/dist/{chunk-WTRTFIIN.js.map → chunk-R7RTXEYG.js.map} +0 -0
  407. /package/dist/{chunk-XRBJ5R3P.js.map → chunk-RBCQVOVJ.js.map} +0 -0
  408. /package/dist/{chunk-WFZNT4KB.js.map → chunk-RC5DXXWC.js.map} +0 -0
  409. /package/dist/{chunk-5QZR2RA3.js.map → chunk-ROBHL3GL.js.map} +0 -0
  410. /package/dist/{chunk-6PST2SFW.js.map → chunk-SCXURCVT.js.map} +0 -0
  411. /package/dist/{chunk-AYG7ML7O.js.map → chunk-SJDQ5RSN.js.map} +0 -0
  412. /package/dist/{chunk-IQXDSKTL.js.map → chunk-SVXJLDDC.js.map} +0 -0
  413. /package/dist/{chunk-SEF4IOFE.js.map → chunk-SWIKABKI.js.map} +0 -0
  414. /package/dist/{chunk-ZJABRLCZ.js.map → chunk-TBXAY2SS.js.map} +0 -0
  415. /package/dist/{chunk-GIC6BASP.js.map → chunk-TNSCIPBQ.js.map} +0 -0
  416. /package/dist/{chunk-ZMDMHSV2.js.map → chunk-TVEONGBU.js.map} +0 -0
  417. /package/dist/{chunk-4FSEZRGK.js.map → chunk-TWF35IC6.js.map} +0 -0
  418. /package/dist/{chunk-LS2SGMQE.js.map → chunk-U6N5IBVY.js.map} +0 -0
  419. /package/dist/{chunk-62YW6OYI.js.map → chunk-UCKYTA2T.js.map} +0 -0
  420. /package/dist/{chunk-YFCHNOGJ.js.map → chunk-UNNPNBR2.js.map} +0 -0
  421. /package/dist/{chunk-Z2M7F4QM.js.map → chunk-VVX5PZFS.js.map} +0 -0
  422. /package/dist/{chunk-NTYLZXDX.js.map → chunk-VYCOJKSX.js.map} +0 -0
  423. /package/dist/{chunk-UICSQESY.js.map → chunk-W24T5YMW.js.map} +0 -0
  424. /package/dist/{chunk-HDQUQBPW.js.map → chunk-W3K3HITK.js.map} +0 -0
  425. /package/dist/{chunk-GDASG7NC.js.map → chunk-W4F3C7N7.js.map} +0 -0
  426. /package/dist/{chunk-YBLZFNIQ.js.map → chunk-WJHGDE7X.js.map} +0 -0
  427. /package/dist/{chunk-4F24PHNX.js.map → chunk-WQZZDN5M.js.map} +0 -0
  428. /package/dist/{chunk-CDZEUCV7.js.map → chunk-X5K5TAQZ.js.map} +0 -0
  429. /package/dist/{chunk-5AUODSOQ.js.map → chunk-XM24CDZX.js.map} +0 -0
  430. /package/dist/{chunk-6VML2LII.js.map → chunk-XOVKXJEP.js.map} +0 -0
  431. /package/dist/{chunk-OU5TIWDQ.js.map → chunk-XSGUMQQQ.js.map} +0 -0
  432. /package/dist/{chunk-7CFVBWDC.js.map → chunk-XUE46UYW.js.map} +0 -0
  433. /package/dist/{chunk-DJORULH3.js.map → chunk-YRLHEEQT.js.map} +0 -0
  434. /package/dist/{chunk-YRWDPE32.js.map → chunk-Z3O53WZR.js.map} +0 -0
  435. /package/dist/{chunk-CSY5DA7O.js.map → chunk-Z6COGHHN.js.map} +0 -0
  436. /package/dist/{chunk-OYR3IPHD.js.map → chunk-ZIW5JVRM.js.map} +0 -0
  437. /package/dist/{graph-edge-decay-CJW4OT2X.js.map → graph-edge-decay-MKIRZ762.js.map} +0 -0
  438. /package/dist/{resolution-U5O4QANY.js.map → resolution-VKATP2HT.js.map} +0 -0
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  ExtractionEngine,
3
3
  shouldEnableLocalExtractionThinking
4
- } from "./chunk-7XVP4P4O.js";
5
- import "./chunk-OYR3IPHD.js";
4
+ } from "./chunk-KB2G2I6Q.js";
5
+ import "./chunk-ZIW5JVRM.js";
6
6
  import "./chunk-AJTG3CP7.js";
7
7
  import "./chunk-54V4BZWP.js";
8
8
  import "./chunk-2CGLBUW3.js";
@@ -31,21 +31,21 @@ import "./chunk-WLZYGLJ4.js";
31
31
  import "./chunk-IVKIODHO.js";
32
32
  import "./chunk-WKDFJXW5.js";
33
33
  import "./chunk-JUXOTY6J.js";
34
- import "./chunk-UK7HXNNJ.js";
34
+ import "./chunk-KAXCYM66.js";
35
35
  import "./chunk-3UXOZBHV.js";
36
- import "./chunk-K7LTRJZU.js";
37
- import "./chunk-OU5TIWDQ.js";
36
+ import "./chunk-KEF46KL2.js";
37
+ import "./chunk-XSGUMQQQ.js";
38
38
  import "./chunk-UHVXE24Y.js";
39
39
  import "./chunk-46WM6JX2.js";
40
- import "./chunk-WVGXCBOC.js";
41
- import "./chunk-FYWLSFFS.js";
42
- import "./chunk-HNPE66LB.js";
43
- import "./chunk-N37X5RU7.js";
44
- import "./chunk-NNBZS3DY.js";
40
+ import "./chunk-D5F7TKMH.js";
41
+ import "./chunk-2Z4GS5E6.js";
42
+ import "./chunk-6CVNSDCZ.js";
43
+ import "./chunk-BD7JTBYP.js";
44
+ import "./chunk-OB3XMWX5.js";
45
45
  import "./chunk-CYEPCZN5.js";
46
- import "./chunk-GIC6BASP.js";
46
+ import "./chunk-TNSCIPBQ.js";
47
47
  import "./chunk-YQNNHLCG.js";
48
- import "./chunk-W7IGLX4G.js";
48
+ import "./chunk-4O6WRBGE.js";
49
49
  import "./chunk-6KTXE6A3.js";
50
50
  import "./chunk-GUMZC2BO.js";
51
51
  import "./chunk-227UFSEQ.js";
@@ -55,26 +55,26 @@ import "./chunk-A7Q43EUZ.js";
55
55
  import "./chunk-S2V7RUCL.js";
56
56
  import "./chunk-SO7SV523.js";
57
57
  import "./chunk-SCU65EZI.js";
58
- import "./chunk-2GF27PGH.js";
58
+ import "./chunk-MRPOZBJC.js";
59
59
  import "./chunk-S2HLHAZ4.js";
60
60
  import "./chunk-DM2T26WE.js";
61
61
  import "./chunk-LDXUBPMO.js";
62
62
  import "./chunk-XSTNGNJP.js";
63
63
  import "./chunk-AAD2ZS6P.js";
64
- import "./chunk-SLIOMMPF.js";
64
+ import "./chunk-H272ZPQ3.js";
65
65
  import "./chunk-YXZG5TVN.js";
66
66
  import "./chunk-3ONXXHQO.js";
67
67
  import "./chunk-5GINB5LC.js";
68
68
  import "./chunk-3WU7XOFN.js";
69
69
  import "./chunk-G7D6GZ5J.js";
70
- import "./chunk-E7UQOS4C.js";
70
+ import "./chunk-JPKK466T.js";
71
71
  import "./chunk-XCB6QDL6.js";
72
72
  import "./chunk-RBOJCG4T.js";
73
- import "./chunk-NNZFPYYX.js";
73
+ import "./chunk-R7QY5ZVB.js";
74
74
  import "./chunk-5WITETWU.js";
75
75
  import "./chunk-6CIAGZ6X.js";
76
- import "./chunk-XTYDEO7M.js";
77
- import "./chunk-WW6B7NQJ.js";
76
+ import "./chunk-L7Z57SID.js";
77
+ import "./chunk-NLYVH66G.js";
78
78
  import "./chunk-CSAKJVXW.js";
79
79
  import "./chunk-K2XUWZBM.js";
80
80
  import "./chunk-OD4FM2U7.js";
@@ -82,7 +82,7 @@ import "./chunk-CEH2AFXG.js";
82
82
  import "./chunk-JXN77SGO.js";
83
83
  import "./chunk-IUM3VSHI.js";
84
84
  import "./chunk-ZLQ37WJX.js";
85
- import "./chunk-MRSLR6TB.js";
85
+ import "./chunk-3QQTXYZ6.js";
86
86
  import "./chunk-BT7NVCML.js";
87
87
  import "./chunk-C64XATK7.js";
88
88
  import "./chunk-42JKGUFJ.js";
@@ -99,7 +99,7 @@ import "./chunk-QDW3E4RD.js";
99
99
  import "./chunk-NXH34IPL.js";
100
100
  import "./chunk-ZIKENA2C.js";
101
101
  import "./chunk-P6FHFTZ7.js";
102
- import "./chunk-NTYLZXDX.js";
102
+ import "./chunk-VYCOJKSX.js";
103
103
  import "./chunk-6Q3ZTEF6.js";
104
104
  import "./chunk-W5BIQOAJ.js";
105
105
  import "./chunk-Z7L72ZHL.js";
@@ -110,15 +110,15 @@ import "./chunk-TOTT6S2V.js";
110
110
  import "./chunk-PQVCH2AE.js";
111
111
  import "./chunk-PJKTFXE2.js";
112
112
  import "./chunk-TG3FAM2S.js";
113
- import "./chunk-ZJABRLCZ.js";
113
+ import "./chunk-TBXAY2SS.js";
114
114
  import "./chunk-ZA53AZND.js";
115
115
  import "./chunk-AL3UYZ5N.js";
116
116
  import "./chunk-RL6NEVXT.js";
117
117
  import "./chunk-ESNFSSO4.js";
118
118
  import "./chunk-AW4QUFQF.js";
119
- import "./chunk-GCASGYIO.js";
119
+ import "./chunk-C7HJ3NEI.js";
120
120
  import "./chunk-7RJUVTVF.js";
121
- import "./chunk-N6A2RP5S.js";
121
+ import "./chunk-NB3LRY4T.js";
122
122
  import "./chunk-5FVVY2EB.js";
123
123
  import "./chunk-FFAZ2XFU.js";
124
124
  import "./chunk-MZWSOLMT.js";
@@ -141,10 +141,10 @@ import "./chunk-JUC24CTX.js";
141
141
  import "./chunk-2Z24E5W2.js";
142
142
  import "./chunk-BTTPKDIL.js";
143
143
  import "./chunk-FF4KLI5W.js";
144
- import "./chunk-ET2CNMLD.js";
144
+ import "./chunk-JN72EPOE.js";
145
145
  import "./chunk-A6XUJE5D.js";
146
146
  import "./chunk-VS2IYZRU.js";
147
- import "./chunk-5UZXUTVO.js";
147
+ import "./chunk-KNA3BXXL.js";
148
148
  import "./chunk-3WCASNQZ.js";
149
149
  import "./chunk-PZ5AY32C.js";
150
150
  export {
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  applyUtilityPromotionRuntimePolicy,
3
3
  loadUtilityRuntimeValues
4
- } from "./chunk-SEF4IOFE.js";
4
+ } from "./chunk-SWIKABKI.js";
5
5
  import {
6
6
  TierMigrationExecutor
7
7
  } from "./chunk-YRFAYOFQ.js";
8
8
  import {
9
9
  decideTierTransition
10
10
  } from "./chunk-DD5JFCWM.js";
11
- import "./chunk-HDQUQBPW.js";
12
- import "./chunk-6FC3IZ26.js";
11
+ import "./chunk-W3K3HITK.js";
12
+ import "./chunk-EBA5DA77.js";
13
13
  import "./chunk-TBBDFYXW.js";
14
14
  import {
15
15
  excludeSupportPassportPrivateMemories
@@ -25,7 +25,8 @@ import {
25
25
  resolveUtilityLearningCapabilities
26
26
  } from "./chunk-JUOZ62Y7.js";
27
27
  import "./chunk-A2IYSXDQ.js";
28
- import "./chunk-P77QX3ID.js";
28
+ import "./chunk-B6O2YLUR.js";
29
+ import "./chunk-KNA3BXXL.js";
29
30
  import "./chunk-PZ5AY32C.js";
30
31
 
31
32
  // src/maintenance/first-start-migration.ts
@@ -272,4 +273,4 @@ export {
272
273
  LIFECYCLE_INIT_DONE_MARKER,
273
274
  runFirstStartMigration
274
275
  };
275
- //# sourceMappingURL=first-start-migration-KHIMCBIC.js.map
276
+ //# sourceMappingURL=first-start-migration-RC345GPL.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/maintenance/first-start-migration.ts"],"sourcesContent":["/**\n * First-start lifecycle migration (issue #686 retention-completion).\n *\n * When `lifecyclePolicyEnabled` is true but the memoryDir has never been\n * touched by the lifecycle policy (i.e. the state marker\n * `.lifecycle-init-done` does not exist), run a one-time, rate-limited\n * demotion sweep so the hot tier isn't flooded on the first real cron pass.\n *\n * Design constraints:\n * - Capped at `FIRST_START_DEMOTION_CAP` (default 50) demotions per run\n * so a large pre-existing corpus doesn't stall startup.\n * - Resumable: subsequent invocations see the marker and skip.\n * - The marker is written AFTER all mutations succeed so a crash during\n * migration doesn't leave a false \"done\" marker (CLAUDE.md rule #12).\n * - Dry-run mode reports candidates without mutating anything or writing\n * the marker (safe to call from tests).\n */\n\nimport path from \"node:path\";\nimport { access, mkdir, readFile, unlink, writeFile } from \"node:fs/promises\";\nimport {\n resolveMemoryLifecycleCapabilities,\n resolveQmdCapabilities,\n resolveUtilityLearningCapabilities} from \"../capabilities.js\";\nimport type { StorageManager } from \"../storage.js\";\nimport type { PluginConfig } from \"../types.js\";\nimport {\n decideTierTransition,\n type TierRoutingPolicy,\n} from \"../tier-routing.js\";\nimport { TierMigrationExecutor } from \"../tier-migration.js\";\nimport type { SearchBackend } from \"../search/port.js\";\nimport {\n applyUtilityPromotionRuntimePolicy,\n loadUtilityRuntimeValues,\n} from \"../utility-runtime.js\";\nimport { excludeSupportPassportPrivateMemories } from \"../support-passport/card-projection.js\";\n\nexport const FIRST_START_DEMOTION_CAP = 50;\nexport const LIFECYCLE_INIT_DONE_MARKER = \".lifecycle-init-done\";\nconst LIFECYCLE_QMD_REFRESH_PENDING_MARKER = \".lifecycle-qmd-refresh-pending\";\n\ntype QmdRefreshPendingMarker = {\n createdAt: string;\n collection: string;\n};\n\nexport interface FirstStartMigrationOptions {\n storage: StorageManager;\n config: PluginConfig;\n /** Override the per-run demotion cap (default: FIRST_START_DEMOTION_CAP). */\n demotionCap?: number;\n /** When true, report candidates but do not mutate or write the marker. */\n dryRun?: boolean;\n /** Optional QMD backend used to journal demotions and refresh tier collections. */\n qmd?: SearchBackend;\n /** Hot-tier QMD collection name. Defaults to config.qmdCollection. */\n hotCollection?: string;\n /** Cold-tier QMD collection name. Defaults to config.qmdColdCollection. */\n coldCollection?: string;\n /** Optional shutdown signal. When aborted, the migration stops without writing the done marker. */\n signal?: AbortSignal;\n /** Override clock for tests. */\n now?: () => Date;\n}\n\nexport interface FirstStartMigrationResult {\n skipped: boolean;\n skipReason?: string;\n dryRun: boolean;\n candidateCount: number;\n demotedCount: number;\n /** Number of individual demotion failures. When > 0, the init-done marker is\n * NOT written so the next start can retry the failed demotions. */\n failureCount: number;\n cappedAt: number;\n}\n\nfunction markerPath(memoryDir: string): string {\n return path.join(memoryDir, \"state\", LIFECYCLE_INIT_DONE_MARKER);\n}\n\nfunction qmdRefreshPendingPath(memoryDir: string): string {\n return path.join(memoryDir, \"state\", LIFECYCLE_QMD_REFRESH_PENDING_MARKER);\n}\n\nasync function markerExists(memoryDir: string): Promise<boolean> {\n try {\n await access(markerPath(memoryDir));\n return true;\n } catch {\n return false;\n }\n}\n\nasync function writeMarker(memoryDir: string, now: Date): Promise<void> {\n const p = markerPath(memoryDir);\n await mkdir(path.dirname(p), { recursive: true });\n await writeFile(p, JSON.stringify({ createdAt: now.toISOString() }), \"utf-8\");\n}\n\nasync function readQmdRefreshPending(memoryDir: string): Promise<QmdRefreshPendingMarker | null> {\n try {\n const raw = await readFile(qmdRefreshPendingPath(memoryDir), \"utf-8\");\n const parsed = JSON.parse(raw) as unknown;\n if (\n parsed &&\n typeof parsed === \"object\" &&\n typeof (parsed as { createdAt?: unknown }).createdAt === \"string\" &&\n typeof (parsed as { collection?: unknown }).collection === \"string\" &&\n (parsed as { collection: string }).collection.length > 0\n ) {\n return parsed as QmdRefreshPendingMarker;\n }\n return null;\n } catch {\n return null;\n }\n}\n\nasync function pathExists(p: string): Promise<boolean> {\n try {\n await access(p);\n return true;\n } catch {\n return false;\n }\n}\n\nasync function writeQmdRefreshPending(memoryDir: string, now: Date, collection: string): Promise<void> {\n const p = qmdRefreshPendingPath(memoryDir);\n await mkdir(path.dirname(p), { recursive: true });\n await writeFile(p, JSON.stringify({ createdAt: now.toISOString(), collection }), \"utf-8\");\n}\n\nasync function clearQmdRefreshPending(memoryDir: string): Promise<void> {\n await unlink(qmdRefreshPendingPath(memoryDir)).catch(() => {});\n}\n\nasync function buildTierRoutingPolicy(config: PluginConfig): Promise<TierRoutingPolicy> {\n const basePolicy: TierRoutingPolicy = {\n enabled: resolveQmdCapabilities(config).qmdTierMigration,\n demotionMinAgeDays: config.qmdTierDemotionMinAgeDays,\n demotionValueThreshold: config.qmdTierDemotionValueThreshold,\n promotionValueThreshold: config.qmdTierPromotionValueThreshold,\n };\n const runtime = await loadUtilityRuntimeValues({\n memoryDir: config.memoryDir,\n memoryUtilityLearningEnabled: resolveUtilityLearningCapabilities(config).memoryUtilityLearning,\n promotionByOutcomeEnabled: resolveUtilityLearningCapabilities(config).promotionByOutcome,\n });\n return applyUtilityPromotionRuntimePolicy(basePolicy, runtime);\n}\n\nasync function refreshQmdCollection(\n qmd: SearchBackend,\n collection: string,\n signal?: AbortSignal,\n): Promise<void> {\n if (typeof qmd.updateCollectionStrict === \"function\") {\n await qmd.updateCollectionStrict(collection, { signal });\n return;\n }\n await qmd.updateCollection(collection, { signal });\n}\n\n/**\n * Run the first-start migration sweep. No-ops when:\n * - `lifecyclePolicyEnabled` is false, or\n * - `qmdTierMigrationEnabled` is false (no tier migration configured), or\n * - the state marker already exists (already ran).\n *\n * Returns a structured result describing what happened.\n */\nexport async function runFirstStartMigration(\n options: FirstStartMigrationOptions,\n): Promise<FirstStartMigrationResult> {\n const {\n storage,\n config,\n demotionCap = FIRST_START_DEMOTION_CAP,\n dryRun = false,\n qmd,\n signal,\n } = options;\n const now = (options.now ?? (() => new Date()))();\n const lifecycleCaps = resolveMemoryLifecycleCapabilities(config);\n const abortedResult = (candidateCount = 0, demotedCount = 0, failureCount = 0): FirstStartMigrationResult => ({\n skipped: candidateCount === 0 && demotedCount === 0 && failureCount === 0,\n skipReason: candidateCount === 0 && demotedCount === 0 && failureCount === 0 ? \"aborted\" : undefined,\n dryRun,\n candidateCount,\n demotedCount,\n failureCount,\n cappedAt: demotionCap,\n });\n\n if (signal?.aborted) {\n return abortedResult();\n }\n\n if (!lifecycleCaps.lifecyclePolicy) {\n return {\n skipped: true,\n skipReason: \"lifecyclePolicyEnabled is false\",\n dryRun,\n candidateCount: 0,\n demotedCount: 0,\n failureCount: 0,\n cappedAt: demotionCap,\n };\n }\n\n if (!resolveQmdCapabilities(config).qmdTierMigration) {\n return {\n skipped: true,\n skipReason: \"qmdTierMigrationEnabled is false\",\n dryRun,\n candidateCount: 0,\n demotedCount: 0,\n failureCount: 0,\n cappedAt: demotionCap,\n };\n }\n\n if (await markerExists(config.memoryDir)) {\n return {\n skipped: true,\n skipReason: \"lifecycle-init-done marker already present\",\n dryRun,\n candidateCount: 0,\n demotedCount: 0,\n failureCount: 0,\n cappedAt: demotionCap,\n };\n }\n\n if (signal?.aborted) {\n return abortedResult();\n }\n\n const policy = await buildTierRoutingPolicy(config);\n if (signal?.aborted) {\n return abortedResult();\n }\n\n const hotMemories = excludeSupportPassportPrivateMemories(await storage.readAllMemories());\n if (signal?.aborted) {\n return abortedResult();\n }\n\n // Find hot memories that should be demoted to cold\n const demotionCandidates = hotMemories.filter((m) => {\n const decision = decideTierTransition(m, \"hot\", policy, now);\n return decision.changed && decision.nextTier === \"cold\";\n });\n\n const candidateCount = demotionCandidates.length;\n // Apply cap\n const batch = demotionCandidates.slice(0, demotionCap);\n\n if (dryRun) {\n return {\n skipped: false,\n dryRun: true,\n candidateCount,\n demotedCount: 0,\n failureCount: 0,\n cappedAt: demotionCap,\n };\n }\n\n let demotedCount = 0;\n let failureCount = 0;\n let qmdRefreshPendingForRun = false;\n const executor = qmd\n ? new TierMigrationExecutor({\n storage,\n qmd,\n hotCollection: options.hotCollection ?? config.qmdCollection ?? \"openclaw-engram\",\n coldCollection: options.coldCollection ?? config.qmdColdCollection ?? \"openclaw-engram-cold\",\n })\n : null;\n const coldCollection = options.coldCollection ?? config.qmdColdCollection ?? \"openclaw-engram-cold\";\n\n for (const memory of batch) {\n if (signal?.aborted) {\n return abortedResult(candidateCount, demotedCount, failureCount);\n }\n try {\n const result = executor\n ? await executor.migrateMemory({\n memory,\n fromTier: \"hot\",\n toTier: \"cold\",\n reason: \"first-start-lifecycle-migration\",\n })\n : await storage.migrateMemoryToTier(memory, \"cold\");\n if (result.changed) {\n demotedCount += 1;\n }\n } catch {\n const targetPath = storage.buildTierMemoryPath(memory, \"cold\");\n const [targetExists, sourceExists] = await Promise.all([\n pathExists(targetPath),\n pathExists(memory.path),\n ]);\n const movedToCold = targetExists && !sourceExists;\n if (movedToCold) {\n if (!qmd) {\n demotedCount += 1;\n continue;\n }\n try {\n await refreshQmdCollection(qmd, coldCollection, signal);\n demotedCount += 1;\n continue;\n } catch {\n qmdRefreshPendingForRun = true;\n try {\n await writeQmdRefreshPending(config.memoryDir, now, coldCollection);\n } catch {\n // The end-of-run retry below still gets a chance to repair the QMD\n // state before we decide whether the init marker is safe to write.\n }\n demotedCount += 1;\n continue;\n }\n }\n // Non-fatal — individual migration failures are counted but do not abort\n // the sweep. We track them so the marker is only written when ALL\n // attempted demotions succeeded (CLAUDE.md rule #12: don't write a\n // success marker after a partial failure).\n failureCount += 1;\n }\n }\n\n // Write marker AFTER all mutations succeed (CLAUDE.md rule #12).\n // If any demotion failed, skip the marker so the next start retries.\n if (signal?.aborted) {\n return abortedResult(candidateCount, demotedCount, failureCount);\n }\n const persistedQmdRefreshPending = qmd ? await readQmdRefreshPending(config.memoryDir) : null;\n const hasPersistedQmdRefreshPending = persistedQmdRefreshPending?.collection === coldCollection;\n if (qmd && persistedQmdRefreshPending && persistedQmdRefreshPending.collection !== coldCollection) {\n failureCount += 1;\n }\n if (qmd && (qmdRefreshPendingForRun || hasPersistedQmdRefreshPending)) {\n try {\n await refreshQmdCollection(qmd, coldCollection, signal);\n await clearQmdRefreshPending(config.memoryDir);\n } catch {\n failureCount += 1;\n }\n }\n if (failureCount === 0) {\n await writeMarker(config.memoryDir, now);\n }\n\n return {\n skipped: false,\n dryRun: false,\n candidateCount,\n demotedCount,\n failureCount,\n cappedAt: demotionCap,\n };\n}\n"],"mappings":"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","names":["candidateCount","demotedCount","failureCount"]}
1
+ {"version":3,"sources":["../src/maintenance/first-start-migration.ts"],"sourcesContent":["/**\n * First-start lifecycle migration (issue #686 retention-completion).\n *\n * When `lifecyclePolicyEnabled` is true but the memoryDir has never been\n * touched by the lifecycle policy (i.e. the state marker\n * `.lifecycle-init-done` does not exist), run a one-time, rate-limited\n * demotion sweep so the hot tier isn't flooded on the first real cron pass.\n *\n * Design constraints:\n * - Capped at `FIRST_START_DEMOTION_CAP` (default 50) demotions per run\n * so a large pre-existing corpus doesn't stall startup.\n * - Resumable: subsequent invocations see the marker and skip.\n * - The marker is written AFTER all mutations succeed so a crash during\n * migration doesn't leave a false \"done\" marker (CLAUDE.md rule #12).\n * - Dry-run mode reports candidates without mutating anything or writing\n * the marker (safe to call from tests).\n */\n\nimport path from \"node:path\";\nimport { access, mkdir, readFile, unlink, writeFile } from \"node:fs/promises\";\nimport {\n resolveMemoryLifecycleCapabilities,\n resolveQmdCapabilities,\n resolveUtilityLearningCapabilities} from \"../capabilities.js\";\nimport type { StorageManager } from \"../storage.js\";\nimport type { PluginConfig } from \"../types.js\";\nimport {\n decideTierTransition,\n type TierRoutingPolicy,\n} from \"../tier-routing.js\";\nimport { TierMigrationExecutor } from \"../tier-migration.js\";\nimport type { SearchBackend } from \"../search/port.js\";\nimport {\n applyUtilityPromotionRuntimePolicy,\n loadUtilityRuntimeValues,\n} from \"../utility-runtime.js\";\nimport { excludeSupportPassportPrivateMemories } from \"../support-passport/card-projection.js\";\n\nexport const FIRST_START_DEMOTION_CAP = 50;\nexport const LIFECYCLE_INIT_DONE_MARKER = \".lifecycle-init-done\";\nconst LIFECYCLE_QMD_REFRESH_PENDING_MARKER = \".lifecycle-qmd-refresh-pending\";\n\ntype QmdRefreshPendingMarker = {\n createdAt: string;\n collection: string;\n};\n\nexport interface FirstStartMigrationOptions {\n storage: StorageManager;\n config: PluginConfig;\n /** Override the per-run demotion cap (default: FIRST_START_DEMOTION_CAP). */\n demotionCap?: number;\n /** When true, report candidates but do not mutate or write the marker. */\n dryRun?: boolean;\n /** Optional QMD backend used to journal demotions and refresh tier collections. */\n qmd?: SearchBackend;\n /** Hot-tier QMD collection name. Defaults to config.qmdCollection. */\n hotCollection?: string;\n /** Cold-tier QMD collection name. Defaults to config.qmdColdCollection. */\n coldCollection?: string;\n /** Optional shutdown signal. When aborted, the migration stops without writing the done marker. */\n signal?: AbortSignal;\n /** Override clock for tests. */\n now?: () => Date;\n}\n\nexport interface FirstStartMigrationResult {\n skipped: boolean;\n skipReason?: string;\n dryRun: boolean;\n candidateCount: number;\n demotedCount: number;\n /** Number of individual demotion failures. When > 0, the init-done marker is\n * NOT written so the next start can retry the failed demotions. */\n failureCount: number;\n cappedAt: number;\n}\n\nfunction markerPath(memoryDir: string): string {\n return path.join(memoryDir, \"state\", LIFECYCLE_INIT_DONE_MARKER);\n}\n\nfunction qmdRefreshPendingPath(memoryDir: string): string {\n return path.join(memoryDir, \"state\", LIFECYCLE_QMD_REFRESH_PENDING_MARKER);\n}\n\nasync function markerExists(memoryDir: string): Promise<boolean> {\n try {\n await access(markerPath(memoryDir));\n return true;\n } catch {\n return false;\n }\n}\n\nasync function writeMarker(memoryDir: string, now: Date): Promise<void> {\n const p = markerPath(memoryDir);\n await mkdir(path.dirname(p), { recursive: true });\n await writeFile(p, JSON.stringify({ createdAt: now.toISOString() }), \"utf-8\");\n}\n\nasync function readQmdRefreshPending(memoryDir: string): Promise<QmdRefreshPendingMarker | null> {\n try {\n const raw = await readFile(qmdRefreshPendingPath(memoryDir), \"utf-8\");\n const parsed = JSON.parse(raw) as unknown;\n if (\n parsed &&\n typeof parsed === \"object\" &&\n typeof (parsed as { createdAt?: unknown }).createdAt === \"string\" &&\n typeof (parsed as { collection?: unknown }).collection === \"string\" &&\n (parsed as { collection: string }).collection.length > 0\n ) {\n return parsed as QmdRefreshPendingMarker;\n }\n return null;\n } catch {\n return null;\n }\n}\n\nasync function pathExists(p: string): Promise<boolean> {\n try {\n await access(p);\n return true;\n } catch {\n return false;\n }\n}\n\nasync function writeQmdRefreshPending(memoryDir: string, now: Date, collection: string): Promise<void> {\n const p = qmdRefreshPendingPath(memoryDir);\n await mkdir(path.dirname(p), { recursive: true });\n await writeFile(p, JSON.stringify({ createdAt: now.toISOString(), collection }), \"utf-8\");\n}\n\nasync function clearQmdRefreshPending(memoryDir: string): Promise<void> {\n await unlink(qmdRefreshPendingPath(memoryDir)).catch(() => {});\n}\n\nasync function buildTierRoutingPolicy(config: PluginConfig): Promise<TierRoutingPolicy> {\n const basePolicy: TierRoutingPolicy = {\n enabled: resolveQmdCapabilities(config).qmdTierMigration,\n demotionMinAgeDays: config.qmdTierDemotionMinAgeDays,\n demotionValueThreshold: config.qmdTierDemotionValueThreshold,\n promotionValueThreshold: config.qmdTierPromotionValueThreshold,\n };\n const runtime = await loadUtilityRuntimeValues({\n memoryDir: config.memoryDir,\n memoryUtilityLearningEnabled: resolveUtilityLearningCapabilities(config).memoryUtilityLearning,\n promotionByOutcomeEnabled: resolveUtilityLearningCapabilities(config).promotionByOutcome,\n });\n return applyUtilityPromotionRuntimePolicy(basePolicy, runtime);\n}\n\nasync function refreshQmdCollection(\n qmd: SearchBackend,\n collection: string,\n signal?: AbortSignal,\n): Promise<void> {\n if (typeof qmd.updateCollectionStrict === \"function\") {\n await qmd.updateCollectionStrict(collection, { signal });\n return;\n }\n await qmd.updateCollection(collection, { signal });\n}\n\n/**\n * Run the first-start migration sweep. No-ops when:\n * - `lifecyclePolicyEnabled` is false, or\n * - `qmdTierMigrationEnabled` is false (no tier migration configured), or\n * - the state marker already exists (already ran).\n *\n * Returns a structured result describing what happened.\n */\nexport async function runFirstStartMigration(\n options: FirstStartMigrationOptions,\n): Promise<FirstStartMigrationResult> {\n const {\n storage,\n config,\n demotionCap = FIRST_START_DEMOTION_CAP,\n dryRun = false,\n qmd,\n signal,\n } = options;\n const now = (options.now ?? (() => new Date()))();\n const lifecycleCaps = resolveMemoryLifecycleCapabilities(config);\n const abortedResult = (candidateCount = 0, demotedCount = 0, failureCount = 0): FirstStartMigrationResult => ({\n skipped: candidateCount === 0 && demotedCount === 0 && failureCount === 0,\n skipReason: candidateCount === 0 && demotedCount === 0 && failureCount === 0 ? \"aborted\" : undefined,\n dryRun,\n candidateCount,\n demotedCount,\n failureCount,\n cappedAt: demotionCap,\n });\n\n if (signal?.aborted) {\n return abortedResult();\n }\n\n if (!lifecycleCaps.lifecyclePolicy) {\n return {\n skipped: true,\n skipReason: \"lifecyclePolicyEnabled is false\",\n dryRun,\n candidateCount: 0,\n demotedCount: 0,\n failureCount: 0,\n cappedAt: demotionCap,\n };\n }\n\n if (!resolveQmdCapabilities(config).qmdTierMigration) {\n return {\n skipped: true,\n skipReason: \"qmdTierMigrationEnabled is false\",\n dryRun,\n candidateCount: 0,\n demotedCount: 0,\n failureCount: 0,\n cappedAt: demotionCap,\n };\n }\n\n if (await markerExists(config.memoryDir)) {\n return {\n skipped: true,\n skipReason: \"lifecycle-init-done marker already present\",\n dryRun,\n candidateCount: 0,\n demotedCount: 0,\n failureCount: 0,\n cappedAt: demotionCap,\n };\n }\n\n if (signal?.aborted) {\n return abortedResult();\n }\n\n const policy = await buildTierRoutingPolicy(config);\n if (signal?.aborted) {\n return abortedResult();\n }\n\n const hotMemories = excludeSupportPassportPrivateMemories(await storage.readAllMemories());\n if (signal?.aborted) {\n return abortedResult();\n }\n\n // Find hot memories that should be demoted to cold\n const demotionCandidates = hotMemories.filter((m) => {\n const decision = decideTierTransition(m, \"hot\", policy, now);\n return decision.changed && decision.nextTier === \"cold\";\n });\n\n const candidateCount = demotionCandidates.length;\n // Apply cap\n const batch = demotionCandidates.slice(0, demotionCap);\n\n if (dryRun) {\n return {\n skipped: false,\n dryRun: true,\n candidateCount,\n demotedCount: 0,\n failureCount: 0,\n cappedAt: demotionCap,\n };\n }\n\n let demotedCount = 0;\n let failureCount = 0;\n let qmdRefreshPendingForRun = false;\n const executor = qmd\n ? new TierMigrationExecutor({\n storage,\n qmd,\n hotCollection: options.hotCollection ?? config.qmdCollection ?? \"openclaw-engram\",\n coldCollection: options.coldCollection ?? config.qmdColdCollection ?? \"openclaw-engram-cold\",\n })\n : null;\n const coldCollection = options.coldCollection ?? config.qmdColdCollection ?? \"openclaw-engram-cold\";\n\n for (const memory of batch) {\n if (signal?.aborted) {\n return abortedResult(candidateCount, demotedCount, failureCount);\n }\n try {\n const result = executor\n ? await executor.migrateMemory({\n memory,\n fromTier: \"hot\",\n toTier: \"cold\",\n reason: \"first-start-lifecycle-migration\",\n })\n : await storage.migrateMemoryToTier(memory, \"cold\");\n if (result.changed) {\n demotedCount += 1;\n }\n } catch {\n const targetPath = storage.buildTierMemoryPath(memory, \"cold\");\n const [targetExists, sourceExists] = await Promise.all([\n pathExists(targetPath),\n pathExists(memory.path),\n ]);\n const movedToCold = targetExists && !sourceExists;\n if (movedToCold) {\n if (!qmd) {\n demotedCount += 1;\n continue;\n }\n try {\n await refreshQmdCollection(qmd, coldCollection, signal);\n demotedCount += 1;\n continue;\n } catch {\n qmdRefreshPendingForRun = true;\n try {\n await writeQmdRefreshPending(config.memoryDir, now, coldCollection);\n } catch {\n // The end-of-run retry below still gets a chance to repair the QMD\n // state before we decide whether the init marker is safe to write.\n }\n demotedCount += 1;\n continue;\n }\n }\n // Non-fatal — individual migration failures are counted but do not abort\n // the sweep. We track them so the marker is only written when ALL\n // attempted demotions succeeded (CLAUDE.md rule #12: don't write a\n // success marker after a partial failure).\n failureCount += 1;\n }\n }\n\n // Write marker AFTER all mutations succeed (CLAUDE.md rule #12).\n // If any demotion failed, skip the marker so the next start retries.\n if (signal?.aborted) {\n return abortedResult(candidateCount, demotedCount, failureCount);\n }\n const persistedQmdRefreshPending = qmd ? await readQmdRefreshPending(config.memoryDir) : null;\n const hasPersistedQmdRefreshPending = persistedQmdRefreshPending?.collection === coldCollection;\n if (qmd && persistedQmdRefreshPending && persistedQmdRefreshPending.collection !== coldCollection) {\n failureCount += 1;\n }\n if (qmd && (qmdRefreshPendingForRun || hasPersistedQmdRefreshPending)) {\n try {\n await refreshQmdCollection(qmd, coldCollection, signal);\n await clearQmdRefreshPending(config.memoryDir);\n } catch {\n failureCount += 1;\n }\n }\n if (failureCount === 0) {\n await writeMarker(config.memoryDir, now);\n }\n\n return {\n skipped: false,\n dryRun: false,\n candidateCount,\n demotedCount,\n failureCount,\n cappedAt: demotionCap,\n };\n}\n"],"mappings":"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","names":["candidateCount","demotedCount","failureCount"]}
@@ -5,9 +5,9 @@ import {
5
5
  readGraphEdgeDecayStatus,
6
6
  runGraphEdgeDecayMaintenance,
7
7
  runGraphEdgeDecayMaintenanceAcrossNamespaces
8
- } from "./chunk-6PST2SFW.js";
9
- import "./chunk-UFT2XNBW.js";
10
- import "./chunk-MSOXFXCA.js";
8
+ } from "./chunk-SCXURCVT.js";
9
+ import "./chunk-DGS34QSY.js";
10
+ import "./chunk-5FAGCOZD.js";
11
11
  import "./chunk-EUT2WCWS.js";
12
12
  import "./chunk-2LSZVONP.js";
13
13
  import "./chunk-DEUNUKTD.js";
@@ -16,6 +16,7 @@ import "./chunk-GKCXTSFF.js";
16
16
  import "./chunk-FFAZ2XFU.js";
17
17
  import "./chunk-PCXDUHQH.js";
18
18
  import "./chunk-VUFL7X3H.js";
19
+ import "./chunk-KNA3BXXL.js";
19
20
  import "./chunk-3WCASNQZ.js";
20
21
  import "./chunk-PZ5AY32C.js";
21
22
  export {
@@ -26,4 +27,4 @@ export {
26
27
  runGraphEdgeDecayMaintenance,
27
28
  runGraphEdgeDecayMaintenanceAcrossNamespaces
28
29
  };
29
- //# sourceMappingURL=graph-edge-decay-CJW4OT2X.js.map
30
+ //# sourceMappingURL=graph-edge-decay-MKIRZ762.js.map
@@ -3,14 +3,15 @@ import {
3
3
  restoreRemovedNodeEdges,
4
4
  rollbackNodeEdgeRewrite,
5
5
  writeGraphJsonlAtomic
6
- } from "./chunk-UFT2XNBW.js";
7
- import "./chunk-MSOXFXCA.js";
6
+ } from "./chunk-DGS34QSY.js";
7
+ import "./chunk-5FAGCOZD.js";
8
8
  import "./chunk-EUT2WCWS.js";
9
9
  import "./chunk-2LSZVONP.js";
10
10
  import "./chunk-DEUNUKTD.js";
11
11
  import "./chunk-LXY5VVGM.js";
12
12
  import "./chunk-GKCXTSFF.js";
13
13
  import "./chunk-FFAZ2XFU.js";
14
+ import "./chunk-KNA3BXXL.js";
14
15
  import "./chunk-3WCASNQZ.js";
15
16
  import "./chunk-PZ5AY32C.js";
16
17
  export {
@@ -4,14 +4,15 @@ import {
4
4
  buildGraphSnapshot,
5
5
  normalizeGraphSnapshotLimit,
6
6
  parseGraphSnapshotSince
7
- } from "./chunk-O7H3P2SJ.js";
8
- import "./chunk-MSOXFXCA.js";
7
+ } from "./chunk-HWLIMQE2.js";
8
+ import "./chunk-5FAGCOZD.js";
9
9
  import "./chunk-EUT2WCWS.js";
10
10
  import "./chunk-2LSZVONP.js";
11
11
  import "./chunk-DEUNUKTD.js";
12
12
  import "./chunk-LXY5VVGM.js";
13
13
  import "./chunk-GKCXTSFF.js";
14
14
  import "./chunk-FFAZ2XFU.js";
15
+ import "./chunk-KNA3BXXL.js";
15
16
  import "./chunk-PZ5AY32C.js";
16
17
  export {
17
18
  GRAPH_SNAPSHOT_DEFAULT_LIMIT,
package/dist/graph.js CHANGED
@@ -16,7 +16,7 @@ import {
16
16
  readAllEdges,
17
17
  readEdges,
18
18
  readEdgesStrict
19
- } from "./chunk-MSOXFXCA.js";
19
+ } from "./chunk-5FAGCOZD.js";
20
20
  import {
21
21
  GraphLockLostError,
22
22
  withGraphWriteLock
@@ -28,6 +28,7 @@ import {
28
28
  } from "./chunk-LXY5VVGM.js";
29
29
  import "./chunk-GKCXTSFF.js";
30
30
  import "./chunk-FFAZ2XFU.js";
31
+ import "./chunk-KNA3BXXL.js";
31
32
  import "./chunk-PZ5AY32C.js";
32
33
  export {
33
34
  CAUSAL_PHRASES,
@@ -5,15 +5,16 @@ import {
5
5
  normalizeCueAnchorInputs,
6
6
  normalizedHarmonicEntityIdentity,
7
7
  persistHarmonicRecords
8
- } from "./chunk-LDWIPYJ6.js";
9
- import "./chunk-ACPCA4NO.js";
8
+ } from "./chunk-LS2FHUML.js";
9
+ import "./chunk-BMWN7B3Y.js";
10
10
  import "./chunk-YCVB7X56.js";
11
11
  import "./chunk-5GKPFL3S.js";
12
12
  import "./chunk-JAKIDQB2.js";
13
- import "./chunk-DJUKBGAD.js";
13
+ import "./chunk-46EST7JO.js";
14
14
  import "./chunk-G73MCJKL.js";
15
15
  import "./chunk-A2IYSXDQ.js";
16
- import "./chunk-P77QX3ID.js";
16
+ import "./chunk-B6O2YLUR.js";
17
+ import "./chunk-KNA3BXXL.js";
17
18
  import "./chunk-PZ5AY32C.js";
18
19
  export {
19
20
  deriveHarmonicRecords,
@@ -3,8 +3,8 @@ import {
3
3
  readCueAnchors,
4
4
  readProjectedHarmonicGraph,
5
5
  searchHarmonicRetrieval
6
- } from "./chunk-34VTBPNE.js";
7
- import "./chunk-ACPCA4NO.js";
6
+ } from "./chunk-6XL73HQ4.js";
7
+ import "./chunk-BMWN7B3Y.js";
8
8
  import "./chunk-6CIAGZ6X.js";
9
9
  import "./chunk-YCVB7X56.js";
10
10
  import "./chunk-7RJUVTVF.js";
@@ -15,10 +15,11 @@ import "./chunk-JAKIDQB2.js";
15
15
  import "./chunk-P7FMDTKL.js";
16
16
  import "./chunk-VUFL7X3H.js";
17
17
  import "./chunk-BTTPKDIL.js";
18
- import "./chunk-DJUKBGAD.js";
18
+ import "./chunk-46EST7JO.js";
19
19
  import "./chunk-G73MCJKL.js";
20
20
  import "./chunk-A2IYSXDQ.js";
21
- import "./chunk-P77QX3ID.js";
21
+ import "./chunk-B6O2YLUR.js";
22
+ import "./chunk-KNA3BXXL.js";
22
23
  import "./chunk-PZ5AY32C.js";
23
24
  export {
24
25
  readAbstractionNodes,
package/dist/index.d.ts CHANGED
@@ -34,8 +34,8 @@ export { bT as ACTION_GATE_DEFAULTS, bU as ACTION_GATE_DEFAULT_MAX_ADVISORIES_PE
34
34
  import { JudgeCandidate, JudgeVerdict } from './extraction-judge.js';
35
35
  export { JudgeBatchResult, JudgeVerdictKind, clearVerdictCache, createVerdictCache, getVerdictKind, isDurableVerdict, isValidCachedVerdict, judgeFactDurability, normalizeCachedVerdict, verdictCacheSize } from './extraction-judge.js';
36
36
  export { hasBroadGraphIntent, inferIntentFromText, intentCompatibilityScore, isTaskInitiationIntent, planRecallMode } from './intent.js';
37
- import { f as EngramAccessService, B as BoundOperation, R as ReviewDeckSourceRow, L as ReviewDeckSnapshot } from './access-service-Cv8Rizo0.js';
38
- export { N as EngramMcpServer, Q as OPERATION_NAMES, O as OperationName, T as PROMOTION_CANDIDATES_DEFAULT_MIN_ACCESS, U as PROMOTION_CANDIDATES_MCP_TOOLS, V as ProcedureLibraryMaintenanceReport, X as ProcedureMaintenanceAction, Y as ProcedureMaintenanceActionKind, Z as ProcedureMaintenanceEvidence, _ as ProcedureMaintenanceMarker, $ as ProcedureMaintenanceReasonCode, a0 as ProcedureStatsConfigSnapshot, a1 as ProcedureStatsRecent, a2 as ProcedureStatsReport, a3 as ProcedureStatusCounts, a4 as PromotionCandidate, P as PromotionCandidatesResult, a5 as PromotionReuseSignal, a6 as ReviewDeckActionReceipt, a7 as ReviewDeckActionRequest, a8 as ReviewDeckChoice, a9 as ReviewDeckCursorError, aa as ReviewDeckCursorScope, ab as ReviewDeckEvidence, ac as ReviewDeckItem, ad as ReviewDeckPage, ae as ReviewDeckRisk, af as ReviewDeckUndoRequest, ag as SUBJECT_GUARD_MODES, ah as SUBJECT_GUARD_OVERRIDE_FLAG, ai as SUBJECT_VALUES, aj as SUPPORT_PASSPORT_CARD_CATEGORIES, ak as SUPPORT_PASSPORT_CARD_STATUSES, al as SUPPORT_PASSPORT_DRAFT_MAX_CONTENT_CHARACTERS, am as SUPPORT_PASSPORT_DRAFT_MAX_MEMORIES, an as SUPPORT_PASSPORT_NOT_IN_GUIDE_ANSWER, ao as SUPPORT_PASSPORT_SOURCE_MEMORY_ID_MAX_LENGTH, S as SubjectBackfillReport, ap as SubjectBackfillStorage, aq as SubjectGuardDecision, ar as SupportPassportAccessSurface, as as SupportPassportAccessSurfaceDependencies, at as SupportPassportAnswerModelInput, au as SupportPassportAnswerModelInputSchema, av as SupportPassportAnswerOutput, aw as SupportPassportAnswerOutputSchema, ax as SupportPassportAnswerResult, ay as SupportPassportCard, az as SupportPassportCardCategory, aA as SupportPassportCardCategorySchema, aB as SupportPassportCardListSchema, aC as SupportPassportCardMutationInput, aD as SupportPassportCardMutationInputSchema, aE as SupportPassportCardSchema, aF as SupportPassportCardServiceDependencies, aG as SupportPassportCardStatus, aH as SupportPassportCardStatusSchema, aI as SupportPassportCardTitleSchema, aJ as SupportPassportCreateGrantInput, aK as SupportPassportCreateGrantInputSchema, aL as SupportPassportCreateGrantRequest, aM as SupportPassportCreateGrantRequestSchema, aN as SupportPassportCreateGrantResult, aO as SupportPassportCreatedGrant, aP as SupportPassportCreatedGrantSchema, aQ as SupportPassportDraftCard, aR as SupportPassportDraftCardSchema, aS as SupportPassportDraftModelInput, aT as SupportPassportDraftModelInputSchema, aU as SupportPassportDraftOutputSchema, aV as SupportPassportDraftResult, aW as SupportPassportError, aX as SupportPassportErrorCode, aY as SupportPassportGrantCardRef, aZ as SupportPassportGrantCardRefSchema, a_ as SupportPassportGrantState, a$ as SupportPassportGrantStateSchema, b0 as SupportPassportListCardsInputSchema, b1 as SupportPassportListGrantsInputSchema, b2 as SupportPassportManualDraftInput, b3 as SupportPassportManualDraftInputSchema, b4 as SupportPassportMemoryIdSchema, b5 as SupportPassportMemoryPreview, b6 as SupportPassportModelAdapter, b7 as SupportPassportModelAdapterOptions, b8 as SupportPassportModelAuditRecord, b9 as SupportPassportModelAuditRecordSchema, ba as SupportPassportModelAuditSink, bb as SupportPassportModelAuditStore, bc as SupportPassportModelCallError, bd as SupportPassportModelClients, be as SupportPassportModelFailureMetadata, bf as SupportPassportModelMessage, bg as SupportPassportModelResultMetadata, bh as SupportPassportModelRoute, bi as SupportPassportModelRouteKind, bj as SupportPassportModelRouteResult, bk as SupportPassportModelUsage, bl as SupportPassportNamespaceSchema, bm as SupportPassportOwnerCreateGrantRequest, bn as SupportPassportOwnerCreateGrantRequestSchema, bo as SupportPassportOwnerGrant, bp as SupportPassportOwnerGrantSchema, bq as SupportPassportOwnerScope, br as SupportPassportPublicCardSchema, bs as SupportPassportPublicGuide, bt as SupportPassportPublicGuideSchema, bu as SupportPassportReplaceCardInput, bv as SupportPassportReplaceCardInputSchema, bw as SupportPassportRevokeGrantInput, bx as SupportPassportRevokeGrantInputSchema, by as SupportPassportRevokeGrantResult, bz as SupportPassportSourceMemoryIdSchema, bA as WHO_KNOWS_AUTHORSHIP_BONUS, bB as WHO_KNOWS_DEFAULT_LIMIT, bC as WHO_KNOWS_MAX_EVIDENCE, bD as WHO_KNOWS_MAX_LIMIT, bE as WHO_KNOWS_MCP_TOOLS, bF as WhoKnowsEntity, bG as WhoKnowsEvidence, bH as WhoKnowsHit, bI as WhoKnowsHttpOutcome, W as WhoKnowsResult, bJ as WhoKnowsStorage, bK as acceptsSupportPassportModelResponse, bL as backfillMemorySubjects, bM as buildReviewDeckPage, bN as buildSupportPassportDirectGatewayConfig, bO as compareReviewDeckRows, bP as computeProcedureStats, bQ as computePromotionCandidates, bR as computeReviewItemRevision, bS as computeSupportPassportCardRevision, bT as computeWhoKnows, bU as createSupportPassportModelAdapter, bV as decodeReviewDeckCursor, bW as encodeReviewDeckCursor, bX as evaluateSubjectGuard, bY as formatProcedureStatsText, bZ as handleWhoKnowsHttpQuery, b_ as hashSupportPassportAuditValues, b$ as isMemorySubject, c0 as isSharedPromotionTarget, c1 as isSubjectGuardMode, c2 as loadWhoKnowsEntities, c3 as projectReviewDeckItem, c4 as promotionCandidateKey, c5 as resolveSupportPassportModelRoutePlan, c6 as resolveWriteSubject, c7 as runProcedureLibraryMaintenance, c8 as subjectDefaultForCategory, c9 as tokenizeTopic, ca as validateWhoKnowsInput } from './access-service-Cv8Rizo0.js';
37
+ import { f as EngramAccessService, B as BoundOperation, R as ReviewDeckSourceRow, L as ReviewDeckSnapshot } from './access-service-GrdVg_-Z.js';
38
+ export { N as EngramMcpServer, Q as OPERATION_NAMES, O as OperationName, T as PROMOTION_CANDIDATES_DEFAULT_MIN_ACCESS, U as PROMOTION_CANDIDATES_MCP_TOOLS, V as ProcedureLibraryMaintenanceReport, X as ProcedureMaintenanceAction, Y as ProcedureMaintenanceActionKind, Z as ProcedureMaintenanceEvidence, _ as ProcedureMaintenanceMarker, $ as ProcedureMaintenanceReasonCode, a0 as ProcedureStatsConfigSnapshot, a1 as ProcedureStatsRecent, a2 as ProcedureStatsReport, a3 as ProcedureStatusCounts, a4 as PromotionCandidate, P as PromotionCandidatesResult, a5 as PromotionReuseSignal, a6 as ReviewDeckActionReceipt, a7 as ReviewDeckActionRequest, a8 as ReviewDeckChoice, a9 as ReviewDeckCursorError, aa as ReviewDeckCursorScope, ab as ReviewDeckEvidence, ac as ReviewDeckItem, ad as ReviewDeckPage, ae as ReviewDeckRisk, af as ReviewDeckUndoRequest, ag as SUBJECT_GUARD_MODES, ah as SUBJECT_GUARD_OVERRIDE_FLAG, ai as SUBJECT_VALUES, aj as SUPPORT_PASSPORT_CARD_CATEGORIES, ak as SUPPORT_PASSPORT_CARD_STATUSES, al as SUPPORT_PASSPORT_DRAFT_MAX_CONTENT_CHARACTERS, am as SUPPORT_PASSPORT_DRAFT_MAX_MEMORIES, an as SUPPORT_PASSPORT_NOT_IN_GUIDE_ANSWER, ao as SUPPORT_PASSPORT_SOURCE_MEMORY_ID_MAX_LENGTH, S as SubjectBackfillReport, ap as SubjectBackfillStorage, aq as SubjectGuardDecision, ar as SupportPassportAccessSurface, as as SupportPassportAccessSurfaceDependencies, at as SupportPassportAnswerModelInput, au as SupportPassportAnswerModelInputSchema, av as SupportPassportAnswerOutput, aw as SupportPassportAnswerOutputSchema, ax as SupportPassportAnswerResult, ay as SupportPassportCard, az as SupportPassportCardCategory, aA as SupportPassportCardCategorySchema, aB as SupportPassportCardListSchema, aC as SupportPassportCardMutationInput, aD as SupportPassportCardMutationInputSchema, aE as SupportPassportCardSchema, aF as SupportPassportCardServiceDependencies, aG as SupportPassportCardStatus, aH as SupportPassportCardStatusSchema, aI as SupportPassportCardTitleSchema, aJ as SupportPassportCreateGrantInput, aK as SupportPassportCreateGrantInputSchema, aL as SupportPassportCreateGrantRequest, aM as SupportPassportCreateGrantRequestSchema, aN as SupportPassportCreateGrantResult, aO as SupportPassportCreatedGrant, aP as SupportPassportCreatedGrantSchema, aQ as SupportPassportDraftCard, aR as SupportPassportDraftCardSchema, aS as SupportPassportDraftModelInput, aT as SupportPassportDraftModelInputSchema, aU as SupportPassportDraftOutputSchema, aV as SupportPassportDraftResult, aW as SupportPassportError, aX as SupportPassportErrorCode, aY as SupportPassportGrantCardRef, aZ as SupportPassportGrantCardRefSchema, a_ as SupportPassportGrantState, a$ as SupportPassportGrantStateSchema, b0 as SupportPassportListCardsInputSchema, b1 as SupportPassportListGrantsInputSchema, b2 as SupportPassportManualDraftInput, b3 as SupportPassportManualDraftInputSchema, b4 as SupportPassportMemoryIdSchema, b5 as SupportPassportMemoryPreview, b6 as SupportPassportModelAdapter, b7 as SupportPassportModelAdapterOptions, b8 as SupportPassportModelAuditRecord, b9 as SupportPassportModelAuditRecordSchema, ba as SupportPassportModelAuditSink, bb as SupportPassportModelAuditStore, bc as SupportPassportModelCallError, bd as SupportPassportModelClients, be as SupportPassportModelFailureMetadata, bf as SupportPassportModelMessage, bg as SupportPassportModelResultMetadata, bh as SupportPassportModelRoute, bi as SupportPassportModelRouteKind, bj as SupportPassportModelRouteResult, bk as SupportPassportModelUsage, bl as SupportPassportNamespaceSchema, bm as SupportPassportOwnerCreateGrantRequest, bn as SupportPassportOwnerCreateGrantRequestSchema, bo as SupportPassportOwnerGrant, bp as SupportPassportOwnerGrantSchema, bq as SupportPassportOwnerScope, br as SupportPassportPublicCardSchema, bs as SupportPassportPublicGuide, bt as SupportPassportPublicGuideSchema, bu as SupportPassportReplaceCardInput, bv as SupportPassportReplaceCardInputSchema, bw as SupportPassportRevokeGrantInput, bx as SupportPassportRevokeGrantInputSchema, by as SupportPassportRevokeGrantResult, bz as SupportPassportSourceMemoryIdSchema, bA as WHO_KNOWS_AUTHORSHIP_BONUS, bB as WHO_KNOWS_DEFAULT_LIMIT, bC as WHO_KNOWS_MAX_EVIDENCE, bD as WHO_KNOWS_MAX_LIMIT, bE as WHO_KNOWS_MCP_TOOLS, bF as WhoKnowsEntity, bG as WhoKnowsEvidence, bH as WhoKnowsHit, bI as WhoKnowsHttpOutcome, W as WhoKnowsResult, bJ as WhoKnowsStorage, bK as acceptsSupportPassportModelResponse, bL as backfillMemorySubjects, bM as buildReviewDeckPage, bN as buildSupportPassportDirectGatewayConfig, bO as compareReviewDeckRows, bP as computeProcedureStats, bQ as computePromotionCandidates, bR as computeReviewItemRevision, bS as computeSupportPassportCardRevision, bT as computeWhoKnows, bU as createSupportPassportModelAdapter, bV as decodeReviewDeckCursor, bW as encodeReviewDeckCursor, bX as evaluateSubjectGuard, bY as formatProcedureStatsText, bZ as handleWhoKnowsHttpQuery, b_ as hashSupportPassportAuditValues, b$ as isMemorySubject, c0 as isSharedPromotionTarget, c1 as isSubjectGuardMode, c2 as loadWhoKnowsEntities, c3 as projectReviewDeckItem, c4 as promotionCandidateKey, c5 as resolveSupportPassportModelRoutePlan, c6 as resolveWriteSubject, c7 as runProcedureLibraryMaintenance, c8 as subjectDefaultForCategory, c9 as tokenizeTopic, ca as validateWhoKnowsInput } from './access-service-GrdVg_-Z.js';
39
39
  import { LocalLlmClient } from './local-llm.js';
40
40
  import { FallbackLlmClient } from './fallback-llm.js';
41
41
  export { FallbackLlmOptions, FallbackLlmResponse, FallbackLlmRuntimeContext } from './fallback-llm.js';
@@ -58,10 +58,10 @@ export { a as NamespaceCatalog, c as NamespaceCatalogFilter, d as NamespaceCatal
58
58
  export { SESSION_CHANNEL_TYPE, SessionIdentity, SessionStoragePaths, legacyParserReadbackDir, parseSessionIdentity, sessionStoragePaths } from './session-identity.js';
59
59
  export { storagePathHash } from './storage-paths.js';
60
60
  export { TrustZoneName, TrustZoneRecord, TrustZoneRecordKind, TrustZoneSourceClass, isTrustZoneName } from './trust-zones.js';
61
- export { A as AuditMemoryReport, B as BulkImportCliCommandOptions, a as auditMemoryStore, f as formatAuditMemoryReport, p as parseStrictCliDate, r as runAuditMemoryCliCommand, b as runBulkImportCliCommand } from './cli-B_YwqoIr.js';
61
+ export { A as AuditMemoryReport, B as BulkImportCliCommandOptions, a as auditMemoryStore, f as formatAuditMemoryReport, p as parseStrictCliDate, r as runAuditMemoryCliCommand, b as runBulkImportCliCommand } from './cli-BqMNkQn5.js';
62
62
  export { EngramAccessHttpServer, RemnicAdminConfigPatch, RemnicAdminControls, RemnicAdminDashboardStatus, RemnicAdminFeatureStatus, RemnicAdminHarnessStatus, RemnicAdminModelOption } from './access-http.js';
63
63
  export { CreateStoredGrantInput, DEFAULT_SUPPORT_PASSPORT_CONFIG, SUPPORT_PASSPORT_ATTRIBUTE_KEYS, SUPPORT_PASSPORT_AUDIT_TAG, SUPPORT_PASSPORT_CARD_TAG, SUPPORT_PASSPORT_MODEL_ACK_PATH, SUPPORT_PASSPORT_MODEL_JOB_PATH, SUPPORT_PASSPORT_MODEL_RESULT_PATH, StoredSupportPassportCard, SupportPassportCardService, SupportPassportDraftService, SupportPassportDraftServiceDependencies, SupportPassportGrantMutationHooks, SupportPassportGrantService, SupportPassportGrantServiceDependencies, SupportPassportGrantStore, SupportPassportGrantStoreOptions, SupportPassportModelBridge, SupportPassportModelBridgeOptions, SupportPassportModelJob, SupportPassportQuestionService, SupportPassportQuestionServiceDependencies, activeSupportPassportReplacementPredecessorIds, computeSupportPassportOwnerKey, computeSupportPassportSourceRevision, createSupportPassportPrivateFileExclusion, decodeSupportPassportNamespaceAttributes, encodeSupportPassportNamespaceAttributes, excludeSupportPassportPrivateMemories, hasLiveSupportPassportCard, isSupportPassportPrivateMemory, isSupportPassportSourceEligible, notifySupportPassportCommitted, parseSupportPassportConfig, parseSupportPassportModelJob, projectSupportPassportCard, syncDirectoryForDurability } from './support-passport/index.js';
64
- export { a as SUPPORT_PASSPORT_PUBLIC_HTTP_ROUTES, S as SupportPassportExternalRequestHandler, b as SupportPassportPublicHandlerOptions, c as buildSupportPassportPublicRequestHandler, d as composeSupportPassportExternalRequestHandlers, n as normalizeSupportPassportNetworkAddress } from './public-http-D6d4W8x-.js';
64
+ export { a as SUPPORT_PASSPORT_PUBLIC_HTTP_ROUTES, S as SupportPassportExternalRequestHandler, b as SupportPassportPublicHandlerOptions, c as buildSupportPassportPublicRequestHandler, d as composeSupportPassportExternalRequestHandlers, n as normalizeSupportPassportNetworkAddress } from './public-http-ByX2eTla.js';
65
65
  import { z } from 'zod';
66
66
  export { ResolveSecretRefFn, clearAuthTokenSecretCache, isAgentAccessSecretRef, resolveAgentAccessAuthToken } from './resolve-auth-token.js';
67
67
  export { CuriosityQuestion, MEMORY_CONTEXT_HEADER, MEMORY_CONTEXT_INSTRUCTION, RECALL_CONTEXT_SEPARATOR, RecallAuthorityRenderOptions, RecallContextComposition, RenderMemoryContextPromptInput, RenderedMemoryContextPrompt, boundRecallContextComposition, composeRecallContext, contextBudgetForFooter, formatCuriosityFooter, renderAuthorityBoundContent, renderMemoryContextPrompt, selectCuriosityQuestion } from './recall-context-composition.js';
@@ -4604,8 +4604,8 @@ declare const RelayMissionEventSchema: z.ZodObject<{
4604
4604
  }[] | undefined;
4605
4605
  }>;
4606
4606
  }, "strict", z.ZodTypeAny, {
4607
- schemaVersion: "1";
4608
4607
  recordedAt: string;
4608
+ schemaVersion: "1";
4609
4609
  payload: {
4610
4610
  kind: "mission_started";
4611
4611
  title: string;
@@ -4783,8 +4783,8 @@ declare const RelayMissionEventSchema: z.ZodObject<{
4783
4783
  idempotencyKey?: string | undefined;
4784
4784
  authenticatedPrincipal?: string | undefined;
4785
4785
  }, {
4786
- schemaVersion: "1";
4787
4786
  recordedAt: string;
4787
+ schemaVersion: "1";
4788
4788
  payload: {
4789
4789
  kind: "mission_started";
4790
4790
  title: string;
@@ -6872,6 +6872,18 @@ interface WearableConnectorRegistration {
6872
6872
  }
6873
6873
  declare function registerWearableConnector(registration: WearableConnectorRegistration): void;
6874
6874
  declare function getWearableConnector(id: string): WearableConnectorRegistration | undefined;
6875
+ /**
6876
+ * Register a connector package with this registry immediately (idempotent)
6877
+ * and return its `ensure*Registered()` companion.
6878
+ *
6879
+ * Connector packages call this once at module scope with their registration
6880
+ * record, so importing the module registers the connector as a side effect.
6881
+ * The returned companion re-checks the live registry on every call — so it
6882
+ * also re-registers after a test-only registry reset — and returns false
6883
+ * while the connector stays registered. `registerWearableConnector` throws
6884
+ * on duplicate ids, which is why the registry is checked before each call.
6885
+ */
6886
+ declare function selfRegisterWearableConnector(registration: WearableConnectorRegistration): () => boolean;
6875
6887
  declare function listWearableConnectors(): string[];
6876
6888
  /** Test-only: reset the registry between cases. */
6877
6889
  declare function clearWearableConnectors(): void;
@@ -9554,4 +9566,4 @@ declare function forkCapsule(opts: ForkCapsuleOptions): Promise<ForkCapsuleResul
9554
9566
  */
9555
9567
  declare function readForkLineage(targetRoot: string, forkId: string): Promise<ForkLineage | null>;
9556
9568
 
9557
- export { ACTIVITY_ANALYSIS_STATUSES, ACTIVITY_DELETE_SCOPES, ACTIVITY_DIGEST_FORMAT_VERSION, ACTIVITY_DIR_NAME, ACTIVITY_FEATURE_GATES, ACTIVITY_SYNC_DEFAULT_INTERVAL_MS, ANALYSIS_FAILURE_KINDS, ANALYSIS_METADATA_MAX_FIELD_LENGTH, type ActivityAnalysisStatus, ActivityConfig, ActivityDayDigest, ActivityDayMeta, type ActivityDeleteCandidate, type ActivityDeletePlan, type ActivityDeleteScope, type ActivityFeatureGate, type ActivityGateSet, type ActivityHealthSnapshot, ActivityHttpSourceClient, type ActivityHttpSourceClientOptions, type ActivityIndexRefresher, type ActivityMemoryGenerationDeps, type ActivityMemoryGenerationResult, type ActivityMemoryWriter, type ActivityPrivacyPolicy, ActivitySnapshot, ActivitySnapshotPage, ActivitySourceCheck, ActivitySourceClient, ActivityStore, type ActivitySyncOptions, type ActivitySyncRegistration, type ActivitySyncResult, ActivitySyncRunSummary, ActivitySyncScheduler, type ActivitySyncSchedulerOptions, ActivityTimelineQaConfig, ActivityTimelineVaultConfig, ActivityWearablesMeetingsDaySource, type AnalysisFailure, type AnalysisFailureKind, type AnalysisPromptObservation, type AnalysisRunMetadata, type ApplyManagedRegionResult, type ArchitectureHintsResult, type AuditEntry, BUILT_IN_OFF_THE_RECORD_END, BUILT_IN_OFF_THE_RECORD_START, type BatchObservationsOptions, type BeginEndPairInput, type BeginEndPairResult, type BinaryAssetRecord, type BinaryAssetStatus, type BinaryLifecycleConfig, type BinaryLifecycleManifest, type BinaryStorageBackend, type BinaryStorageBackendConfig, ClaudeCodeMemoryExtensionPublisher, type CleanupResult, type ClippedRecapCard, CodexMemoryExtensionPublisher, type CodingNamespaceOverlay, type CodingScopeDescription, type CollectLocalSessionSummariesOptions, type CompiledCorrectionRule, type CompiledOffTheRecordMarkers, type CompiledRedactionRule, type ConflictEntry, type ContradictionOptions, type ContradictionPair, type ContradictionResult$1 as CurateContradictionResult, type DuplicateResult as CurateDuplicateResult, type CurateOptions, type CurateResult, type CuratedStatement, DEFAULT_GRACE_PERIOD_DAYS, DEFAULT_MAX_BINARY_SIZE_BYTES, DEFAULT_MEETINGS_CONFIG, DEFAULT_MEETINGS_DETECTION_CONFIG, DEFAULT_MEETING_APP_PATTERNS, DEFAULT_PROXIMITY_GAP_MS, DEFAULT_RECURRENCE_MIN_DAYS, DEFAULT_REDACTION_RULES, DEFAULT_SCAN_PATTERNS, DEFAULT_SOURCE_TRUST, DEFAULT_TAXONOMY, DEFAULT_TIMELINE_CATEGORIES, DEFAULT_UNTRUSTED_ORIGINS, DEFAULT_WINDOW_TOLERANCE_MS, type DedupOptions, type DedupResult, DetectedMeeting, type DeterministicJournalOptions, type DeterministicRecap, type DeterministicRecapOptions, type DeterministicWeek, type DeterministicWeekDay, type DeterministicWeekOptions, DiscoveredExtension, type DocFile, DriftDetectionConfig, type DriftRankInput, type DriftRankOutput, type DriftRecallFrontmatter, type DriveChange, type DriveChangesPage, type DriveFileMetadata, type DuplicatePair, EngramAccessService, type ExportSkillsResult, FallbackLlmClient, type FileChange, type FileLine, FilesystemBackend, type ForkCapsuleOptions, type ForkCapsuleResult, type ForkLineage, type FuseClusterResult, FusedDisagreement, FusedSegment, FusedSpeaker, FusionConversationInput, FusionDayResult, FusionOptions, GOOGLE_DRIVE_CONNECTOR_ID, GOOGLE_DRIVE_CURSOR_KIND, DEFAULT_POLL_INTERVAL_MS as GOOGLE_DRIVE_DEFAULT_POLL_INTERVAL_MS, type GenerateOptions, type GenerateResult, type GitContext, type GitInvoker, type GoogleDriveClient, type GoogleDriveClientFactory, type GoogleDriveConnectorConfig, type GoogleDriveSyncResult, HermesMemoryExtensionPublisher, INJECTION_SCREEN_THRESHOLD, type ImportSkillsResult, type IngestionPlan, type InjectionScreenFinding, type InjectionScreenResult, type InsertVaultRegionResult, JOURNAL_DIR_NAME, type JournalMemoryProvenance, type JournalSeedCard, JudgeCandidate, JudgeVerdict, KNOWN_WEARABLE_SOURCE_IDS, type LanguageInfo, LiveConnector, LiveConnectorRegistry, LiveConnectorRegistryError, type LocalSessionAdapterInput, type LocalSessionAdapterOptions, type LocalSessionParseWarning, type LocalSessionParsedFile, type LocalSessionRole, type LocalSessionSourceAdapter, type LocalSessionSummaryCliOptions, type LocalSessionSummaryReport, type LocalSessionTurn, MEETING_SOURCE_PREFIX, MIN_RECURRENCE_MIN_DAYS, MS_PER_DAY, MeetingAppSpan, MeetingAudioWindow, MeetingDayData, MeetingEpisodeGenResult, type MeetingFactCandidate, MeetingMemoryGenerator, type MeetingMemoryStorageIo, MeetingMemoryWriter, MeetingRecord, MeetingRecordStore, type MeetingSummaryDeps, type MeetingSummaryExtractor, type MeetingSummaryJudge, type MeetingSummaryResult, type MeetingsActivityReader, MeetingsBuildScheduler, type MeetingsBuildSchedulerOptions, MeetingsBuilder, type MeetingsCliDeps, type MeetingsCliIo, MeetingsConfig, MeetingsDaySource, MeetingsDetectionConfig, MeetingsDetectionInput, MeetingsInputError, type MeetingsWearableReader, MemoryCategory, MemoryDriftState, type MemoryEntry, type MemoryExtensionPublisher, type MergeRecapEditsResult, type MergeResult, NOTION_CONNECTOR_ID, NOTION_CURSOR_KIND, NOTION_DEFAULT_POLL_INTERVAL_MS, NoneBackend, type NotionConnectorConfig, type OffTheRecordMarkerInput, OffTheRecordMarkerSettings, type OnboardOptions, type OnboardResult, type OriginClass, PUBLISHERS, type PackReviewContextStructuralInput, type ParseClaimObservationIdResult, ParsedSkillBundle, type PersistDeterministicJournalInput, type PersistDeterministicJournalResult, type PersistWeeklySnapshotInput, type PersistWeeklySnapshotResult, type PipelineResult, PluginConfig, type PreferenceDriftClassification, type PreferenceDriftDependencies, type PreferenceDriftEvidence, type PreferenceDriftFinding, type PreferenceDriftMarker, type PreferenceDriftReport, type PreferenceDriftResolutionOptions, type PreferenceDriftResolutionResult, type PreferenceDriftSkipReason, type PrivacyWindowItem, type PrivacyWindowOptions, type ProjectShape, type ProvenanceEntry, type PublishContext, type PublishResult, type PublishVaultNoteInput, type PublishVaultRegionResult, type PublisherCapabilities, RECAP_SOURCE_KINDS, REDACTION_PLACEHOLDER, RELAY_DEMO_MISSION_ID, RELAY_DEMO_NAMESPACE, RELAY_MISSION_DEFAULT_EVENT_LIMIT, RELAY_MISSION_MAX_EVENTS, RELAY_MISSION_MAX_EVENT_LIMIT, RELAY_MISSION_MAX_FILE_BYTES, RELAY_MISSION_MAX_LINE_BYTES, RELAY_MISSION_SCHEMA_VERSION, REMNIC_CITATION_FORMAT, REMNIC_MCP_TOOL_INVENTORY, REMNIC_RECALL_DECISION_RULES, REMNIC_SEMANTIC_OVERVIEW, type ReadSkillBundle, type ReadVaultJournalInput, type ReadVaultJournalResult, type RecapCandidate, type RecapMarkdownOptions, type RecapSection, type RecapSelection, type RecapSourceKind, type RecapWindowCard, type RecurringPattern, type RedactionConfig, type RedactionReport, type RedactionRuleConfig, type RelayAgentOutputSnapshot, type RelayAgentSnapshot, type RelayConflictSnapshot, type RelayCorrectionSnapshot, type RelayDecisionSnapshot, type RelayEvidenceRef, RelayEvidenceRefSchema, type RelayMissionAppendAccessInput, type RelayMissionAppendAccessOutput, type RelayMissionAppendResult, type RelayMissionEvent, type RelayMissionEventInput, RelayMissionEventInputSchema, RelayMissionEventSchema, type RelayMissionPayload, RelayMissionPayloadSchema, type RelayMissionReadAccessInput, type RelayMissionReadAccessOutput, type RelayMissionReadOptions, RelayMissionReadOptionsSchema, type RelayMissionSnapshot, type RelayMissionStatus, RelayMissionStore, RelayMissionStoreError, type RelayMissionStoreErrorCode, type RelayMissionStoreOptions, type RelayPropagationSnapshot, type RelayRecallSnapshot, type RelayTestSnapshot, ResolverDecision, type ReviewAction, type ReviewCandidate, type ReviewContext, ReviewDeckSnapshot, ReviewDeckSourceRow, type ReviewItem, type ReviewListResult, type ReviewOptions, type ReviewResult, type ScriptHint, SealedMemoryEnvelope, type SeedJournalInput, type SeedJournalResult, SemanticDedupLookup, type SessionSummaryDraft, type SessionSummaryExcerpt, SkillBundle, type Space, type SpaceKind, type SpaceManifest, type SpacePromoteResult, type SpacePullResult, type SpacePushResult, type SpaceShareResult, type SpaceSwitchResult, SpeakerRegistry, type StatementProvenance, StorageManager, type StructuralContextDegradation, type StructuralContextErrorCode, type StructuralContextProvider, type StructuralProviderStatus, type StructuralSpawnFn, type StructuralSymbol, type SubprocessProviderOptions, type SymbolsForDiffErr, type SymbolsForDiffOk, type SymbolsForDiffResult, SyncIncrementalResult, type SyncOptions, type SyncResult, type SyncState, TIMELINE_ANALYSIS_BATCH_OVERLAP, TIMELINE_ANALYSIS_BATCH_SIZE, TIMELINE_ANALYSIS_DEFAULT_TIMEOUT_MS, TIMELINE_ANALYSIS_PROMPT_VERSION, TIMELINE_FORMAT_VERSION, TIMELINE_MAX_DWELL_MS, TIMELINE_MERGE_GAP_MS, TIMELINE_RESERVED_IDLE, TIMELINE_RESERVED_PAUSE, TIMELINE_RESERVED_UNKNOWN, TRANSCRIPT_FORMAT_VERSION, Taxonomy, type TimelineAnalysisComplete, type TimelineAnalysisCompleteInput, TimelineAnalysisConfigError, type TimelineAnalysisInput, type TimelineAnalysisResult, type TimelineAnalysisStatus, type TimelineBatchObservation, type TimelineBuildInput, type TimelineCard, type TimelineCardKind, type TimelineCategory, type TimelineClassification, type TimelineCliDeps, type TimelineCliIo, type TimelineCompactCard, type TimelineCompactRange, type TimelineCorrection, TimelineCorrectionStore, type TimelineDay, type TimelineEvidenceClaim, type TimelineEvidenceObservation, type TimelineEvidenceRange, type TimelineManualEdit, type TimelineObservation, type TimelinePause, type TimelineQueryCard, type TimelineRangeFormat, type TimelineRangeQuery, type TimelineSearchQuery, type TimelineSearchResult, TokenEntry, type TrainingExportAdapter, type TrainingExportOptions, type TrainingExportRecord, type TranscriptSegmentMatch, type TreeNode, VAULT_JOURNAL_PREREQUISITES, VAULT_PUBLISH_OUTCOMES, VAULT_TEMPLATE_TOKENS, type ValidateRegionNameResult, type VaultDryRunInput, type VaultJournalPrereqResult, type VaultJournalPrerequisite, type VaultPublishOutcome, type VaultPublishResult, type VaultPublishStatus, type VaultPublisherTestHooks, type VaultSectionProvenance, type VaultSectionPublish, type VaultTemplateToken, WEARABLES_DIR_NAME, WEEKLY_ACTIVITY_FORMAT_VERSION, WEEKLY_SNAPSHOT_DIR, WEEKLY_SNAPSHOT_FORMAT_VERSION, WEEK_START_DAYS, WearableCleanupSettings, type WearableConnectorFactory, type WearableConnectorFactoryOptions, type WearableConnectorRegistration, WearableConversation, WearableCorrectionRule, type WearableDayBody, WearableDayTranscript, WearableDayTranscriptMeta, type WearableDayTranscriptStore, WearableFusionConfig, WearableSourceConnector, WearableSourceSettings, type WearableSourceSyncState, type WearableSyncStateFile, type WearablesCliIo, WearablesConfig, WearablesInputError, WearablesService, type WeekDayOccurrence, type WeekSnapshotDay, type WeekSnapshotOptions, type WeeklyActivityOptions, type WeeklyActivitySummary, type WeeklyCategoryTotal, type WeeklyConfigInput, type WeeklyDayTotal, type WeeklyDurationTotals, type WeeklyKindTotals, type WeeklyPreviousPeriod, type WeeklyPreviousPeriodUnavailable, activityCursorKey, activityDateInTimezone, activityDayWindow, activityDigestPath, analyzeTimelineCards, appendRelayMissionEvent, applyCorrections, applyManagedRegion, applyOffTheRecord, applyPreferenceDriftRanking, applyTimelineCorrections, applyVaultFrontmatter, assertBeginEndPair, assertValidTimezone, batchObservations, bodyIsEscaped, boundEvidence, branchNamespaceName, buildActivityHealth, buildAnalysisPrompt, buildAnalysisRunMetadata, buildAudioWindows, buildJournalMemoryProvenance, buildPhraseMatcher, buildProcedureRecallSection, buildTimelineAnalysisPrompt, buildTimelineDay, buildWeeklyActivitySummary, builtInConnectorPackageSpecifier, checkVaultJournalPrerequisites, classifyAnalysisFailure, classifyOrigin, classifyTimelineObservation, cleanConversation, clearStructuralContextProvidersForTest, clearTrainingExportAdapters, clearWearableConnectors, clipCardsToRecapWindow, clusterConversations, collapseImmediateRepeats, collectLocalSessionSummaries, compareRelayEvents, compareWeeklyPreviousPeriod, compileCorrectionRule, compileCorrectionRules, compileOffTheRecordMarkers, compileRedactionPatterns, compileRedactionRules, composeActivityDigestBody, composeActivityDigestMeta, composeDayTranscriptBody, composeDayTranscriptMeta, composeMeetingEpisodeContent, computeWeeklyConfigHash, convertMemoriesToRecords, correctionsFilePath, createBackend, createGoogleDriveConnector, createMeetingMemoryGenerator, createMeetingMemoryWriter, createNotionConnector, createRelayMissionFixture, createSpace, createSubprocessStructuralProvider, curate, decodeTranscriptBody, defaultActivityConfig, defaultGoogleDriveClientFactory, defaultWearableCleanupSettings, defaultWearableFusionConfig, defaultWearableSourceSettings, defaultWearablesConfig, deleteSpace, deriveAppSpans, describeCodingScope, describeErrorForOperator, describeStructuralProviderStatus, detectMeetings, detectScriptHints, driftAgeNote, emptyManifest, emptySyncState, ensureBuiltInWearableConnectors, escapeSegmentText, expandVaultTemplateTokens, exportDeterministicRecap, exportDeterministicWeek, exportSkillBundles, fileLines, filterPrivacyWindow, findContradictions, findDuplicates, findRecurringPatterns, forkCapsule, formatVaultWikilink, fuseCluster, fuseDay, fusionInputsFromConversations, generateActivityMemories, generateContextTree, generateMeetingEpisodes, generateMeetingSummaryFacts, generateResolverDocument, getActiveSpace, getAuditLog, getLocalSessionSourceAdapter, getManifestPath, getSpacesDir, getStructuralContextProvider, getTaxonomyDir, getTaxonomyFilePath, getTrainingExportAdapter, getWearableConnector, hashActivityBody, hashTranscriptBody, hostIdForConnector, insertMarkersUnderHeading, isAnalysisFailureKind, isEligibleActivityFact, isJournalDayPath, isLowQualitySegment, isPreferenceDriftStageActive, isReviewPrompt, isUntrustedOrigin, isValidActivityDate, isValidTranscriptDate, joinVaultSegments, journalPath, listLocalSessionSourceAdapters, listReviewItems, listSpaces, listTrainingExportAdapters, listWearableConnectors, loadCorrectionsFile, loadManifest, loadSyncState, loadTaxonomy, manifestDir, manifestPath, matchesPatterns, meetingDayTag, meetingId, meetingSourceLabel, mergeFrontmatterKeys, mergeRecapUserEdits, mergeSpaces, normalizeOriginUrl, observationsForExport, onboard, packReviewContext, packReviewContextStructural, parseActivityConfig, parseActivityDigest, parseActivityPrivacy, parseAtxHeading, parseClaimObservationId, parseDayTranscript, parseFlexibleIsoTimestamp, parseIsoOffsetTimestamp, parseIsoUtcTimestamp, parseMeetingsConfig, parseOriginClass, parseTimelineVaultConfig, parseTouchedFiles, parseTranscriptSegmentLine, parseWearablesConfig, performReview, persistDeterministicJournal, persistImportedSkills, persistWeeklySnapshot, planActivityDeletion, planVaultDryRun, probeStructuralProviderForDoctor, projectNamespaceName, promoteSpace, publishVaultNote, publishVaultRegion, publisherFor, publisherForConnector, pullFromSpace, pushToSpace, queryTimelineRange, queryTimelineSearch, rankReviewCandidates, readForkLineage, readManifest, readPreferenceDriftMarker, readRelayMission, readReviewDeckRow, readReviewDeckSnapshot, readSkillBundlesFromDir, readVaultJournal, reconstructFusionInputs, redactSessionSummaryText, redactText, reduceRelayMission, refreshActivityIndex, registerLocalSessionSourceAdapter, registerPublisher, registerStructuralContextProvider, registerTrainingExportAdapter, registerWearableConnector, relayMissionAppendOperation, relayMissionReadOperation, relayMissionReceiptDigest, renderAuthorityFence, renderDeterministicJournal, renderExtensionsBlock, renderExtensionsFooter, renderRecapMarkdown, renderStructuralProviderStatusLine, renderWeekSnapshot, resolveActivityGates, resolveCategory, resolveCodingNamespaceOverlay, resolveGitContext, resolvePreferenceDrift, resolveVaultNotePath, runBinaryLifecyclePipeline, runLocalSessionSummaryCliCommand, runMeetingsCliCommand, runOkfCliCommand, runPreferenceDriftScan, runTimelineCliCommand, runWearablesCliCommand, saveCorrectionsFile, saveManifest, saveSyncState, saveTaxonomy, scanForBinaries, screenCandidateFact, seedJournal, selectRecapForDay, serializeActivityDigest, serializeDayTranscript, serializeTimelineDay, setVaultPublisherTestHooks, shareSpace, shouldRetain, sortObservationIds, sortTimelineCategories, stableHash, storageWearableDayReader, stripFillerTokens, stripRemnicOwnedRegions, stripVaultMdSuffix, structuralProviderActive, summarizeVaultPublish, switchSpace, syncActivitySource, syncChanges, syncStateFilePath, timelineCorrectionDatabasePath, timezoneOffsetIso, toStructuralContextDegradation, todayJournalDate, unescapeSegmentText, unescapeSpeakerLabel, updateSourceSyncState, validateActivityBaseUrl, validateGoogleDriveConfig, validateNotionConfig, validateRegionName, validateSlug, validateTaxonomy, validateTimelineCategories, validateVaultNoteTemplate, watchForChanges, weeklySnapshotPath, withRawEntityPageMutation, writeJournalFile, writeManifest, writeMeetingEpisodeMemory };
9569
+ export { ACTIVITY_ANALYSIS_STATUSES, ACTIVITY_DELETE_SCOPES, ACTIVITY_DIGEST_FORMAT_VERSION, ACTIVITY_DIR_NAME, ACTIVITY_FEATURE_GATES, ACTIVITY_SYNC_DEFAULT_INTERVAL_MS, ANALYSIS_FAILURE_KINDS, ANALYSIS_METADATA_MAX_FIELD_LENGTH, type ActivityAnalysisStatus, ActivityConfig, ActivityDayDigest, ActivityDayMeta, type ActivityDeleteCandidate, type ActivityDeletePlan, type ActivityDeleteScope, type ActivityFeatureGate, type ActivityGateSet, type ActivityHealthSnapshot, ActivityHttpSourceClient, type ActivityHttpSourceClientOptions, type ActivityIndexRefresher, type ActivityMemoryGenerationDeps, type ActivityMemoryGenerationResult, type ActivityMemoryWriter, type ActivityPrivacyPolicy, ActivitySnapshot, ActivitySnapshotPage, ActivitySourceCheck, ActivitySourceClient, ActivityStore, type ActivitySyncOptions, type ActivitySyncRegistration, type ActivitySyncResult, ActivitySyncRunSummary, ActivitySyncScheduler, type ActivitySyncSchedulerOptions, ActivityTimelineQaConfig, ActivityTimelineVaultConfig, ActivityWearablesMeetingsDaySource, type AnalysisFailure, type AnalysisFailureKind, type AnalysisPromptObservation, type AnalysisRunMetadata, type ApplyManagedRegionResult, type ArchitectureHintsResult, type AuditEntry, BUILT_IN_OFF_THE_RECORD_END, BUILT_IN_OFF_THE_RECORD_START, type BatchObservationsOptions, type BeginEndPairInput, type BeginEndPairResult, type BinaryAssetRecord, type BinaryAssetStatus, type BinaryLifecycleConfig, type BinaryLifecycleManifest, type BinaryStorageBackend, type BinaryStorageBackendConfig, ClaudeCodeMemoryExtensionPublisher, type CleanupResult, type ClippedRecapCard, CodexMemoryExtensionPublisher, type CodingNamespaceOverlay, type CodingScopeDescription, type CollectLocalSessionSummariesOptions, type CompiledCorrectionRule, type CompiledOffTheRecordMarkers, type CompiledRedactionRule, type ConflictEntry, type ContradictionOptions, type ContradictionPair, type ContradictionResult$1 as CurateContradictionResult, type DuplicateResult as CurateDuplicateResult, type CurateOptions, type CurateResult, type CuratedStatement, DEFAULT_GRACE_PERIOD_DAYS, DEFAULT_MAX_BINARY_SIZE_BYTES, DEFAULT_MEETINGS_CONFIG, DEFAULT_MEETINGS_DETECTION_CONFIG, DEFAULT_MEETING_APP_PATTERNS, DEFAULT_PROXIMITY_GAP_MS, DEFAULT_RECURRENCE_MIN_DAYS, DEFAULT_REDACTION_RULES, DEFAULT_SCAN_PATTERNS, DEFAULT_SOURCE_TRUST, DEFAULT_TAXONOMY, DEFAULT_TIMELINE_CATEGORIES, DEFAULT_UNTRUSTED_ORIGINS, DEFAULT_WINDOW_TOLERANCE_MS, type DedupOptions, type DedupResult, DetectedMeeting, type DeterministicJournalOptions, type DeterministicRecap, type DeterministicRecapOptions, type DeterministicWeek, type DeterministicWeekDay, type DeterministicWeekOptions, DiscoveredExtension, type DocFile, DriftDetectionConfig, type DriftRankInput, type DriftRankOutput, type DriftRecallFrontmatter, type DriveChange, type DriveChangesPage, type DriveFileMetadata, type DuplicatePair, EngramAccessService, type ExportSkillsResult, FallbackLlmClient, type FileChange, type FileLine, FilesystemBackend, type ForkCapsuleOptions, type ForkCapsuleResult, type ForkLineage, type FuseClusterResult, FusedDisagreement, FusedSegment, FusedSpeaker, FusionConversationInput, FusionDayResult, FusionOptions, GOOGLE_DRIVE_CONNECTOR_ID, GOOGLE_DRIVE_CURSOR_KIND, DEFAULT_POLL_INTERVAL_MS as GOOGLE_DRIVE_DEFAULT_POLL_INTERVAL_MS, type GenerateOptions, type GenerateResult, type GitContext, type GitInvoker, type GoogleDriveClient, type GoogleDriveClientFactory, type GoogleDriveConnectorConfig, type GoogleDriveSyncResult, HermesMemoryExtensionPublisher, INJECTION_SCREEN_THRESHOLD, type ImportSkillsResult, type IngestionPlan, type InjectionScreenFinding, type InjectionScreenResult, type InsertVaultRegionResult, JOURNAL_DIR_NAME, type JournalMemoryProvenance, type JournalSeedCard, JudgeCandidate, JudgeVerdict, KNOWN_WEARABLE_SOURCE_IDS, type LanguageInfo, LiveConnector, LiveConnectorRegistry, LiveConnectorRegistryError, type LocalSessionAdapterInput, type LocalSessionAdapterOptions, type LocalSessionParseWarning, type LocalSessionParsedFile, type LocalSessionRole, type LocalSessionSourceAdapter, type LocalSessionSummaryCliOptions, type LocalSessionSummaryReport, type LocalSessionTurn, MEETING_SOURCE_PREFIX, MIN_RECURRENCE_MIN_DAYS, MS_PER_DAY, MeetingAppSpan, MeetingAudioWindow, MeetingDayData, MeetingEpisodeGenResult, type MeetingFactCandidate, MeetingMemoryGenerator, type MeetingMemoryStorageIo, MeetingMemoryWriter, MeetingRecord, MeetingRecordStore, type MeetingSummaryDeps, type MeetingSummaryExtractor, type MeetingSummaryJudge, type MeetingSummaryResult, type MeetingsActivityReader, MeetingsBuildScheduler, type MeetingsBuildSchedulerOptions, MeetingsBuilder, type MeetingsCliDeps, type MeetingsCliIo, MeetingsConfig, MeetingsDaySource, MeetingsDetectionConfig, MeetingsDetectionInput, MeetingsInputError, type MeetingsWearableReader, MemoryCategory, MemoryDriftState, type MemoryEntry, type MemoryExtensionPublisher, type MergeRecapEditsResult, type MergeResult, NOTION_CONNECTOR_ID, NOTION_CURSOR_KIND, NOTION_DEFAULT_POLL_INTERVAL_MS, NoneBackend, type NotionConnectorConfig, type OffTheRecordMarkerInput, OffTheRecordMarkerSettings, type OnboardOptions, type OnboardResult, type OriginClass, PUBLISHERS, type PackReviewContextStructuralInput, type ParseClaimObservationIdResult, ParsedSkillBundle, type PersistDeterministicJournalInput, type PersistDeterministicJournalResult, type PersistWeeklySnapshotInput, type PersistWeeklySnapshotResult, type PipelineResult, PluginConfig, type PreferenceDriftClassification, type PreferenceDriftDependencies, type PreferenceDriftEvidence, type PreferenceDriftFinding, type PreferenceDriftMarker, type PreferenceDriftReport, type PreferenceDriftResolutionOptions, type PreferenceDriftResolutionResult, type PreferenceDriftSkipReason, type PrivacyWindowItem, type PrivacyWindowOptions, type ProjectShape, type ProvenanceEntry, type PublishContext, type PublishResult, type PublishVaultNoteInput, type PublishVaultRegionResult, type PublisherCapabilities, RECAP_SOURCE_KINDS, REDACTION_PLACEHOLDER, RELAY_DEMO_MISSION_ID, RELAY_DEMO_NAMESPACE, RELAY_MISSION_DEFAULT_EVENT_LIMIT, RELAY_MISSION_MAX_EVENTS, RELAY_MISSION_MAX_EVENT_LIMIT, RELAY_MISSION_MAX_FILE_BYTES, RELAY_MISSION_MAX_LINE_BYTES, RELAY_MISSION_SCHEMA_VERSION, REMNIC_CITATION_FORMAT, REMNIC_MCP_TOOL_INVENTORY, REMNIC_RECALL_DECISION_RULES, REMNIC_SEMANTIC_OVERVIEW, type ReadSkillBundle, type ReadVaultJournalInput, type ReadVaultJournalResult, type RecapCandidate, type RecapMarkdownOptions, type RecapSection, type RecapSelection, type RecapSourceKind, type RecapWindowCard, type RecurringPattern, type RedactionConfig, type RedactionReport, type RedactionRuleConfig, type RelayAgentOutputSnapshot, type RelayAgentSnapshot, type RelayConflictSnapshot, type RelayCorrectionSnapshot, type RelayDecisionSnapshot, type RelayEvidenceRef, RelayEvidenceRefSchema, type RelayMissionAppendAccessInput, type RelayMissionAppendAccessOutput, type RelayMissionAppendResult, type RelayMissionEvent, type RelayMissionEventInput, RelayMissionEventInputSchema, RelayMissionEventSchema, type RelayMissionPayload, RelayMissionPayloadSchema, type RelayMissionReadAccessInput, type RelayMissionReadAccessOutput, type RelayMissionReadOptions, RelayMissionReadOptionsSchema, type RelayMissionSnapshot, type RelayMissionStatus, RelayMissionStore, RelayMissionStoreError, type RelayMissionStoreErrorCode, type RelayMissionStoreOptions, type RelayPropagationSnapshot, type RelayRecallSnapshot, type RelayTestSnapshot, ResolverDecision, type ReviewAction, type ReviewCandidate, type ReviewContext, ReviewDeckSnapshot, ReviewDeckSourceRow, type ReviewItem, type ReviewListResult, type ReviewOptions, type ReviewResult, type ScriptHint, SealedMemoryEnvelope, type SeedJournalInput, type SeedJournalResult, SemanticDedupLookup, type SessionSummaryDraft, type SessionSummaryExcerpt, SkillBundle, type Space, type SpaceKind, type SpaceManifest, type SpacePromoteResult, type SpacePullResult, type SpacePushResult, type SpaceShareResult, type SpaceSwitchResult, SpeakerRegistry, type StatementProvenance, StorageManager, type StructuralContextDegradation, type StructuralContextErrorCode, type StructuralContextProvider, type StructuralProviderStatus, type StructuralSpawnFn, type StructuralSymbol, type SubprocessProviderOptions, type SymbolsForDiffErr, type SymbolsForDiffOk, type SymbolsForDiffResult, SyncIncrementalResult, type SyncOptions, type SyncResult, type SyncState, TIMELINE_ANALYSIS_BATCH_OVERLAP, TIMELINE_ANALYSIS_BATCH_SIZE, TIMELINE_ANALYSIS_DEFAULT_TIMEOUT_MS, TIMELINE_ANALYSIS_PROMPT_VERSION, TIMELINE_FORMAT_VERSION, TIMELINE_MAX_DWELL_MS, TIMELINE_MERGE_GAP_MS, TIMELINE_RESERVED_IDLE, TIMELINE_RESERVED_PAUSE, TIMELINE_RESERVED_UNKNOWN, TRANSCRIPT_FORMAT_VERSION, Taxonomy, type TimelineAnalysisComplete, type TimelineAnalysisCompleteInput, TimelineAnalysisConfigError, type TimelineAnalysisInput, type TimelineAnalysisResult, type TimelineAnalysisStatus, type TimelineBatchObservation, type TimelineBuildInput, type TimelineCard, type TimelineCardKind, type TimelineCategory, type TimelineClassification, type TimelineCliDeps, type TimelineCliIo, type TimelineCompactCard, type TimelineCompactRange, type TimelineCorrection, TimelineCorrectionStore, type TimelineDay, type TimelineEvidenceClaim, type TimelineEvidenceObservation, type TimelineEvidenceRange, type TimelineManualEdit, type TimelineObservation, type TimelinePause, type TimelineQueryCard, type TimelineRangeFormat, type TimelineRangeQuery, type TimelineSearchQuery, type TimelineSearchResult, TokenEntry, type TrainingExportAdapter, type TrainingExportOptions, type TrainingExportRecord, type TranscriptSegmentMatch, type TreeNode, VAULT_JOURNAL_PREREQUISITES, VAULT_PUBLISH_OUTCOMES, VAULT_TEMPLATE_TOKENS, type ValidateRegionNameResult, type VaultDryRunInput, type VaultJournalPrereqResult, type VaultJournalPrerequisite, type VaultPublishOutcome, type VaultPublishResult, type VaultPublishStatus, type VaultPublisherTestHooks, type VaultSectionProvenance, type VaultSectionPublish, type VaultTemplateToken, WEARABLES_DIR_NAME, WEEKLY_ACTIVITY_FORMAT_VERSION, WEEKLY_SNAPSHOT_DIR, WEEKLY_SNAPSHOT_FORMAT_VERSION, WEEK_START_DAYS, WearableCleanupSettings, type WearableConnectorFactory, type WearableConnectorFactoryOptions, type WearableConnectorRegistration, WearableConversation, WearableCorrectionRule, type WearableDayBody, WearableDayTranscript, WearableDayTranscriptMeta, type WearableDayTranscriptStore, WearableFusionConfig, WearableSourceConnector, WearableSourceSettings, type WearableSourceSyncState, type WearableSyncStateFile, type WearablesCliIo, WearablesConfig, WearablesInputError, WearablesService, type WeekDayOccurrence, type WeekSnapshotDay, type WeekSnapshotOptions, type WeeklyActivityOptions, type WeeklyActivitySummary, type WeeklyCategoryTotal, type WeeklyConfigInput, type WeeklyDayTotal, type WeeklyDurationTotals, type WeeklyKindTotals, type WeeklyPreviousPeriod, type WeeklyPreviousPeriodUnavailable, activityCursorKey, activityDateInTimezone, activityDayWindow, activityDigestPath, analyzeTimelineCards, appendRelayMissionEvent, applyCorrections, applyManagedRegion, applyOffTheRecord, applyPreferenceDriftRanking, applyTimelineCorrections, applyVaultFrontmatter, assertBeginEndPair, assertValidTimezone, batchObservations, bodyIsEscaped, boundEvidence, branchNamespaceName, buildActivityHealth, buildAnalysisPrompt, buildAnalysisRunMetadata, buildAudioWindows, buildJournalMemoryProvenance, buildPhraseMatcher, buildProcedureRecallSection, buildTimelineAnalysisPrompt, buildTimelineDay, buildWeeklyActivitySummary, builtInConnectorPackageSpecifier, checkVaultJournalPrerequisites, classifyAnalysisFailure, classifyOrigin, classifyTimelineObservation, cleanConversation, clearStructuralContextProvidersForTest, clearTrainingExportAdapters, clearWearableConnectors, clipCardsToRecapWindow, clusterConversations, collapseImmediateRepeats, collectLocalSessionSummaries, compareRelayEvents, compareWeeklyPreviousPeriod, compileCorrectionRule, compileCorrectionRules, compileOffTheRecordMarkers, compileRedactionPatterns, compileRedactionRules, composeActivityDigestBody, composeActivityDigestMeta, composeDayTranscriptBody, composeDayTranscriptMeta, composeMeetingEpisodeContent, computeWeeklyConfigHash, convertMemoriesToRecords, correctionsFilePath, createBackend, createGoogleDriveConnector, createMeetingMemoryGenerator, createMeetingMemoryWriter, createNotionConnector, createRelayMissionFixture, createSpace, createSubprocessStructuralProvider, curate, decodeTranscriptBody, defaultActivityConfig, defaultGoogleDriveClientFactory, defaultWearableCleanupSettings, defaultWearableFusionConfig, defaultWearableSourceSettings, defaultWearablesConfig, deleteSpace, deriveAppSpans, describeCodingScope, describeErrorForOperator, describeStructuralProviderStatus, detectMeetings, detectScriptHints, driftAgeNote, emptyManifest, emptySyncState, ensureBuiltInWearableConnectors, escapeSegmentText, expandVaultTemplateTokens, exportDeterministicRecap, exportDeterministicWeek, exportSkillBundles, fileLines, filterPrivacyWindow, findContradictions, findDuplicates, findRecurringPatterns, forkCapsule, formatVaultWikilink, fuseCluster, fuseDay, fusionInputsFromConversations, generateActivityMemories, generateContextTree, generateMeetingEpisodes, generateMeetingSummaryFacts, generateResolverDocument, getActiveSpace, getAuditLog, getLocalSessionSourceAdapter, getManifestPath, getSpacesDir, getStructuralContextProvider, getTaxonomyDir, getTaxonomyFilePath, getTrainingExportAdapter, getWearableConnector, hashActivityBody, hashTranscriptBody, hostIdForConnector, insertMarkersUnderHeading, isAnalysisFailureKind, isEligibleActivityFact, isJournalDayPath, isLowQualitySegment, isPreferenceDriftStageActive, isReviewPrompt, isUntrustedOrigin, isValidActivityDate, isValidTranscriptDate, joinVaultSegments, journalPath, listLocalSessionSourceAdapters, listReviewItems, listSpaces, listTrainingExportAdapters, listWearableConnectors, loadCorrectionsFile, loadManifest, loadSyncState, loadTaxonomy, manifestDir, manifestPath, matchesPatterns, meetingDayTag, meetingId, meetingSourceLabel, mergeFrontmatterKeys, mergeRecapUserEdits, mergeSpaces, normalizeOriginUrl, observationsForExport, onboard, packReviewContext, packReviewContextStructural, parseActivityConfig, parseActivityDigest, parseActivityPrivacy, parseAtxHeading, parseClaimObservationId, parseDayTranscript, parseFlexibleIsoTimestamp, parseIsoOffsetTimestamp, parseIsoUtcTimestamp, parseMeetingsConfig, parseOriginClass, parseTimelineVaultConfig, parseTouchedFiles, parseTranscriptSegmentLine, parseWearablesConfig, performReview, persistDeterministicJournal, persistImportedSkills, persistWeeklySnapshot, planActivityDeletion, planVaultDryRun, probeStructuralProviderForDoctor, projectNamespaceName, promoteSpace, publishVaultNote, publishVaultRegion, publisherFor, publisherForConnector, pullFromSpace, pushToSpace, queryTimelineRange, queryTimelineSearch, rankReviewCandidates, readForkLineage, readManifest, readPreferenceDriftMarker, readRelayMission, readReviewDeckRow, readReviewDeckSnapshot, readSkillBundlesFromDir, readVaultJournal, reconstructFusionInputs, redactSessionSummaryText, redactText, reduceRelayMission, refreshActivityIndex, registerLocalSessionSourceAdapter, registerPublisher, registerStructuralContextProvider, registerTrainingExportAdapter, registerWearableConnector, relayMissionAppendOperation, relayMissionReadOperation, relayMissionReceiptDigest, renderAuthorityFence, renderDeterministicJournal, renderExtensionsBlock, renderExtensionsFooter, renderRecapMarkdown, renderStructuralProviderStatusLine, renderWeekSnapshot, resolveActivityGates, resolveCategory, resolveCodingNamespaceOverlay, resolveGitContext, resolvePreferenceDrift, resolveVaultNotePath, runBinaryLifecyclePipeline, runLocalSessionSummaryCliCommand, runMeetingsCliCommand, runOkfCliCommand, runPreferenceDriftScan, runTimelineCliCommand, runWearablesCliCommand, saveCorrectionsFile, saveManifest, saveSyncState, saveTaxonomy, scanForBinaries, screenCandidateFact, seedJournal, selectRecapForDay, selfRegisterWearableConnector, serializeActivityDigest, serializeDayTranscript, serializeTimelineDay, setVaultPublisherTestHooks, shareSpace, shouldRetain, sortObservationIds, sortTimelineCategories, stableHash, storageWearableDayReader, stripFillerTokens, stripRemnicOwnedRegions, stripVaultMdSuffix, structuralProviderActive, summarizeVaultPublish, switchSpace, syncActivitySource, syncChanges, syncStateFilePath, timelineCorrectionDatabasePath, timezoneOffsetIso, toStructuralContextDegradation, todayJournalDate, unescapeSegmentText, unescapeSpeakerLabel, updateSourceSyncState, validateActivityBaseUrl, validateGoogleDriveConfig, validateNotionConfig, validateRegionName, validateSlug, validateTaxonomy, validateTimelineCategories, validateVaultNoteTemplate, watchForChanges, weeklySnapshotPath, withRawEntityPageMutation, writeJournalFile, writeManifest, writeMeetingEpisodeMemory };