@remnic/core 9.22.0 → 9.22.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 (399) hide show
  1. package/dist/access-admin-ops-surface.d.ts +15 -12
  2. package/dist/access-admin-ops-surface.js +25 -24
  3. package/dist/access-audit.js +2 -2
  4. package/dist/access-boundary.d.ts +13 -10
  5. package/dist/access-boundary.js +25 -24
  6. package/dist/access-cli.js +84 -82
  7. package/dist/access-cli.js.map +1 -1
  8. package/dist/access-http.d.ts +16 -9
  9. package/dist/access-http.js +33 -32
  10. package/dist/access-identity-continuity-surface.d.ts +9 -7
  11. package/dist/access-identity-continuity-surface.js +25 -24
  12. package/dist/access-lcm-surface.d.ts +12 -9
  13. package/dist/access-lcm-surface.js +25 -24
  14. package/dist/access-mcp-output-schemas.js +1 -1
  15. package/dist/access-mcp.d.ts +22 -10
  16. package/dist/access-mcp.js +31 -30
  17. package/dist/access-memory-search-fanout.d.ts +2 -2
  18. package/dist/{access-namespace-preflight-tmwQgCT6.d.ts → access-namespace-preflight-CmErR03h.d.ts} +1 -1
  19. package/dist/access-namespace-preflight.d.ts +3 -3
  20. package/dist/access-namespace-preflight.js +25 -24
  21. package/dist/access-observe-write-surface.d.ts +12 -9
  22. package/dist/access-observe-write-surface.js +25 -24
  23. package/dist/access-operations-batch.js +27 -26
  24. package/dist/access-operations.d.ts +13 -10
  25. package/dist/access-operations.js +28 -27
  26. package/dist/access-recall-concurrency.d.ts +12 -9
  27. package/dist/access-recall-concurrency.js +25 -24
  28. package/dist/access-recall-response.d.ts +12 -9
  29. package/dist/access-recall-response.js +25 -24
  30. package/dist/access-recall-surface.d.ts +14 -11
  31. package/dist/access-recall-surface.js +25 -24
  32. package/dist/{access-service-BtxW52vv.d.ts → access-service-CKEROeFP.d.ts} +22 -11
  33. package/dist/access-service.d.ts +13 -10
  34. package/dist/access-service.js +25 -24
  35. package/dist/access-surface-catalog.d.ts +12 -9
  36. package/dist/access-surface-catalog.js +6 -0
  37. package/dist/access-surface-catalog.js.map +1 -1
  38. package/dist/access-wearables-meetings-surface.d.ts +78 -0
  39. package/dist/access-wearables-meetings-surface.js +22 -0
  40. package/dist/access-wearables-meetings-surface.js.map +1 -0
  41. package/dist/action-confidence.d.ts +1 -1
  42. package/dist/active-memory-bridge.d.ts +1 -1
  43. package/dist/active-recall.d.ts +1 -1
  44. package/dist/active-recall.js +2 -2
  45. package/dist/{auto-sync-UPTUVE4X.js → auto-sync-5OE5QOZB.js} +3 -3
  46. package/dist/behavior-learner.d.ts +1 -1
  47. package/dist/behavior-signals.d.ts +1 -1
  48. package/dist/bootstrap.d.ts +9 -7
  49. package/dist/briefing.d.ts +2 -2
  50. package/dist/briefing.js +5 -5
  51. package/dist/buffer-surprise-report.d.ts +1 -1
  52. package/dist/buffer.d.ts +2 -2
  53. package/dist/bulk-import/index.d.ts +3 -3
  54. package/dist/calibration.d.ts +1 -1
  55. package/dist/capabilities.d.ts +1 -1
  56. package/dist/{catalog-iWvWz61I.d.ts → catalog-BFTVo2Ez.d.ts} +1 -1
  57. package/dist/causal-behavior.d.ts +1 -1
  58. package/dist/causal-behavior.js +2 -2
  59. package/dist/causal-chain.js +2 -2
  60. package/dist/causal-consolidation.d.ts +1 -1
  61. package/dist/causal-consolidation.js +9 -9
  62. package/dist/causal-retrieval.js +2 -2
  63. package/dist/causal-trajectory-graph.d.ts +1 -1
  64. package/dist/causal-trajectory.js +1 -1
  65. package/dist/{chunk-GF22HWS2.js → chunk-2PHX3I5C.js} +7 -7
  66. package/dist/{chunk-JFDEYXF7.js → chunk-3NAHZQU3.js} +2 -2
  67. package/dist/{chunk-XBRPEGXF.js → chunk-3UOSVTFR.js} +5 -5
  68. package/dist/{chunk-TTKWTT72.js → chunk-3ZW6ZQO6.js} +3 -3
  69. package/dist/{chunk-UV72DEZD.js → chunk-4B77XSG5.js} +5 -5
  70. package/dist/{chunk-IC2TCZJ2.js → chunk-57QKLRBV.js} +3 -1
  71. package/dist/chunk-57QKLRBV.js.map +1 -0
  72. package/dist/{chunk-LMHDFOVV.js → chunk-5CPI2QWG.js} +3 -3
  73. package/dist/{chunk-P72WZMWQ.js → chunk-5FZQ74K5.js} +2 -2
  74. package/dist/{chunk-BRT7KEXU.js → chunk-6TWXQ4E2.js} +5 -5
  75. package/dist/{chunk-CV6ZYXK3.js → chunk-7I7AYIUQ.js} +3 -3
  76. package/dist/{chunk-TVVEYCNW.js → chunk-7K5Q6COX.js} +4 -4
  77. package/dist/{chunk-MONWCSVL.js → chunk-7RAJ3GXO.js} +2 -1
  78. package/dist/chunk-7RAJ3GXO.js.map +1 -0
  79. package/dist/{chunk-SQEDDWAM.js → chunk-A2RFKL3V.js} +5 -34
  80. package/dist/chunk-A2RFKL3V.js.map +1 -0
  81. package/dist/{chunk-JN57HZCD.js → chunk-ATEAL5EI.js} +6 -6
  82. package/dist/{chunk-4PYLBXX6.js → chunk-AYAROCWD.js} +2 -2
  83. package/dist/chunk-BLDBT6HZ.js +39 -0
  84. package/dist/chunk-BLDBT6HZ.js.map +1 -0
  85. package/dist/{chunk-NB2P47N7.js → chunk-CUUY5CC4.js} +6 -6
  86. package/dist/{chunk-KL5Y6PEV.js → chunk-E3ZMFFQZ.js} +2 -2
  87. package/dist/{chunk-55FDQYPS.js → chunk-ES5IHQ6M.js} +2 -2
  88. package/dist/{chunk-N47ZWQBO.js → chunk-G2NSSQES.js} +2 -2
  89. package/dist/{chunk-GSWPU5CR.js → chunk-GD3QOBMB.js} +2 -2
  90. package/dist/{chunk-6ANPNUVL.js → chunk-IIXLB5E7.js} +58 -36
  91. package/dist/chunk-IIXLB5E7.js.map +1 -0
  92. package/dist/{chunk-SACPRJ7F.js → chunk-JNIJBXVK.js} +2 -2
  93. package/dist/{chunk-W3XT32W7.js → chunk-JVGUY2AU.js} +23 -13
  94. package/dist/chunk-JVGUY2AU.js.map +1 -0
  95. package/dist/{chunk-DGLON3AL.js → chunk-KNRG6ZGJ.js} +6 -6
  96. package/dist/{chunk-GEUDRENF.js → chunk-MMTG3SCJ.js} +2 -2
  97. package/dist/{chunk-WZFAPHIK.js → chunk-MU7ZHSZE.js} +2 -2
  98. package/dist/{chunk-W4FBGYGK.js → chunk-NRV4Y3PM.js} +1 -1
  99. package/dist/{chunk-QTO2FGBT.js → chunk-OUW4PAY4.js} +191 -117
  100. package/dist/chunk-OUW4PAY4.js.map +1 -0
  101. package/dist/{chunk-KQ2XCQYN.js → chunk-P2BLHUL2.js} +2 -2
  102. package/dist/{chunk-ACGGTPU4.js → chunk-QCKQEBIY.js} +17 -9
  103. package/dist/chunk-QCKQEBIY.js.map +1 -0
  104. package/dist/{chunk-6L775BUB.js → chunk-QE63OHLB.js} +2 -2
  105. package/dist/{chunk-ONHRRJZM.js → chunk-QJAQNXWI.js} +6 -6
  106. package/dist/{chunk-EQYBHXRR.js → chunk-ROUL7RZU.js} +385 -59
  107. package/dist/chunk-ROUL7RZU.js.map +1 -0
  108. package/dist/{chunk-N6M7MRVN.js → chunk-RT4TSR2C.js} +9034 -8726
  109. package/dist/chunk-RT4TSR2C.js.map +1 -0
  110. package/dist/{chunk-6NZ7U4R4.js → chunk-SCOT5DTA.js} +1 -1
  111. package/dist/chunk-SCOT5DTA.js.map +1 -0
  112. package/dist/{chunk-6RYWNBSA.js → chunk-SVZGA2MK.js} +2 -2
  113. package/dist/chunk-SYOIVK7K.js +63 -0
  114. package/dist/chunk-SYOIVK7K.js.map +1 -0
  115. package/dist/{chunk-DM5A4ZFL.js → chunk-TWCOYET2.js} +11 -1
  116. package/dist/chunk-TWCOYET2.js.map +1 -0
  117. package/dist/{chunk-7S5OMI76.js → chunk-WS32QRLO.js} +109 -44
  118. package/dist/chunk-WS32QRLO.js.map +1 -0
  119. package/dist/{chunk-OCMLGND7.js → chunk-WWZ35GWW.js} +5 -5
  120. package/dist/{chunk-QMGIQUBG.js → chunk-XWPFZX6S.js} +503 -139
  121. package/dist/chunk-XWPFZX6S.js.map +1 -0
  122. package/dist/{chunk-A5N6ISRK.js → chunk-ZN4UZWMT.js} +2 -2
  123. package/dist/{chunk-7M6APKJL.js → chunk-ZYU7ZFLT.js} +2 -2
  124. package/dist/{cli-D9vXgWwM.d.ts → cli-BrwT9YMD.d.ts} +5 -5
  125. package/dist/cli.d.ts +14 -11
  126. package/dist/cli.js +57 -56
  127. package/dist/compounding/engine.d.ts +2 -2
  128. package/dist/compounding/engine.js +5 -5
  129. package/dist/compounding/preference-consolidator.d.ts +1 -1
  130. package/dist/compression-optimizer.d.ts +1 -1
  131. package/dist/config.d.ts +1 -1
  132. package/dist/config.js +2 -2
  133. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  134. package/dist/connectors/codex-materialize-runner.js +5 -5
  135. package/dist/connectors/codex-materialize.d.ts +1 -1
  136. package/dist/connectors/index.d.ts +1 -1
  137. package/dist/connectors/index.js +5 -5
  138. package/dist/consolidation-provenance-check.d.ts +2 -2
  139. package/dist/consolidation-undo.d.ts +2 -2
  140. package/dist/contradiction/index.d.ts +2 -2
  141. package/dist/conversation-index/backend.d.ts +1 -1
  142. package/dist/conversation-index/chunker.d.ts +1 -1
  143. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  144. package/dist/conversation-index/indexer.d.ts +1 -1
  145. package/dist/conversation-index/search.d.ts +1 -1
  146. package/dist/day-summary.d.ts +1 -1
  147. package/dist/delinearize.d.ts +1 -1
  148. package/dist/direct-answer-wiring.d.ts +1 -1
  149. package/dist/direct-answer.d.ts +1 -1
  150. package/dist/embedding-fallback.d.ts +1 -1
  151. package/dist/enrichment/index.d.ts +1 -1
  152. package/dist/entity-retrieval.d.ts +2 -2
  153. package/dist/entity-retrieval.js +5 -5
  154. package/dist/entity-schema.d.ts +1 -1
  155. package/dist/explicit-capture.d.ts +9 -7
  156. package/dist/extraction-error-classification.d.ts +22 -0
  157. package/dist/extraction-error-classification.js +11 -0
  158. package/dist/extraction-error-classification.js.map +1 -0
  159. package/dist/extraction-faithfulness.d.ts +1 -1
  160. package/dist/extraction-judge-telemetry.d.ts +1 -1
  161. package/dist/extraction-judge-training.d.ts +1 -1
  162. package/dist/extraction-judge.d.ts +1 -1
  163. package/dist/extraction.d.ts +3 -17
  164. package/dist/extraction.js +5 -3
  165. package/dist/fallback-llm.d.ts +1 -1
  166. package/dist/{first-start-migration-LEXL3XYL.js → first-start-migration-BKNGOFED.js} +4 -4
  167. package/dist/graph-dashboard-diff.d.ts +1 -1
  168. package/dist/graph-dashboard-key.d.ts +1 -1
  169. package/dist/graph-dashboard-parser.d.ts +1 -1
  170. package/dist/graph-edge-reinforcement.d.ts +1 -1
  171. package/dist/graph-snapshot.d.ts +1 -1
  172. package/dist/graph.d.ts +1 -1
  173. package/dist/importance.d.ts +1 -1
  174. package/dist/importers/index.d.ts +1 -1
  175. package/dist/in-flight-reads.d.ts +1 -1
  176. package/dist/index.d.ts +309 -519
  177. package/dist/index.js +176 -140
  178. package/dist/intent.d.ts +1 -1
  179. package/dist/lcm/engine.d.ts +1 -1
  180. package/dist/lcm/engine.js +3 -3
  181. package/dist/lcm/index.d.ts +1 -1
  182. package/dist/lcm/index.js +11 -11
  183. package/dist/lcm/tools.d.ts +1 -1
  184. package/dist/lifecycle.d.ts +1 -1
  185. package/dist/live-connectors-runner.d.ts +1 -1
  186. package/dist/local-llm.d.ts +1 -1
  187. package/dist/local-model-endpoint.d.ts +1 -1
  188. package/dist/maintenance/memory-governance.d.ts +1 -1
  189. package/dist/maintenance/memory-governance.js +6 -6
  190. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -2
  191. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +5 -5
  192. package/dist/maintenance/rebuild-memory-projection.d.ts +2 -2
  193. package/dist/maintenance/rebuild-memory-projection.js +7 -7
  194. package/dist/maintenance-C98njYb8.d.ts +366 -0
  195. package/dist/mcp-memory-inspector-app.d.ts +12 -9
  196. package/dist/mcp-read-only-tools.js +1 -1
  197. package/dist/memory-action-policy.d.ts +1 -1
  198. package/dist/memory-cache.d.ts +1 -1
  199. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  200. package/dist/memory-projection-store.d.ts +1 -1
  201. package/dist/memory-provenance.d.ts +1 -1
  202. package/dist/memory-worth-outcomes.d.ts +2 -2
  203. package/dist/models-json.d.ts +1 -1
  204. package/dist/namespaces/migrate.d.ts +3 -3
  205. package/dist/namespaces/migrate.js +12 -12
  206. package/dist/namespaces/principal.d.ts +1 -1
  207. package/dist/namespaces/search.d.ts +1 -1
  208. package/dist/namespaces/search.js +6 -6
  209. package/dist/namespaces/storage.d.ts +3 -3
  210. package/dist/namespaces/storage.js +5 -5
  211. package/dist/native-knowledge.d.ts +1 -1
  212. package/dist/offline-sync-impression-drain.d.ts +1 -1
  213. package/dist/operator-toolkit.d.ts +2 -2
  214. package/dist/operator-toolkit.js +18 -18
  215. package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
  216. package/dist/orchestration/maintenance.d.ts +6 -223
  217. package/dist/orchestration/maintenance.js +12 -12
  218. package/dist/{orchestrator-DB93S48I.d.ts → orchestrator-C9ZVppNh.d.ts} +12 -481
  219. package/dist/orchestrator.d.ts +10 -8
  220. package/dist/orchestrator.js +84 -82
  221. package/dist/patterns-cli.d.ts +1 -1
  222. package/dist/{pipeline-DmGc-H66.d.ts → pipeline-id_-sqYm.d.ts} +1 -1
  223. package/dist/policy-runtime.d.ts +1 -1
  224. package/dist/proactive-contention.d.ts +1 -1
  225. package/dist/provenance.d.ts +1 -1
  226. package/dist/{qmd-cJT0crkF.d.ts → qmd-R6XaQOZK.d.ts} +1 -1
  227. package/dist/qmd-preflight.d.ts +2 -2
  228. package/dist/qmd-recall-cache.d.ts +1 -1
  229. package/dist/qmd.d.ts +2 -2
  230. package/dist/qmd.js +4 -4
  231. package/dist/recall-concurrency-config.d.ts +1 -1
  232. package/dist/recall-disclosure-escalation.d.ts +1 -1
  233. package/dist/recall-explain-renderer.d.ts +1 -1
  234. package/dist/recall-explain-renderer.js +3 -3
  235. package/dist/recall-memory-map.d.ts +1 -1
  236. package/dist/recall-planner-llm.d.ts +1 -1
  237. package/dist/recall-state.d.ts +1 -1
  238. package/dist/recall-tag-filter.d.ts +1 -1
  239. package/dist/recall-timings.d.ts +1 -1
  240. package/dist/recall-xray-cli.d.ts +1 -1
  241. package/dist/recall-xray-cli.js +4 -4
  242. package/dist/recall-xray-renderer.d.ts +1 -1
  243. package/dist/recall-xray-renderer.js +3 -3
  244. package/dist/recall-xray.d.ts +1 -1
  245. package/dist/recall-xray.js +2 -2
  246. package/dist/replay/normalizers/chatgpt.d.ts +1 -1
  247. package/dist/replay/normalizers/claude.d.ts +1 -1
  248. package/dist/replay/normalizers/openclaw.d.ts +1 -1
  249. package/dist/replay/normalizers/shared.d.ts +1 -1
  250. package/dist/replay/runner.d.ts +1 -1
  251. package/dist/replay/types.d.ts +1 -1
  252. package/dist/resolve-auth-token.d.ts +1 -1
  253. package/dist/resume-bundles.js +4 -4
  254. package/dist/retrieval-agents.d.ts +2 -2
  255. package/dist/retrieval-tiers.d.ts +1 -1
  256. package/dist/routing/engine.d.ts +1 -1
  257. package/dist/routing/store.d.ts +1 -1
  258. package/dist/salvage-envelope.d.ts +1 -1
  259. package/dist/{scope-profiles-KG2nODX7.d.ts → scope-profiles-EhyuAKkd.d.ts} +1 -1
  260. package/dist/search/embed-helper.d.ts +1 -1
  261. package/dist/search/factory.d.ts +1 -1
  262. package/dist/search/factory.js +5 -5
  263. package/dist/search/index.d.ts +1 -1
  264. package/dist/search/index.js +9 -9
  265. package/dist/search/lancedb-backend.d.ts +1 -1
  266. package/dist/search/meilisearch-backend.d.ts +1 -1
  267. package/dist/search/noop-backend.d.ts +1 -1
  268. package/dist/search/orama-backend.d.ts +1 -1
  269. package/dist/search/port.d.ts +1 -1
  270. package/dist/search/remote-backend.d.ts +1 -1
  271. package/dist/{semantic-consolidation-BaZlg0D8.d.ts → semantic-consolidation-B2xo26UQ.d.ts} +1 -1
  272. package/dist/semantic-consolidation.d.ts +2 -2
  273. package/dist/semantic-consolidation.js +7 -7
  274. package/dist/semantic-rule-promotion.js +5 -5
  275. package/dist/semantic-rule-verifier.d.ts +1 -1
  276. package/dist/semantic-rule-verifier.js +6 -6
  277. package/dist/service-DgFWlZ-r.d.ts +835 -0
  278. package/dist/session-observer-bands.d.ts +1 -1
  279. package/dist/session-observer-state.d.ts +1 -1
  280. package/dist/shared-context/manager.d.ts +1 -1
  281. package/dist/signal.d.ts +1 -1
  282. package/dist/{storage-BKhHHnRo.d.ts → storage-XGawwqXE.d.ts} +131 -2
  283. package/dist/storage.d.ts +2 -2
  284. package/dist/storage.js +4 -4
  285. package/dist/summarizer.d.ts +1 -1
  286. package/dist/summary-snapshot.d.ts +1 -1
  287. package/dist/temporal-supersession.d.ts +2 -2
  288. package/dist/temporal-timeline-recall.d.ts +1 -1
  289. package/dist/temporal-validity.d.ts +1 -1
  290. package/dist/threading.d.ts +1 -1
  291. package/dist/tier-migration.d.ts +2 -2
  292. package/dist/tier-routing.d.ts +1 -1
  293. package/dist/topics.d.ts +1 -1
  294. package/dist/transcript.d.ts +1 -1
  295. package/dist/trust-score-stage.d.ts +1 -1
  296. package/dist/trust-score.d.ts +1 -1
  297. package/dist/{types-GBQZuT7l.d.ts → types-Bbs0qz6b.d.ts} +2 -3
  298. package/dist/types.d.ts +1 -1
  299. package/dist/types.js +1 -1
  300. package/dist/utility-runtime.d.ts +1 -1
  301. package/dist/verified-recall.js +6 -6
  302. package/dist/write-envelope.d.ts +1 -1
  303. package/package.json +2 -2
  304. package/src/access-boundary.ts +3 -0
  305. package/src/access-http.test.ts +63 -0
  306. package/src/access-http.ts +26 -37
  307. package/src/access-mcp-output-schemas.ts +10 -0
  308. package/src/access-mcp.ts +4 -121
  309. package/src/access-operations-batch.ts +10 -5
  310. package/src/access-service.ts +43 -46
  311. package/src/access-surface-catalog.ts +6 -0
  312. package/src/access-wearables-meetings-surface.ts +139 -0
  313. package/src/activity/digest.ts +1 -1
  314. package/src/activity/runner.test.ts +37 -0
  315. package/src/activity/runner.ts +12 -0
  316. package/src/activity/scheduler.test.ts +1 -0
  317. package/src/activity/sync-registration.ts +13 -0
  318. package/src/cli/meetings-commands.ts +70 -0
  319. package/src/cli.ts +7 -6
  320. package/src/extraction-error-classification.ts +52 -0
  321. package/src/extraction.ts +2 -50
  322. package/src/mcp-read-only-tools.ts +2 -0
  323. package/src/meetings/build-memory.test.ts +364 -0
  324. package/src/meetings/build-scheduler.test.ts +55 -0
  325. package/src/meetings/build-scheduler.ts +96 -0
  326. package/src/meetings/day-source.test.ts +275 -0
  327. package/src/meetings/day-source.ts +352 -0
  328. package/src/meetings/http-glue.ts +126 -0
  329. package/src/meetings/index.ts +5 -4
  330. package/src/meetings/manual-sync-flush.test.ts +72 -0
  331. package/src/meetings/mcp-tools.ts +65 -0
  332. package/src/meetings/memory-gen.test.ts +498 -0
  333. package/src/meetings/memory-gen.ts +549 -0
  334. package/src/meetings/memory-generator.ts +5 -0
  335. package/src/meetings/namespace-isolation.test.ts +159 -0
  336. package/src/meetings/service.test.ts +195 -0
  337. package/src/meetings/service.ts +157 -0
  338. package/src/meetings/summary-extractor.test.ts +287 -0
  339. package/src/meetings/summary-extractor.ts +264 -0
  340. package/src/orchestration/maintenance.ts +8 -0
  341. package/src/orchestration/orchestrator-init.ts +6 -1
  342. package/src/orchestration/workspace-ops.ts +172 -8
  343. package/src/orchestrator.ts +12 -13
  344. package/src/storage.ts +21 -0
  345. package/src/testing/subjects/meetings-namespace-harness.ts +159 -0
  346. package/src/testing/subjects/meetings-namespace.test.ts +93 -0
  347. package/src/types.ts +1 -2
  348. package/src/wearables/cli.ts +2 -1
  349. package/src/wearables/index.ts +1 -0
  350. package/src/wearables/mcp-tools.ts +143 -0
  351. package/src/wearables/registry.test.ts +11 -0
  352. package/src/wearables/registry.ts +13 -0
  353. package/src/wearables/service.test.ts +62 -1
  354. package/src/wearables/service.ts +30 -2
  355. package/src/wearables/transcript-search-namespace-isolation.test.ts +98 -0
  356. package/dist/chunk-6ANPNUVL.js.map +0 -1
  357. package/dist/chunk-6NZ7U4R4.js.map +0 -1
  358. package/dist/chunk-7S5OMI76.js.map +0 -1
  359. package/dist/chunk-ACGGTPU4.js.map +0 -1
  360. package/dist/chunk-DM5A4ZFL.js.map +0 -1
  361. package/dist/chunk-EQYBHXRR.js.map +0 -1
  362. package/dist/chunk-IC2TCZJ2.js.map +0 -1
  363. package/dist/chunk-MONWCSVL.js.map +0 -1
  364. package/dist/chunk-N6M7MRVN.js.map +0 -1
  365. package/dist/chunk-QMGIQUBG.js.map +0 -1
  366. package/dist/chunk-QTO2FGBT.js.map +0 -1
  367. package/dist/chunk-SQEDDWAM.js.map +0 -1
  368. package/dist/chunk-W3XT32W7.js.map +0 -1
  369. /package/dist/{auto-sync-UPTUVE4X.js.map → auto-sync-5OE5QOZB.js.map} +0 -0
  370. /package/dist/{chunk-GF22HWS2.js.map → chunk-2PHX3I5C.js.map} +0 -0
  371. /package/dist/{chunk-JFDEYXF7.js.map → chunk-3NAHZQU3.js.map} +0 -0
  372. /package/dist/{chunk-XBRPEGXF.js.map → chunk-3UOSVTFR.js.map} +0 -0
  373. /package/dist/{chunk-TTKWTT72.js.map → chunk-3ZW6ZQO6.js.map} +0 -0
  374. /package/dist/{chunk-UV72DEZD.js.map → chunk-4B77XSG5.js.map} +0 -0
  375. /package/dist/{chunk-LMHDFOVV.js.map → chunk-5CPI2QWG.js.map} +0 -0
  376. /package/dist/{chunk-P72WZMWQ.js.map → chunk-5FZQ74K5.js.map} +0 -0
  377. /package/dist/{chunk-BRT7KEXU.js.map → chunk-6TWXQ4E2.js.map} +0 -0
  378. /package/dist/{chunk-CV6ZYXK3.js.map → chunk-7I7AYIUQ.js.map} +0 -0
  379. /package/dist/{chunk-TVVEYCNW.js.map → chunk-7K5Q6COX.js.map} +0 -0
  380. /package/dist/{chunk-JN57HZCD.js.map → chunk-ATEAL5EI.js.map} +0 -0
  381. /package/dist/{chunk-4PYLBXX6.js.map → chunk-AYAROCWD.js.map} +0 -0
  382. /package/dist/{chunk-NB2P47N7.js.map → chunk-CUUY5CC4.js.map} +0 -0
  383. /package/dist/{chunk-KL5Y6PEV.js.map → chunk-E3ZMFFQZ.js.map} +0 -0
  384. /package/dist/{chunk-55FDQYPS.js.map → chunk-ES5IHQ6M.js.map} +0 -0
  385. /package/dist/{chunk-N47ZWQBO.js.map → chunk-G2NSSQES.js.map} +0 -0
  386. /package/dist/{chunk-GSWPU5CR.js.map → chunk-GD3QOBMB.js.map} +0 -0
  387. /package/dist/{chunk-SACPRJ7F.js.map → chunk-JNIJBXVK.js.map} +0 -0
  388. /package/dist/{chunk-DGLON3AL.js.map → chunk-KNRG6ZGJ.js.map} +0 -0
  389. /package/dist/{chunk-GEUDRENF.js.map → chunk-MMTG3SCJ.js.map} +0 -0
  390. /package/dist/{chunk-WZFAPHIK.js.map → chunk-MU7ZHSZE.js.map} +0 -0
  391. /package/dist/{chunk-W4FBGYGK.js.map → chunk-NRV4Y3PM.js.map} +0 -0
  392. /package/dist/{chunk-KQ2XCQYN.js.map → chunk-P2BLHUL2.js.map} +0 -0
  393. /package/dist/{chunk-6L775BUB.js.map → chunk-QE63OHLB.js.map} +0 -0
  394. /package/dist/{chunk-ONHRRJZM.js.map → chunk-QJAQNXWI.js.map} +0 -0
  395. /package/dist/{chunk-6RYWNBSA.js.map → chunk-SVZGA2MK.js.map} +0 -0
  396. /package/dist/{chunk-OCMLGND7.js.map → chunk-WWZ35GWW.js.map} +0 -0
  397. /package/dist/{chunk-A5N6ISRK.js.map → chunk-ZN4UZWMT.js.map} +0 -0
  398. /package/dist/{chunk-7M6APKJL.js.map → chunk-ZYU7ZFLT.js.map} +0 -0
  399. /package/dist/{first-start-migration-LEXL3XYL.js.map → first-start-migration-BKNGOFED.js.map} +0 -0
