@remnic/core 9.22.0 → 9.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (399) hide show
  1. package/dist/access-admin-ops-surface.d.ts +15 -12
  2. package/dist/access-admin-ops-surface.js +25 -24
  3. package/dist/access-audit.js +2 -2
  4. package/dist/access-boundary.d.ts +13 -10
  5. package/dist/access-boundary.js +25 -24
  6. package/dist/access-cli.js +84 -82
  7. package/dist/access-cli.js.map +1 -1
  8. package/dist/access-http.d.ts +16 -9
  9. package/dist/access-http.js +33 -32
  10. package/dist/access-identity-continuity-surface.d.ts +9 -7
  11. package/dist/access-identity-continuity-surface.js +25 -24
  12. package/dist/access-lcm-surface.d.ts +12 -9
  13. package/dist/access-lcm-surface.js +25 -24
  14. package/dist/access-mcp-output-schemas.js +1 -1
  15. package/dist/access-mcp.d.ts +22 -10
  16. package/dist/access-mcp.js +31 -30
  17. package/dist/access-memory-search-fanout.d.ts +2 -2
  18. package/dist/{access-namespace-preflight-tmwQgCT6.d.ts → access-namespace-preflight-CmErR03h.d.ts} +1 -1
  19. package/dist/access-namespace-preflight.d.ts +3 -3
  20. package/dist/access-namespace-preflight.js +25 -24
  21. package/dist/access-observe-write-surface.d.ts +12 -9
  22. package/dist/access-observe-write-surface.js +25 -24
  23. package/dist/access-operations-batch.js +27 -26
  24. package/dist/access-operations.d.ts +13 -10
  25. package/dist/access-operations.js +28 -27
  26. package/dist/access-recall-concurrency.d.ts +12 -9
  27. package/dist/access-recall-concurrency.js +25 -24
  28. package/dist/access-recall-response.d.ts +12 -9
  29. package/dist/access-recall-response.js +25 -24
  30. package/dist/access-recall-surface.d.ts +14 -11
  31. package/dist/access-recall-surface.js +25 -24
  32. package/dist/{access-service-BtxW52vv.d.ts → access-service-CKEROeFP.d.ts} +22 -11
  33. package/dist/access-service.d.ts +13 -10
  34. package/dist/access-service.js +25 -24
  35. package/dist/access-surface-catalog.d.ts +12 -9
  36. package/dist/access-surface-catalog.js +6 -0
  37. package/dist/access-surface-catalog.js.map +1 -1
  38. package/dist/access-wearables-meetings-surface.d.ts +78 -0
  39. package/dist/access-wearables-meetings-surface.js +22 -0
  40. package/dist/access-wearables-meetings-surface.js.map +1 -0
  41. package/dist/action-confidence.d.ts +1 -1
  42. package/dist/active-memory-bridge.d.ts +1 -1
  43. package/dist/active-recall.d.ts +1 -1
  44. package/dist/active-recall.js +2 -2
  45. package/dist/{auto-sync-UPTUVE4X.js → auto-sync-5OE5QOZB.js} +3 -3
  46. package/dist/behavior-learner.d.ts +1 -1
  47. package/dist/behavior-signals.d.ts +1 -1
  48. package/dist/bootstrap.d.ts +9 -7
  49. package/dist/briefing.d.ts +2 -2
  50. package/dist/briefing.js +5 -5
  51. package/dist/buffer-surprise-report.d.ts +1 -1
  52. package/dist/buffer.d.ts +2 -2
  53. package/dist/bulk-import/index.d.ts +3 -3
  54. package/dist/calibration.d.ts +1 -1
  55. package/dist/capabilities.d.ts +1 -1
  56. package/dist/{catalog-iWvWz61I.d.ts → catalog-BFTVo2Ez.d.ts} +1 -1
  57. package/dist/causal-behavior.d.ts +1 -1
  58. package/dist/causal-behavior.js +2 -2
  59. package/dist/causal-chain.js +2 -2
  60. package/dist/causal-consolidation.d.ts +1 -1
  61. package/dist/causal-consolidation.js +9 -9
  62. package/dist/causal-retrieval.js +2 -2
  63. package/dist/causal-trajectory-graph.d.ts +1 -1
  64. package/dist/causal-trajectory.js +1 -1
  65. package/dist/{chunk-GF22HWS2.js → chunk-2PHX3I5C.js} +7 -7
  66. package/dist/{chunk-JFDEYXF7.js → chunk-3NAHZQU3.js} +2 -2
  67. package/dist/{chunk-XBRPEGXF.js → chunk-3UOSVTFR.js} +5 -5
  68. package/dist/{chunk-TTKWTT72.js → chunk-3ZW6ZQO6.js} +3 -3
  69. package/dist/{chunk-UV72DEZD.js → chunk-4B77XSG5.js} +5 -5
  70. package/dist/{chunk-IC2TCZJ2.js → chunk-57QKLRBV.js} +3 -1
  71. package/dist/chunk-57QKLRBV.js.map +1 -0
  72. package/dist/{chunk-LMHDFOVV.js → chunk-5CPI2QWG.js} +3 -3
  73. package/dist/{chunk-P72WZMWQ.js → chunk-5FZQ74K5.js} +2 -2
  74. package/dist/{chunk-BRT7KEXU.js → chunk-6TWXQ4E2.js} +5 -5
  75. package/dist/{chunk-CV6ZYXK3.js → chunk-7I7AYIUQ.js} +3 -3
  76. package/dist/{chunk-TVVEYCNW.js → chunk-7K5Q6COX.js} +4 -4
  77. package/dist/{chunk-MONWCSVL.js → chunk-7RAJ3GXO.js} +2 -1
  78. package/dist/chunk-7RAJ3GXO.js.map +1 -0
  79. package/dist/{chunk-SQEDDWAM.js → chunk-A2RFKL3V.js} +5 -34
  80. package/dist/chunk-A2RFKL3V.js.map +1 -0
  81. package/dist/{chunk-JN57HZCD.js → chunk-ATEAL5EI.js} +6 -6
  82. package/dist/{chunk-4PYLBXX6.js → chunk-AYAROCWD.js} +2 -2
  83. package/dist/chunk-BLDBT6HZ.js +39 -0
  84. package/dist/chunk-BLDBT6HZ.js.map +1 -0
  85. package/dist/{chunk-NB2P47N7.js → chunk-CUUY5CC4.js} +6 -6
  86. package/dist/{chunk-KL5Y6PEV.js → chunk-E3ZMFFQZ.js} +2 -2
  87. package/dist/{chunk-55FDQYPS.js → chunk-ES5IHQ6M.js} +2 -2
  88. package/dist/{chunk-N47ZWQBO.js → chunk-G2NSSQES.js} +2 -2
  89. package/dist/{chunk-GSWPU5CR.js → chunk-GD3QOBMB.js} +2 -2
  90. package/dist/{chunk-6ANPNUVL.js → chunk-IIXLB5E7.js} +58 -36
  91. package/dist/chunk-IIXLB5E7.js.map +1 -0
  92. package/dist/{chunk-SACPRJ7F.js → chunk-JNIJBXVK.js} +2 -2
  93. package/dist/{chunk-W3XT32W7.js → chunk-JVGUY2AU.js} +23 -13
  94. package/dist/chunk-JVGUY2AU.js.map +1 -0
  95. package/dist/{chunk-DGLON3AL.js → chunk-KNRG6ZGJ.js} +6 -6
  96. package/dist/{chunk-GEUDRENF.js → chunk-MMTG3SCJ.js} +2 -2
  97. package/dist/{chunk-WZFAPHIK.js → chunk-MU7ZHSZE.js} +2 -2
  98. package/dist/{chunk-W4FBGYGK.js → chunk-NRV4Y3PM.js} +1 -1
  99. package/dist/{chunk-QTO2FGBT.js → chunk-OUW4PAY4.js} +191 -117
  100. package/dist/chunk-OUW4PAY4.js.map +1 -0
  101. package/dist/{chunk-KQ2XCQYN.js → chunk-P2BLHUL2.js} +2 -2
  102. package/dist/{chunk-ACGGTPU4.js → chunk-QCKQEBIY.js} +17 -9
  103. package/dist/chunk-QCKQEBIY.js.map +1 -0
  104. package/dist/{chunk-6L775BUB.js → chunk-QE63OHLB.js} +2 -2
  105. package/dist/{chunk-ONHRRJZM.js → chunk-QJAQNXWI.js} +6 -6
  106. package/dist/{chunk-EQYBHXRR.js → chunk-ROUL7RZU.js} +385 -59
  107. package/dist/chunk-ROUL7RZU.js.map +1 -0
  108. package/dist/{chunk-N6M7MRVN.js → chunk-RT4TSR2C.js} +9034 -8726
  109. package/dist/chunk-RT4TSR2C.js.map +1 -0
  110. package/dist/{chunk-6NZ7U4R4.js → chunk-SCOT5DTA.js} +1 -1
  111. package/dist/chunk-SCOT5DTA.js.map +1 -0
  112. package/dist/{chunk-6RYWNBSA.js → chunk-SVZGA2MK.js} +2 -2
  113. package/dist/chunk-SYOIVK7K.js +63 -0
  114. package/dist/chunk-SYOIVK7K.js.map +1 -0
  115. package/dist/{chunk-DM5A4ZFL.js → chunk-TWCOYET2.js} +11 -1
  116. package/dist/chunk-TWCOYET2.js.map +1 -0
  117. package/dist/{chunk-7S5OMI76.js → chunk-WS32QRLO.js} +109 -44
  118. package/dist/chunk-WS32QRLO.js.map +1 -0
  119. package/dist/{chunk-OCMLGND7.js → chunk-WWZ35GWW.js} +5 -5
  120. package/dist/{chunk-QMGIQUBG.js → chunk-XWPFZX6S.js} +503 -139
  121. package/dist/chunk-XWPFZX6S.js.map +1 -0
  122. package/dist/{chunk-A5N6ISRK.js → chunk-ZN4UZWMT.js} +2 -2
  123. package/dist/{chunk-7M6APKJL.js → chunk-ZYU7ZFLT.js} +2 -2
  124. package/dist/{cli-D9vXgWwM.d.ts → cli-BrwT9YMD.d.ts} +5 -5
  125. package/dist/cli.d.ts +14 -11
  126. package/dist/cli.js +57 -56
  127. package/dist/compounding/engine.d.ts +2 -2
  128. package/dist/compounding/engine.js +5 -5
  129. package/dist/compounding/preference-consolidator.d.ts +1 -1
  130. package/dist/compression-optimizer.d.ts +1 -1
  131. package/dist/config.d.ts +1 -1
  132. package/dist/config.js +2 -2
  133. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  134. package/dist/connectors/codex-materialize-runner.js +5 -5
  135. package/dist/connectors/codex-materialize.d.ts +1 -1
  136. package/dist/connectors/index.d.ts +1 -1
  137. package/dist/connectors/index.js +5 -5
  138. package/dist/consolidation-provenance-check.d.ts +2 -2
  139. package/dist/consolidation-undo.d.ts +2 -2
  140. package/dist/contradiction/index.d.ts +2 -2
  141. package/dist/conversation-index/backend.d.ts +1 -1
  142. package/dist/conversation-index/chunker.d.ts +1 -1
  143. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  144. package/dist/conversation-index/indexer.d.ts +1 -1
  145. package/dist/conversation-index/search.d.ts +1 -1
  146. package/dist/day-summary.d.ts +1 -1
  147. package/dist/delinearize.d.ts +1 -1
  148. package/dist/direct-answer-wiring.d.ts +1 -1
  149. package/dist/direct-answer.d.ts +1 -1
  150. package/dist/embedding-fallback.d.ts +1 -1
  151. package/dist/enrichment/index.d.ts +1 -1
  152. package/dist/entity-retrieval.d.ts +2 -2
  153. package/dist/entity-retrieval.js +5 -5
  154. package/dist/entity-schema.d.ts +1 -1
  155. package/dist/explicit-capture.d.ts +9 -7
  156. package/dist/extraction-error-classification.d.ts +22 -0
  157. package/dist/extraction-error-classification.js +11 -0
  158. package/dist/extraction-error-classification.js.map +1 -0
  159. package/dist/extraction-faithfulness.d.ts +1 -1
  160. package/dist/extraction-judge-telemetry.d.ts +1 -1
  161. package/dist/extraction-judge-training.d.ts +1 -1
  162. package/dist/extraction-judge.d.ts +1 -1
  163. package/dist/extraction.d.ts +3 -17
  164. package/dist/extraction.js +5 -3
  165. package/dist/fallback-llm.d.ts +1 -1
  166. package/dist/{first-start-migration-LEXL3XYL.js → first-start-migration-BKNGOFED.js} +4 -4
  167. package/dist/graph-dashboard-diff.d.ts +1 -1
  168. package/dist/graph-dashboard-key.d.ts +1 -1
  169. package/dist/graph-dashboard-parser.d.ts +1 -1
  170. package/dist/graph-edge-reinforcement.d.ts +1 -1
  171. package/dist/graph-snapshot.d.ts +1 -1
  172. package/dist/graph.d.ts +1 -1
  173. package/dist/importance.d.ts +1 -1
  174. package/dist/importers/index.d.ts +1 -1
  175. package/dist/in-flight-reads.d.ts +1 -1
  176. package/dist/index.d.ts +309 -519
  177. package/dist/index.js +176 -140
  178. package/dist/intent.d.ts +1 -1
  179. package/dist/lcm/engine.d.ts +1 -1
  180. package/dist/lcm/engine.js +3 -3
  181. package/dist/lcm/index.d.ts +1 -1
  182. package/dist/lcm/index.js +11 -11
  183. package/dist/lcm/tools.d.ts +1 -1
  184. package/dist/lifecycle.d.ts +1 -1
  185. package/dist/live-connectors-runner.d.ts +1 -1
  186. package/dist/local-llm.d.ts +1 -1
  187. package/dist/local-model-endpoint.d.ts +1 -1
  188. package/dist/maintenance/memory-governance.d.ts +1 -1
  189. package/dist/maintenance/memory-governance.js +6 -6
  190. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -2
  191. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +5 -5
  192. package/dist/maintenance/rebuild-memory-projection.d.ts +2 -2
  193. package/dist/maintenance/rebuild-memory-projection.js +7 -7
  194. package/dist/maintenance-C98njYb8.d.ts +366 -0
  195. package/dist/mcp-memory-inspector-app.d.ts +12 -9
  196. package/dist/mcp-read-only-tools.js +1 -1
  197. package/dist/memory-action-policy.d.ts +1 -1
  198. package/dist/memory-cache.d.ts +1 -1
  199. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  200. package/dist/memory-projection-store.d.ts +1 -1
  201. package/dist/memory-provenance.d.ts +1 -1
  202. package/dist/memory-worth-outcomes.d.ts +2 -2
  203. package/dist/models-json.d.ts +1 -1
  204. package/dist/namespaces/migrate.d.ts +3 -3
  205. package/dist/namespaces/migrate.js +12 -12
  206. package/dist/namespaces/principal.d.ts +1 -1
  207. package/dist/namespaces/search.d.ts +1 -1
  208. package/dist/namespaces/search.js +6 -6
  209. package/dist/namespaces/storage.d.ts +3 -3
  210. package/dist/namespaces/storage.js +5 -5
  211. package/dist/native-knowledge.d.ts +1 -1
  212. package/dist/offline-sync-impression-drain.d.ts +1 -1
  213. package/dist/operator-toolkit.d.ts +2 -2
  214. package/dist/operator-toolkit.js +18 -18
  215. package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
  216. package/dist/orchestration/maintenance.d.ts +6 -223
  217. package/dist/orchestration/maintenance.js +12 -12
  218. package/dist/{orchestrator-DB93S48I.d.ts → orchestrator-C9ZVppNh.d.ts} +12 -481
  219. package/dist/orchestrator.d.ts +10 -8
  220. package/dist/orchestrator.js +84 -82
  221. package/dist/patterns-cli.d.ts +1 -1
  222. package/dist/{pipeline-DmGc-H66.d.ts → pipeline-id_-sqYm.d.ts} +1 -1
  223. package/dist/policy-runtime.d.ts +1 -1
  224. package/dist/proactive-contention.d.ts +1 -1
  225. package/dist/provenance.d.ts +1 -1
  226. package/dist/{qmd-cJT0crkF.d.ts → qmd-R6XaQOZK.d.ts} +1 -1
  227. package/dist/qmd-preflight.d.ts +2 -2
  228. package/dist/qmd-recall-cache.d.ts +1 -1
  229. package/dist/qmd.d.ts +2 -2
  230. package/dist/qmd.js +4 -4
  231. package/dist/recall-concurrency-config.d.ts +1 -1
  232. package/dist/recall-disclosure-escalation.d.ts +1 -1
  233. package/dist/recall-explain-renderer.d.ts +1 -1
  234. package/dist/recall-explain-renderer.js +3 -3
  235. package/dist/recall-memory-map.d.ts +1 -1
  236. package/dist/recall-planner-llm.d.ts +1 -1
  237. package/dist/recall-state.d.ts +1 -1
  238. package/dist/recall-tag-filter.d.ts +1 -1
  239. package/dist/recall-timings.d.ts +1 -1
  240. package/dist/recall-xray-cli.d.ts +1 -1
  241. package/dist/recall-xray-cli.js +4 -4
  242. package/dist/recall-xray-renderer.d.ts +1 -1
  243. package/dist/recall-xray-renderer.js +3 -3
  244. package/dist/recall-xray.d.ts +1 -1
  245. package/dist/recall-xray.js +2 -2
  246. package/dist/replay/normalizers/chatgpt.d.ts +1 -1
  247. package/dist/replay/normalizers/claude.d.ts +1 -1
  248. package/dist/replay/normalizers/openclaw.d.ts +1 -1
  249. package/dist/replay/normalizers/shared.d.ts +1 -1
  250. package/dist/replay/runner.d.ts +1 -1
  251. package/dist/replay/types.d.ts +1 -1
  252. package/dist/resolve-auth-token.d.ts +1 -1
  253. package/dist/resume-bundles.js +4 -4
  254. package/dist/retrieval-agents.d.ts +2 -2
  255. package/dist/retrieval-tiers.d.ts +1 -1
  256. package/dist/routing/engine.d.ts +1 -1
  257. package/dist/routing/store.d.ts +1 -1
  258. package/dist/salvage-envelope.d.ts +1 -1
  259. package/dist/{scope-profiles-KG2nODX7.d.ts → scope-profiles-EhyuAKkd.d.ts} +1 -1
  260. package/dist/search/embed-helper.d.ts +1 -1
  261. package/dist/search/factory.d.ts +1 -1
  262. package/dist/search/factory.js +5 -5
  263. package/dist/search/index.d.ts +1 -1
  264. package/dist/search/index.js +9 -9
  265. package/dist/search/lancedb-backend.d.ts +1 -1
  266. package/dist/search/meilisearch-backend.d.ts +1 -1
  267. package/dist/search/noop-backend.d.ts +1 -1
  268. package/dist/search/orama-backend.d.ts +1 -1
  269. package/dist/search/port.d.ts +1 -1
  270. package/dist/search/remote-backend.d.ts +1 -1
  271. package/dist/{semantic-consolidation-BaZlg0D8.d.ts → semantic-consolidation-B2xo26UQ.d.ts} +1 -1
  272. package/dist/semantic-consolidation.d.ts +2 -2
  273. package/dist/semantic-consolidation.js +7 -7
  274. package/dist/semantic-rule-promotion.js +5 -5
  275. package/dist/semantic-rule-verifier.d.ts +1 -1
  276. package/dist/semantic-rule-verifier.js +6 -6
  277. package/dist/service-DgFWlZ-r.d.ts +835 -0
  278. package/dist/session-observer-bands.d.ts +1 -1
  279. package/dist/session-observer-state.d.ts +1 -1
  280. package/dist/shared-context/manager.d.ts +1 -1
  281. package/dist/signal.d.ts +1 -1
  282. package/dist/{storage-BKhHHnRo.d.ts → storage-XGawwqXE.d.ts} +131 -2
  283. package/dist/storage.d.ts +2 -2
  284. package/dist/storage.js +4 -4
  285. package/dist/summarizer.d.ts +1 -1
  286. package/dist/summary-snapshot.d.ts +1 -1
  287. package/dist/temporal-supersession.d.ts +2 -2
  288. package/dist/temporal-timeline-recall.d.ts +1 -1
  289. package/dist/temporal-validity.d.ts +1 -1
  290. package/dist/threading.d.ts +1 -1
  291. package/dist/tier-migration.d.ts +2 -2
  292. package/dist/tier-routing.d.ts +1 -1
  293. package/dist/topics.d.ts +1 -1
  294. package/dist/transcript.d.ts +1 -1
  295. package/dist/trust-score-stage.d.ts +1 -1
  296. package/dist/trust-score.d.ts +1 -1
  297. package/dist/{types-GBQZuT7l.d.ts → types-Bbs0qz6b.d.ts} +2 -3
  298. package/dist/types.d.ts +1 -1
  299. package/dist/types.js +1 -1
  300. package/dist/utility-runtime.d.ts +1 -1
  301. package/dist/verified-recall.js +6 -6
  302. package/dist/write-envelope.d.ts +1 -1
  303. package/package.json +2 -2
  304. package/src/access-boundary.ts +3 -0
  305. package/src/access-http.test.ts +63 -0
  306. package/src/access-http.ts +26 -37
  307. package/src/access-mcp-output-schemas.ts +10 -0
  308. package/src/access-mcp.ts +4 -121
  309. package/src/access-operations-batch.ts +10 -5
  310. package/src/access-service.ts +43 -46
  311. package/src/access-surface-catalog.ts +6 -0
  312. package/src/access-wearables-meetings-surface.ts +139 -0
  313. package/src/activity/digest.ts +1 -1
  314. package/src/activity/runner.test.ts +37 -0
  315. package/src/activity/runner.ts +12 -0
  316. package/src/activity/scheduler.test.ts +1 -0
  317. package/src/activity/sync-registration.ts +13 -0
  318. package/src/cli/meetings-commands.ts +70 -0
  319. package/src/cli.ts +7 -6
  320. package/src/extraction-error-classification.ts +52 -0
  321. package/src/extraction.ts +2 -50
  322. package/src/mcp-read-only-tools.ts +2 -0
  323. package/src/meetings/build-memory.test.ts +364 -0
  324. package/src/meetings/build-scheduler.test.ts +55 -0
  325. package/src/meetings/build-scheduler.ts +96 -0
  326. package/src/meetings/day-source.test.ts +275 -0
  327. package/src/meetings/day-source.ts +352 -0
  328. package/src/meetings/http-glue.ts +126 -0
  329. package/src/meetings/index.ts +5 -4
  330. package/src/meetings/manual-sync-flush.test.ts +72 -0
  331. package/src/meetings/mcp-tools.ts +65 -0
  332. package/src/meetings/memory-gen.test.ts +498 -0
  333. package/src/meetings/memory-gen.ts +549 -0
  334. package/src/meetings/memory-generator.ts +5 -0
  335. package/src/meetings/namespace-isolation.test.ts +159 -0
  336. package/src/meetings/service.test.ts +195 -0
  337. package/src/meetings/service.ts +157 -0
  338. package/src/meetings/summary-extractor.test.ts +287 -0
  339. package/src/meetings/summary-extractor.ts +264 -0
  340. package/src/orchestration/maintenance.ts +8 -0
  341. package/src/orchestration/orchestrator-init.ts +6 -1
  342. package/src/orchestration/workspace-ops.ts +172 -8
  343. package/src/orchestrator.ts +12 -13
  344. package/src/storage.ts +21 -0
  345. package/src/testing/subjects/meetings-namespace-harness.ts +159 -0
  346. package/src/testing/subjects/meetings-namespace.test.ts +93 -0
  347. package/src/types.ts +1 -2
  348. package/src/wearables/cli.ts +2 -1
  349. package/src/wearables/index.ts +1 -0
  350. package/src/wearables/mcp-tools.ts +143 -0
  351. package/src/wearables/registry.test.ts +11 -0
  352. package/src/wearables/registry.ts +13 -0
  353. package/src/wearables/service.test.ts +62 -1
  354. package/src/wearables/service.ts +30 -2
  355. package/src/wearables/transcript-search-namespace-isolation.test.ts +98 -0
  356. package/dist/chunk-6ANPNUVL.js.map +0 -1
  357. package/dist/chunk-6NZ7U4R4.js.map +0 -1
  358. package/dist/chunk-7S5OMI76.js.map +0 -1
  359. package/dist/chunk-ACGGTPU4.js.map +0 -1
  360. package/dist/chunk-DM5A4ZFL.js.map +0 -1
  361. package/dist/chunk-EQYBHXRR.js.map +0 -1
  362. package/dist/chunk-IC2TCZJ2.js.map +0 -1
  363. package/dist/chunk-MONWCSVL.js.map +0 -1
  364. package/dist/chunk-N6M7MRVN.js.map +0 -1
  365. package/dist/chunk-QMGIQUBG.js.map +0 -1
  366. package/dist/chunk-QTO2FGBT.js.map +0 -1
  367. package/dist/chunk-SQEDDWAM.js.map +0 -1
  368. package/dist/chunk-W3XT32W7.js.map +0 -1
  369. /package/dist/{auto-sync-UPTUVE4X.js.map → auto-sync-5OE5QOZB.js.map} +0 -0
  370. /package/dist/{chunk-GF22HWS2.js.map → chunk-2PHX3I5C.js.map} +0 -0
  371. /package/dist/{chunk-JFDEYXF7.js.map → chunk-3NAHZQU3.js.map} +0 -0
  372. /package/dist/{chunk-XBRPEGXF.js.map → chunk-3UOSVTFR.js.map} +0 -0
  373. /package/dist/{chunk-TTKWTT72.js.map → chunk-3ZW6ZQO6.js.map} +0 -0
  374. /package/dist/{chunk-UV72DEZD.js.map → chunk-4B77XSG5.js.map} +0 -0
  375. /package/dist/{chunk-LMHDFOVV.js.map → chunk-5CPI2QWG.js.map} +0 -0
  376. /package/dist/{chunk-P72WZMWQ.js.map → chunk-5FZQ74K5.js.map} +0 -0
  377. /package/dist/{chunk-BRT7KEXU.js.map → chunk-6TWXQ4E2.js.map} +0 -0
  378. /package/dist/{chunk-CV6ZYXK3.js.map → chunk-7I7AYIUQ.js.map} +0 -0
  379. /package/dist/{chunk-TVVEYCNW.js.map → chunk-7K5Q6COX.js.map} +0 -0
  380. /package/dist/{chunk-JN57HZCD.js.map → chunk-ATEAL5EI.js.map} +0 -0
  381. /package/dist/{chunk-4PYLBXX6.js.map → chunk-AYAROCWD.js.map} +0 -0
  382. /package/dist/{chunk-NB2P47N7.js.map → chunk-CUUY5CC4.js.map} +0 -0
  383. /package/dist/{chunk-KL5Y6PEV.js.map → chunk-E3ZMFFQZ.js.map} +0 -0
  384. /package/dist/{chunk-55FDQYPS.js.map → chunk-ES5IHQ6M.js.map} +0 -0
  385. /package/dist/{chunk-N47ZWQBO.js.map → chunk-G2NSSQES.js.map} +0 -0
  386. /package/dist/{chunk-GSWPU5CR.js.map → chunk-GD3QOBMB.js.map} +0 -0
  387. /package/dist/{chunk-SACPRJ7F.js.map → chunk-JNIJBXVK.js.map} +0 -0
  388. /package/dist/{chunk-DGLON3AL.js.map → chunk-KNRG6ZGJ.js.map} +0 -0
  389. /package/dist/{chunk-GEUDRENF.js.map → chunk-MMTG3SCJ.js.map} +0 -0
  390. /package/dist/{chunk-WZFAPHIK.js.map → chunk-MU7ZHSZE.js.map} +0 -0
  391. /package/dist/{chunk-W4FBGYGK.js.map → chunk-NRV4Y3PM.js.map} +0 -0
  392. /package/dist/{chunk-KQ2XCQYN.js.map → chunk-P2BLHUL2.js.map} +0 -0
  393. /package/dist/{chunk-6L775BUB.js.map → chunk-QE63OHLB.js.map} +0 -0
  394. /package/dist/{chunk-ONHRRJZM.js.map → chunk-QJAQNXWI.js.map} +0 -0
  395. /package/dist/{chunk-6RYWNBSA.js.map → chunk-SVZGA2MK.js.map} +0 -0
  396. /package/dist/{chunk-OCMLGND7.js.map → chunk-WWZ35GWW.js.map} +0 -0
  397. /package/dist/{chunk-A5N6ISRK.js.map → chunk-ZN4UZWMT.js.map} +0 -0
  398. /package/dist/{chunk-7M6APKJL.js.map → chunk-ZYU7ZFLT.js.map} +0 -0
  399. /package/dist/{first-start-migration-LEXL3XYL.js.map → first-start-migration-BKNGOFED.js.map} +0 -0
