@remnic/core 9.64.4 → 9.65.1

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 (473) hide show
  1. package/dist/access-admin-ops-surface.d.ts +12 -11
  2. package/dist/access-admin-ops-surface.js +36 -35
  3. package/dist/access-authorization-probe.d.ts +12 -11
  4. package/dist/access-authorization-probe.js +37 -36
  5. package/dist/access-boundary.d.ts +12 -11
  6. package/dist/access-boundary.js +36 -35
  7. package/dist/access-cli.js +91 -88
  8. package/dist/access-cli.js.map +1 -1
  9. package/dist/access-coding-context-resolution.d.ts +2 -1
  10. package/dist/access-extraction-force-flush.d.ts +12 -11
  11. package/dist/access-extraction-force-flush.js +36 -35
  12. package/dist/access-health-types.d.ts +2 -1
  13. package/dist/access-http-lcm-compaction.d.ts +12 -11
  14. package/dist/access-http-lifecycle-flush.d.ts +12 -11
  15. package/dist/access-http-offline-stream.d.ts +12 -11
  16. package/dist/access-http-query.d.ts +3 -2
  17. package/dist/access-http-query.js +38 -37
  18. package/dist/access-http.d.ts +13 -12
  19. package/dist/access-http.js +49 -48
  20. package/dist/access-identity-continuity-surface.d.ts +10 -9
  21. package/dist/access-identity-continuity-surface.js +36 -35
  22. package/dist/access-lcm-surface.d.ts +12 -11
  23. package/dist/access-lcm-surface.js +36 -35
  24. package/dist/access-mcp.d.ts +12 -11
  25. package/dist/access-mcp.js +42 -41
  26. package/dist/access-memory-search-fanout.d.ts +3 -2
  27. package/dist/{access-namespace-preflight-CYeI1R2_.d.ts → access-namespace-preflight-BKUnKsBv.d.ts} +1 -1
  28. package/dist/access-namespace-preflight.d.ts +4 -3
  29. package/dist/access-namespace-preflight.js +36 -35
  30. package/dist/access-observe-write-surface.d.ts +12 -11
  31. package/dist/access-observe-write-surface.js +36 -35
  32. package/dist/access-offline-manifest.d.ts +10 -9
  33. package/dist/access-operations-batch.js +38 -37
  34. package/dist/access-operations.d.ts +12 -11
  35. package/dist/access-operations.js +41 -40
  36. package/dist/access-recall-concurrency.d.ts +12 -11
  37. package/dist/access-recall-concurrency.js +36 -35
  38. package/dist/access-recall-response.d.ts +12 -11
  39. package/dist/access-recall-response.js +36 -35
  40. package/dist/access-recall-surface.d.ts +12 -11
  41. package/dist/access-recall-surface.js +36 -35
  42. package/dist/{access-service-BKtdXnyk.d.ts → access-service-B1Lbb-nQ.d.ts} +13 -13
  43. package/dist/access-service-helpers.d.ts +12 -11
  44. package/dist/access-service.d.ts +12 -11
  45. package/dist/access-service.js +36 -35
  46. package/dist/access-surface-catalog.d.ts +12 -11
  47. package/dist/access-surface-catalog.js +38 -37
  48. package/dist/access-surface-catalog.js.map +1 -1
  49. package/dist/access-wearables-meetings-surface.d.ts +4 -3
  50. package/dist/action-confidence.d.ts +2 -1
  51. package/dist/active-memory-bridge.d.ts +2 -1
  52. package/dist/active-recall.d.ts +2 -1
  53. package/dist/active-recall.js +4 -2
  54. package/dist/active-recall.js.map +1 -1
  55. package/dist/ambient-provenance.d.ts +2 -1
  56. package/dist/artifact-search.d.ts +2 -1
  57. package/dist/behavior-learner.d.ts +2 -1
  58. package/dist/behavior-signals.d.ts +2 -1
  59. package/dist/bootstrap.d.ts +10 -9
  60. package/dist/briefing-window.d.ts +3 -2
  61. package/dist/briefing.d.ts +3 -2
  62. package/dist/briefing.js +15 -14
  63. package/dist/buffer-surprise-report.d.ts +2 -1
  64. package/dist/buffer-turn-helpers.d.ts +2 -1
  65. package/dist/buffer.d.ts +3 -2
  66. package/dist/buffer.js +5 -5
  67. package/dist/bulk-import/index.d.ts +4 -3
  68. package/dist/calibration.d.ts +2 -1
  69. package/dist/capabilities.d.ts +2 -1
  70. package/dist/{catalog-CLAqQO2L.d.ts → catalog-DjVhJoRM.d.ts} +1 -1
  71. package/dist/causal-behavior.d.ts +2 -1
  72. package/dist/causal-behavior.js +2 -2
  73. package/dist/causal-chain.js +2 -2
  74. package/dist/causal-consolidation.d.ts +2 -1
  75. package/dist/causal-consolidation.js +18 -17
  76. package/dist/causal-consolidation.js.map +1 -1
  77. package/dist/causal-retrieval.js +2 -2
  78. package/dist/causal-trajectory-graph.d.ts +2 -1
  79. package/dist/causal-trajectory-graph.js +2 -2
  80. package/dist/causal-trajectory.js +1 -1
  81. package/dist/{chunk-5HERQ5FX.js → chunk-256FBCVX.js} +5 -5
  82. package/dist/{chunk-GVRLED7R.js → chunk-2572MRP2.js} +2 -2
  83. package/dist/{chunk-TY35YQ6E.js → chunk-3MADV4YC.js} +2 -2
  84. package/dist/{chunk-XACYILRA.js → chunk-3PXVYJMC.js} +31 -31
  85. package/dist/{chunk-DC4FJY2G.js → chunk-3RHFGGI5.js} +4 -4
  86. package/dist/{chunk-LOETWOEB.js → chunk-3TMYV3LP.js} +2 -2
  87. package/dist/chunk-3WU7XOFN.js +102 -0
  88. package/dist/chunk-3WU7XOFN.js.map +1 -0
  89. package/dist/{chunk-XH4IQVTN.js → chunk-4W6INNXO.js} +2 -2
  90. package/dist/{chunk-SB6YBB2V.js → chunk-53ENM6F6.js} +2 -2
  91. package/dist/{chunk-7V3AZWWZ.js → chunk-5UYSCYR7.js} +9 -7
  92. package/dist/{chunk-7V3AZWWZ.js.map → chunk-5UYSCYR7.js.map} +1 -1
  93. package/dist/{chunk-Z6CJLYXT.js → chunk-63FHSH7E.js} +3 -3
  94. package/dist/{chunk-DG6MJD7W.js → chunk-6JJT5AKI.js} +2 -2
  95. package/dist/{chunk-7BVO64UC.js → chunk-6L27N6YI.js} +2 -2
  96. package/dist/chunk-7PHI6GUI.js +95 -0
  97. package/dist/chunk-7PHI6GUI.js.map +1 -0
  98. package/dist/{chunk-YXGU3MDQ.js → chunk-7PWWGYGO.js} +2 -2
  99. package/dist/{chunk-CKZHKFY3.js → chunk-7QFBLYFP.js} +3 -3
  100. package/dist/{chunk-RWLRKMZK.js → chunk-AGKIG3YA.js} +2 -2
  101. package/dist/{chunk-A2IBK3TG.js → chunk-ALCJRQ72.js} +2 -2
  102. package/dist/{chunk-44DSGZFF.js → chunk-BC4QD3FM.js} +2 -2
  103. package/dist/{chunk-YMOPYG3K.js → chunk-BIJAWZYW.js} +6 -6
  104. package/dist/{chunk-KRPE7ANR.js → chunk-CCTVAVTT.js} +2 -2
  105. package/dist/{chunk-VYEPACWY.js → chunk-CEH2AFXG.js} +7 -7
  106. package/dist/{chunk-XBRGJJK7.js → chunk-CEQF6L5K.js} +3 -3
  107. package/dist/{chunk-PVIXAMWM.js → chunk-CFRBTATE.js} +2 -2
  108. package/dist/{chunk-UIYYS2YI.js → chunk-CTQRPANJ.js} +2 -2
  109. package/dist/{chunk-XZUCNVGE.js → chunk-CUS6S7PN.js} +10 -10
  110. package/dist/{chunk-KWIGDKM2.js → chunk-D2YNNDML.js} +2 -2
  111. package/dist/{chunk-MJRVF7SF.js → chunk-DBXZZIDU.js} +87 -56
  112. package/dist/chunk-DBXZZIDU.js.map +1 -0
  113. package/dist/{chunk-2QI2JBLQ.js → chunk-DEFI2QBT.js} +16 -10
  114. package/dist/chunk-DEFI2QBT.js.map +1 -0
  115. package/dist/{chunk-JCSUNXYJ.js → chunk-ESCQ6LY7.js} +3 -3
  116. package/dist/{chunk-652S5A5D.js → chunk-EUYWQ7TS.js} +2 -2
  117. package/dist/{chunk-ML3U4KPR.js → chunk-GIC6BASP.js} +2 -2
  118. package/dist/{chunk-ZSYE2QVJ.js → chunk-GXWDWOWP.js} +2 -2
  119. package/dist/{chunk-55SJFHVD.js → chunk-HJQZQUPC.js} +11 -11
  120. package/dist/{chunk-6LTCUN3T.js → chunk-HQSBYI5X.js} +2 -2
  121. package/dist/{chunk-H5CGAD7L.js → chunk-HQSPXTQO.js} +1 -1
  122. package/dist/{chunk-EJDLQRUO.js → chunk-HUNSEO5U.js} +2 -2
  123. package/dist/{chunk-ON2P3SHG.js → chunk-IAY7YBXS.js} +2 -2
  124. package/dist/{chunk-MB6GLPRY.js → chunk-IVKIODHO.js} +4 -4
  125. package/dist/{chunk-CUIAHZPZ.js → chunk-IXRC7EQG.js} +2 -2
  126. package/dist/{chunk-VRYEXPRX.js → chunk-JFJ3MHGV.js} +1 -1
  127. package/dist/{chunk-VRYEXPRX.js.map → chunk-JFJ3MHGV.js.map} +1 -1
  128. package/dist/{chunk-LZKCMK3U.js → chunk-JTSVMJHV.js} +2 -2
  129. package/dist/{chunk-URS5GSM7.js → chunk-JXN77SGO.js} +1 -1
  130. package/dist/chunk-JXN77SGO.js.map +1 -0
  131. package/dist/{chunk-WBM5NR4E.js → chunk-KPBLJCCV.js} +2 -2
  132. package/dist/{chunk-VLES5S4K.js → chunk-LWVO2QZV.js} +36 -36
  133. package/dist/{chunk-NO7B6DRB.js → chunk-LYIZXQYY.js} +2 -2
  134. package/dist/{chunk-7RAJ3GXO.js → chunk-M6L7HI7R.js} +2 -156
  135. package/dist/chunk-M6L7HI7R.js.map +1 -0
  136. package/dist/{chunk-VUP47UJI.js → chunk-MIBKEW7A.js} +3 -3
  137. package/dist/{chunk-OQIRBGUU.js → chunk-N37X5RU7.js} +2 -2
  138. package/dist/{chunk-C6AKYOFO.js → chunk-N6TRHP72.js} +2 -2
  139. package/dist/{chunk-VANZKHTN.js → chunk-NNBZS3DY.js} +2 -2
  140. package/dist/{chunk-2PSX5BJU.js → chunk-NZPFCP5A.js} +2 -2
  141. package/dist/{chunk-LTBKKSCX.js → chunk-OLBZ2WGG.js} +2 -2
  142. package/dist/{chunk-PD66CVSD.js → chunk-OUKBMQ2O.js} +2 -2
  143. package/dist/{chunk-GPFZFCRN.js → chunk-PP7R754B.js} +1 -1
  144. package/dist/{chunk-TKI2WOL5.js → chunk-R3AAOKR2.js} +2 -2
  145. package/dist/{chunk-RNORDDD6.js → chunk-S2VBSTTA.js} +2 -2
  146. package/dist/{chunk-3A46U7XG.js → chunk-SYJ6EKKE.js} +2 -2
  147. package/dist/{chunk-YFQTDE7N.js → chunk-VJ6ECBIP.js} +2 -2
  148. package/dist/{chunk-IFK3PVM7.js → chunk-VPGRXEAB.js} +2 -2
  149. package/dist/{chunk-246HFJVG.js → chunk-VZVP2W4O.js} +2 -2
  150. package/dist/{chunk-SHQFYZTD.js → chunk-W6TSGWYS.js} +2 -2
  151. package/dist/{chunk-DA2O3F5V.js → chunk-WTOE7CW4.js} +13 -13
  152. package/dist/{chunk-IJXECCUV.js → chunk-X5SDZMO7.js} +2 -2
  153. package/dist/chunk-XAB6STPO.js +160 -0
  154. package/dist/chunk-XAB6STPO.js.map +1 -0
  155. package/dist/{chunk-DHKV6E4A.js → chunk-Y23B2QXP.js} +2 -2
  156. package/dist/{chunk-PE76XIDM.js → chunk-YEQEGSJA.js} +3 -3
  157. package/dist/{chunk-UMDZXW5J.js → chunk-YQ3CBLL4.js} +5 -85
  158. package/dist/chunk-YQ3CBLL4.js.map +1 -0
  159. package/dist/{chunk-VYISFWVX.js → chunk-YQNNHLCG.js} +2 -2
  160. package/dist/{chunk-3LOQN3TO.js → chunk-Z54TXZ2F.js} +3 -3
  161. package/dist/{cli-CLvBewKf.d.ts → cli-Pulnz-qm.d.ts} +5 -5
  162. package/dist/cli.d.ts +14 -13
  163. package/dist/cli.js +70 -67
  164. package/dist/coding/pre-action-gate.d.ts +2 -1
  165. package/dist/coding/pre-action-gate.js +2 -2
  166. package/dist/compounding/engine.d.ts +3 -2
  167. package/dist/compounding/engine.js +15 -14
  168. package/dist/compounding/preference-consolidator.d.ts +2 -1
  169. package/dist/compression-optimizer.d.ts +2 -1
  170. package/dist/config.d.ts +2 -1
  171. package/dist/config.js +4 -2
  172. package/dist/connectors/codex-materialize-runner.d.ts +2 -1
  173. package/dist/connectors/codex-materialize-runner.js +15 -14
  174. package/dist/connectors/codex-materialize.d.ts +2 -1
  175. package/dist/connectors/index.d.ts +2 -1
  176. package/dist/connectors/index.js +15 -14
  177. package/dist/consolidation-provenance-check.d.ts +3 -2
  178. package/dist/consolidation-undo.d.ts +3 -2
  179. package/dist/contradiction/index.d.ts +3 -2
  180. package/dist/converge-config.d.ts +2 -1
  181. package/dist/convergence-refresh.d.ts +3 -2
  182. package/dist/convergence-refresh.js +17 -16
  183. package/dist/conversation-index/backend.d.ts +2 -1
  184. package/dist/conversation-index/chunker.d.ts +2 -1
  185. package/dist/conversation-index/faiss-adapter.d.ts +2 -1
  186. package/dist/conversation-index/indexer.d.ts +2 -1
  187. package/dist/conversation-index/search.d.ts +2 -1
  188. package/dist/corpus-watermark.d.ts +2 -1
  189. package/dist/corpus-watermark.js +17 -16
  190. package/dist/cross-lingual-recall.d.ts +70 -0
  191. package/dist/cross-lingual-recall.js +14 -0
  192. package/dist/day-summary.d.ts +2 -1
  193. package/dist/delinearize.d.ts +2 -1
  194. package/dist/dependency-propagation-config.d.ts +2 -1
  195. package/dist/{dependency-propagation-delivery-DMqIw9Zh.d.ts → dependency-propagation-delivery-Co17gxYb.d.ts} +1 -1
  196. package/dist/direct-answer-wiring.d.ts +2 -1
  197. package/dist/direct-answer.d.ts +2 -1
  198. package/dist/embedding-fallback.d.ts +2 -1
  199. package/dist/enrichment/index.d.ts +2 -1
  200. package/dist/entity-origin-fields.d.ts +2 -1
  201. package/dist/entity-retrieval.d.ts +3 -2
  202. package/dist/entity-retrieval.js +15 -14
  203. package/dist/entity-schema.d.ts +2 -1
  204. package/dist/episodic-context.d.ts +2 -1
  205. package/dist/explicit-capture.d.ts +10 -9
  206. package/dist/external-wiki-access.d.ts +12 -11
  207. package/dist/external-wiki-access.js +37 -36
  208. package/dist/external-wiki-collection-registration.d.ts +2 -1
  209. package/dist/external-wiki-collection.d.ts +2 -1
  210. package/dist/external-wiki-mcp-tools.d.ts +12 -11
  211. package/dist/extraction-error-classification.d.ts +2 -1
  212. package/dist/extraction-faithfulness.d.ts +2 -1
  213. package/dist/extraction-judge-telemetry.d.ts +2 -1
  214. package/dist/extraction-judge-training.d.ts +2 -1
  215. package/dist/extraction-judge.d.ts +2 -1
  216. package/dist/extraction-liveness.d.ts +2 -1
  217. package/dist/extraction-normalization.d.ts +2 -1
  218. package/dist/extraction-prompt.d.ts +2 -1
  219. package/dist/extraction-source-grounding-rules.d.ts +2 -1
  220. package/dist/extraction-source-grounding.d.ts +2 -1
  221. package/dist/extraction.d.ts +2 -1
  222. package/dist/extraction.js +20 -19
  223. package/dist/fallback-llm.d.ts +2 -1
  224. package/dist/graph-dashboard-diff.d.ts +2 -1
  225. package/dist/graph-dashboard-key.d.ts +2 -1
  226. package/dist/graph-dashboard-parser.d.ts +2 -1
  227. package/dist/{graph-edge-decay-A4SDFMMS.js → graph-edge-decay-FXGELBFA.js} +4 -4
  228. package/dist/graph-edge-decay-FXGELBFA.js.map +1 -0
  229. package/dist/graph-edge-reinforcement.d.ts +2 -1
  230. package/dist/graph-path-reconstruction.d.ts +2 -1
  231. package/dist/graph-path-scoring.d.ts +2 -1
  232. package/dist/graph-snapshot.d.ts +2 -1
  233. package/dist/graph-snapshot.js +3 -3
  234. package/dist/graph.d.ts +2 -1
  235. package/dist/graph.js +3 -3
  236. package/dist/harmonic-retrieval.js +1 -1
  237. package/dist/importance.d.ts +2 -1
  238. package/dist/importers/index.d.ts +2 -1
  239. package/dist/in-flight-reads.d.ts +2 -1
  240. package/dist/index.d.ts +24 -23
  241. package/dist/index.js +130 -126
  242. package/dist/intent.d.ts +2 -1
  243. package/dist/lcm/engine.d.ts +2 -1
  244. package/dist/lcm/engine.js +2 -2
  245. package/dist/lcm/index.d.ts +2 -1
  246. package/dist/lcm/index.js +5 -5
  247. package/dist/lcm/tools.d.ts +2 -1
  248. package/dist/lifecycle.d.ts +2 -1
  249. package/dist/live-connectors-runner.d.ts +2 -1
  250. package/dist/local-llm.d.ts +2 -1
  251. package/dist/local-llm.js +2 -2
  252. package/dist/local-model-endpoint.d.ts +2 -1
  253. package/dist/location/index.d.ts +295 -0
  254. package/dist/location/index.js +798 -0
  255. package/dist/location/index.js.map +1 -0
  256. package/dist/maintenance/memory-governance.d.ts +2 -1
  257. package/dist/maintenance/memory-governance.js +15 -14
  258. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +3 -2
  259. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +15 -14
  260. package/dist/maintenance/rebuild-memory-projection.d.ts +3 -2
  261. package/dist/maintenance/rebuild-memory-projection.js +16 -15
  262. package/dist/{maintenance-DITiehFX.d.ts → maintenance-DiSLtVN7.d.ts} +3 -3
  263. package/dist/mcp-memory-inspector-app.d.ts +12 -11
  264. package/dist/memory-action-policy.d.ts +2 -1
  265. package/dist/memory-cache.d.ts +2 -1
  266. package/dist/memory-lifecycle-ledger-utils.d.ts +2 -1
  267. package/dist/memory-projection-store.d.ts +2 -1
  268. package/dist/memory-provenance.d.ts +2 -1
  269. package/dist/memory-snapshot.d.ts +2 -1
  270. package/dist/memory-worth-outcomes.d.ts +3 -2
  271. package/dist/models-json.d.ts +2 -1
  272. package/dist/namespaces/migrate.d.ts +4 -3
  273. package/dist/namespaces/migrate.js +16 -15
  274. package/dist/namespaces/principal.d.ts +2 -1
  275. package/dist/namespaces/search.d.ts +2 -1
  276. package/dist/namespaces/search.js +10 -10
  277. package/dist/namespaces/storage.d.ts +4 -3
  278. package/dist/namespaces/storage.js +15 -14
  279. package/dist/native-knowledge.d.ts +2 -1
  280. package/dist/offline-sync-impression-drain.d.ts +2 -1
  281. package/dist/operator-doctor-corpus.d.ts +2 -1
  282. package/dist/operator-doctor-corpus.js +18 -17
  283. package/dist/operator-doctor-replica.d.ts +2 -1
  284. package/dist/operator-toolkit.d.ts +4 -3
  285. package/dist/operator-toolkit.js +29 -26
  286. package/dist/orchestration/compression-guideline-coordinator.d.ts +3 -2
  287. package/dist/orchestration/maintenance.d.ts +5 -4
  288. package/dist/orchestration/maintenance.js +23 -21
  289. package/dist/{orchestrator-6fPa2l9x.d.ts → orchestrator-DzCaxNS4.d.ts} +8 -8
  290. package/dist/orchestrator.d.ts +10 -9
  291. package/dist/orchestrator.js +92 -89
  292. package/dist/patterns-cli.d.ts +2 -1
  293. package/dist/{pipeline-DHpYtfM3.d.ts → pipeline-HJ8DKbFl.d.ts} +1 -1
  294. package/dist/policy-runtime.d.ts +2 -1
  295. package/dist/proactive-contention.d.ts +2 -1
  296. package/dist/provenance.d.ts +2 -1
  297. package/dist/{public-http-BT36aBb-.d.ts → public-http-DwXauTX3.d.ts} +1 -1
  298. package/dist/{qmd-BaX31tM0.d.ts → qmd-BzxluoLt.d.ts} +1 -1
  299. package/dist/qmd-preflight.d.ts +3 -2
  300. package/dist/qmd-recall-cache.d.ts +2 -1
  301. package/dist/qmd.d.ts +3 -2
  302. package/dist/qmd.js +5 -5
  303. package/dist/recall-concurrency-config.d.ts +2 -1
  304. package/dist/recall-disclosure-escalation.d.ts +2 -1
  305. package/dist/recall-explain-renderer.d.ts +2 -1
  306. package/dist/recall-explain-renderer.js +3 -3
  307. package/dist/recall-memory-map.d.ts +2 -1
  308. package/dist/recall-planner-llm.d.ts +2 -1
  309. package/dist/recall-state.d.ts +2 -1
  310. package/dist/recall-tag-filter.d.ts +2 -1
  311. package/dist/recall-timings.d.ts +2 -1
  312. package/dist/recall-xray-cli.d.ts +2 -1
  313. package/dist/recall-xray-cli.js +4 -4
  314. package/dist/recall-xray-renderer.d.ts +2 -1
  315. package/dist/recall-xray-renderer.js +3 -3
  316. package/dist/recall-xray.d.ts +2 -1
  317. package/dist/recall-xray.js +2 -2
  318. package/dist/reconcile/cursor.d.ts +2 -1
  319. package/dist/reconcile/manifest.d.ts +2 -1
  320. package/dist/reconcile/plan.d.ts +2 -1
  321. package/dist/replay/normalizers/chatgpt.d.ts +2 -1
  322. package/dist/replay/normalizers/claude.d.ts +2 -1
  323. package/dist/replay/normalizers/openclaw.d.ts +2 -1
  324. package/dist/replay/normalizers/shared.d.ts +2 -1
  325. package/dist/replay/runner.d.ts +2 -1
  326. package/dist/replay/types.d.ts +2 -1
  327. package/dist/replica-divergence.d.ts +2 -1
  328. package/dist/replica-peers-config.d.ts +2 -1
  329. package/dist/resolve-auth-token.d.ts +2 -1
  330. package/dist/resume-bundles.js +5 -3
  331. package/dist/retrieval-agents.d.ts +3 -2
  332. package/dist/retrieval-tiers.d.ts +2 -1
  333. package/dist/routing/engine.d.ts +2 -1
  334. package/dist/routing/store.d.ts +2 -1
  335. package/dist/salvage-envelope.d.ts +2 -1
  336. package/dist/schemas.d.ts +30 -30
  337. package/dist/{scope-profiles-1hYWJ9bM.d.ts → scope-profiles-CEMZz0t5.d.ts} +1 -1
  338. package/dist/search/embed-helper.d.ts +2 -1
  339. package/dist/search/factory.d.ts +2 -1
  340. package/dist/search/factory.js +9 -9
  341. package/dist/search/index.d.ts +2 -1
  342. package/dist/search/index.js +13 -13
  343. package/dist/search/lancedb-backend.d.ts +2 -1
  344. package/dist/search/lancedb-backend.js +2 -2
  345. package/dist/search/meilisearch-backend.d.ts +2 -1
  346. package/dist/search/meilisearch-backend.js +2 -2
  347. package/dist/search/noop-backend.d.ts +2 -1
  348. package/dist/search/orama-backend.d.ts +2 -1
  349. package/dist/search/orama-backend.js +2 -2
  350. package/dist/search/port.d.ts +3 -2
  351. package/dist/search/port.js +1 -1
  352. package/dist/search/remote-backend.d.ts +2 -1
  353. package/dist/search/remote-backend.js +2 -2
  354. package/dist/{semantic-consolidation-Chmddvcg.d.ts → semantic-consolidation-D9dYj6vu.d.ts} +1 -1
  355. package/dist/semantic-consolidation.d.ts +3 -2
  356. package/dist/semantic-consolidation.js +16 -15
  357. package/dist/semantic-rule-promotion.js +15 -14
  358. package/dist/semantic-rule-verifier.d.ts +2 -1
  359. package/dist/semantic-rule-verifier.js +15 -14
  360. package/dist/{service-DMs_dCCg.d.ts → service-_qgST_0y.d.ts} +2 -2
  361. package/dist/session-observer-bands.d.ts +2 -1
  362. package/dist/session-observer-state.d.ts +2 -1
  363. package/dist/shared-context/manager.d.ts +2 -1
  364. package/dist/signal.d.ts +2 -1
  365. package/dist/source-agent-qualifier.d.ts +2 -1
  366. package/dist/source-agent-qualifier.js +17 -16
  367. package/dist/{storage-CzorrpcN.d.ts → storage-B9lbNTYE.d.ts} +1 -1
  368. package/dist/storage.d.ts +3 -2
  369. package/dist/storage.js +14 -13
  370. package/dist/summarizer.d.ts +2 -1
  371. package/dist/summarizer.js +3 -3
  372. package/dist/summary-snapshot.d.ts +2 -1
  373. package/dist/support-passport/index.d.ts +15 -14
  374. package/dist/support-passport/index.js +39 -38
  375. package/dist/temporal-supersession.d.ts +3 -2
  376. package/dist/temporal-timeline-recall.d.ts +2 -1
  377. package/dist/temporal-validity.d.ts +2 -1
  378. package/dist/threading.d.ts +2 -1
  379. package/dist/tier-migration.d.ts +3 -2
  380. package/dist/tier-routing.d.ts +2 -1
  381. package/dist/topics.d.ts +2 -1
  382. package/dist/transcript.d.ts +2 -1
  383. package/dist/transfer/types.d.ts +12 -12
  384. package/dist/trust-score-stage.d.ts +2 -1
  385. package/dist/trust-score.d.ts +2 -1
  386. package/dist/{types-BP5MC8UU.d.ts → types-BrEzuxPA.d.ts} +3 -23
  387. package/dist/types-CM86alG1.d.ts +89 -0
  388. package/dist/types.d.ts +2 -1
  389. package/dist/types.js +1 -1
  390. package/dist/utility-runtime.d.ts +2 -1
  391. package/dist/verified-recall.js +15 -14
  392. package/dist/who-knows-cli.d.ts +12 -11
  393. package/dist/who-knows-cli.js +16 -15
  394. package/dist/who-knows.d.ts +12 -11
  395. package/dist/who-knows.js +15 -14
  396. package/dist/write-envelope.d.ts +2 -1
  397. package/package.json +12 -2
  398. package/src/cross-lingual-recall.test.ts +47 -0
  399. package/src/cross-lingual-recall.ts +186 -0
  400. package/src/location/adapter-isolation.test.ts +44 -0
  401. package/src/location/index.ts +16 -0
  402. package/src/orchestration/recall-internal-deps.ts +2 -0
  403. package/src/orchestration/recall-internal.ts +35 -33
  404. package/src/orchestration/recall-search-pipeline.ts +16 -0
  405. package/src/search/port.ts +2 -1
  406. package/src/storage.ts +5 -1
  407. package/src/types.ts +2 -0
  408. package/dist/chunk-2QI2JBLQ.js.map +0 -1
  409. package/dist/chunk-7RAJ3GXO.js.map +0 -1
  410. package/dist/chunk-MJRVF7SF.js.map +0 -1
  411. package/dist/chunk-UMDZXW5J.js.map +0 -1
  412. package/dist/chunk-URS5GSM7.js.map +0 -1
  413. /package/dist/{chunk-5HERQ5FX.js.map → chunk-256FBCVX.js.map} +0 -0
  414. /package/dist/{chunk-GVRLED7R.js.map → chunk-2572MRP2.js.map} +0 -0
  415. /package/dist/{chunk-TY35YQ6E.js.map → chunk-3MADV4YC.js.map} +0 -0
  416. /package/dist/{chunk-XACYILRA.js.map → chunk-3PXVYJMC.js.map} +0 -0
  417. /package/dist/{chunk-DC4FJY2G.js.map → chunk-3RHFGGI5.js.map} +0 -0
  418. /package/dist/{chunk-LOETWOEB.js.map → chunk-3TMYV3LP.js.map} +0 -0
  419. /package/dist/{chunk-XH4IQVTN.js.map → chunk-4W6INNXO.js.map} +0 -0
  420. /package/dist/{chunk-SB6YBB2V.js.map → chunk-53ENM6F6.js.map} +0 -0
  421. /package/dist/{chunk-Z6CJLYXT.js.map → chunk-63FHSH7E.js.map} +0 -0
  422. /package/dist/{chunk-DG6MJD7W.js.map → chunk-6JJT5AKI.js.map} +0 -0
  423. /package/dist/{chunk-7BVO64UC.js.map → chunk-6L27N6YI.js.map} +0 -0
  424. /package/dist/{chunk-YXGU3MDQ.js.map → chunk-7PWWGYGO.js.map} +0 -0
  425. /package/dist/{chunk-CKZHKFY3.js.map → chunk-7QFBLYFP.js.map} +0 -0
  426. /package/dist/{chunk-RWLRKMZK.js.map → chunk-AGKIG3YA.js.map} +0 -0
  427. /package/dist/{chunk-A2IBK3TG.js.map → chunk-ALCJRQ72.js.map} +0 -0
  428. /package/dist/{chunk-44DSGZFF.js.map → chunk-BC4QD3FM.js.map} +0 -0
  429. /package/dist/{chunk-YMOPYG3K.js.map → chunk-BIJAWZYW.js.map} +0 -0
  430. /package/dist/{chunk-KRPE7ANR.js.map → chunk-CCTVAVTT.js.map} +0 -0
  431. /package/dist/{chunk-VYEPACWY.js.map → chunk-CEH2AFXG.js.map} +0 -0
  432. /package/dist/{chunk-XBRGJJK7.js.map → chunk-CEQF6L5K.js.map} +0 -0
  433. /package/dist/{chunk-PVIXAMWM.js.map → chunk-CFRBTATE.js.map} +0 -0
  434. /package/dist/{chunk-UIYYS2YI.js.map → chunk-CTQRPANJ.js.map} +0 -0
  435. /package/dist/{chunk-XZUCNVGE.js.map → chunk-CUS6S7PN.js.map} +0 -0
  436. /package/dist/{chunk-KWIGDKM2.js.map → chunk-D2YNNDML.js.map} +0 -0
  437. /package/dist/{chunk-JCSUNXYJ.js.map → chunk-ESCQ6LY7.js.map} +0 -0
  438. /package/dist/{chunk-652S5A5D.js.map → chunk-EUYWQ7TS.js.map} +0 -0
  439. /package/dist/{chunk-ML3U4KPR.js.map → chunk-GIC6BASP.js.map} +0 -0
  440. /package/dist/{chunk-ZSYE2QVJ.js.map → chunk-GXWDWOWP.js.map} +0 -0
  441. /package/dist/{chunk-55SJFHVD.js.map → chunk-HJQZQUPC.js.map} +0 -0
  442. /package/dist/{chunk-6LTCUN3T.js.map → chunk-HQSBYI5X.js.map} +0 -0
  443. /package/dist/{chunk-H5CGAD7L.js.map → chunk-HQSPXTQO.js.map} +0 -0
  444. /package/dist/{chunk-EJDLQRUO.js.map → chunk-HUNSEO5U.js.map} +0 -0
  445. /package/dist/{chunk-ON2P3SHG.js.map → chunk-IAY7YBXS.js.map} +0 -0
  446. /package/dist/{chunk-MB6GLPRY.js.map → chunk-IVKIODHO.js.map} +0 -0
  447. /package/dist/{chunk-CUIAHZPZ.js.map → chunk-IXRC7EQG.js.map} +0 -0
  448. /package/dist/{chunk-LZKCMK3U.js.map → chunk-JTSVMJHV.js.map} +0 -0
  449. /package/dist/{chunk-WBM5NR4E.js.map → chunk-KPBLJCCV.js.map} +0 -0
  450. /package/dist/{chunk-VLES5S4K.js.map → chunk-LWVO2QZV.js.map} +0 -0
  451. /package/dist/{chunk-NO7B6DRB.js.map → chunk-LYIZXQYY.js.map} +0 -0
  452. /package/dist/{chunk-VUP47UJI.js.map → chunk-MIBKEW7A.js.map} +0 -0
  453. /package/dist/{chunk-OQIRBGUU.js.map → chunk-N37X5RU7.js.map} +0 -0
  454. /package/dist/{chunk-C6AKYOFO.js.map → chunk-N6TRHP72.js.map} +0 -0
  455. /package/dist/{chunk-VANZKHTN.js.map → chunk-NNBZS3DY.js.map} +0 -0
  456. /package/dist/{chunk-2PSX5BJU.js.map → chunk-NZPFCP5A.js.map} +0 -0
  457. /package/dist/{chunk-LTBKKSCX.js.map → chunk-OLBZ2WGG.js.map} +0 -0
  458. /package/dist/{chunk-PD66CVSD.js.map → chunk-OUKBMQ2O.js.map} +0 -0
  459. /package/dist/{chunk-GPFZFCRN.js.map → chunk-PP7R754B.js.map} +0 -0
  460. /package/dist/{chunk-TKI2WOL5.js.map → chunk-R3AAOKR2.js.map} +0 -0
  461. /package/dist/{chunk-RNORDDD6.js.map → chunk-S2VBSTTA.js.map} +0 -0
  462. /package/dist/{chunk-3A46U7XG.js.map → chunk-SYJ6EKKE.js.map} +0 -0
  463. /package/dist/{chunk-YFQTDE7N.js.map → chunk-VJ6ECBIP.js.map} +0 -0
  464. /package/dist/{chunk-IFK3PVM7.js.map → chunk-VPGRXEAB.js.map} +0 -0
  465. /package/dist/{chunk-246HFJVG.js.map → chunk-VZVP2W4O.js.map} +0 -0
  466. /package/dist/{chunk-SHQFYZTD.js.map → chunk-W6TSGWYS.js.map} +0 -0
  467. /package/dist/{chunk-DA2O3F5V.js.map → chunk-WTOE7CW4.js.map} +0 -0
  468. /package/dist/{chunk-IJXECCUV.js.map → chunk-X5SDZMO7.js.map} +0 -0
  469. /package/dist/{chunk-DHKV6E4A.js.map → chunk-Y23B2QXP.js.map} +0 -0
  470. /package/dist/{chunk-PE76XIDM.js.map → chunk-YEQEGSJA.js.map} +0 -0
  471. /package/dist/{chunk-VYISFWVX.js.map → chunk-YQNNHLCG.js.map} +0 -0
  472. /package/dist/{chunk-3LOQN3TO.js.map → chunk-Z54TXZ2F.js.map} +0 -0
  473. /package/dist/{graph-edge-decay-A4SDFMMS.js.map → cross-lingual-recall.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  StorageManager
3
- } from "./chunk-2QI2JBLQ.js";
3
+ } from "./chunk-DEFI2QBT.js";
4
4
  import {
5
5
  composeMemoryEnvelope
6
6
  } from "./chunk-LCU5R6TQ.js";