package/dist/index.d.ts CHANGED
@@ -2,8 +2,7 @@ export { PluginEntryResolverOptions, resolvePluginEntry } from './plugin-entry-r
2
2
  export { isOpenaiApiKeyDisabled, parseConfig, resolveEnvVars } from './config.js';
3
3
  export { resolveRemnicConfigRecord } from './config-record.js';
4
4
  export { MigrationOptions, MigrationResult, RollbackResult, migrateFromEngram, rollbackFromEngramMigration } from './migrate/from-engram.js';
5
- import { S as SpeakerRegistry, W as WearablesService } from './orchestrator-DB93S48I.js';
6
- export { D as DEFAULT_SELF_NAME, O as Orchestrator, R as ResolvedSpeaker, a as SpeakerOverride, b as WEARABLE_SOURCE_PREFIX, c as WearableDayTranscriptView, d as WearableMemoryGenDeps, e as WearableMemoryGenResult, f as WearableMemorySearchResult, g as WearableMemoryWriter, h as WearableSearchBackend, i as WearableStorageIo, j as WearableSyncDeps, k as WearableSyncOptions, l as WearableTranscriptSearchResult, m as WearablesServiceDeps, n as buildExtractionTurns, o as dateInTimezone, p as defaultTimezone, q as defaultWorkspaceDir, r as distinctSpeakerLabels, s as emptySpeakerRegistry, t as generateWearableMemories, u as importNativeMemories, v as loadSpeakerRegistry, w as locateTranscriptPath, x as memoryStatusForMode, y as resolveSpeaker, z as resolveSyncDates, A as sanitizeSessionKeyForFilename, B as saveSpeakerRegistry, E as speakerRegistryKey, F as speakersFilePath, H as syncWearableSource, J as wearableDayTag, K as wearableSourceLabel, L as writeDailyDigestMemory } from './orchestrator-DB93S48I.js';
5
+ export { O as Orchestrator, d as defaultWorkspaceDir, s as sanitizeSessionKeyForFilename } from './orchestrator-C9ZVppNh.js';
7
6
  export { normalizeProjectionPreview, normalizeProjectionTags } from './memory-projection-format.js';
8
7
  export { ModelCapabilities, ModelRegistry } from './model-registry.js';
9
8
  export { ACTIVE_STATUSES, ContradictionFilter, ContradictionJudgeBatchResult, ContradictionJudgeInput, ContradictionJudgeResult, ContradictionListResult, ContradictionVerdict, ResolutionResult, ResolutionVerb, ScanDependencies, ScanResult, computePairId, executeResolution, isCoolingDown, isValidResolutionVerb, judgeContradictionPairs, listPairs, readPair, resolvePair, runContradictionScan, writePair, writePairs } from './contradiction/index.js';
