@remnic/core 9.65.8 → 9.66.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (637) hide show
  1. package/dist/access-admin-ops-surface.d.ts +11 -12
  2. package/dist/access-admin-ops-surface.js +49 -46
  3. package/dist/access-authorization-probe.d.ts +11 -12
  4. package/dist/access-authorization-probe.js +50 -47
  5. package/dist/access-boundary.d.ts +11 -12
  6. package/dist/access-boundary.js +49 -46
  7. package/dist/access-citation-namespace.js +3 -3
  8. package/dist/access-cli.js +111 -106
  9. package/dist/access-cli.js.map +1 -1
  10. package/dist/access-coding-context-resolution.d.ts +1 -2
  11. package/dist/access-coding-context-resolution.js +2 -2
  12. package/dist/access-extraction-force-flush.d.ts +11 -12
  13. package/dist/access-extraction-force-flush.js +49 -46
  14. package/dist/access-health-types.d.ts +1 -2
  15. package/dist/access-http-lcm-compaction.d.ts +11 -12
  16. package/dist/access-http-lifecycle-flush.d.ts +11 -12
  17. package/dist/access-http-offline-stream.d.ts +11 -12
  18. package/dist/access-http-query.d.ts +2 -3
  19. package/dist/access-http-query.js +51 -48
  20. package/dist/access-http.d.ts +12 -13
  21. package/dist/access-http.js +68 -65
  22. package/dist/access-identity-continuity-surface.d.ts +9 -10
  23. package/dist/access-identity-continuity-surface.js +49 -46
  24. package/dist/access-lcm-surface.d.ts +11 -12
  25. package/dist/access-lcm-surface.js +49 -46
  26. package/dist/access-mcp-output-schemas.js +1 -1
  27. package/dist/access-mcp.d.ts +11 -12
  28. package/dist/access-mcp.js +62 -59
  29. package/dist/access-memory-search-fanout.d.ts +2 -3
  30. package/dist/{access-namespace-preflight-CpAOrS-9.d.ts → access-namespace-preflight-CLWUoMyW.d.ts} +1 -1
  31. package/dist/access-namespace-preflight.d.ts +3 -4
  32. package/dist/access-namespace-preflight.js +49 -46
  33. package/dist/access-observe-write-surface.d.ts +11 -12
  34. package/dist/access-observe-write-surface.js +49 -46
  35. package/dist/access-offline-manifest.d.ts +9 -10
  36. package/dist/access-offline-manifest.js +15 -15
  37. package/dist/access-operations-batch.js +54 -51
  38. package/dist/access-operations.d.ts +17 -18
  39. package/dist/access-operations.js +59 -56
  40. package/dist/access-recall-concurrency.d.ts +11 -12
  41. package/dist/access-recall-concurrency.js +49 -46
  42. package/dist/access-recall-response.d.ts +11 -12
  43. package/dist/access-recall-response.js +49 -46
  44. package/dist/access-recall-surface.d.ts +11 -12
  45. package/dist/access-recall-surface.js +49 -46
  46. package/dist/access-schema.d.ts +83 -83
  47. package/dist/access-schema.js +7 -7
  48. package/dist/{access-service-Diu61Cfv.d.ts → access-service-CEUE1Isj.d.ts} +66 -66
  49. package/dist/access-service-helpers.d.ts +11 -12
  50. package/dist/access-service.d.ts +11 -12
  51. package/dist/access-service.js +49 -46
  52. package/dist/access-surface-catalog.d.ts +11 -12
  53. package/dist/access-surface-catalog.js +53 -48
  54. package/dist/access-surface-catalog.js.map +1 -1
  55. package/dist/access-wearables-meetings-surface.d.ts +3 -4
  56. package/dist/action-confidence.d.ts +1 -2
  57. package/dist/active-memory-bridge.d.ts +1 -2
  58. package/dist/active-memory-bridge.js +2 -2
  59. package/dist/active-recall.d.ts +1 -2
  60. package/dist/active-recall.js +11 -11
  61. package/dist/ambient-provenance.d.ts +1 -2
  62. package/dist/artifact-search.d.ts +1 -2
  63. package/dist/{auto-sync-2YPITIWN.js → auto-sync-Q6Q2FVSC.js} +9 -9
  64. package/dist/behavior-learner.d.ts +1 -2
  65. package/dist/behavior-signals.d.ts +1 -2
  66. package/dist/bootstrap.d.ts +9 -10
  67. package/dist/briefing-window.d.ts +2 -3
  68. package/dist/briefing.d.ts +2 -3
  69. package/dist/briefing.js +23 -23
  70. package/dist/buffer-surprise-report.d.ts +1 -2
  71. package/dist/buffer-turn-helpers.d.ts +1 -2
  72. package/dist/buffer.d.ts +2 -3
  73. package/dist/buffer.js +20 -4
  74. package/dist/bulk-import/index.d.ts +3 -4
  75. package/dist/calibration.d.ts +1 -2
  76. package/dist/calibration.js +1 -1
  77. package/dist/capabilities.d.ts +1 -2
  78. package/dist/{capsule-merge-SGIVB3WA.js → capsule-merge-SEHERWWP.js} +4 -4
  79. package/dist/{catalog-9f-vEQLS.d.ts → catalog-D1HgugTA.d.ts} +1 -1
  80. package/dist/causal-behavior.d.ts +1 -2
  81. package/dist/causal-consolidation.d.ts +1 -2
  82. package/dist/causal-consolidation.js +24 -24
  83. package/dist/causal-trajectory-graph.d.ts +1 -2
  84. package/dist/{chunk-LEPOP46W.js → chunk-227UFSEQ.js} +4 -4
  85. package/dist/{chunk-NPFUNWNX.js → chunk-23CVL7HS.js} +2 -2
  86. package/dist/{chunk-PO7NXBG2.js → chunk-2GF27PGH.js} +5 -5
  87. package/dist/{chunk-MY2BC6UE.js → chunk-2LBAFHOQ.js} +11 -11
  88. package/dist/{chunk-AZMLH5UT.js → chunk-33MFRY25.js} +2 -2
  89. package/dist/{chunk-UEBDCMOO.js → chunk-3TSU662L.js} +3 -3
  90. package/dist/{chunk-CAMNRAJF.js → chunk-4FHRZD5T.js} +2 -2
  91. package/dist/{chunk-FP7YTTVO.js → chunk-4OFKZAJG.js} +2 -1
  92. package/dist/chunk-4OFKZAJG.js.map +1 -0
  93. package/dist/{chunk-S5XOSTYM.js → chunk-4STAANV7.js} +3 -3
  94. package/dist/{chunk-LKYIOCWL.js → chunk-56IV4J5W.js} +546 -96
  95. package/dist/chunk-56IV4J5W.js.map +1 -0
  96. package/dist/{chunk-4F4AQFWL.js → chunk-6CEGSTBD.js} +10 -10
  97. package/dist/{chunk-JYSN42VN.js → chunk-6QDXA26G.js} +235 -181
  98. package/dist/chunk-6QDXA26G.js.map +1 -0
  99. package/dist/{chunk-MDD2RINF.js → chunk-6RUHELWR.js} +3 -3
  100. package/dist/{chunk-WNXYT4MK.js → chunk-72OIT7KS.js} +4 -4
  101. package/dist/{chunk-KQAFEZQX.js → chunk-7LCGFUMB.js} +4 -4
  102. package/dist/{chunk-SNOIKAHM.js → chunk-7UTDHQZ5.js} +3 -3
  103. package/dist/{chunk-5HK3CJAR.js → chunk-7XOG75AU.js} +3 -3
  104. package/dist/{chunk-7BDZTALN.js → chunk-AJTG3CP7.js} +12 -2
  105. package/dist/chunk-AJTG3CP7.js.map +1 -0
  106. package/dist/{chunk-2LWQSV6A.js → chunk-AL3UYZ5N.js} +3 -2
  107. package/dist/chunk-AL3UYZ5N.js.map +1 -0
  108. package/dist/{chunk-UPFNQJC7.js → chunk-CN4VKV3S.js} +2 -2
  109. package/dist/{chunk-PMVPCZJZ.js → chunk-CTCGHNWN.js} +6 -6
  110. package/dist/{chunk-EGBDFJ36.js → chunk-DD5JFCWM.js} +2 -2
  111. package/dist/{chunk-XBGHAAKR.js → chunk-DDX6KIXF.js} +2 -2
  112. package/dist/{chunk-JIYDRBVZ.js → chunk-DJORULH3.js} +2 -2
  113. package/dist/{chunk-UENKPWCS.js → chunk-DMEHOEC7.js} +6 -6
  114. package/dist/{chunk-7KQB4EBS.js → chunk-DUAJKRR2.js} +2 -2
  115. package/dist/{chunk-XDL5CYZN.js → chunk-EEOUMG3J.js} +2 -1
  116. package/dist/{chunk-XDL5CYZN.js.map → chunk-EEOUMG3J.js.map} +1 -1
  117. package/dist/{chunk-SEEJOGQX.js → chunk-EFQCDJZ2.js} +4 -4
  118. package/dist/{chunk-Q57GOHLF.js → chunk-EGALNSZ4.js} +3 -3
  119. package/dist/{chunk-KCT36JAW.js → chunk-ESNFSSO4.js} +2 -2
  120. package/dist/{chunk-XQ3HXAQH.js → chunk-ET2CNMLD.js} +4 -4
  121. package/dist/{chunk-PU56CXZA.js → chunk-EZSCW4EM.js} +2 -2
  122. package/dist/{chunk-HMZKGHMD.js → chunk-FESUGFIL.js} +3 -3
  123. package/dist/{chunk-3A2NJP2U.js → chunk-FKKGCGYL.js} +3 -3
  124. package/dist/{chunk-BWGCOLEL.js → chunk-FTTJRVB7.js} +2 -2
  125. package/dist/{chunk-ODU2CNNX.js → chunk-FYWLSFFS.js} +2 -2
  126. package/dist/{chunk-W2BAGGEW.js → chunk-GEJKYA7D.js} +33 -24
  127. package/dist/{chunk-W2BAGGEW.js.map → chunk-GEJKYA7D.js.map} +1 -1
  128. package/dist/chunk-GSKINLAK.js +267 -0
  129. package/dist/chunk-GSKINLAK.js.map +1 -0
  130. package/dist/{chunk-3PKAS6VL.js → chunk-GX6FTSYH.js} +2 -2
  131. package/dist/{chunk-76DIF5KT.js → chunk-H7VDIF2V.js} +2 -2
  132. package/dist/{chunk-F7XUD3PL.js → chunk-HJXA6ZM7.js} +2 -2
  133. package/dist/{chunk-4QEYREAV.js → chunk-HNPE66LB.js} +2 -2
  134. package/dist/{chunk-P36Z4JRA.js → chunk-I5VB44ZK.js} +2 -2
  135. package/dist/{chunk-EUYWQ7TS.js → chunk-IEZ6CGTW.js} +2 -2
  136. package/dist/{chunk-OXRRJXPR.js → chunk-IHGMRDEE.js} +275 -1678
  137. package/dist/chunk-IHGMRDEE.js.map +1 -0
  138. package/dist/{chunk-5DHKCO52.js → chunk-IVIAHQBR.js} +2 -2
  139. package/dist/{chunk-TFR3HG4K.js → chunk-J3OND5QT.js} +4 -4
  140. package/dist/{chunk-UW5NPZJ2.js → chunk-JALOAKSZ.js} +59 -7
  141. package/dist/chunk-JALOAKSZ.js.map +1 -0
  142. package/dist/{chunk-5ACCD4L7.js → chunk-JRRQ747T.js} +7 -7
  143. package/dist/{chunk-V4IDF3EZ.js → chunk-JTWZKNUH.js} +5 -5
  144. package/dist/chunk-K66OY4EI.js +202 -0
  145. package/dist/chunk-K66OY4EI.js.map +1 -0
  146. package/dist/{chunk-XAB6STPO.js → chunk-KODXCHXJ.js} +17 -3
  147. package/dist/chunk-KODXCHXJ.js.map +1 -0
  148. package/dist/{chunk-KZIF6XHX.js → chunk-KXIXO76C.js} +28 -15
  149. package/dist/chunk-KXIXO76C.js.map +1 -0
  150. package/dist/{chunk-5RWZH6PH.js → chunk-L4X4PJYK.js} +2 -2
  151. package/dist/{chunk-UTQUEHC7.js → chunk-LUDBXTBJ.js} +8 -8
  152. package/dist/{chunk-XNWXSGHS.js → chunk-MAH64N55.js} +28 -10
  153. package/dist/chunk-MAH64N55.js.map +1 -0
  154. package/dist/{chunk-LDKPDODJ.js → chunk-ME35HVDJ.js} +2 -2
  155. package/dist/{chunk-DPCXDG7G.js → chunk-MJRGVXPQ.js} +2 -2
  156. package/dist/{chunk-773TRRGT.js → chunk-MJUCDM3C.js} +2 -2
  157. package/dist/{chunk-T6ILXUAH.js → chunk-MN5NOOI7.js} +2 -2
  158. package/dist/{chunk-AHPIFKNG.js → chunk-N4F7ZSSG.js} +2 -2
  159. package/dist/{chunk-JOZUBF4A.js → chunk-NACLNNFQ.js} +2 -2
  160. package/dist/{chunk-LC2BDILZ.js → chunk-NBP4EX5N.js} +2 -2
  161. package/dist/{chunk-ZVPVTPGI.js → chunk-NNZFPYYX.js} +4 -4
  162. package/dist/{chunk-DA7ITC5Z.js → chunk-O57GM3FR.js} +2 -2
  163. package/dist/{chunk-7VZFRUQU.js → chunk-O7ERGZDA.js} +5 -5
  164. package/dist/{chunk-3SZD4CYO.js → chunk-OAJMQKQR.js} +3 -3
  165. package/dist/{chunk-HSZMX3ZJ.js → chunk-ODW5GDFE.js} +2 -2
  166. package/dist/{chunk-7WOWGRAU.js → chunk-PEBH5DCK.js} +10 -7
  167. package/dist/{chunk-7WOWGRAU.js.map → chunk-PEBH5DCK.js.map} +1 -1
  168. package/dist/{chunk-J2WC5LF4.js → chunk-QBC33MPY.js} +2 -1
  169. package/dist/{chunk-T7XP6IZE.js → chunk-QCRJMU5V.js} +2 -2
  170. package/dist/chunk-QJCWK2A7.js +1466 -0
  171. package/dist/chunk-QJCWK2A7.js.map +1 -0
  172. package/dist/{chunk-YEUXERJ6.js → chunk-RDGKVH6T.js} +7 -3
  173. package/dist/{chunk-YEUXERJ6.js.map → chunk-RDGKVH6T.js.map} +1 -1
  174. package/dist/{chunk-OA2O2GJ4.js → chunk-RZ3IZIJG.js} +3 -3
  175. package/dist/{chunk-UL4MKZHI.js → chunk-SN4JXNLL.js} +2 -2
  176. package/dist/chunk-TB2MJRI6.js +866 -0
  177. package/dist/chunk-TB2MJRI6.js.map +1 -0
  178. package/dist/{chunk-7PHI6GUI.js → chunk-TEZ2HTC7.js} +42 -2
  179. package/dist/chunk-TEZ2HTC7.js.map +1 -0
  180. package/dist/{chunk-CPA5NBHN.js → chunk-TNGH4ZYI.js} +2 -2
  181. package/dist/{chunk-F3NVYTTA.js → chunk-TNXNECAN.js} +6 -6
  182. package/dist/{chunk-BEC4YBNA.js → chunk-TVW4C7PV.js} +2 -2
  183. package/dist/{chunk-UFKPQBXH.js → chunk-U62OK7BB.js} +2 -2
  184. package/dist/{chunk-AX7UXCHJ.js → chunk-UYA36DQ7.js} +2 -1
  185. package/dist/chunk-UYA36DQ7.js.map +1 -0
  186. package/dist/{chunk-DEACDKE3.js → chunk-VCKWULAK.js} +112 -87
  187. package/dist/chunk-VCKWULAK.js.map +1 -0
  188. package/dist/chunk-VOSWUO3K.js +100 -0
  189. package/dist/chunk-VOSWUO3K.js.map +1 -0
  190. package/dist/{chunk-TUHBYJXL.js → chunk-VQ4AMTGZ.js} +1 -1
  191. package/dist/{chunk-3BCULS4U.js → chunk-VQNRICAQ.js} +145 -507
  192. package/dist/chunk-VQNRICAQ.js.map +1 -0
  193. package/dist/{chunk-H2YSH3DG.js → chunk-WKAXBXVA.js} +2 -2
  194. package/dist/{chunk-HRHO3ZNG.js → chunk-WKJFIMVN.js} +2 -2
  195. package/dist/{chunk-SXIMQLGV.js → chunk-WVGXCBOC.js} +2 -2
  196. package/dist/{chunk-CRML27CO.js → chunk-X5YYSAZX.js} +4 -4
  197. package/dist/{chunk-FZEEWOI2.js → chunk-XJJYSX6F.js} +2 -2
  198. package/dist/{chunk-U7EW2W4W.js → chunk-XKNHFDTT.js} +26 -6
  199. package/dist/chunk-XKNHFDTT.js.map +1 -0
  200. package/dist/{chunk-UG6VXIOK.js → chunk-XSTNGNJP.js} +2 -2
  201. package/dist/{chunk-YDPAE2RD.js → chunk-YFLLGRXO.js} +2 -2
  202. package/dist/{chunk-LPNCR4QK.js → chunk-YXFCALVT.js} +12 -12
  203. package/dist/{chunk-Q4WONDMJ.js → chunk-YYGZJPOK.js} +2 -2
  204. package/dist/{chunk-GTO56JY5.js → chunk-ZJPM7GZ3.js} +2 -2
  205. package/dist/{chunk-LOXHYCVS.js → chunk-ZW4VXELZ.js} +2 -2
  206. package/dist/{cli-O3F-ht3i.d.ts → cli-BEkm2MEf.d.ts} +5 -5
  207. package/dist/cli.d.ts +13 -14
  208. package/dist/cli.js +90 -85
  209. package/dist/coding/export-okf-codegraph.d.ts +56 -0
  210. package/dist/coding/export-okf-codegraph.js +526 -0
  211. package/dist/coding/export-okf-codegraph.js.map +1 -0
  212. package/dist/coding/pre-action-gate.d.ts +1 -2
  213. package/dist/compounding/engine.d.ts +2 -3
  214. package/dist/compounding/engine.js +24 -24
  215. package/dist/compounding/preference-consolidator.d.ts +1 -2
  216. package/dist/compression-optimizer.d.ts +1 -2
  217. package/dist/config.d.ts +1 -2
  218. package/dist/config.js +11 -11
  219. package/dist/connectors/codex-materialize-runner.d.ts +1 -2
  220. package/dist/connectors/codex-materialize-runner.js +23 -23
  221. package/dist/connectors/codex-materialize.d.ts +1 -2
  222. package/dist/connectors/index.d.ts +1 -2
  223. package/dist/connectors/index.js +23 -23
  224. package/dist/consolidation-provenance-check.d.ts +2 -3
  225. package/dist/consolidation-provenance-check.js +4 -4
  226. package/dist/consolidation-undo.d.ts +2 -3
  227. package/dist/consolidation-undo.js +3 -3
  228. package/dist/contradiction/index.d.ts +3 -4
  229. package/dist/contradiction/index.js +9 -9
  230. package/dist/{contradiction-scan-AKUWPX5N.js → contradiction-scan-NOYMFG66.js} +3 -3
  231. package/dist/converge-config.d.ts +1 -2
  232. package/dist/convergence-refresh.d.ts +2 -3
  233. package/dist/convergence-refresh.js +25 -25
  234. package/dist/conversation-index/backend.d.ts +1 -2
  235. package/dist/conversation-index/backend.js +2 -2
  236. package/dist/conversation-index/chunker.d.ts +1 -2
  237. package/dist/conversation-index/faiss-adapter.d.ts +1 -2
  238. package/dist/conversation-index/indexer.d.ts +1 -2
  239. package/dist/conversation-index/search.d.ts +1 -2
  240. package/dist/corpus-watermark.d.ts +1 -2
  241. package/dist/corpus-watermark.js +25 -25
  242. package/dist/cross-lingual-recall.d.ts +1 -2
  243. package/dist/day-summary.d.ts +1 -2
  244. package/dist/delinearize.d.ts +1 -2
  245. package/dist/dependency-propagation-config.d.ts +1 -2
  246. package/dist/{dependency-propagation-delivery-CL6RWXTA.d.ts → dependency-propagation-delivery-BCpeo14F.d.ts} +1 -1
  247. package/dist/direct-answer-wiring.d.ts +1 -2
  248. package/dist/direct-answer.d.ts +1 -2
  249. package/dist/embedding-fallback.d.ts +1 -2
  250. package/dist/enrichment/index.d.ts +1 -2
  251. package/dist/entity-origin-fields.d.ts +1 -2
  252. package/dist/entity-retrieval.d.ts +2 -3
  253. package/dist/entity-retrieval.js +23 -23
  254. package/dist/entity-schema.d.ts +1 -2
  255. package/dist/episodic-context.d.ts +1 -2
  256. package/dist/eval-trajectory-contracts.d.ts +1 -2
  257. package/dist/eval-trajectory-store.d.ts +1 -2
  258. package/dist/eval-trajectory.d.ts +1 -2
  259. package/dist/explicit-capture.d.ts +9 -10
  260. package/dist/explicit-capture.js +11 -11
  261. package/dist/external-wiki-access.d.ts +11 -12
  262. package/dist/external-wiki-access.js +50 -47
  263. package/dist/external-wiki-collection-registration.d.ts +1 -2
  264. package/dist/external-wiki-collection.d.ts +1 -2
  265. package/dist/external-wiki-mcp-tools.d.ts +11 -12
  266. package/dist/extraction-error-classification.d.ts +1 -2
  267. package/dist/extraction-faithfulness.d.ts +1 -2
  268. package/dist/extraction-faithfulness.js +2 -2
  269. package/dist/extraction-judge-telemetry.d.ts +1 -2
  270. package/dist/extraction-judge-training.d.ts +1 -2
  271. package/dist/extraction-judge.d.ts +1 -2
  272. package/dist/extraction-judge.js +2 -2
  273. package/dist/extraction-liveness.d.ts +1 -2
  274. package/dist/extraction-normalization.d.ts +1 -2
  275. package/dist/extraction-prompt.d.ts +1 -2
  276. package/dist/extraction-source-grounding-rules.d.ts +1 -2
  277. package/dist/extraction-source-grounding.d.ts +1 -2
  278. package/dist/extraction.d.ts +1 -2
  279. package/dist/extraction.js +32 -29
  280. package/dist/fallback-llm.d.ts +7 -2
  281. package/dist/fallback-llm.js +1 -1
  282. package/dist/{first-start-migration-4NETATFF.js → first-start-migration-KHIMCBIC.js} +3 -3
  283. package/dist/graph-dashboard-diff.d.ts +1 -2
  284. package/dist/graph-dashboard-key.d.ts +1 -2
  285. package/dist/graph-dashboard-parser.d.ts +1 -2
  286. package/dist/graph-edge-reinforcement.d.ts +1 -2
  287. package/dist/graph-path-reconstruction.d.ts +1 -2
  288. package/dist/graph-path-scoring.d.ts +1 -2
  289. package/dist/graph-snapshot.d.ts +1 -2
  290. package/dist/graph.d.ts +1 -2
  291. package/dist/harmonic-retrieval.js +1 -1
  292. package/dist/importance.d.ts +1 -2
  293. package/dist/importers/index.d.ts +1 -2
  294. package/dist/in-flight-reads.d.ts +1 -2
  295. package/dist/{index-C7Xep6S9.d.ts → index-D_pyMUaP.d.ts} +2 -2
  296. package/dist/index.d.ts +929 -700
  297. package/dist/index.js +167 -132
  298. package/dist/intent.d.ts +1 -2
  299. package/dist/lcm/engine.d.ts +1 -2
  300. package/dist/lcm/index.d.ts +1 -2
  301. package/dist/lcm/tools.d.ts +1 -2
  302. package/dist/lifecycle.d.ts +1 -2
  303. package/dist/live-connectors-runner.d.ts +1 -2
  304. package/dist/local-llm.d.ts +1 -2
  305. package/dist/local-model-endpoint.d.ts +1 -2
  306. package/dist/location/index.d.ts +315 -6
  307. package/dist/location/index.js +151 -19
  308. package/dist/maintenance/memory-governance.d.ts +1 -2
  309. package/dist/maintenance/memory-governance.js +23 -23
  310. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -3
  311. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +23 -23
  312. package/dist/maintenance/rebuild-memory-projection.d.ts +2 -3
  313. package/dist/maintenance/rebuild-memory-projection.js +24 -24
  314. package/dist/{maintenance-CJ-xqFp0.d.ts → maintenance-DDUX9d6D.d.ts} +3 -3
  315. package/dist/mcp-memory-inspector-app.d.ts +11 -12
  316. package/dist/mcp-read-only-tools.js +1 -1
  317. package/dist/memory-action-policy.d.ts +1 -2
  318. package/dist/memory-cache.d.ts +1 -2
  319. package/dist/memory-controller.d.ts +1 -2
  320. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -2
  321. package/dist/memory-projection-mutations.js +3 -3
  322. package/dist/memory-projection-store.d.ts +1 -2
  323. package/dist/memory-projection-store.js +1 -1
  324. package/dist/memory-provenance.d.ts +1 -2
  325. package/dist/memory-snapshot.d.ts +1 -2
  326. package/dist/memory-subject-cli.d.ts +11 -12
  327. package/dist/memory-subject.d.ts +11 -12
  328. package/dist/memory-subject.js +4 -4
  329. package/dist/memory-worth-outcomes.d.ts +2 -3
  330. package/dist/models-json.d.ts +1 -2
  331. package/dist/namespaces/migrate.d.ts +3 -4
  332. package/dist/namespaces/migrate.js +24 -24
  333. package/dist/namespaces/principal.d.ts +1 -2
  334. package/dist/namespaces/search.d.ts +1 -2
  335. package/dist/namespaces/search.js +5 -5
  336. package/dist/namespaces/storage.d.ts +3 -4
  337. package/dist/namespaces/storage.js +23 -23
  338. package/dist/native-knowledge.d.ts +1 -2
  339. package/dist/offline-sync-file-io.js +3 -3
  340. package/dist/offline-sync-impression-drain.d.ts +1 -2
  341. package/dist/offline-sync-impression-drain.js +9 -9
  342. package/dist/offline-sync.js +4 -4
  343. package/dist/operator-doctor-corpus.d.ts +1 -2
  344. package/dist/operator-doctor-corpus.js +26 -26
  345. package/dist/operator-doctor-replica.d.ts +1 -2
  346. package/dist/operator-toolkit.d.ts +3 -4
  347. package/dist/operator-toolkit.js +42 -42
  348. package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -3
  349. package/dist/orchestration/maintenance.d.ts +4 -5
  350. package/dist/orchestration/maintenance.js +37 -36
  351. package/dist/{orchestrator-BsntWxLy.d.ts → orchestrator-3F4jihCo.d.ts} +8 -8
  352. package/dist/orchestrator.d.ts +9 -10
  353. package/dist/orchestrator.js +111 -106
  354. package/dist/page-versioning.js +3 -3
  355. package/dist/patterns-cli.d.ts +1 -2
  356. package/dist/{pipeline-CVoysPm2.d.ts → pipeline-CB1dj6Uh.d.ts} +1 -1
  357. package/dist/policy-runtime.d.ts +1 -2
  358. package/dist/proactive-contention.d.ts +1 -2
  359. package/dist/provenance.d.ts +1 -2
  360. package/dist/{public-http-CuOxlTC2.d.ts → public-http-34-JIAGQ.d.ts} +1 -1
  361. package/dist/{purge-GB7PZHT2.js → purge-OP6BEDFY.js} +2 -2
  362. package/dist/{qmd-DWMAGA5l.d.ts → qmd-edLLZXc5.d.ts} +1 -1
  363. package/dist/qmd-preflight.d.ts +2 -3
  364. package/dist/qmd-recall-cache.d.ts +1 -2
  365. package/dist/qmd.d.ts +2 -3
  366. package/dist/recall-concurrency-config.d.ts +1 -2
  367. package/dist/recall-disclosure-escalation.d.ts +1 -2
  368. package/dist/recall-explain-renderer.d.ts +1 -2
  369. package/dist/recall-memory-map.d.ts +1 -2
  370. package/dist/recall-planner-llm.d.ts +1 -2
  371. package/dist/recall-planner-llm.js +1 -1
  372. package/dist/recall-state.d.ts +1 -2
  373. package/dist/recall-tag-filter.d.ts +1 -2
  374. package/dist/recall-timings.d.ts +1 -2
  375. package/dist/recall-xray-cli.d.ts +1 -2
  376. package/dist/recall-xray-renderer.d.ts +1 -2
  377. package/dist/recall-xray.d.ts +1 -2
  378. package/dist/reconcile/cursor.d.ts +1 -2
  379. package/dist/reconcile/manifest.d.ts +1 -2
  380. package/dist/reconcile/manifest.js +4 -4
  381. package/dist/reconcile/plan.d.ts +1 -2
  382. package/dist/replay/normalizers/chatgpt.d.ts +1 -2
  383. package/dist/replay/normalizers/claude.d.ts +1 -2
  384. package/dist/replay/normalizers/openclaw.d.ts +1 -2
  385. package/dist/replay/normalizers/shared.d.ts +1 -2
  386. package/dist/replay/runner.d.ts +1 -2
  387. package/dist/replay/types.d.ts +1 -2
  388. package/dist/replica-divergence.d.ts +1 -2
  389. package/dist/replica-peers-config.d.ts +1 -2
  390. package/dist/{resolution-XWBPKYFB.js → resolution-4DLI3IOR.js} +10 -10
  391. package/dist/resolve-auth-token.d.ts +1 -2
  392. package/dist/resume-bundles.js +12 -12
  393. package/dist/retrieval-agents.d.ts +2 -3
  394. package/dist/retrieval-tiers.d.ts +1 -2
  395. package/dist/routing/engine.d.ts +1 -2
  396. package/dist/routing/store.d.ts +1 -2
  397. package/dist/salvage-envelope.d.ts +1 -2
  398. package/dist/salvage-envelope.js +6 -6
  399. package/dist/schemas.d.ts +639 -174
  400. package/dist/schemas.js +3 -1
  401. package/dist/{scope-profiles-CPWkW_dI.d.ts → scope-profiles-BF2lu81V.d.ts} +1 -1
  402. package/dist/search/document-scanner.js +1 -1
  403. package/dist/search/embed-helper.d.ts +1 -2
  404. package/dist/search/factory.d.ts +1 -2
  405. package/dist/search/factory.js +4 -4
  406. package/dist/search/index.d.ts +1 -2
  407. package/dist/search/index.js +4 -4
  408. package/dist/search/lancedb-backend.d.ts +1 -2
  409. package/dist/search/lancedb-backend.js +1 -1
  410. package/dist/search/meilisearch-backend.d.ts +1 -2
  411. package/dist/search/meilisearch-backend.js +1 -1
  412. package/dist/search/noop-backend.d.ts +1 -2
  413. package/dist/search/orama-backend.d.ts +1 -2
  414. package/dist/search/orama-backend.js +1 -1
  415. package/dist/search/port.d.ts +1 -2
  416. package/dist/search/remote-backend.d.ts +1 -2
  417. package/dist/secure-store/index.js +3 -3
  418. package/dist/{semantic-consolidation-CNFVBXFc.d.ts → semantic-consolidation-5OuWXBRt.d.ts} +1 -1
  419. package/dist/semantic-consolidation.d.ts +2 -3
  420. package/dist/semantic-consolidation.js +24 -24
  421. package/dist/semantic-rule-promotion.js +23 -23
  422. package/dist/semantic-rule-verifier.d.ts +1 -2
  423. package/dist/semantic-rule-verifier.js +23 -23
  424. package/dist/{service-Bb-JIdQ0.d.ts → service-CrqEhLXD.d.ts} +2 -2
  425. package/dist/session-observer-bands.d.ts +1 -2
  426. package/dist/session-observer-state.d.ts +1 -2
  427. package/dist/shared-context/manager.d.ts +7 -8
  428. package/dist/signal.d.ts +1 -2
  429. package/dist/source-agent-qualifier.d.ts +1 -2
  430. package/dist/source-agent-qualifier.js +30 -27
  431. package/dist/standup/build.d.ts +16 -0
  432. package/dist/standup/build.js +17 -0
  433. package/dist/standup/build.js.map +1 -0
  434. package/dist/{storage-CukrlNKk.d.ts → storage-BQn-xnxm.d.ts} +1 -1
  435. package/dist/storage.d.ts +2 -3
  436. package/dist/storage.js +22 -22
  437. package/dist/subject-config.d.ts +1 -2
  438. package/dist/subject-config.js +5 -5
  439. package/dist/summarizer.d.ts +1 -2
  440. package/dist/summarizer.js +2 -2
  441. package/dist/summary-snapshot.d.ts +1 -2
  442. package/dist/support-passport/index.d.ts +16 -17
  443. package/dist/support-passport/index.js +52 -49
  444. package/dist/temporal-supersession.d.ts +2 -3
  445. package/dist/temporal-timeline-recall.d.ts +1 -2
  446. package/dist/temporal-validity.d.ts +1 -2
  447. package/dist/threading.d.ts +1 -2
  448. package/dist/tier-migration.d.ts +2 -3
  449. package/dist/tier-routing.d.ts +1 -2
  450. package/dist/tier-routing.js +2 -2
  451. package/dist/{tier-stats-4B5IJ3NE.js → tier-stats-2TOW3QNL.js} +3 -3
  452. package/dist/topics.d.ts +1 -2
  453. package/dist/transcript.d.ts +1 -2
  454. package/dist/transfer/capsule-export.js +2 -2
  455. package/dist/transfer/capsule-import.js +5 -5
  456. package/dist/transfer/export-okf.d.ts +39 -0
  457. package/dist/transfer/export-okf.js +112 -0
  458. package/dist/transfer/export-okf.js.map +1 -0
  459. package/dist/transfer/types.d.ts +78 -78
  460. package/dist/trust-score-stage.d.ts +1 -2
  461. package/dist/trust-score.d.ts +1 -2
  462. package/dist/{types-djxQlxJ7.d.ts → types-BRpcNjHZ.d.ts} +117 -2
  463. package/dist/types.d.ts +1 -2
  464. package/dist/utility-runtime.d.ts +1 -2
  465. package/dist/verified-recall.js +23 -23
  466. package/dist/who-knows-cli.d.ts +11 -12
  467. package/dist/who-knows-cli.js +24 -24
  468. package/dist/who-knows.d.ts +11 -12
  469. package/dist/who-knows.js +23 -23
  470. package/dist/write-envelope.d.ts +1 -2
  471. package/dist/write-envelope.js +5 -5
  472. package/package.json +34 -3
  473. package/src/access-admin-ops-surface.ts +6 -1
  474. package/src/access-boundary.ts +1 -0
  475. package/src/access-http.ts +3 -1
  476. package/src/access-mcp-output-schemas.ts +1 -0
  477. package/src/access-mcp.ts +3 -3
  478. package/src/access-operations.ts +1 -0
  479. package/src/access-service-offline-file-content.test.ts +63 -0
  480. package/src/access-surface-catalog.ts +2 -0
  481. package/src/activity/config.test.ts +1 -0
  482. package/src/activity/config.ts +21 -1
  483. package/src/activity/index.ts +1 -0
  484. package/src/activity/timeline/build.ts +279 -0
  485. package/src/activity/timeline/categories.ts +111 -0
  486. package/src/activity/timeline/classify.ts +110 -0
  487. package/src/activity/timeline/corrections.ts +145 -0
  488. package/src/activity/timeline/index.ts +6 -0
  489. package/src/activity/timeline/timeline.test.ts +277 -0
  490. package/src/activity/timeline/types.ts +106 -0
  491. package/src/activity/types.ts +6 -0
  492. package/src/cli/okf-commands.ts +45 -0
  493. package/src/cli.ts +2 -2
  494. package/src/coding/export-okf-codegraph.test.ts +381 -0
  495. package/src/coding/export-okf-codegraph.ts +565 -0
  496. package/src/config.test.ts +1 -0
  497. package/src/extraction-prompt-safety.test.ts +14 -2
  498. package/src/extraction.ts +21 -1
  499. package/src/fallback-llm.test.ts +134 -0
  500. package/src/fallback-llm.ts +77 -5
  501. package/src/location/access-operations.ts +17 -8
  502. package/src/location/backfill.ts +137 -0
  503. package/src/location/config.test.ts +3 -0
  504. package/src/location/config.ts +46 -2
  505. package/src/location/http-glue.ts +1 -1
  506. package/src/location/index.ts +3 -0
  507. package/src/location/intervals.ts +1 -0
  508. package/src/location/matching.test.ts +65 -0
  509. package/src/location/matching.ts +354 -0
  510. package/src/location/mcp-tools.ts +2 -1
  511. package/src/location/surfaces.test.ts +15 -2
  512. package/src/location/surfaces.ts +95 -18
  513. package/src/location/tagging.test.ts +119 -0
  514. package/src/location/tagging.ts +277 -0
  515. package/src/location/types.ts +23 -1
  516. package/src/mcp-read-only-tools.ts +1 -0
  517. package/src/memory-projection-store.ts +3 -1
  518. package/src/okf/cli.ts +18 -5
  519. package/src/okf/config.ts +5 -0
  520. package/src/okf/index-files.test.ts +60 -0
  521. package/src/okf/index-files.ts +114 -0
  522. package/src/okf/render.ts +133 -0
  523. package/src/okf/type-mapping.test.ts +3 -0
  524. package/src/okf/type-mapping.ts +2 -0
  525. package/src/orchestration/extraction-run.ts +2 -1
  526. package/src/orchestration/generic-recall-paths.ts +4 -3
  527. package/src/schemas.ts +17 -1
  528. package/src/standup/access-operations.ts +14 -0
  529. package/src/standup/build.test.ts +34 -0
  530. package/src/standup/build.ts +115 -0
  531. package/src/standup/http-glue.ts +15 -0
  532. package/src/standup/mcp-tools.ts +16 -0
  533. package/src/support-passport/card-projection.ts +1 -0
  534. package/src/support-passport/card-service-commit-forwarding.test.ts +1 -0
  535. package/src/support-passport/card-service.test.ts +75 -1
  536. package/src/support-passport/card-service.ts +6 -3
  537. package/src/support-passport/card-state.ts +5 -1
  538. package/src/support-passport/offline-sync-guard.ts +14 -1
  539. package/src/transfer/export-okf.test.ts +164 -0
  540. package/src/transfer/export-okf.ts +286 -0
  541. package/dist/chunk-2LWQSV6A.js.map +0 -1
  542. package/dist/chunk-3BCULS4U.js.map +0 -1
  543. package/dist/chunk-7BDZTALN.js.map +0 -1
  544. package/dist/chunk-7PHI6GUI.js.map +0 -1
  545. package/dist/chunk-AX7UXCHJ.js.map +0 -1
  546. package/dist/chunk-DEACDKE3.js.map +0 -1
  547. package/dist/chunk-FP7YTTVO.js.map +0 -1
  548. package/dist/chunk-JYSN42VN.js.map +0 -1
  549. package/dist/chunk-KZIF6XHX.js.map +0 -1
  550. package/dist/chunk-LKYIOCWL.js.map +0 -1
  551. package/dist/chunk-OXRRJXPR.js.map +0 -1
  552. package/dist/chunk-U7EW2W4W.js.map +0 -1
  553. package/dist/chunk-UW5NPZJ2.js.map +0 -1
  554. package/dist/chunk-XAB6STPO.js.map +0 -1
  555. package/dist/chunk-XNWXSGHS.js.map +0 -1
  556. package/dist/types-CM86alG1.d.ts +0 -89
  557. /package/dist/{auto-sync-2YPITIWN.js.map → auto-sync-Q6Q2FVSC.js.map} +0 -0
  558. /package/dist/{capsule-merge-SGIVB3WA.js.map → capsule-merge-SEHERWWP.js.map} +0 -0
  559. /package/dist/{chunk-LEPOP46W.js.map → chunk-227UFSEQ.js.map} +0 -0
  560. /package/dist/{chunk-NPFUNWNX.js.map → chunk-23CVL7HS.js.map} +0 -0
  561. /package/dist/{chunk-PO7NXBG2.js.map → chunk-2GF27PGH.js.map} +0 -0
  562. /package/dist/{chunk-MY2BC6UE.js.map → chunk-2LBAFHOQ.js.map} +0 -0
  563. /package/dist/{chunk-AZMLH5UT.js.map → chunk-33MFRY25.js.map} +0 -0
  564. /package/dist/{chunk-UEBDCMOO.js.map → chunk-3TSU662L.js.map} +0 -0
  565. /package/dist/{chunk-CAMNRAJF.js.map → chunk-4FHRZD5T.js.map} +0 -0
  566. /package/dist/{chunk-S5XOSTYM.js.map → chunk-4STAANV7.js.map} +0 -0
  567. /package/dist/{chunk-4F4AQFWL.js.map → chunk-6CEGSTBD.js.map} +0 -0
  568. /package/dist/{chunk-MDD2RINF.js.map → chunk-6RUHELWR.js.map} +0 -0
  569. /package/dist/{chunk-WNXYT4MK.js.map → chunk-72OIT7KS.js.map} +0 -0
  570. /package/dist/{chunk-KQAFEZQX.js.map → chunk-7LCGFUMB.js.map} +0 -0
  571. /package/dist/{chunk-SNOIKAHM.js.map → chunk-7UTDHQZ5.js.map} +0 -0
  572. /package/dist/{chunk-5HK3CJAR.js.map → chunk-7XOG75AU.js.map} +0 -0
  573. /package/dist/{chunk-UPFNQJC7.js.map → chunk-CN4VKV3S.js.map} +0 -0
  574. /package/dist/{chunk-PMVPCZJZ.js.map → chunk-CTCGHNWN.js.map} +0 -0
  575. /package/dist/{chunk-EGBDFJ36.js.map → chunk-DD5JFCWM.js.map} +0 -0
  576. /package/dist/{chunk-XBGHAAKR.js.map → chunk-DDX6KIXF.js.map} +0 -0
  577. /package/dist/{chunk-JIYDRBVZ.js.map → chunk-DJORULH3.js.map} +0 -0
  578. /package/dist/{chunk-UENKPWCS.js.map → chunk-DMEHOEC7.js.map} +0 -0
  579. /package/dist/{chunk-7KQB4EBS.js.map → chunk-DUAJKRR2.js.map} +0 -0
  580. /package/dist/{chunk-SEEJOGQX.js.map → chunk-EFQCDJZ2.js.map} +0 -0
  581. /package/dist/{chunk-Q57GOHLF.js.map → chunk-EGALNSZ4.js.map} +0 -0
  582. /package/dist/{chunk-KCT36JAW.js.map → chunk-ESNFSSO4.js.map} +0 -0
  583. /package/dist/{chunk-XQ3HXAQH.js.map → chunk-ET2CNMLD.js.map} +0 -0
  584. /package/dist/{chunk-PU56CXZA.js.map → chunk-EZSCW4EM.js.map} +0 -0
  585. /package/dist/{chunk-HMZKGHMD.js.map → chunk-FESUGFIL.js.map} +0 -0
  586. /package/dist/{chunk-3A2NJP2U.js.map → chunk-FKKGCGYL.js.map} +0 -0
  587. /package/dist/{chunk-BWGCOLEL.js.map → chunk-FTTJRVB7.js.map} +0 -0
  588. /package/dist/{chunk-ODU2CNNX.js.map → chunk-FYWLSFFS.js.map} +0 -0
  589. /package/dist/{chunk-3PKAS6VL.js.map → chunk-GX6FTSYH.js.map} +0 -0
  590. /package/dist/{chunk-76DIF5KT.js.map → chunk-H7VDIF2V.js.map} +0 -0
  591. /package/dist/{chunk-F7XUD3PL.js.map → chunk-HJXA6ZM7.js.map} +0 -0
  592. /package/dist/{chunk-4QEYREAV.js.map → chunk-HNPE66LB.js.map} +0 -0
  593. /package/dist/{chunk-P36Z4JRA.js.map → chunk-I5VB44ZK.js.map} +0 -0
  594. /package/dist/{chunk-EUYWQ7TS.js.map → chunk-IEZ6CGTW.js.map} +0 -0
  595. /package/dist/{chunk-5DHKCO52.js.map → chunk-IVIAHQBR.js.map} +0 -0
  596. /package/dist/{chunk-TFR3HG4K.js.map → chunk-J3OND5QT.js.map} +0 -0
  597. /package/dist/{chunk-5ACCD4L7.js.map → chunk-JRRQ747T.js.map} +0 -0
  598. /package/dist/{chunk-V4IDF3EZ.js.map → chunk-JTWZKNUH.js.map} +0 -0
  599. /package/dist/{chunk-5RWZH6PH.js.map → chunk-L4X4PJYK.js.map} +0 -0
  600. /package/dist/{chunk-UTQUEHC7.js.map → chunk-LUDBXTBJ.js.map} +0 -0
  601. /package/dist/{chunk-LDKPDODJ.js.map → chunk-ME35HVDJ.js.map} +0 -0
  602. /package/dist/{chunk-DPCXDG7G.js.map → chunk-MJRGVXPQ.js.map} +0 -0
  603. /package/dist/{chunk-773TRRGT.js.map → chunk-MJUCDM3C.js.map} +0 -0
  604. /package/dist/{chunk-T6ILXUAH.js.map → chunk-MN5NOOI7.js.map} +0 -0
  605. /package/dist/{chunk-AHPIFKNG.js.map → chunk-N4F7ZSSG.js.map} +0 -0
  606. /package/dist/{chunk-JOZUBF4A.js.map → chunk-NACLNNFQ.js.map} +0 -0
  607. /package/dist/{chunk-LC2BDILZ.js.map → chunk-NBP4EX5N.js.map} +0 -0
  608. /package/dist/{chunk-ZVPVTPGI.js.map → chunk-NNZFPYYX.js.map} +0 -0
  609. /package/dist/{chunk-DA7ITC5Z.js.map → chunk-O57GM3FR.js.map} +0 -0
  610. /package/dist/{chunk-7VZFRUQU.js.map → chunk-O7ERGZDA.js.map} +0 -0
  611. /package/dist/{chunk-3SZD4CYO.js.map → chunk-OAJMQKQR.js.map} +0 -0
  612. /package/dist/{chunk-HSZMX3ZJ.js.map → chunk-ODW5GDFE.js.map} +0 -0
  613. /package/dist/{chunk-J2WC5LF4.js.map → chunk-QBC33MPY.js.map} +0 -0
  614. /package/dist/{chunk-T7XP6IZE.js.map → chunk-QCRJMU5V.js.map} +0 -0
  615. /package/dist/{chunk-OA2O2GJ4.js.map → chunk-RZ3IZIJG.js.map} +0 -0
  616. /package/dist/{chunk-UL4MKZHI.js.map → chunk-SN4JXNLL.js.map} +0 -0
  617. /package/dist/{chunk-CPA5NBHN.js.map → chunk-TNGH4ZYI.js.map} +0 -0
  618. /package/dist/{chunk-F3NVYTTA.js.map → chunk-TNXNECAN.js.map} +0 -0
  619. /package/dist/{chunk-BEC4YBNA.js.map → chunk-TVW4C7PV.js.map} +0 -0
  620. /package/dist/{chunk-UFKPQBXH.js.map → chunk-U62OK7BB.js.map} +0 -0
  621. /package/dist/{chunk-TUHBYJXL.js.map → chunk-VQ4AMTGZ.js.map} +0 -0
  622. /package/dist/{chunk-H2YSH3DG.js.map → chunk-WKAXBXVA.js.map} +0 -0
  623. /package/dist/{chunk-HRHO3ZNG.js.map → chunk-WKJFIMVN.js.map} +0 -0
  624. /package/dist/{chunk-SXIMQLGV.js.map → chunk-WVGXCBOC.js.map} +0 -0
  625. /package/dist/{chunk-CRML27CO.js.map → chunk-X5YYSAZX.js.map} +0 -0
  626. /package/dist/{chunk-FZEEWOI2.js.map → chunk-XJJYSX6F.js.map} +0 -0
  627. /package/dist/{chunk-UG6VXIOK.js.map → chunk-XSTNGNJP.js.map} +0 -0
  628. /package/dist/{chunk-YDPAE2RD.js.map → chunk-YFLLGRXO.js.map} +0 -0
  629. /package/dist/{chunk-LPNCR4QK.js.map → chunk-YXFCALVT.js.map} +0 -0
  630. /package/dist/{chunk-Q4WONDMJ.js.map → chunk-YYGZJPOK.js.map} +0 -0
  631. /package/dist/{chunk-GTO56JY5.js.map → chunk-ZJPM7GZ3.js.map} +0 -0
  632. /package/dist/{chunk-LOXHYCVS.js.map → chunk-ZW4VXELZ.js.map} +0 -0
  633. /package/dist/{contradiction-scan-AKUWPX5N.js.map → contradiction-scan-NOYMFG66.js.map} +0 -0
  634. /package/dist/{first-start-migration-4NETATFF.js.map → first-start-migration-KHIMCBIC.js.map} +0 -0
  635. /package/dist/{purge-GB7PZHT2.js.map → purge-OP6BEDFY.js.map} +0 -0
  636. /package/dist/{resolution-XWBPKYFB.js.map → resolution-4DLI3IOR.js.map} +0 -0
  637. /package/dist/{tier-stats-4B5IJ3NE.js.map → tier-stats-2TOW3QNL.js.map} +0 -0