@@ -546,4 +546,4 @@ export {
546
546
  setSemanticRulePromotionTestHooks,
547
547
  promoteSemanticRuleFromMemory
548
548
  };
549
- //# sourceMappingURL=chunk-LZKCMK3U.js.map
549
+ //# sourceMappingURL=chunk-JTSVMJHV.js.map
@@ -16,4 +16,4 @@ export {
16
16
  reportSearchDegradation,
17
17
  resolveEnsureCollectionArgs
18
18
  };
19
- //# sourceMappingURL=chunk-URS5GSM7.js.map
19
+ //# sourceMappingURL=chunk-JXN77SGO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/search/port.ts"],"sourcesContent":["import type { QmdSearchResult } from \"../types.js\";\n\n/** Alias so consumers don't need to reference \"Qmd\" in a backend-agnostic context. */\nexport type SearchResult = QmdSearchResult;\n\nexport interface SearchQueryOptions {\n intent?: string;\n explain?: boolean;\n candidateLimit?: number;\n rerank?: boolean;\n chunkStrategy?: \"auto\" | \"regex\";\n structuredSearches?: Array<{ type: \"lex\" | \"vec\" | \"hyde\"; query: string }>;\n}\n\n/**\n * A search that returned empty (or partial) results because the backend was\n * unavailable, still loading, or timed out — cases that are otherwise\n * indistinguishable from a genuine \"no matches\" (issue #1536, CLAUDE.md\n * rule 34).\n */\nexport interface SearchDegradation {\n backend: \"qmd\" | \"remote\" | \"meilisearch\" | \"orama\" | \"lancedb\";\n code:\n | \"backend_unavailable\"\n | \"backend_error\"\n | \"daemon_timeout\"\n | \"daemon_loading\"\n | \"subprocess_error\"\n | \"deadline_exceeded\"\n | \"remote_error\"\n | \"vector_tier_unavailable\";\n detail?: string;\n}\n\nexport interface SearchExecutionOptions {\n signal?: AbortSignal;\n /**\n * Observer invoked when the backend degrades during this call (#1536).\n * Callers that need to distinguish empty-because-degraded from\n * empty-because-no-matches (recall x-ray, fallback decisions) pass a\n * collector here. Observer failures are swallowed by the notifier —\n * observability must never break search.\n */\n onDegradation?: (degradation: SearchDegradation) => void;\n}\n\nexport function reportSearchDegradation(\n execution: SearchExecutionOptions | undefined,\n degradation: SearchDegradation\n): void {\n try {\n execution?.onDegradation?.(degradation);\n } catch {\n // Observability must never break search.\n }\n}\n\nexport function resolveEnsureCollectionArgs(\n collectionOrExecution?: string | SearchExecutionOptions,\n execution?: SearchExecutionOptions\n): { collection?: string; execution?: SearchExecutionOptions } {\n if (typeof collectionOrExecution === \"string\") {\n return { collection: collectionOrExecution, execution };\n }\n return { collection: undefined, execution: collectionOrExecution ?? execution };\n}\n\n/**\n * Optional status report for search backends that track embedding backlog.\n * Backends without embedding pipelines return null from status().\n */\nexport interface SearchBackendStatus {\n pendingEmbeddings: number | null;\n oldestPendingAgeMs: number | null;\n totalFiles: number | null;\n embeddedFiles: number | null;\n}\n\n/**\n * Abstract search backend interface.\n *\n * Implementations:\n * - QmdClient (default, local hybrid BM25+vector+reranking)\n * - OramaBackend (embedded, pure JS, hybrid FTS+vector)\n * - LanceDbBackend (embedded, native Arrow bindings, RRF reranking)\n * - MeilisearchBackend (server-based SDK, hybrid search)\n * - RemoteSearchBackend (HTTP REST adapter)\n * - NoopSearchBackend (graceful degradation)\n *\n * See docs/writing-a-search-backend.md for the implementation guide.\n */\nexport interface SearchBackend {\n // ── Lifecycle ──\n probe(): Promise<boolean>;\n /**\n * Optional non-mutating availability probe for health/readiness checks.\n * Implementations must avoid auto-upgrades, collection creation, daemon\n * startup, or any other runtime-modifying side effects.\n */\n checkAvailability?(execution?: SearchExecutionOptions): Promise<boolean>;\n isAvailable(): boolean;\n debugStatus(): string;\n /** Optional embedding backlog status for health surfaces. */\n status?(): Promise<SearchBackendStatus>;\n\n // ── Search ──\n search(\n query: string,\n collection?: string,\n maxResults?: number,\n options?: SearchQueryOptions,\n execution?: SearchExecutionOptions\n ): Promise<SearchResult[]>;\n searchGlobal(query: string, maxResults?: number, execution?: SearchExecutionOptions): Promise<SearchResult[]>;\n bm25Search(\n query: string,\n collection?: string,\n maxResults?: number,\n execution?: SearchExecutionOptions\n ): Promise<SearchResult[]>;\n vectorSearch(\n query: string,\n collection?: string,\n maxResults?: number,\n execution?: SearchExecutionOptions\n ): Promise<SearchResult[]>;\n hybridSearch(\n query: string,\n collection?: string,\n maxResults?: number,\n execution?: SearchExecutionOptions\n ): Promise<SearchResult[]>;\n\n // ── Maintenance ──\n update(execution?: SearchExecutionOptions): Promise<void>;\n /**\n * Wall-clock ms of the most recent SUCCESSFUL index refresh, or null when the\n * backend has never run one. Ordinary update() is fail-open: it returns\n * silently (without throwing or advancing this timestamp) when the backend is\n * unavailable or the call is suppressed by a min-interval / failure backoff.\n * Callers that must know whether update() actually indexed — so they can\n * invalidate dependent caches only on a real refresh — snapshot this before\n * the call and treat the backend as refreshed iff the value advanced. Optional\n * because not every backend tracks it; absent means \"assume refreshed\".\n */\n readonly lastUpdateRanAtMs?: number | null;\n /**\n * Optional strict refresh used by callers that must know whether the backend\n * was actually refreshed before writing success markers. Ordinary update\n * calls remain fail-open for migration/maintenance resilience.\n */\n updateStrict?(execution?: SearchExecutionOptions): Promise<void>;\n updateCollection(collection: string, execution?: SearchExecutionOptions): Promise<void>;\n updateCollectionFromDir?(collection: string, memoryDir: string, execution?: SearchExecutionOptions): Promise<void>;\n /**\n * True when update() refreshes every indexed collection, not just this\n * backend's configured collection. Namespace routers use this to avoid\n * repeating the same expensive global update once per namespace.\n */\n updatesAllCollections?(): boolean;\n /**\n * Optional strict refresh used by callers that must know whether a collection\n * was actually refreshed before writing success markers. Ordinary update\n * calls remain fail-open for migration/maintenance resilience.\n */\n updateCollectionStrict?(collection: string, execution?: SearchExecutionOptions): Promise<void>;\n embed(): Promise<void>;\n /**\n * Optional strict embed used by callers that must know vectors were actually\n * refreshed before writing success markers.\n */\n embedStrict?(): Promise<void>;\n embedCollection(collection: string): Promise<void>;\n /**\n * Optional strict collection embed used by callers that must know vectors were\n * actually refreshed before writing success markers.\n */\n embedCollectionStrict?(collection: string): Promise<void>;\n\n // ── Collection management ──\n /**\n * True only when the backend can bind, isolate, search, and delete collections\n * outside Remnic's primary memory roots.\n */\n supportsAdditionalCollections?(): boolean;\n /**\n * Prevent a collection from participating in unscoped/global searches.\n * Dedicated corpora must call this immediately after collection creation.\n */\n excludeCollectionFromGlobalSearch?(collection: string, execution?: SearchExecutionOptions): Promise<void>;\n /** Remove a non-primary collection and its backend-owned index state. */\n deleteCollection?(collection: string, execution?: SearchExecutionOptions): Promise<boolean>;\n /** Canonical source root currently bound to a named collection. */\n collectionRoot?(collection: string, execution?: SearchExecutionOptions): Promise<string | null>;\n /** Collection-scoped status for observability surfaces. */\n collectionStatus?(collection: string): Promise<Pick<SearchBackendStatus, \"totalFiles\">>;\n /**\n * Optional non-mutating collection probe. Backends that can distinguish a\n * missing collection from a transient probe failure should implement this so\n * callers can avoid auto-creating collections in unsafe layouts.\n */\n checkCollection?(\n collectionOrExecution?: string | SearchExecutionOptions,\n execution?: SearchExecutionOptions\n ): Promise<\"present\" | \"missing\" | \"unknown\" | \"skipped\">;\n ensureCollection(\n memoryDir: string,\n execution?: SearchExecutionOptions\n ): Promise<\"present\" | \"missing\" | \"unknown\" | \"skipped\">;\n ensureCollection(\n memoryDir: string,\n collection?: string,\n execution?: SearchExecutionOptions\n ): Promise<\"present\" | \"missing\" | \"unknown\" | \"skipped\">;\n}\n"],"mappings":";AA8CO,SAAS,wBACd,WACA,aACM;AACN,MAAI;AACF,eAAW,gBAAgB,WAAW;AAAA,EACxC,QAAQ;AAAA,EAER;AACF;AAEO,SAAS,4BACd,uBACA,WAC6D;AAC7D,MAAI,OAAO,0BAA0B,UAAU;AAC7C,WAAO,EAAE,YAAY,uBAAuB,UAAU;AAAA,EACxD;AACA,SAAO,EAAE,YAAY,QAAW,WAAW,yBAAyB,UAAU;AAChF;","names":[]}
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-7T4TOGMS.js";
4
4
  import {
5
5
  defineOperation
6
- } from "./chunk-XACYILRA.js";
6
+ } from "./chunk-3PXVYJMC.js";
7
7
 
