@remnic/core 9.69.28 → 9.69.30

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 (372) hide show
  1. package/dist/access-admin-ops-surface.d.ts +1 -1
  2. package/dist/access-admin-ops-surface.js +58 -58
  3. package/dist/access-audit.js +2 -2
  4. package/dist/access-authorization-probe.d.ts +1 -1
  5. package/dist/access-authorization-probe.js +59 -59
  6. package/dist/access-boundary.d.ts +1 -1
  7. package/dist/access-boundary.js +58 -58
  8. package/dist/access-cli.js +133 -132
  9. package/dist/access-cli.js.map +1 -1
  10. package/dist/access-coding-context-resolution.js +4 -4
  11. package/dist/access-extraction-force-flush.d.ts +1 -1
  12. package/dist/access-extraction-force-flush.js +58 -58
  13. package/dist/access-http-briefing.d.ts +1 -1
  14. package/dist/access-http-briefing.js +59 -59
  15. package/dist/access-http-lcm-compaction.d.ts +1 -1
  16. package/dist/access-http-lifecycle-flush.d.ts +1 -1
  17. package/dist/access-http-offline-stream.d.ts +1 -1
  18. package/dist/access-http-query.js +60 -60
  19. package/dist/access-http.d.ts +2 -2
  20. package/dist/access-http.js +76 -76
  21. package/dist/access-identity-continuity-surface.js +58 -58
  22. package/dist/access-lcm-surface.d.ts +1 -1
  23. package/dist/access-lcm-surface.js +58 -58
  24. package/dist/access-mcp.d.ts +1 -1
  25. package/dist/access-mcp.js +66 -66
  26. package/dist/access-namespace-preflight.js +58 -58
  27. package/dist/access-observe-transcript.js +4 -4
  28. package/dist/access-observe-write-surface.d.ts +1 -1
  29. package/dist/access-observe-write-surface.js +58 -58
  30. package/dist/access-offline-manifest.js +8 -8
  31. package/dist/access-operations-batch.js +60 -60
  32. package/dist/access-operations.d.ts +6 -6
  33. package/dist/access-operations.js +65 -65
  34. package/dist/access-recall-concurrency.d.ts +1 -1
  35. package/dist/access-recall-concurrency.js +58 -58
  36. package/dist/access-recall-response.d.ts +1 -1
  37. package/dist/access-recall-response.js +58 -58
  38. package/dist/access-recall-surface.d.ts +1 -1
  39. package/dist/access-recall-surface.js +58 -58
  40. package/dist/access-schema.d.ts +91 -91
  41. package/dist/access-schema.js +3 -3
  42. package/dist/access-service-helpers.d.ts +1 -1
  43. package/dist/access-service.d.ts +1 -1
  44. package/dist/access-service.js +58 -58
  45. package/dist/access-surface-catalog.d.ts +1 -1
  46. package/dist/access-surface-catalog.js +60 -60
  47. package/dist/active-recall.js +11 -11
  48. package/dist/adapters/index.js +4 -4
  49. package/dist/adapters/registry.js +2 -2
  50. package/dist/{auto-sync-WNGG2GC2.js → auto-sync-NSHLUAQI.js} +7 -7
  51. package/dist/briefing.js +19 -19
  52. package/dist/buffer.js +9 -9
  53. package/dist/calibration.js +4 -4
  54. package/dist/causal-consolidation.js +21 -21
  55. package/dist/{chunk-OO42R444.js → chunk-2MFH376S.js} +3 -3
  56. package/dist/{chunk-NXH34IPL.js → chunk-353KGBKY.js} +2 -2
  57. package/dist/{chunk-DZD3WGCD.js → chunk-3JVLGJCY.js} +2 -2
  58. package/dist/{chunk-NOPN47AL.js → chunk-47DEYNMR.js} +2 -2
  59. package/dist/chunk-4NZQ7IID.js +63 -0
  60. package/dist/chunk-4NZQ7IID.js.map +1 -0
  61. package/dist/{chunk-2OO6TPQG.js → chunk-4UDQUPT5.js} +2 -2
  62. package/dist/{chunk-IE57QQSZ.js → chunk-565C6ZFO.js} +2 -2
  63. package/dist/{chunk-C6XEXTSJ.js → chunk-5ABN4WVL.js} +44 -44
  64. package/dist/{chunk-W7OU4I3Y.js → chunk-666OOKB7.js} +2 -2
  65. package/dist/{chunk-EYIEWJNI.js → chunk-6KH5NLQS.js} +2 -2
  66. package/dist/{chunk-R55WAWS3.js → chunk-7DUFJAOE.js} +40 -40
  67. package/dist/{chunk-EMDLM3LW.js → chunk-7IRZK6MM.js} +2 -2
  68. package/dist/{chunk-TVVEYCNW.js → chunk-7K5Q6COX.js} +4 -4
  69. package/dist/{chunk-RFWEDCRC.js → chunk-7VJXIDOC.js} +12 -12
  70. package/dist/{chunk-IVKIODHO.js → chunk-A7XEPMQ6.js} +5 -5
  71. package/dist/{chunk-K6MV3TRQ.js → chunk-ADXCCZL2.js} +2 -2
  72. package/dist/{chunk-GC65K6DI.js → chunk-AOCP6JA7.js} +4 -4
  73. package/dist/{chunk-JBPKEARU.js → chunk-AU7Q3LSC.js} +4 -4
  74. package/dist/{chunk-ND6IQGSZ.js → chunk-BA6WOZOT.js} +2 -2
  75. package/dist/{chunk-JI7U6AS3.js → chunk-C6FQJ52H.js} +2 -2
  76. package/dist/{chunk-IN673LEP.js → chunk-CARRTDKC.js} +2 -2
  77. package/dist/{chunk-HLTAZTN7.js → chunk-CBCNKKZD.js} +2 -2
  78. package/dist/{chunk-DXFG2VGN.js → chunk-CGC5UQCF.js} +2 -2
  79. package/dist/{chunk-YSSAGB2O.js → chunk-CLLPJ6QT.js} +5 -5
  80. package/dist/{chunk-U6S754L6.js → chunk-D5LORF7A.js} +3 -3
  81. package/dist/{chunk-C24UZSFW.js → chunk-DBQWVT2H.js} +2 -2
  82. package/dist/{chunk-XSTNGNJP.js → chunk-DCJ3YFIC.js} +2 -2
  83. package/dist/{chunk-2YDWI2LO.js → chunk-DITMGZOL.js} +2 -2
  84. package/dist/{chunk-LVE64P5Y.js → chunk-E2ZHGBAK.js} +2 -2
  85. package/dist/{chunk-WW3MR6T3.js → chunk-ENMTJRXA.js} +7 -7
  86. package/dist/{chunk-COUYFFID.js → chunk-EYMOJ3J6.js} +2 -2
  87. package/dist/{chunk-INBOGQ3E.js → chunk-EZZV7OQL.js} +2 -2
  88. package/dist/{chunk-MT47LH5L.js → chunk-FBMYGNOC.js} +2 -2
  89. package/dist/{chunk-N3SS45OW.js → chunk-FCSZ4K2X.js} +3 -3
  90. package/dist/{chunk-TWF35IC6.js → chunk-FDLDOEO6.js} +28 -23
  91. package/dist/chunk-FDLDOEO6.js.map +1 -0
  92. package/dist/{chunk-PKS56ZRR.js → chunk-FGGYSN4P.js} +2 -2
  93. package/dist/{chunk-ZMNT26KV.js → chunk-FHQSPTPZ.js} +2 -2
  94. package/dist/{chunk-6GUG4YNM.js → chunk-GGRRF4PZ.js} +2 -2
  95. package/dist/{chunk-YIHKAUS4.js → chunk-GTWHVXPA.js} +3 -3
  96. package/dist/{chunk-UY2RORVF.js → chunk-GVG3JYBI.js} +4 -4
  97. package/dist/{chunk-I3OQBP23.js → chunk-GY5WZBA6.js} +2 -2
  98. package/dist/{chunk-3GCK6ONU.js → chunk-HK32G473.js} +2 -2
  99. package/dist/{chunk-OVAJKCN3.js → chunk-HY55QQD7.js} +2 -2
  100. package/dist/{chunk-YJETZFLJ.js → chunk-I27RSQRR.js} +2 -2
  101. package/dist/{chunk-QIEUU4UK.js → chunk-I55KAVET.js} +2 -2
  102. package/dist/{chunk-UY7VPC6Q.js → chunk-IA2YSHTX.js} +15 -15
  103. package/dist/{chunk-UEEN7GXR.js → chunk-IY2FVXM6.js} +3 -3
  104. package/dist/{chunk-NVOFMARR.js → chunk-JDDXXZWW.js} +2 -2
  105. package/dist/{chunk-2AMEUKCG.js → chunk-JEIXTYVG.js} +2 -2
  106. package/dist/{chunk-ODW5GDFE.js → chunk-JT3EB7ZL.js} +2 -2
  107. package/dist/{chunk-XR67IAXP.js → chunk-KLMESRPV.js} +5 -5
  108. package/dist/{chunk-7LCGFUMB.js → chunk-KQAFEZQX.js} +4 -4
  109. package/dist/{chunk-3K7V3HE6.js → chunk-KXRX7YC2.js} +2 -2
  110. package/dist/{chunk-7RZJWZ46.js → chunk-LEPOP46W.js} +5 -5
  111. package/dist/{chunk-54WHLA65.js → chunk-LRICZIGN.js} +3 -3
  112. package/dist/{chunk-EWCNCQOU.js → chunk-LWA7MDVO.js} +2 -2
  113. package/dist/{chunk-EZKSOM5K.js → chunk-MFJBANPX.js} +2 -2
  114. package/dist/{chunk-OB3XMWX5.js → chunk-MKWKYHXJ.js} +4 -4
  115. package/dist/{chunk-HMKPFW7R.js → chunk-MPAJFFP3.js} +2 -2
  116. package/dist/{chunk-4P43SE4H.js → chunk-MPYD657E.js} +2 -2
  117. package/dist/{chunk-NLDVVWCL.js → chunk-NDNTNE3S.js} +2 -2
  118. package/dist/{chunk-5ISVONB7.js → chunk-NWWXSJX5.js} +2 -2
  119. package/dist/{chunk-QBC33MPY.js → chunk-NZXEK3UF.js} +2 -2
  120. package/dist/{chunk-MYB6DWE5.js → chunk-OGELWNYC.js} +6 -6
  121. package/dist/{chunk-IES4QHLM.js → chunk-OXNU333D.js} +5 -5
  122. package/dist/{chunk-JUC24CTX.js → chunk-P2QRMMVQ.js} +6 -1
  123. package/dist/chunk-P2QRMMVQ.js.map +1 -0
  124. package/dist/{chunk-MSSJSC2V.js → chunk-PEOTOFH5.js} +2 -2
  125. package/dist/{chunk-OYHGTHVX.js → chunk-PHNAB54Q.js} +2 -2
  126. package/dist/{chunk-R5T5FB2R.js → chunk-PLBW64UM.js} +62 -62
  127. package/dist/{chunk-BD7JTBYP.js → chunk-PSPABFN2.js} +4 -4
  128. package/dist/{chunk-WOOTZ6DH.js → chunk-PV36INNL.js} +3 -3
  129. package/dist/{chunk-QW3FMKT2.js → chunk-QDY6KYTN.js} +3 -3
  130. package/dist/{chunk-6TZWGQTT.js → chunk-RAVRDTP7.js} +5 -5
  131. package/dist/{chunk-BIVJCVT2.js → chunk-RBGREYVJ.js} +2 -2
  132. package/dist/{chunk-GGRD3JEH.js → chunk-ROGRI25A.js} +2 -2
  133. package/dist/{chunk-HTPQJ32S.js → chunk-ROKKIMON.js} +2 -2
  134. package/dist/{chunk-5KND6CSX.js → chunk-RSVEP77Y.js} +2 -2
  135. package/dist/{chunk-SV4Z2S67.js → chunk-S5G2LAL7.js} +4 -4
  136. package/dist/{chunk-5PTRLTK2.js → chunk-S65WXHNK.js} +2 -2
  137. package/dist/{chunk-XPFC6D45.js → chunk-S7DPKM5W.js} +41 -31
  138. package/dist/chunk-S7DPKM5W.js.map +1 -0
  139. package/dist/{chunk-3FEH4C4V.js → chunk-SB6PSOP7.js} +1 -1
  140. package/dist/{chunk-S2DU3UBN.js → chunk-SH2ZWEWB.js} +6 -6
  141. package/dist/{chunk-Z5XE7AMC.js → chunk-SMOFBBPU.js} +2 -2
  142. package/dist/{chunk-GRCREL6Q.js → chunk-SQJ3SDIW.js} +11 -11
  143. package/dist/{chunk-YFDJVB2K.js → chunk-T7CJQVRZ.js} +2 -2
  144. package/dist/{chunk-EIJR4PZL.js → chunk-TEYN7ZYF.js} +5 -5
  145. package/dist/{chunk-JALOAKSZ.js → chunk-TLPZ6MKZ.js} +4 -4
  146. package/dist/{chunk-BHHONFSK.js → chunk-U34EHBPL.js} +2 -2
  147. package/dist/{chunk-DFEODULB.js → chunk-V2HHAAPI.js} +2 -2
  148. package/dist/{chunk-KEF46KL2.js → chunk-V6EGNVUT.js} +3 -3
  149. package/dist/{chunk-ESNFSSO4.js → chunk-VGXM5B4H.js} +2 -2
  150. package/dist/{chunk-MJUCDM3C.js → chunk-VLXBE57O.js} +2 -2
  151. package/dist/{chunk-YGTSOVCR.js → chunk-VP67GZ7T.js} +2 -2
  152. package/dist/{chunk-ALBYEXFX.js → chunk-VZWXFXLX.js} +2 -2
  153. package/dist/{chunk-NC7RM2XS.js → chunk-W64HKJJM.js} +3 -3
  154. package/dist/{chunk-OMLGLMWL.js → chunk-WHBVXTUI.js} +9 -9
  155. package/dist/{chunk-4KMGFWQY.js → chunk-WJBZMNNS.js} +8 -8
  156. package/dist/{chunk-WFZBRS6N.js → chunk-X74UAWSI.js} +2 -2
  157. package/dist/{chunk-EGALNSZ4.js → chunk-XU6OEECT.js} +3 -3
  158. package/dist/{chunk-4FIH6MPS.js → chunk-YHLWPYHT.js} +3 -3
  159. package/dist/{chunk-PAZY2ZKP.js → chunk-YQAXP5AC.js} +2 -2
  160. package/dist/{chunk-ZNR5SVUI.js → chunk-YUMDFDUA.js} +3 -3
  161. package/dist/{chunk-7HYPN2GC.js → chunk-ZG74PWRW.js} +2 -2
  162. package/dist/{chunk-TDYAIXHK.js → chunk-ZHXSOMYH.js} +4 -4
  163. package/dist/{chunk-TNSCIPBQ.js → chunk-ZNJSBIP4.js} +4 -4
  164. package/dist/{cli-BqMNkQn5.d.ts → cli-DD0P-lu8.d.ts} +1 -1
  165. package/dist/cli.d.ts +2 -2
  166. package/dist/cli.js +101 -101
  167. package/dist/coding/export-okf-codegraph.js +21 -21
  168. package/dist/compounding/engine.js +20 -20
  169. package/dist/config-discovery.d.ts +26 -0
  170. package/dist/config-discovery.js +11 -0
  171. package/dist/config-security.js +2 -2
  172. package/dist/config.js +11 -11
  173. package/dist/connectors/codex-materialize-runner.js +20 -20
  174. package/dist/connectors/codex-materialize.js +3 -3
  175. package/dist/connectors/index.js +23 -23
  176. package/dist/convergence-refresh.js +21 -21
  177. package/dist/conversation-index/backend.js +2 -2
  178. package/dist/corpus-watermark.js +21 -21
  179. package/dist/deep-recall-http-glue.d.ts +1 -1
  180. package/dist/deep-recall-http-glue.js +4 -4
  181. package/dist/deep-recall-mcp-tools.d.ts +1 -1
  182. package/dist/deep-recall-policy-llm.js +5 -5
  183. package/dist/deep-recall.js +2 -2
  184. package/dist/embedding-fallback.js +2 -2
  185. package/dist/emit-legacy-tools.js +3 -3
  186. package/dist/entity-retrieval.js +19 -19
  187. package/dist/external-wiki-access.d.ts +1 -1
  188. package/dist/external-wiki-access.js +59 -59
  189. package/dist/external-wiki-config.js +3 -3
  190. package/dist/external-wiki-mcp-tools.d.ts +1 -1
  191. package/dist/extraction-faithfulness.js +5 -5
  192. package/dist/extraction-judge.js +5 -5
  193. package/dist/extraction-source-grounding.js +3 -3
  194. package/dist/extraction.js +34 -34
  195. package/dist/fallback-llm.js +4 -4
  196. package/dist/harmonic-retrieval.js +1 -1
  197. package/dist/index.d.ts +680 -678
  198. package/dist/index.js +151 -142
  199. package/dist/live-connectors-runner.js +5 -5
  200. package/dist/local-llm.js +3 -3
  201. package/dist/location/index.js +24 -24
  202. package/dist/maintenance/memory-governance.js +19 -19
  203. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +19 -19
  204. package/dist/maintenance/rebuild-memory-projection.js +20 -20
  205. package/dist/mcp-memory-inspector-app.d.ts +1 -1
  206. package/dist/memory-subject-cli.d.ts +1 -1
  207. package/dist/memory-subject.d.ts +1 -1
  208. package/dist/migrate/from-engram.js +2 -2
  209. package/dist/namespaces/migrate.js +20 -20
  210. package/dist/namespaces/search.js +11 -11
  211. package/dist/namespaces/storage.js +19 -19
  212. package/dist/offline-sync-impression-drain.js +6 -6
  213. package/dist/operator-doctor-corpus.js +22 -22
  214. package/dist/operator-toolkit.js +38 -38
  215. package/dist/opik-exporter.js +1 -1
  216. package/dist/orchestration/maintenance.js +33 -33
  217. package/dist/orchestrator.js +133 -132
  218. package/dist/provenance.js +2 -2
  219. package/dist/{public-http-ByX2eTla.d.ts → public-http-C4i8Opxc.d.ts} +1 -1
  220. package/dist/qmd.js +2 -2
  221. package/dist/recall-planner-llm.js +4 -4
  222. package/dist/reconcile/manifest.js +1 -1
  223. package/dist/resolve-provider-secret.js +2 -2
  224. package/dist/resume-bundles.js +12 -12
  225. package/dist/runtime/env.d.ts +9 -1
  226. package/dist/runtime/env.js +3 -1
  227. package/dist/schemas.d.ts +152 -152
  228. package/dist/sdk-compat.js +1 -1
  229. package/dist/search/factory.js +10 -10
  230. package/dist/search/index.js +15 -15
  231. package/dist/search/lancedb-backend.js +2 -2
  232. package/dist/search/meilisearch-backend.js +2 -2
  233. package/dist/search/orama-backend.js +2 -2
  234. package/dist/semantic-consolidation.js +21 -21
  235. package/dist/semantic-rule-promotion.js +19 -19
  236. package/dist/semantic-rule-verifier.js +19 -19
  237. package/dist/shared-context/manager.d.ts +6 -6
  238. package/dist/shared-context/manager.js +3 -3
  239. package/dist/source-agent-qualifier.js +31 -31
  240. package/dist/standup/build.js +20 -20
  241. package/dist/{state-store-Z3EN56O5.js → state-store-I5HLZTZT.js} +4 -4
  242. package/dist/state-store-I5HLZTZT.js.map +1 -0
  243. package/dist/storage.js +18 -18
  244. package/dist/summarizer.js +7 -7
  245. package/dist/support-passport/index.d.ts +4 -4
  246. package/dist/support-passport/index.js +61 -61
  247. package/dist/tokens.js +2 -2
  248. package/dist/transfer/capsule-export.js +2 -2
  249. package/dist/transfer/capsule-import.js +2 -2
  250. package/dist/transfer/export-okf.js +20 -20
  251. package/dist/transfer/types.d.ts +78 -78
  252. package/dist/utils/path.js +2 -2
  253. package/dist/verified-recall.js +19 -19
  254. package/dist/who-knows-cli.d.ts +1 -1
  255. package/dist/who-knows-cli.js +20 -20
  256. package/dist/who-knows.d.ts +1 -1
  257. package/dist/who-knows.js +19 -19
  258. package/package.json +2 -2
  259. package/src/activity/digest.test.ts +107 -1
  260. package/src/activity/digest.ts +76 -51
  261. package/src/config-discovery.test.ts +63 -0
  262. package/src/config-discovery.ts +90 -0
  263. package/src/index.ts +2 -0
  264. package/src/reconcile/manifest.ts +59 -50
  265. package/src/runtime/env.ts +11 -0
  266. package/dist/chunk-JUC24CTX.js.map +0 -1
  267. package/dist/chunk-TWF35IC6.js.map +0 -1
  268. package/dist/chunk-XPFC6D45.js.map +0 -1
  269. package/dist/{access-service-GrdVg_-Z.d.ts → access-service-DWdY9Mlk.d.ts} +58 -58
  270. /package/dist/{auto-sync-WNGG2GC2.js.map → auto-sync-NSHLUAQI.js.map} +0 -0
  271. /package/dist/{chunk-OO42R444.js.map → chunk-2MFH376S.js.map} +0 -0
  272. /package/dist/{chunk-NXH34IPL.js.map → chunk-353KGBKY.js.map} +0 -0
  273. /package/dist/{chunk-DZD3WGCD.js.map → chunk-3JVLGJCY.js.map} +0 -0
  274. /package/dist/{chunk-NOPN47AL.js.map → chunk-47DEYNMR.js.map} +0 -0
  275. /package/dist/{chunk-2OO6TPQG.js.map → chunk-4UDQUPT5.js.map} +0 -0
  276. /package/dist/{chunk-IE57QQSZ.js.map → chunk-565C6ZFO.js.map} +0 -0
  277. /package/dist/{chunk-C6XEXTSJ.js.map → chunk-5ABN4WVL.js.map} +0 -0
  278. /package/dist/{chunk-W7OU4I3Y.js.map → chunk-666OOKB7.js.map} +0 -0
  279. /package/dist/{chunk-EYIEWJNI.js.map → chunk-6KH5NLQS.js.map} +0 -0
  280. /package/dist/{chunk-R55WAWS3.js.map → chunk-7DUFJAOE.js.map} +0 -0
  281. /package/dist/{chunk-EMDLM3LW.js.map → chunk-7IRZK6MM.js.map} +0 -0
  282. /package/dist/{chunk-TVVEYCNW.js.map → chunk-7K5Q6COX.js.map} +0 -0
  283. /package/dist/{chunk-RFWEDCRC.js.map → chunk-7VJXIDOC.js.map} +0 -0
  284. /package/dist/{chunk-IVKIODHO.js.map → chunk-A7XEPMQ6.js.map} +0 -0
  285. /package/dist/{chunk-K6MV3TRQ.js.map → chunk-ADXCCZL2.js.map} +0 -0
  286. /package/dist/{chunk-GC65K6DI.js.map → chunk-AOCP6JA7.js.map} +0 -0
  287. /package/dist/{chunk-JBPKEARU.js.map → chunk-AU7Q3LSC.js.map} +0 -0
  288. /package/dist/{chunk-ND6IQGSZ.js.map → chunk-BA6WOZOT.js.map} +0 -0
  289. /package/dist/{chunk-JI7U6AS3.js.map → chunk-C6FQJ52H.js.map} +0 -0
  290. /package/dist/{chunk-IN673LEP.js.map → chunk-CARRTDKC.js.map} +0 -0
  291. /package/dist/{chunk-HLTAZTN7.js.map → chunk-CBCNKKZD.js.map} +0 -0
  292. /package/dist/{chunk-DXFG2VGN.js.map → chunk-CGC5UQCF.js.map} +0 -0
  293. /package/dist/{chunk-YSSAGB2O.js.map → chunk-CLLPJ6QT.js.map} +0 -0
  294. /package/dist/{chunk-U6S754L6.js.map → chunk-D5LORF7A.js.map} +0 -0
  295. /package/dist/{chunk-C24UZSFW.js.map → chunk-DBQWVT2H.js.map} +0 -0
  296. /package/dist/{chunk-XSTNGNJP.js.map → chunk-DCJ3YFIC.js.map} +0 -0
  297. /package/dist/{chunk-2YDWI2LO.js.map → chunk-DITMGZOL.js.map} +0 -0
  298. /package/dist/{chunk-LVE64P5Y.js.map → chunk-E2ZHGBAK.js.map} +0 -0
  299. /package/dist/{chunk-WW3MR6T3.js.map → chunk-ENMTJRXA.js.map} +0 -0
  300. /package/dist/{chunk-COUYFFID.js.map → chunk-EYMOJ3J6.js.map} +0 -0
  301. /package/dist/{chunk-INBOGQ3E.js.map → chunk-EZZV7OQL.js.map} +0 -0
  302. /package/dist/{chunk-MT47LH5L.js.map → chunk-FBMYGNOC.js.map} +0 -0
  303. /package/dist/{chunk-N3SS45OW.js.map → chunk-FCSZ4K2X.js.map} +0 -0
  304. /package/dist/{chunk-PKS56ZRR.js.map → chunk-FGGYSN4P.js.map} +0 -0
  305. /package/dist/{chunk-ZMNT26KV.js.map → chunk-FHQSPTPZ.js.map} +0 -0
  306. /package/dist/{chunk-6GUG4YNM.js.map → chunk-GGRRF4PZ.js.map} +0 -0
  307. /package/dist/{chunk-YIHKAUS4.js.map → chunk-GTWHVXPA.js.map} +0 -0
  308. /package/dist/{chunk-UY2RORVF.js.map → chunk-GVG3JYBI.js.map} +0 -0
  309. /package/dist/{chunk-I3OQBP23.js.map → chunk-GY5WZBA6.js.map} +0 -0
  310. /package/dist/{chunk-3GCK6ONU.js.map → chunk-HK32G473.js.map} +0 -0
  311. /package/dist/{chunk-OVAJKCN3.js.map → chunk-HY55QQD7.js.map} +0 -0
  312. /package/dist/{chunk-YJETZFLJ.js.map → chunk-I27RSQRR.js.map} +0 -0
  313. /package/dist/{chunk-QIEUU4UK.js.map → chunk-I55KAVET.js.map} +0 -0
  314. /package/dist/{chunk-UY7VPC6Q.js.map → chunk-IA2YSHTX.js.map} +0 -0
  315. /package/dist/{chunk-UEEN7GXR.js.map → chunk-IY2FVXM6.js.map} +0 -0
  316. /package/dist/{chunk-NVOFMARR.js.map → chunk-JDDXXZWW.js.map} +0 -0
  317. /package/dist/{chunk-2AMEUKCG.js.map → chunk-JEIXTYVG.js.map} +0 -0
  318. /package/dist/{chunk-ODW5GDFE.js.map → chunk-JT3EB7ZL.js.map} +0 -0
  319. /package/dist/{chunk-XR67IAXP.js.map → chunk-KLMESRPV.js.map} +0 -0
  320. /package/dist/{chunk-7LCGFUMB.js.map → chunk-KQAFEZQX.js.map} +0 -0
  321. /package/dist/{chunk-3K7V3HE6.js.map → chunk-KXRX7YC2.js.map} +0 -0
  322. /package/dist/{chunk-7RZJWZ46.js.map → chunk-LEPOP46W.js.map} +0 -0
  323. /package/dist/{chunk-54WHLA65.js.map → chunk-LRICZIGN.js.map} +0 -0
  324. /package/dist/{chunk-EWCNCQOU.js.map → chunk-LWA7MDVO.js.map} +0 -0
  325. /package/dist/{chunk-EZKSOM5K.js.map → chunk-MFJBANPX.js.map} +0 -0
  326. /package/dist/{chunk-OB3XMWX5.js.map → chunk-MKWKYHXJ.js.map} +0 -0
  327. /package/dist/{chunk-HMKPFW7R.js.map → chunk-MPAJFFP3.js.map} +0 -0
  328. /package/dist/{chunk-4P43SE4H.js.map → chunk-MPYD657E.js.map} +0 -0
  329. /package/dist/{chunk-NLDVVWCL.js.map → chunk-NDNTNE3S.js.map} +0 -0
  330. /package/dist/{chunk-5ISVONB7.js.map → chunk-NWWXSJX5.js.map} +0 -0
  331. /package/dist/{chunk-QBC33MPY.js.map → chunk-NZXEK3UF.js.map} +0 -0
  332. /package/dist/{chunk-MYB6DWE5.js.map → chunk-OGELWNYC.js.map} +0 -0
  333. /package/dist/{chunk-IES4QHLM.js.map → chunk-OXNU333D.js.map} +0 -0
  334. /package/dist/{chunk-MSSJSC2V.js.map → chunk-PEOTOFH5.js.map} +0 -0
  335. /package/dist/{chunk-OYHGTHVX.js.map → chunk-PHNAB54Q.js.map} +0 -0
  336. /package/dist/{chunk-R5T5FB2R.js.map → chunk-PLBW64UM.js.map} +0 -0
  337. /package/dist/{chunk-BD7JTBYP.js.map → chunk-PSPABFN2.js.map} +0 -0
  338. /package/dist/{chunk-WOOTZ6DH.js.map → chunk-PV36INNL.js.map} +0 -0
  339. /package/dist/{chunk-QW3FMKT2.js.map → chunk-QDY6KYTN.js.map} +0 -0
  340. /package/dist/{chunk-6TZWGQTT.js.map → chunk-RAVRDTP7.js.map} +0 -0
  341. /package/dist/{chunk-BIVJCVT2.js.map → chunk-RBGREYVJ.js.map} +0 -0
  342. /package/dist/{chunk-GGRD3JEH.js.map → chunk-ROGRI25A.js.map} +0 -0
  343. /package/dist/{chunk-HTPQJ32S.js.map → chunk-ROKKIMON.js.map} +0 -0
  344. /package/dist/{chunk-5KND6CSX.js.map → chunk-RSVEP77Y.js.map} +0 -0
  345. /package/dist/{chunk-SV4Z2S67.js.map → chunk-S5G2LAL7.js.map} +0 -0
  346. /package/dist/{chunk-5PTRLTK2.js.map → chunk-S65WXHNK.js.map} +0 -0
  347. /package/dist/{chunk-3FEH4C4V.js.map → chunk-SB6PSOP7.js.map} +0 -0
  348. /package/dist/{chunk-S2DU3UBN.js.map → chunk-SH2ZWEWB.js.map} +0 -0
  349. /package/dist/{chunk-Z5XE7AMC.js.map → chunk-SMOFBBPU.js.map} +0 -0
  350. /package/dist/{chunk-GRCREL6Q.js.map → chunk-SQJ3SDIW.js.map} +0 -0
  351. /package/dist/{chunk-YFDJVB2K.js.map → chunk-T7CJQVRZ.js.map} +0 -0
  352. /package/dist/{chunk-EIJR4PZL.js.map → chunk-TEYN7ZYF.js.map} +0 -0
  353. /package/dist/{chunk-JALOAKSZ.js.map → chunk-TLPZ6MKZ.js.map} +0 -0
  354. /package/dist/{chunk-BHHONFSK.js.map → chunk-U34EHBPL.js.map} +0 -0
  355. /package/dist/{chunk-DFEODULB.js.map → chunk-V2HHAAPI.js.map} +0 -0
  356. /package/dist/{chunk-KEF46KL2.js.map → chunk-V6EGNVUT.js.map} +0 -0
  357. /package/dist/{chunk-ESNFSSO4.js.map → chunk-VGXM5B4H.js.map} +0 -0
  358. /package/dist/{chunk-MJUCDM3C.js.map → chunk-VLXBE57O.js.map} +0 -0
  359. /package/dist/{chunk-YGTSOVCR.js.map → chunk-VP67GZ7T.js.map} +0 -0
  360. /package/dist/{chunk-ALBYEXFX.js.map → chunk-VZWXFXLX.js.map} +0 -0
  361. /package/dist/{chunk-NC7RM2XS.js.map → chunk-W64HKJJM.js.map} +0 -0
  362. /package/dist/{chunk-OMLGLMWL.js.map → chunk-WHBVXTUI.js.map} +0 -0
  363. /package/dist/{chunk-4KMGFWQY.js.map → chunk-WJBZMNNS.js.map} +0 -0
  364. /package/dist/{chunk-WFZBRS6N.js.map → chunk-X74UAWSI.js.map} +0 -0
  365. /package/dist/{chunk-EGALNSZ4.js.map → chunk-XU6OEECT.js.map} +0 -0
  366. /package/dist/{chunk-4FIH6MPS.js.map → chunk-YHLWPYHT.js.map} +0 -0
  367. /package/dist/{chunk-PAZY2ZKP.js.map → chunk-YQAXP5AC.js.map} +0 -0
  368. /package/dist/{chunk-ZNR5SVUI.js.map → chunk-YUMDFDUA.js.map} +0 -0
  369. /package/dist/{chunk-7HYPN2GC.js.map → chunk-ZG74PWRW.js.map} +0 -0
  370. /package/dist/{chunk-TDYAIXHK.js.map → chunk-ZHXSOMYH.js.map} +0 -0
  371. /package/dist/{chunk-TNSCIPBQ.js.map → chunk-ZNJSBIP4.js.map} +0 -0
  372. /package/dist/{state-store-Z3EN56O5.js.map → config-discovery.js.map} +0 -0