@@ -13,8 +12,8 @@ export { TargetedFactRecallOptions, buildTargetedFactRecallSection, shouldRecall
13
12
  export { FocusedListRecallOptions, buildFocusedListRecallSection, shouldRecallFocusedListEvidence } from './focused-list-recall.js';
14
13
  export { ResponseGuidanceRecallOptions, buildResponseGuidanceRecallSection, shouldRecallResponseGuidance } from './response-guidance-recall.js';
15
14
  export { EventOrderRecallOptions, buildEventOrderRecallSection, shouldRecallEventOrderEvidence } from './event-order-recall.js';
16
- import { S as StorageManager, M as MemoryWriteResult } from './storage-BKhHHnRo.js';
17
- export { C as ContentHashIndex, a as FUSION_KIND, c as composeFusionDayMeta, h as hashFusionBody, p as parseEntityFile, b as parseFusionDay, s as serializeEntityFile, d as serializeFusionDay } from './storage-BKhHHnRo.js';
15
+ import { S as StorageManager, a as MeetingRecordStore } from './storage-XGawwqXE.js';
16
+ export { C as ContentHashIndex, c as FUSION_KIND, d as MEETINGS_DIR_NAME, e as MEETING_FORMAT_VERSION, f as MEETING_KIND, g as MeetingRecordBase, h as MeetingRecordFileIo, b as MeetingRecordSummary, i as MeetingSaveResult, M as MemoryWriteResult, j as composeFusionDayMeta, k as composeMeetingRecord, l as hashFusionBody, m as meetingIdDate, p as parseEntityFile, n as parseFusionDay, o as parseMeetingRecordSummary, s as serializeEntityFile, q as serializeFusionDay, r as serializeMeetingRecord } from './storage-XGawwqXE.js';
18
17
  import { SealedMemoryEnvelope } from './write-envelope.js';
19
18
  export { AccessWriteFingerprintParts, ComposeEnvelopeOptions, FINGERPRINT_EXEMPT_FIELDS, FINGERPRINT_SCOPE_FIELDS, FingerprintScope, MemoryWriteInput, ObserveFingerprintParts, STRUCTURED_ATTRIBUTE_LIMITS, TAG_LIMITS, WRITE_FINGERPRINT_FIELDS, WriteContext, buildAccessWriteRequestFingerprint, buildObserveRequestFingerprint, buildWriteIdempotencyPayload, composeMemoryEnvelope, isSealedMemoryEnvelope, sealedWriteToLegacyArgs } from './write-envelope.js';
20
19
  export { HostEmbeddingInputType, HostEmbeddingProvider, getHostEmbeddingProvider, normalizeHostEmbeddingVector, registerHostEmbeddingProvider } from './host-embedding-provider.js';
@@ -23,13 +22,13 @@ export { CodexCliFallbackConfig, CodexCliFallbackMessage, CodexCliFallbackOption
23
22
  export { BufferSurpriseProbe, SmartBuffer, TriggerDecision } from './buffer.js';
24
23
  export { ComputeSurpriseOptions, DEFAULT_SURPRISE_K, RecentMemoryLike, computeSurprise } from './buffer-surprise.js';
25
24
  export { BufferSurpriseDistribution, BufferSurpriseReader, BufferSurpriseReportOptions, reportBufferSurpriseDistribution } from './buffer-surprise-report.js';
26
- import { aG as CodingContext, aW as CodingModeConfig, aX as FusionConversationInput, aY as FusedSpeaker, aZ as FusedSegment, a_ as FusedDisagreement, a$ as FusionOptions, aI as WearableConversation, b0 as FusionDayResult, P as PluginConfig, b1 as CodingKnowledgeConfig, w as MemoryCategory, b2 as WearableCleanupSettings, b3 as WearableFusionConfig, aJ as WearableSourceSettings, aN as WearablesConfig, aM as WearableSourceConnector, aR as WearableCorrectionRule, b4 as WearableDayTranscriptMeta, aQ as WearableDayTranscript, b5 as ActivitySnapshot, b6 as ActivityDayMeta, b7 as ActivityDayDigest, b8 as ActivitySourceClient, b9 as ActivitySourceCheck, ba as ActivitySnapshotPage, bb as ActivityConfig, bc as ActivitySourceConfig, J as ExtractionResult, x as MemoryStatus, ah as ImportanceScore, bd as MeetingsDetectionConfig, be as MeetingsDetectionInput, bf as DetectedMeeting, bg as MeetingsConfig, bh as MeetingBuildInput, bi as FusedMeeting, bj as MeetingDetectionSource, bk as MeetingRecord, bl as MeetingActivitySnapshot } from './types-GBQZuT7l.js';
27
- export { bm as ActivityExtractionMode, a6 as AgentAccessAuthToken, k as BriefingActiveThread, bn as BriefingConfig, i as BriefingFocus, h as BriefingFollowup, bo as BriefingOpenCommitment, m as BriefingRecentEntity, l as BriefingResult, B as BriefingSections, bp as BriefingWindow, a0 as BufferSurpriseEvent, bq as BulkImportError, a2 as BulkImportOptions, a4 as BulkImportResult, a3 as BulkImportSource, br as BulkImportSourceAdapter, j as CalendarEvent, C as CalendarSource, bs as CodexCompatConfig, aV as ConsolidationObservation, bt as DEFAULT_RECALL_DISCLOSURE, bu as DisagreementKind, E as EntityFile, ag as EntityStructuredSection, bv as ExtractedFact, bw as FusedContribution, bx as FusedConversationProvenance, aw as FusedDayFile, av as FusedDayMeta, by as FusedSegmentProvenance, au as FusedWearableConversation, bz as FusionSegmentInput, G as GatewayConfig, bA as ImportSourceRole, a1 as ImportTurn, bB as ImportTurnValidationIssue, bC as MeetingAppSpan, bD as MeetingAudioWindow, bE as MeetingScreenContextEvent, bF as MeetingSummaryMode, aj as MemoryActionEligibilityContext, bG as MemoryActionEligibilitySource, aa as MemoryActionType, M as MemoryFile, o as MemoryFrontmatter, bH as MemoryObservation, bI as MemoryScope, bJ as RECALL_DISCLOSURE_LEVELS, b as RecallDisclosure, a5 as SecretRef, bK as SegmentPickReason, bL as WearableAuthCheck, bM as WearableFetchOptions, bN as WearableFetchPage, aL as WearableMemoryMode, aK as WearableNativeMemory, bO as WearableNativeMemoryPage, aP as WearableSourceStatus, aO as WearableSyncSummary, bP as WearableTranscriptSegment, bQ as isImportRole, bR as isRecallDisclosure, bS as parseIsoTimestamp, bT as validateImportTurn } from './types-GBQZuT7l.js';
25
+ import { b1 as CodingContext, b7 as CodingModeConfig, a_ as FusionConversationInput, b8 as FusedSpeaker, b9 as FusedSegment, ba as FusedDisagreement, bb as FusionOptions, aN as WearableConversation, bc as FusionDayResult, P as PluginConfig, bd as CodingKnowledgeConfig, w as MemoryCategory, be as WearableCleanupSettings, bf as WearableFusionConfig, aO as WearableSourceSettings, aS as WearablesConfig, aR as WearableSourceConnector, aW as WearableCorrectionRule, bg as WearableDayTranscriptMeta, aV as WearableDayTranscript, au as ActivitySnapshot, bh as ActivityDayMeta, bi as ActivityDayDigest, ax as ActivitySourceClient, bj as ActivitySourceCheck, bk as ActivitySnapshotPage, av as ActivityConfig, J as ExtractionResult, x as MemoryStatus, ah as ImportanceScore, bl as MeetingsDetectionConfig, aZ as MeetingsDetectionInput, b0 as DetectedMeeting, aY as MeetingsConfig, aB as MeetingRecord, bm as MeetingAudioWindow, bn as MeetingAppSpan } from './types-Bbs0qz6b.js';
26
+ export { bo as ActivityExtractionMode, aw as ActivitySourceConfig, a6 as AgentAccessAuthToken, k as BriefingActiveThread, bp as BriefingConfig, i as BriefingFocus, h as BriefingFollowup, bq as BriefingOpenCommitment, m as BriefingRecentEntity, l as BriefingResult, B as BriefingSections, br as BriefingWindow, a0 as BufferSurpriseEvent, bs as BulkImportError, a2 as BulkImportOptions, a4 as BulkImportResult, a3 as BulkImportSource, bt as BulkImportSourceAdapter, j as CalendarEvent, C as CalendarSource, bu as CodexCompatConfig, b6 as ConsolidationObservation, bv as DEFAULT_RECALL_DISCLOSURE, bw as DisagreementKind, E as EntityFile, ag as EntityStructuredSection, bx as ExtractedFact, by as FusedContribution, bz as FusedConversationProvenance, aA as FusedDayFile, az as FusedDayMeta, aD as FusedMeeting, bA as FusedSegmentProvenance, ay as FusedWearableConversation, bB as FusionSegmentInput, G as GatewayConfig, bC as ImportSourceRole, a1 as ImportTurn, bD as ImportTurnValidationIssue, a$ as MeetingActivitySnapshot, aX as MeetingBuildInput, aC as MeetingDetectionSource, bE as MeetingScreenContextEvent, bF as MeetingSummaryMode, aj as MemoryActionEligibilityContext, bG as MemoryActionEligibilitySource, aa as MemoryActionType, M as MemoryFile, o as MemoryFrontmatter, bH as MemoryObservation, bI as MemoryScope, bJ as RECALL_DISCLOSURE_LEVELS, b as RecallDisclosure, a5 as SecretRef, bK as SegmentPickReason, bL as WearableAuthCheck, bM as WearableFetchOptions, bN as WearableFetchPage, aQ as WearableMemoryMode, aP as WearableNativeMemory, bO as WearableNativeMemoryPage, aU as WearableSourceStatus, aT as WearableSyncSummary, bP as WearableTranscriptSegment, bQ as isImportRole, bR as isRecallDisclosure, bS as parseIsoTimestamp, bT as validateImportTurn } from './types-Bbs0qz6b.js';
28
27
  import { JudgeCandidate, JudgeVerdict } from './extraction-judge.js';
29
28
  export { JudgeBatchResult, JudgeVerdictKind, clearVerdictCache, createVerdictCache, getVerdictKind, isDurableVerdict, isValidCachedVerdict, judgeFactDurability, normalizeCachedVerdict, verdictCacheSize } from './extraction-judge.js';
30
29
  export { hasBroadGraphIntent, inferIntentFromText, intentCompatibilityScore, isTaskInitiationIntent, planRecallMode } from './intent.js';
31
- import { F as EngramAccessService } from './access-service-BtxW52vv.js';
32
- export { P as ProcedureStatsConfigSnapshot, G as ProcedureStatsRecent, H as ProcedureStatsReport, I as ProcedureStatusCounts, J as computeProcedureStats, K as formatProcedureStatsText } from './access-service-BtxW52vv.js';
30
+ import { F as EngramAccessService } from './access-service-CKEROeFP.js';
31
+ export { P as ProcedureStatsConfigSnapshot, G as ProcedureStatsRecent, H as ProcedureStatsReport, I as ProcedureStatusCounts, J as computeProcedureStats, K as formatProcedureStatsText } from './access-service-CKEROeFP.js';
33
32
  export { FILTER_LABELS as DIRECT_ANSWER_FILTER_LABELS, DirectAnswerCandidate, DirectAnswerConfig, DirectAnswerInput, DirectAnswerReason, DirectAnswerResult, isDirectAnswerEligible } from './direct-answer.js';
34
33
  export { MemoryTier, TierRoutingPolicy, TierTransitionDecision, computeTierValueScore, decideTierTransition } from './tier-routing.js';
35
34
  export { ApplyReasoningTraceBoostOptions, BoostableResult, DEFAULT_REASONING_TRACE_BOOST, applyReasoningTraceBoost, isReasoningTracePath, looksLikeProblemSolvingQuery } from './reasoning-trace-recall.js';
@@ -37,13 +36,13 @@ export { LcmMessagePartInput, LcmMessagePartKind, LcmMessagePartRow, MessagePart
37
36
  export { USER_BOUNDARY_SCOPES, USER_CONTEXT_SCOPES, USER_MODEL_CORE_QUESTION, USER_MODEL_DIMENSIONS, UserBoundaryScope, UserContextScope, UserModelCoverage, UserModelDimension, UserModelFacet, facetHasBoundary, isUserBoundaryScope, isUserContextScope, isUserModelDimension, normalizeUserContextScope, normalizeUserModelDimension, summarizeUserModelCoverage } from './user-model.js';
38
37
  export { BuildRetrievedMemoryProvenanceOptions, RetrievedMemoryCorrectionState, RetrievedMemoryProvenance, RetrievedMemorySafety, buildRetrievedMemoryProvenance, normalizeRetrievedMemoryProvenance, summarizeRetrievedMemoryProvenance } from './memory-provenance.js';
39
38
  export { CITATION_UNKNOWN, CitationContext, DEFAULT_CITATION_FORMAT, ParsedCitation, attachCitation, deriveSessionId, formatCitation, hasCitation, parseAllCitations, parseCitation, stripCitation } from './source-attribution.js';
40
- export { Q as QmdClient } from './qmd-cJT0crkF.js';
39
+ export { Q as QmdClient } from './qmd-R6XaQOZK.js';
41
40
  export { LanceDbBackend } from './search/lancedb-backend.js';
42
41
  export { OramaBackend } from './search/orama-backend.js';
43
42
  export { MeilisearchBackend } from './search/meilisearch-backend.js';
44
43
  export { buildEntityRecallSection } from './entity-retrieval.js';
45
44
  export { isNamespacePolicyCovered, resolvePrincipal } from './namespaces/principal.js';
46
- export { N as NamespaceCatalog, c as NamespaceCatalogFilter, d as NamespaceCatalogRebuildResult, e as NamespaceCatalogSkippedRoot, f as NamespaceDiscoverySource, b as NamespaceKind, a as NamespaceRecord, g as NamespaceTouchMetadata } from './catalog-iWvWz61I.js';
45
+ export { N as NamespaceCatalog, c as NamespaceCatalogFilter, d as NamespaceCatalogRebuildResult, e as NamespaceCatalogSkippedRoot, f as NamespaceDiscoverySource, b as NamespaceKind, a as NamespaceRecord, g as NamespaceTouchMetadata } from './catalog-BFTVo2Ez.js';
47
46
  export { SESSION_CHANNEL_TYPE, SessionIdentity, SessionStoragePaths, legacyParserReadbackDir, parseSessionIdentity, sessionStoragePaths } from './session-identity.js';
48
47
  export { storagePathHash } from './storage-paths.js';
49
48
  export { TrustZoneName, TrustZoneRecord, TrustZoneRecordKind, TrustZoneSourceClass, isTrustZoneName } from './trust-zones.js';
@@ -71,8 +70,8 @@ export { initLogger, log } from './logger.js';
71
70
  export { b as SemanticDedupDecision, a as SemanticDedupHit, S as SemanticDedupLookup, c as SemanticDedupOptions, d as decideSemanticDedup } from './semantic-TddhF0y7.js';
72
71
  export { drainPendingImpressionsForOfflineSync, drainPendingLifecycleForOfflineSync } from './offline-sync-impression-drain.js';
73
72
  export { OFFLINE_SYNC_APPLY_MAX_BODY_BYTES, OFFLINE_SYNC_CHANGESET_FORMAT, OFFLINE_SYNC_FILE_CONTENT_MAX_CHUNK_BYTES, OFFLINE_SYNC_FILE_CONTENT_TRANSFER_CHUNK_BYTES, OFFLINE_SYNC_SNAPSHOT_BASE_MAX_BODY_BYTES, OFFLINE_SYNC_SNAPSHOT_FORMAT, OFFLINE_SYNC_STATE_VERSION, OfflineSyncApplyChangesetResult, OfflineSyncApplyFileContentChunkResult, OfflineSyncApplySnapshotResult, OfflineSyncChange, OfflineSyncChangeset, OfflineSyncConflict, OfflineSyncFileContentChunk, OfflineSyncFileDigest, OfflineSyncFileRecord, OfflineSyncFileState, OfflineSyncFileTarget, OfflineSyncFileWriteTarget, OfflineSyncSnapshot, OfflineSyncState, applyOfflineSyncChangeset, applyOfflineSyncFileContentChunk, applyOfflineSyncSnapshot, buildOfflineSyncChangeset, buildOfflineSyncChangesetFromSnapshot, buildOfflineSyncSnapshot, buildOfflineSyncSnapshotForPaths, buildOfflineSyncSnapshotFromBase, compileOfflineSyncExcludeGlobs, defaultOfflineSyncStatePath, fileStatesFromSnapshot, globToRegExp, iterateOfflineSyncSnapshotFileRecords, normalizeOfflineSyncChangeset, normalizeOfflineSyncSnapshot, offlineSyncStateFromSnapshot, readOfflineSyncFileContentChunk, readOfflineSyncState, shouldPreferIncomingOfflineRuntimeFile, summarizeOfflineSyncChangeset, summarizeOfflineSyncPendingChanges, summarizeOfflineSyncPendingFiles, writeOfflineSyncState } from './offline-sync.js';
74
- import { D as DiscoveredExtension } from './semantic-consolidation-BaZlg0D8.js';
75
- export { E as ExtensionSchema, R as REMNIC_EXTENSIONS_TOTAL_TOKEN_LIMIT, b as buildExtensionsBlockForConsolidation, d as discoverMemoryExtensions, r as resolveExtensionsRoot } from './semantic-consolidation-BaZlg0D8.js';
73
+ import { D as DiscoveredExtension } from './semantic-consolidation-B2xo26UQ.js';
74
+ export { E as ExtensionSchema, R as REMNIC_EXTENSIONS_TOTAL_TOKEN_LIMIT, b as buildExtensionsBlockForConsolidation, d as discoverMemoryExtensions, r as resolveExtensionsRoot } from './semantic-consolidation-B2xo26UQ.js';
76
75
  export { ConnectorCapability, ConnectorInstance, ConnectorManifest, ConnectorRegistry, DoctorCheck, DoctorResult, InstallOptions, InstallResult, MARKETPLACE_MANIFEST_FILENAME, MARKETPLACE_SCHEMA_VERSION, MarketplaceConfig, MarketplaceEntry, MarketplaceInstallResult, MarketplaceInstallType, MarketplaceLogger, MarketplaceManifest, MarketplaceValidation, RemoveResult, checkMarketplaceManifest, coerceInstallExtension, doctorConnector, generateMarketplaceManifest, getConnectorToken, installConnector, installFromMarketplace, listConnectors, loadRegistry, removeConnector, saveRegistry, validateMarketplaceManifest, writeMarketplaceManifest } from './connectors/index.js';
77
76
  import { L as LiveConnector, S as SyncIncrementalResult } from './framework-CNDn2164.js';
78
77
  export { c as CONNECTOR_ID_PATTERN, C as ConnectorConfig, b as ConnectorCursor, a as ConnectorDocument, d as ConnectorDocumentSource, e as SyncIncrementalArgs, i as isValidConnectorId, p as persistableConnectorConfig, r as redactConnectorConfigSecrets } from './framework-CNDn2164.js';
@@ -87,9 +86,12 @@ import { T as Taxonomy, R as ResolverDecision } from './types-DJhqDJUV.js';
87
86
  export { a as TaxonomyCategory } from './types-DJhqDJUV.js';
88
87
  export { EnrichmentAuditEntry, EnrichmentCandidate, EnrichmentCostTier, EnrichmentPipelineConfig, EnrichmentProvider, EnrichmentProviderConfig, EnrichmentProviderRegistry, EnrichmentResult, EntityEnrichmentInput, WebSearchFn, WebSearchProvider, WebSearchProviderOptions, appendAuditEntry, defaultEnrichmentPipelineConfig, readAuditLog, runEnrichmentPipeline } from './enrichment/index.js';
89
88
  export { clearBulkImportSources, getBulkImportSource, listBulkImportSources, registerBulkImportSource } from './bulk-import/index.js';
90
- export { a as ProcessBatchContext, P as ProcessBatchFn, b as ProcessBatchResult, f as formatBatchTranscript, r as resolveBulkImportContext, c as runBulkImportPipeline, v as validateBatchSize } from './pipeline-DmGc-H66.js';
91
- export { B as BulkImportCliCommandOptions, p as parseStrictCliDate, r as runBulkImportCliCommand } from './cli-D9vXgWwM.js';
92
- import { BetterSqlite3Database } from './runtime/better-sqlite.js';
89
+ export { a as ProcessBatchContext, P as ProcessBatchFn, b as ProcessBatchResult, f as formatBatchTranscript, r as resolveBulkImportContext, c as runBulkImportPipeline, v as validateBatchSize } from './pipeline-id_-sqYm.js';
90
+ export { B as BulkImportCliCommandOptions, p as parseStrictCliDate, r as runBulkImportCliCommand } from './cli-BrwT9YMD.js';
91
+ import { S as SpeakerRegistry, W as WearablesService, d as MeetingMemoryWriter, e as MeetingMemoryGenerator, f as MeetingEpisodeGenResult, g as MeetingsBuilder, h as MeetingsDaySource, i as MeetingDayData } from './service-DgFWlZ-r.js';
92
+ export { D as DEFAULT_SELF_NAME, j as MeetingBuildOutcome, k as MeetingFusionOptions, l as MeetingMemoryOutcome, m as MeetingsBuilderHooks, a as MeetingsDayBuildSummary, n as MeetingsDayFactGenResult, b as MeetingsGetResult, o as MeetingsListDay, c as MeetingsListResult, M as MeetingsService, p as MeetingsServiceDeps, R as ResolvedSpeaker, q as SpeakerOverride, r as WEARABLE_SOURCE_PREFIX, s as WearableDayTranscriptView, t as WearableMemoryGenDeps, u as WearableMemoryGenResult, v as WearableMemorySearchResult, w as WearableMemoryWriter, x as WearableSearchBackend, y as WearableStorageIo, z as WearableSyncDeps, A as WearableSyncOptions, B as WearableTranscriptSearchResult, C as WearablesServiceDeps, E as buildExtractionTurns, F as buildMeetingRecordsForDay, G as dateInTimezone, H as defaultTimezone, I as distinctSpeakerLabels, J as emptySpeakerRegistry, K as fuseMeeting, L as generateWearableMemories, N as importNativeMemories, O as loadSpeakerRegistry, P as locateTranscriptPath, Q as memoryStatusForMode, T as resolveSpeaker, U as resolveSyncDates, V as saveSpeakerRegistry, X as speakerRegistryKey, Y as speakersFilePath, Z as syncWearableSource, _ as wearableDayTag, $ as wearableSourceLabel, a0 as writeDailyDigestMemory } from './service-DgFWlZ-r.js';
93
+ import { A as ActivityStore, a as ActivitySyncRunSummary } from './maintenance-C98njYb8.js';
94
+ export { b as ActivitySourceRunItem, c as ActivitySyncRunOptions, d as activityDatabasePath, e as applyActivitySchema, f as ensureActivityStateDir, o as openActivityDatabase, r as resolveActivitySyncDates, g as runActivitySyncOnce } from './maintenance-C98njYb8.js';
93
95
  import { SearchExecutionOptions } from './search/port.js';
94
96
  export { DEFAULT_IMPORT_BATCH_SIZE, ImportProgress, ImportedMemory, ImporterAdapter, ImporterParseOptions, ImporterTransformOptions, ImporterWriteResult, ImporterWriteTarget, RunImportOptions, RunImporterResult, defaultWriteMemoriesToOrchestrator, importedMemoryToTurn, runImporter, validateImportBatchSize, validateImportRateLimit } from './importers/index.js';
95
97
  export { FallbackLlmClient, FallbackLlmOptions, FallbackLlmResponse, FallbackLlmRuntimeContext } from './fallback-llm.js';
@@ -119,15 +121,14 @@ import './resolve-provider-secret.js';
119
121
  import './transcript.js';
120
122
  import './session-integrity.js';
121
123
  import './summarizer.js';
122
- import './orchestration/maintenance.js';
123
- import './namespaces/search.js';
124
+ import './compounding/engine.js';
125
+ import './shared-context/manager.js';
126
+ import './capabilities.js';
124
127
  import './consolidation-operator.js';
125
128
  import './memory-projection-store.js';
126
129
  import './maintenance/memory-governance.js';
130
+ import './runtime/better-sqlite.js';
127
131
  import 'better-sqlite3';
128
- import './compounding/engine.js';
129
- import './shared-context/manager.js';
130
- import './capabilities.js';
131
132
  import './utility-runtime.js';
132
133
  import './lifecycle.js';
133
134
  import './orchestration/compression-guideline-coordinator.js';
@@ -149,7 +150,7 @@ import './faiss-adapter-BHecI1fF.js';
149
150
  import './runtime/child-process.js';
150
151
  import './namespaces/storage.js';
151
152
  import './threading.js';
152
- import './scope-profiles-KG2nODX7.js';
153
+ import './scope-profiles-EhyuAKkd.js';
153
154
  import './graph.js';
154
155
  import './relevance.js';
155
156
  import './negative.js';
@@ -161,13 +162,16 @@ import './lcm/summarizer.js';
161
162
  import './lcm/dag.js';
162
163
  import './lcm/recall.js';
163
164
  import './lcm/queue.js';
165
+ import './namespaces/search.js';
164
166
  import './policy-runtime.js';
165
167
  import './profiling.js';
166
168
  import './schemas.js';
167
- import './access-namespace-preflight-tmwQgCT6.js';
169
+ import './extraction-error-classification.js';
170
+ import './access-namespace-preflight-CmErR03h.js';
168
171
  import './recall-explain-renderer.js';
169
172
  import './access-citation.js';
170
173
  import './explicit-capture.js';
174
+ import './access-wearables-meetings-surface.js';
171
175
  import './graph-snapshot.js';
172
176
  import './transfer/capsule-export.js';
173
177
  import './capsule-cli.js';
@@ -6488,6 +6492,14 @@ declare function getWearableConnector(id: string): WearableConnectorRegistration
6488
6492
  declare function listWearableConnectors(): string[];
6489
6493
  /** Test-only: reset the registry between cases. */
6490
6494
  declare function clearWearableConnectors(): void;
6495
+ /**
6496
+ * npm specifier of the optional package that provides a source's connector.
6497
+ * Built-in sources map to their real package (e.g. `desktop` ->
6498
+ * `@remnic/capture-audio`, not the nonexistent `@remnic/connector-desktop`);
6499
+ * unknown ids fall back to the `connector-<id>` convention. Used by
6500
+ * missing-connector install hints so they name the exact install command.
6501
+ */
6502
+ declare function builtInConnectorPackageSpecifier(id: string): string;
6491
6503
  declare function ensureBuiltInWearableConnectors(): Promise<void>;
6492
6504
 
6493
6505
  /**
@@ -6821,50 +6833,6 @@ interface WearablesCliIo {
6821
6833
  */
6822
6834
  declare function runWearablesCliCommand(service: WearablesService, args: string[], io: WearablesCliIo): Promise<number>;
6823
6835
 
6824
- /**
6825
- * Screen-activity SQLite store (issue #1899).
6826
- *
6827
- * Durable, capture-machine-agnostic store for on-screen text snapshots plus a
6828
- * per-machine sync cursor. Mirrors the LCM store conventions
6829
- * (packages/remnic-core/src/lcm/schema.ts): WAL, a `<name>_meta` schema-version
6830
- * row, `CREATE TABLE IF NOT EXISTS`, and an FTS5 virtual table created
6831
- * separately. better-sqlite3 is synchronous.
6832
- *
6833
- * Snapshots dedup on `(machine, content_hash)` so a re-sync is idempotent, and
6834
- * day queries use half-open [start, end) UTC bounds (AGENTS.md §23).
6835
- */
6836
-
6837
- declare function activityDatabasePath(memoryDir: string): string;
6838
- declare function ensureActivityStateDir(memoryDir: string): Promise<void>;
6839
- declare function openActivityDatabase(memoryDir: string): BetterSqlite3Database;
6840
- /** Apply the activity schema on an already-open handle (test/in-memory use). */
6841
- declare function applyActivitySchema(db: BetterSqlite3Database): void;
6842
- declare class ActivityStore {
6843
- private readonly db;
6844
- constructor(db: BetterSqlite3Database);
6845
- static open(memoryDir: string): ActivityStore;
6846
- /**
6847
- * Insert a snapshot, idempotent on (machine, captured_at_utc, content_hash):
6848
- * the same screen content recurring at a *different* time is kept; only an
6849
- * exact re-ingestion of the same capture dedups. Returns `inserted: false`
6850
- * for a duplicate. The FTS row is written only on a real insert (atomically),
6851
- * so it never drifts from the base table.
6852
- */
6853
- insertSnapshot(snapshot: ActivitySnapshot): {
6854
- inserted: boolean;
6855
- id: number;
6856
- };
6857
- /** Snapshots whose capture instant is in the half-open [start, end) window. */
6858
- listSnapshotsForDay(machine: string | null, startUtcInclusive: string, endUtcExclusive: string): ActivitySnapshot[];
6859
- getCursor(machine: string): string | null;
6860
- setCursor(machine: string, cursor: string | null, updatedAtUtc?: string): void;
6861
- /** Full-text search over snapshot text/app/window/url; newest first. */
6862
- searchSnapshots(query: string, limit: number): ActivitySnapshot[];
6863
- /** Retention: drop snapshots captured strictly before `cutoffUtc`. */
6864
- pruneOlderThan(cutoffUtc: string): number;
6865
- close(): void;
6866
- }
6867
-
6868
6836
  /**
6869
6837
  * Deterministic screen-activity day-digest renderer (issue #1899).
6870
6838
  *
@@ -6881,6 +6849,7 @@ declare const ACTIVITY_DIGEST_FORMAT_VERSION = 1;
6881
6849
  declare const ACTIVITY_DIR_NAME = "activity";
6882
6850
  declare function isValidActivityDate(date: string): boolean;
6883
6851
  declare function activityDigestPath(memoryDir: string, date: string): string;
6852
+ declare function timezoneOffsetIso(instant: Date, timezone: string): string;
6884
6853
  declare function assertValidTimezone(timezone: string): void;
6885
6854
  /** Half-open [start, end) UTC ISO bounds of a local day. */
6886
6855
  declare function activityDayWindow(date: string, timezone: string): {
@@ -6958,92 +6927,6 @@ declare class ActivityHttpSourceClient implements ActivitySourceClient {
6958
6927
  }): Promise<ActivitySnapshotPage>;
6959
6928
  }
6960
6929
 
6961
- /**
6962
- * Host-agnostic activity sync runner (issue #1900).
6963
- *
6964
- * Bridges parsed `config.activity` to the durable sync pipeline: the parser
6965
- * (config.ts) validates settings but never contacts a daemon, and
6966
- * `syncActivitySource` (pipeline.ts) syncs one source for one day. This runner
6967
- * is the missing middle — it instantiates one `ActivityHttpSourceClient` per
6968
- * configured source from the parsed config and drives a sync across the
6969
- * `syncDays` local-day window, but ONLY when the feature is enabled.
6970
- *
6971
- * The feature is master default-off: source config alone never starts a sync.
6972
- * When `config.enabled` is false the runner opens no store, builds no client,
6973
- * and makes no HTTP call or write — it returns a disabled summary. This mirrors
6974
- * `runLiveConnectorsOnce`'s disabled-vs-result reporting so a host scheduler
6975
- * (CLI, cron) can trigger it through the runtime with no OpenClaw imports.
6976
- *
6977
- * Cursor semantics are delegated wholesale to `syncActivitySource`: the
6978
- * per-machine cursor advances only after every page and the digest are durable,
6979
- * so a runtime failure (or an aborted stop) leaves the cursor unadvanced and a
6980
- * restart resumes from the persisted position. A per-source failure is captured
6981
- * as an error item and never aborts the other sources or the host flow.
6982
- */
6983
-
6984
- type ActivityNow = Date | (() => Date);
6985
- /** One configured source's aggregate result across the synced day window. */
6986
- interface ActivitySourceRunItem {
6987
- machineLabel: string;
6988
- /** True when at least one day synced durably (no error). */
6989
- ran: boolean;
6990
- fetched: number;
6991
- inserted: number;
6992
- duplicates: number;
6993
- digestsWritten: number;
6994
- /** Persisted cursor after the run; unadvanced from prior on failure. */
6995
- cursor: string | null;
6996
- /** Set when the source failed; distinguishes a fault from an empty page. */
6997
- error?: string;
6998
- /**
6999
- * Set when a durable day synced but its post-digest search reindex failed.
7000
- * The rows/digest/cursor are committed; the index is stale until the next
7001
- * refresh, so this is a signal (not a sync failure) for the scheduler.
7002
- */
7003
- reindexError?: string;
7004
- }
7005
- interface ActivitySyncRunSummary {
7006
- ranAt: string;
7007
- /** False means the feature is off: no client built, no HTTP, no write. */
7008
- enabled: boolean;
7009
- ranCount: number;
7010
- errorCount: number;
7011
- /** Sources whose durable sync succeeded but whose search reindex failed. */
7012
- reindexErrorCount: number;
7013
- totalInserted: number;
7014
- results: ActivitySourceRunItem[];
7015
- }
7016
- interface ActivitySyncRunOptions {
7017
- config: ActivityConfig;
7018
- memoryDir: string;
7019
- /** Injectable store; opened from memoryDir when omitted (and closed here). */
7020
- store?: ActivityStore;
7021
- /** Clock injection for deterministic day-window resolution in tests. */
7022
- now?: ActivityNow;
7023
- /** Abort a run in flight (stop); an aborted source leaves its cursor intact. */
7024
- signal?: AbortSignal;
7025
- /** Injectable client factory; builds an ActivityHttpSourceClient by default. */
7026
- createSourceClient?: (source: ActivitySourceConfig) => ActivitySourceClient;
7027
- /**
7028
- * Search-index refresh forwarded to each source sync as `afterWrites`, run
7029
- * after a digest is (re)written so it becomes discoverable (rule 31).
7030
- * Host wires the core index seam (SearchBackend.update); best-effort.
7031
- */
7032
- reindexSearch?: (signal?: AbortSignal) => Promise<void>;
7033
- }
7034
- /**
7035
- * The local-day window to sync, oldest first: today back `syncDays` calendar
7036
- * days in the configured timezone. Walking by calendar days (not fixed 24h
7037
- * intervals) keeps the window correct across DST transitions.
7038
- */
7039
- declare function resolveActivitySyncDates(syncDays: number, timezone: string, now: Date): string[];
7040
- /**
7041
- * Run one activity sync pass across every configured source. Disabled config
7042
- * short-circuits before any store/client/HTTP work; an enabled config syncs
7043
- * each source across the `syncDays` window and isolates per-source faults.
7044
- */
7045
- declare function runActivitySyncOnce(options: ActivitySyncRunOptions): Promise<ActivitySyncRunSummary>;
7046
-
7047
6930
  /**
7048
6931
  * In-process periodic driver for activity (screen-capture) sync (issue #1900).
7049
6932
  *
@@ -7298,392 +7181,156 @@ declare class MeetingsInputError extends Error {
7298
7181
  }
7299
7182
 
7300
7183
  /**
7301
- * Meeting fusion (issue #1900, Phase 4 slice 2).
7302
- *
7303
- * For a detected meeting window `[startUtc, endUtc)` (half-open, AGENTS.md §23),
7304
- * fuse the concurrent signals into a screen-aware `FusedMeeting`:
7184
+ * Meeting memory generation (issue #1900, Phase 4).
7305
7185
  *
7306
- * 1. Transcript clip every wearable source's segments to the window and run
7307
- * them through the SHARED wearables reconciliation (`fuseCluster`). Higher-
7308
- * `sourceTrust` text wins overlapping regions and the out-voted sources are
7309
- * recorded per segment; this module never re-implements alignment/dedup
7310
- * the repo rule is "extend the shared fusion module, never fork it".
7311
- * 2. Screen contextother-app foreground dwell within the window, kept only
7312
- * when it lasts `contextDwellSeconds`, plus deduped on-screen text excerpts
7313
- * capped at `maxContextChars`.
7314
- * 3. Attendees — distinct non-wearer speaker labels from the fused transcript
7315
- * (already resolved through the wearables speaker registry upstream).
7186
+ * Layer 1 — the deterministic meeting EPISODE: one recall-anchor memory per
7187
+ * meeting ("what meetings did I have Tuesday?"), always written when
7188
+ * `meetings.enabled`, no LLM. Title, time span, attendees, and source list are
7189
+ * a pure function of the record, so an unchanged meeting is skipped by content
7190
+ * hash. Reuses the shared sealed-envelope composer + secure write path
7191
+ * (`composeMemoryEnvelope` / `writeSealedMemory`) no bespoke memory format.
7316
7192
  *
7317
- * Pure and deterministic: same inputs same `FusedMeeting`.
7193
+ * The LLM summary/facts layer (decisions + commitments through the existing
7194
+ * trust pipeline) builds on this module in the trust-gated slice; it reuses the
7195
+ * same writer interface and the wearables judge/trust machinery rather than
7196
+ * forking it.
7318
7197
  */
7319
7198
 
7320
- /** Per-run tuning that mirrors the wearables fusion knobs. */
7321
- interface MeetingFusionOptions {
7322
- /** Per-source trust priors handed to reconciliation. */
7323
- sourceTrust?: Record<string, number>;
7324
- /** Max drift (ms) for two segments to align across sources. */
7325
- windowToleranceMs?: number;
7326
- }
7327
- /** Fuse one detected meeting's transcript + screen context into a FusedMeeting. */
7328
- declare function fuseMeeting(input: MeetingBuildInput, config: MeetingsConfig, options?: MeetingFusionOptions): FusedMeeting;
7329
-
7330
- /**
7331
- * Meeting record composition, serialization, and the on-disk store (#1900).
7332
- *
7333
- * One markdown file per meeting under `<memoryDir>/meetings/<YYYY-MM-DD>/<id>.md`
7334
- * with YAML frontmatter. Placement mirrors the wearables day-store rationale:
7335
- *
7336
- * - OUTSIDE the memory scan roots (facts/, procedures/, …) so meeting
7337
- * transcripts never surface as memories in recall or governance passes;
7338
- * - INSIDE the QMD collection root (the memory dir) so records are full-text
7339
- * searchable after the next index update — but never auto-recalled raw.
7340
- *
7341
- * Records rebuild idempotently on `contentHash`: an unchanged meeting re-writes
7342
- * nothing. The transcript body reuses the wearables day-store line grammar
7343
- * (`**Name** [HH:MM]: text`, escape-aware) so existing parsers apply. File IO is
7344
- * injected (like the fusion artifact store) so encrypted-at-rest + atomic-write
7345
- * semantics are inherited without this module touching the secure-store key.
7346
- */
7347
-
7348
- declare const MEETINGS_DIR_NAME = "meetings";
7349
- declare const MEETING_KIND: "meeting";
7350
- declare const MEETING_FORMAT_VERSION = 1;
7351
- /** The detection-source label from a meeting id would be ambiguous, so validate
7352
- * an id AND confirm its embedded date matches the directory it lives under. */
7353
- declare function meetingIdDate(id: string): string | null;
7354
- /** Base fields (identity + detection) a fused meeting is composed with. */
7355
- interface MeetingRecordBase {
7356
- id: string;
7357
- date: string;
7358
- startUtc: string;
7359
- endUtc: string;
7360
- app?: string;
7361
- detectionSource: MeetingDetectionSource;
7362
- title?: string;
7363
- }
7364
- /** Compose a full meeting record (with contentHash) from its base + fused view. */
7365
- declare function composeMeetingRecord(base: MeetingRecordBase, fused: FusedMeeting): MeetingRecord;
7366
- /** Serialize a meeting record into its persisted markdown form. */
7367
- declare function serializeMeetingRecord(record: MeetingRecord): string;
7368
- /** A meeting record's frontmatter, parsed for listing + idempotency checks. */
7369
- interface MeetingRecordSummary {
7370
- id: string;
7371
- date: string;
7372
- startUtc: string;
7373
- endUtc: string;
7374
- app?: string;
7375
- detectionSource: string;
7376
- title?: string;
7377
- attendees: string[];
7378
- sources: string[];
7379
- corroboratedBy: string[];
7380
- snapshotCount: number;
7381
- contentHash: string;
7199
+ /** Frontmatter `source` prefix for meeting-derived memories. */
7200
+ declare const MEETING_SOURCE_PREFIX = "meeting";
7201
+ /** `source: meeting:<id>` walks memory → record → day transcripts. */
7202
+ declare function meetingSourceLabel(id: string): string;
7203
+ /** `meeting-day:<date>` tag for day-scoped recall ("meetings on Tuesday"). */
7204
+ declare function meetingDayTag(date: string): string;
7205
+ /** Render the deterministic episode content for a meeting. Pure. */
7206
+ declare function composeMeetingEpisodeContent(record: MeetingRecord): string;
7207
+ /**
7208
+ * Write the deterministic episode memory for one meeting. Idempotent: skips
7209
+ * when an identical episode already exists. Returns true when a new episode was
7210
+ * written. The episode is `active` (a recall anchor, not a trust-gated claim).
7211
+ */
7212
+ declare function writeMeetingEpisodeMemory(record: MeetingRecord, writer: MeetingMemoryWriter): Promise<boolean>;
7213
+ /** Write one deterministic episode per record, idempotently. */
7214
+ declare function generateMeetingEpisodes(records: readonly MeetingRecord[], writer: MeetingMemoryWriter): Promise<MeetingEpisodeGenResult>;
7215
+ /** One LLM-extracted meeting claim. */
7216
+ interface MeetingFactCandidate {
7217
+ /** Claim text (a decision, commitment, or open question). */
7218
+ content: string;
7219
+ /** Memory category — commitments carry the decay-aware `commitment` category. */
7220
+ category: Extract<MemoryCategory, "fact" | "decision" | "commitment">;
7221
+ /** Extractor confidence (0..1); defaults to 0.7 downstream when absent. */
7222
+ confidence?: number;
7382
7223
  }
7383
- /** Parse a meeting record's frontmatter. Returns null when the content is not a
7384
- * meeting record (wrong kind, missing frontmatter) so callers distinguish a
7385
- * non-record from a corrupt one. */
7386
- declare function parseMeetingRecordSummary(raw: string): MeetingRecordSummary | null;
7387
- /**
7388
- * Encrypted-at-rest + atomic file IO the meeting record store needs. Satisfied
7389
- * by StorageManager (which owns the secure-store key + atomic write path) and
7390
- * injected so this module performs NO direct fs — records inherit the same
7391
- * encrypted-at-rest + atomic-write semantics as memories. Same shape as the
7392
- * fusion artifact store's IO port (kept per-module, not shared, so each store's
7393
- * boundary stays explicit).
7394
- */
7395
- interface MeetingRecordFileIo {
7396
- writeFile(filePath: string, content: string): Promise<void>;
7397
- readFile(filePath: string): Promise<string>;
7398
- readDir(dirPath: string): Promise<string[]>;
7399
- deleteFile(filePath: string): Promise<void>;
7400
- realpath(filePath: string): Promise<string>;
7401
- lstat(filePath: string): Promise<{
7402
- isSymbolicLink: boolean;
7224
+ /** LLM extractor over a meeting's fused transcript + screen context. Injected so
7225
+ * `off` mode provably never invokes it and tests stay deterministic. */
7226
+ interface MeetingSummaryExtractor {
7227
+ extract(input: {
7228
+ record: MeetingRecord;
7229
+ transcriptText: string;
7230
+ screenContextText: string;
7231
+ }): Promise<{
7232
+ summary: string;
7233
+ candidates: MeetingFactCandidate[];
7403
7234
  }>;
7404
7235
  }
7405
- /** Result of an idempotent record save. */
7406
- interface MeetingSaveResult {
7407
- path: string;
7408
- /** False when the on-disk contentHash already matched (nothing rewritten). */
7409
- written: boolean;
7410
- contentHash: string;
7236
+ /** Optional durability judge; verdicts align with the shared trust pipeline. */
7237
+ interface MeetingSummaryJudge {
7238
+ judge(candidates: readonly MeetingFactCandidate[]): Promise<Array<"accept" | "reject" | "defer">>;
7411
7239
  }
7412
- /**
7413
- * Owns the meeting record files under `<memoryDir>/meetings/<date>/<id>.md`.
7414
- * Path construction, date/id validation, and symlink containment live here; the
7415
- * bytes flow through the injected secure IO. Containment is anchored to the real
7416
- * memory-dir root and mirrors the fusion artifact store (AGENTS.md pattern #3).
7417
- */
7418
- declare class MeetingRecordStore {
7419
- private readonly memoryDir;
7420
- private readonly io;
7421
- private readonly meetingsDir;
7422
- constructor(memoryDir: string, io: MeetingRecordFileIo);
7423
- recordPath(date: string, id: string): string;
7424
- /** Idempotently persist a record: skip the write when contentHash is unchanged. */
7425
- saveMeetingRecord(record: MeetingRecord): Promise<MeetingSaveResult>;
7426
- /** Read a stored record's raw markdown; null when absent. */
7427
- readMeetingRecord(date: string, id: string): Promise<string | null>;
7428
- /**
7429
- * Read + parse every stored record for a day exactly ONCE, sorted by start
7430
- * time (ascending, id tiebreak). The single day-read path both `listMeetingIds`
7431
- * and `listMeetingSummaries` derive from — no record is read twice.
7432
- */
7433
- private readDaySummaries;
7434
- /** List meeting ids stored for a day, sorted by start time (ascending). */
7435
- listMeetingIds(date: string): Promise<string[]>;
7436
- /** Read parsed summaries for a day, sorted by start time. */
7437
- listMeetingSummaries(date: string): Promise<MeetingRecordSummary[]>;
7438
- /** List dates that have at least one stored meeting record, newest first. */
7439
- listMeetingDates(): Promise<string[]>;
7440
- /** Remove a stored record. Idempotent: a no-op when already absent. */
7441
- deleteMeetingRecord(date: string, id: string): Promise<void>;
7442
- private readRaw;
7443
- private assertPathContained;
7444
- /** The `<meetings>/<date>` directory on the path to `targetPath`, or null when
7445
- * `targetPath` is the meetings root itself. */
7446
- private dayDirWithin;
7447
- private assertNotSymlink;
7448
- private assertNoEscape;
7240
+ interface MeetingSummaryDeps {
7241
+ extractor: MeetingSummaryExtractor;
7242
+ judge?: MeetingSummaryJudge;
7243
+ writer: MeetingMemoryWriter;
7449
7244
  }
7450
-
7451
- /**
7452
- * Meeting memory-generation SEAM (issue #1900 — engine/memory decouple).
7453
- *
7454
- * Engine-layer boundary between the deterministic meeting builder and the
7455
- * memory-generation layer. `MeetingsBuilder` (detect/fuse/store/build) depends
7456
- * ONLY on `MeetingMemoryGenerator` declared here — never on `memory-gen.ts` — so
7457
- * the deterministic engine carries zero dependency on episode/fact generation
7458
- * and ships in its own scope-budgeted PR. The concrete generator lives in
7459
- * `memory-gen.ts` behind `createMeetingMemoryGenerator`, which implements this
7460
- * interface by driving the existing episode/fact/retract logic.
7461
- */
7462
-
7463
- /**
7464
- * Narrow writer interface satisfied by `StorageManager` — the same sealed
7465
- * write entry point the wearables generator uses, so meeting memories inherit
7466
- * encrypted-at-rest + atomic write + dedup without this module knowing the key.
7467
- */
7468
- interface MeetingMemoryWriter {
7469
- writeSealedMemory(envelope: SealedMemoryEnvelope, extras: {
7470
- importance?: ImportanceScore;
7471
- contentHashSource?: string;
7472
- status?: MemoryStatus;
7473
- memoryKind?: "episode" | "note" | "box" | "dream" | "procedural";
7474
- }): Promise<MemoryWriteResult>;
7475
- /**
7476
- * True when an active/pending memory whose frontmatter `source` equals
7477
- * `source` already carries this exact content. Meeting memories are episodes
7478
- * (`moment`) and decisions/commitments (`decision`/`commitment`) — categories
7479
- * the storage fact-hash index does NOT cover — so idempotency is a
7480
- * source-scoped content scan, mirroring the wearables writer, NOT
7481
- * `hasFactContentHash` (fact-only; always false here → duplicates on rebuild).
7482
- */
7483
- hasMemoryFromSource(source: string, content: string): Promise<boolean>;
7484
- /**
7485
- * Retire (invalidate) every memory whose frontmatter `source` equals `source`.
7486
- * Returns the count retired. Used to reconcile away a removed meeting's
7487
- * episode/summary memories so recall never surfaces a meeting `show` can't load.
7488
- */
7489
- retireMemoriesFromSource(source: string): Promise<number>;
7490
- }
7491
- /** Result of generating episode memories for a day's meetings. */
7492
- interface MeetingEpisodeGenResult {
7493
- /** Episodes newly written. */
7494
- written: number;
7495
- /** Episodes skipped because an identical one already existed. */
7496
- skipped: number;
7497
- }
7498
- /** Day-level aggregate of the trust-gated summary/fact layer across records. */
7499
- interface MeetingsDayFactGenResult {
7500
- /** True when the LLM extractor ran for at least one record. */
7245
+ interface MeetingSummaryResult {
7246
+ /** False when summaryMode is `off` (the extractor is never called). */
7501
7247
  llmInvoked: boolean;
7502
7248
  /** Facts written active. */
7503
7249
  active: number;
7504
- /** Facts queued for review (pending_review). */
7250
+ /** Facts written to the review queue (pending_review). */
7505
7251
  review: number;
7506
- /** Candidates/summaries dropped below the trust bar or judge-rejected. */
7252
+ /** Candidates dropped below the trust bar or judge-rejected. */
7507
7253
  dropped: number;
7508
- /** Candidates/summaries skipped because an identical memory already existed. */
7254
+ /** Candidates/summary skipped because an identical memory already existed
7255
+ * for this meeting (idempotent rebuild). */
7509
7256
  skipped: number;
7510
- /** Count of records whose summary memory was written. */
7511
- summariesWritten: number;
7512
- }
7513
- /**
7514
- * Outcome the memory generator returns to the builder after a day's records are
7515
- * built and persisted. Counts feed the day-build summary; `reindexNeeded` folds
7516
- * the "reindex when new episodes/facts were written even if no record changed"
7517
- * rule so the builder never reaches into the memory layer to decide it.
7518
- */
7519
- interface MeetingMemoryOutcome {
7520
- /** Episode-memory counts, present only when records were built. */
7521
- episodes?: MeetingEpisodeGenResult;
7522
- /** Trust-gated summary/fact counts, present only when summary deps ran. */
7523
- facts?: MeetingsDayFactGenResult;
7524
- /** True when newly written memories require an isolated reindex. */
7525
- reindexNeeded: boolean;
7526
- /** Non-fatal warnings raised while generating memories. */
7257
+ /** True when a non-empty summary memory was written. */
7258
+ summaryWritten: boolean;
7259
+ /** Facts the #1579 tombstone chokepoint downgraded to pending_review (no
7260
+ * active copy). Counted here, NOT in `active`/`review`, so callers never
7261
+ * report a blocked write as a successfully written fact (#1645). */
7262
+ tombstoneBlocked: number;
7263
+ /** Non-fatal degradation notes (e.g. the durability judge threw and the
7264
+ * pass continued on trust bands alone). */
7527
7265
  warnings: readonly string[];
7528
7266
  }
7529
7267
  /**
7530
- * Seam the deterministic builder depends on. Invoked once per day build after
7531
- * the record-store writes with, for the day:
7532
- * - `built` every record composed this build (new, updated, unchanged).
7533
- * - `removedIds` — stale ids the rebuild reconciled away (retract memories).
7534
- * - `unchangedIds`— built ids whose stored `contentHash` was IDENTICAL this
7535
- * build (nothing rewritten). The generator SKIPS all
7536
- * episode/summary/fact work for these: an idempotent rebuild
7537
- * must not re-invoke the LLM or duplicate memories.
7538
- * - `updatedIds` — built ids that existed before AND were rewritten this build
7539
- * (same id, changed `contentHash`). The generator REFRESHES
7540
- * them: retract the stale episode/summary memories for that
7541
- * source, then regenerate from the new record.
7542
- * Ids not in `unchangedIds` or `updatedIds` are newly built — generated fresh
7543
- * with no retract. The three id sets are disjoint subsets of `built`. The
7544
- * implementation reports the counts + reindex signal the builder folds into its
7545
- * day summary.
7546
- */
7547
- interface MeetingMemoryGenerator {
7548
- onRecordsBuilt(input: {
7549
- built: readonly MeetingRecord[];
7550
- removedIds: readonly string[];
7551
- unchangedIds: readonly string[];
7552
- updatedIds: readonly string[];
7553
- }): Promise<MeetingMemoryOutcome>;
7554
- }
7555
-
7556
- /**
7557
- * Meeting building orchestration (issue #1900, Phase 4 slice 2).
7268
+ * Layer 2: extract a trust-gated summary + facts (decisions/commitments/open
7269
+ * questions) for one meeting and persist the survivors. Reuses the shared trust
7270
+ * pipeline (`computeTrustScore` + `decideSmart`), NOT a parallel scorer.
7558
7271
  *
7559
- * Ties the pure pieces together: detect the day's meetings, fuse each window's
7560
- * transcript + screen context, and compose idempotent records. Day data is
7561
- * supplied through an injected source so fixtures (and the later activity/
7562
- * wearables wiring) share one code path no hidden IO here.
7563
- *
7564
- * Gated on `meetings.enabled`: a disabled subsystem builds nothing on every
7565
- * surface (degradation-matrix row). Degrades within an enabled build too — a
7566
- * window with no audio yields an empty transcript, and no activity yields a
7567
- * record with no screen-context section — because `fuseMeeting` handles both.
7272
+ * - `off` → returns immediately; the extractor is NEVER invoked (episode-only).
7273
+ * - `review`→ every candidate lands in the review queue (pending_review).
7274
+ * - `smart` judge verdict + trust bands route each candidate to active /
7275
+ * review / drop; corroboration (>= 2 transcript sources) boosts trust.
7568
7276
  */
7569
-
7570
- /** All of a day's already-loaded signals a build needs. */
7571
- interface MeetingDayData {
7572
- /** App spans + audio windows for the day (fed to the detector). */
7573
- detection: MeetingsDetectionInput;
7574
- /** Fusion conversation inputs across all wearable sources for the day. */
7575
- conversations: FusionConversationInput[];
7576
- /** Screen-activity snapshots for the day. */
7577
- activity?: MeetingActivitySnapshot[];
7578
- }
7579
- /** Supplies a day's signals. Backed by fixtures in tests; by the activity +
7580
- * wearables stores in the wiring slice. */
7581
- interface MeetingsDaySource {
7582
- loadDayData(date: string): Promise<MeetingDayData> | MeetingDayData;
7583
- }
7584
- declare function buildMeetingRecordsForDay(data: MeetingDayData, config: MeetingsConfig, options?: MeetingFusionOptions,
7585
- /** Map a detected meeting to the id its record should carry. Defaults to the
7586
- * detector's start-anchored id; the builder overrides this to preserve an
7587
- * existing overlapping record's id across shifted-start resyncs. */
7588
- resolveMeetingId?: (meeting: DetectedMeeting) => string): MeetingRecord[];
7589
- /** Per-meeting outcome of a day build. */
7590
- interface MeetingBuildOutcome {
7591
- id: string;
7592
- startUtc: string;
7593
- endUtc: string;
7594
- detectionSource: string;
7595
- sources: string[];
7596
- attendees: string[];
7597
- snapshotCount: number;
7598
- /** False when the record's contentHash was unchanged (nothing rewritten). */
7599
- written: boolean;
7600
- }
7601
- /** Result of building one day's meetings. */
7602
- interface MeetingsDayBuildSummary {
7603
- date: string;
7604
- /** False when `meetings.enabled` is off (zero behavior). */
7605
- enabled: boolean;
7606
- meetings: MeetingBuildOutcome[];
7607
- /** Records written (new or changed). */
7608
- built: number;
7609
- /** Records skipped (unchanged contentHash). */
7610
- skipped: number;
7611
- /** Ids of stale same-day records deleted because they no longer detect. */
7612
- removed: string[];
7613
- /**
7614
- * Set when the optional reindex hook rejected AFTER records were already
7615
- * persisted. The store mutation still succeeded the build is reported as
7616
- * successful with this generic warning, and the next scheduled index catches
7617
- * up. Deliberately does NOT embed the raw error text: this string is printed
7618
- * to the CLI's stdout, and internal error detail is logged separately.
7619
- */
7620
- reindexWarning?: string;
7621
- /**
7622
- * Set when the injected `memoryGenerator` rejected AFTER records were already
7623
- * persisted, OR when a successful generation returned non-fatal warnings. Like
7624
- * `reindexWarning`, the record writes still succeeded, so the build is reported
7625
- * successful with this warning; on rejection the next build (or scheduled
7626
- * maintenance) regenerates the missing memories. Carries no raw exception text —
7627
- * only the generic rejection message or the generator's own warning strings.
7628
- */
7629
- memoryWarning?: string;
7630
- /**
7631
- * Deterministic episode-memory counts, present only when a `memoryGenerator`
7632
- * was injected. One recall-anchor episode is written per built record (idempotent).
7633
- */
7634
- episodes?: MeetingEpisodeGenResult;
7635
- /**
7636
- * Trust-gated summary/fact counts (decisions, commitments, questions, and the
7637
- * synthesized summary), present only when a `memoryGenerator` with summary deps
7638
- * ran and `summaryMode !== "off"`. Aggregated across the day's records.
7639
- */
7640
- facts?: MeetingsDayFactGenResult;
7641
- }
7642
- /** Optional side effects the builder fires after a day build. */
7643
- interface MeetingsBuilderHooks {
7644
- /**
7645
- * Invoked once per build when records changed (`built > 0 || removed > 0`).
7646
- * Meeting records live inside the QMD collection root for full-text search,
7647
- * so a host that wants them discoverable immediately (rather than at the next
7648
- * scheduled reindex) supplies a reindex here. No-op when omitted — records are
7649
- * still picked up by the next index update.
7650
- */
7651
- reindex?(summary: MeetingsDayBuildSummary): void | Promise<void>;
7652
- }
7653
- /** Orchestrates a store-backed build of a day's meetings. */
7654
- declare class MeetingsBuilder {
7655
- private readonly opts;
7656
- constructor(opts: {
7657
- source: MeetingsDaySource;
7658
- store: MeetingRecordStore;
7659
- config: MeetingsConfig;
7660
- fusionOptions?: MeetingFusionOptions;
7661
- hooks?: MeetingsBuilderHooks;
7662
- /**
7663
- * When present, the memory-generation layer runs after the record-store
7664
- * writes: deterministic recall-anchor episodes per built record, the
7665
- * trust-gated summary/facts layer, and retract-on-removal — all behind the
7666
- * `MeetingMemoryGenerator` seam (issue #1900). Omitted → pure
7667
- * detect+fuse+store with no memory writes. The engine depends only on this
7668
- * interface, never on the memory-gen module.
7669
- */
7670
- memoryGenerator?: MeetingMemoryGenerator;
7671
- });
7672
- buildDay(date: string): Promise<MeetingsDayBuildSummary>;
7673
- /**
7674
- * Pick the existing same-day record whose window best overlaps `meeting` and
7675
- * reuse its id — but ONLY when adoption is safe: the windows substantially
7676
- * coincide (overlap covers a majority of the shorter window), OR a corroborating
7677
- * identity signal (same app, same title, or a shared transcript source) is
7678
- * BACKED by a non-marginal overlap (>= a quarter of the shorter window). Coarse
7679
- * identity signals alone never license adoption across a thin sliver of overlap,
7680
- * or two genuinely different back-to-back same-app meetings would overwrite each
7681
- * other's record and `show <old-id>` would point at the wrong meeting. Candidate
7682
- * selection is deterministic (max overlap, then earliest start, then id).
7683
- * Returns the detector's fresh id when nothing qualifies.
7684
- */
7685
- private adoptExistingId;
7686
- }
7277
+ declare function generateMeetingSummaryFacts(record: MeetingRecord, config: MeetingsConfig, deps: MeetingSummaryDeps): Promise<MeetingSummaryResult>;
7278
+ /**
7279
+ * Storage capabilities `createMeetingMemoryWriter` needs, satisfied structurally
7280
+ * by `StorageManager`. Kept narrow (the same rationale as the wearables writer)
7281
+ * so this module performs NO direct fs and never touches the secure-store key.
7282
+ */
7283
+ interface MeetingMemoryStorageIo {
7284
+ writeSealedMemory: MeetingMemoryWriter["writeSealedMemory"];
7285
+ readAllMemories(): Promise<Array<{
7286
+ path: string;
7287
+ frontmatter: {
7288
+ id: string;
7289
+ source: string;
7290
+ status?: string;
7291
+ };
7292
+ content: string;
7293
+ }>>;
7294
+ invalidateMemory(id: string): Promise<boolean>;
7295
+ }
7296
+ /**
7297
+ * Build the meeting memory writer used by production builds. Mirrors
7298
+ * `createWearableMemoryWriter`: the storage fact-hash index only covers
7299
+ * category "fact", so meeting episodes (`moment`) and decisions/commitments
7300
+ * dedup by a bounded, source-scoped content scan over `meeting:<id>`-tagged
7301
+ * memories — without it, a forced/retried day re-writes identical episodes and
7302
+ * facts (issue #1900).
7303
+ */
7304
+ declare function createMeetingMemoryWriter(storage: MeetingMemoryStorageIo): MeetingMemoryWriter;
7305
+ /**
7306
+ * Concrete `MeetingMemoryGenerator` for the builder's memory seam (issue #1900
7307
+ * decouple). Implements `onRecordsBuilt` by driving the EXISTING episode/fact/
7308
+ * retract logic behind the interface the deterministic engine depends on, and
7309
+ * routes each built id by the partition the engine computed from the store's
7310
+ * per-record write result (round 2):
7311
+ *
7312
+ * - `removedIds` retire the deleted meetings' memories so recall never
7313
+ * surfaces a meeting `show <id>` can no longer load;
7314
+ * - `updatedIds` — the record changed under a kept id: retract the prior
7315
+ * episode/summary for `meeting:<id>` FIRST, then regenerate from the new
7316
+ * record, so recall is refreshed (not duplicated, not left stale);
7317
+ * - `unchangedIds` the stored record was byte-identical this rebuild: SKIP
7318
+ * all generation for it (no episode probe, no extractor call, no rewrite) so
7319
+ * an idempotent rebuild fires zero LLM calls and writes nothing;
7320
+ * - new ids (built minus unchanged minus updated) — generate fresh.
7321
+ *
7322
+ * `reindexNeeded` fires when the regenerated records wrote new episodes/facts;
7323
+ * the builder additionally reindexes on removed/built counts, so a retract-only
7324
+ * rebuild still reindexes.
7325
+ *
7326
+ * `config` is captured here (not passed through `onRecordsBuilt`) because the
7327
+ * seam input carries record partitions, while the summary/facts layer needs
7328
+ * `summaryMode` and the trust bands.
7329
+ */
7330
+ declare function createMeetingMemoryGenerator(writer: MeetingMemoryWriter, config: MeetingsConfig, summaryDeps?: {
7331
+ extractor: MeetingSummaryExtractor;
7332
+ judge?: MeetingSummaryJudge;
7333
+ }): MeetingMemoryGenerator;
7687
7334
 
7688
7335
  /**
7689
7336
  * Meetings CLI runner (issue #1900) — one implementation shared by every CLI
@@ -7720,6 +7367,149 @@ interface MeetingsCliDeps {
7720
7367
  /** Run a meetings CLI command. Returns a process exit code; all output via `io`. */
7721
7368
  declare function runMeetingsCliCommand(deps: MeetingsCliDeps, args: string[], io: MeetingsCliIo): Promise<number>;
7722
7369
 
7370
+ /**
7371
+ * Concrete meetings day source (issue #1900) — the wiring slice that feeds the
7372
+ * builder from the ESTABLISHED stores rather than fixtures:
7373
+ * - screen activity snapshots (the activity SQLite store), and
7374
+ * - wearable day transcripts (the wearable day-store), reconstructed into the
7375
+ * shared fusion conversation shape via `reconstructFusionInputs`.
7376
+ *
7377
+ * All timestamps stay UTC and every day read is a half-open [start, end)
7378
+ * window resolved by `activityDayWindow(date, timezone)`, so the local day the
7379
+ * caller asked for maps to one deterministic UTC window shared by both signals.
7380
+ *
7381
+ * Fidelity caveat (inherited, documented): a wearable day transcript is stored
7382
+ * RENDERED at minute precision, so `reconstructFusionInputs` rebuilds each clock
7383
+ * as `${date}THH:MM:00Z` — the same reconstruction the fusion subsystem uses.
7384
+ * App spans come from true-UTC activity instants; the two frames coincide when
7385
+ * the activity timezone is UTC (the default). Under a non-UTC timezone the
7386
+ * app+audio overlap carries that reconstruction offset, exactly as wearable
7387
+ * fusion does; audio-only detection is unaffected. Provider-meeting boundaries
7388
+ * (Granola/Fireflies explicit titles) are a connector concern not present in the
7389
+ * reconstructed day transcript, so audio windows never fabricate a provider flag.
7390
+ */
7391
+
7392
+ /** Reads the day's screen-activity snapshots. Satisfied by `ActivityStore`. */
7393
+ interface MeetingsActivityReader {
7394
+ /** Snapshots whose capture instant is in the half-open [start, end) window. */
7395
+ listSnapshotsForDay(machine: string | null, startUtcInclusive: string, endUtcExclusive: string): ActivitySnapshot[] | Promise<ActivitySnapshot[]>;
7396
+ }
7397
+ /** One stored wearable day transcript body, ready for reconstruction. */
7398
+ interface WearableDayBody {
7399
+ source: string;
7400
+ body: string;
7401
+ escaped?: boolean;
7402
+ /**
7403
+ * IANA timezone the body's `HH:MM` clocks were rendered in (from the
7404
+ * transcript frontmatter). Empty when the transcript stored no timezone —
7405
+ * the clocks are then treated as UTC, matching the fusion identity guard.
7406
+ */
7407
+ timezone?: string;
7408
+ }
7409
+ /** Reads the day's rendered wearable transcript bodies (one per source). */
7410
+ interface MeetingsWearableReader {
7411
+ readDayBodies(date: string): Promise<WearableDayBody[]>;
7412
+ }
7413
+ /** Narrow slice of `StorageManager` the wearable reader needs. */
7414
+ interface WearableDayTranscriptStore {
7415
+ listWearableTranscriptDays(sourceId?: string): Promise<Array<{
7416
+ source: string;
7417
+ date: string;
7418
+ }>>;
7419
+ readWearableDayTranscript(sourceId: string, date: string): Promise<string | null>;
7420
+ }
7421
+ /**
7422
+ * Build a wearable reader over a storage manager: discover which sources stored
7423
+ * a transcript for the day (store-driven, not config-driven, so a day is read
7424
+ * exactly from what exists on disk), then read + parse each body.
7425
+ */
7426
+ declare function storageWearableDayReader(store: WearableDayTranscriptStore): MeetingsWearableReader;
7427
+ /**
7428
+ * Derive meeting-app foreground spans from the day's snapshots. A span is a
7429
+ * maximal run of consecutive (time-ordered) snapshots on ONE capture machine
7430
+ * whose app/title/url matches any configured pattern; the next non-matching
7431
+ * snapshot ends the run AND bounds its end (so a lone matching snapshot still
7432
+ * yields a non-zero span). A trailing run at the END of a machine's snapshots
7433
+ * has no following non-matching tick to bound it, so a lone trailing tick is
7434
+ * extended by the machine's sampling cadence rather than collapsing to a
7435
+ * zero-length point the detector's `isFinitePair` rejects. Brief app switches
7436
+ * during a call surface as adjacent spans and the detector's `mergeGapMinutes`
7437
+ * re-merges them.
7438
+ */
7439
+ declare function deriveAppSpans(snapshots: readonly ActivitySnapshot[], appPatterns: readonly string[]): MeetingAppSpan[];
7440
+ /**
7441
+ * Derive audio windows from reconstructed conversations. Each conversation is
7442
+ * one window on its source; `distinctNonWearerSpeakers` counts distinct
7443
+ * non-self speaker labels (the audio-only detection rule), and the end is the
7444
+ * conversation end when known, else the latest segment instant, else the start.
7445
+ */
7446
+ declare function buildAudioWindows(conversations: readonly FusionConversationInput[]): MeetingAudioWindow[];
7447
+ /**
7448
+ * Reads a day's real activity + wearable signals and assembles the
7449
+ * {@link MeetingDayData} the builder consumes. Injected readers keep this
7450
+ * testable against fixtures and free of direct filesystem access.
7451
+ */
7452
+ declare class ActivityWearablesMeetingsDaySource implements MeetingsDaySource {
7453
+ private readonly deps;
7454
+ constructor(deps: {
7455
+ /**
7456
+ * Screen-activity reader. Optional (issue #2123): only the machine-owner
7457
+ * (default) namespace consumes machine-scoped activity; every other caller
7458
+ * namespace runs audio-only, so it is constructed with no activity reader
7459
+ * and the load degrades to zero screen snapshots.
7460
+ */
7461
+ activity?: MeetingsActivityReader;
7462
+ wearables: MeetingsWearableReader;
7463
+ config: MeetingsConfig;
7464
+ /** IANA timezone resolving the local day → UTC window (activity's zone). */
7465
+ timezone: string;
7466
+ });
7467
+ loadDayData(date: string): Promise<MeetingDayData>;
7468
+ }
7469
+
7470
+ /**
7471
+ * Debounced meetings build scheduler (issue #1900) — the tail step after a
7472
+ * sync. A completed activity or wearable sync for a day calls
7473
+ * `requestBuild(date)`; this coalesces bursts (a wearable window sync touches
7474
+ * several days; an activity tick and a wearable tick can land together) onto a
7475
+ * per-day trailing-edge timer so the day is (re)built at most once per debounce
7476
+ * window instead of once per sync signal.
7477
+ *
7478
+ * Single-flight per day: a build in flight for a date defers a fresh request to
7479
+ * a follow-up build after it settles, so a late sync signal is never dropped.
7480
+ * `debounceMs: 0` builds on the next tick (no coalescing window). Errors are
7481
+ * isolated per day and routed to `onError` — a failed build must never reject
7482
+ * the sync path that requested it.
7483
+ */
7484
+ interface MeetingsBuildSchedulerOptions {
7485
+ /** Trailing-edge coalescing window (ms). 0 = build on the next tick. */
7486
+ debounceMs: number;
7487
+ /** Build one day. Rejections are caught and routed to `onError`. */
7488
+ build(date: string): Promise<unknown>;
7489
+ /** Observe a build failure (logging). Never called for success. */
7490
+ onError?(date: string, err: unknown): void;
7491
+ }
7492
+ declare class MeetingsBuildScheduler {
7493
+ private readonly opts;
7494
+ private readonly timers;
7495
+ /** Days whose timer has fired and are running (single-flight promise). */
7496
+ private readonly running;
7497
+ /** Days requested again while their build was in flight (trailing rebuild). */
7498
+ private readonly rerun;
7499
+ private disposed;
7500
+ constructor(opts: MeetingsBuildSchedulerOptions);
7501
+ /** Request a (debounced) build for a day. Idempotent within the window. */
7502
+ requestBuild(date: string): void;
7503
+ /** Run every armed timer's build now and await completion (teardown/tests). */
7504
+ flush(): Promise<void>;
7505
+ /** Cancel all armed timers without running them. */
7506
+ dispose(): void;
7507
+ /** True while any day has an armed timer or an in-flight build. */
7508
+ get pending(): boolean;
7509
+ private fire;
7510
+ private runBuild;
7511
+ }
7512
+
7723
7513
  type LocalSessionRole = "user" | "assistant" | "tool" | "system" | "other";
7724
7514
  interface LocalSessionTurn {
7725
7515
  role: LocalSessionRole;
@@ -8036,4 +7826,4 @@ declare function forkCapsule(opts: ForkCapsuleOptions): Promise<ForkCapsuleResul
8036
7826
  */
8037
7827
  declare function readForkLineage(targetRoot: string, forkId: string): Promise<ForkLineage | null>;
8038
7828
 
8039
- export { ACTIVITY_DIGEST_FORMAT_VERSION, ACTIVITY_DIR_NAME, ACTIVITY_SYNC_DEFAULT_INTERVAL_MS, ActivityConfig, ActivityDayDigest, ActivityDayMeta, ActivityHttpSourceClient, type ActivityHttpSourceClientOptions, type ActivityIndexRefresher, type ActivityMemoryGenerationDeps, type ActivityMemoryGenerationResult, type ActivityMemoryWriter, ActivitySnapshot, ActivitySnapshotPage, ActivitySourceCheck, ActivitySourceClient, ActivitySourceConfig, type ActivitySourceRunItem, ActivityStore, type ActivitySyncOptions, type ActivitySyncRegistration, type ActivitySyncResult, type ActivitySyncRunOptions, type ActivitySyncRunSummary, ActivitySyncScheduler, type ActivitySyncSchedulerOptions, type ArchitectureHintsResult, type AuditEntry, type BinaryAssetRecord, type BinaryAssetStatus, type BinaryLifecycleConfig, type BinaryLifecycleManifest, type BinaryStorageBackend, type BinaryStorageBackendConfig, ClaudeCodeMemoryExtensionPublisher, type CleanupResult, CodexMemoryExtensionPublisher, type CodingNamespaceOverlay, type CodingScopeDescription, type CollectLocalSessionSummariesOptions, type CompiledCorrectionRule, type CompiledRedactionRule, type ConflictEntry, type ContradictionOptions, type ContradictionPair, type ContradictionResult$1 as CurateContradictionResult, type DuplicateResult as CurateDuplicateResult, type CurateOptions, type CurateResult, type CuratedStatement, DEFAULT_GRACE_PERIOD_DAYS, DEFAULT_MAX_BINARY_SIZE_BYTES, DEFAULT_MEETINGS_CONFIG, DEFAULT_MEETINGS_DETECTION_CONFIG, DEFAULT_MEETING_APP_PATTERNS, DEFAULT_PROXIMITY_GAP_MS, DEFAULT_REDACTION_RULES, DEFAULT_SCAN_PATTERNS, DEFAULT_SOURCE_TRUST, DEFAULT_TAXONOMY, DEFAULT_WINDOW_TOLERANCE_MS, type DedupOptions, type DedupResult, DetectedMeeting, DiscoveredExtension, type DocFile, type DriveChange, type DriveChangesPage, type DriveFileMetadata, type DuplicatePair, EngramAccessService, type FileChange, FilesystemBackend, type ForkCapsuleOptions, type ForkCapsuleResult, type ForkLineage, type FuseClusterResult, FusedDisagreement, FusedMeeting, FusedSegment, FusedSpeaker, FusionConversationInput, FusionDayResult, FusionOptions, GOOGLE_DRIVE_CONNECTOR_ID, GOOGLE_DRIVE_CURSOR_KIND, DEFAULT_POLL_INTERVAL_MS as GOOGLE_DRIVE_DEFAULT_POLL_INTERVAL_MS, type GenerateOptions, type GenerateResult, type GitContext, type GitInvoker, type GoogleDriveClient, type GoogleDriveClientFactory, type GoogleDriveConnectorConfig, type GoogleDriveSyncResult, HermesMemoryExtensionPublisher, type IngestionPlan, JudgeCandidate, JudgeVerdict, KNOWN_WEARABLE_SOURCE_IDS, type LanguageInfo, LiveConnector, LiveConnectorRegistry, LiveConnectorRegistryError, type LocalSessionAdapterInput, type LocalSessionAdapterOptions, type LocalSessionParseWarning, type LocalSessionParsedFile, type LocalSessionRole, type LocalSessionSourceAdapter, type LocalSessionSummaryCliOptions, type LocalSessionSummaryReport, type LocalSessionTurn, MEETINGS_DIR_NAME, MEETING_FORMAT_VERSION, MEETING_KIND, MeetingActivitySnapshot, MeetingBuildInput, type MeetingBuildOutcome, type MeetingDayData, MeetingDetectionSource, type MeetingEpisodeGenResult, type MeetingFusionOptions, type MeetingMemoryGenerator, type MeetingMemoryOutcome, type MeetingMemoryWriter, MeetingRecord, type MeetingRecordBase, type MeetingRecordFileIo, MeetingRecordStore, type MeetingRecordSummary, type MeetingSaveResult, MeetingsBuilder, type MeetingsBuilderHooks, type MeetingsCliDeps, type MeetingsCliIo, MeetingsConfig, type MeetingsDayBuildSummary, type MeetingsDayFactGenResult, type MeetingsDaySource, MeetingsDetectionConfig, MeetingsDetectionInput, MeetingsInputError, MemoryCategory, type MemoryEntry, type MemoryExtensionPublisher, MemoryWriteResult, type MergeResult, NOTION_CONNECTOR_ID, NOTION_CURSOR_KIND, NOTION_DEFAULT_POLL_INTERVAL_MS, NoneBackend, type NotionConnectorConfig, type OnboardOptions, type OnboardResult, PUBLISHERS, type PackReviewContextStructuralInput, type PipelineResult, PluginConfig, type ProjectShape, type ProvenanceEntry, type PublishContext, type PublishResult, type PublisherCapabilities, REDACTION_PLACEHOLDER, RELAY_DEMO_MISSION_ID, RELAY_DEMO_NAMESPACE, RELAY_MISSION_DEFAULT_EVENT_LIMIT, RELAY_MISSION_MAX_EVENTS, RELAY_MISSION_MAX_EVENT_LIMIT, RELAY_MISSION_MAX_FILE_BYTES, RELAY_MISSION_MAX_LINE_BYTES, RELAY_MISSION_SCHEMA_VERSION, REMNIC_CITATION_FORMAT, REMNIC_MCP_TOOL_INVENTORY, REMNIC_RECALL_DECISION_RULES, REMNIC_SEMANTIC_OVERVIEW, type RedactionConfig, type RedactionReport, type RedactionRuleConfig, type RelayAgentOutputSnapshot, type RelayAgentSnapshot, type RelayConflictSnapshot, type RelayCorrectionSnapshot, type RelayDecisionSnapshot, type RelayEvidenceRef, RelayEvidenceRefSchema, type RelayMissionAppendAccessInput, type RelayMissionAppendAccessOutput, type RelayMissionAppendResult, type RelayMissionEvent, type RelayMissionEventInput, RelayMissionEventInputSchema, RelayMissionEventSchema, type RelayMissionPayload, RelayMissionPayloadSchema, type RelayMissionReadAccessInput, type RelayMissionReadAccessOutput, type RelayMissionReadOptions, RelayMissionReadOptionsSchema, type RelayMissionSnapshot, type RelayMissionStatus, RelayMissionStore, RelayMissionStoreError, type RelayMissionStoreErrorCode, type RelayMissionStoreOptions, type RelayPropagationSnapshot, type RelayRecallSnapshot, type RelayTestSnapshot, ResolverDecision, type ReviewAction, type ReviewCandidate, type ReviewContext, type ReviewItem, type ReviewListResult, type ReviewOptions, type ReviewResult, SealedMemoryEnvelope, type SessionSummaryDraft, type SessionSummaryExcerpt, type Space, type SpaceKind, type SpaceManifest, type SpacePromoteResult, type SpacePullResult, type SpacePushResult, type SpaceShareResult, type SpaceSwitchResult, SpeakerRegistry, type StatementProvenance, StorageManager, type StructuralContextDegradation, type StructuralContextErrorCode, type StructuralContextProvider, type StructuralProviderStatus, type StructuralSpawnFn, type StructuralSymbol, type SubprocessProviderOptions, type SymbolsForDiffErr, type SymbolsForDiffOk, type SymbolsForDiffResult, SyncIncrementalResult, type SyncOptions, type SyncResult, type SyncState, TRANSCRIPT_FORMAT_VERSION, Taxonomy, TokenEntry, type TrainingExportAdapter, type TrainingExportOptions, type TrainingExportRecord, type TranscriptSegmentMatch, type TreeNode, WEARABLES_DIR_NAME, WearableCleanupSettings, type WearableConnectorFactory, type WearableConnectorFactoryOptions, type WearableConnectorRegistration, WearableConversation, WearableCorrectionRule, WearableDayTranscript, WearableDayTranscriptMeta, WearableFusionConfig, WearableSourceConnector, WearableSourceSettings, type WearableSourceSyncState, type WearableSyncStateFile, type WearablesCliIo, WearablesConfig, WearablesInputError, WearablesService, activityCursorKey, activityDatabasePath, activityDayWindow, activityDigestPath, appendRelayMissionEvent, applyActivitySchema, applyCorrections, applyOffTheRecord, assertValidTimezone, bodyIsEscaped, branchNamespaceName, buildMeetingRecordsForDay, buildProcedureMarkdownBody, buildProcedureRecallSection, cleanConversation, clearStructuralContextProvidersForTest, clearTrainingExportAdapters, clearWearableConnectors, clusterConversations, collapseImmediateRepeats, collectLocalSessionSummaries, compareRelayEvents, compileCorrectionRule, compileCorrectionRules, compileRedactionPatterns, compileRedactionRules, composeActivityDigestBody, composeActivityDigestMeta, composeDayTranscriptBody, composeDayTranscriptMeta, composeMeetingRecord, convertMemoriesToRecords, correctionsFilePath, createBackend, createGoogleDriveConnector, createNotionConnector, createRelayMissionFixture, createSpace, createSubprocessStructuralProvider, curate, decodeTranscriptBody, defaultActivityConfig, defaultGoogleDriveClientFactory, defaultWearableCleanupSettings, defaultWearableFusionConfig, defaultWearableSourceSettings, defaultWearablesConfig, deleteSpace, describeCodingScope, describeErrorForOperator, describeStructuralProviderStatus, detectMeetings, emptyManifest, emptySyncState, ensureActivityStateDir, ensureBuiltInWearableConnectors, escapeSegmentText, findContradictions, findDuplicates, forkCapsule, fuseCluster, fuseDay, fuseMeeting, fusionInputsFromConversations, generateActivityMemories, generateContextTree, generateResolverDocument, getActiveSpace, getAuditLog, getLocalSessionSourceAdapter, getManifestPath, getSpacesDir, getStructuralContextProvider, getTaxonomyDir, getTaxonomyFilePath, getTrainingExportAdapter, getWearableConnector, hashActivityBody, hashTranscriptBody, hostIdForConnector, isEligibleActivityFact, isLowQualitySegment, isReviewPrompt, isValidActivityDate, isValidTranscriptDate, listLocalSessionSourceAdapters, listReviewItems, listSpaces, listTrainingExportAdapters, listWearableConnectors, loadCorrectionsFile, loadManifest, loadSyncState, loadTaxonomy, manifestDir, manifestPath, matchesPatterns, meetingId, meetingIdDate, mergeSpaces, normalizeOriginUrl, onboard, openActivityDatabase, packReviewContext, packReviewContextStructural, parseActivityConfig, parseActivityDigest, parseDayTranscript, parseFlexibleIsoTimestamp, parseIsoOffsetTimestamp, parseIsoUtcTimestamp, parseMeetingRecordSummary, parseMeetingsConfig, parseProcedureStepsFromBody, parseTouchedFiles, parseTranscriptSegmentLine, parseWearablesConfig, performReview, probeStructuralProviderForDoctor, projectNamespaceName, promoteSpace, publisherFor, publisherForConnector, pullFromSpace, pushToSpace, rankReviewCandidates, readForkLineage, readManifest, readRelayMission, reconstructFusionInputs, redactSessionSummaryText, redactText, reduceRelayMission, refreshActivityIndex, registerLocalSessionSourceAdapter, registerPublisher, registerStructuralContextProvider, registerTrainingExportAdapter, registerWearableConnector, relayMissionAppendOperation, relayMissionReadOperation, relayMissionReceiptDigest, renderExtensionsBlock, renderExtensionsFooter, renderStructuralProviderStatusLine, resolveActivitySyncDates, resolveCategory, resolveCodingNamespaceOverlay, resolveGitContext, runActivitySyncOnce, runBinaryLifecyclePipeline, runLocalSessionSummaryCliCommand, runMeetingsCliCommand, runWearablesCliCommand, saveCorrectionsFile, saveManifest, saveSyncState, saveTaxonomy, scanForBinaries, serializeActivityDigest, serializeDayTranscript, serializeMeetingRecord, shareSpace, stableHash, stripFillerTokens, structuralProviderActive, switchSpace, syncActivitySource, syncChanges, syncStateFilePath, toStructuralContextDegradation, unescapeSegmentText, unescapeSpeakerLabel, updateSourceSyncState, validateActivityBaseUrl, validateGoogleDriveConfig, validateNotionConfig, validateSlug, validateTaxonomy, watchForChanges, writeManifest };
7829
+ export { ACTIVITY_DIGEST_FORMAT_VERSION, ACTIVITY_DIR_NAME, ACTIVITY_SYNC_DEFAULT_INTERVAL_MS, ActivityConfig, ActivityDayDigest, ActivityDayMeta, ActivityHttpSourceClient, type ActivityHttpSourceClientOptions, type ActivityIndexRefresher, type ActivityMemoryGenerationDeps, type ActivityMemoryGenerationResult, type ActivityMemoryWriter, ActivitySnapshot, ActivitySnapshotPage, ActivitySourceCheck, ActivitySourceClient, ActivityStore, type ActivitySyncOptions, type ActivitySyncRegistration, type ActivitySyncResult, ActivitySyncRunSummary, ActivitySyncScheduler, type ActivitySyncSchedulerOptions, ActivityWearablesMeetingsDaySource, type ArchitectureHintsResult, type AuditEntry, type BinaryAssetRecord, type BinaryAssetStatus, type BinaryLifecycleConfig, type BinaryLifecycleManifest, type BinaryStorageBackend, type BinaryStorageBackendConfig, ClaudeCodeMemoryExtensionPublisher, type CleanupResult, CodexMemoryExtensionPublisher, type CodingNamespaceOverlay, type CodingScopeDescription, type CollectLocalSessionSummariesOptions, type CompiledCorrectionRule, type CompiledRedactionRule, type ConflictEntry, type ContradictionOptions, type ContradictionPair, type ContradictionResult$1 as CurateContradictionResult, type DuplicateResult as CurateDuplicateResult, type CurateOptions, type CurateResult, type CuratedStatement, DEFAULT_GRACE_PERIOD_DAYS, DEFAULT_MAX_BINARY_SIZE_BYTES, DEFAULT_MEETINGS_CONFIG, DEFAULT_MEETINGS_DETECTION_CONFIG, DEFAULT_MEETING_APP_PATTERNS, DEFAULT_PROXIMITY_GAP_MS, DEFAULT_REDACTION_RULES, DEFAULT_SCAN_PATTERNS, DEFAULT_SOURCE_TRUST, DEFAULT_TAXONOMY, DEFAULT_WINDOW_TOLERANCE_MS, type DedupOptions, type DedupResult, DetectedMeeting, DiscoveredExtension, type DocFile, type DriveChange, type DriveChangesPage, type DriveFileMetadata, type DuplicatePair, EngramAccessService, type FileChange, FilesystemBackend, type ForkCapsuleOptions, type ForkCapsuleResult, type ForkLineage, type FuseClusterResult, FusedDisagreement, FusedSegment, FusedSpeaker, FusionConversationInput, FusionDayResult, FusionOptions, GOOGLE_DRIVE_CONNECTOR_ID, GOOGLE_DRIVE_CURSOR_KIND, DEFAULT_POLL_INTERVAL_MS as GOOGLE_DRIVE_DEFAULT_POLL_INTERVAL_MS, type GenerateOptions, type GenerateResult, type GitContext, type GitInvoker, type GoogleDriveClient, type GoogleDriveClientFactory, type GoogleDriveConnectorConfig, type GoogleDriveSyncResult, HermesMemoryExtensionPublisher, type IngestionPlan, JudgeCandidate, JudgeVerdict, KNOWN_WEARABLE_SOURCE_IDS, type LanguageInfo, LiveConnector, LiveConnectorRegistry, LiveConnectorRegistryError, type LocalSessionAdapterInput, type LocalSessionAdapterOptions, type LocalSessionParseWarning, type LocalSessionParsedFile, type LocalSessionRole, type LocalSessionSourceAdapter, type LocalSessionSummaryCliOptions, type LocalSessionSummaryReport, type LocalSessionTurn, MEETING_SOURCE_PREFIX, MeetingAppSpan, MeetingAudioWindow, MeetingDayData, MeetingEpisodeGenResult, type MeetingFactCandidate, MeetingMemoryGenerator, type MeetingMemoryStorageIo, MeetingMemoryWriter, MeetingRecord, MeetingRecordStore, type MeetingSummaryDeps, type MeetingSummaryExtractor, type MeetingSummaryJudge, type MeetingSummaryResult, type MeetingsActivityReader, MeetingsBuildScheduler, type MeetingsBuildSchedulerOptions, MeetingsBuilder, type MeetingsCliDeps, type MeetingsCliIo, MeetingsConfig, MeetingsDaySource, MeetingsDetectionConfig, MeetingsDetectionInput, MeetingsInputError, type MeetingsWearableReader, MemoryCategory, type MemoryEntry, type MemoryExtensionPublisher, type MergeResult, NOTION_CONNECTOR_ID, NOTION_CURSOR_KIND, NOTION_DEFAULT_POLL_INTERVAL_MS, NoneBackend, type NotionConnectorConfig, type OnboardOptions, type OnboardResult, PUBLISHERS, type PackReviewContextStructuralInput, type PipelineResult, PluginConfig, type ProjectShape, type ProvenanceEntry, type PublishContext, type PublishResult, type PublisherCapabilities, REDACTION_PLACEHOLDER, RELAY_DEMO_MISSION_ID, RELAY_DEMO_NAMESPACE, RELAY_MISSION_DEFAULT_EVENT_LIMIT, RELAY_MISSION_MAX_EVENTS, RELAY_MISSION_MAX_EVENT_LIMIT, RELAY_MISSION_MAX_FILE_BYTES, RELAY_MISSION_MAX_LINE_BYTES, RELAY_MISSION_SCHEMA_VERSION, REMNIC_CITATION_FORMAT, REMNIC_MCP_TOOL_INVENTORY, REMNIC_RECALL_DECISION_RULES, REMNIC_SEMANTIC_OVERVIEW, type RedactionConfig, type RedactionReport, type RedactionRuleConfig, type RelayAgentOutputSnapshot, type RelayAgentSnapshot, type RelayConflictSnapshot, type RelayCorrectionSnapshot, type RelayDecisionSnapshot, type RelayEvidenceRef, RelayEvidenceRefSchema, type RelayMissionAppendAccessInput, type RelayMissionAppendAccessOutput, type RelayMissionAppendResult, type RelayMissionEvent, type RelayMissionEventInput, RelayMissionEventInputSchema, RelayMissionEventSchema, type RelayMissionPayload, RelayMissionPayloadSchema, type RelayMissionReadAccessInput, type RelayMissionReadAccessOutput, type RelayMissionReadOptions, RelayMissionReadOptionsSchema, type RelayMissionSnapshot, type RelayMissionStatus, RelayMissionStore, RelayMissionStoreError, type RelayMissionStoreErrorCode, type RelayMissionStoreOptions, type RelayPropagationSnapshot, type RelayRecallSnapshot, type RelayTestSnapshot, ResolverDecision, type ReviewAction, type ReviewCandidate, type ReviewContext, type ReviewItem, type ReviewListResult, type ReviewOptions, type ReviewResult, SealedMemoryEnvelope, type SessionSummaryDraft, type SessionSummaryExcerpt, type Space, type SpaceKind, type SpaceManifest, type SpacePromoteResult, type SpacePullResult, type SpacePushResult, type SpaceShareResult, type SpaceSwitchResult, SpeakerRegistry, type StatementProvenance, StorageManager, type StructuralContextDegradation, type StructuralContextErrorCode, type StructuralContextProvider, type StructuralProviderStatus, type StructuralSpawnFn, type StructuralSymbol, type SubprocessProviderOptions, type SymbolsForDiffErr, type SymbolsForDiffOk, type SymbolsForDiffResult, SyncIncrementalResult, type SyncOptions, type SyncResult, type SyncState, TRANSCRIPT_FORMAT_VERSION, Taxonomy, TokenEntry, type TrainingExportAdapter, type TrainingExportOptions, type TrainingExportRecord, type TranscriptSegmentMatch, type TreeNode, WEARABLES_DIR_NAME, WearableCleanupSettings, type WearableConnectorFactory, type WearableConnectorFactoryOptions, type WearableConnectorRegistration, WearableConversation, WearableCorrectionRule, type WearableDayBody, WearableDayTranscript, WearableDayTranscriptMeta, type WearableDayTranscriptStore, WearableFusionConfig, WearableSourceConnector, WearableSourceSettings, type WearableSourceSyncState, type WearableSyncStateFile, type WearablesCliIo, WearablesConfig, WearablesInputError, WearablesService, activityCursorKey, activityDayWindow, activityDigestPath, appendRelayMissionEvent, applyCorrections, applyOffTheRecord, assertValidTimezone, bodyIsEscaped, branchNamespaceName, buildAudioWindows, buildProcedureMarkdownBody, buildProcedureRecallSection, builtInConnectorPackageSpecifier, cleanConversation, clearStructuralContextProvidersForTest, clearTrainingExportAdapters, clearWearableConnectors, clusterConversations, collapseImmediateRepeats, collectLocalSessionSummaries, compareRelayEvents, compileCorrectionRule, compileCorrectionRules, compileRedactionPatterns, compileRedactionRules, composeActivityDigestBody, composeActivityDigestMeta, composeDayTranscriptBody, composeDayTranscriptMeta, composeMeetingEpisodeContent, convertMemoriesToRecords, correctionsFilePath, createBackend, createGoogleDriveConnector, createMeetingMemoryGenerator, createMeetingMemoryWriter, createNotionConnector, createRelayMissionFixture, createSpace, createSubprocessStructuralProvider, curate, decodeTranscriptBody, defaultActivityConfig, defaultGoogleDriveClientFactory, defaultWearableCleanupSettings, defaultWearableFusionConfig, defaultWearableSourceSettings, defaultWearablesConfig, deleteSpace, deriveAppSpans, describeCodingScope, describeErrorForOperator, describeStructuralProviderStatus, detectMeetings, emptyManifest, emptySyncState, ensureBuiltInWearableConnectors, escapeSegmentText, findContradictions, findDuplicates, forkCapsule, fuseCluster, fuseDay, fusionInputsFromConversations, generateActivityMemories, generateContextTree, generateMeetingEpisodes, generateMeetingSummaryFacts, generateResolverDocument, getActiveSpace, getAuditLog, getLocalSessionSourceAdapter, getManifestPath, getSpacesDir, getStructuralContextProvider, getTaxonomyDir, getTaxonomyFilePath, getTrainingExportAdapter, getWearableConnector, hashActivityBody, hashTranscriptBody, hostIdForConnector, isEligibleActivityFact, isLowQualitySegment, isReviewPrompt, isValidActivityDate, isValidTranscriptDate, listLocalSessionSourceAdapters, listReviewItems, listSpaces, listTrainingExportAdapters, listWearableConnectors, loadCorrectionsFile, loadManifest, loadSyncState, loadTaxonomy, manifestDir, manifestPath, matchesPatterns, meetingDayTag, meetingId, meetingSourceLabel, mergeSpaces, normalizeOriginUrl, onboard, packReviewContext, packReviewContextStructural, parseActivityConfig, parseActivityDigest, parseDayTranscript, parseFlexibleIsoTimestamp, parseIsoOffsetTimestamp, parseIsoUtcTimestamp, parseMeetingsConfig, parseProcedureStepsFromBody, parseTouchedFiles, parseTranscriptSegmentLine, parseWearablesConfig, performReview, probeStructuralProviderForDoctor, projectNamespaceName, promoteSpace, publisherFor, publisherForConnector, pullFromSpace, pushToSpace, rankReviewCandidates, readForkLineage, readManifest, readRelayMission, reconstructFusionInputs, redactSessionSummaryText, redactText, reduceRelayMission, refreshActivityIndex, registerLocalSessionSourceAdapter, registerPublisher, registerStructuralContextProvider, registerTrainingExportAdapter, registerWearableConnector, relayMissionAppendOperation, relayMissionReadOperation, relayMissionReceiptDigest, renderExtensionsBlock, renderExtensionsFooter, renderStructuralProviderStatusLine, resolveCategory, resolveCodingNamespaceOverlay, resolveGitContext, runBinaryLifecyclePipeline, runLocalSessionSummaryCliCommand, runMeetingsCliCommand, runWearablesCliCommand, saveCorrectionsFile, saveManifest, saveSyncState, saveTaxonomy, scanForBinaries, serializeActivityDigest, serializeDayTranscript, shareSpace, stableHash, storageWearableDayReader, stripFillerTokens, structuralProviderActive, switchSpace, syncActivitySource, syncChanges, syncStateFilePath, timezoneOffsetIso, toStructuralContextDegradation, unescapeSegmentText, unescapeSpeakerLabel, updateSourceSyncState, validateActivityBaseUrl, validateGoogleDriveConfig, validateNotionConfig, validateSlug, validateTaxonomy, watchForChanges, writeManifest, writeMeetingEpisodeMemory };