8
8
  // src/external-wiki-access.ts
9
9
  import { z } from "zod";
@@ -26,4 +26,4 @@ var externalWikiSearchOperation = defineOperation({
26
26
  export {
27
27
  externalWikiSearchOperation
28
28
  };
29
- //# sourceMappingURL=chunk-WBM5NR4E.js.map
29
+ //# sourceMappingURL=chunk-KPBLJCCV.js.map
@@ -1,12 +1,15 @@
1
- import {
2
- chatgptReplayNormalizer
3
- } from "./chunk-MMACM5G2.js";
4
1
  import {
5
2
  claudeReplayNormalizer
6
3
  } from "./chunk-54BGIBCR.js";
7
4
  import {
8
5
  openclawReplayNormalizer
9
6
  } from "./chunk-H4CKS5B2.js";
7
+ import {
8
+ chatgptReplayNormalizer
9
+ } from "./chunk-MMACM5G2.js";
10
+ import {
11
+ exportJsonBundle
12
+ } from "./chunk-UP6MOYCB.js";
10
13
  import {
11
14
  exportSqlite
12
15
  } from "./chunk-BV2TIZ4F.js";
@@ -25,9 +28,6 @@ import {
25
28
  import {
26
29
  backupMemoryDir
27
30
  } from "./chunk-2NLLXCJG.js";
28
- import {
29
- exportJsonBundle
30
- } from "./chunk-UP6MOYCB.js";
31
31
  import {
32
32
  exportMarkdownBundle
33
33
  } from "./chunk-765K3SAT.js";
@@ -49,9 +49,12 @@ import {
49
49
  import {
50
50
  WebDavServer
51
51
  } from "./chunk-PYIFUBRK.js";
52
+ import {
53
+ migrateObservations
54
+ } from "./chunk-IIFFC3RL.js";
52
55
  import {
53
56
  rebuildMemoryLifecycleLedger
54
- } from "./chunk-ZSYE2QVJ.js";
57
+ } from "./chunk-GXWDWOWP.js";
55
58
  import {
56
59
  rebuildObservations
57
60
  } from "./chunk-DQTCGVFK.js";
@@ -59,17 +62,14 @@ import {
59
62
  archiveObservations
60
63
  } from "./chunk-YLBE6PLR.js";
61
64
  import {
62
- migrateObservations
63
- } from "./chunk-IIFFC3RL.js";
65
+ runCompatChecks
66
+ } from "./chunk-CDKHKZL5.js";
64
67
  import {
65
68
  getBulkImportSource,
66
69
  listBulkImportSources,
67
70
  registerBulkImportSource,
68
71
  runBulkImportPipeline
69
72
  } from "./chunk-HSSERO3E.js";
70
- import {
71
- runCompatChecks
72
- } from "./chunk-CDKHKZL5.js";
73
73
  import {
74
74
  getUtilityLearningStatus,
75
75
  learnUtilityPromotionWeights
@@ -80,21 +80,21 @@ import {
80
80
  } from "./chunk-6FC3IZ26.js";
81
81
  import {
82
82
  searchVerifiedEpisodes
83
- } from "./chunk-NO7B6DRB.js";
83
+ } from "./chunk-LYIZXQYY.js";
84
84
  import {
85
85
  ThreadingManager
86
86
  } from "./chunk-OJP3N7UK.js";
87
87
  import {
88
88
  promoteSemanticRuleFromMemory
89
- } from "./chunk-LZKCMK3U.js";
89
+ } from "./chunk-JTSVMJHV.js";
90
90
  import {
91
91
  searchVerifiedSemanticRules
92
- } from "./chunk-A2IBK3TG.js";
92
+ } from "./chunk-ALCJRQ72.js";
93
93
  import {
94
94
  buildResumeBundleFromState,
95
95
  getResumeBundleStatus,
96
96
  recordResumeBundle
97
- } from "./chunk-YXGU3MDQ.js";
97
+ } from "./chunk-7PWWGYGO.js";
98
98
  import {
99
99
  getWorkProductLedgerStatus,
100
100
  recordWorkProductLedgerEntry,
@@ -105,7 +105,7 @@ import {
105
105
  } from "./chunk-AM4T6CHX.js";
106
106
  import {
107
107
  parseXrayCliOptions
108
- } from "./chunk-VUP47UJI.js";
108
+ } from "./chunk-MIBKEW7A.js";
109
109
  import {
110
110
  readRuntimePolicySnapshot,
111
111
  sanitizeRuntimePolicyValues
@@ -118,7 +118,7 @@ import {
118
118
  runOperatorInventory,
119
119
  runOperatorRepair,
120
120
  runOperatorSetup
121
- } from "./chunk-XZUCNVGE.js";
121
+ } from "./chunk-CUS6S7PN.js";
122
122
  import {
123
123
  analyzeSessionIntegrity,
124
124
  applySessionRepair,
@@ -150,12 +150,12 @@ import {
150
150
  import {
151
151
  listConnectorStates
152
152
  } from "./chunk-6GUG4YNM.js";
153
+ import {
154
+ searchHarmonicRetrieval
155
+ } from "./chunk-HQSPXTQO.js";
153
156
  import {
154
157
  rescoreMemoryImportance
155
158
  } from "./chunk-UOBPK2OS.js";
156
- import {
157
- searchHarmonicRetrieval
158
- } from "./chunk-H5CGAD7L.js";
159
159
  import {
160
160
  createEvalBaselineSnapshot,
161
161
  getEvalHarnessStatus,
@@ -175,7 +175,7 @@ import {
175
175
  rebuildMemoryProjection,
176
176
  repairMemoryProjection,
177
177
  verifyMemoryProjection
178
- } from "./chunk-JCSUNXYJ.js";
178
+ } from "./chunk-ESCQ6LY7.js";
179
179
  import {
180
180
  buildConnectorRowsFromDefinitions,
181
181
  parseConnectorsListOptions,
@@ -196,11 +196,11 @@ import {
196
196
  } from "./chunk-6TBIWIAG.js";
197
197
  import {
198
198
  parseConfig
199
- } from "./chunk-UMDZXW5J.js";
199
+ } from "./chunk-YQ3CBLL4.js";
200
200
  import {
201
201
  EngramAccessHttpServer,
202
202
  MeetingsInputError
203
- } from "./chunk-DA2O3F5V.js";
203
+ } from "./chunk-WTOE7CW4.js";
204
204
  import {
205
205
  WearablesInputError
206
206
  } from "./chunk-V7IZKJI3.js";
@@ -210,13 +210,13 @@ import {
210
210
  loadChatSession,
211
211
  processChatMessage,
212
212
  sessionBelongsToPrincipal
213
- } from "./chunk-3LOQN3TO.js";
213
+ } from "./chunk-Z54TXZ2F.js";
214
214
  import {
215
215
  getAbstractionNodeStoreStatus
216
216
  } from "./chunk-DJUKBGAD.js";