@@ -9,6 +9,7 @@ var NOTABLE_EXCERPT_CHARS = 280;
9
9
  var DATE_PATTERN = /^\d{4}-\d{2}-\d{2}$/;
10
10
  function isValidActivityDate(date) {
11
11
  if (typeof date !== "string" || !DATE_PATTERN.test(date)) return false;
12
+ if (date.startsWith("0000-")) return false;
12
13
  const parsed = /* @__PURE__ */ new Date(`${date}T00:00:00Z`);
13
14
  return Number.isFinite(parsed.getTime()) && parsed.toISOString().slice(0, 10) === date;
14
15
  }
@@ -35,44 +36,53 @@ function assertValidTimezone(timezone) {
35
36
  }
36
37
  }
37
38
  function zonedDayStartIso(date, timezone) {
39
+ const wall = new Intl.DateTimeFormat("en-CA", {
40
+ timeZone: timezone,
41
+ year: "numeric",
42
+ month: "2-digit",
43
+ day: "2-digit",
44
+ hour: "2-digit",
45
+ minute: "2-digit",
46
+ second: "2-digit",
47
+ hourCycle: "h23"
48
+ });
49
+ const localStamp = (ms) => {
50
+ const parts = wall.formatToParts(new Date(ms));
51
+ const get = (type) => parts.find((part) => part.type === type)?.value ?? "";
52
+ const year = get("year").padStart(4, "0");
53
+ return `${year}-${get("month")}-${get("day")}T${get("hour")}:${get("minute")}:${get("second")}`;
54
+ };
55
+ const localDate = (ms) => localStamp(ms).slice(0, 10);
56
+ const offsetMs = (ms) => {
57
+ const wallAsUtc = Date.parse(`${localStamp(ms)}Z`);
58
+ return Number.isFinite(wallAsUtc) ? wallAsUtc - ms : null;
59
+ };
60
+ const midnightUtc = Date.parse(`${date}T00:00:00Z`);
38
61
  const prevDate = shiftIsoDate(date, -1);
39
- const probeOffsets = new Set(
40
- [
41
- `${prevDate}T12:00:00Z`,
42
- `${prevDate}T23:00:00Z`,
43
- `${date}T00:00:00Z`,
44
- `${date}T12:00:00Z`,
45
- `${date}T23:00:00Z`
46
- ].map((iso) => timezoneOffsetIso(new Date(iso), timezone))
47
- );
48
62
  let best = null;
49
- for (const offset of probeOffsets) {
50
- const candidate = Date.parse(`${date}T00:00:00${offset}`);
63
+ for (const iso of [
64
+ `${prevDate}T12:00:00Z`,
65
+ `${prevDate}T23:00:00Z`,
66
+ `${date}T00:00:00Z`,
67
+ `${date}T12:00:00Z`,
68
+ `${date}T23:00:00Z`
69
+ ]) {
70
+ const offset = offsetMs(Date.parse(iso));
71
+ if (offset === null) continue;
72
+ const candidate = midnightUtc - offset;
51
73
  if (!Number.isFinite(candidate)) continue;
52
- if (timezoneOffsetIso(new Date(candidate), timezone) !== offset) continue;
74
+ if (localStamp(candidate) !== `${date}T00:00:00`) continue;
53
75
  if (best === null || candidate < best) best = candidate;
54
76
  }
55
77
  if (best === null) {
56
- for (let minute = 1; minute <= 180 && best === null; minute++) {
57
- const hh = String(Math.floor(minute / 60)).padStart(2, "0");
58
- const mm = String(minute % 60).padStart(2, "0");
59
- for (const offset of probeOffsets) {
60
- const candidate = Date.parse(`${date}T${hh}:${mm}:00${offset}`);
61
- if (!Number.isFinite(candidate)) continue;
62
- if (timezoneOffsetIso(new Date(candidate), timezone) !== offset) continue;
63
- if (best === null || candidate < best) best = candidate;
64
- }
65
- }
66
- }
67
- if (best === null) {
68
- let lo = Date.parse(`${date}T00:00:00Z`) - 24 * 36e5;
78
+ let lo = midnightUtc - 24 * 36e5;
69
79
  let hi = lo + 48 * 36e5;
70
- while (hi - lo > 6e4) {
71
- const mid = lo + Math.floor((hi - lo) / 2 / 6e4) * 6e4;
72
- if (activityDateInTimezone(new Date(mid), timezone) >= date) hi = mid;
73
- else lo = mid;
80
+ while (lo < hi) {
81
+ const mid = lo + Math.floor((hi - lo) / 2);
82
+ if (localDate(mid) >= date) hi = mid;
83
+ else lo = mid + 1;
74
84
  }
75
- best = hi;
85
+ best = lo;
76
86
  }
77
87
  if (best === null || !Number.isFinite(best)) {
78
88
  throw new RangeError(`activity: could not resolve a local day start for "${date}" in "${timezone}".`);
@@ -354,4 +364,4 @@ export {
354
364
  serializeActivityDigest,
355
365
  parseActivityDigest
356
366
  };
357
- //# sourceMappingURL=chunk-XPFC6D45.js.map
367
+ //# sourceMappingURL=chunk-S7DPKM5W.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/activity/digest.ts"],"sourcesContent":["/**\n * Deterministic screen-activity day-digest renderer (issue #1899).\n *\n * Renders a day's snapshots into markdown with YAML frontmatter, placed at\n * `<memoryDir>/activity/<date>.md` — outside the memory scan roots but inside\n * the QMD collection root (searchable, never auto-recalled). No LLM: the body\n * is a pure, byte-identical function of its inputs so an unchanged day skips\n * rewrite by contentHash. Day bucketing is DST-aware and half-open\n * [start, end) (AGENTS.md §23); sort keys are total with stable tiebreakers\n * (§12).\n */\n\nimport { createHash } from \"node:crypto\";\nimport path from \"node:path\";\n\nimport type { ActivityDayDigest, ActivityDayMeta, ActivitySnapshot } from \"./types.js\";\n\nexport const ACTIVITY_DIGEST_FORMAT_VERSION = 1;\nexport const ACTIVITY_DIR_NAME = \"activity\";\n\n/** Attribute at most this much dwell to a single snapshot (idle gaps capped). */\nconst MAX_DWELL_MS = 15 * 60_000;\n/** Notable-excerpt caps. */\nconst NOTABLE_MAX_WINDOWS = 10;\nconst NOTABLE_EXCERPT_CHARS = 280;\n\nconst DATE_PATTERN = /^\\d{4}-\\d{2}-\\d{2}$/;\n\nexport function isValidActivityDate(date: string): boolean {\n if (typeof date !== \"string\" || !DATE_PATTERN.test(date)) return false;\n // Year 0000 passes the round-trip below but Intl formats it as astronomical\n // year 1 BC, so zonedDayStartIso's padded year yields 0001 and day windows\n // land on the wrong boundary. Reject it here, at validation.\n if (date.startsWith(\"0000-\")) return false;\n // Reject impossible calendar days (e.g. 2026-02-30, 2026-13-01): the UTC\n // round-trip must reproduce the same Y-M-D, else Date normalized an overflow.\n const parsed = new Date(`${date}T00:00:00Z`);\n return Number.isFinite(parsed.getTime()) && parsed.toISOString().slice(0, 10) === date;\n}\n\nexport function activityDigestPath(memoryDir: string, date: string): string {\n if (!isValidActivityDate(date)) {\n // Never interpolate an unvalidated date into a filesystem path (a `../`\n // would escape <memoryDir>/activity/). Reject loudly.\n throw new RangeError(`Invalid activity date \"${date}\"; expected YYYY-MM-DD.`);\n }\n return path.join(memoryDir, ACTIVITY_DIR_NAME, `${date}.md`);\n}\n\n// ── DST-aware local-day window ──────────────────────────────────────────────\n\nexport function timezoneOffsetIso(instant: Date, timezone: string): string {\n const parts = new Intl.DateTimeFormat(\"en-US\", {\n timeZone: timezone,\n timeZoneName: \"longOffset\",\n }).formatToParts(instant);\n const name = parts.find((part) => part.type === \"timeZoneName\")?.value ?? \"GMT\";\n const match = name.match(/GMT([+-]\\d{2}:\\d{2})?/);\n return match?.[1] ?? \"+00:00\";\n}\n\nexport function assertValidTimezone(timezone: string): void {\n try {\n new Intl.DateTimeFormat(\"en-US\", { timeZone: timezone });\n } catch {\n throw new RangeError(`Invalid IANA timezone \"${timezone}\".`);\n }\n}\n\nfunction zonedDayStartIso(date: string, timezone: string): string {\n // The first UTC instant whose local wall-clock is this date at 00:00. Probe\n // several instants across the day to collect every offset in play, keep an\n // offset only if constructing local midnight with it lands on an exact\n // local midnight, then take the EARLIEST such instant — the FIRST 00:00\n // across a rollback that repeats local midnight (America/Cancun dropped\n // LMT −05:47:04 for −06:00 exactly at local midnight 1922-01-01, so 00:00\n // occurred twice; the day must start at the first one).\n // Probe the previous UTC day too: for zones east of UTC the requested date's\n // UTC instants all fall after local midnight, so the pre-transition offset\n // valid at the real local 00:00 is only observable on the prior UTC day.\n const wall = new Intl.DateTimeFormat(\"en-CA\", {\n timeZone: timezone,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n hourCycle: \"h23\",\n });\n const localStamp = (ms: number): string => {\n const parts = wall.formatToParts(new Date(ms));\n const get = (type: string): string => parts.find((part) => part.type === type)?.value ?? \"\";\n // Intl formats pre-1000 years unpadded (\"999\" for 0999). Pad back to the\n // four-digit form the equality and ordering comparisons below assume,\n // or \"998-12-31\" compares greater than \"0999-01-01\".\n const year = get(\"year\").padStart(4, \"0\");\n return `${year}-${get(\"month\")}-${get(\"day\")}T${get(\"hour\")}:${get(\"minute\")}:${get(\"second\")}`;\n };\n const localDate = (ms: number): string => localStamp(ms).slice(0, 10);\n // Derive each probe's offset at FULL precision (seconds included) from the\n // rendered wall clock, never from a longOffset string: those strings\n // truncate to whole minutes while historical LMT offsets carry seconds\n // (America/Cancun was −05:47:04; Asia/Manila −15:56:08). A candidate built\n // from a truncated offset lands off the true midnight instant, the\n // exact-stamp check below rejects it, and a midnight repeated by a\n // rollback silently resolves to the later occurrence under the new\n // whole-minute offset — misattributing the gap between the two.\n const offsetMs = (ms: number): number | null => {\n const wallAsUtc = Date.parse(`${localStamp(ms)}Z`);\n return Number.isFinite(wallAsUtc) ? wallAsUtc - ms : null;\n };\n const midnightUtc = Date.parse(`${date}T00:00:00Z`);\n const prevDate = shiftIsoDate(date, -1);\n let best: number | null = null;\n for (const iso of [\n `${prevDate}T12:00:00Z`,\n `${prevDate}T23:00:00Z`,\n `${date}T00:00:00Z`,\n `${date}T12:00:00Z`,\n `${date}T23:00:00Z`,\n ]) {\n const offset = offsetMs(Date.parse(iso));\n if (offset === null) continue;\n const candidate = midnightUtc - offset;\n if (!Number.isFinite(candidate)) continue;\n // Accept only an EXACT local midnight. This rejects a wall-clock midnight\n // that never occurred (spring-forward at 00:00, Egypt 2026) and one whose\n // instant the transition already carried past (Asia/Manila's LMT midnight\n // of 1844-12-31 lands on the post-transition clock as 1845-01-01).\n if (localStamp(candidate) !== `${date}T00:00:00`) continue;\n if (best === null || candidate < best) best = candidate;\n }\n if (best === null) {\n // No exact local midnight: either local midnight was skipped by a\n // spring-forward (00:00 → 01:00) or the ENTIRE civil date never existed\n // (Pacific/Apia 2011-12-30; Asia/Manila 1844-12-31). Extending the\n // never-backdate convention, resolve the day start to the first instant\n // whose local calendar date reaches `date`. Local date is monotone\n // non-decreasing in the UTC instant (a fall-back never crosses local\n // midnight backwards), so binary-search a 48h bracket down to the\n // millisecond — transitions can carry seconds (Manila's landed at\n // :56:08, not on a minute boundary), so minute granularity mis-resolves\n // by up to 59s and hands the skipped date a window of its own. The\n // bracket is safe: `<date>T00:00Z − 24h` is always locally before\n // `date`, and `<date>T00:00Z + 24h` is always locally on/after it.\n let lo = midnightUtc - 24 * 3_600_000;\n let hi = lo + 48 * 3_600_000;\n while (lo < hi) {\n const mid = lo + Math.floor((hi - lo) / 2);\n if (localDate(mid) >= date) hi = mid;\n else lo = mid + 1;\n }\n best = lo;\n }\n if (best === null || !Number.isFinite(best)) {\n throw new RangeError(`activity: could not resolve a local day start for \"${date}\" in \"${timezone}\".`);\n }\n return new Date(best).toISOString();\n}\n\nfunction shiftIsoDate(date: string, days: number): string {\n const parsed = new Date(`${date}T00:00:00Z`);\n parsed.setUTCDate(parsed.getUTCDate() + days);\n return parsed.toISOString().slice(0, 10);\n}\n\nfunction nextIsoDate(date: string): string {\n return shiftIsoDate(date, 1);\n}\n\n/**\n * Half-open [start, end) UTC ISO bounds of a local day. A civil date the\n * zone skipped entirely owns no interval: the window is zero-width\n * `[transition, transition)`.\n */\nexport function activityDayWindow(date: string, timezone: string): { startUtc: string; endUtc: string } {\n if (!isValidActivityDate(date)) {\n throw new RangeError(`Invalid activity date \"${date}\"; expected a real YYYY-MM-DD day.`);\n }\n assertValidTimezone(timezone);\n const startUtc = zonedDayStartIso(date, timezone);\n const endUtc = zonedDayStartIso(nextIsoDate(date), timezone);\n // Skipped-date semantics (Pacific/Apia 2011-12-30 class): the skipped\n // date's start and the following date's start both resolve to the\n // transition instant, so the window is naturally zero-width. Keep it\n // that way: a date that never occurred contributes to no daily total\n // (daysOverlappingWeek drops zero-width days) and a connector sync for\n // it fetches nothing. Pushing the end forward to stay non-degenerate\n // would alias the next real day's interval and double-attribute every\n // card in it to two daily totals.\n return { startUtc, endUtc };\n}\n\n/**\n * The local calendar day (YYYY-MM-DD) an instant falls in for an IANA\n * timezone — the day key `activityDayWindow` buckets on. Callers that need\n * \"today\" for activity artifacts MUST use this rather than the host-local\n * date, which drifts a day near either timezone's midnight.\n */\nexport function activityDateInTimezone(instant: Date, timezone: string): string {\n try {\n const parts = new Intl.DateTimeFormat(\"en-CA\", {\n timeZone: timezone,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n }).formatToParts(instant);\n const get = (type: string): string => parts.find((part) => part.type === type)?.value ?? \"\";\n return `${get(\"year\")}-${get(\"month\")}-${get(\"day\")}`;\n } catch {\n return instant.toISOString().slice(0, 10);\n }\n}\n\n// ── Rendering ───────────────────────────────────────────────────────────────\n\nfunction sortedByTime(snapshots: ActivitySnapshot[]): ActivitySnapshot[] {\n return [...snapshots].sort((a, b) => {\n // Compare by parsed instant, not raw string, so mixed valid ISO forms\n // (Z vs offset, varying precision) still order chronologically.\n const at = Date.parse(a.capturedAtUtc);\n const bt = Date.parse(b.capturedAtUtc);\n if (at !== bt && Number.isFinite(at) && Number.isFinite(bt)) return at < bt ? -1 : 1;\n const aid = a.id ?? 0;\n const bid = b.id ?? 0;\n if (aid < bid) return -1;\n if (aid > bid) return 1;\n // Unsaved snapshots (pre-store) both default to id 0; fall back to the\n // content hash (their dedup identity), then app/window, for a total order.\n if (a.contentHash !== b.contentHash) return a.contentHash < b.contentHash ? -1 : 1;\n if (a.app !== b.app) return a.app < b.app ? -1 : 1;\n if (a.windowTitle !== b.windowTitle) return a.windowTitle < b.windowTitle ? -1 : 1;\n return 0;\n });\n}\n\n/**\n * Per-snapshot dwell (gap to that machine's next snapshot, capped), scoped per\n * capture machine so an interleaved snapshot from another machine can't steal\n * or truncate a snapshot's dwell (multi-machine days).\n */\nfunction computeDwell(snapshots: ActivitySnapshot[]): Map<ActivitySnapshot, number> {\n const byMachine = new Map<string, ActivitySnapshot[]>();\n for (const snapshot of snapshots) {\n const list = byMachine.get(snapshot.machine);\n if (list === undefined) byMachine.set(snapshot.machine, [snapshot]);\n else list.push(snapshot);\n }\n const dwell = new Map<ActivitySnapshot, number>();\n for (const list of byMachine.values()) {\n const ordered = sortedByTime(list);\n for (let index = 0; index < ordered.length; index++) {\n const current = ordered[index];\n if (current === undefined) continue;\n const next = ordered[index + 1];\n let value = 0;\n if (next !== undefined) {\n const delta = Date.parse(next.capturedAtUtc) - Date.parse(current.capturedAtUtc);\n if (Number.isFinite(delta) && delta > 0) value = Math.min(delta, MAX_DWELL_MS);\n }\n dwell.set(current, value);\n }\n }\n return dwell;\n}\n\nfunction formatDurationMinutes(ms: number): string {\n return `${Math.round(ms / 60_000)}m`;\n}\n\nfunction clockHhMm(iso: string, timezone: string): string {\n const ms = Date.parse(iso);\n if (!Number.isFinite(ms)) return \"??:??\";\n const parts = new Intl.DateTimeFormat(\"en-GB\", {\n timeZone: timezone,\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: false,\n }).formatToParts(new Date(ms));\n const hour = parts.find((p) => p.type === \"hour\")?.value ?? \"00\";\n const minute = parts.find((p) => p.type === \"minute\")?.value ?? \"00\";\n return `${hour}:${minute}`;\n}\n\nfunction collapseWhitespace(text: string): string {\n return text.replace(/\\s+/g, \" \").trim();\n}\n\nfunction perAppSection(ordered: ActivitySnapshot[], dwell: Map<ActivitySnapshot, number>): string {\n const totals = new Map<string, number>();\n for (const snapshot of ordered) {\n totals.set(snapshot.app, (totals.get(snapshot.app) ?? 0) + (dwell.get(snapshot) ?? 0));\n }\n const rows = [...totals.entries()].sort((a, b) => {\n if (b[1] !== a[1]) return b[1] - a[1];\n if (a[0] < b[0]) return -1;\n if (a[0] > b[0]) return 1;\n return 0;\n });\n const lines = [\"## Per-app time\", \"\"];\n if (rows.length === 0) {\n lines.push(\"_No activity recorded._\");\n } else {\n for (const [app, ms] of rows) {\n lines.push(`- ${app}: ${formatDurationMinutes(ms)}`);\n }\n }\n return lines.join(\"\\n\");\n}\n\ninterface TimelineSpan {\n startIso: string;\n machine: string;\n app: string;\n windowTitle: string;\n browserUrl?: string;\n}\n\nfunction timelineSpans(ordered: ActivitySnapshot[]): TimelineSpan[] {\n const spans: TimelineSpan[] = [];\n for (const snapshot of ordered) {\n const last = spans[spans.length - 1];\n if (\n last !== undefined &&\n last.machine === snapshot.machine &&\n last.app === snapshot.app &&\n last.windowTitle === snapshot.windowTitle &&\n last.browserUrl === snapshot.browserUrl\n ) {\n continue;\n }\n spans.push({\n startIso: snapshot.capturedAtUtc,\n machine: snapshot.machine,\n app: snapshot.app,\n windowTitle: snapshot.windowTitle,\n ...(snapshot.browserUrl !== undefined ? { browserUrl: snapshot.browserUrl } : {}),\n });\n }\n return spans;\n}\n\nfunction timelineSection(ordered: ActivitySnapshot[], timezone: string): string {\n const lines = [\"## Timeline\", \"\"];\n const spans = timelineSpans(ordered);\n if (spans.length === 0) {\n lines.push(\"_No activity recorded._\");\n return lines.join(\"\\n\");\n }\n for (const span of spans) {\n const clock = clockHhMm(span.startIso, timezone);\n const window = collapseWhitespace(span.windowTitle);\n const url = span.browserUrl !== undefined ? ` (${collapseWhitespace(span.browserUrl)})` : \"\";\n lines.push(`- [${clock}] ${span.app}${window.length > 0 ? ` — ${window}` : \"\"}${url}`);\n }\n return lines.join(\"\\n\");\n}\n\nfunction notableSection(ordered: ActivitySnapshot[], dwell: Map<ActivitySnapshot, number>): string {\n const withDwell = ordered.map((snapshot) => ({ snapshot, dwell: dwell.get(snapshot) ?? 0 }));\n const ranked = withDwell\n .filter((entry) => collapseWhitespace(entry.snapshot.text).length > 0)\n .sort((a, b) => {\n if (b.dwell !== a.dwell) return b.dwell - a.dwell;\n const at = Date.parse(a.snapshot.capturedAtUtc);\n const bt = Date.parse(b.snapshot.capturedAtUtc);\n if (at !== bt && Number.isFinite(at) && Number.isFinite(bt)) return at < bt ? -1 : 1;\n const idDelta = (a.snapshot.id ?? 0) - (b.snapshot.id ?? 0);\n if (idDelta !== 0) return idDelta;\n if (a.snapshot.contentHash !== b.snapshot.contentHash) {\n return a.snapshot.contentHash < b.snapshot.contentHash ? -1 : 1;\n }\n return 0;\n })\n .slice(0, NOTABLE_MAX_WINDOWS);\n const lines = [\"## Notable\", \"\"];\n if (ranked.length === 0) {\n lines.push(\"_No notable text captured._\");\n return lines.join(\"\\n\");\n }\n for (const { snapshot } of ranked) {\n const excerpt = collapseWhitespace(snapshot.text).slice(0, NOTABLE_EXCERPT_CHARS);\n lines.push(`- **${snapshot.app}** — ${excerpt}`);\n }\n return lines.join(\"\\n\");\n}\n\nexport function composeActivityDigestBody(\n date: string,\n timezone: string,\n snapshots: ActivitySnapshot[],\n): string {\n assertValidTimezone(timezone);\n const ordered = sortedByTime(snapshots);\n const dwell = computeDwell(ordered);\n return [\n `# Activity — ${date}`,\n \"\",\n perAppSection(ordered, dwell),\n \"\",\n timelineSection(ordered, timezone),\n \"\",\n notableSection(ordered, dwell),\n \"\",\n ].join(\"\\n\");\n}\n\nexport function hashActivityBody(body: string): string {\n return createHash(\"sha256\").update(body, \"utf8\").digest(\"hex\");\n}\n\nexport function composeActivityDigestMeta(\n date: string,\n machines: string[],\n snapshots: ActivitySnapshot[],\n body: string,\n): ActivityDayMeta {\n const uniqueMachines = [...new Set(machines)].sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));\n return {\n kind: \"activity-digest\",\n date,\n machines: uniqueMachines,\n snapshotCount: snapshots.length,\n contentHash: hashActivityBody(body),\n formatVersion: ACTIVITY_DIGEST_FORMAT_VERSION,\n };\n}\n\nexport function serializeActivityDigest(meta: ActivityDayMeta, body: string): string {\n const frontmatter = [\n \"---\",\n `kind: ${meta.kind}`,\n `date: ${meta.date}`,\n `machines: ${JSON.stringify(meta.machines)}`,\n `snapshotCount: ${meta.snapshotCount}`,\n `contentHash: ${meta.contentHash}`,\n `formatVersion: ${meta.formatVersion}`,\n \"---\",\n \"\",\n ].join(\"\\n\");\n return `${frontmatter}${body}`;\n}\n\nexport function parseActivityDigest(raw: string): ActivityDayDigest | null {\n if (typeof raw !== \"string\" || !raw.startsWith(\"---\\n\")) return null;\n const end = raw.indexOf(\"\\n---\\n\", 4);\n if (end === -1) return null;\n const frontmatter = raw.slice(4, end);\n const body = raw.slice(end + 5).replace(/^\\n/, \"\");\n const fields = new Map<string, string>();\n for (const line of frontmatter.split(\"\\n\")) {\n const idx = line.indexOf(\":\");\n if (idx === -1) continue;\n fields.set(line.slice(0, idx).trim(), line.slice(idx + 1).trim());\n }\n const date = fields.get(\"date\");\n const contentHash = fields.get(\"contentHash\");\n if (date === undefined || !isValidActivityDate(date) || contentHash === undefined) return null;\n if (fields.get(\"kind\") !== \"activity-digest\") return null;\n const machines = parseMachinesList(fields.get(\"machines\") ?? \"[]\");\n const snapshotCount = parseNonNegativeInt(fields.get(\"snapshotCount\"));\n const formatVersion = parseNonNegativeInt(fields.get(\"formatVersion\"));\n if (snapshotCount === null || formatVersion === null) return null;\n return {\n meta: {\n kind: \"activity-digest\",\n date,\n machines,\n snapshotCount,\n contentHash,\n formatVersion,\n },\n body,\n };\n}\n\nfunction parseNonNegativeInt(value: string | undefined): number | null {\n if (value === undefined) return null;\n const trimmed = value.trim();\n if (!/^\\d+$/.test(trimmed)) return null;\n const parsed = Number(trimmed);\n return Number.isSafeInteger(parsed) ? parsed : null;\n}\n\nfunction parseMachinesList(raw: string): string[] {\n try {\n const parsed: unknown = JSON.parse(raw);\n if (Array.isArray(parsed)) {\n return parsed.filter((entry): entry is string => typeof entry === \"string\");\n }\n } catch {\n // Legacy unquoted inline form (`[a, b]`) — fall through to the split parse.\n }\n return raw\n .replace(/^\\[/, \"\")\n .replace(/\\]$/, \"\")\n .split(\",\")\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n}\n"],"mappings":"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","names":[]}
@@ -318,4 +318,4 @@ export {
318
318
  readProjectedHarmonicGraph,
319
319
  searchHarmonicRetrieval
320
320
  };
321
- //# sourceMappingURL=chunk-3FEH4C4V.js.map
321
+ //# sourceMappingURL=chunk-SB6PSOP7.js.map
@@ -28,15 +28,15 @@ import {
28
28
  import {
29
29
  observeRequestSchema,
30
30
  recallRequestSchema
31
- } from "./chunk-2AMEUKCG.js";
31
+ } from "./chunk-JEIXTYVG.js";
32
32
  import {
33
33
  defineOperation,
34
34
  parseNamespacePreflightWriteOp,
35
35
  resolveAuthorizedNamespaceWritablePreflight
36
- } from "./chunk-R55WAWS3.js";
36
+ } from "./chunk-7DUFJAOE.js";
37
37
  import {
38
38
  validateBriefingFormat
39
- } from "./chunk-NC7RM2XS.js";
39
+ } from "./chunk-W64HKJJM.js";
40
40
  import {
41
41
  enforceNamespaceAllowList,
42
42
  tokenCapabilityStore
@@ -46,10 +46,10 @@ import {
46
46
  } from "./chunk-MRV7VSQK.js";
47
47
  import {
48
48
  projectTagProjectId
49
- } from "./chunk-QBC33MPY.js";
49
+ } from "./chunk-NZXEK3UF.js";
50
50
  import {
51
51
  expandTildePath
52
- } from "./chunk-EYIEWJNI.js";
52
+ } from "./chunk-6KH5NLQS.js";
53
53
  import {
54
54
  EngramAccessForbiddenError,
55
55
  EngramAccessInputError
@@ -543,4 +543,4 @@ defineOperation({ name: "graph_events", description: "SSE graph events.", schema
543
543
  defineOperation({ name: "chat_message", description: "Chat message.", schema: strictSchema({ message: S.str, chatSessionId: S.str }), handler: async (_i, _ctx) => ({ result: { ok: true } }) });
544
544
  defineOperation({ name: "chat_events", description: "SSE chat events.", schema: strictSchema({}), handler: async (_i, _ctx) => ({ result: { stream: "sse" } }) });
545
545
  defineOperation({ name: "adapters_status", description: "Adapter registry metadata (issue #1850 round 5). Marker op: the HTTP transport builds the response from its own adapterRegistry, but the op still must be registered so it appears in listRegisteredOperations and enforceTokenOp can gate it for scoped tokens.", schema: strictSchema({}), handler: async (_i, _ctx) => ({ result: { ok: true } }) });
546
- //# sourceMappingURL=chunk-S2DU3UBN.js.map
546
+ //# sourceMappingURL=chunk-SH2ZWEWB.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getOperation
3
- } from "./chunk-R55WAWS3.js";
3
+ } from "./chunk-7DUFJAOE.js";
4
4
  import {
5
5
  EngramAccessInputError
6
6
  } from "./chunk-2Z24E5W2.js";
@@ -21,4 +21,4 @@ async function respondBriefingHttp(options) {
21
21
  export {
22
22
  respondBriefingHttp
23
23
  };
24
- //# sourceMappingURL=chunk-Z5XE7AMC.js.map
24
+ //# sourceMappingURL=chunk-SMOFBBPU.js.map
@@ -7,10 +7,10 @@ import {
7
7
  } from "./chunk-62OKGIJA.js";
8
8
  import {
9
9
  parseActivityConfig
10
- } from "./chunk-2OO6TPQG.js";
10
+ } from "./chunk-4UDQUPT5.js";
11
11
  import {
12
12
  parseLocationConfig
13
- } from "./chunk-GGRD3JEH.js";
13
+ } from "./chunk-ROGRI25A.js";
14
14
  import {
15
15
  PRE_ACTION_GATE_DEFAULT_TIMEOUT_MS,
16
16
  normalizeActionIntent,
@@ -34,11 +34,11 @@ import {
34
34
  } from "./chunk-H4WG3UQZ.js";
35
35
  import {
36
36
  parseExternalWikiRoots
37
- } from "./chunk-NLDVVWCL.js";
37
+ } from "./chunk-NDNTNE3S.js";
38
38
  import {
39
39
  resolveEmitLegacyTools,
40
40
  resolveNamespaceCatalogEnabled
41
- } from "./chunk-OO42R444.js";
41
+ } from "./chunk-2MFH376S.js";
42
42
  import {
43
43
  parseDependencyPropagationConfig
44
44
  } from "./chunk-VUDMT5CP.js";
