@remnic/core 9.19.0 → 9.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. package/dist/access-admin-ops-surface.d.ts +8 -8
  2. package/dist/access-admin-ops-surface.js +8 -8
  3. package/dist/access-boundary.d.ts +8 -8
  4. package/dist/access-boundary.js +8 -8
  5. package/dist/access-cli.js +32 -32
  6. package/dist/access-http.d.ts +8 -8
  7. package/dist/access-http.js +12 -12
  8. package/dist/access-identity-continuity-surface.d.ts +6 -6
  9. package/dist/access-identity-continuity-surface.js +8 -8
  10. package/dist/access-lcm-surface.d.ts +8 -8
  11. package/dist/access-lcm-surface.js +8 -8
  12. package/dist/access-mcp.d.ts +8 -8
  13. package/dist/access-mcp.js +11 -11
  14. package/dist/access-memory-search-fanout.d.ts +2 -2
  15. package/dist/{access-namespace-preflight-BsawJa-L.d.ts → access-namespace-preflight-tmwQgCT6.d.ts} +1 -1
  16. package/dist/access-namespace-preflight.d.ts +3 -3
  17. package/dist/access-namespace-preflight.js +8 -8
  18. package/dist/access-observe-write-surface.d.ts +8 -8
  19. package/dist/access-observe-write-surface.js +8 -8
  20. package/dist/access-operations-batch.js +9 -9
  21. package/dist/access-operations.d.ts +8 -8
  22. package/dist/access-operations.js +10 -10
  23. package/dist/access-recall-concurrency.d.ts +8 -8
  24. package/dist/access-recall-concurrency.js +8 -8
  25. package/dist/access-recall-response.d.ts +8 -8
  26. package/dist/access-recall-response.js +8 -8
  27. package/dist/access-recall-surface.d.ts +8 -8
  28. package/dist/access-recall-surface.js +8 -8
  29. package/dist/{access-service-DLuVnV6a.d.ts → access-service-BqUii7LY.d.ts} +6 -6
  30. package/dist/access-service.d.ts +8 -8
  31. package/dist/access-service.js +8 -8
  32. package/dist/access-surface-catalog.d.ts +8 -8
  33. package/dist/action-confidence.d.ts +1 -1
  34. package/dist/active-memory-bridge.d.ts +1 -1
  35. package/dist/active-recall.d.ts +1 -1
  36. package/dist/active-recall.js +1 -1
  37. package/dist/{auto-sync-IH3G25MT.js → auto-sync-UPTUVE4X.js} +3 -3
  38. package/dist/behavior-learner.d.ts +1 -1
  39. package/dist/behavior-signals.d.ts +1 -1
  40. package/dist/bootstrap.d.ts +6 -6
  41. package/dist/briefing.d.ts +2 -2
  42. package/dist/briefing.js +4 -4
  43. package/dist/buffer-surprise-report.d.ts +1 -1
  44. package/dist/buffer.d.ts +2 -2
  45. package/dist/bulk-import/index.d.ts +3 -3
  46. package/dist/calibration.d.ts +1 -1
  47. package/dist/capabilities.d.ts +1 -1
  48. package/dist/{catalog-O6P8694A.d.ts → catalog-iWvWz61I.d.ts} +1 -1
  49. package/dist/causal-behavior.d.ts +1 -1
  50. package/dist/causal-consolidation.d.ts +1 -1
  51. package/dist/causal-consolidation.js +5 -5
  52. package/dist/causal-trajectory-graph.d.ts +1 -1
  53. package/dist/{chunk-YUWFASAK.js → chunk-275ENJDK.js} +2 -2
  54. package/dist/{chunk-EZFVVEQG.js → chunk-3ZUY2VQF.js} +2 -2
  55. package/dist/{chunk-HRREDJSL.js → chunk-4F6AANKS.js} +3 -3
  56. package/dist/{chunk-U7D5HWNG.js → chunk-4PYLBXX6.js} +2 -2
  57. package/dist/{chunk-3LZSS77C.js → chunk-53WDAG7X.js} +2 -2
  58. package/dist/{chunk-QEEMLGCO.js → chunk-5IXPWEQB.js} +5 -5
  59. package/dist/{chunk-VSVX777Y.js → chunk-5JQLAQUZ.js} +2 -2
  60. package/dist/{chunk-DR65EEXG.js → chunk-62QM5MKY.js} +7 -7
  61. package/dist/{chunk-WYL5ODHJ.js → chunk-6NZ7U4R4.js} +1 -1
  62. package/dist/chunk-6NZ7U4R4.js.map +1 -0
  63. package/dist/{chunk-OFQUY5NZ.js → chunk-7M6APKJL.js} +331 -5
  64. package/dist/chunk-7M6APKJL.js.map +1 -0
  65. package/dist/{chunk-OOJQ6ID5.js → chunk-AT3TDN6O.js} +1017 -296
  66. package/dist/chunk-AT3TDN6O.js.map +1 -0
  67. package/dist/{chunk-DQCUBRTZ.js → chunk-B7C3TF5H.js} +2 -2
  68. package/dist/{chunk-RPOOJPMB.js → chunk-EILX7SQR.js} +3 -3
  69. package/dist/{chunk-D5H3B36B.js → chunk-EXU5IQ3S.js} +2 -2
  70. package/dist/{chunk-KUF7OIFK.js → chunk-EZKKHVFY.js} +2 -2
  71. package/dist/{chunk-S5HCKQ7Q.js → chunk-GEUDRENF.js} +2 -2
  72. package/dist/{chunk-X7GOH7Y6.js → chunk-HJEEAO4O.js} +2 -2
  73. package/dist/{chunk-FL7MNSH3.js → chunk-HPOY2PHQ.js} +3 -3
  74. package/dist/{chunk-Q55XM4SU.js → chunk-JFDEYXF7.js} +2 -2
  75. package/dist/{chunk-UVSDFM7R.js → chunk-JN3IUA2Q.js} +2 -2
  76. package/dist/{chunk-PLRDZ2OO.js → chunk-JWMYVQAM.js} +2 -2
  77. package/dist/{chunk-KOFVOVJG.js → chunk-KHRKEELC.js} +17 -17
  78. package/dist/{chunk-Y4JHE2ML.js → chunk-LI4ZOFHW.js} +2 -2
  79. package/dist/{chunk-MLW3J7IC.js → chunk-LMHDFOVV.js} +3 -3
  80. package/dist/{chunk-X6E5WAGX.js → chunk-N7EVMKP6.js} +6 -6
  81. package/dist/{chunk-HCNG42P3.js → chunk-Q3FWRDCP.js} +2 -2
  82. package/dist/{chunk-5MFHOX5T.js → chunk-QO2KODU6.js} +2 -2
  83. package/dist/{chunk-W3DJOT22.js → chunk-TCZWBJBO.js} +2 -2
  84. package/dist/{chunk-B3ABVQ36.js → chunk-UHVXE24Y.js} +2 -1
  85. package/dist/{chunk-UX3ZXN34.js → chunk-UV72DEZD.js} +2 -2
  86. package/dist/{chunk-OZSL2QZC.js → chunk-V5TSUGRB.js} +5 -5
  87. package/dist/{chunk-CH3BRJ3P.js → chunk-X5QS5C2O.js} +2 -2
  88. package/dist/{cli-0dQHR6e6.d.ts → cli-DPEhq0Cp.d.ts} +5 -5
  89. package/dist/cli.d.ts +10 -10
  90. package/dist/cli.js +25 -25
  91. package/dist/compounding/engine.d.ts +2 -2
  92. package/dist/compounding/engine.js +4 -4
  93. package/dist/compounding/preference-consolidator.d.ts +1 -1
  94. package/dist/compression-optimizer.d.ts +1 -1
  95. package/dist/config.d.ts +1 -1
  96. package/dist/config.js +1 -1
  97. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  98. package/dist/connectors/codex-materialize-runner.js +4 -4
  99. package/dist/connectors/codex-materialize.d.ts +1 -1
  100. package/dist/connectors/index.d.ts +1 -1
  101. package/dist/connectors/index.js +4 -4
  102. package/dist/consolidation-provenance-check.d.ts +2 -2
  103. package/dist/consolidation-undo.d.ts +2 -2
  104. package/dist/contradiction/index.d.ts +2 -2
  105. package/dist/conversation-index/backend.d.ts +1 -1
  106. package/dist/conversation-index/chunker.d.ts +1 -1
  107. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  108. package/dist/conversation-index/indexer.d.ts +1 -1
  109. package/dist/conversation-index/search.d.ts +1 -1
  110. package/dist/day-summary.d.ts +1 -1
  111. package/dist/delinearize.d.ts +1 -1
  112. package/dist/direct-answer-wiring.d.ts +1 -1
  113. package/dist/direct-answer.d.ts +1 -1
  114. package/dist/embedding-fallback.d.ts +1 -1
  115. package/dist/enrichment/index.d.ts +1 -1
  116. package/dist/entity-retrieval.d.ts +2 -2
  117. package/dist/entity-retrieval.js +4 -4
  118. package/dist/entity-schema.d.ts +1 -1
  119. package/dist/explicit-capture.d.ts +6 -6
  120. package/dist/extraction-faithfulness.d.ts +1 -1
  121. package/dist/extraction-judge-telemetry.d.ts +1 -1
  122. package/dist/extraction-judge-training.d.ts +1 -1
  123. package/dist/extraction-judge.d.ts +1 -1
  124. package/dist/extraction.d.ts +1 -1
  125. package/dist/fallback-llm.d.ts +1 -1
  126. package/dist/graph-dashboard-diff.d.ts +1 -1
  127. package/dist/graph-dashboard-key.d.ts +1 -1
  128. package/dist/graph-dashboard-parser.d.ts +1 -1
  129. package/dist/graph-edge-reinforcement.d.ts +1 -1
  130. package/dist/graph-snapshot.d.ts +1 -1
  131. package/dist/graph.d.ts +1 -1
  132. package/dist/importance.d.ts +1 -1
  133. package/dist/importers/index.d.ts +1 -1
  134. package/dist/in-flight-reads.d.ts +1 -1
  135. package/dist/index.d.ts +468 -88
  136. package/dist/index.js +66 -36
  137. package/dist/intent.d.ts +1 -1
  138. package/dist/lcm/engine.d.ts +1 -1
  139. package/dist/lcm/index.d.ts +1 -1
  140. package/dist/lcm/tools.d.ts +1 -1
  141. package/dist/lifecycle.d.ts +1 -1
  142. package/dist/live-connectors-runner.d.ts +1 -1
  143. package/dist/local-llm.d.ts +1 -1
  144. package/dist/local-model-endpoint.d.ts +1 -1
  145. package/dist/maintenance/memory-governance.d.ts +1 -1
  146. package/dist/maintenance/memory-governance.js +4 -4
  147. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -2
  148. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +4 -4
  149. package/dist/maintenance/rebuild-memory-projection.d.ts +2 -2
  150. package/dist/maintenance/rebuild-memory-projection.js +5 -5
  151. package/dist/mcp-memory-inspector-app.d.ts +8 -8
  152. package/dist/memory-action-policy.d.ts +1 -1
  153. package/dist/memory-cache.d.ts +1 -1
  154. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  155. package/dist/memory-projection-store.d.ts +1 -1
  156. package/dist/memory-provenance.d.ts +1 -1
  157. package/dist/memory-worth-outcomes.d.ts +2 -2
  158. package/dist/models-json.d.ts +1 -1
  159. package/dist/namespaces/migrate.d.ts +3 -3
  160. package/dist/namespaces/migrate.js +5 -5
  161. package/dist/namespaces/principal.d.ts +1 -1
  162. package/dist/namespaces/search.d.ts +1 -1
  163. package/dist/namespaces/storage.d.ts +3 -3
  164. package/dist/namespaces/storage.js +4 -4
  165. package/dist/native-knowledge.d.ts +1 -1
  166. package/dist/offline-sync-impression-drain.d.ts +1 -1
  167. package/dist/operator-toolkit.d.ts +2 -2
  168. package/dist/operator-toolkit.js +9 -9
  169. package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
  170. package/dist/orchestration/maintenance.d.ts +3 -3
  171. package/dist/orchestration/maintenance.js +9 -9
  172. package/dist/{orchestrator-B8ickLkd.d.ts → orchestrator-DB93S48I.d.ts} +5 -5
  173. package/dist/orchestrator.d.ts +6 -6
  174. package/dist/orchestrator.js +32 -32
  175. package/dist/patterns-cli.d.ts +1 -1
  176. package/dist/{pipeline-B669unGm.d.ts → pipeline-DmGc-H66.d.ts} +1 -1
  177. package/dist/policy-runtime.d.ts +1 -1
  178. package/dist/proactive-contention.d.ts +1 -1
  179. package/dist/provenance.d.ts +1 -1
  180. package/dist/{qmd-D0PVXmea.d.ts → qmd-cJT0crkF.d.ts} +1 -1
  181. package/dist/qmd-preflight.d.ts +2 -2
  182. package/dist/qmd-recall-cache.d.ts +1 -1
  183. package/dist/qmd.d.ts +2 -2
  184. package/dist/recall-concurrency-config.d.ts +1 -1
  185. package/dist/recall-disclosure-escalation.d.ts +1 -1
  186. package/dist/recall-explain-renderer.d.ts +1 -1
  187. package/dist/recall-explain-renderer.js +3 -3
  188. package/dist/recall-memory-map.d.ts +1 -1
  189. package/dist/recall-planner-llm.d.ts +1 -1
  190. package/dist/recall-state.d.ts +1 -1
  191. package/dist/recall-tag-filter.d.ts +1 -1
  192. package/dist/recall-timings.d.ts +1 -1
  193. package/dist/recall-xray-cli.d.ts +1 -1
  194. package/dist/recall-xray-cli.js +4 -4
  195. package/dist/recall-xray-renderer.d.ts +1 -1
  196. package/dist/recall-xray-renderer.js +3 -3
  197. package/dist/recall-xray.d.ts +1 -1
  198. package/dist/recall-xray.js +2 -2
  199. package/dist/replay/normalizers/chatgpt.d.ts +1 -1
  200. package/dist/replay/normalizers/claude.d.ts +1 -1
  201. package/dist/replay/normalizers/openclaw.d.ts +1 -1
  202. package/dist/replay/normalizers/shared.d.ts +1 -1
  203. package/dist/replay/runner.d.ts +1 -1
  204. package/dist/replay/types.d.ts +1 -1
  205. package/dist/resolve-auth-token.d.ts +1 -1
  206. package/dist/resume-bundles.js +2 -2
  207. package/dist/retrieval-agents.d.ts +2 -2
  208. package/dist/retrieval-tiers.d.ts +1 -1
  209. package/dist/routing/engine.d.ts +1 -1
  210. package/dist/routing/store.d.ts +1 -1
  211. package/dist/salvage-envelope.d.ts +1 -1
  212. package/dist/{scope-profiles-BOp3gSzp.d.ts → scope-profiles-KG2nODX7.d.ts} +1 -1
  213. package/dist/search/embed-helper.d.ts +1 -1
  214. package/dist/search/factory.d.ts +1 -1
  215. package/dist/search/index.d.ts +1 -1
  216. package/dist/search/lancedb-backend.d.ts +1 -1
  217. package/dist/search/meilisearch-backend.d.ts +1 -1
  218. package/dist/search/noop-backend.d.ts +1 -1
  219. package/dist/search/orama-backend.d.ts +1 -1
  220. package/dist/search/port.d.ts +1 -1
  221. package/dist/search/remote-backend.d.ts +1 -1
  222. package/dist/{semantic-consolidation-C7SZNzUJ.d.ts → semantic-consolidation-BaZlg0D8.d.ts} +1 -1
  223. package/dist/semantic-consolidation.d.ts +2 -2
  224. package/dist/semantic-consolidation.js +5 -5
  225. package/dist/semantic-rule-promotion.js +4 -4
  226. package/dist/semantic-rule-verifier.d.ts +1 -1
  227. package/dist/semantic-rule-verifier.js +4 -4
  228. package/dist/session-observer-bands.d.ts +1 -1
  229. package/dist/session-observer-state.d.ts +1 -1
  230. package/dist/shared-context/manager.d.ts +1 -1
  231. package/dist/signal.d.ts +1 -1
  232. package/dist/{storage-CJ_Fia4H.d.ts → storage-BKhHHnRo.d.ts} +2 -221
  233. package/dist/storage.d.ts +2 -2
  234. package/dist/storage.js +3 -3
  235. package/dist/summarizer.d.ts +1 -1
  236. package/dist/summary-snapshot.d.ts +1 -1
  237. package/dist/temporal-supersession.d.ts +2 -2
  238. package/dist/temporal-timeline-recall.d.ts +1 -1
  239. package/dist/temporal-validity.d.ts +1 -1
  240. package/dist/threading.d.ts +1 -1
  241. package/dist/tier-migration.d.ts +2 -2
  242. package/dist/tier-routing.d.ts +1 -1
  243. package/dist/topics.d.ts +1 -1
  244. package/dist/transcript.d.ts +1 -1
  245. package/dist/trust-score-stage.d.ts +1 -1
  246. package/dist/trust-score.d.ts +1 -1
  247. package/dist/{types-GeWGXq9E.d.ts → types-GBQZuT7l.d.ts} +395 -1
  248. package/dist/types.d.ts +1 -1
  249. package/dist/types.js +1 -1
  250. package/dist/utility-runtime.d.ts +1 -1
  251. package/dist/verified-recall.js +4 -4
  252. package/dist/write-envelope.d.ts +1 -1
  253. package/package.json +2 -2
  254. package/src/config.ts +3 -3
  255. package/src/meetings/build.test.ts +646 -0
  256. package/src/meetings/build.ts +365 -0
  257. package/src/meetings/cli.test.ts +276 -0
  258. package/src/meetings/cli.ts +242 -0
  259. package/src/meetings/config.test.ts +72 -0
  260. package/src/meetings/config.ts +183 -0
  261. package/src/meetings/errors.ts +13 -0
  262. package/src/meetings/fuse.test.ts +208 -0
  263. package/src/meetings/fuse.ts +297 -0
  264. package/src/meetings/index.ts +11 -1
  265. package/src/meetings/memory-generator.ts +116 -0
  266. package/src/meetings/recall-exclusion.test.ts +88 -0
  267. package/src/meetings/store.test.ts +232 -0
  268. package/src/meetings/store.ts +465 -0
  269. package/src/meetings/types.ts +111 -0
  270. package/src/orchestration/orchestrator-helpers.ts +23 -3
  271. package/src/orchestration/recall-search-pipeline.test.ts +182 -0
  272. package/src/orchestration/recall-search-pipeline.ts +36 -15
  273. package/src/types.ts +6 -0
  274. package/dist/chunk-OFQUY5NZ.js.map +0 -1
  275. package/dist/chunk-OOJQ6ID5.js.map +0 -1
  276. package/dist/chunk-WYL5ODHJ.js.map +0 -1
  277. /package/dist/{auto-sync-IH3G25MT.js.map → auto-sync-UPTUVE4X.js.map} +0 -0
  278. /package/dist/{chunk-YUWFASAK.js.map → chunk-275ENJDK.js.map} +0 -0
  279. /package/dist/{chunk-EZFVVEQG.js.map → chunk-3ZUY2VQF.js.map} +0 -0
  280. /package/dist/{chunk-HRREDJSL.js.map → chunk-4F6AANKS.js.map} +0 -0
  281. /package/dist/{chunk-U7D5HWNG.js.map → chunk-4PYLBXX6.js.map} +0 -0
  282. /package/dist/{chunk-3LZSS77C.js.map → chunk-53WDAG7X.js.map} +0 -0
  283. /package/dist/{chunk-QEEMLGCO.js.map → chunk-5IXPWEQB.js.map} +0 -0
  284. /package/dist/{chunk-VSVX777Y.js.map → chunk-5JQLAQUZ.js.map} +0 -0
  285. /package/dist/{chunk-DR65EEXG.js.map → chunk-62QM5MKY.js.map} +0 -0
  286. /package/dist/{chunk-DQCUBRTZ.js.map → chunk-B7C3TF5H.js.map} +0 -0
  287. /package/dist/{chunk-RPOOJPMB.js.map → chunk-EILX7SQR.js.map} +0 -0
  288. /package/dist/{chunk-D5H3B36B.js.map → chunk-EXU5IQ3S.js.map} +0 -0
  289. /package/dist/{chunk-KUF7OIFK.js.map → chunk-EZKKHVFY.js.map} +0 -0
  290. /package/dist/{chunk-S5HCKQ7Q.js.map → chunk-GEUDRENF.js.map} +0 -0
  291. /package/dist/{chunk-X7GOH7Y6.js.map → chunk-HJEEAO4O.js.map} +0 -0
  292. /package/dist/{chunk-FL7MNSH3.js.map → chunk-HPOY2PHQ.js.map} +0 -0
  293. /package/dist/{chunk-Q55XM4SU.js.map → chunk-JFDEYXF7.js.map} +0 -0
  294. /package/dist/{chunk-UVSDFM7R.js.map → chunk-JN3IUA2Q.js.map} +0 -0
  295. /package/dist/{chunk-PLRDZ2OO.js.map → chunk-JWMYVQAM.js.map} +0 -0
  296. /package/dist/{chunk-KOFVOVJG.js.map → chunk-KHRKEELC.js.map} +0 -0
  297. /package/dist/{chunk-Y4JHE2ML.js.map → chunk-LI4ZOFHW.js.map} +0 -0
  298. /package/dist/{chunk-MLW3J7IC.js.map → chunk-LMHDFOVV.js.map} +0 -0
  299. /package/dist/{chunk-X6E5WAGX.js.map → chunk-N7EVMKP6.js.map} +0 -0
  300. /package/dist/{chunk-HCNG42P3.js.map → chunk-Q3FWRDCP.js.map} +0 -0
  301. /package/dist/{chunk-5MFHOX5T.js.map → chunk-QO2KODU6.js.map} +0 -0
  302. /package/dist/{chunk-W3DJOT22.js.map → chunk-TCZWBJBO.js.map} +0 -0
  303. /package/dist/{chunk-B3ABVQ36.js.map → chunk-UHVXE24Y.js.map} +0 -0
  304. /package/dist/{chunk-UX3ZXN34.js.map → chunk-UV72DEZD.js.map} +0 -0
  305. /package/dist/{chunk-OZSL2QZC.js.map → chunk-V5TSUGRB.js.map} +0 -0
  306. /package/dist/{chunk-CH3BRJ3P.js.map → chunk-X5QS5C2O.js.map} +0 -0