217
217
  import {
218
218
  EngramAccessService
219
- } from "./chunk-XACYILRA.js";
219
+ } from "./chunk-3PXVYJMC.js";
220
220
  import {
221
221
  WorkStorage
222
222
  } from "./chunk-GDB4J2H3.js";
@@ -233,10 +233,10 @@ import {
233
233
  parseRecallExplainFormat,
234
234
  renderRecallExplain,
235
235
  renderXray
236
- } from "./chunk-SHQFYZTD.js";
236
+ } from "./chunk-W6TSGWYS.js";
237
237
  import {
238
238
  readAggregateExtractionWatermark
239
- } from "./chunk-XH4IQVTN.js";
239
+ } from "./chunk-4W6INNXO.js";
240
240
  import {
241
241
  getObjectiveStateStoreStatus
242
242
  } from "./chunk-HTP6XRUI.js";
@@ -245,33 +245,33 @@ import {
245
245
  readMemoryGovernanceRunArtifact,
246
246
  restoreMemoryGovernanceRun,
247
247
  runMemoryGovernance
248
- } from "./chunk-3A46U7XG.js";
248
+ } from "./chunk-SYJ6EKKE.js";
249
249
  import {
250
250
  listNamespaces,
251
251
  runNamespaceMigration,
252
252
  verifyNamespaces
253
- } from "./chunk-CKZHKFY3.js";
253
+ } from "./chunk-7QFBLYFP.js";
254
254
  import {
255
255
  analyzeGraphHealth
256
- } from "./chunk-YMOPYG3K.js";
256
+ } from "./chunk-BIJAWZYW.js";
257
257
  import {
258
258
  resolveNamespaceChildRoot
259
- } from "./chunk-7BVO64UC.js";
259
+ } from "./chunk-6L27N6YI.js";
260
260
  import {
261
261
  getCausalTrajectoryStoreStatus
262
- } from "./chunk-GPFZFCRN.js";
262
+ } from "./chunk-PP7R754B.js";
263
263
  import {
264
264
  OKF_RESERVED_BASENAMES,
265
265
  meetingIdDate,
266
266
  okfTypeForCategory
267
- } from "./chunk-2QI2JBLQ.js";
267
+ } from "./chunk-DEFI2QBT.js";
268
268
  import {
269
269
  isValidTranscriptDate
270
270
  } from "./chunk-UHVXE24Y.js";