@@ -453,3 +453,40 @@ test("an older-day failure does not starve newer dates in a multi-day window", a
453
453
  await rm(memoryDir, { recursive: true, force: true });
454
454
  }
455
455
  });
456
+
457
+ test("runActivitySyncOnce reports every local date that gained snapshots (issue #1900 backfill)", async () => {
458
+ const memoryDir = await mkdtemp(path.join(os.tmpdir(), "remnic-activity-runner-"));
459
+ const store = ActivityStore.open(memoryDir);
460
+ try {
461
+ let calls = 0;
462
+ const client: ActivitySourceClient = {
463
+ machineLabel: "workstation-a",
464
+ async verify() {
465
+ return { ok: true };
466
+ },
467
+ async fetchSnapshots() {
468
+ calls += 1;
469
+ // Dates are processed oldest-first: day 1 = 2026-07-21, day 2 = 2026-07-22.
470
+ const capturedAtUtc = calls === 1 ? "2026-07-21T14:00:00.000Z" : "2026-07-22T14:00:00.000Z";
471
+ return { snapshots: [snapshot({ capturedAtUtc, contentHash: `hash-${calls}` })], nextCursor: null };
472
+ },
473
+ };
474
+
475
+ const summary = await runActivitySyncOnce({
476
+ config: enabledConfig({ syncDays: 2 }),
477
+ memoryDir,
478
+ store,
479
+ now: NOW,
480
+ createSourceClient: () => client,
481
+ });
482
+
483
+ assert.deepEqual(
484
+ summary.touchedDates,
485
+ ["2026-07-21", "2026-07-22"],
486
+ "both days that inserted snapshots are reported so meetings rebuild the older day too",
487
+ );
488
+ } finally {
489
+ store.close();
490
+ await rm(memoryDir, { recursive: true, force: true });
491
+ }
492
+ });
@@ -60,6 +60,12 @@ export interface ActivitySyncRunSummary {
60
60
  reindexErrorCount: number;
61
61
  totalInserted: number;
62
62
  results: ActivitySourceRunItem[];
63
+ /**
64
+ * Local dates (YYYY-MM-DD, in the sync timezone) that gained new snapshots
65
+ * this run — a backfill/rolling window can touch several. Meetings rebuild
66
+ * uses this so a change to an OLDER day rebuilds that day, not just today.
67
+ */
68
+ touchedDates: string[];
63
69
  }