@@ -49,9 +49,6 @@ import {
49
49
  parseContradictionLocalizationConfig,
50
50
  parseContradictionScanConfig
51
51
  } from "./chunk-FC67T4E6.js";
52
- import {
53
- parseSecurityConfig
54
- } from "./chunk-JI7U6AS3.js";
55
52
  import {
56
53
  parseQmdChunkStrategy,
57
54
  parseQmdDaemonTimeoutMs,
@@ -60,6 +57,9 @@ import {
60
57
  parseQmdSubprocessStrategy,
61
58
  parseQmdSupportedVersion
62
59
  } from "./chunk-PIG4WJFQ.js";
60
+ import {
61
+ parseSecurityConfig
62
+ } from "./chunk-C6FQJ52H.js";
63
63
  import {
64
64
  parseBoundedJsonlStateConfig
65
65
  } from "./chunk-KFZY2OFH.js";
@@ -86,7 +86,7 @@ import {
86
86
  } from "./chunk-236PXYG7.js";
87
87
  import {
88
88
  parseProvenanceConfig
89
- } from "./chunk-NXH34IPL.js";
89
+ } from "./chunk-353KGBKY.js";
90
90
  import {
91
91
  normalizeEntitySchemas
92
92
  } from "./chunk-ZIKENA2C.js";