271
271
  import {
272
272
  RECALL_DISCLOSURE_LEVELS,
273
273
  isRecallDisclosure
274
- } from "./chunk-VRYEXPRX.js";
274
+ } from "./chunk-JFJ3MHGV.js";
275
275
  import {
276
276
  bumpMemoryCorpusVersionForDir
277
277
  } from "./chunk-XCB6QDL6.js";
@@ -8553,4 +8553,4 @@ export {
8553
8553
  listMemoryMarkdownFilePaths,
8554
8554
  registerCli
8555
8555
  };
8556
- //# sourceMappingURL=chunk-VLES5S4K.js.map
8556
+ //# sourceMappingURL=chunk-LWVO2QZV.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-B7RWBZXW.js";
4
4
  import {
5
5
  StorageManager
6
- } from "./chunk-2QI2JBLQ.js";
6
+ } from "./chunk-DEFI2QBT.js";
7
7
  import {
8
8
  getCachedEpisodeMap,
9
9
  setCachedEpisodeMap
@@ -109,4 +109,4 @@ export {
109
109
  compareVerifiedEpisodeResults,
110
110
  searchVerifiedEpisodes
111
111
  };
112
- //# sourceMappingURL=chunk-NO7B6DRB.js.map
112
+ //# sourceMappingURL=chunk-LYIZXQYY.js.map
@@ -1,8 +1,3 @@
1
- import {
2
- coerceBooleanLike,
3
- coerceNumber
4
- } from "./chunk-PQVCH2AE.js";
5
-
6
1
  // src/activity/digest.ts
7
2
  import { createHash } from "crypto";
8
3
  import path from "path";
@@ -325,152 +320,6 @@ function parseMachinesList(raw) {
325
320
  return raw.replace(/^\[/, "").replace(/\]$/, "").split(",").map((entry) => entry.trim()).filter((entry) => entry.length > 0);
326
321
  }
327
322
 
328
- // src/activity/config.ts
329
- var EXTRACTION_MODES = ["off", "smart"];
330
- var IMPORTANCE_LEVELS = ["critical", "high", "normal", "low", "trivial"];
331
- var LOOPBACK_HOSTS = { localhost: true, "127.0.0.1": true, "::1": true };
332
- function defaultActivityConfig() {
333
- return {
334
- enabled: false,
335
- timezone: "UTC",
336
- syncDays: 1,
337
- autoSyncIntervalMinutes: 15,
338
- sources: [],
339
- extractionMode: "off",
340
- sourceTrust: 0.6,
341
- autoApproveTrust: 0.8,
342
- reviewTrust: 0.5,
343
- minConfidence: 0.7,
344
- minImportance: "normal",
345
- maxMemoriesPerDay: 0
346
- };
347
- }
348
- function asRecord(value, name) {
349
- if (typeof value !== "object" || value === null || Array.isArray(value)) {
350
- throw new TypeError(`${name} must be an object`);
351
- }
352
- return value;
353
- }
354
- function optionalString(value, name) {
355
- if (value === void 0) return void 0;
356
- if (typeof value !== "string" || value.length === 0) throw new TypeError(`${name} must be a non-empty string`);
357
- return value;
358
- }
359
- function parseUnitInterval(value, key, fallback) {
360
- if (value === void 0) return fallback;
361
- const parsed = coerceNumber(value);
362
- if (parsed === void 0 || !Number.isFinite(parsed) || parsed < 0 || parsed > 1) {
363
- throw new RangeError(`activity.${key} must be a number in [0, 1]`);
364
- }
365
- return parsed;
366
- }
367
- function validateActivityBaseUrl(baseUrl) {
368
- let parsed;
369
- try {
370
- parsed = new URL(baseUrl);
371
- } catch {
372
- throw new RangeError(`activity source baseUrl must be a valid URL: ${baseUrl}`);
373
- }
374
- if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
375
- throw new RangeError("activity source baseUrl must use HTTP or HTTPS");
376
- }
377
- const host = parsed.hostname.replace(/^\[|\]$/g, "");
378
- if (LOOPBACK_HOSTS[host] !== true && !/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(host)) {
379
- throw new RangeError(`activity source baseUrl must target a loopback host (got ${parsed.hostname})`);
380
- }
381
- return parsed;
382
- }
383
- function parseSource(value) {
384
- const raw = asRecord(value, "activity source");
385
- const machineLabel = optionalString(raw.machineLabel, "activity source machineLabel");
386
- const baseUrl = optionalString(raw.baseUrl, "activity source baseUrl");
387
- if (machineLabel === void 0 || baseUrl === void 0) {
388
- throw new TypeError("activity source requires machineLabel and baseUrl");
389
- }
390
- if (machineLabel.trim().length === 0) {
391
- throw new RangeError("activity source machineLabel must not be blank");
392
- }
393
- validateActivityBaseUrl(baseUrl);
394
- const token = optionalString(raw.token, "activity source token");
395
- return { machineLabel, baseUrl, ...token === void 0 ? {} : { token } };
396
- }
397
- function parseActivityConfig(raw) {
398
- const defaults = defaultActivityConfig();
399
- if (raw === void 0 || raw === null) {
400
- return { ...defaults };
401
- }
402
- const config = asRecord(raw, "activity");
403
- const enabledValue = coerceBooleanLike(config.enabled, "activity.enabled");
404
- if (config.enabled !== void 0 && enabledValue === void 0) {
405
- throw new TypeError("activity.enabled must be a boolean");
406
- }
407
- const timezone = optionalString(config.timezone, "activity.timezone") ?? "UTC";
408
- assertValidTimezone(timezone);
409
- const syncDaysValue = coerceNumber(config.syncDays, "activity.syncDays");
410
- if (config.syncDays !== void 0 && syncDaysValue === void 0) {
411
- throw new TypeError("activity.syncDays must be a finite number");
412
- }
413
- const syncDays = syncDaysValue ?? 1;
414
- if (!Number.isInteger(syncDays) || syncDays < 1 || syncDays > 90) {
415
- throw new RangeError("activity.syncDays must be an integer from 1 to 90");
416
- }
417
- const intervalValue = coerceNumber(config.autoSyncIntervalMinutes, "activity.autoSyncIntervalMinutes");
418
- if (config.autoSyncIntervalMinutes !== void 0 && intervalValue === void 0) {
419
- throw new TypeError("activity.autoSyncIntervalMinutes must be a finite number");
420
- }
421
- const autoSyncIntervalMinutes = intervalValue ?? 15;
422
- if (!Number.isInteger(autoSyncIntervalMinutes) || autoSyncIntervalMinutes < 1 || autoSyncIntervalMinutes > 1440) {
423
- throw new RangeError("activity.autoSyncIntervalMinutes must be an integer from 1 to 1440");
424
- }
425
- if (config.sources !== void 0 && !Array.isArray(config.sources)) {
426
- throw new TypeError("activity.sources must be an array");
427
- }
428
- const sources = (config.sources ?? []).map(parseSource);
429
- const labels = /* @__PURE__ */ new Set();
430
- for (const source of sources) {
431
- if (labels.has(source.machineLabel)) {
432
- throw new RangeError(`activity source machineLabel must be unique: ${source.machineLabel}`);
433
- }
434
- labels.add(source.machineLabel);
435
- }
436
- const enabled = enabledValue ?? false;
437
- if (enabled && sources.length === 0) throw new RangeError("activity.enabled requires at least one source");
438
- const extractionMode = config.extractionMode === void 0 ? defaults.extractionMode : config.extractionMode;
439
- if (typeof extractionMode !== "string" || !EXTRACTION_MODES.includes(extractionMode)) {
440
- throw new RangeError(`activity.extractionMode must be one of: ${EXTRACTION_MODES.join(", ")}`);
441
- }
442
- const minImportance = config.minImportance === void 0 ? defaults.minImportance : config.minImportance;
443
- if (typeof minImportance !== "string" || !IMPORTANCE_LEVELS.includes(minImportance)) {
444
- throw new RangeError(`activity.minImportance must be one of: ${IMPORTANCE_LEVELS.join(", ")}`);
445
- }
446
- const rawMaxMemoriesPerDay = config.maxMemoriesPerDay === void 0 ? defaults.maxMemoriesPerDay : config.maxMemoriesPerDay;
447
- const maxMemoriesPerDay = coerceNumber(rawMaxMemoriesPerDay);
448
- if (maxMemoriesPerDay === void 0 || !Number.isInteger(maxMemoriesPerDay) || maxMemoriesPerDay < 0) {
449
- throw new RangeError("activity.maxMemoriesPerDay must be a non-negative integer");
450
- }
451
- const autoApproveTrust = parseUnitInterval(config.autoApproveTrust, "autoApproveTrust", defaults.autoApproveTrust);
452
- const reviewTrust = parseUnitInterval(config.reviewTrust, "reviewTrust", defaults.reviewTrust);
453
- if (reviewTrust >= autoApproveTrust) {
454
- throw new RangeError(
455
- `activity.reviewTrust (${reviewTrust}) must be below autoApproveTrust (${autoApproveTrust})`
456
- );
457
- }
458
- return {
459
- enabled,
460
- timezone,
461
- syncDays,
462
- autoSyncIntervalMinutes,
463
- sources,
464
- extractionMode,
465
- sourceTrust: parseUnitInterval(config.sourceTrust, "sourceTrust", defaults.sourceTrust),
466
- autoApproveTrust,
467
- reviewTrust,
468
- minConfidence: parseUnitInterval(config.minConfidence, "minConfidence", defaults.minConfidence),
469
- minImportance,
470
- maxMemoriesPerDay
471
- };
472
- }
473
-
474
323
  export {
475
324
  ACTIVITY_DIGEST_FORMAT_VERSION,
476
325
  ACTIVITY_DIR_NAME,
@@ -483,9 +332,6 @@ export {
483
332
  hashActivityBody,
484
333
  composeActivityDigestMeta,
485
334
  serializeActivityDigest,
486
- parseActivityDigest,
487
- defaultActivityConfig,
488
- validateActivityBaseUrl,
489
- parseActivityConfig
335
+ parseActivityDigest
490
336
  };
491
- //# sourceMappingURL=chunk-7RAJ3GXO.js.map
337
+ //# sourceMappingURL=chunk-M6L7HI7R.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 // 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 back on that same\n // offset (so it is genuinely local midnight, not a wall-clock that never\n // occurred), then take the EARLIEST such instant — the FIRST 00:00 across a\n // DST fall-back that repeats local midnight.\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 prevDate = shiftIsoDate(date, -1);\n const probeOffsets = new Set(\n [\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 ].map((iso) => timezoneOffsetIso(new Date(iso), timezone)),\n );\n let best: number | null = null;\n for (const offset of probeOffsets) {\n const candidate = Date.parse(`${date}T00:00:00${offset}`);\n if (!Number.isFinite(candidate)) continue;\n // Reject an offset whose local midnight does not actually occur (the wall\n // clock skipped by a spring-forward): the offset in effect at the candidate\n // instant must be the same offset we used to build it.\n if (timezoneOffsetIso(new Date(candidate), timezone) !== offset) continue;\n if (best === null || candidate < best) best = candidate;\n }\n if (best === null) {\n // Local midnight was skipped by a spring-forward at 00:00. Advance to the\n // first local wall-clock minute on this date that actually exists (never\n // backdating to a 00:00 that never occurred), scanning forward up to 3h.\n for (let minute = 1; minute <= 180 && best === null; minute++) {\n const hh = String(Math.floor(minute / 60)).padStart(2, \"0\");\n const mm = String(minute % 60).padStart(2, \"0\");\n for (const offset of probeOffsets) {\n const candidate = Date.parse(`${date}T${hh}:${mm}:00${offset}`);\n if (!Number.isFinite(candidate)) continue;\n if (timezoneOffsetIso(new Date(candidate), timezone) !== offset) continue;\n if (best === null || candidate < best) best = candidate;\n }\n }\n }\n if (best === null) {\n // Degenerate safety net: use the noon-derived offset for a deterministic start.\n const noon = timezoneOffsetIso(new Date(`${date}T12:00:00Z`), timezone);\n best = Date.parse(`${date}T00:00:00${noon}`);\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/** Half-open [start, end) UTC ISO bounds of a local day. */\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 return {\n startUtc: new Date(zonedDayStartIso(date, timezone)).toISOString(),\n endUtc: new Date(zonedDayStartIso(nextIsoDate(date), timezone)).toISOString(),\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":[]}
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  parseXrayFormat
3
- } from "./chunk-SHQFYZTD.js";
3
+ } from "./chunk-W6TSGWYS.js";
4
4
  import {
5
5
  RECALL_DISCLOSURE_LEVELS,
6
6
  isRecallDisclosure
7
- } from "./chunk-VRYEXPRX.js";
7
+ } from "./chunk-JFJ3MHGV.js";
8
8
 
