@remnic/core 9.22.0 → 9.22.2

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 (402) 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 +16 -13
  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-schema.d.ts +76 -76
  33. package/dist/{access-service-BtxW52vv.d.ts → access-service-CKEROeFP.d.ts} +22 -11
  34. package/dist/access-service.d.ts +13 -10
  35. package/dist/access-service.js +25 -24
  36. package/dist/access-surface-catalog.d.ts +12 -9
  37. package/dist/access-surface-catalog.js +6 -0
  38. package/dist/access-surface-catalog.js.map +1 -1
  39. package/dist/access-wearables-meetings-surface.d.ts +78 -0
  40. package/dist/access-wearables-meetings-surface.js +22 -0
  41. package/dist/access-wearables-meetings-surface.js.map +1 -0
  42. package/dist/action-confidence.d.ts +1 -1
  43. package/dist/active-memory-bridge.d.ts +1 -1
  44. package/dist/active-recall.d.ts +1 -1
  45. package/dist/active-recall.js +2 -2
  46. package/dist/{auto-sync-UPTUVE4X.js → auto-sync-5OE5QOZB.js} +3 -3
  47. package/dist/behavior-learner.d.ts +1 -1
  48. package/dist/behavior-signals.d.ts +1 -1
  49. package/dist/bootstrap.d.ts +9 -7
  50. package/dist/briefing.d.ts +2 -2
  51. package/dist/briefing.js +5 -5
  52. package/dist/buffer-surprise-report.d.ts +1 -1
  53. package/dist/buffer.d.ts +2 -2
  54. package/dist/bulk-import/index.d.ts +3 -3
  55. package/dist/calibration.d.ts +1 -1
  56. package/dist/capabilities.d.ts +1 -1
  57. package/dist/{catalog-iWvWz61I.d.ts → catalog-BFTVo2Ez.d.ts} +1 -1
  58. package/dist/causal-behavior.d.ts +1 -1
  59. package/dist/causal-behavior.js +2 -2
  60. package/dist/causal-chain.js +2 -2
  61. package/dist/causal-consolidation.d.ts +1 -1
  62. package/dist/causal-consolidation.js +9 -9
  63. package/dist/causal-retrieval.js +2 -2
  64. package/dist/causal-trajectory-graph.d.ts +1 -1
  65. package/dist/causal-trajectory.js +1 -1
  66. package/dist/{chunk-GF22HWS2.js → chunk-2PHX3I5C.js} +7 -7
  67. package/dist/{chunk-JFDEYXF7.js → chunk-3NAHZQU3.js} +2 -2
  68. package/dist/{chunk-XBRPEGXF.js → chunk-3UOSVTFR.js} +5 -5
  69. package/dist/{chunk-TTKWTT72.js → chunk-3ZW6ZQO6.js} +3 -3
  70. package/dist/{chunk-UV72DEZD.js → chunk-4B77XSG5.js} +5 -5
  71. package/dist/{chunk-IC2TCZJ2.js → chunk-57QKLRBV.js} +3 -1
  72. package/dist/chunk-57QKLRBV.js.map +1 -0
  73. package/dist/{chunk-LMHDFOVV.js → chunk-5CPI2QWG.js} +3 -3
  74. package/dist/{chunk-P72WZMWQ.js → chunk-5FZQ74K5.js} +2 -2
  75. package/dist/{chunk-BRT7KEXU.js → chunk-6TWXQ4E2.js} +5 -5
  76. package/dist/{chunk-CV6ZYXK3.js → chunk-7I7AYIUQ.js} +3 -3
  77. package/dist/{chunk-TVVEYCNW.js → chunk-7K5Q6COX.js} +4 -4
  78. package/dist/{chunk-MONWCSVL.js → chunk-7RAJ3GXO.js} +2 -1
  79. package/dist/chunk-7RAJ3GXO.js.map +1 -0
  80. package/dist/{chunk-SQEDDWAM.js → chunk-A2RFKL3V.js} +5 -34
  81. package/dist/chunk-A2RFKL3V.js.map +1 -0
  82. package/dist/{chunk-JN57HZCD.js → chunk-ATEAL5EI.js} +6 -6
  83. package/dist/{chunk-4PYLBXX6.js → chunk-AYAROCWD.js} +2 -2
  84. package/dist/chunk-BLDBT6HZ.js +39 -0
  85. package/dist/chunk-BLDBT6HZ.js.map +1 -0
  86. package/dist/{chunk-NB2P47N7.js → chunk-CUUY5CC4.js} +6 -6
  87. package/dist/{chunk-KL5Y6PEV.js → chunk-E3ZMFFQZ.js} +2 -2
  88. package/dist/{chunk-55FDQYPS.js → chunk-ES5IHQ6M.js} +2 -2
  89. package/dist/{chunk-N47ZWQBO.js → chunk-G2NSSQES.js} +2 -2
  90. package/dist/{chunk-GSWPU5CR.js → chunk-GD3QOBMB.js} +2 -2
  91. package/dist/{chunk-6ANPNUVL.js → chunk-IIXLB5E7.js} +58 -36
  92. package/dist/chunk-IIXLB5E7.js.map +1 -0
  93. package/dist/{chunk-SACPRJ7F.js → chunk-JNIJBXVK.js} +2 -2
  94. package/dist/{chunk-W3XT32W7.js → chunk-JVGUY2AU.js} +23 -13
  95. package/dist/chunk-JVGUY2AU.js.map +1 -0
  96. package/dist/{chunk-DGLON3AL.js → chunk-KNRG6ZGJ.js} +6 -6
  97. package/dist/{chunk-GEUDRENF.js → chunk-MMTG3SCJ.js} +2 -2
  98. package/dist/{chunk-WZFAPHIK.js → chunk-MU7ZHSZE.js} +2 -2
  99. package/dist/{chunk-W4FBGYGK.js → chunk-NRV4Y3PM.js} +1 -1
  100. package/dist/{chunk-QTO2FGBT.js → chunk-OUW4PAY4.js} +191 -117
  101. package/dist/chunk-OUW4PAY4.js.map +1 -0
  102. package/dist/{chunk-KQ2XCQYN.js → chunk-P2BLHUL2.js} +2 -2
  103. package/dist/{chunk-ACGGTPU4.js → chunk-QCKQEBIY.js} +17 -9
  104. package/dist/chunk-QCKQEBIY.js.map +1 -0
  105. package/dist/{chunk-6L775BUB.js → chunk-QE63OHLB.js} +2 -2
  106. package/dist/{chunk-ONHRRJZM.js → chunk-QJAQNXWI.js} +6 -6
  107. package/dist/{chunk-EQYBHXRR.js → chunk-ROUL7RZU.js} +385 -59
  108. package/dist/chunk-ROUL7RZU.js.map +1 -0
  109. package/dist/{chunk-N6M7MRVN.js → chunk-RT4TSR2C.js} +9034 -8726
  110. package/dist/chunk-RT4TSR2C.js.map +1 -0
  111. package/dist/{chunk-6NZ7U4R4.js → chunk-SCOT5DTA.js} +1 -1
  112. package/dist/chunk-SCOT5DTA.js.map +1 -0
  113. package/dist/{chunk-6RYWNBSA.js → chunk-SVZGA2MK.js} +2 -2
  114. package/dist/chunk-SYOIVK7K.js +63 -0
  115. package/dist/chunk-SYOIVK7K.js.map +1 -0
  116. package/dist/{chunk-DM5A4ZFL.js → chunk-TWCOYET2.js} +11 -1
  117. package/dist/chunk-TWCOYET2.js.map +1 -0
  118. package/dist/{chunk-7S5OMI76.js → chunk-WS32QRLO.js} +109 -44
  119. package/dist/chunk-WS32QRLO.js.map +1 -0
  120. package/dist/{chunk-OCMLGND7.js → chunk-WWZ35GWW.js} +5 -5
  121. package/dist/{chunk-QMGIQUBG.js → chunk-XWPFZX6S.js} +503 -139
  122. package/dist/chunk-XWPFZX6S.js.map +1 -0
  123. package/dist/{chunk-A5N6ISRK.js → chunk-ZN4UZWMT.js} +2 -2
  124. package/dist/{chunk-7M6APKJL.js → chunk-ZYU7ZFLT.js} +2 -2
  125. package/dist/{cli-D9vXgWwM.d.ts → cli-BrwT9YMD.d.ts} +5 -5
  126. package/dist/cli.d.ts +14 -11
  127. package/dist/cli.js +57 -56
  128. package/dist/compounding/engine.d.ts +2 -2
  129. package/dist/compounding/engine.js +5 -5
  130. package/dist/compounding/preference-consolidator.d.ts +1 -1
  131. package/dist/compression-optimizer.d.ts +1 -1
  132. package/dist/config.d.ts +1 -1
  133. package/dist/config.js +2 -2
  134. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  135. package/dist/connectors/codex-materialize-runner.js +5 -5
  136. package/dist/connectors/codex-materialize.d.ts +1 -1
  137. package/dist/connectors/index.d.ts +1 -1
  138. package/dist/connectors/index.js +5 -5
  139. package/dist/consolidation-provenance-check.d.ts +2 -2
  140. package/dist/consolidation-undo.d.ts +2 -2
  141. package/dist/contradiction/index.d.ts +2 -2
  142. package/dist/conversation-index/backend.d.ts +1 -1
  143. package/dist/conversation-index/chunker.d.ts +1 -1
  144. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  145. package/dist/conversation-index/indexer.d.ts +1 -1
  146. package/dist/conversation-index/search.d.ts +1 -1
  147. package/dist/day-summary.d.ts +1 -1
  148. package/dist/delinearize.d.ts +1 -1
  149. package/dist/direct-answer-wiring.d.ts +1 -1
  150. package/dist/direct-answer.d.ts +1 -1
  151. package/dist/embedding-fallback.d.ts +1 -1
  152. package/dist/enrichment/index.d.ts +1 -1
  153. package/dist/entity-retrieval.d.ts +2 -2
  154. package/dist/entity-retrieval.js +5 -5
  155. package/dist/entity-schema.d.ts +1 -1
  156. package/dist/explicit-capture.d.ts +9 -7
  157. package/dist/extraction-error-classification.d.ts +22 -0
  158. package/dist/extraction-error-classification.js +11 -0
  159. package/dist/extraction-error-classification.js.map +1 -0
  160. package/dist/extraction-faithfulness.d.ts +1 -1
  161. package/dist/extraction-judge-telemetry.d.ts +1 -1
  162. package/dist/extraction-judge-training.d.ts +1 -1
  163. package/dist/extraction-judge.d.ts +1 -1
  164. package/dist/extraction.d.ts +3 -17
  165. package/dist/extraction.js +5 -3
  166. package/dist/fallback-llm.d.ts +1 -1
  167. package/dist/{first-start-migration-LEXL3XYL.js → first-start-migration-BKNGOFED.js} +4 -4
  168. package/dist/graph-dashboard-diff.d.ts +1 -1
  169. package/dist/graph-dashboard-key.d.ts +1 -1
  170. package/dist/graph-dashboard-parser.d.ts +1 -1
  171. package/dist/graph-edge-reinforcement.d.ts +1 -1
  172. package/dist/graph-snapshot.d.ts +1 -1
  173. package/dist/graph.d.ts +1 -1
  174. package/dist/importance.d.ts +1 -1
  175. package/dist/importers/index.d.ts +1 -1
  176. package/dist/in-flight-reads.d.ts +1 -1
  177. package/dist/index.d.ts +713 -923
  178. package/dist/index.js +176 -140
  179. package/dist/intent.d.ts +1 -1
  180. package/dist/lcm/engine.d.ts +1 -1
  181. package/dist/lcm/engine.js +3 -3
  182. package/dist/lcm/index.d.ts +1 -1
  183. package/dist/lcm/index.js +11 -11
  184. package/dist/lcm/tools.d.ts +1 -1
  185. package/dist/lifecycle.d.ts +1 -1
  186. package/dist/live-connectors-runner.d.ts +1 -1
  187. package/dist/local-llm.d.ts +1 -1
  188. package/dist/local-model-endpoint.d.ts +1 -1
  189. package/dist/maintenance/memory-governance.d.ts +1 -1
  190. package/dist/maintenance/memory-governance.js +6 -6
  191. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -2
  192. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +5 -5
  193. package/dist/maintenance/rebuild-memory-projection.d.ts +2 -2
  194. package/dist/maintenance/rebuild-memory-projection.js +7 -7
  195. package/dist/maintenance-C98njYb8.d.ts +366 -0
  196. package/dist/mcp-memory-inspector-app.d.ts +12 -9
  197. package/dist/mcp-read-only-tools.js +1 -1
  198. package/dist/memory-action-policy.d.ts +1 -1
  199. package/dist/memory-cache.d.ts +1 -1
  200. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  201. package/dist/memory-projection-store.d.ts +1 -1
  202. package/dist/memory-provenance.d.ts +1 -1
  203. package/dist/memory-worth-outcomes.d.ts +2 -2
  204. package/dist/models-json.d.ts +1 -1
  205. package/dist/namespaces/migrate.d.ts +3 -3
  206. package/dist/namespaces/migrate.js +12 -12
  207. package/dist/namespaces/principal.d.ts +1 -1
  208. package/dist/namespaces/search.d.ts +1 -1
  209. package/dist/namespaces/search.js +6 -6
  210. package/dist/namespaces/storage.d.ts +3 -3
  211. package/dist/namespaces/storage.js +5 -5
  212. package/dist/native-knowledge.d.ts +1 -1
  213. package/dist/offline-sync-impression-drain.d.ts +1 -1
  214. package/dist/operator-toolkit.d.ts +2 -2
  215. package/dist/operator-toolkit.js +18 -18
  216. package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
  217. package/dist/orchestration/maintenance.d.ts +6 -223
  218. package/dist/orchestration/maintenance.js +12 -12
  219. package/dist/{orchestrator-DB93S48I.d.ts → orchestrator-C9ZVppNh.d.ts} +12 -481
  220. package/dist/orchestrator.d.ts +10 -8
  221. package/dist/orchestrator.js +84 -82
  222. package/dist/patterns-cli.d.ts +1 -1
  223. package/dist/{pipeline-DmGc-H66.d.ts → pipeline-id_-sqYm.d.ts} +1 -1
  224. package/dist/policy-runtime.d.ts +1 -1
  225. package/dist/proactive-contention.d.ts +1 -1
  226. package/dist/provenance.d.ts +1 -1
  227. package/dist/{qmd-cJT0crkF.d.ts → qmd-R6XaQOZK.d.ts} +1 -1
  228. package/dist/qmd-preflight.d.ts +2 -2
  229. package/dist/qmd-recall-cache.d.ts +1 -1
  230. package/dist/qmd.d.ts +2 -2
  231. package/dist/qmd.js +4 -4
  232. package/dist/recall-concurrency-config.d.ts +1 -1
  233. package/dist/recall-disclosure-escalation.d.ts +1 -1
  234. package/dist/recall-explain-renderer.d.ts +1 -1
  235. package/dist/recall-explain-renderer.js +3 -3
  236. package/dist/recall-memory-map.d.ts +1 -1
  237. package/dist/recall-planner-llm.d.ts +1 -1
  238. package/dist/recall-state.d.ts +1 -1
  239. package/dist/recall-tag-filter.d.ts +1 -1
  240. package/dist/recall-timings.d.ts +1 -1
  241. package/dist/recall-xray-cli.d.ts +1 -1
  242. package/dist/recall-xray-cli.js +4 -4
  243. package/dist/recall-xray-renderer.d.ts +1 -1
  244. package/dist/recall-xray-renderer.js +3 -3
  245. package/dist/recall-xray.d.ts +1 -1
  246. package/dist/recall-xray.js +2 -2
  247. package/dist/replay/normalizers/chatgpt.d.ts +1 -1
  248. package/dist/replay/normalizers/claude.d.ts +1 -1
  249. package/dist/replay/normalizers/openclaw.d.ts +1 -1
  250. package/dist/replay/normalizers/shared.d.ts +1 -1
  251. package/dist/replay/runner.d.ts +1 -1
  252. package/dist/replay/types.d.ts +1 -1
  253. package/dist/resolve-auth-token.d.ts +1 -1
  254. package/dist/resume-bundles.js +4 -4
  255. package/dist/retrieval-agents.d.ts +2 -2
  256. package/dist/retrieval-tiers.d.ts +1 -1
  257. package/dist/routing/engine.d.ts +1 -1
  258. package/dist/routing/store.d.ts +1 -1
  259. package/dist/salvage-envelope.d.ts +1 -1
  260. package/dist/schemas.d.ts +76 -76
  261. package/dist/{scope-profiles-KG2nODX7.d.ts → scope-profiles-EhyuAKkd.d.ts} +1 -1
  262. package/dist/search/embed-helper.d.ts +1 -1
  263. package/dist/search/factory.d.ts +1 -1
  264. package/dist/search/factory.js +5 -5
  265. package/dist/search/index.d.ts +1 -1
  266. package/dist/search/index.js +9 -9
  267. package/dist/search/lancedb-backend.d.ts +1 -1
  268. package/dist/search/meilisearch-backend.d.ts +1 -1
  269. package/dist/search/noop-backend.d.ts +1 -1
  270. package/dist/search/orama-backend.d.ts +1 -1
  271. package/dist/search/port.d.ts +1 -1
  272. package/dist/search/remote-backend.d.ts +1 -1
  273. package/dist/{semantic-consolidation-BaZlg0D8.d.ts → semantic-consolidation-B2xo26UQ.d.ts} +1 -1
  274. package/dist/semantic-consolidation.d.ts +2 -2
  275. package/dist/semantic-consolidation.js +7 -7
  276. package/dist/semantic-rule-promotion.js +5 -5
  277. package/dist/semantic-rule-verifier.d.ts +1 -1
  278. package/dist/semantic-rule-verifier.js +6 -6
  279. package/dist/service-DgFWlZ-r.d.ts +835 -0
  280. package/dist/session-observer-bands.d.ts +1 -1
  281. package/dist/session-observer-state.d.ts +1 -1
  282. package/dist/shared-context/manager.d.ts +9 -9
  283. package/dist/signal.d.ts +1 -1
  284. package/dist/{storage-BKhHHnRo.d.ts → storage-XGawwqXE.d.ts} +131 -2
  285. package/dist/storage.d.ts +2 -2
  286. package/dist/storage.js +4 -4
  287. package/dist/summarizer.d.ts +1 -1
  288. package/dist/summary-snapshot.d.ts +1 -1
  289. package/dist/temporal-supersession.d.ts +2 -2
  290. package/dist/temporal-timeline-recall.d.ts +1 -1
  291. package/dist/temporal-validity.d.ts +1 -1
  292. package/dist/threading.d.ts +1 -1
  293. package/dist/tier-migration.d.ts +2 -2
  294. package/dist/tier-routing.d.ts +1 -1
  295. package/dist/topics.d.ts +1 -1
  296. package/dist/transcript.d.ts +1 -1
  297. package/dist/transfer/types.d.ts +66 -66
  298. package/dist/trust-score-stage.d.ts +1 -1
  299. package/dist/trust-score.d.ts +1 -1
  300. package/dist/{types-GBQZuT7l.d.ts → types-Bbs0qz6b.d.ts} +2 -3
  301. package/dist/types.d.ts +1 -1
  302. package/dist/types.js +1 -1
  303. package/dist/utility-runtime.d.ts +1 -1
  304. package/dist/verified-recall.js +6 -6
  305. package/dist/write-envelope.d.ts +1 -1
  306. package/package.json +2 -2
  307. package/src/access-boundary.ts +3 -0
  308. package/src/access-http.test.ts +63 -0
  309. package/src/access-http.ts +26 -37
  310. package/src/access-mcp-output-schemas.ts +10 -0
  311. package/src/access-mcp.ts +4 -121
  312. package/src/access-operations-batch.ts +10 -5
  313. package/src/access-service.ts +43 -46
  314. package/src/access-surface-catalog.ts +6 -0
  315. package/src/access-wearables-meetings-surface.ts +139 -0
  316. package/src/activity/digest.ts +1 -1
  317. package/src/activity/runner.test.ts +37 -0
  318. package/src/activity/runner.ts +12 -0
  319. package/src/activity/scheduler.test.ts +1 -0
  320. package/src/activity/sync-registration.ts +13 -0
  321. package/src/cli/meetings-commands.ts +70 -0
  322. package/src/cli.ts +7 -6
  323. package/src/extraction-error-classification.ts +52 -0
  324. package/src/extraction.ts +2 -50
  325. package/src/mcp-read-only-tools.ts +2 -0
  326. package/src/meetings/build-memory.test.ts +364 -0
  327. package/src/meetings/build-scheduler.test.ts +55 -0
  328. package/src/meetings/build-scheduler.ts +96 -0
  329. package/src/meetings/day-source.test.ts +275 -0
  330. package/src/meetings/day-source.ts +352 -0
  331. package/src/meetings/http-glue.ts +126 -0
  332. package/src/meetings/index.ts +5 -4
  333. package/src/meetings/manual-sync-flush.test.ts +72 -0
  334. package/src/meetings/mcp-tools.ts +65 -0
  335. package/src/meetings/memory-gen.test.ts +498 -0
  336. package/src/meetings/memory-gen.ts +549 -0
  337. package/src/meetings/memory-generator.ts +5 -0
  338. package/src/meetings/namespace-isolation.test.ts +159 -0
  339. package/src/meetings/service.test.ts +195 -0
  340. package/src/meetings/service.ts +157 -0
  341. package/src/meetings/summary-extractor.test.ts +287 -0
  342. package/src/meetings/summary-extractor.ts +264 -0
  343. package/src/orchestration/maintenance.ts +8 -0
  344. package/src/orchestration/orchestrator-init.ts +6 -1
  345. package/src/orchestration/workspace-ops.ts +172 -8
  346. package/src/orchestrator.ts +12 -13
  347. package/src/storage.ts +21 -0
  348. package/src/testing/subjects/meetings-namespace-harness.ts +159 -0
  349. package/src/testing/subjects/meetings-namespace.test.ts +93 -0
  350. package/src/types.ts +1 -2
  351. package/src/wearables/cli.ts +2 -1
  352. package/src/wearables/index.ts +1 -0
  353. package/src/wearables/mcp-tools.ts +143 -0
  354. package/src/wearables/registry.test.ts +11 -0
  355. package/src/wearables/registry.ts +13 -0
  356. package/src/wearables/service.test.ts +62 -1
  357. package/src/wearables/service.ts +30 -2
  358. package/src/wearables/transcript-search-namespace-isolation.test.ts +98 -0
  359. package/dist/chunk-6ANPNUVL.js.map +0 -1
  360. package/dist/chunk-6NZ7U4R4.js.map +0 -1
  361. package/dist/chunk-7S5OMI76.js.map +0 -1
  362. package/dist/chunk-ACGGTPU4.js.map +0 -1
  363. package/dist/chunk-DM5A4ZFL.js.map +0 -1
  364. package/dist/chunk-EQYBHXRR.js.map +0 -1
  365. package/dist/chunk-IC2TCZJ2.js.map +0 -1
  366. package/dist/chunk-MONWCSVL.js.map +0 -1
  367. package/dist/chunk-N6M7MRVN.js.map +0 -1
  368. package/dist/chunk-QMGIQUBG.js.map +0 -1
  369. package/dist/chunk-QTO2FGBT.js.map +0 -1
  370. package/dist/chunk-SQEDDWAM.js.map +0 -1
  371. package/dist/chunk-W3XT32W7.js.map +0 -1
  372. /package/dist/{auto-sync-UPTUVE4X.js.map → auto-sync-5OE5QOZB.js.map} +0 -0
  373. /package/dist/{chunk-GF22HWS2.js.map → chunk-2PHX3I5C.js.map} +0 -0
  374. /package/dist/{chunk-JFDEYXF7.js.map → chunk-3NAHZQU3.js.map} +0 -0
  375. /package/dist/{chunk-XBRPEGXF.js.map → chunk-3UOSVTFR.js.map} +0 -0
  376. /package/dist/{chunk-TTKWTT72.js.map → chunk-3ZW6ZQO6.js.map} +0 -0
  377. /package/dist/{chunk-UV72DEZD.js.map → chunk-4B77XSG5.js.map} +0 -0
  378. /package/dist/{chunk-LMHDFOVV.js.map → chunk-5CPI2QWG.js.map} +0 -0
  379. /package/dist/{chunk-P72WZMWQ.js.map → chunk-5FZQ74K5.js.map} +0 -0
  380. /package/dist/{chunk-BRT7KEXU.js.map → chunk-6TWXQ4E2.js.map} +0 -0
  381. /package/dist/{chunk-CV6ZYXK3.js.map → chunk-7I7AYIUQ.js.map} +0 -0
  382. /package/dist/{chunk-TVVEYCNW.js.map → chunk-7K5Q6COX.js.map} +0 -0
  383. /package/dist/{chunk-JN57HZCD.js.map → chunk-ATEAL5EI.js.map} +0 -0
  384. /package/dist/{chunk-4PYLBXX6.js.map → chunk-AYAROCWD.js.map} +0 -0
  385. /package/dist/{chunk-NB2P47N7.js.map → chunk-CUUY5CC4.js.map} +0 -0
  386. /package/dist/{chunk-KL5Y6PEV.js.map → chunk-E3ZMFFQZ.js.map} +0 -0
  387. /package/dist/{chunk-55FDQYPS.js.map → chunk-ES5IHQ6M.js.map} +0 -0
  388. /package/dist/{chunk-N47ZWQBO.js.map → chunk-G2NSSQES.js.map} +0 -0
  389. /package/dist/{chunk-GSWPU5CR.js.map → chunk-GD3QOBMB.js.map} +0 -0
  390. /package/dist/{chunk-SACPRJ7F.js.map → chunk-JNIJBXVK.js.map} +0 -0
  391. /package/dist/{chunk-DGLON3AL.js.map → chunk-KNRG6ZGJ.js.map} +0 -0
  392. /package/dist/{chunk-GEUDRENF.js.map → chunk-MMTG3SCJ.js.map} +0 -0
  393. /package/dist/{chunk-WZFAPHIK.js.map → chunk-MU7ZHSZE.js.map} +0 -0
  394. /package/dist/{chunk-W4FBGYGK.js.map → chunk-NRV4Y3PM.js.map} +0 -0
  395. /package/dist/{chunk-KQ2XCQYN.js.map → chunk-P2BLHUL2.js.map} +0 -0
  396. /package/dist/{chunk-6L775BUB.js.map → chunk-QE63OHLB.js.map} +0 -0
  397. /package/dist/{chunk-ONHRRJZM.js.map → chunk-QJAQNXWI.js.map} +0 -0
  398. /package/dist/{chunk-6RYWNBSA.js.map → chunk-SVZGA2MK.js.map} +0 -0
  399. /package/dist/{chunk-OCMLGND7.js.map → chunk-WWZ35GWW.js.map} +0 -0
  400. /package/dist/{chunk-A5N6ISRK.js.map → chunk-ZN4UZWMT.js.map} +0 -0
  401. /package/dist/{chunk-7M6APKJL.js.map → chunk-ZYU7ZFLT.js.map} +0 -0
  402. /package/dist/{first-start-migration-LEXL3XYL.js.map → first-start-migration-BKNGOFED.js.map} +0 -0