@@ -110,11 +110,11 @@ import {
110
110
  } from "./chunk-WQZZDN5M.js";
111
111
  import {
112
112
  expandTildePath
113
- } from "./chunk-EYIEWJNI.js";
113
+ } from "./chunk-6KH5NLQS.js";
114
114
  import {
115
115
  readEnvVar,
116
116
  resolveHomeDir
117
- } from "./chunk-JUC24CTX.js";
117
+ } from "./chunk-P2QRMMVQ.js";
118
118
  import {
119
119
  log
120
120
  } from "./chunk-3WCASNQZ.js";
@@ -4792,4 +4792,4 @@ export {
4792
4792
  VALID_MEMORY_CATEGORIES,
4793
4793
  parseConfig
4794
4794
  };
4795
- //# sourceMappingURL=chunk-GRCREL6Q.js.map
4795
+ //# sourceMappingURL=chunk-SQJ3SDIW.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SupportPassportError,
3
3
  getOperation
4
- } from "./chunk-R55WAWS3.js";
4
+ } from "./chunk-7DUFJAOE.js";
5
5
  import {
6
6
  abortError,
7
7
  isAbortError
@@ -499,4 +499,4 @@ export {
499
499
  buildSupportPassportPublicRequestHandler,
500
500
  composeSupportPassportExternalRequestHandlers
501
501
  };
502
- //# sourceMappingURL=chunk-YFDJVB2K.js.map
502
+ //# sourceMappingURL=chunk-T7CJQVRZ.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  resolveDefaultNamespaceRoot
3
- } from "./chunk-HTPQJ32S.js";
3
+ } from "./chunk-ROKKIMON.js";
4
4
  import {
5
5
  StorageManager
6
- } from "./chunk-UY2RORVF.js";
6
+ } from "./chunk-GVG3JYBI.js";
7
7
  import {
8
8
  composeLocationDayBody,
9
9
  composeLocationDayMeta,
@@ -23,13 +23,13 @@ import {
23
23
  serializeLocationDay,
24
24
  updateLocationSourceDay,
25
25
  writeLocationDay
26
- } from "./chunk-MT47LH5L.js";
26
+ } from "./chunk-FBMYGNOC.js";
27
27
  import {
28
28
  resolveNamespaceCapabilities
29
29
  } from "./chunk-JUOZ62Y7.js";