9
9
  // src/recall-xray-cli.ts
10
10
  function parseXrayDisclosureFlag(value) {
@@ -50,4 +50,4 @@ export {
50
50
  parseXrayBudgetFlag,
51
51
  parseXrayCliOptions
52
52
  };
53
- //# sourceMappingURL=chunk-VUP47UJI.js.map
53
+ //# sourceMappingURL=chunk-MIBKEW7A.js.map
@@ -8,7 +8,7 @@ import {
8
8
  import {
9
9
  reportSearchDegradation,
10
10
  resolveEnsureCollectionArgs
11
- } from "./chunk-URS5GSM7.js";
11
+ } from "./chunk-JXN77SGO.js";
12
12
  import {
13
13
  log
14
14
  } from "./chunk-3WCASNQZ.js";
@@ -508,4 +508,4 @@ function isMissingVectorProviderColumnError(err) {
508
508
  export {
509
509
  LanceDbBackend
510
510
  };
511
- //# sourceMappingURL=chunk-OQIRBGUU.js.map
511
+ //# sourceMappingURL=chunk-N37X5RU7.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SUPPORT_PASSPORT_DRAFT_MAX_CONTENT_CHARACTERS,
3
3
  SUPPORT_PASSPORT_DRAFT_MAX_MEMORIES
4
- } from "./chunk-XACYILRA.js";
4
+ } from "./chunk-3PXVYJMC.js";
5
5
  import {
6
6
  SUPPORT_PASSPORT_SOURCE_MEMORY_ID_MAX_LENGTH
7
7
  } from "./chunk-XDL5CYZN.js";