64
70
 
65
71
  export interface ActivitySyncRunOptions {
@@ -148,6 +154,7 @@ export async function runActivitySyncOnce(options: ActivitySyncRunOptions): Prom
148
154
  reindexErrorCount: 0,
149
155
  totalInserted: 0,
150
156
  results: [],
157
+ touchedDates: [],
151
158
  };
152
159
  }
153
160
 
@@ -163,6 +170,9 @@ export async function runActivitySyncOnce(options: ActivitySyncRunOptions): Prom
163
170
  const ownStore = options.store === undefined;
164
171
  const store = options.store ?? ActivityStore.open(options.memoryDir);
165
172
  const results: ActivitySourceRunItem[] = [];
173
+ // Local dates that gained new snapshots this run (any source). Drives the
174
+ // meetings rebuild fan-out so a backfilled OLDER day is rebuilt too.
175
+ const touchedDates = new Set<string>();
166
176
 
167
177
  try {
168
178
  for (const sourceConfig of options.config.sources) {
@@ -191,6 +201,7 @@ export async function runActivitySyncOnce(options: ActivitySyncRunOptions): Prom
191
201
  });
192
202
  item.fetched += result.fetched;
193
203
  item.inserted += result.inserted;
204
+ if (result.inserted > 0) touchedDates.add(date);
194
205
  item.duplicates += result.duplicates;