30
30
  import {
31
31
  readEnvVar
32
- } from "./chunk-JUC24CTX.js";
32
+ } from "./chunk-P2QRMMVQ.js";
33
33
  import {
34
34
  EngramAccessInputError
35
35
  } from "./chunk-2Z24E5W2.js";
@@ -728,4 +728,4 @@ export {
728
728
  runLocationBackfill,
729
729
  runLocationCliCommand
730
730
  };
731
- //# sourceMappingURL=chunk-EIJR4PZL.js.map
731
+ //# sourceMappingURL=chunk-TEYN7ZYF.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getGatewayRuntimeAuthForModel,
3
3
  resolveProviderApiKey
4
- } from "./chunk-QIEUU4UK.js";
4
+ } from "./chunk-I55KAVET.js";
5
5
  import {
6
6
  buildChatCompletionTemperature,
7
7
  buildChatCompletionTokenLimit,
@@ -18,10 +18,10 @@ import {
18
18
  } from "./chunk-N7RWREIQ.js";
19
19
  import {
20
20
  expandTildePath
21
- } from "./chunk-EYIEWJNI.js";
21
+ } from "./chunk-6KH5NLQS.js";
22
22
  import {
23
23
  resolveHomeDir
24
- } from "./chunk-JUC24CTX.js";
24
+ } from "./chunk-P2QRMMVQ.js";
25
25
  import {
26
26
  log
27
27
  } from "./chunk-3WCASNQZ.js";