@@ -343,4 +343,4 @@ export {
343
343
  parseSupportPassportModelJob,
344
344
  SupportPassportModelBridge
345
345
  };
346
- //# sourceMappingURL=chunk-C6AKYOFO.js.map
346
+ //# sourceMappingURL=chunk-N6TRHP72.js.map
@@ -8,7 +8,7 @@ import {
8
8
  import {
9
9
  reportSearchDegradation,
10
10
  resolveEnsureCollectionArgs
11
- } from "./chunk-URS5GSM7.js";
11
+ } from "./chunk-JXN77SGO.js";
12
12
  import {
13
13
  log
14
14
  } from "./chunk-3WCASNQZ.js";
@@ -253,4 +253,4 @@ function isMeilisearchIndexNotFoundError(err) {
253
253
  export {
254
254
  MeilisearchBackend
255
255
  };
256
- //# sourceMappingURL=chunk-VANZKHTN.js.map
256
+ //# sourceMappingURL=chunk-NNBZS3DY.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-B7RWBZXW.js";
4
4
  import {
5
5
  resolveCausalTrajectoryStoreDir
6
- } from "./chunk-GPFZFCRN.js";
6
+ } from "./chunk-PP7R754B.js";
7
7
  import {
8
8
  normalizeRecallTokens
9
9
  } from "./chunk-YCVB7X56.js";