package/dist/index.d.ts CHANGED
@@ -2,8 +2,8 @@ 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-B8ickLkd.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-B8ickLkd.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';
7
7
  export { normalizeProjectionPreview, normalizeProjectionTags } from './memory-projection-format.js';
8
8
  export { ModelCapabilities, ModelRegistry } from './model-registry.js';
9
9
  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 +13,8 @@ export { TargetedFactRecallOptions, buildTargetedFactRecallSection, shouldRecall
13
13
  export { FocusedListRecallOptions, buildFocusedListRecallSection, shouldRecallFocusedListEvidence } from './focused-list-recall.js';
14
14
  export { ResponseGuidanceRecallOptions, buildResponseGuidanceRecallSection, shouldRecallResponseGuidance } from './response-guidance-recall.js';
15
15
  export { EventOrderRecallOptions, buildEventOrderRecallSection, shouldRecallEventOrderEvidence } from './event-order-recall.js';
16
- import { b as FusionConversationInput, c as FusedSpeaker, d as FusedSegment, e as FusedDisagreement, f as FusionOptions, g as FusionDayResult, S as StorageManager } from './storage-CJ_Fia4H.js';
17
- export { C as ContentHashIndex, D as DisagreementKind, h as FUSION_KIND, i as FusedContribution, j as FusedConversationProvenance, k as FusedDayFile, l as FusedDayMeta, m as FusedSegmentProvenance, a as FusedWearableConversation, n as FusionSegmentInput, M as MemoryWriteResult, o as SegmentPickReason, p as composeFusionDayMeta, q as hashFusionBody, r as parseEntityFile, s as parseFusionDay, t as serializeEntityFile, u as serializeFusionDay } from './storage-CJ_Fia4H.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';
18
18
  import { SealedMemoryEnvelope } from './write-envelope.js';
19
19
  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
20
  export { HostEmbeddingInputType, HostEmbeddingProvider, getHostEmbeddingProvider, normalizeHostEmbeddingVector, registerHostEmbeddingProvider } from './host-embedding-provider.js';
@@ -23,13 +23,13 @@ export { CodexCliFallbackConfig, CodexCliFallbackMessage, CodexCliFallbackOption
23
23
  export { BufferSurpriseProbe, SmartBuffer, TriggerDecision } from './buffer.js';
24
24
  export { ComputeSurpriseOptions, DEFAULT_SURPRISE_K, RecentMemoryLike, computeSurprise } from './buffer-surprise.js';
25
25
  export { BufferSurpriseDistribution, BufferSurpriseReader, BufferSurpriseReportOptions, reportBufferSurpriseDistribution } from './buffer-surprise-report.js';
26
- import { aD as CodingContext, aT as CodingModeConfig, aF as WearableConversation, P as PluginConfig, aU as CodingKnowledgeConfig, w as MemoryCategory, aV as WearableCleanupSettings, aW as WearableFusionConfig, aG as WearableSourceSettings, aK as WearablesConfig, aJ as WearableSourceConnector, aO as WearableCorrectionRule, aX as WearableDayTranscriptMeta, aN as WearableDayTranscript, aY as ActivitySnapshot, aZ as ActivityDayMeta, a_ as ActivityDayDigest, a$ as ActivitySourceClient, b0 as ActivitySourceCheck, b1 as ActivitySnapshotPage, b2 as ActivityConfig, b3 as ActivitySourceConfig, J as ExtractionResult, x as MemoryStatus, ah as ImportanceScore } from './types-GeWGXq9E.js';
27
- export { b4 as ActivityExtractionMode, a6 as AgentAccessAuthToken, k as BriefingActiveThread, b5 as BriefingConfig, i as BriefingFocus, h as BriefingFollowup, b6 as BriefingOpenCommitment, m as BriefingRecentEntity, l as BriefingResult, B as BriefingSections, b7 as BriefingWindow, a0 as BufferSurpriseEvent, b8 as BulkImportError, a2 as BulkImportOptions, a4 as BulkImportResult, a3 as BulkImportSource, b9 as BulkImportSourceAdapter, j as CalendarEvent, C as CalendarSource, ba as CodexCompatConfig, aS as ConsolidationObservation, bb as DEFAULT_RECALL_DISCLOSURE, E as EntityFile, ag as EntityStructuredSection, bc as ExtractedFact, G as GatewayConfig, bd as ImportSourceRole, a1 as ImportTurn, be as ImportTurnValidationIssue, aj as MemoryActionEligibilityContext, bf as MemoryActionEligibilitySource, aa as MemoryActionType, M as MemoryFile, o as MemoryFrontmatter, bg as MemoryObservation, bh as MemoryScope, bi as RECALL_DISCLOSURE_LEVELS, b as RecallDisclosure, a5 as SecretRef, bj as WearableAuthCheck, bk as WearableFetchOptions, bl as WearableFetchPage, aI as WearableMemoryMode, aH as WearableNativeMemory, bm as WearableNativeMemoryPage, aM as WearableSourceStatus, aL as WearableSyncSummary, bn as WearableTranscriptSegment, bo as isImportRole, bp as isRecallDisclosure, bq as parseIsoTimestamp, br as validateImportTurn } from './types-GeWGXq9E.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';
28
28
  import { JudgeCandidate, JudgeVerdict } from './extraction-judge.js';
29
29
  export { JudgeBatchResult, JudgeVerdictKind, clearVerdictCache, createVerdictCache, getVerdictKind, isDurableVerdict, isValidCachedVerdict, judgeFactDurability, normalizeCachedVerdict, verdictCacheSize } from './extraction-judge.js';
30
30
  export { hasBroadGraphIntent, inferIntentFromText, intentCompatibilityScore, isTaskInitiationIntent, planRecallMode } from './intent.js';
31
- import { F as EngramAccessService } from './access-service-DLuVnV6a.js';
32
- export { P as ProcedureStatsConfigSnapshot, G as ProcedureStatsRecent, H as ProcedureStatsReport, I as ProcedureStatusCounts, J as computeProcedureStats, K as formatProcedureStatsText } from './access-service-DLuVnV6a.js';
31
+ import { F as EngramAccessService } from './access-service-BqUii7LY.js';
32
+ export { P as ProcedureStatsConfigSnapshot, G as ProcedureStatsRecent, H as ProcedureStatsReport, I as ProcedureStatusCounts, J as computeProcedureStats, K as formatProcedureStatsText } from './access-service-BqUii7LY.js';
33
33
  export { FILTER_LABELS as DIRECT_ANSWER_FILTER_LABELS, DirectAnswerCandidate, DirectAnswerConfig, DirectAnswerInput, DirectAnswerReason, DirectAnswerResult, isDirectAnswerEligible } from './direct-answer.js';
34
34
  export { MemoryTier, TierRoutingPolicy, TierTransitionDecision, computeTierValueScore, decideTierTransition } from './tier-routing.js';
35
35
  export { ApplyReasoningTraceBoostOptions, BoostableResult, DEFAULT_REASONING_TRACE_BOOST, applyReasoningTraceBoost, isReasoningTracePath, looksLikeProblemSolvingQuery } from './reasoning-trace-recall.js';
@@ -37,13 +37,13 @@ export { LcmMessagePartInput, LcmMessagePartKind, LcmMessagePartRow, MessagePart
37
37
  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
38
  export { BuildRetrievedMemoryProvenanceOptions, RetrievedMemoryCorrectionState, RetrievedMemoryProvenance, RetrievedMemorySafety, buildRetrievedMemoryProvenance, normalizeRetrievedMemoryProvenance, summarizeRetrievedMemoryProvenance } from './memory-provenance.js';
39
39
  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-D0PVXmea.js';
40
+ export { Q as QmdClient } from './qmd-cJT0crkF.js';
41
41
  export { LanceDbBackend } from './search/lancedb-backend.js';
42
42
  export { OramaBackend } from './search/orama-backend.js';
43
43
  export { MeilisearchBackend } from './search/meilisearch-backend.js';
44
44
  export { buildEntityRecallSection } from './entity-retrieval.js';
45
45
  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-O6P8694A.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';
47
47
  export { SESSION_CHANNEL_TYPE, SessionIdentity, SessionStoragePaths, legacyParserReadbackDir, parseSessionIdentity, sessionStoragePaths } from './session-identity.js';
48
48
  export { storagePathHash } from './storage-paths.js';
49
49
  export { TrustZoneName, TrustZoneRecord, TrustZoneRecordKind, TrustZoneSourceClass, isTrustZoneName } from './trust-zones.js';
@@ -71,8 +71,8 @@ export { initLogger, log } from './logger.js';
71
71
  export { b as SemanticDedupDecision, a as SemanticDedupHit, S as SemanticDedupLookup, c as SemanticDedupOptions, d as decideSemanticDedup } from './semantic-TddhF0y7.js';
72
72
  export { drainPendingImpressionsForOfflineSync, drainPendingLifecycleForOfflineSync } from './offline-sync-impression-drain.js';
73
73
  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-C7SZNzUJ.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-C7SZNzUJ.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';
76
76
  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
77
  import { L as LiveConnector, S as SyncIncrementalResult } from './framework-CNDn2164.js';
78
78
  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,8 +87,8 @@ import { T as Taxonomy, R as ResolverDecision } from './types-DJhqDJUV.js';
87
87
  export { a as TaxonomyCategory } from './types-DJhqDJUV.js';
88
88
  export { EnrichmentAuditEntry, EnrichmentCandidate, EnrichmentCostTier, EnrichmentPipelineConfig, EnrichmentProvider, EnrichmentProviderConfig, EnrichmentProviderRegistry, EnrichmentResult, EntityEnrichmentInput, WebSearchFn, WebSearchProvider, WebSearchProviderOptions, appendAuditEntry, defaultEnrichmentPipelineConfig, readAuditLog, runEnrichmentPipeline } from './enrichment/index.js';
89
89
  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-B669unGm.js';
91
- export { B as BulkImportCliCommandOptions, p as parseStrictCliDate, r as runBulkImportCliCommand } from './cli-0dQHR6e6.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-DPEhq0Cp.js';
92
92
  import { BetterSqlite3Database } from './runtime/better-sqlite.js';
93
93
  import { SearchExecutionOptions } from './search/port.js';
94
94
  export { DEFAULT_IMPORT_BATCH_SIZE, ImportProgress, ImportedMemory, ImporterAdapter, ImporterParseOptions, ImporterTransformOptions, ImporterWriteResult, ImporterWriteTarget, RunImportOptions, RunImporterResult, defaultWriteMemoriesToOrchestrator, importedMemoryToTurn, runImporter, validateImportBatchSize, validateImportRateLimit } from './importers/index.js';
@@ -149,7 +149,7 @@ import './faiss-adapter-BHecI1fF.js';
149
149
  import './runtime/child-process.js';
150
150
  import './namespaces/storage.js';
151
151
  import './threading.js';
152
- import './scope-profiles-BOp3gSzp.js';
152
+ import './scope-profiles-KG2nODX7.js';
153
153
  import './graph.js';
154
154
  import './relevance.js';
155
155
  import './negative.js';
@@ -164,7 +164,7 @@ import './lcm/queue.js';
164
164
  import './policy-runtime.js';
165
165
  import './profiling.js';
166
166
  import './schemas.js';
167
- import './access-namespace-preflight-BsawJa-L.js';
167
+ import './access-namespace-preflight-tmwQgCT6.js';
168
168
  import './recall-explain-renderer.js';
169
169
  import './access-citation.js';
170
170
  import './explicit-capture.js';
@@ -7236,77 +7236,6 @@ interface ActivityMemoryGenerationResult {
7236
7236
  declare function isEligibleActivityFact(fact: ExtractionResult["facts"][number]): boolean;
7237
7237
  declare function generateActivityMemories(date: string, digestBody: string, config: ActivityConfig, deps: ActivityMemoryGenerationDeps): Promise<ActivityMemoryGenerationResult>;
7238
7238
 
7239
- /**
7240
- * Meeting-intelligence subsystem — shared types (issue #1900).
7241
- *
7242
- * Retrospective meeting detection over already-ingested day signals: audio
7243
- * conversation windows (from wearable day transcripts, any source) plus
7244
- * meeting-app foreground spans (derived from screen activity in a later slice).
7245
- * This slice is pure detection — no store, no fusion, no surfaces. All
7246
- * timestamps are UTC ISO-8601; windows are half-open [startUtc, endUtc).
7247
- */
7248
- /** A contiguous meeting-app foreground span (derived from activity in a later slice). */
7249
- interface MeetingAppSpan {
7250
- /** Meeting app label (e.g. "Zoom", "Google Meet"). */
7251
- app: string;
7252
- startUtc: string;
7253
- endUtc: string;
7254
- }
7255
- /** An audio conversation window from a wearable/connector day transcript. */
7256
- interface MeetingAudioWindow {
7257
- /** Wearable source id the conversation came from (desktop, limitless, granola, …). */
7258
- source: string;
7259
- startUtc: string;
7260
- endUtc: string;
7261
- /** Distinct non-wearer speakers in the conversation (drives the audio-only rule). */
7262
- distinctNonWearerSpeakers: number;
7263
- /**
7264
- * True when the source is a cloud meeting provider that supplies explicit
7265
- * meeting boundaries (Granola/Fireflies): such a window is a meeting on its
7266
- * own, without a matching app span.
7267
- */
7268
- providerMeeting?: boolean;
7269
- /** Provider-supplied meeting title, when available. */
7270
- title?: string;
7271
- }
7272
- /** How a meeting was detected. */
7273
- type MeetingDetectionSource = "app+audio" | "audio" | "provider";
7274
- /** One detected meeting for a day (non-overlapping after merge). */
7275
- interface DetectedMeeting {
7276
- /** Stable id `mtg-<date>-<hash>`, hashed from date + the exact START instant
7277
- * (app + end deliberately excluded) so a resync that grows the meeting never
7278
- * renumbers it, while non-overlapping meetings keep distinct ids. */
7279
- id: string;
7280
- /** Local day YYYY-MM-DD. */
7281
- date: string;
7282
- startUtc: string;
7283
- endUtc: string;
7284
- /** Meeting app, when app context contributed to detection. */
7285
- app?: string;
7286
- detectionSource: MeetingDetectionSource;
7287
- /** Contributing wearable source ids, sorted, de-duplicated. */
7288
- sources: string[];
7289
- /** Title, when a provider supplied one. */
7290
- title?: string;
7291
- }
7292
- /** Per-day detection input (assembled by a later wiring slice). */
7293
- interface MeetingsDetectionInput {
7294
- date: string;
7295
- appSpans: MeetingAppSpan[];
7296
- audioWindows: MeetingAudioWindow[];
7297
- }
7298
- /** Detection-relevant configuration (full parseConfig wiring lands in a later slice). */
7299
- interface MeetingsDetectionConfig {
7300
- /** Meeting-app match patterns (used when deriving app spans from activity). */
7301
- appPatterns: string[];
7302
- /** Min app-span ∩ audio-window overlap to pair them (minutes). */
7303
- minOverlapMinutes: number;
7304
- /** Audio-only fallback: min conversation length (minutes). */
7305
- audioOnlyMinMinutes: number;
7306
- /** Merge candidates within this gap of each other (minutes). */
7307
- mergeGapMinutes: number;
7308
- }
7309
-
7310
7239
  /**
7311
7240
  * Retrospective meeting detection (issue #1900, Phase 4 slice 1).
7312
7241
  *
@@ -7340,6 +7269,457 @@ declare function meetingId(date: string, startUtc: string): string;
7340
7269
  /** Detect the day's non-overlapping meetings from its audio + app-span signals. */
7341
7270
  declare function detectMeetings(input: MeetingsDetectionInput, config?: MeetingsDetectionConfig): DetectedMeeting[];
7342
7271
 
7272
+ /**
7273
+ * Meetings config parsing — strict, loud, and default-safe (issue #1900).
7274
+ *
7275
+ * Mirrors the wearables/procedural blocks in config.ts: shape violations and
7276
+ * unparseable values throw with actionable messages (CLAUDE.md rule 51);
7277
+ * boolean-ish strings coerce via the shared helper (rule 36); every numeric
7278
+ * knob is bounds-checked; the master gate defaults OFF (rule 48) so base
7279
+ * installs see zero behavior change.
7280
+ *
7281
+ * This slice wires only the keys detection + fusion + the record store need.
7282
+ * The memory-generation knobs (summaryMode, sourceTrust, autoApproveTrust,
7283
+ * reviewTrust) land with the trust-pipeline slice.
7284
+ */
7285
+
7286
+ declare const DEFAULT_MEETINGS_CONFIG: MeetingsConfig;
7287
+ /** Parse the `meetings` config block. Absent/`{}` → defaults (subsystem off). */
7288
+ declare function parseMeetingsConfig(value: unknown): MeetingsConfig;
7289
+
7290
+ /**
7291
+ * Error thrown by meeting surfaces for caller-correctable problems: invalid
7292
+ * dates/ids, unknown commands/flags, or a missing record. Transport layers map
7293
+ * this to 400-class responses; anything else is a backend fault (500). Mirrors
7294
+ * `WearablesInputError` so the meetings surfaces follow the same house style.
7295
+ */
7296
+ declare class MeetingsInputError extends Error {
7297
+ constructor(message: string);
7298
+ }
7299
+
7300
+ /**
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`:
7305
+ *
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 context — other-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).
7316
+ *
7317
+ * Pure and deterministic: same inputs ⇒ same `FusedMeeting`.
7318
+ */
7319
+
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;
7382
+ }
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;
7403
+ }>;
7404
+ }
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;
7411
+ }
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;
7449
+ }
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. */
7501
+ llmInvoked: boolean;
7502
+ /** Facts written active. */
7503
+ active: number;
7504
+ /** Facts queued for review (pending_review). */
7505
+ review: number;
7506
+ /** Candidates/summaries dropped below the trust bar or judge-rejected. */
7507
+ dropped: number;
7508
+ /** Candidates/summaries skipped because an identical memory already existed. */
7509
+ 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. */
7527
+ warnings: readonly string[];
7528
+ }
7529
+ /**
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).
7558
+ *
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.
7568
+ */
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
+ }
7687
+
7688
+ /**
7689
+ * Meetings CLI runner (issue #1900) — one implementation shared by every CLI
7690
+ * host (`remnic meetings ...` and `openclaw engram meetings ...`) so the
7691
+ * surfaces never fork (same rule as the wearables/recall-explain runners).
7692
+ *
7693
+ * Flag validation is strict: value-taking flags require a value, unknown flags
7694
+ * error with the valid list, malformed dates/ids reject loudly, and a missing
7695
+ * record is a caller error — all `MeetingsInputError` → exit code 1 (CLAUDE.md
7696
+ * rules 14 + 51). Backend faults bubble to the host's 500 handler.
7697
+ */
7698
+
7699
+ interface MeetingsCliIo {
7700
+ stdout: {
7701
+ write(chunk: string): unknown;
7702
+ };
7703
+ stderr: {
7704
+ write(chunk: string): unknown;
7705
+ };
7706
+ }
7707
+ /** Everything the runner drives. Injected so tests wire a store + builder over
7708
+ * synthetic fixtures with no real filesystem. */
7709
+ interface MeetingsCliDeps {
7710
+ store: MeetingRecordStore;
7711
+ builder: MeetingsBuilder;
7712
+ /**
7713
+ * Meetings config, so list/show honor `meetings.enabled`. The runner reads the
7714
+ * store directly (not through an enabled-aware service), so without this gate a
7715
+ * disabled subsystem would still expose stored records via list/show even
7716
+ * though `build` refuses. Disabled => no exposure (issue #1900).
7717
+ */
7718
+ config: MeetingsConfig;
7719
+ }
7720
+ /** Run a meetings CLI command. Returns a process exit code; all output via `io`. */
7721
+ declare function runMeetingsCliCommand(deps: MeetingsCliDeps, args: string[], io: MeetingsCliIo): Promise<number>;
7722
+
7343
7723
  type LocalSessionRole = "user" | "assistant" | "tool" | "system" | "other";