@@ -788,4 +788,4 @@ export {
788
788
  fallbackLlmRuntimeContextFromConfig,
789
789
  FallbackLlmClient
790
790
  };
791
- //# sourceMappingURL=chunk-JALOAKSZ.js.map
791
+ //# sourceMappingURL=chunk-TLPZ6MKZ.js.map
@@ -13,7 +13,7 @@ import {
13
13
  } from "./chunk-H3FZVNRN.js";
14
14
  import {
15
15
  ExtractionDeadlineError
16
- } from "./chunk-6TZWGQTT.js";
16
+ } from "./chunk-RAVRDTP7.js";
17
17
  import {
18
18
  resolvePrincipal
19
19
  } from "./chunk-MRV7VSQK.js";
@@ -798,4 +798,4 @@ var SmartBuffer = class {
798
798
  export {
799
799
  SmartBuffer
800
800
  };
801
- //# sourceMappingURL=chunk-BHHONFSK.js.map
801
+ //# sourceMappingURL=chunk-U34EHBPL.js.map
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-JUOZ62Y7.js";
10
10
  import {
11
11
  readEnvVar
12
- } from "./chunk-JUC24CTX.js";
12
+ } from "./chunk-P2QRMMVQ.js";
13
13
  import {
14
14
  log
15
15
  } from "./chunk-3WCASNQZ.js";