@@ -339,4 +339,4 @@ export {
339
339
  scoreStitchCandidate,
340
340
  stitchCausalChain
341
341
  };
342
- //# sourceMappingURL=chunk-2PSX5BJU.js.map
342
+ //# sourceMappingURL=chunk-NZPFCP5A.js.map
@@ -3,7 +3,7 @@ import {
3
3
  graphsDir,
4
4
  readEdgesStrict,
5
5
  withGraphWriteLock
6
- } from "./chunk-YMOPYG3K.js";
6
+ } from "./chunk-BIJAWZYW.js";
7
7
  import {
8
8
  DEFAULT_DECAY_FLOOR,
9
9
  DEFAULT_DECAY_PER_WINDOW,
@@ -203,4 +203,4 @@ export {
203
203
  discoverGraphNamespaceRoots,
204
204
  runGraphEdgeDecayMaintenanceAcrossNamespaces
205
205
  };
206
- //# sourceMappingURL=chunk-LTBKKSCX.js.map
206
+ //# sourceMappingURL=chunk-OLBZ2WGG.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  readAllEdges
3
- } from "./chunk-YMOPYG3K.js";
3
+ } from "./chunk-BIJAWZYW.js";
4
4
  import {
5
5
  readEdgeConfidence
6
6
  } from "./chunk-2LSZVONP.js";
@@ -162,4 +162,4 @@ export {
162
162
  parseGraphSnapshotSince,
163
163
  buildGraphSnapshot
164
164
  };
165
- //# sourceMappingURL=chunk-PD66CVSD.js.map
165
+ //# sourceMappingURL=chunk-OUKBMQ2O.js.map
@@ -400,4 +400,4 @@ export {
400
400
  getCausalTrajectoryStoreStatus,
401
401
  searchCausalTrajectories
402
402
  };
403
- //# sourceMappingURL=chunk-GPFZFCRN.js.map
403
+ //# sourceMappingURL=chunk-PP7R754B.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  parseEntityFile
3
- } from "./chunk-2QI2JBLQ.js";
3
+ } from "./chunk-DEFI2QBT.js";
4
4
  import {
5
5
  inferMemoryStatus
6
6
  } from "./chunk-7RJUVTVF.js";
@@ -253,4 +253,4 @@ export {
253
253
  WHO_KNOWS_MCP_TOOLS,
254
254
  handleWhoKnowsHttpQuery
255
255
  };
256
- //# sourceMappingURL=chunk-TKI2WOL5.js.map
256
+ //# sourceMappingURL=chunk-R3AAOKR2.js.map