195
206
  if (result.digestWritten) item.digestsWritten += 1;
196
207
  item.cursor = result.cursor;
@@ -233,5 +244,6 @@ export async function runActivitySyncOnce(options: ActivitySyncRunOptions): Prom
233
244
  reindexErrorCount: results.filter((item) => item.reindexError !== undefined).length,
234
245
  totalInserted: results.reduce((sum, item) => sum + item.inserted, 0),
235
246
  results,
247
+ touchedDates: [...touchedDates].sort(),
236
248
  };
237
249
  }
@@ -50,6 +50,7 @@ const SUMMARY: ActivitySyncRunSummary = {
50
50
  reindexErrorCount: 0,
51
51
  totalInserted: 0,
52
52
  results: [],
53
+ touchedDates: [],
53
54
  };
54
55
 
55
56
  function enabledConfig(): ActivityConfig {
@@ -50,6 +50,13 @@ export interface ActivitySyncRegistrarDeps {
50
50
  readonly getQmd: () => ActivityIndexRefresher;
51
51
  /** Debounced/singleflighted QMD retry used when a tick's reindex fails. */
52
52
  readonly requestReindexRetry: () => void;
53
+ /**
54
+ * Tail step (issue #1900): observe a completed sync tick so a dependent
55
+ * subsystem (meeting building) can rebuild the affected day(s). Fired only
56
+ * after a durable tick and never after teardown. Optional; omitted by hosts
57
+ * that do not build meetings.
58
+ */
59
+ readonly onSynced?: (summary: ActivitySyncRunSummary) => void;
53
60
  /** Scheduler factory (injectable for tests); defaults to the real scheduler. */
54
61
  readonly createScheduler?: (options: ActivitySyncSchedulerOptions) => ActivitySyncSchedulerLike;
55
62
  }
@@ -111,6 +118,12 @@ export class ActivitySyncRegistrar {
111
118
  );
112
119
  this.deps.requestReindexRetry();
113
120
  }