@@ -515,4 +515,4 @@ export {
515
515
  EmbeddingProviderUnavailableError,
516
516
  EmbeddingFallback
517
517
  };
518
- //# sourceMappingURL=chunk-DFEODULB.js.map
518
+ //# sourceMappingURL=chunk-V2HHAAPI.js.map
@@ -13,11 +13,11 @@ import {
13
13
  } from "./chunk-C7HJ3NEI.js";
14
14
  import {
15
15
  expandTildePath
16
- } from "./chunk-EYIEWJNI.js";
16
+ } from "./chunk-6KH5NLQS.js";
17
17
  import {
18
18
  readEnvVar,
19
19
  resolveHomeDir
20
- } from "./chunk-JUC24CTX.js";
20
+ } from "./chunk-P2QRMMVQ.js";
21
21
  import {
22
22
  log
23
23
  } from "./chunk-3WCASNQZ.js";
@@ -800,4 +800,4 @@ export {
800
800
  truncateToTokenBudget,
801
801
  describeMemoriesDir
802
802
  };
803
- //# sourceMappingURL=chunk-KEF46KL2.js.map
803
+ //# sourceMappingURL=chunk-V6EGNVUT.js.map
@@ -15,7 +15,7 @@ import {
15
15
  import {
16
16
  combineNamespaces,
17
17
  stableHash
18
- } from "./chunk-QBC33MPY.js";
18
+ } from "./chunk-NZXEK3UF.js";
19
19
 