@@ -1,13 +1,32 @@
1
1
  import {
2
- activityDayWindow,
3
- isValidActivityDate
4
- } from "./chunk-M6L7HI7R.js";
2
+ resolveDefaultNamespaceRoot
3
+ } from "./chunk-HJXA6ZM7.js";
5
4
  import {
6
- writeFileAtomically
7
- } from "./chunk-AW4QUFQF.js";
5
+ composeLocationDayBody,
6
+ composeLocationDayMeta,
7
+ emptyEnrichmentCounts,
8
+ enrichMemoriesWithLocation,
9
+ isValidLocationDate,
10
+ listLocationDayDates,
11
+ loadDaySegmentIndex,
12
+ loadLocationSyncState,
13
+ localDayKey,
14
+ locationDayWindow,
15
+ locationTaggingEnabled,
16
+ memoryLocationWindow,
17
+ observationSegments,
18
+ parseLocationDaySummary,
19
+ readLocationDay,
20
+ serializeLocationDay,
21
+ updateLocationSourceDay,
22
+ writeLocationDay
23
+ } from "./chunk-TB2MJRI6.js";
8
24
  import {
9
- pathIsInside
10
- } from "./chunk-GCASGYIO.js";
25
+ StorageManager
26
+ } from "./chunk-GEJKYA7D.js";
27
+ import {
28
+ resolveNamespaceCapabilities
29
+ } from "./chunk-JUOZ62Y7.js";
11
30
  import {
12
31
  readEnvVar
13
32
  } from "./chunk-JUC24CTX.js";