@@ -3,17 +3,17 @@ import { BriefingFollowupGenerator } from './briefing.js';
3
3
  import { SmartBuffer } from './buffer.js';
4
4
  import { FaithfulnessGateCounters } from './extraction-faithfulness.js';
5
5
  import { SearchBackend, SearchQueryOptions, SearchExecutionOptions } from './search/port.js';
6
- import { M as MemoryWriteResult, F as FusionArtifactStore, S as StorageManager } from './storage-BKhHHnRo.js';
6
+ import { S as StorageManager } from './storage-XGawwqXE.js';
7
7
  import { TranscriptManager } from './transcript.js';
8
8
  import { HourlySummarizer } from './summarizer.js';
9
9
  import { LocalLlmClient } from './local-llm.js';
10
10
  import { FallbackLlmClient } from './fallback-llm.js';
11
- import { MaintenanceScheduler } from './orchestration/maintenance.js';
12
- import { n as BufferTurn, J as ExtractionResult, ah as ImportanceScore, x as MemoryStatus, aI as WearableConversation, aJ as WearableSourceSettings, aK as WearableNativeMemory, aL as WearableMemoryMode, aM as WearableSourceConnector, aN as WearablesConfig, aO as WearableSyncSummary, aP as WearableSourceStatus, aQ as WearableDayTranscript, au as FusedWearableConversation, aR as WearableCorrectionRule, P as PluginConfig, M as MemoryFile, ab as MemoryActionEvent, Q as QmdSearchResult, R as RecallPlanMode, I as IdentityInjectionMode, aS as RecallSectionConfig, ay as MemoryLink, aG as CodingContext, r as SourceConnectorProvenance, ai as MemoryIntent, o as MemoryFrontmatter, v as BehaviorLoopPolicyState, aT as BootstrapOptions, aU as BootstrapResult, aV as ConsolidationObservation, N as DaySummaryResult, a1 as ImportTurn } from './types-GBQZuT7l.js';
11
+ import { M as MaintenanceScheduler } from './maintenance-C98njYb8.js';
12
+ import { P as PluginConfig, M as MemoryFile, ab as MemoryActionEvent, Q as QmdSearchResult, R as RecallPlanMode, I as IdentityInjectionMode, b3 as RecallSectionConfig, aF as MemoryLink, J as ExtractionResult, n as BufferTurn, b1 as CodingContext, r as SourceConnectorProvenance, ai as MemoryIntent, o as MemoryFrontmatter, v as BehaviorLoopPolicyState, b4 as BootstrapOptions, b5 as BootstrapResult, b6 as ConsolidationObservation, N as DaySummaryResult, a1 as ImportTurn } from './types-Bbs0qz6b.js';
13
13
  import { CompoundingEngine } from './compounding/engine.js';