121
+ // Tail step: a durable tick that ingested snapshots may have changed a
122
+ // meeting's screen context; notify the dependent builder. Never after
123
+ // teardown.
124
+ if (summary.enabled && summary.totalInserted > 0 && !this.disposed) {
125
+ this.deps.onSynced?.(summary);
126
+ }
114
127
  },
115
128
  });
116
129
  this.scheduler = scheduler;
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Meetings command group (issue #1900) — extracted from cli.ts so the surface
3
+ * file stays under its structural ceiling. Mirrors the
4
+ * registerResearchStatusCommands / registerCreationLedgerCommands seam: a single
5
+ * registrar wires the `meetings` command (list / show / build) on the parent
6
+ * `engram` command.
7
+ *
8
+ * Every subcommand forwards to the shared runner in meetings/cli.ts so this host
9
+ * CLI and the standalone `remnic` CLI never fork behavior or formatting.
10
+ * Behaviour is identical to the inline registration it replaces — the
11
+ * cli-command-surface contract tests guard against silent drift.
12
+ */
13
+
14
+ import type { Orchestrator } from "../orchestrator.js";
15
+ import type { CliCommand } from "../cli.js";
16
+ import { runMeetingsCliCommand } from "../meetings/cli.js";
17
+
18
+ export function registerMeetingsCommands(cmd: CliCommand, orchestrator: Orchestrator): void {
19
+ const meetingsCmd = cmd
20
+ .command("meetings")
21
+ .description(
22
+ "Retrospective meetings: list records, show one, build (detect + fuse + store) a day",
23
+ );
24
+ const forwardMeetings = async (argv: string[]): Promise<void> => {
25
+ const service = await orchestrator.getMeetingsService();
26
+ const code = await runMeetingsCliCommand(
27
+ { store: service.store, builder: service.builder, config: service.config },
28
+ argv,
29
+ { stdout: process.stdout, stderr: process.stderr },
30
+ );
31
+ if (code !== 0) process.exitCode = code;
32
+ };
33
+
34
+ meetingsCmd
35
+ .command("list")
36
+ .description("List meeting records (all days, or one day)")
37
+ .option("--date <date>", "Day to list (YYYY-MM-DD)")
38
+ .option("--json", "JSON output")
39
+ .action(async (...args: unknown[]) => {
40
+ const options = (args[0] ?? {}) as Record<string, unknown>;
41
+ await forwardMeetings([
42
+ "list",
43
+ ...(typeof options.date === "string" && options.date.length > 0
44
+ ? ["--date", options.date]
45
+ : []),
46
+ ...(options.json === true ? ["--json"] : []),
47
+ ]);
48
+ });
49
+
50
+ meetingsCmd
51
+ .command("show <meeting-id>")
52
+ .description("Print a stored meeting record")
53
+ .action(async (...args: unknown[]) => {
54
+ await forwardMeetings(["show", String(args[0] ?? "")]);
55
+ });
56
+
57
+ meetingsCmd
58
+ .command("build")
59
+ .description("Detect + fuse + store the day's meetings")
60
+ .option("--date <date>", "Day to build (YYYY-MM-DD)")
61
+ .option("--json", "JSON output")
62
+ .action(async (...args: unknown[]) => {
63
+ const options = (args[0] ?? {}) as Record<string, unknown>;
64
+ await forwardMeetings([
65
+ "build",
66
+ ...(typeof options.date === "string" ? ["--date", options.date] : []),
67
+ ...(options.json === true ? ["--json"] : []),
68
+ ]);
69
+ });
70
+ }
package/src/cli.ts CHANGED
@@ -13,6 +13,7 @@ import { ThreadingManager } from "./threading.js";
13
13
  import { bumpMemoryCorpusVersionForDir } from "./memory-corpus-version.js";
14
14
  import { utcDayRange } from "./transcript.js";
15
15
  import { runWearablesCliCommand } from "./wearables/cli.js";
16
+ import { registerMeetingsCommands } from "./cli/meetings-commands.js";
16
17
  import { registerResearchStatusCommands } from "./cli/research-status-commands.js";
17
18
  import { registerCreationLedgerCommands } from "./cli/creation-ledger-commands.js";
18
19
  import type {
@@ -5197,11 +5198,11 @@ export function registerCli(
5197
5198
  "Wearable transcript sources (Limitless / Bee / Omi): sync, transcripts, search, speakers, corrections",
5198
5199
  );
5199
5200
  const forwardWearables = async (argv: string[]): Promise<void> => {
5200
- const code = await runWearablesCliCommand(
5201
- orchestrator.getWearablesService(),
5202
- argv,
5203
- { stdout: process.stdout, stderr: process.stderr },
5204
- );
5201
+ const io = { stdout: process.stdout, stderr: process.stderr };
5202
+ const code = await runWearablesCliCommand(orchestrator.getWearablesService(), argv, io);
5203
+ if (argv[0] === "sync" && code === 0 && orchestrator.config.meetings.enabled) { // drain debounced build
5204
+ await (await orchestrator.getMeetingsService()).flushBuilds();
5205
+ }
5205
5206
  if (code !== 0) process.exitCode = code;
5206
5207
  };
5207
5208
  const stringOpt = (options: Record<string, unknown>, key: string, flag: string): string[] =>
@@ -6230,7 +6231,7 @@ export function registerCli(
6230
6231
 
6231
6232
  registerResearchStatusCommands(cmd, orchestrator);
6232
6233
 
6233
- registerCreationLedgerCommands(cmd, orchestrator);
6234
+ registerCreationLedgerCommands(cmd, orchestrator); registerMeetingsCommands(cmd, orchestrator);
6234
6235
 
6235
6236
  cmd
6236
6237
  .command("trust-zone-promote")
@@ -0,0 +1,52 @@
1
+ import type { ExtractionFailureClass } from "./types.js";
2
+ import { isTransientHttpError } from "./connectors/live/transient-errors.js";
3
+
4
+ /**
5
+ * Read a numeric HTTP status off a thrown error without re-implementing the
6
+ * shared transient classifier. Uses `in`/typeof narrowing (no inline casts).
7
+ */
8
+ function httpStatusFromError(err: unknown): number | undefined {
9
+ if (!err || typeof err !== "object") return undefined;
10
+ if ("status" in err && typeof err.status === "number" && Number.isFinite(err.status)) return err.status;
11
+ if ("statusCode" in err && typeof err.statusCode === "number" && Number.isFinite(err.statusCode)) {
12
+ return err.statusCode;
13
+ }
14
+ return undefined;
15
+ }
16
+
17
+ /**
18
+ * Map a thrown extraction error to a coarse failure class for the retry/breaker
19
+ * layer. 401/403 → `auth_config` (misconfigured provider, open the breaker);
20
+ * transient (429/5xx/network, per the shared `isTransientHttpError`) → back off;
21
+ * anything else defaults to `provider_retryable` (fail-open toward retry, but
22
+ * capped by the per-fingerprint attempt budget). Never throws.
23
+ */
24
+ export function classifyExtractionThrownError(err: unknown): ExtractionFailureClass {
25
+ try {
26
+ const status = httpStatusFromError(err);
27
+ if (status === 401 || status === 403) return "auth_config";
28
+ if (isTransientHttpError(err)) return "provider_retryable";
29
+ return "provider_retryable";
30
+ } catch {
31
+ return "provider_retryable";
32
+ }
33
+ }
34
+
35
+ /**
36
+ * Map the gateway fallback's discriminated parse-failure reason to a coarse
37
+ * extraction failure class. "no models configured" is an auth/config problem;
38
+ * an HTTP/transport failure backs off; an unparseable-but-present response is a
39
+ * genuine empty-parse.
40
+ */
41
+ export function classifyFallbackParseFailure(
42
+ reason: "no_models" | "empty" | "http_error",
43
+ ): ExtractionFailureClass {
44
+ switch (reason) {
45
+ case "no_models":
46
+ return "auth_config";
47
+ case "http_error":
48
+ return "provider_retryable";
49
+ case "empty":
50
+ return "parse_empty";
51
+ }
52
+ }
package/src/extraction.ts CHANGED
@@ -40,7 +40,8 @@ import { normalizeProcedureSteps } from "./procedural/procedure-types.js";
40
40
  import { normalizeReasoningTrace } from "./reasoning-trace-types.js";
41
41
  import { looksLikeMechanicalTelemetryTranscript } from "./telemetry-transcript.js";
42
42
  import { buildFactProvenance, type ProvenanceTurnInput } from "./provenance.js";
43
- import { isTransientHttpError } from "./connectors/live/transient-errors.js";
43
+ import { classifyExtractionThrownError, classifyFallbackParseFailure } from "./extraction-error-classification.js";
44
+ export { classifyExtractionThrownError, classifyFallbackParseFailure } from "./extraction-error-classification.js";
44
45
  import { resolvePipelineProcessingCapabilities } from "./capabilities.js";
45
46
  import { resolveMemoryLifecycleCapabilities,
46
47
  resolveLocalLlmCapabilities,resolveRecallAuxiliaryCapabilities } from "./capabilities.js";
@@ -50,55 +51,6 @@ type ExtractedFactResult = ExtractionResult["facts"][number];
50
51
  type ExtractedEntityResult = ExtractionResult["entities"][number];
51
52
  type ExtractedRelationshipResult = NonNullable<ExtractionResult["relationships"]>[number];
52
53
 
53
- /**
54
- * Read a numeric HTTP status off a thrown error without re-implementing the
55
- * shared transient classifier. Uses `in`/typeof narrowing (no inline casts).
56
- */
57
- function httpStatusFromError(err: unknown): number | undefined {
58
- if (!err || typeof err !== "object") return undefined;
59
- if ("status" in err && typeof err.status === "number" && Number.isFinite(err.status)) return err.status;
60
- if ("statusCode" in err && typeof err.statusCode === "number" && Number.isFinite(err.statusCode)) {
61
- return err.statusCode;
62
- }
63
- return undefined;
64
- }
65
-
66
- /**
67
- * Map a thrown extraction error to a coarse failure class for the retry/breaker
68
- * layer. 401/403 → `auth_config` (misconfigured provider, open the breaker);
69
- * transient (429/5xx/network, per the shared `isTransientHttpError`) → back off;
70
- * anything else defaults to `provider_retryable` (fail-open toward retry, but
71
- * capped by the per-fingerprint attempt budget). Never throws.
72
- */
73
- export function classifyExtractionThrownError(err: unknown): ExtractionFailureClass {
74
- try {
75
- const status = httpStatusFromError(err);
76
- if (status === 401 || status === 403) return "auth_config";
77
- if (isTransientHttpError(err)) return "provider_retryable";
78
- return "provider_retryable";
79
- } catch {
80
- return "provider_retryable";
81
- }
82
- }
83
-
84
- /**
85
- * Map the gateway fallback's discriminated parse-failure reason to a coarse
86
- * extraction failure class. "no models configured" is an auth/config problem;
87
- * an HTTP/transport failure backs off; an unparseable-but-present response is a
88
- * genuine empty-parse.
89
- */
90
- export function classifyFallbackParseFailure(
91
- reason: "no_models" | "empty" | "http_error",
92
- ): ExtractionFailureClass {
93
- switch (reason) {
94
- case "no_models":
95
- return "auth_config";
96
- case "http_error":
97
- return "provider_retryable";
98
- case "empty":
99
- return "parse_empty";
100
- }
101
- }
102
54
  const PROACTIVE_MIN_CONFIDENCE = 0.8;
103
55
  const CONSOLIDATION_RESPONSE_SCHEMA = `{
104
56
  "items": [
@@ -21,6 +21,8 @@ export const MCP_READ_ONLY_TOOL_SUFFIXES: Readonly<Record<string, true>> = {
21
21
  transcript_day: true,
22
22
  transcript_search: true,
23
23
  transcript_memories: true,
24
+ meetings_list: true,
25
+ meetings_get: true,
24
26
  action_confidence: true,
25
27
  capsule_list: true,
26
28
  procedural_stats: true,