20
20
  // src/namespaces/scope-profiles.ts
21
21
  import { createHash } from "crypto";
@@ -338,4 +338,4 @@ export {
338
338
  resolveScopeProfilePlan,
339
339
  expandScopeProfileReadNamespaces
340
340
  };
341
- //# sourceMappingURL=chunk-ESNFSSO4.js.map
341
+ //# sourceMappingURL=chunk-VGXM5B4H.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  projectTagProjectId,
3
3
  resolveGitContext
4
- } from "./chunk-QBC33MPY.js";
4
+ } from "./chunk-NZXEK3UF.js";
5
5
 
6
6
  // src/access-coding-context-resolution.ts
7
7
  async function resolveCodingContextFromOptions(options) {
@@ -33,4 +33,4 @@ async function resolveCodingContextFromOptions(options) {
33
33
  export {
34
34
  resolveCodingContextFromOptions
35
35
  };
36
- //# sourceMappingURL=chunk-MJUCDM3C.js.map
36
+ //# sourceMappingURL=chunk-VLXBE57O.js.map
@@ -23,7 +23,7 @@ import {
23
23
  } from "./chunk-7ZNJN5WZ.js";
24
24
  import {
25
25
  compareEntityTimestamps
26
- } from "./chunk-UY2RORVF.js";
26
+ } from "./chunk-GVG3JYBI.js";
27
27
  import {
28
28
  normalizeEntityName
29
29
  } from "./chunk-YXZG5TVN.js";
@@ -918,4 +918,4 @@ export {
918
918
  entityIndexVersion,
919
919
  entityRecentTranscriptLookbackHours
920
920
  };
921
- //# sourceMappingURL=chunk-YGTSOVCR.js.map
921
+ //# sourceMappingURL=chunk-VP67GZ7T.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  deepRecallRequestSchema
3
- } from "./chunk-2AMEUKCG.js";
3
+ } from "./chunk-JEIXTYVG.js";
4
4
  import {
5
5
  EngramAccessInputError
6
6
  } from "./chunk-2Z24E5W2.js";
@@ -39,4 +39,4 @@ async function respondDeepRecall(req, res, respondJson, readJsonBody, service, s
39
39
  export {
40
40
  respondDeepRecall
41
41
  };
42
- //# sourceMappingURL=chunk-ALBYEXFX.js.map
42
+ //# sourceMappingURL=chunk-VZWXFXLX.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  StorageManager
3
- } from "./chunk-UY2RORVF.js";
3
+ } from "./chunk-GVG3JYBI.js";
4
4
  import {
5
5
  normalizeEntityName
6
6
  } from "./chunk-YXZG5TVN.js";
@@ -19,7 +19,7 @@ import {
19
19
  import {
20
20
  readEnvVar,
21
21
  resolveHomeDir
22
- } from "./chunk-JUC24CTX.js";
22
+ } from "./chunk-P2QRMMVQ.js";
23
23
  import {
24
24
  log
25
25
  } from "./chunk-3WCASNQZ.js";
@@ -957,4 +957,4 @@ export {
957
957
  resolveBriefingSaveDir,
958
958
  briefingFilename
959
959
  };
960
- //# sourceMappingURL=chunk-NC7RM2XS.js.map
960
+ //# sourceMappingURL=chunk-W64HKJJM.js.map
@@ -3,7 +3,7 @@ import {
3
3
  readNamespaceMaintenanceLastRanStatuses,
4
4
  readNamespaceMaintenanceStatuses,
5
5
  runNamespaceMaintenancePlan
6
- } from "./chunk-GC65K6DI.js";
6
+ } from "./chunk-AOCP6JA7.js";
7
7
  import {
8
8
  analyzeSessionIntegrity,
9
9
  applySessionRepair,
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-CMTINOFS.js";
15
15
  import {
16
16
  summarizeCorpusAndReplica
17
- } from "./chunk-2YDWI2LO.js";
17
+ } from "./chunk-DITMGZOL.js";
18
18
  import {
19
19
  readJudgeVerdictStats
20
20
  } from "./chunk-OZKOPQCM.js";
@@ -38,23 +38,23 @@ import {
38
38
  } from "./chunk-YBPYIAA5.js";
39
39
  import {
40
40
  parseConfig
41
- } from "./chunk-GRCREL6Q.js";
41
+ } from "./chunk-SQJ3SDIW.js";
42
42
  import {
43
43
  readAggregateExtractionWatermark
44
- } from "./chunk-OYHGTHVX.js";
44
+ } from "./chunk-PHNAB54Q.js";
45
45
  import {
46
46
  listMemoryGovernanceRuns,
47
47
  readMemoryGovernanceRunArtifact
48
- } from "./chunk-I3OQBP23.js";
48
+ } from "./chunk-GY5WZBA6.js";
49
49
  import {
50
50
  listNamespaces
51
- } from "./chunk-WOOTZ6DH.js";
51
+ } from "./chunk-PV36INNL.js";
52
52
  import {
53
53
  analyzeGraphHealth
54
54
  } from "./chunk-5FAGCOZD.js";
55
55
  import {
56
56
  StorageManager
57
- } from "./chunk-UY2RORVF.js";
57
+ } from "./chunk-GVG3JYBI.js";
58
58
  import {
59
59
  lintWorkspaceFiles
60
60
  } from "./chunk-DM2T26WE.js";
@@ -78,7 +78,7 @@ import {
78
78
  import {
79
79
  readEnvVar,
80
80
  resolveHomeDir
81
- } from "./chunk-JUC24CTX.js";
81
+ } from "./chunk-P2QRMMVQ.js";
82
82
 
83
83
  // src/operator-toolkit.ts
84
84
  import path from "path";
@@ -1683,4 +1683,4 @@ export {
1683
1683
  runBenchmarkRecall,
1684
1684
  runOperatorRepair
1685
1685
  };
1686
- //# sourceMappingURL=chunk-OMLGLMWL.js.map
1686
+ //# sourceMappingURL=chunk-WHBVXTUI.js.map
@@ -9,20 +9,20 @@ import {
9
9
  } from "./chunk-666A3MOW.js";
10
10
  import {
11
11
  startLocationAutoSync
12
- } from "./chunk-BIVJCVT2.js";
12
+ } from "./chunk-RBGREYVJ.js";
13
13
  import {
14
14
  rebuildMemoryLifecycleLedger
15
- } from "./chunk-YJETZFLJ.js";
15
+ } from "./chunk-I27RSQRR.js";
16
16
  import {
17
17
  planNamespaceMaintenance,
18
18
  runNamespaceMaintenanceBatchPlan
19
- } from "./chunk-GC65K6DI.js";
19
+ } from "./chunk-AOCP6JA7.js";
20
20
  import {
21
21
  rebuildMemoryProjection
22
- } from "./chunk-ZNR5SVUI.js";
22
+ } from "./chunk-YUMDFDUA.js";
23
23
  import {
24
24
  validateActivityBaseUrl
25
- } from "./chunk-2OO6TPQG.js";
25
+ } from "./chunk-4UDQUPT5.js";
26
26
  import {
27
27
  activityDateInTimezone,
28
28
  activityDayWindow,
@@ -31,7 +31,7 @@ import {
31
31
  composeActivityDigestMeta,
32
32
  isValidActivityDate,
33
33
  serializeActivityDigest
34
- } from "./chunk-XPFC6D45.js";
34
+ } from "./chunk-S7DPKM5W.js";
35
35
  import {
36
36
  STATE_FILE_MAX_DECRYPT_BYTES,
37
37
  drainPendingLifecycleLedgerIfAny,
@@ -61,7 +61,7 @@ import {
61
61
  } from "./chunk-JUOZ62Y7.js";
62
62
  import {
63
63
  resolveHomeDir
64
- } from "./chunk-JUC24CTX.js";
64
+ } from "./chunk-P2QRMMVQ.js";
65
65
  import {
66
66
  SECURE_STORE_ENVELOPE_OVERHEAD_BYTES,
67
67
  probeEncryptedRegularFileHeader
@@ -1729,4 +1729,4 @@ export {
1729
1729
  ActivitySyncScheduler,
1730
1730
  MaintenanceScheduler
1731
1731
  };
1732
- //# sourceMappingURL=chunk-4KMGFWQY.js.map
1732
+ //# sourceMappingURL=chunk-WJBZMNNS.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SupportPassportCreateGrantRequestSchema,
3
3
  defineOperation
4
- } from "./chunk-R55WAWS3.js";
4
+ } from "./chunk-7DUFJAOE.js";
5
5
  import {
6
6
  SupportPassportCardCategorySchema,
7
7
  SupportPassportMemoryIdSchema,
@@ -220,4 +220,4 @@ var supportPassportGrantAskOperation = defineOperation({
220
220
  result: await ctx.service.supportPassportAskGrant(grantId, secret, question, ctx.abortSignal)
221
221
  })
222
222
  });
223
- //# sourceMappingURL=chunk-WFZBRS6N.js.map
223
+ //# sourceMappingURL=chunk-X74UAWSI.js.map