14
14
  import { UtilityRuntimeValues } from './utility-runtime.js';
15
15
  import { CompressionGuidelineCoordinator } from './orchestration/compression-guideline-coordinator.js';
16
- import { S as SemanticConsolidationResult } from './semantic-consolidation-BaZlg0D8.js';
16
+ import { S as SemanticConsolidationResult } from './semantic-consolidation-B2xo26UQ.js';
17
17
  import { EmbeddingFallback } from './embedding-fallback.js';
18
18
  import { ExtractionEngine } from './extraction.js';
19
19
  import { ObjectiveStateSearchResult } from './objective-state.js';
@@ -32,7 +32,7 @@ import { CapabilitySet, GraphConstructionCapabilitySet, MemoryLifecycleCapabilit
32
32
  import { BoxBuilder } from './boxes.js';
33
33
  import { NamespaceStorageRouter } from './namespaces/storage.js';
34
34
  import { ThreadingManager } from './threading.js';
35
- import { R as ResolvedScopeProfilePlan } from './scope-profiles-KG2nODX7.js';
35
+ import { R as ResolvedScopeProfilePlan } from './scope-profiles-EhyuAKkd.js';
36
36
  import { GraphIndex } from './graph.js';
37
37
  import { RecallXrayServedBy, RecallXraySnapshot } from './recall-xray.js';
38
38
  import { LiveConnectorsRunSummary } from './live-connectors-runner.js';
@@ -42,71 +42,14 @@ import { NegativeExampleStore } from './negative.js';
42
42
  import { SessionObserverState } from './session-observer-state.js';
43
43
  import { a as SemanticDedupHit } from './semantic-TddhF0y7.js';
44
44
  import { ReplayTurn } from './replay/types.js';
45
- import { SealedMemoryEnvelope } from './write-envelope.js';
46
- import { JudgeCandidate, JudgeBatchResult } from './extraction-judge.js';
45
+ import { W as WearablesService, M as MeetingsService } from './service-DgFWlZ-r.js';
47
46
  import { LcmEngine } from './lcm/engine.js';
48
- import { b as NamespaceKind, N as NamespaceCatalog } from './catalog-iWvWz61I.js';
47
+ import { b as NamespaceKind, N as NamespaceCatalog } from './catalog-BFTVo2Ez.js';
49
48
  import { NamespaceSearchHealth } from './namespaces/search.js';
50
49
  import { SharedContextManager } from './shared-context/manager.js';
51
50
  import { RuntimePolicyValues } from './policy-runtime.js';
52
51
  import { ProfilingCollector } from './profiling.js';
53
52
 
54
- /**
55
- * Wearable speaker registry — maps provider diarization labels to
56
- * human names, persistently, per source.
57
- *
58
- * Providers expose speakers differently (Limitless: names + a "user"
59
- * marker; Bee: opaque labels like "0"/"1"; Omi: "SPEAKER_00" + is_user
60
- * + optional person ids). The registry stores operator-confirmed
61
- * mappings keyed `<sourceId>:<speakerKey>` in
62
- * `state/wearables/speakers.json`, plus the wearer's display name.
63
- *
64
- * Resolution precedence (most-authoritative first):
65
- * 1. registry override for `<sourceId>:<speakerKey>`
66
- * 2. provider-identified wearer -> selfName
67
- * 3. provider-supplied speaker name
68
- * 4. the raw speaker key, prefixed "Speaker" when it is bare digits
69
- */
70
- interface SpeakerOverride {
71
- name: string;
72
- /** Mark this speaker as the wearer (their words become "you"). */
73
- isSelf?: boolean;
74
- updatedAt: string;
75
- }
76
- interface SpeakerRegistry {
77
- version: 1;
78
- /** Display name used for the wearer across all sources. */
79
- selfName: string;
80
- /** Overrides keyed `<sourceId>:<speakerKey>`. */
81
- speakers: Record<string, SpeakerOverride>;
82
- }
83
- declare const DEFAULT_SELF_NAME = "Me";
84
- declare function emptySpeakerRegistry(): SpeakerRegistry;
85
- declare function speakersFilePath(memoryDir: string): string;
86
- declare function loadSpeakerRegistry(memoryDir: string): Promise<SpeakerRegistry>;
87
- declare function saveSpeakerRegistry(memoryDir: string, registry: SpeakerRegistry): Promise<void>;
88
- declare function speakerRegistryKey(sourceId: string, speakerKey: string): string;
89
- interface ResolvedSpeaker {
90
- /** Display label used in transcripts, e.g. "Jane" or "Me (you)". */
91
- label: string;
92
- /** Whether this speaker is the wearer. */
93
- isSelf: boolean;
94
- }
95
- declare function resolveSpeaker(sourceId: string, segment: {
96
- speakerKey: string;
97
- speakerName?: string;
98
- isWearer?: boolean;
99
- }, registry: SpeakerRegistry): ResolvedSpeaker;
100
- /**
101
- * Distinct speaker labels for a set of segments, in first-appearance
102
- * order — used for day-transcript frontmatter.
103
- */
104
- declare function distinctSpeakerLabels(sourceId: string, segments: Array<{
105
- speakerKey: string;
106
- speakerName?: string;
107
- isWearer?: boolean;
108
- }>, registry: SpeakerRegistry): string[];
109
-
110
53
  /**
111
54
  * Pattern-reinforcement maintenance job (issue #687 PR 2/4).
112
55
  *
@@ -168,420 +111,6 @@ interface PatternReinforcementResult {
168
111
  clusters: PatternReinforcementClusterResult[];
169
112
  }
170
113
 
171
- interface CorroborationContext {
172
- /**
173
- * Same-day transcript bodies from OTHER sources, keyed by source id.
174
- * Pre-tokenized once per sync (day bodies are large).
175
- */
176
- otherSourceDayTokens: Map<string, Set<string>>;
177
- /** Existing active memories: id + content. */
178
- existingMemories: Array<{
179
- id: string;
180
- content: string;
181
- }>;
182
- }
183
-
184
- /**
185
- * Wearable memory generation — trust-gated extraction from cleaned day
186
- * transcripts.
187
- *
188
- * Wearable ASR quality varies wildly between providers and rooms, so
189
- * unlike live-session extraction this path is gated per source:
190
- *
191
- * - memoryMode "off" -> never runs
192
- * - memoryMode "review" -> candidates land with status
193
- * "pending_review" (operator approves via
194
- * the existing review-queue surfaces)
195
- * - memoryMode "auto" -> candidates that pass every gate land
196
- * active
197
- *
198
- * Deterministic gates (applied in order, all modes except "off"):
199
- * 1. category gate — procedure / reasoning_trace candidates are
200
- * skipped (they need richer persistence than
201
- * this path provides)
202
- * 2. confidence floor — `minConfidence`
203
- * 3. importance floor — local `scoreImportance` >= `minImportance`
204
- * 4. dedup — storage content-hash index + intra-run set
205
- * 5. day cap — top `maxMemoriesPerDay` by importance score
206
- * (0 disables the cap)
207
- *
208
- * The extraction engine itself is injected so this module stays free of
209
- * LLM-client construction; callers hand in `orchestrator`-owned or
210
- * standalone engines alike.
211
- */
212
-
213
- declare function memoryStatusForMode(mode: WearableMemoryMode): Extract<MemoryStatus, "active" | "pending_review">;
214
- /** Narrow writer interface satisfied by `StorageManager`. */
215
- interface WearableMemoryWriter {
216
- /**
217
- * Sealed-envelope write entry point (issue #1989 PR4): cross-cutting
218
- * fields ride the composed envelope; per-write extras stay explicit.
219
- */
220
- writeSealedMemory(envelope: SealedMemoryEnvelope, extras: {
221
- importance?: ImportanceScore;
222
- contentHashSource?: string;
223
- status?: MemoryStatus;
224
- memoryKind?: "episode" | "note" | "box" | "dream" | "procedural";
225
- }): Promise<MemoryWriteResult>;
226
- hasFactContentHash(content: string): Promise<boolean>;
227
- /**
228
- * Locate an earlier wearable write of the same content (any status).
229
- * Optional: enables in-place promotion when re-scoring with stronger
230
- * evidence.
231
- */
232
- findWearableMemoryByContent?(content: string): Promise<{
233
- id: string;
234
- status: MemoryStatus | undefined;
235
- } | null>;
236
- /**
237
- * Promote a pending_review wearable memory to active, merging trust
238
- * evidence. Returns false when missing or no longer pending.
239
- */
240
- promoteWearableMemory?(id: string, attributeUpdates: Record<string, string>, confidence?: number): Promise<boolean>;
241
- /**
242
- * Demote a pending_review wearable memory to rejected on an explicit
243
- * judge-reject re-verdict. Returns false when missing or no longer
244
- * pending. Active rows are never auto-demoted.
245
- */
246
- demoteWearableMemory?(id: string, attributeUpdates: Record<string, string>): Promise<boolean>;
247
- }
248
- interface WearableMemoryGenDeps {
249
- extract(turns: BufferTurn[]): Promise<ExtractionResult>;
250
- writer: WearableMemoryWriter;
251
- /**
252
- * LLM-as-judge batch evaluation (the existing extraction judge).
253
- * Absent when no judge is wired (degraded smart mode: trust scoring
254
- * runs on confidence x sourceTrust + corroboration alone).
255
- */
256
- judgeFacts?(candidates: JudgeCandidate[]): Promise<JudgeBatchResult>;
257
- /**
258
- * Corroboration evidence for smart mode: other sources' same-day
259
- * transcript tokens + existing active memories. Absent disables
260
- * corroboration boosts.
261
- */
262
- corroboration?: CorroborationContext;
263
- }
264
- interface WearableMemoryGenResult {
265
- created: number;
266
- /**
267
- * Writes the #1579 tombstone chokepoint downgraded to pending_review (no
268
- * active copy). Surfaced distinctly from `created` so sync summaries and
269
- * callers don't count blocked content as successfully created (#1645).
270
- */
271
- tombstoneBlocked: number;
272
- /** Earlier borderline writes promoted to active by new evidence. */
273
- promoted: number;
274
- /** Earlier pending writes retired by a fresh judge-reject verdict. */
275
- demoted: number;
276
- skipped: number;
277
- skippedByReason: Record<string, number>;
278
- /** Non-fatal problems (e.g. the extraction engine erroring). */
279
- warnings: string[];
280
- /**
281
- * True when every conversation was extracted (the pass may still
282
- * carry degraded-mode warnings, e.g. judge unavailable). False only
283
- * when extraction itself aborted mid-day — the signal callers use to
284
- * re-run the pass on the next sync. A degraded-but-complete pass
285
- * must NOT re-run forever: its facts are already written and dedup
286
- * would suppress improvements anyway.
287
- */
288
- completed: boolean;
289
- }
290
- declare const WEARABLE_SOURCE_PREFIX = "wearable";
291
- declare function wearableSourceLabel(sourceId: string): string;
292
- declare function wearableDayTag(date: string): string;
293
- /**
294
- * Render a cleaned conversation into extraction-ready turns. Each turn
295
- * carries a labeled multi-speaker transcript block; the wearer is
296
- * marked "(you)" so first-person facts attribute correctly.
297
- */
298
- declare function buildExtractionTurns(sourceId: string, date: string, conversation: WearableConversation, registry: SpeakerRegistry): BufferTurn[];
299
- /**
300
- * Run extraction + gates over a day's conversations and persist the
301
- * survivors. Returns counts for the sync summary.
302
- */
303
- declare function generateWearableMemories(sourceId: string, date: string, conversations: WearableConversation[], settings: WearableSourceSettings, registry: SpeakerRegistry, deps: WearableMemoryGenDeps): Promise<WearableMemoryGenResult>;
304
- /**
305
- * Write one compact daily-digest memory summarizing the day's recorded
306
- * conversations. Deterministic (no LLM): titles, time ranges, speaker
307
- * counts. Gated by `wearables.digestEnabled`.
308
- */
309
- declare function writeDailyDigestMemory(sourceId: string, date: string, conversations: WearableConversation[], settings: WearableSourceSettings, registry: SpeakerRegistry, writer: WearableMemoryWriter): Promise<boolean>;
310
- declare function importNativeMemories(sourceId: string, memories: WearableNativeMemory[], alreadyImportedIds: ReadonlySet<string>, settings: WearableSourceSettings, deps: WearableMemoryGenDeps): Promise<{
311
- imported: number;
312
- tombstoneBlocked: number;
313
- importedIds: string[];
314
- warnings: string[];
315
- }>;
316
-
317
- /**
318
- * Wearable sync pipeline — pull → clean → label → correct → store →
319
- * (optionally) remember, for one source.
320
- *
321
- * Stage order per conversation is deliberate:
322
- * 1. off-the-record elision (before anything can persist the span)
323
- * 2. cleanup (merging first lets redaction see numbers
324
- * that ASR split across segments)
325
- * 3. redaction (built-in + user patterns)
326
- * 4. corrections (user-specific word fixes)
327
- *
328
- * Day files are rebuilt idempotently; the per-day body hash recorded in
329
- * sync state lets unchanged days skip both the rewrite and the
330
- * (expensive) memory extraction. Sync state advances only after every
331
- * write for the run has succeeded.
332
- */
333
-
334
- interface WearableSyncOptions {
335
- /** Sync exactly this day (YYYY-MM-DD). Overrides `days`. */
336
- date?: string;
337
- /** Lookback window in days ending today (default 2, max 90). */
338
- days?: number;
339
- /** Re-run memory extraction even for unchanged days. */
340
- forceMemories?: boolean;
341
- signal?: AbortSignal;
342
- }
343
- interface WearableSyncDeps {
344
- /** Memory dir for state files (speakers, corrections, sync ledger). */
345
- memoryDir: string;
346
- /** Read the stored content hash for a day file, if present. */
347
- readDayContentHash(sourceId: string, date: string): Promise<string | null>;
348
- /** Persist a serialized day-transcript file (atomic). */
349
- writeDayTranscript(sourceId: string, date: string, serialized: string): Promise<void>;
350
- /**
351
- * Optional hook fired once after the sync wrote ANYTHING the search
352
- * index should see: day transcripts, created memories, in-place
353
- * promotions, or native imports. (A cross-source invalidation can
354
- * promote memories on a run with zero transcript writes — the index
355
- * must still refresh.)
356
- */
357
- afterWrites?(): Promise<void>;
358
- /**
359
- * Memory-generation dependencies, or null when no extraction engine
360
- * is available in this context (transcripts still sync; memory
361
- * creation is skipped with a warning when the mode wanted it).
362
- */
363
- memoryGen: WearableMemoryGenDeps | null;
364
- /**
365
- * Same-day transcript bodies from OTHER sources, for cross-device
366
- * corroboration in smart mode. Absent disables the boost.
367
- */
368
- readOtherSourceDayBodies?(date: string, excludeSource: string): Promise<Map<string, string>>;
369
- /**
370
- * Existing memories usable as support evidence: status "active" or
371
- * "pending_review" (explicit allow-list — a borderline fact observed
372
- * again on a later day is repetition signal, and the +0.10 boost is
373
- * how it earns promotion). Rejected/quarantined/superseded/archived/
374
- * forgotten rows are never support evidence.
375
- */
376
- listSupportMemories?(): Promise<Array<{
377
- id: string;
378
- content: string;
379
- }>>;
380
- /** Clock injection for tests. */
381
- now?: () => Date;
382
- }
383
- /** Format a Date as YYYY-MM-DD in the given IANA timezone. */
384
- declare function dateInTimezone(date: Date, timezone: string): string;
385
- /** Resolve the list of days to sync, oldest first. */
386
- declare function resolveSyncDates(options: WearableSyncOptions, timezone: string, now: Date): string[];
387
- /** Sync one source. */
388
- declare function syncWearableSource(connector: WearableSourceConnector, settings: WearableSourceSettings, config: WearablesConfig, options: WearableSyncOptions, deps: WearableSyncDeps): Promise<WearableSyncSummary>;
389
- declare function defaultTimezone(): string;
390
-
391
- /**
392
- * WearablesService — the single implementation behind every wearables
393
- * access surface (CLI, MCP tools, HTTP routes). Surfaces stay thin and
394
- * delegate here; formatting differences live with the surface, behavior
395
- * lives here (same renderer-sharing rule as recall explain/xray).
396
- */
397
-
398
- /** Storage capabilities the service needs (satisfied by StorageManager). */
399
- interface WearableStorageIo {
400
- readonly dir: string;
401
- writeWearableDayTranscript(sourceId: string, date: string, serialized: string): Promise<void>;
402
- readWearableDayTranscript(sourceId: string, date: string): Promise<string | null>;
403
- listWearableTranscriptDays(sourceId?: string): Promise<Array<{
404
- source: string;
405
- date: string;
406
- }>>;
407
- fusionArtifactStore(): FusionArtifactStore;
408
- readAllMemories(): Promise<Array<{
409
- path: string;
410
- frontmatter: {
411
- id: string;
412
- source: string;
413
- created: string;
414
- tags: string[];
415
- status?: string;
416
- /** Archival timestamp — rows with this set are not support. */
417
- archivedAt?: string;
418
- structuredAttributes?: Record<string, string>;
419
- };
420
- content: string;
421
- }>>;
422
- writeSealedMemory: WearableMemoryGenDeps["writer"]["writeSealedMemory"];
423
- hasFactContentHash(content: string): Promise<boolean>;
424
- findWearableMemoryByContent(content: string): Promise<{
425
- id: string;
426
- status: string | undefined;
427
- } | null>;
428
- promoteWearableMemory(id: string, attributeUpdates: Record<string, string>, confidence?: number): Promise<boolean>;
429
- demoteWearableMemory(id: string, attributeUpdates: Record<string, string>): Promise<boolean>;
430
- }
431
- interface WearableSearchBackend {
432
- /** Full-text search over the memory dir; null when unavailable. */
433
- search(query: string, maxResults: number): Promise<Array<{
434
- path: string;
435
- score: number;
436
- preview: string;
437
- }> | null>;
438
- }
439
- interface WearablesServiceDeps {
440
- config: WearablesConfig;
441
- getStorage(): Promise<WearableStorageIo>;
442
- /** Extraction hook; null when no engine is available. */
443
- extract: WearableMemoryGenDeps["extract"] | null;
444
- /**
445
- * LLM-as-judge hook for smart memoryMode (the orchestrator wires the
446
- * existing extraction judge here). Absent degrades smart mode to
447
- * confidence x sourceTrust + corroboration scoring.
448
- */
449
- judgeFacts?: WearableMemoryGenDeps["judgeFacts"];
450
- /** Search backend (QMD); null disables indexed search. */
451
- searchBackend: WearableSearchBackend | null;
452
- /** Fired after transcript writes so the search index refreshes. */
453
- reindexSearch?: () => Promise<void>;
454
- }
455
- interface WearableTranscriptSearchResult {
456
- source: string;
457
- date: string;
458
- score: number;
459
- snippet: string;
460
- /** "indexed" (QMD) or "scan" (substring fallback). */
461
- backend: "indexed" | "scan";
462
- }
463
- interface WearableMemorySearchResult {
464
- id: string;
465
- source: string;
466
- date?: string;
467
- conversationId?: string;
468
- status?: string;
469
- content: string;
470
- created: string;
471
- }
472
- interface WearableDayTranscriptView {
473
- source: string;
474
- date: string;
475
- meta: WearableDayTranscript["meta"] | null;
476
- body: string;
477
- /** Other sources that also recorded during this day (overlap hint). */
478
- overlapsWith: string[];
479
- }
480
- declare class WearablesService {
481
- private readonly deps;
482
- constructor(deps: WearablesServiceDeps);
483
- get enabled(): boolean;
484
- private assertEnabled;
485
- private timezone;
486
- private enabledSources;
487
- /** Status for every configured source (and connector availability). */
488
- status(): Promise<{
489
- enabled: boolean;
490
- timezone: string;
491
- sources: WearableSourceStatus[];
492
- connectorsInstalled: string[];
493
- }>;
494
- /** Run a sync for one source or all enabled sources. */
495
- sync(options: WearableSyncOptions & {
496
- source?: string;
497
- }): Promise<WearableSyncSummary[]>;
498
- /** Verify connectivity/credentials for one source. */
499
- checkAuth(sourceId: string): Promise<{
500
- ok: boolean;
501
- detail?: string;
502
- }>;
503
- /**
504
- * Full transcript(s) for a day. Without `source`, returns every
505
- * source that recorded that day, annotated with overlap hints.
506
- */
507
- dayTranscript(date: string, sourceId?: string): Promise<WearableDayTranscriptView[]>;
508
- /** List days that have stored transcripts. */
509
- listDays(sourceId?: string): Promise<Array<{
510
- source: string;
511
- date: string;
512
- }>>;
513
- /**
514
- * Fuse all enabled sources' stored transcripts for one day into a
515
- * derived `FusedWearableConversation[]` artifact. Deterministic and
516
- * idempotent: unchanged inputs and fusion config produce a stable
517
- * content hash and the derived file is left untouched on re-run. Requires
518
- * `wearables.fusion.enabled`; otherwise it throws. Raw per-source
519
- * transcripts are never modified.
520
- */
521
- fuseDay(date: string): Promise<{
522
- date: string;
523
- sources: string[];
524
- conversationCount: number;
525
- contentHash: string;
526
- written: boolean;
527
- skipped?: {
528
- reason: string;
529
- };
530
- }>;
531
- /**
532
- * List fused conversations for a date (the fusion listing surface).
533
- * Returns the persisted derived artifact's conversations, or an empty
534
- * array when no fused artifact has been written for that day. When a
535
- * file EXISTS but its body is corrupt (parseOk:false), throws
536
- * WearablesInputError so the caller can distinguish a broken artifact
537
- * from a day that was never fused — never silently returns an empty
538
- * list that looks identical to "no artifact" (issue #1849).
539
- */
540
- fusedConversations(date: string): Promise<FusedWearableConversation[]>;
541
- /** List dates with stored fused artifacts, newest first. */
542
- listFusedDays(): Promise<string[]>;
543
- /**
544
- * Search stored transcripts. Uses the indexed backend when available
545
- * and falls back to a bounded substring scan otherwise — the two
546
- * paths are distinguishable in the result (`backend`) so callers can
547
- * tell "no hits" from "weaker search ran".
548
- */
549
- searchTranscripts(query: string, options?: {
550
- source?: string;
551
- from?: string;
552
- to?: string;
553
- limit?: number;
554
- }): Promise<WearableTranscriptSearchResult[]>;
555
- /**
556
- * Memories created from wearable transcripts, filterable by source
557
- * and/or day. Includes pending_review candidates — the whole point of
558
- * review mode is seeing what's queued.
559
- */
560
- transcriptMemories(options?: {
561
- source?: string;
562
- date?: string;
563
- limit?: number;
564
- }): Promise<WearableMemorySearchResult[]>;
565
- listSpeakers(): Promise<SpeakerRegistry>;
566
- setSpeaker(sourceId: string, speakerKey: string, name: string, opts?: {
567
- isSelf?: boolean;
568
- }): Promise<SpeakerRegistry>;
569
- setSelfName(name: string): Promise<SpeakerRegistry>;
570
- removeSpeaker(sourceId: string, speakerKey: string): Promise<SpeakerRegistry>;
571
- listCorrections(): Promise<{
572
- fromConfig: WearableCorrectionRule[];
573
- fromState: WearableCorrectionRule[];
574
- stateFilePath: string;
575
- }>;
576
- addCorrection(rule: WearableCorrectionRule): Promise<void>;
577
- removeCorrection(index: number): Promise<WearableCorrectionRule>;
578
- }
579
- /** Map an indexed-search hit path back to (source, date), or null. */
580
- declare function locateTranscriptPath(hitPath: string): {
581
- source: string;
582
- date: string;
583
- } | null;
584
-
585
114
  /**
586
115
  * Conversation index coordinator — extracted from the orchestrator (issue #1526).
587
116
  *
@@ -2414,7 +1943,8 @@ declare class Orchestrator {
2414
1943
  private heartbeatObserverChains;
2415
1944
  private recentExtractionFingerprints;
2416
1945
  private readonly consolidationObservers;
2417
- private wearablesServiceInstance;
1946
+ private readonly wearablesServiceByNamespace;
1947
+ private readonly meetingsServiceByNamespace;
2418
1948
  private wearablesAutoSyncHandle;
2419
1949
  private lastQmdReprobeAtMs;
2420
1950
  private lastFileHygieneRunAtMs;
@@ -2880,7 +2410,8 @@ declare class Orchestrator {
2880
2410
  * and through `ingestBulkImportBatch`.
2881
2411
  */