7344
7724
  interface LocalSessionTurn {
7345
7725
  role: LocalSessionRole;
@@ -7656,4 +8036,4 @@ declare function forkCapsule(opts: ForkCapsuleOptions): Promise<ForkCapsuleResul
7656
8036
  */
7657
8037
  declare function readForkLineage(targetRoot: string, forkId: string): Promise<ForkLineage | null>;
7658
8038
 
7659
- 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_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, type 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, type MeetingAppSpan, type MeetingAudioWindow, type MeetingDetectionSource, type MeetingsDetectionConfig, type MeetingsDetectionInput, 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, 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, buildProcedureMarkdownBody, buildProcedureRecallSection, cleanConversation, clearStructuralContextProvidersForTest, clearTrainingExportAdapters, clearWearableConnectors, clusterConversations, collapseImmediateRepeats, collectLocalSessionSummaries, compareRelayEvents, compileCorrectionRule, compileCorrectionRules, compileRedactionPatterns, compileRedactionRules, composeActivityDigestBody, composeActivityDigestMeta, composeDayTranscriptBody, composeDayTranscriptMeta, 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, 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, mergeSpaces, normalizeOriginUrl, onboard, openActivityDatabase, packReviewContext, packReviewContextStructural, parseActivityConfig, parseActivityDigest, parseDayTranscript, parseFlexibleIsoTimestamp, parseIsoOffsetTimestamp, parseIsoUtcTimestamp, 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, runWearablesCliCommand, saveCorrectionsFile, saveManifest, saveSyncState, saveTaxonomy, scanForBinaries, serializeActivityDigest, serializeDayTranscript, shareSpace, stableHash, stripFillerTokens, structuralProviderActive, switchSpace, syncActivitySource, syncChanges, syncStateFilePath, toStructuralContextDegradation, unescapeSegmentText, unescapeSpeakerLabel, updateSourceSyncState, validateActivityBaseUrl, validateGoogleDriveConfig, validateNotionConfig, validateSlug, validateTaxonomy, watchForChanges, writeManifest };
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 };