@@ -56,472 +75,6 @@ function clearLocationProviders() {
56
75
  providers.clear();
57
76
  }
58
77
 
59
- // src/location/intervals.ts
60
- function isValidLocationDate(date) {
61
- return isValidActivityDate(date);
62
- }
63
- function locationDayWindow(date, timezone) {
64
- if (!isValidActivityDate(date)) {
65
- throw new RangeError(`Invalid location date "${date}"; expected a real YYYY-MM-DD day.`);
66
- }
67
- return activityDayWindow(date, timezone);
68
- }
69
- function assertFiniteInstant(iso, what) {
70
- const ms = Date.parse(iso);
71
- if (typeof iso !== "string" || !Number.isFinite(ms)) {
72
- throw new RangeError(`${what} must be a UTC ISO-8601 instant; got "${String(iso)}"`);
73
- }
74
- return ms;
75
- }
76
- function localDayKey(instantUtc, timezone) {
77
- assertFiniteInstant(instantUtc, "instantUtc");
78
- return new Intl.DateTimeFormat("en-CA", {
79
- timeZone: timezone,
80
- year: "numeric",
81
- month: "2-digit",
82
- day: "2-digit"
83
- }).format(new Date(instantUtc));
84
- }
85
- function compareObservations(a, b) {
86
- if (a.observedAtUtc !== b.observedAtUtc) {
87
- return a.observedAtUtc < b.observedAtUtc ? -1 : 1;
88
- }
89
- if (a.place.id !== b.place.id) {
90
- return a.place.id < b.place.id ? -1 : 1;
91
- }
92
- return 0;
93
- }
94
- function bucketObservationsByDay(observations, timezone) {
95
- const buckets = /* @__PURE__ */ new Map();
96
- for (const observation of observations) {
97
- assertFiniteInstant(observation.observedAtUtc, "observation observedAtUtc");
98
- const key = localDayKey(observation.observedAtUtc, timezone);
99
- const bucket = buckets.get(key);
100
- if (bucket === void 0) buckets.set(key, [observation]);
101
- else bucket.push(observation);
102
- }
103
- for (const bucket of buckets.values()) bucket.sort(compareObservations);
104
- return buckets;
105
- }
106
- function intervalOverlapMs(a, b) {
107
- const overlap = Math.min(Date.parse(a.endUtc), Date.parse(b.endUtc)) - Math.max(Date.parse(a.startUtc), Date.parse(b.startUtc));
108
- return Math.max(0, overlap);
109
- }
110
- function placeForSegment(place, retainCoordinates) {
111
- if (retainCoordinates || place.latitude === void 0 || place.longitude === void 0) {
112
- return place;
113
- }
114
- return {
115
- id: place.id,
116
- label: place.label,
117
- ...place.kind === void 0 ? {} : { kind: place.kind }
118
- };
119
- }
120
- function observationSegments(observations, window, options) {
121
- const startMs = assertFiniteInstant(window.startUtc, "window startUtc");
122
- const endMs = assertFiniteInstant(window.endUtc, "window endUtc");
123
- if (startMs >= endMs) {
124
- throw new RangeError("location window must satisfy startUtc < endUtc");
125
- }
126
- const ordered = [...observations].sort(compareObservations);
127
- const segments = [];
128
- for (let index = 0; index < ordered.length; index += 1) {
129
- const current = ordered[index];
130
- const currentMs = Date.parse(current.observedAtUtc);
131
- if (currentMs < startMs || currentMs >= endMs) {
132
- throw new RangeError(
133
- `location observation at "${current.observedAtUtc}" falls outside the requested [${window.startUtc}, ${window.endUtc}) window`
134
- );
135
- }
136
- const nextMs = index + 1 < ordered.length ? Date.parse(ordered[index + 1].observedAtUtc) : endMs;
137
- const segmentEndMs = Math.min(nextMs, endMs);
138
- if (currentMs >= segmentEndMs) continue;
139
- segments.push({
140
- startUtc: new Date(currentMs).toISOString(),
141
- endUtc: new Date(segmentEndMs).toISOString(),
142
- place: placeForSegment(current.place, options.retainCoordinates)
143
- });
144
- }
145
- return segments;
146
- }
147
- function unionIntervalMs(segments) {
148
- const bounds = segments.map((segment) => ({ start: Date.parse(segment.startUtc), end: Date.parse(segment.endUtc) })).sort((a, b) => a.start !== b.start ? a.start - b.start : a.end - b.end);
149
- let total = 0;
150
- let sweepStart = null;
151
- let sweepEnd = 0;
152
- for (const bound of bounds) {
153
- if (sweepStart === null || bound.start > sweepEnd) {
154
- if (sweepStart !== null) total += sweepEnd - sweepStart;
155
- sweepStart = bound.start;
156
- sweepEnd = bound.end;
157
- } else if (bound.end > sweepEnd) {
158
- sweepEnd = bound.end;
159
- }
160
- }
161
- if (sweepStart !== null) total += sweepEnd - sweepStart;
162
- return total;
163
- }
164
- function placeDurations(segments) {
165
- const byPlace = /* @__PURE__ */ new Map();
166
- for (const segment of segments) {
167
- const existing = byPlace.get(segment.place.id);
168
- if (existing === void 0) {
169
- byPlace.set(segment.place.id, { place: segment.place, segments: [segment], firstStartUtc: segment.startUtc });
170
- continue;
171
- }
172
- existing.segments.push(segment);
173
- if (segment.startUtc < existing.firstStartUtc) existing.firstStartUtc = segment.startUtc;
174
- if (segment.place.label < existing.place.label) existing.place = segment.place;
175
- }
176
- const durations = [...byPlace.values()].map((entry) => ({
177
- place: entry.place,
178
- totalMs: unionIntervalMs(entry.segments),
179
- firstStartUtc: entry.firstStartUtc
180
- }));
181
- durations.sort((a, b) => {
182
- if (a.place.id !== b.place.id) return a.place.id < b.place.id ? -1 : 1;
183
- return 0;
184
- });
185
- return durations;
186
- }
187
- function dominantPlace(segments) {
188
- const durations = placeDurations(segments);
189
- let best = null;
190
- for (const duration of durations) {
191
- if (best === null) {
192
- best = duration;
193
- continue;
194
- }
195
- if (duration.totalMs !== best.totalMs) {
196
- if (duration.totalMs > best.totalMs) best = duration;
197
- continue;
198
- }
199
- if (duration.firstStartUtc !== best.firstStartUtc) {
200
- if (duration.firstStartUtc < best.firstStartUtc) best = duration;
201
- continue;
202
- }
203
- if (duration.place.id < best.place.id) best = duration;
204
- }
205
- return best === null ? null : { place: best.place, totalMs: best.totalMs };
206
- }
207
-
208
- // src/location/store.ts
209
- import { createHash } from "crypto";
210
- import { lstat, mkdir, readFile, readdir, realpath } from "fs/promises";
211
- import path from "path";
212
- var LOCATIONS_DIR_NAME = "locations";
213
- var LOCATION_DAY_KIND = "location-day";
214
- var LOCATION_DAY_FORMAT_VERSION = 1;
215
- var MAX_TRACKED_LOCATION_DAYS = 90;
216
- var DAY_FILE_NAME_PATTERN = /^\d{4}-\d{2}-\d{2}\.md$/;
217
- var stateLocks = /* @__PURE__ */ new Map();
218
- function withStateLock(key, fn) {
219
- const prior = stateLocks.get(key) ?? Promise.resolve();
220
- const next = prior.then(fn, fn);
221
- const tail = next.then(
222
- () => void 0,
223
- () => void 0
224
- );
225
- stateLocks.set(key, tail);
226
- void tail.then(() => {
227
- if (stateLocks.get(key) === tail) stateLocks.delete(key);
228
- });
229
- return next;
230
- }
231
- function locationDayFilePath(memoryDir, date) {
232
- if (!isValidLocationDate(date)) {
233
- throw new RangeError(`Invalid location date "${date}"; expected a real YYYY-MM-DD day.`);
234
- }
235
- return path.join(memoryDir, LOCATIONS_DIR_NAME, `${date}.md`);
236
- }
237
- function locationSyncStateFilePath(memoryDir) {
238
- return path.join(memoryDir, "state", "locations", "sync.json");
239
- }
240
- function emptyLocationSyncState() {
241
- return { version: 1, sources: {} };
242
- }
243
- async function loadLocationSyncState(memoryDir) {
244
- let raw;
245
- try {
246
- raw = await readFile(locationSyncStateFilePath(memoryDir), "utf-8");
247
- } catch (err) {
248
- if (err.code === "ENOENT") return emptyLocationSyncState();
249
- throw err;
250
- }
251
- let parsed;
252
- try {
253
- parsed = JSON.parse(raw);
254
- } catch {
255
- return emptyLocationSyncState();
256
- }
257
- if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed) || typeof parsed.sources !== "object" || parsed.sources === null) {
258
- return emptyLocationSyncState();
259
- }
260
- return { version: 1, sources: parsed.sources };
261
- }
262
- async function saveLocationSyncState(memoryDir, state) {
263
- await mkdir(path.dirname(locationSyncStateFilePath(memoryDir)), { recursive: true, mode: 448 });
264
- await writeFileAtomically(
265
- locationSyncStateFilePath(memoryDir),
266
- `${JSON.stringify(state, null, 2)}
267
- `
268
- );
269
- }
270
- function pruneSourceDays(source) {
271
- const days = source.days;
272
- if (days === void 0) return;
273
- const keys = Object.keys(days).sort((a, b) => a < b ? -1 : a > b ? 1 : 0);
274
- for (const key of keys.slice(0, Math.max(0, keys.length - MAX_TRACKED_LOCATION_DAYS))) {
275
- delete days[key];
276
- }
277
- }
278
- async function updateLocationSourceDay(memoryDir, sourceId, date, payload, completedAtUtc) {
279
- if (!isValidLocationDate(date)) {
280
- throw new RangeError(`Invalid location date "${date}"; expected a real YYYY-MM-DD day.`);
281
- }
282
- return withStateLock(locationSyncStateFilePath(memoryDir), async () => {
283
- const state = await loadLocationSyncState(memoryDir);
284
- const source = state.sources[sourceId] ?? {};
285
- const days = source.days ?? {};
286
- days[date] = payload;
287
- source.days = days;
288
- source.lastSyncedAtUtc = completedAtUtc;
289
- state.sources[sourceId] = source;
290
- for (const candidate of Object.values(state.sources)) pruneSourceDays(candidate);
291
- await saveLocationSyncState(memoryDir, state);
292
- return state;
293
- });
294
- }
295
- function hashLocationBody(body) {
296
- return createHash("sha256").update(body, "utf8").digest("hex");
297
- }
298
- function clockHhMm(iso, timezone) {
299
- return new Intl.DateTimeFormat("en-GB", {
300
- timeZone: timezone,
301
- hour: "2-digit",
302
- minute: "2-digit",
303
- hour12: false
304
- }).format(new Date(iso));
305
- }
306
- function formatDuration(ms) {
307
- const totalMinutes = Math.round(ms / 6e4);
308
- const hours = Math.floor(totalMinutes / 60);
309
- const minutes = totalMinutes % 60;
310
- if (hours <= 0) return `${minutes}m`;
311
- return `${hours}h ${String(minutes).padStart(2, "0")}m`;
312
- }
313
- function safeLabel(label) {
314
- return label.replace(/\s+/g, " ").replace(/[`*_]/g, "").trim();
315
- }
316
- function formatPlaceLabel(segment) {
317
- const label = safeLabel(segment.place.label);
318
- return segment.place.kind === void 0 ? label : `${label} (${segment.place.kind})`;
319
- }
320
- function formatCoordinates(segment) {
321
- if (segment.place.latitude === void 0 || segment.place.longitude === void 0) return "";
322
- return ` @ ${segment.place.latitude.toFixed(4)},${segment.place.longitude.toFixed(4)}`;
323
- }
324
- function composeLocationDayBody(date, timezone, sources) {
325
- const lines = [`# Location day \u2014 ${date} (${timezone})`, ""];
326
- const allSegments = [];
327
- let observationCount = 0;
328
- for (const entry of Object.values(sources)) {
329
- allSegments.push(...entry.segments);
330
- observationCount += entry.observationCount;
331
- }
332
- lines.push("## Summary", "");
333
- if (observationCount === 0) {
334
- lines.push("No location observations recorded.", "");
335
- } else {
336
- const durations = placeDurations(allSegments).sort((a, b) => b.totalMs - a.totalMs);
337
- lines.push(
338
- `- Places visited: ${durations.length}`,
339
- ...durations.map(
340
- (duration) => `- ${safeLabel(duration.place.label)}: ${formatDuration(duration.totalMs)}`
341
- ),
342
- ""
343
- );
344
- }
345
- const sourceIds = Object.keys(sources).sort((a, b) => a < b ? -1 : a > b ? 1 : 0);
346
- for (const sourceId of sourceIds) {
347
- const entry = sources[sourceId];
348
- lines.push(`## Timeline \u2014 ${safeLabel(entry.providerDisplayName ?? sourceId)}`, "");
349
- if (entry.segments.length === 0) {
350
- lines.push("No observations.", "");
351
- continue;
352
- }
353
- for (const segment of entry.segments) {
354
- lines.push(
355
- `- ${clockHhMm(segment.startUtc, timezone)}\u2013${clockHhMm(segment.endUtc, timezone)} \u2014 ${formatPlaceLabel(segment)}${formatCoordinates(segment)}`
356
- );
357
- }
358
- lines.push("");
359
- }
360
- return `${lines.join("\n").trimEnd()}
361
- `;
362
- }
363
- function composeLocationDayMeta(date, timezone, sources, body) {
364
- let observationCount = 0;
365
- for (const entry of Object.values(sources)) observationCount += entry.observationCount;
366
- return {
367
- kind: LOCATION_DAY_KIND,
368
- date,
369
- timezone,
370
- formatVersion: LOCATION_DAY_FORMAT_VERSION,
371
- sources: Object.keys(sources).sort((a, b) => a < b ? -1 : a > b ? 1 : 0),
372
- observationCount,
373
- contentHash: hashLocationBody(body)
374
- };
375
- }
376
- function frontmatterScalar(key, value) {
377
- return `${key}: ${typeof value === "number" ? value : JSON.stringify(value)}`;
378
- }
379
- function frontmatterList(key, values) {
380
- if (values.length === 0) return [`${key}: []`];
381
- const lines = [`${key}:`];
382
- for (const value of values) lines.push(` - ${JSON.stringify(value)}`);
383
- return lines;
384
- }
385
- function serializeLocationDay(meta, body) {
386
- const lines = ["---"];
387
- lines.push(frontmatterScalar("kind", meta.kind));
388
- lines.push(frontmatterScalar("date", meta.date));
389
- lines.push(frontmatterScalar("timezone", meta.timezone));
390
- lines.push(frontmatterScalar("formatVersion", meta.formatVersion));
391
- lines.push(...frontmatterList("sources", meta.sources));
392
- lines.push(frontmatterScalar("observationCount", meta.observationCount));
393
- lines.push(frontmatterScalar("contentHash", meta.contentHash));
394
- lines.push("---", "", body);
395
- return lines.join("\n");
396
- }
397
- function parseScalar(raw) {
398
- try {
399
- const parsed = JSON.parse(raw);
400
- return typeof parsed === "string" ? parsed : raw;
401
- } catch {
402
- return raw;
403
- }
404
- }
405
- function parseLocationDaySummary(raw) {
406
- if (!raw.startsWith("---\n")) return null;
407
- const closeIndex = raw.indexOf("\n---\n", 4);
408
- if (closeIndex === -1) return null;
409
- const scalars = {};
410
- const lists = {};
411
- let currentList = null;
412
- for (const line of raw.slice(4, closeIndex).split("\n")) {
413
- const listItem = /^ {2}- (.*)$/.exec(line);
414
- if (listItem !== null && currentList !== null) {
415
- lists[currentList].push(parseScalar(listItem[1]));
416
- continue;
417
- }
418
- currentList = null;
419
- const separator = line.indexOf(":");
420
- if (separator === -1) continue;
421
- const key = line.slice(0, separator);
422
- const value = line.slice(separator + 1).trim();
423
- if (value === "" || value === "[]") {
424
- lists[key] = [];
425
- currentList = key;
426
- continue;
427
- }
428
- if (value.startsWith("[")) {
429
- lists[key] = [parseScalar(value)];
430
- currentList = key;
431
- continue;
432
- }
433
- scalars[key] = value;
434
- }
435
- if (scalars.kind === void 0 || parseScalar(scalars.kind) !== LOCATION_DAY_KIND) return null;
436
- if (scalars.date === void 0 || scalars.contentHash === void 0) return null;
437
- return {
438
- date: parseScalar(scalars.date),
439
- timezone: scalars.timezone === void 0 ? "UTC" : parseScalar(scalars.timezone),
440
- sources: lists.sources ?? [],
441
- observationCount: scalars.observationCount === void 0 ? 0 : Number(scalars.observationCount) || 0,
442
- contentHash: parseScalar(scalars.contentHash)
443
- };
444
- }
445
- function isErrnoCode(err, code) {
446
- return err instanceof Error && err.code === code;
447
- }
448
- async function assertNotSymlink(target, kind) {
449
- let stat;
450
- try {
451
- stat = await lstat(target);
452
- } catch (err) {
453
- if (isErrnoCode(err, "ENOENT")) return;
454
- throw err;
455
- }
456
- if (stat.isSymbolicLink()) {
457
- throw new Error(
458
- `locations ${kind} '${path.basename(target)}' is a symbolic link \u2014 refusing to follow it even when it resolves inside the memory dir (AGENTS.md pattern #3)`
459
- );
460
- }
461
- }
462
- async function assertNoEscape(rootReal, candidate) {
463
- let candidateReal;
464
- try {
465
- candidateReal = await realpath(candidate);
466
- } catch {
467
- return;
468
- }
469
- if (!pathIsInside(rootReal, candidateReal)) {
470
- throw new Error(
471
- "location day path resolves outside the memory dir \u2014 refusing to follow a symlink/traversal (AGENTS.md pattern #3)"
472
- );
473
- }
474
- }
475
- async function assertDayPathContained(memoryDir, targetPath) {
476
- let rootReal;
477
- try {
478
- rootReal = await realpath(memoryDir);
479
- } catch {
480
- rootReal = path.resolve(memoryDir);
481
- }
482
- const locationsDir = path.join(memoryDir, LOCATIONS_DIR_NAME);
483
- await assertNoEscape(rootReal, locationsDir);
484
- await assertNoEscape(rootReal, targetPath);
485
- await assertNotSymlink(locationsDir, "directory");
486
- await assertNotSymlink(targetPath, "day file");
487
- }
488
- async function writeLocationDay(memoryDir, date, serialized) {
489
- const target = locationDayFilePath(memoryDir, date);
490
- await assertDayPathContained(memoryDir, target);
491
- try {
492
- if (await readFile(target, "utf-8") === serialized) return false;
493
- } catch (err) {
494
- if (!isErrnoCode(err, "ENOENT")) throw err;
495
- }
496
- await mkdir(path.dirname(target), { recursive: true, mode: 448 });
497
- await writeFileAtomically(target, serialized);
498
- return true;
499
- }
500
- async function readLocationDay(memoryDir, date) {
501
- const target = locationDayFilePath(memoryDir, date);
502
- await assertDayPathContained(memoryDir, target);
503
- try {
504
- return await readFile(target, "utf-8");
505
- } catch (err) {
506
- if (isErrnoCode(err, "ENOENT")) return null;
507
- throw err;
508
- }
509
- }
510
- async function listLocationDayDates(memoryDir) {
511
- const locationsDir = path.join(memoryDir, LOCATIONS_DIR_NAME);
512
- await assertDayPathContained(memoryDir, locationsDir);
513
- let entries;
514
- try {
515
- entries = await readdir(locationsDir);
516
- } catch (err) {
517
- if (isErrnoCode(err, "ENOENT")) return [];
518
- throw err;
519
- }
520
- const dates = entries.filter((entry) => DAY_FILE_NAME_PATTERN.test(entry)).map((entry) => entry.slice(0, -3));
521
- dates.sort((a, b) => a > b ? -1 : a < b ? 1 : 0);
522
- return dates;
523
- }
524
-
525
78
  // src/location/pipeline.ts
526
79
  var MAX_SYNC_PAGES = 1e4;
527
80
  function sanitizeProviderError(error) {
@@ -759,6 +312,63 @@ async function syncLocation(options) {
759
312
  return runs;
760
313
  }
761
314
 
315
+ // src/location/backfill.ts
316
+ async function backfillMemoryStorage(config) {
317
+ const root = resolveNamespaceCapabilities(config).namespaces ? await resolveDefaultNamespaceRoot(config) : config.memoryDir;
318
+ return new StorageManager(root);
319
+ }
320
+ function memoriesTouchingDay(memories, day, config) {
321
+ const touched = [];
322
+ for (const memory of memories) {
323
+ const result = memoryLocationWindow(memory.frontmatter, (instant) => localDayKey(instant, config.timezone));
324
+ if (result.days !== void 0 && result.days.includes(day)) touched.push(memory);
325
+ }
326
+ touched.sort((a, b) => a.frontmatter.id < b.frontmatter.id ? -1 : a.frontmatter.id > b.frontmatter.id ? 1 : 0);
327
+ return touched;
328
+ }
329
+ async function backfillLocationTags(options) {
330
+ if (!locationTaggingEnabled(options.config)) {
331
+ throw new Error(
332
+ "location backfill requires location.enabled and location.tagging.enabled (and location.tagging.backfillEnabled for the command surface)"
333
+ );
334
+ }
335
+ const index = await loadDaySegmentIndex(options.memoryDir);
336
+ const memories = await options.storage.readAllMemories();
337
+ const days = [];
338
+ const cursor = /* @__PURE__ */ new Date(`${options.from}T00:00:00Z`);
339
+ const end = /* @__PURE__ */ new Date(`${options.to}T00:00:00Z`);
340
+ while (cursor <= end) {
341
+ const date = cursor.toISOString().slice(0, 10);
342
+ try {
343
+ const daySegments = index.get(date);
344
+ if (daySegments === void 0 || daySegments.every((entry) => entry.segments.length === 0)) {
345
+ days.push({ date, emptyDay: true, counts: emptyEnrichmentCounts(), considered: 0 });
346
+ } else {
347
+ const touching = memoriesTouchingDay(memories, date, options.config);
348
+ const counts = await enrichMemoriesWithLocation({
349
+ storage: options.storage,
350
+ memoryDir: options.memoryDir,
351
+ config: options.config,
352
+ memories: touching,
353
+ index,
354
+ dryRun: options.dryRun === true
355
+ });
356
+ days.push({ date, emptyDay: false, counts, considered: touching.length });
357
+ }
358
+ } catch (error) {
359
+ days.push({
360
+ date,
361
+ emptyDay: false,
362
+ failed: error instanceof Error ? error.message : String(error),
363
+ counts: emptyEnrichmentCounts(),
364
+ considered: 0
365
+ });
366
+ }
367
+ cursor.setUTCDate(cursor.getUTCDate() + 1);
368
+ }
369
+ return { from: options.from, to: options.to, dryRun: options.dryRun === true, days };
370
+ }
371
+
762
372
  // src/location/provider-setup.ts
763
373
  var loadFailuresWarned = /* @__PURE__ */ new Set();
764
374
  function readReittiEnv() {
@@ -862,7 +472,29 @@ function parseLocationBackfillRange(rawFrom, rawTo) {
862
472
  if (days > 90) {
863
473
  throw new EngramAccessInputError("location: backfill range is capped at 90 days");
864
474
  }
865
- return { endDate: to, days };
475
+ return { from, endDate: to, days };
476
+ }
477
+ async function runLocationBackfill(deps, request = {}) {
478
+ const range = parseLocationBackfillRange(request.from, request.to);
479
+ if (!deps.config.enabled || !deps.config.tagging.enabled || !deps.config.tagging.backfillEnabled) {
480
+ throw new EngramAccessInputError(
481
+ "location: backfill requires location.enabled, location.tagging.enabled, and location.tagging.backfillEnabled"
482
+ );
483
+ }
484
+ await ensureConfiguredLocationProviders(deps.config);
485
+ const days = request.dryRun === true ? [] : await syncLocation({ ...deps, endDate: range.endDate, days: range.days });
486
+ let memory;
487
+ if (deps.getMemoryStorage !== void 0) {
488
+ memory = await backfillLocationTags({
489
+ storage: await deps.getMemoryStorage(),
490
+ memoryDir: deps.memoryDir,
491
+ config: deps.config,
492
+ from: range.from,
493
+ to: range.endDate,
494
+ dryRun: request.dryRun === true
495
+ });
496
+ }
497
+ return { days, ...memory !== void 0 ? { memory } : {} };
866
498
  }
867
499
  var USAGE = `Usage: location <command> [options]
868
500
 
@@ -873,8 +505,12 @@ Commands:
873
505
  ending yesterday)
874
506
  --date <YYYY-MM-DD> End the window on this day (inclusive)
875
507
  --days <n> Window size, 1..90 (default: location.syncDays)
876
- backfill --from <date> --to <date>
508
+ backfill --from <date> --to <date> [--dry-run]
877
509
  Sync an explicit historical range (\u2264 90 days)
510
+ and re-tag overlapping memories (requires
511
+ location.tagging.backfillEnabled). --dry-run
512
+ persists nothing: it only reports the memory
513
+ changes stored segments would produce.
878
514
  day <YYYY-MM-DD> Print one stored location day
879
515
 
880
516
  Add --json to status/sync/backfill/day for machine-readable output.
@@ -882,7 +518,7 @@ Credentials for built-in providers come from the environment:
882
518
  reitti: REITTI_BASE_URL, REITTI_TOKEN[, REITTI_AUTH_MODE=x-api-token|bearer]
883
519
  `;
884
520
  var VALUE_FLAGS = /* @__PURE__ */ new Set(["--date", "--days", "--from", "--to"]);
885
- var BOOLEAN_FLAGS = /* @__PURE__ */ new Set(["--json"]);
521
+ var BOOLEAN_FLAGS = /* @__PURE__ */ new Set(["--json", "--dry-run"]);
886
522
  function parseCliFlags(args) {
887
523
  const flags = /* @__PURE__ */ new Map();
888
524
  const positional = [];
@@ -911,6 +547,25 @@ function parseCliFlags(args) {
911
547
  }
912
548
  return { flags, positional };
913
549
  }
550
+ function renderBackfillReport(io, report) {
551
+ for (const day of report.days) {
552
+ if (day.emptyDay) {
553
+ io.stdout.write(`${day.date}: no stored location observations (empty day)
554
+ `);
555
+ continue;
556
+ }
557
+ if (day.failed !== void 0) {
558
+ io.stdout.write(`${day.date}: FAILED \u2014 ${day.failed}
559
+ `);
560
+ continue;
561
+ }
562
+ const c = day.counts;
563
+ io.stdout.write(
564
+ `${day.date}: ${c.tagged} tagged, ${c.updated} updated, ${c.removed} removed, ${c.unchanged} unchanged, ${c.unmatched} unmatched (incl. ambiguous), ${c.manual} manual, ${c.untimed} untimed, ${c.failed} failed, ${day.considered} considered${report.dryRun ? " (dry run)" : ""}
565
+ `
566
+ );
567
+ }
568
+ }
914
569
  function flagString(parsed, name) {
915
570
  const value = parsed.flags.get(name);
916
571
  return typeof value === "string" ? value : void 0;
@@ -1007,15 +662,20 @@ async function runLocationCliCommand(deps, args, io) {
1007
662
  }
1008
663
  case "backfill": {
1009
664
  const parsed = parseCliFlags(rest);
1010
- const range = parseLocationBackfillRange(flagString(parsed, "--from"), flagString(parsed, "--to"));
1011
- const runs = await runLocationSync(deps, range);
665
+ const result = await runLocationBackfill(deps, {
666
+ from: flagString(parsed, "--from"),
667
+ to: flagString(parsed, "--to"),
668
+ dryRun: parsed.flags.has("--dry-run")
669
+ });
1012
670
  if (parsed.flags.has("--json")) {
1013
- io.stdout.write(`${JSON.stringify({ days: runs }, null, 2)}
671
+ io.stdout.write(`${JSON.stringify(result, null, 2)}
1014
672
  `);
1015
673
  } else {
1016
- renderRuns(io, runs);
674
+ renderRuns(io, result.days);
675
+ if (result.memory !== void 0) renderBackfillReport(io, result.memory);
1017
676
  }
1018
- return anySourceFailed(runs) ? 1 : 0;
677
+ const memoryFailed = result.memory?.days.some((day) => day.failed !== void 0) === true;
678
+ return anySourceFailed(result.days) || memoryFailed ? 1 : 0;
1019
679
  }
1020
680
  case "day": {
1021
681
  const parsed = parseCliFlags(rest);
@@ -1052,42 +712,20 @@ export {
1052
712
  getLocationProvider,
1053
713
  listLocationProviders,
1054
714
  clearLocationProviders,
1055
- isValidLocationDate,
1056
- locationDayWindow,
1057
- localDayKey,
1058
- bucketObservationsByDay,
1059
- intervalOverlapMs,
1060
- observationSegments,
1061
- placeDurations,
1062
- dominantPlace,
1063
- LOCATIONS_DIR_NAME,
1064
- LOCATION_DAY_KIND,
1065
- LOCATION_DAY_FORMAT_VERSION,
1066
- locationDayFilePath,
1067
- locationSyncStateFilePath,
1068
- emptyLocationSyncState,
1069
- loadLocationSyncState,
1070
- saveLocationSyncState,
1071
- updateLocationSourceDay,
1072
- hashLocationBody,
1073
- composeLocationDayBody,
1074
- composeLocationDayMeta,
1075
- serializeLocationDay,
1076
- parseLocationDaySummary,
1077
- writeLocationDay,
1078
- readLocationDay,
1079
- listLocationDayDates,
1080
715
  sanitizeProviderError,
1081
716
  syncLocationDay,
1082
717
  locationStatus,
1083
718
  checkLocationSources,
1084
719
  syncLocation,
720
+ backfillMemoryStorage,
721
+ backfillLocationTags,
1085
722
  ensureConfiguredLocationProviders,
1086
723
  runLocationStatus,
1087
724
  runLocationCheck,
1088
725
  runLocationSync,
1089
726
  runLocationDay,
1090
727
  parseLocationBackfillRange,
728
+ runLocationBackfill,
1091
729
  runLocationCliCommand
1092
730
  };
1093
- //# sourceMappingURL=chunk-3BCULS4U.js.map
731
+ //# sourceMappingURL=chunk-VQNRICAQ.js.map