2882
2412
  bulkImportWriteNamespace(): string;
2883
- getWearablesService(): WearablesService;
2413
+ getWearablesService(namespace?: string): WearablesService;
2414
+ getMeetingsService(namespace?: string): Promise<MeetingsService>;
2884
2415
  ingestBulkImportBatch(turns: ImportTurn[], options?: {
2885
2416
  deadlineMs?: number;
2886
2417
  failOnExtractionFailure?: boolean;
@@ -3057,4 +2588,4 @@ declare class Orchestrator {
3057
2588
  private readArchivedMemoriesForNamespaces;
3058
2589
  }
3059
2590
 
3060
- export { type RecallInvocationOptions as $, sanitizeSessionKeyForFilename as A, saveSpeakerRegistry as B, ConversationIndexCoordinator as C, DEFAULT_SELF_NAME as D, speakerRegistryKey as E, speakersFilePath as F, type GraphRecallSnapshot as G, syncWearableSource as H, type IntentDebugSnapshot as I, wearableDayTag as J, wearableSourceLabel as K, writeDailyDigestMemory as L, type BulkImportBatchIngestResult as M, BulkImportBatchPartialFailureError as N, Orchestrator as O, type PatternReinforcementResult as P, COMPACTION_SIGNAL_MAX_AGE_MS as Q, type ResolvedSpeaker as R, type SpeakerRegistry as S, TierMigrationCoordinator as T, type DaySummaryGatherOptions as U, type ExtractionRunResult as V, WearablesService as W, type GraphRecallRankedResult as X, type GraphRecallShadowComparison as Y, type QmdRecallSnapshot as Z, type QueryAwarePrefilter as _, type SpeakerOverride as a, type RecallModeDecision as a0, appendMemoryToGraphContext as a1, applyQueryAwareCandidateFilter as a2, blendGraphExpandedRecallScore as a3, buildCompressionGuidelinesMarkdown as a4, buildMemoryPathById as a5, computeArtifactCandidateFetchLimit as a6, computeArtifactRecallLimit as a7, computeQmdHybridFetchLimit as a8, deriveTopicsFromExtraction as a9, targetSourceValidAtSortMs as aA, throwIfRecallAborted as aB, tokenizeRecallQuery as aC, utcDateKeysForLocalDay as aD, filterHourlySummaryMarkdownForLocalDay as aa, filterRecallCandidates as ab, formatDateInTimeZone as ac, graphPathRelativeToStorage as ad, hasIdentityRecoveryIntent as ae, isArtifactMemoryPath as af, lifecycleRecallScoreAdjustment as ag, mapRecallSourceToXrayServedBy as ah, mergeArtifactRecallCandidates as ai, mergeGraphExpandedResults as aj, normalizeIanaTimeZone as ak, parseFiniteDate as al, parseGraphRecallRankedResults as am, parseMemoryIntentSnapshot as an, parseQmdRecallResults as ao, qmdStartupCollectionCheckWithTimeout as ap, raceRecallAbort as aq, resolveEffectiveIdentityInjectionMode as ar, resolveEffectiveRecallMode as as, resolvePersistedMemoryRelativePath as at, resolveRecallModeDecision as au, resolveRecallModeDecisionAsync as av, resolveRecentThreadMemoryPaths as aw, shouldFilterLifecycleRecallCandidate as ax, splitTurnsBySourceValidAt as ay, summarizeGraphShadowComparison as az, WEARABLE_SOURCE_PREFIX as b, type WearableDayTranscriptView as c, type WearableMemoryGenDeps as d, type WearableMemoryGenResult as e, type WearableMemorySearchResult as f, type WearableMemoryWriter as g, type WearableSearchBackend as h, type WearableStorageIo as i, type WearableSyncDeps as j, type WearableSyncOptions as k, type WearableTranscriptSearchResult as l, type WearablesServiceDeps as m, buildExtractionTurns as n, dateInTimezone as o, defaultTimezone as p, defaultWorkspaceDir as q, distinctSpeakerLabels as r, emptySpeakerRegistry as s, generateWearableMemories as t, importNativeMemories as u, loadSpeakerRegistry as v, locateTranscriptPath as w, memoryStatusForMode as x, resolveSpeaker as y, resolveSyncDates as z };
2591
+ export { summarizeGraphShadowComparison as $, mergeGraphExpandedResults as A, type BulkImportBatchIngestResult as B, ConversationIndexCoordinator as C, type DaySummaryGatherOptions as D, type ExtractionRunResult as E, normalizeIanaTimeZone as F, type GraphRecallSnapshot as G, parseFiniteDate as H, type IntentDebugSnapshot as I, parseGraphRecallRankedResults as J, parseMemoryIntentSnapshot as K, parseQmdRecallResults as L, qmdStartupCollectionCheckWithTimeout as M, raceRecallAbort as N, Orchestrator as O, type PatternReinforcementResult as P, type QmdRecallSnapshot as Q, type RecallInvocationOptions as R, resolveEffectiveIdentityInjectionMode as S, TierMigrationCoordinator as T, resolveEffectiveRecallMode as U, resolvePersistedMemoryRelativePath as V, resolveRecallModeDecision as W, resolveRecallModeDecisionAsync as X, resolveRecentThreadMemoryPaths as Y, shouldFilterLifecycleRecallCandidate as Z, splitTurnsBySourceValidAt as _, BulkImportBatchPartialFailureError as a, targetSourceValidAtSortMs as a0, throwIfRecallAborted as a1, tokenizeRecallQuery as a2, utcDateKeysForLocalDay as a3, COMPACTION_SIGNAL_MAX_AGE_MS as b, type GraphRecallRankedResult as c, defaultWorkspaceDir as d, type GraphRecallShadowComparison as e, type QueryAwarePrefilter as f, type RecallModeDecision as g, appendMemoryToGraphContext as h, applyQueryAwareCandidateFilter as i, blendGraphExpandedRecallScore as j, buildCompressionGuidelinesMarkdown as k, buildMemoryPathById as l, computeArtifactCandidateFetchLimit as m, computeArtifactRecallLimit as n, computeQmdHybridFetchLimit as o, deriveTopicsFromExtraction as p, filterHourlySummaryMarkdownForLocalDay as q, filterRecallCandidates as r, sanitizeSessionKeyForFilename as s, formatDateInTimeZone as t, graphPathRelativeToStorage as u, hasIdentityRecoveryIntent as v, isArtifactMemoryPath as w, lifecycleRecallScoreAdjustment as x, mapRecallSourceToXrayServedBy as y, mergeArtifactRecallCandidates as z };
@@ -3,13 +3,13 @@ import './briefing.js';
3
3
  import './buffer.js';
4
4
  import './extraction-faithfulness.js';
5
5
  import './search/port.js';
6
- import './storage-BKhHHnRo.js';
6
+ import './storage-XGawwqXE.js';
7
7
  import './transcript.js';
8
8
  import './summarizer.js';
9
9
  import './local-llm.js';
10
10
  import './fallback-llm.js';
11
- import './orchestration/maintenance.js';
12
- export { M as BulkImportBatchIngestResult, N as BulkImportBatchPartialFailureError, Q as COMPACTION_SIGNAL_MAX_AGE_MS, U as DaySummaryGatherOptions, V as ExtractionRunResult, X as GraphRecallRankedResult, Y as GraphRecallShadowComparison, G as GraphRecallSnapshot, I as IntentDebugSnapshot, O as Orchestrator, Z as QmdRecallSnapshot, _ as QueryAwarePrefilter, $ as RecallInvocationOptions, a0 as RecallModeDecision, a1 as appendMemoryToGraphContext, a2 as applyQueryAwareCandidateFilter, a3 as blendGraphExpandedRecallScore, a4 as buildCompressionGuidelinesMarkdown, a5 as buildMemoryPathById, a6 as computeArtifactCandidateFetchLimit, a7 as computeArtifactRecallLimit, a8 as computeQmdHybridFetchLimit, q as defaultWorkspaceDir, a9 as deriveTopicsFromExtraction, aa as filterHourlySummaryMarkdownForLocalDay, ab as filterRecallCandidates, ac as formatDateInTimeZone, ad as graphPathRelativeToStorage, ae as hasIdentityRecoveryIntent, af as isArtifactMemoryPath, ag as lifecycleRecallScoreAdjustment, ah as mapRecallSourceToXrayServedBy, ai as mergeArtifactRecallCandidates, aj as mergeGraphExpandedResults, ak as normalizeIanaTimeZone, al as parseFiniteDate, am as parseGraphRecallRankedResults, an as parseMemoryIntentSnapshot, ao as parseQmdRecallResults, ap as qmdStartupCollectionCheckWithTimeout, aq as raceRecallAbort, ar as resolveEffectiveIdentityInjectionMode, as as resolveEffectiveRecallMode, at as resolvePersistedMemoryRelativePath, au as resolveRecallModeDecision, av as resolveRecallModeDecisionAsync, aw as resolveRecentThreadMemoryPaths, A as sanitizeSessionKeyForFilename, ax as shouldFilterLifecycleRecallCandidate, ay as splitTurnsBySourceValidAt, az as summarizeGraphShadowComparison, aA as targetSourceValidAtSortMs, aB as throwIfRecallAborted, aC as tokenizeRecallQuery, aD as utcDateKeysForLocalDay } from './orchestrator-DB93S48I.js';
11
+ import './maintenance-C98njYb8.js';
12
+ export { B as BulkImportBatchIngestResult, a as BulkImportBatchPartialFailureError, b as COMPACTION_SIGNAL_MAX_AGE_MS, D as DaySummaryGatherOptions, E as ExtractionRunResult, c as GraphRecallRankedResult, e as GraphRecallShadowComparison, G as GraphRecallSnapshot, I as IntentDebugSnapshot, O as Orchestrator, Q as QmdRecallSnapshot, f as QueryAwarePrefilter, R as RecallInvocationOptions, g as RecallModeDecision, h as appendMemoryToGraphContext, i as applyQueryAwareCandidateFilter, j as blendGraphExpandedRecallScore, k as buildCompressionGuidelinesMarkdown, l as buildMemoryPathById, m as computeArtifactCandidateFetchLimit, n as computeArtifactRecallLimit, o as computeQmdHybridFetchLimit, d as defaultWorkspaceDir, p as deriveTopicsFromExtraction, q as filterHourlySummaryMarkdownForLocalDay, r as filterRecallCandidates, t as formatDateInTimeZone, u as graphPathRelativeToStorage, v as hasIdentityRecoveryIntent, w as isArtifactMemoryPath, x as lifecycleRecallScoreAdjustment, y as mapRecallSourceToXrayServedBy, z as mergeArtifactRecallCandidates, A as mergeGraphExpandedResults, F as normalizeIanaTimeZone, H as parseFiniteDate, J as parseGraphRecallRankedResults, K as parseMemoryIntentSnapshot, L as parseQmdRecallResults, M as qmdStartupCollectionCheckWithTimeout, N as raceRecallAbort, S as resolveEffectiveIdentityInjectionMode, U as resolveEffectiveRecallMode, V as resolvePersistedMemoryRelativePath, W as resolveRecallModeDecision, X as resolveRecallModeDecisionAsync, Y as resolveRecentThreadMemoryPaths, s as sanitizeSessionKeyForFilename, Z as shouldFilterLifecycleRecallCandidate, _ as splitTurnsBySourceValidAt, $ as summarizeGraphShadowComparison, a0 as targetSourceValidAtSortMs, a1 as throwIfRecallAborted, a2 as tokenizeRecallQuery, a3 as utcDateKeysForLocalDay } from './orchestrator-C9ZVppNh.js';
13
13
  export { formatCompressionGuidelinesForRecall } from './orchestration/compression-guideline-coordinator.js';
14
14
  import './live-connectors-runner.js';
15
15
  import './model-registry.js';
@@ -21,11 +21,12 @@ import './embedding-fallback.js';
21
21
  import './semantic-TddhF0y7.js';
22
22
  import './capabilities.js';
23
23
  import './replay/types.js';
24
- import './types-GBQZuT7l.js';
24
+ import './types-Bbs0qz6b.js';
25
+ import './service-DgFWlZ-r.js';
25
26
  import './lcm/engine.js';
26
- import './semantic-consolidation-BaZlg0D8.js';
27
- import './catalog-iWvWz61I.js';
28
- import './scope-profiles-KG2nODX7.js';
27
+ import './semantic-consolidation-B2xo26UQ.js';
28
+ import './catalog-BFTVo2Ez.js';
29
+ import './scope-profiles-EhyuAKkd.js';
29
30
  import './namespaces/search.js';
30
31
  import './shared-context/manager.js';
31
32
  import './compounding/engine.js';
@@ -51,6 +52,7 @@ import './lifecycle.js';
51
52
  import './extraction.js';
52
53
  import './schemas.js';
53
54
  import 'zod';
55
+ import './extraction-error-classification.js';
54
56
  import './objective-state.js';
55
57
  import './causal-trajectory.js';
56
58
  import './trust-zones.js';
@@ -70,10 +72,10 @@ import './runtime/child-process.js';
70
72
  import './namespaces/storage.js';
71
73
  import './threading.js';
72
74
  import './graph.js';
73
- import './extraction-judge.js';
74
75
  import './framework-CNDn2164.js';
75
76
  import './memory-provenance.js';
76
77
  import './user-model.js';
78
+ import './extraction-judge.js';
77
79
  import './lcm/archive.js';
78
80
  import './lcm/summarizer.js';
79
81
  import './lcm/dag.js';