@remnic/core 9.4.2 → 9.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. package/dist/access-admin-ops-surface.d.ts +6 -6
  2. package/dist/access-admin-ops-surface.js +28 -28
  3. package/dist/access-boundary.d.ts +27 -8
  4. package/dist/access-boundary.js +33 -29
  5. package/dist/access-cli.js +83 -81
  6. package/dist/access-cli.js.map +1 -1
  7. package/dist/access-http.d.ts +52 -6
  8. package/dist/access-http.js +40 -38
  9. package/dist/access-identity-continuity-surface.d.ts +5 -5
  10. package/dist/access-identity-continuity-surface.js +28 -28
  11. package/dist/access-lcm-surface.d.ts +6 -6
  12. package/dist/access-lcm-surface.js +28 -28
  13. package/dist/access-mcp.d.ts +16 -6
  14. package/dist/access-mcp.js +37 -35
  15. package/dist/access-observe-write-surface.d.ts +6 -6
  16. package/dist/access-observe-write-surface.js +28 -28
  17. package/dist/access-operations-batch.js +33 -32
  18. package/dist/access-operations.d.ts +9 -9
  19. package/dist/access-operations.js +35 -34
  20. package/dist/access-recall-surface.d.ts +6 -6
  21. package/dist/access-recall-surface.js +28 -28
  22. package/dist/access-schema.d.ts +4 -4
  23. package/dist/access-schema.js +4 -4
  24. package/dist/{access-service-m-2VO_Ig.d.ts → access-service-CXJaql3A.d.ts} +4 -4
  25. package/dist/access-service.d.ts +6 -6
  26. package/dist/access-service.js +28 -28
  27. package/dist/access-surface-catalog.d.ts +6 -6
  28. package/dist/access-surface-catalog.js +1 -0
  29. package/dist/access-surface-catalog.js.map +1 -1
  30. package/dist/access-token-capabilities.d.ts +174 -0
  31. package/dist/access-token-capabilities.js +33 -0
  32. package/dist/action-confidence.d.ts +1 -1
  33. package/dist/active-memory-bridge.d.ts +1 -1
  34. package/dist/active-recall.d.ts +1 -1
  35. package/dist/active-recall.js +2 -2
  36. package/dist/adapters/index.js +4 -4
  37. package/dist/adapters/registry.js +2 -2
  38. package/dist/{auto-sync-HMHQHUAG.js → auto-sync-4A5YBWYO.js} +4 -4
  39. package/dist/behavior-learner.d.ts +1 -1
  40. package/dist/behavior-signals.d.ts +1 -1
  41. package/dist/bootstrap.d.ts +5 -5
  42. package/dist/briefing.d.ts +2 -2
  43. package/dist/briefing.js +9 -9
  44. package/dist/buffer-surprise-report.d.ts +1 -1
  45. package/dist/buffer.d.ts +2 -2
  46. package/dist/calibration.d.ts +1 -1
  47. package/dist/capabilities.d.ts +1 -1
  48. package/dist/{capsule-crypto-CZJSLEFG.js → capsule-crypto-RAARDY3M.js} +2 -2
  49. package/dist/capsule-crypto-RAARDY3M.js.map +1 -0
  50. package/dist/{catalog-BxWokdC2.d.ts → catalog-C9cu67Ig.d.ts} +1 -1
  51. package/dist/causal-behavior.d.ts +1 -1
  52. package/dist/causal-behavior.js +5 -5
  53. package/dist/causal-chain.js +3 -3
  54. package/dist/causal-consolidation.d.ts +1 -1
  55. package/dist/causal-consolidation.js +13 -13
  56. package/dist/causal-retrieval.js +3 -3
  57. package/dist/causal-trajectory-graph.d.ts +1 -1
  58. package/dist/causal-trajectory.js +1 -1
  59. package/dist/{chunk-6ZIETXZ2.js → chunk-23JFRB73.js} +2 -2
  60. package/dist/{chunk-IC6QX5TC.js → chunk-3XIY7MDQ.js} +6 -6
  61. package/dist/{chunk-FZGGZAAU.js → chunk-4GNEDXDI.js} +146 -2
  62. package/dist/chunk-4GNEDXDI.js.map +1 -0
  63. package/dist/{chunk-LOR6ZM5R.js → chunk-4LV23CHK.js} +2 -2
  64. package/dist/{chunk-E2SPGGUI.js → chunk-4OKLXWDZ.js} +13 -6
  65. package/dist/chunk-4OKLXWDZ.js.map +1 -0
  66. package/dist/{chunk-AER6MT24.js → chunk-6SXVCD7W.js} +2 -2
  67. package/dist/{chunk-OHDJ34CC.js → chunk-72WG5QKN.js} +2 -2
  68. package/dist/{chunk-CZAZX7JP.js → chunk-7MW3CVLD.js} +4 -4
  69. package/dist/{chunk-CXLNZXG5.js → chunk-7XGSIUP5.js} +1 -1
  70. package/dist/{chunk-CZAA5N5S.js → chunk-AYZJID4S.js} +2 -2
  71. package/dist/{chunk-M7XQSUBB.js → chunk-B3ABVQ36.js} +116 -9
  72. package/dist/chunk-B3ABVQ36.js.map +1 -0
  73. package/dist/{chunk-6BISDEN6.js → chunk-BEM4D2QG.js} +14 -14
  74. package/dist/{chunk-ZPOROUTX.js → chunk-CYWA2CXR.js} +5 -5
  75. package/dist/{chunk-M5QKGHCR.js → chunk-CYWCKFCL.js} +5 -5
  76. package/dist/chunk-D7FOKIY5.js +173 -0
  77. package/dist/chunk-D7FOKIY5.js.map +1 -0
  78. package/dist/{chunk-4BFRBP45.js → chunk-DEG5ULFJ.js} +2 -2
  79. package/dist/{chunk-JLR3JSTL.js → chunk-DS7MM2ES.js} +3 -3
  80. package/dist/{chunk-2BFLDH5F.js → chunk-EEIROWEG.js} +2 -2
  81. package/dist/{chunk-5QZDMSSN.js → chunk-FKCRGLRD.js} +237 -82
  82. package/dist/{chunk-5QZDMSSN.js.map → chunk-FKCRGLRD.js.map} +1 -1
  83. package/dist/{chunk-X4A62ET7.js → chunk-H2DXDQCQ.js} +17 -17
  84. package/dist/{chunk-27FLVMDC.js → chunk-HLN7RROI.js} +7 -7
  85. package/dist/chunk-IC2TCZJ2.js +54 -0
  86. package/dist/chunk-IC2TCZJ2.js.map +1 -0
  87. package/dist/{chunk-2U2A5HF4.js → chunk-J3XHPFEU.js} +6 -6
  88. package/dist/{chunk-AKUCU7CI.js → chunk-JI5AVXYO.js} +5 -5
  89. package/dist/{chunk-KCJ5H6XQ.js → chunk-JSNVWNGX.js} +2 -2
  90. package/dist/{chunk-7Z2DZNWN.js → chunk-KL4UAXUY.js} +43 -2
  91. package/dist/{chunk-7Z2DZNWN.js.map → chunk-KL4UAXUY.js.map} +1 -1
  92. package/dist/{chunk-FLVL4L3L.js → chunk-KTULX4YO.js} +4 -4
  93. package/dist/{chunk-ILFJ7AVS.js → chunk-LADFWYHY.js} +35 -21
  94. package/dist/chunk-LADFWYHY.js.map +1 -0
  95. package/dist/{chunk-437S3G37.js → chunk-LNQUAJNC.js} +1 -1
  96. package/dist/{chunk-EPGWWCZF.js → chunk-LR5DZ56F.js} +6 -6
  97. package/dist/{chunk-YDSWRD33.js → chunk-N3JDIRBW.js} +4 -4
  98. package/dist/{chunk-OUMTBFSQ.js → chunk-NKCPUHCI.js} +5 -5
  99. package/dist/{chunk-7QWMTOIF.js → chunk-P454KXD6.js} +112 -34
  100. package/dist/chunk-P454KXD6.js.map +1 -0
  101. package/dist/{chunk-DR6PEJU3.js → chunk-PCLIWBGD.js} +44 -59
  102. package/dist/chunk-PCLIWBGD.js.map +1 -0
  103. package/dist/{chunk-BGTAL46Y.js → chunk-PNLFN2PZ.js} +2 -2
  104. package/dist/{chunk-P6SYWE4G.js → chunk-PVUJ6WVV.js} +10 -10
  105. package/dist/{chunk-YPEMNNNY.js → chunk-RGK27ELN.js} +6 -6
  106. package/dist/{chunk-2QSZNTDO.js → chunk-RKNJBZ55.js} +4 -4
  107. package/dist/{chunk-66FLU5BT.js → chunk-SIRPLF54.js} +6 -6
  108. package/dist/{chunk-M7GGMGMZ.js → chunk-SVOHGUMI.js} +1202 -126
  109. package/dist/chunk-SVOHGUMI.js.map +1 -0
  110. package/dist/{chunk-HRCACVHL.js → chunk-TLUDFPZL.js} +2 -2
  111. package/dist/{chunk-2FOD2YY3.js → chunk-UFUKHGZD.js} +236 -103
  112. package/dist/chunk-UFUKHGZD.js.map +1 -0
  113. package/dist/{chunk-2MR3MFQB.js → chunk-UPSAT4PY.js} +2 -2
  114. package/dist/{chunk-4P4626RY.js → chunk-UTRJFDP2.js} +4 -4
  115. package/dist/{chunk-CGS7UKWM.js → chunk-VCW74PNH.js} +2 -2
  116. package/dist/{chunk-5GPPACXK.js → chunk-VSMRDBFT.js} +2 -1
  117. package/dist/{chunk-NG7YBCJO.js → chunk-XCL57M6Q.js} +4 -4
  118. package/dist/{chunk-CLX5VDNY.js → chunk-Y4RKAQZ7.js} +4 -4
  119. package/dist/{chunk-DGYCWCQ7.js → chunk-Y7UNNAZD.js} +2 -2
  120. package/dist/{chunk-EZ25VE3G.js → chunk-YNDLCWXS.js} +4 -4
  121. package/dist/{chunk-XN3TUUX2.js → chunk-YQB32INI.js} +2 -2
  122. package/dist/{cli-EiBBOt3r.d.ts → cli-CqdPA6z9.d.ts} +3 -3
  123. package/dist/cli.d.ts +7 -7
  124. package/dist/cli.js +61 -59
  125. package/dist/compounding/engine.d.ts +2 -2
  126. package/dist/compounding/engine.js +9 -9
  127. package/dist/compounding/preference-consolidator.d.ts +1 -1
  128. package/dist/compression-optimizer.d.ts +1 -1
  129. package/dist/config.d.ts +1 -1
  130. package/dist/config.js +2 -2
  131. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  132. package/dist/connectors/codex-materialize-runner.js +9 -9
  133. package/dist/connectors/codex-materialize.d.ts +1 -1
  134. package/dist/connectors/index.d.ts +1 -1
  135. package/dist/connectors/index.js +13 -11
  136. package/dist/consolidation-provenance-check.d.ts +2 -2
  137. package/dist/consolidation-undo.d.ts +2 -2
  138. package/dist/contradiction/index.d.ts +2 -2
  139. package/dist/contradiction/index.js +4 -4
  140. package/dist/conversation-index/backend.d.ts +1 -1
  141. package/dist/conversation-index/backend.js +2 -2
  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/dashboard-runtime.js +2 -2
  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 +9 -9
  155. package/dist/entity-schema.d.ts +1 -1
  156. package/dist/explicit-capture.d.ts +5 -5
  157. package/dist/extraction-faithfulness.d.ts +1 -1
  158. package/dist/extraction-judge-telemetry.d.ts +1 -1
  159. package/dist/extraction-judge-training.d.ts +1 -1
  160. package/dist/extraction-judge.d.ts +1 -1
  161. package/dist/extraction.d.ts +1 -1
  162. package/dist/fallback-llm.d.ts +1 -1
  163. package/dist/{first-start-migration-DY6YCRC2.js → first-start-migration-VBJQL6OI.js} +5 -5
  164. package/dist/graph-dashboard-diff.d.ts +1 -1
  165. package/dist/graph-dashboard-key.d.ts +1 -1
  166. package/dist/graph-dashboard-parser.d.ts +1 -1
  167. package/dist/graph-edge-reinforcement.d.ts +1 -1
  168. package/dist/graph-snapshot.d.ts +1 -1
  169. package/dist/graph.d.ts +1 -1
  170. package/dist/identity-continuity.d.ts +1 -1
  171. package/dist/importance.d.ts +1 -1
  172. package/dist/index.d.ts +271 -17
  173. package/dist/index.js +163 -99
  174. package/dist/intent.d.ts +1 -1
  175. package/dist/lcm/engine.d.ts +1 -1
  176. package/dist/lcm/engine.js +2 -2
  177. package/dist/lcm/index.d.ts +1 -1
  178. package/dist/lcm/index.js +2 -2
  179. package/dist/lcm/tools.d.ts +1 -1
  180. package/dist/lifecycle.d.ts +1 -1
  181. package/dist/live-connectors-runner.d.ts +1 -1
  182. package/dist/local-llm.d.ts +1 -1
  183. package/dist/local-model-endpoint.d.ts +1 -1
  184. package/dist/maintenance/memory-governance.d.ts +1 -1
  185. package/dist/maintenance/memory-governance.js +10 -10
  186. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +9 -9
  187. package/dist/maintenance/rebuild-memory-projection.js +11 -11
  188. package/dist/mcp-memory-inspector-app.d.ts +6 -6
  189. package/dist/mcp-read-only-tools.d.ts +16 -0
  190. package/dist/mcp-read-only-tools.js +8 -0
  191. package/dist/mcp-read-only-tools.js.map +1 -0
  192. package/dist/memory-action-policy.d.ts +1 -1
  193. package/dist/memory-cache.d.ts +1 -1
  194. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  195. package/dist/memory-projection-store.d.ts +1 -1
  196. package/dist/memory-provenance.d.ts +1 -1
  197. package/dist/memory-worth-outcomes.d.ts +2 -2
  198. package/dist/models-json.d.ts +1 -1
  199. package/dist/namespaces/migrate.d.ts +3 -3
  200. package/dist/namespaces/migrate.js +19 -19
  201. package/dist/namespaces/principal.d.ts +1 -1
  202. package/dist/namespaces/search.d.ts +1 -1
  203. package/dist/namespaces/search.js +10 -10
  204. package/dist/namespaces/storage.d.ts +3 -3
  205. package/dist/namespaces/storage.js +9 -9
  206. package/dist/native-knowledge.d.ts +1 -1
  207. package/dist/operator-toolkit.d.ts +2 -2
  208. package/dist/operator-toolkit.js +25 -25
  209. package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
  210. package/dist/orchestration/maintenance.d.ts +2 -2
  211. package/dist/orchestration/maintenance.js +11 -11
  212. package/dist/{orchestrator-B2Y28Z9t.d.ts → orchestrator-CWFrT8AF.d.ts} +91 -60
  213. package/dist/orchestrator.d.ts +5 -5
  214. package/dist/orchestrator.js +85 -83
  215. package/dist/patterns-cli.d.ts +1 -1
  216. package/dist/policy-runtime.d.ts +1 -1
  217. package/dist/provenance.d.ts +1 -1
  218. package/dist/{qmd-Db9mOkzB.d.ts → qmd--fnPMK60.d.ts} +1 -1
  219. package/dist/qmd-preflight.d.ts +2 -2
  220. package/dist/qmd-recall-cache.d.ts +1 -1
  221. package/dist/qmd.d.ts +2 -2
  222. package/dist/recall-disclosure-escalation.d.ts +1 -1
  223. package/dist/recall-explain-renderer.d.ts +1 -1
  224. package/dist/recall-planner-llm.d.ts +1 -1
  225. package/dist/recall-state.d.ts +1 -1
  226. package/dist/recall-tag-filter.d.ts +1 -1
  227. package/dist/recall-timings.d.ts +1 -1
  228. package/dist/recall-xray-cli.d.ts +1 -1
  229. package/dist/recall-xray-renderer.d.ts +1 -1
  230. package/dist/recall-xray.d.ts +1 -1
  231. package/dist/resolve-auth-token.d.ts +1 -1
  232. package/dist/resume-bundles.js +4 -4
  233. package/dist/retrieval-agents.d.ts +2 -2
  234. package/dist/retrieval-tiers.d.ts +1 -1
  235. package/dist/routing/engine.d.ts +1 -1
  236. package/dist/routing/store.d.ts +1 -1
  237. package/dist/schemas.d.ts +22 -22
  238. package/dist/search/document-scanner.js +2 -2
  239. package/dist/search/embed-helper.d.ts +1 -1
  240. package/dist/search/factory.d.ts +1 -1
  241. package/dist/search/factory.js +9 -9
  242. package/dist/search/index.d.ts +1 -1
  243. package/dist/search/index.js +13 -13
  244. package/dist/search/lancedb-backend.d.ts +1 -1
  245. package/dist/search/lancedb-backend.js +3 -3
  246. package/dist/search/meilisearch-backend.d.ts +1 -1
  247. package/dist/search/meilisearch-backend.js +3 -3
  248. package/dist/search/noop-backend.d.ts +1 -1
  249. package/dist/search/orama-backend.d.ts +1 -1
  250. package/dist/search/orama-backend.js +3 -3
  251. package/dist/search/port.d.ts +1 -1
  252. package/dist/search/remote-backend.d.ts +1 -1
  253. package/dist/{semantic-consolidation-BDVIbLRw.d.ts → semantic-consolidation-O5lMZ4LG.d.ts} +1 -1
  254. package/dist/semantic-consolidation.d.ts +2 -2
  255. package/dist/semantic-consolidation.js +11 -11
  256. package/dist/semantic-rule-promotion.js +9 -9
  257. package/dist/semantic-rule-verifier.d.ts +1 -1
  258. package/dist/semantic-rule-verifier.js +10 -10
  259. package/dist/session-observer-bands.d.ts +1 -1
  260. package/dist/session-observer-state.d.ts +1 -1
  261. package/dist/shared-context/manager.d.ts +1 -1
  262. package/dist/signal.d.ts +1 -1
  263. package/dist/storage-C1maCNbc.d.ts +1591 -0
  264. package/dist/storage.d.ts +5 -1239
  265. package/dist/storage.js +8 -8
  266. package/dist/summarizer.d.ts +1 -1
  267. package/dist/summary-snapshot.d.ts +1 -1
  268. package/dist/temporal-supersession.d.ts +2 -2
  269. package/dist/temporal-validity.d.ts +1 -1
  270. package/dist/threading.d.ts +1 -1
  271. package/dist/tier-migration.d.ts +2 -2
  272. package/dist/tier-routing.d.ts +1 -1
  273. package/dist/{tier-stats-TG6GUZ6N.js → tier-stats-5XF4UBRQ.js} +4 -4
  274. package/dist/tokens.d.ts +17 -2
  275. package/dist/tokens.js +3 -1
  276. package/dist/topics.d.ts +1 -1
  277. package/dist/transcript.d.ts +1 -1
  278. package/dist/transfer/backup.js +2 -2
  279. package/dist/transfer/capsule-export.js +3 -3
  280. package/dist/transfer/capsule-import.js +3 -3
  281. package/dist/transfer/types.d.ts +12 -12
  282. package/dist/trust-score-stage.d.ts +1 -1
  283. package/dist/trust-score.d.ts +1 -1
  284. package/dist/{types-ljkd82rn.d.ts → types-CGgcNWCG.d.ts} +31 -1
  285. package/dist/types.d.ts +1 -1
  286. package/dist/utility-runtime.d.ts +1 -1
  287. package/dist/verified-recall.js +10 -10
  288. package/package.json +2 -2
  289. package/src/access-boundary.test.ts +62 -0
  290. package/src/access-boundary.ts +165 -126
  291. package/src/access-http.test.ts +781 -0
  292. package/src/access-http.ts +334 -108
  293. package/src/access-mcp.test.ts +264 -0
  294. package/src/access-mcp.ts +45 -70
  295. package/src/access-operations-batch.ts +35 -12
  296. package/src/access-surface-catalog.test.ts +22 -14
  297. package/src/access-surface-catalog.ts +6 -3
  298. package/src/access-token-capabilities.test.ts +844 -0
  299. package/src/access-token-capabilities.ts +391 -0
  300. package/src/chat/chat-mcp.test.ts +232 -0
  301. package/src/chat/chat-session.ts +34 -0
  302. package/src/cli-wearables-fuse.test.ts +197 -0
  303. package/src/cli.ts +25 -0
  304. package/src/index.ts +14 -0
  305. package/src/mcp-read-only-tools.ts +61 -0
  306. package/src/storage.ts +16 -0
  307. package/src/tokens.ts +32 -3
  308. package/src/wearables/cli.test.ts +102 -0
  309. package/src/wearables/cli.ts +65 -0
  310. package/src/wearables/config.test.ts +32 -0
  311. package/src/wearables/config.ts +52 -0
  312. package/src/wearables/day-store.test.ts +246 -0
  313. package/src/wearables/day-store.ts +272 -3
  314. package/src/wearables/fusion/cluster.ts +230 -0
  315. package/src/wearables/fusion/fuse.ts +218 -0
  316. package/src/wearables/fusion/fusion.test.ts +2575 -0
  317. package/src/wearables/fusion/index.ts +50 -0
  318. package/src/wearables/fusion/reconcile.ts +831 -0
  319. package/src/wearables/fusion/reconstruct.ts +251 -0
  320. package/src/wearables/fusion/store.ts +480 -0
  321. package/src/wearables/fusion/types.ts +228 -0
  322. package/src/wearables/index.ts +41 -0
  323. package/src/wearables/service.test.ts +1030 -2
  324. package/src/wearables/service.ts +258 -16
  325. package/src/wearables/speakers.test.ts +128 -0
  326. package/src/wearables/speakers.ts +58 -4
  327. package/src/wearables/storage-io.test.ts +146 -0
  328. package/src/wearables/types.ts +31 -0
  329. package/dist/chunk-2FOD2YY3.js.map +0 -1
  330. package/dist/chunk-7QWMTOIF.js.map +0 -1
  331. package/dist/chunk-DR6PEJU3.js.map +0 -1
  332. package/dist/chunk-E2SPGGUI.js.map +0 -1
  333. package/dist/chunk-FZGGZAAU.js.map +0 -1
  334. package/dist/chunk-ILFJ7AVS.js.map +0 -1
  335. package/dist/chunk-M7GGMGMZ.js.map +0 -1
  336. package/dist/chunk-M7XQSUBB.js.map +0 -1
  337. /package/dist/{capsule-crypto-CZJSLEFG.js.map → access-token-capabilities.js.map} +0 -0
  338. /package/dist/{auto-sync-HMHQHUAG.js.map → auto-sync-4A5YBWYO.js.map} +0 -0
  339. /package/dist/{chunk-6ZIETXZ2.js.map → chunk-23JFRB73.js.map} +0 -0
  340. /package/dist/{chunk-IC6QX5TC.js.map → chunk-3XIY7MDQ.js.map} +0 -0
  341. /package/dist/{chunk-LOR6ZM5R.js.map → chunk-4LV23CHK.js.map} +0 -0
  342. /package/dist/{chunk-AER6MT24.js.map → chunk-6SXVCD7W.js.map} +0 -0
  343. /package/dist/{chunk-OHDJ34CC.js.map → chunk-72WG5QKN.js.map} +0 -0
  344. /package/dist/{chunk-CZAZX7JP.js.map → chunk-7MW3CVLD.js.map} +0 -0
  345. /package/dist/{chunk-CXLNZXG5.js.map → chunk-7XGSIUP5.js.map} +0 -0
  346. /package/dist/{chunk-CZAA5N5S.js.map → chunk-AYZJID4S.js.map} +0 -0
  347. /package/dist/{chunk-6BISDEN6.js.map → chunk-BEM4D2QG.js.map} +0 -0
  348. /package/dist/{chunk-ZPOROUTX.js.map → chunk-CYWA2CXR.js.map} +0 -0
  349. /package/dist/{chunk-M5QKGHCR.js.map → chunk-CYWCKFCL.js.map} +0 -0
  350. /package/dist/{chunk-4BFRBP45.js.map → chunk-DEG5ULFJ.js.map} +0 -0
  351. /package/dist/{chunk-JLR3JSTL.js.map → chunk-DS7MM2ES.js.map} +0 -0
  352. /package/dist/{chunk-2BFLDH5F.js.map → chunk-EEIROWEG.js.map} +0 -0
  353. /package/dist/{chunk-X4A62ET7.js.map → chunk-H2DXDQCQ.js.map} +0 -0
  354. /package/dist/{chunk-27FLVMDC.js.map → chunk-HLN7RROI.js.map} +0 -0
  355. /package/dist/{chunk-2U2A5HF4.js.map → chunk-J3XHPFEU.js.map} +0 -0
  356. /package/dist/{chunk-AKUCU7CI.js.map → chunk-JI5AVXYO.js.map} +0 -0
  357. /package/dist/{chunk-KCJ5H6XQ.js.map → chunk-JSNVWNGX.js.map} +0 -0
  358. /package/dist/{chunk-FLVL4L3L.js.map → chunk-KTULX4YO.js.map} +0 -0
  359. /package/dist/{chunk-437S3G37.js.map → chunk-LNQUAJNC.js.map} +0 -0
  360. /package/dist/{chunk-EPGWWCZF.js.map → chunk-LR5DZ56F.js.map} +0 -0
  361. /package/dist/{chunk-YDSWRD33.js.map → chunk-N3JDIRBW.js.map} +0 -0
  362. /package/dist/{chunk-OUMTBFSQ.js.map → chunk-NKCPUHCI.js.map} +0 -0
  363. /package/dist/{chunk-BGTAL46Y.js.map → chunk-PNLFN2PZ.js.map} +0 -0
  364. /package/dist/{chunk-P6SYWE4G.js.map → chunk-PVUJ6WVV.js.map} +0 -0
  365. /package/dist/{chunk-YPEMNNNY.js.map → chunk-RGK27ELN.js.map} +0 -0
  366. /package/dist/{chunk-2QSZNTDO.js.map → chunk-RKNJBZ55.js.map} +0 -0
  367. /package/dist/{chunk-66FLU5BT.js.map → chunk-SIRPLF54.js.map} +0 -0
  368. /package/dist/{chunk-HRCACVHL.js.map → chunk-TLUDFPZL.js.map} +0 -0
  369. /package/dist/{chunk-2MR3MFQB.js.map → chunk-UPSAT4PY.js.map} +0 -0
  370. /package/dist/{chunk-4P4626RY.js.map → chunk-UTRJFDP2.js.map} +0 -0
  371. /package/dist/{chunk-CGS7UKWM.js.map → chunk-VCW74PNH.js.map} +0 -0
  372. /package/dist/{chunk-5GPPACXK.js.map → chunk-VSMRDBFT.js.map} +0 -0
  373. /package/dist/{chunk-NG7YBCJO.js.map → chunk-XCL57M6Q.js.map} +0 -0
  374. /package/dist/{chunk-CLX5VDNY.js.map → chunk-Y4RKAQZ7.js.map} +0 -0
  375. /package/dist/{chunk-DGYCWCQ7.js.map → chunk-Y7UNNAZD.js.map} +0 -0
  376. /package/dist/{chunk-EZ25VE3G.js.map → chunk-YNDLCWXS.js.map} +0 -0
  377. /package/dist/{chunk-XN3TUUX2.js.map → chunk-YQB32INI.js.map} +0 -0
  378. /package/dist/{first-start-migration-DY6YCRC2.js.map → first-start-migration-VBJQL6OI.js.map} +0 -0
  379. /package/dist/{tier-stats-TG6GUZ6N.js.map → tier-stats-5XF4UBRQ.js.map} +0 -0
@@ -4,22 +4,22 @@ import {
4
4
  loadSyncState,
5
5
  syncWearableSource,
6
6
  wearableSourceLabel
7
- } from "./chunk-2U2A5HF4.js";
8
- import {
9
- CompressionGuidelineCoordinator
10
- } from "./chunk-BRDJ2HFP.js";
7
+ } from "./chunk-J3XHPFEU.js";
11
8
  import {
12
9
  MaintenanceScheduler
13
- } from "./chunk-6ZIETXZ2.js";
10
+ } from "./chunk-23JFRB73.js";
14
11
  import {
15
12
  runPeerProfileReasoner
16
13
  } from "./chunk-I74SUMNI.js";
17
14
  import {
18
15
  migrateFromEngram
19
16
  } from "./chunk-7HYPN2GC.js";
17
+ import {
18
+ CompressionGuidelineCoordinator
19
+ } from "./chunk-BRDJ2HFP.js";
20
20
  import {
21
21
  LcmEngine
22
- } from "./chunk-CLX5VDNY.js";
22
+ } from "./chunk-Y4RKAQZ7.js";
23
23
  import {
24
24
  chunkTranscriptEntries
25
25
  } from "./chunk-TECVW3JP.js";
@@ -29,7 +29,7 @@ import {
29
29
  import {
30
30
  CompoundingEngine,
31
31
  defaultTierMigrationCycleBudget
32
- } from "./chunk-CZAA5N5S.js";
32
+ } from "./chunk-AYZJID4S.js";
33
33
  import {
34
34
  SharedContextManager
35
35
  } from "./chunk-UI4FVU6T.js";
@@ -38,6 +38,12 @@ import {
38
38
  applyUtilityRankingRuntimeDelta,
39
39
  loadUtilityRuntimeValues
40
40
  } from "./chunk-LXOM6IQU.js";
41
+ import {
42
+ decideTierTransition
43
+ } from "./chunk-S75M5ZRK.js";
44
+ import {
45
+ TmtBuilder
46
+ } from "./chunk-ECZU5BJH.js";
41
47
  import {
42
48
  extractTopics
43
49
  } from "./chunk-UHGBNIOS.js";
@@ -49,28 +55,32 @@ import {
49
55
  import {
50
56
  renderEpistemicHedge
51
57
  } from "./chunk-YN2UN7N3.js";
58
+ import {
59
+ buildTargetedFactRecallSection,
60
+ shouldRecallTargetedFactEvidence
61
+ } from "./chunk-4SBW47WK.js";
52
62
  import {
53
63
  CODEX_THREAD_KEY_PREFIX
54
64
  } from "./chunk-4EX5WZ4M.js";
55
65
  import {
56
66
  TierMigrationExecutor
57
67
  } from "./chunk-VOUOLGIP.js";
58
- import {
59
- decideTierTransition
60
- } from "./chunk-S75M5ZRK.js";
61
- import {
62
- TmtBuilder
63
- } from "./chunk-ECZU5BJH.js";
64
68
  import {
65
69
  HourlySummarizer
66
70
  } from "./chunk-XZ5I7OZR.js";
67
- import {
68
- buildTargetedFactRecallSection,
69
- shouldRecallTargetedFactEvidence
70
- } from "./chunk-4SBW47WK.js";
71
71
  import {
72
72
  SessionObserverState
73
73
  } from "./chunk-FDPZVY6D.js";
74
+ import {
75
+ applyRuntimeRetrievalPolicy
76
+ } from "./chunk-5IZL4DCV.js";
77
+ import {
78
+ RelevanceStore
79
+ } from "./chunk-2IZAGAJR.js";
80
+ import {
81
+ RerankCache,
82
+ rerankLocalOrNoop
83
+ } from "./chunk-E3VODCC3.js";
74
84
  import {
75
85
  buildResponseGuidanceRecallSection,
76
86
  shouldRecallResponseGuidance
@@ -93,19 +103,9 @@ import {
93
103
  recencyWindowFromPrompt,
94
104
  resolvePromptTagPrefilterAsync
95
105
  } from "./chunk-MGN7VHWQ.js";
96
- import {
97
- applyRuntimeRetrievalPolicy
98
- } from "./chunk-5IZL4DCV.js";
99
106
  import {
100
107
  findUnresolvedEntityRefs
101
108
  } from "./chunk-X7XN6YU4.js";
102
- import {
103
- RelevanceStore
104
- } from "./chunk-2IZAGAJR.js";
105
- import {
106
- RerankCache,
107
- rerankLocalOrNoop
108
- } from "./chunk-E3VODCC3.js";
109
109
  import {
110
110
  reorderRecallResultsWithMmr
111
111
  } from "./chunk-YDBIWGNI.js";
@@ -121,22 +121,16 @@ import {
121
121
  import {
122
122
  applyReasoningTraceBoost
123
123
  } from "./chunk-ZZTOURJI.js";
124
+ import {
125
+ NegativeExampleStore
126
+ } from "./chunk-A3GOMRJG.js";
124
127
  import {
125
128
  applyMemoryWorthFilter,
126
129
  buildMemoryWorthCounterMap
127
130
  } from "./chunk-3GPTTA4J.js";
128
- import {
129
- NegativeExampleStore
130
- } from "./chunk-A3GOMRJG.js";
131
131
  import {
132
132
  evaluateMemoryActionPolicy
133
133
  } from "./chunk-H63EDPFJ.js";
134
- import {
135
- runLiveConnectorsOnce
136
- } from "./chunk-VU3SVYMA.js";
137
- import {
138
- classifyMemoryKind
139
- } from "./chunk-YAZNBMNF.js";
140
134
  import {
141
135
  hasBroadGraphIntent,
142
136
  inferIntentFromText,
@@ -144,6 +138,12 @@ import {
144
138
  isTaskInitiationIntent,
145
139
  planRecallMode
146
140
  } from "./chunk-PD6O7AXF.js";
141
+ import {
142
+ runLiveConnectorsOnce
143
+ } from "./chunk-VU3SVYMA.js";
144
+ import {
145
+ classifyMemoryKind
146
+ } from "./chunk-YAZNBMNF.js";
147
147
  import {
148
148
  recordJudgeTrainingPair
149
149
  } from "./chunk-AXTXN4T6.js";
@@ -198,7 +198,7 @@ import {
198
198
  buildEntityRecallSection,
199
199
  entityRecentTranscriptLookbackHours,
200
200
  readRecentEntityTranscriptEntries
201
- } from "./chunk-ZPOROUTX.js";
201
+ } from "./chunk-CYWA2CXR.js";
202
202
  import {
203
203
  normalizeReplaySessionKey
204
204
  } from "./chunk-2PRQG7PV.js";
@@ -208,14 +208,14 @@ import {
208
208
  import {
209
209
  compareVerifiedEpisodeResults,
210
210
  searchVerifiedEpisodes
211
- } from "./chunk-66FLU5BT.js";
211
+ } from "./chunk-SIRPLF54.js";
212
212
  import {
213
213
  ThreadingManager
214
214
  } from "./chunk-DBRYEIGY.js";
215
215
  import {
216
216
  compareVerifiedSemanticRuleResults,
217
217
  searchVerifiedSemanticRules
218
- } from "./chunk-YPEMNNNY.js";
218
+ } from "./chunk-RGK27ELN.js";
219
219
  import {
220
220
  searchWorkProductLedgerEntries
221
221
  } from "./chunk-ZRWB5D4H.js";
@@ -228,14 +228,14 @@ import {
228
228
  import {
229
229
  runNamespaceMaintenanceFanout,
230
230
  summarizeNamespaceMaintenanceHealth
231
- } from "./chunk-P6SYWE4G.js";
231
+ } from "./chunk-PVUJ6WVV.js";
232
232
  import {
233
233
  NamespaceCatalog,
234
234
  planNamespaceMaintenance
235
- } from "./chunk-LOR6ZM5R.js";
235
+ } from "./chunk-4LV23CHK.js";
236
236
  import {
237
237
  NamespaceStorageRouter
238
- } from "./chunk-BGTAL46Y.js";
238
+ } from "./chunk-PNLFN2PZ.js";
239
239
  import {
240
240
  searchHarmonicRetrieval
241
241
  } from "./chunk-AV5ZEH4M.js";
@@ -243,13 +243,13 @@ import {
243
243
  isAboveImportanceThreshold,
244
244
  scoreImportance
245
245
  } from "./chunk-JXS5PDQ7.js";
246
- import {
247
- recordEvalShadowRecall
248
- } from "./chunk-3PY7VHV7.js";
249
246
  import {
250
247
  EXTRACTION_JUDGE_VERDICT_CATEGORY,
251
248
  recordJudgeVerdict
252
249
  } from "./chunk-SMX5267P.js";
250
+ import {
251
+ recordEvalShadowRecall
252
+ } from "./chunk-3PY7VHV7.js";
253
253
  import {
254
254
  collectNativeKnowledgeChunks,
255
255
  formatNativeKnowledgeSection,
@@ -270,7 +270,10 @@ import {
270
270
  materializeAfterSemanticConsolidation,
271
271
  parseConsolidationResponse,
272
272
  parseOperatorAwareConsolidationResponse
273
- } from "./chunk-EPGWWCZF.js";
273
+ } from "./chunk-LR5DZ56F.js";
274
+ import {
275
+ buildRecallQueryPolicy
276
+ } from "./chunk-LBJBNWS2.js";
274
277
  import {
275
278
  buildBehaviorSignalsForMemory,
276
279
  dedupeBehaviorSignalsByMemoryAndHash
@@ -299,9 +302,6 @@ import {
299
302
  loadCorrectionsFile,
300
303
  saveCorrectionsFile
301
304
  } from "./chunk-NDAH7BJ5.js";
302
- import {
303
- buildRecallQueryPolicy
304
- } from "./chunk-LBJBNWS2.js";
305
305
  import {
306
306
  WearablesInputError,
307
307
  describeErrorForOperator
@@ -319,10 +319,10 @@ import {
319
319
  createCorrectionService,
320
320
  detectPassiveCorrections,
321
321
  qmdCollectionPathParts
322
- } from "./chunk-X4A62ET7.js";
322
+ } from "./chunk-H2DXDQCQ.js";
323
323
  import {
324
324
  importCapsule
325
- } from "./chunk-M5QKGHCR.js";
325
+ } from "./chunk-CYWCKFCL.js";
326
326
  import {
327
327
  isCodingGraphInstalled
328
328
  } from "./chunk-VQ7B2Q6M.js";
@@ -350,11 +350,11 @@ import {
350
350
  } from "./chunk-BAVVI5GP.js";
351
351
  import {
352
352
  NamespaceSearchRouter
353
- } from "./chunk-4BFRBP45.js";
353
+ } from "./chunk-DEG5ULFJ.js";
354
354
  import {
355
355
  createConversationIndexRuntime,
356
356
  createSearchBackend
357
- } from "./chunk-27FLVMDC.js";
357
+ } from "./chunk-HLN7RROI.js";
358
358
  import {
359
359
  NoopSearchBackend
360
360
  } from "./chunk-CYEPCZN5.js";
@@ -378,37 +378,50 @@ import {
378
378
  import {
379
379
  shouldSkipImplicitExtraction
380
380
  } from "./chunk-K5LLP4CY.js";
381
+ import {
382
+ searchCausalTrajectories
383
+ } from "./chunk-7XGSIUP5.js";
381
384
  import {
382
385
  GraphIndex
383
386
  } from "./chunk-OBMR4VIX.js";
384
387
  import {
385
- searchCausalTrajectories
386
- } from "./chunk-CXLNZXG5.js";
388
+ decideLifecycleTransition,
389
+ resolveLifecycleState
390
+ } from "./chunk-TBBDFYXW.js";
387
391
  import {
388
392
  buildChainFollowupGenerator
389
- } from "./chunk-DGYCWCQ7.js";
393
+ } from "./chunk-Y7UNNAZD.js";
390
394
  import {
391
395
  ContentHashIndex,
392
396
  StorageManager,
393
397
  compareEntityTimestamps,
398
+ composeFusionDayMeta,
394
399
  fingerprintEntityStructuredFacts,
400
+ fuseDay,
401
+ hashFusionBody,
395
402
  normalizeAttributePairs,
396
403
  parseEntityFile,
397
- selfDeps
398
- } from "./chunk-M7GGMGMZ.js";
404
+ parseFusionDay,
405
+ reconstructFusionInputs,
406
+ selfDeps,
407
+ serializeFusionDay
408
+ } from "./chunk-SVOHGUMI.js";
399
409
  import {
410
+ bodyIsEscaped,
411
+ decodeTranscriptBody,
412
+ escapeSegmentText,
400
413
  isValidTranscriptDate,
401
414
  loadSpeakerRegistry,
402
415
  parseDayTranscript,
403
416
  saveSpeakerRegistry,
404
417
  speakerRegistryKey
405
- } from "./chunk-M7XQSUBB.js";
418
+ } from "./chunk-B3ABVQ36.js";
406
419
  import {
407
420
  buildRetiredFactTombstoneInputs
408
421
  } from "./chunk-L2B3EE7B.js";
409
422
  import {
410
423
  assertPathInsideRoot
411
- } from "./chunk-5GPPACXK.js";
424
+ } from "./chunk-VSMRDBFT.js";
412
425
  import {
413
426
  applyTemporalSupersession,
414
427
  normalizeSupersessionKey,
@@ -419,14 +432,14 @@ import {
419
432
  isValidAsOf,
420
433
  isValidityExpiredNow
421
434
  } from "./chunk-6CIAGZ6X.js";
422
- import {
423
- stripAttributesSuffix
424
- } from "./chunk-SVOZFLIQ.js";
425
435
  import {
426
436
  attachCitation,
427
437
  hasCitationForTemplate,
428
438
  stripCitationForTemplate
429
439
  } from "./chunk-J6A3CX5N.js";
440
+ import {
441
+ stripAttributesSuffix
442
+ } from "./chunk-SVOZFLIQ.js";
430
443
  import {
431
444
  confidenceTier
432
445
  } from "./chunk-JS2HKKOK.js";
@@ -453,13 +466,13 @@ import {
453
466
  fallbackLlmRuntimeContextFromConfig,
454
467
  gatewayTaskChainOptions
455
468
  } from "./chunk-JIKJPDQJ.js";
456
- import {
457
- CAPSULE_ID_PATTERN
458
- } from "./chunk-WEHSQBFR.js";
459
469
  import {
460
470
  keyring_exports,
461
471
  secureStoreDir
462
472
  } from "./chunk-GWTFLF2P.js";
473
+ import {
474
+ CAPSULE_ID_PATTERN
475
+ } from "./chunk-WEHSQBFR.js";
463
476
  import {
464
477
  buildRetrievedMemoryProvenance
465
478
  } from "./chunk-I4WBNM3M.js";
@@ -533,10 +546,6 @@ import {
533
546
  resolveHandle,
534
547
  stripHandles
535
548
  } from "./chunk-JAKIDQB2.js";
536
- import {
537
- decideLifecycleTransition,
538
- resolveLifecycleState
539
- } from "./chunk-TBBDFYXW.js";
540
549
  import {
541
550
  abortError,
542
551
  isAbortError,
@@ -12825,7 +12834,7 @@ var OrchestratorInitCoordinator = class {
12825
12834
  if (signal.aborted) return;
12826
12835
  if (lifecycleCaps.lifecyclePolicy && resolveQmdCapabilities(this.deps.config).qmdTierMigration) {
12827
12836
  try {
12828
- const { runFirstStartMigration } = await import("./first-start-migration-DY6YCRC2.js");
12837
+ const { runFirstStartMigration } = await import("./first-start-migration-VBJQL6OI.js");
12829
12838
  const result = await runFirstStartMigration({
12830
12839
  storage: this.deps.storage,
12831
12840
  config: this.deps.config,
@@ -12848,7 +12857,7 @@ var OrchestratorInitCoordinator = class {
12848
12857
  if (signal.aborted) return;
12849
12858
  if (!this.deps.wearablesAutoSyncHandle && this.deps.config.wearables.enabled && this.deps.config.wearables.autoSyncEnabled && Object.values(this.deps.config.wearables.sources).some((source) => source.enabled)) {
12850
12859
  try {
12851
- const { startWearablesAutoSync } = await import("./auto-sync-HMHQHUAG.js");
12860
+ const { startWearablesAutoSync } = await import("./auto-sync-4A5YBWYO.js");
12852
12861
  if (signal.aborted) return;
12853
12862
  this.deps.wearablesAutoSyncHandle = startWearablesAutoSync(
12854
12863
  {
@@ -13715,7 +13724,13 @@ Install it alongside Remnic:
13715
13724
  source,
13716
13725
  date,
13717
13726
  meta: parsed?.meta ?? null,
13718
- body: parsed?.body ?? raw,
13727
+ // Decode escaped segment text for display: the stored body is an
13728
+ // internal line-based serialization (newlines/backslashes escaped
13729
+ // so segment text survives the serialize -> reconstruct round
13730
+ // trip); user-facing view surfaces must show the original text.
13731
+ // The fusion reconstruct path reads raw bodies separately and
13732
+ // decodes once during parse, so this never double-decodes (#1849).
13733
+ body: decodeTranscriptBody(parsed?.body ?? raw, bodyIsEscaped(parsed?.meta)),
13719
13734
  overlapsWith: []
13720
13735
  });
13721
13736
  }
@@ -13730,6 +13745,131 @@ Install it alongside Remnic:
13730
13745
  const storage = await this.deps.getStorage();
13731
13746
  return storage.listWearableTranscriptDays(sourceId);
13732
13747
  }
13748
+ // -- cross-source fusion (#1810) -----------------------------------------
13749
+ /**
13750
+ * Fuse all enabled sources' stored transcripts for one day into a
13751
+ * derived `FusedWearableConversation[]` artifact. Deterministic and
13752
+ * idempotent: unchanged inputs and fusion config produce a stable
13753
+ * content hash and the derived file is left untouched on re-run. Requires
13754
+ * `wearables.fusion.enabled`; otherwise it throws. Raw per-source
13755
+ * transcripts are never modified.
13756
+ */
13757
+ async fuseDay(date) {
13758
+ this.assertEnabled();
13759
+ if (!this.deps.config.fusion.enabled) {
13760
+ throw new WearablesInputError(
13761
+ "wearables fusion is not enabled \u2014 set `wearables.fusion.enabled: true` in the plugin config"
13762
+ );
13763
+ }
13764
+ if (!isValidTranscriptDate(date)) {
13765
+ throw new WearablesInputError(`invalid date '${date}' \u2014 expected YYYY-MM-DD`);
13766
+ }
13767
+ const storage = await this.deps.getStorage();
13768
+ const enabled = this.enabledSources();
13769
+ const bodies = [];
13770
+ const sourceTimezones = [];
13771
+ for (const [source] of enabled) {
13772
+ const raw = await storage.readWearableDayTranscript(source, date);
13773
+ if (raw === null) continue;
13774
+ const parsed = parseDayTranscript(raw);
13775
+ bodies.push({
13776
+ source,
13777
+ body: parsed?.body ?? raw,
13778
+ escaped: bodyIsEscaped(parsed?.meta)
13779
+ });
13780
+ sourceTimezones.push(parsed?.meta.timezone ?? "");
13781
+ }
13782
+ const reconstructed = reconstructFusionInputs(date, bodies);
13783
+ const contributing = bodies.map((entry, i) => ({
13784
+ source: entry.source,
13785
+ timezone: sourceTimezones[i] ?? ""
13786
+ })).filter(
13787
+ (entry) => reconstructed.some((input) => input.source === entry.source)
13788
+ );
13789
+ if (contributing.length > 1) {
13790
+ const referenceTz = contributing[0].timezone;
13791
+ const allSameExplicitTz = referenceTz.trim().length > 0 && contributing.every((entry) => entry.timezone === referenceTz);
13792
+ if (!allSameExplicitTz) {
13793
+ const detail = contributing.map((entry) => `${entry.source}=${entry.timezone || "?"}`).join(", ");
13794
+ log.warn(
13795
+ `wearables fusion: skipping ${date} \u2014 sources were rendered under differing timezones (${detail}); reconstructFusionInputs only compares local clocks correctly when every source shares one explicit IANA timezone id`
13796
+ );
13797
+ await storage.fusionArtifactStore().deleteFusedDay(date);
13798
+ return {
13799
+ date,
13800
+ sources: [],
13801
+ conversationCount: 0,
13802
+ contentHash: "",
13803
+ written: false,
13804
+ skipped: { reason: "conflicting-timezones" }
13805
+ };
13806
+ }
13807
+ }
13808
+ const sourceTrust = {};
13809
+ for (const [id, settings] of enabled) {
13810
+ sourceTrust[id] = settings.sourceTrust;
13811
+ }
13812
+ const result = fuseDay(date, reconstructed, {
13813
+ proximityGapMs: this.deps.config.fusion.proximityGapMs,
13814
+ windowToleranceMs: this.deps.config.fusion.windowToleranceMs,
13815
+ sourceTrust
13816
+ });
13817
+ const existingRaw = await storage.fusionArtifactStore().readFusedDay(date);
13818
+ const existing = parseFusionDay(existingRaw ?? "");
13819
+ const parsedCleanly = existing?.parseOk === true;
13820
+ const skipUnchanged = existing !== null && parsedCleanly && existing.meta.contentHash === result.contentHash && existing.meta.bodyHash === hashFusionBody(existing.conversations);
13821
+ const written = !skipUnchanged;
13822
+ if (written) {
13823
+ const meta = composeFusionDayMeta(
13824
+ date,
13825
+ result.conversations,
13826
+ result.sources,
13827
+ result.contentHash,
13828
+ (/* @__PURE__ */ new Date()).toISOString()
13829
+ );
13830
+ await storage.fusionArtifactStore().writeFusedDay(
13831
+ date,
13832
+ serializeFusionDay(meta, result.conversations)
13833
+ );
13834
+ }
13835
+ return {
13836
+ date: result.date,
13837
+ sources: result.sources,
13838
+ conversationCount: result.conversations.length,
13839
+ contentHash: result.contentHash,
13840
+ written
13841
+ };
13842
+ }
13843
+ /**
13844
+ * List fused conversations for a date (the fusion listing surface).
13845
+ * Returns the persisted derived artifact's conversations, or an empty
13846
+ * array when no fused artifact has been written for that day. When a
13847
+ * file EXISTS but its body is corrupt (parseOk:false), throws
13848
+ * WearablesInputError so the caller can distinguish a broken artifact
13849
+ * from a day that was never fused — never silently returns an empty
13850
+ * list that looks identical to "no artifact" (issue #1849).
13851
+ */
13852
+ async fusedConversations(date) {
13853
+ if (!isValidTranscriptDate(date)) {
13854
+ throw new WearablesInputError(`invalid date '${date}' \u2014 expected YYYY-MM-DD`);
13855
+ }
13856
+ const storage = await this.deps.getStorage();
13857
+ const raw = await storage.fusionArtifactStore().readFusedDay(date);
13858
+ if (raw === null) return [];
13859
+ const parsed = parseFusionDay(raw);
13860
+ if (parsed === null) return [];
13861
+ if (!parsed.parseOk) {
13862
+ throw new WearablesInputError(
13863
+ `fused artifact for ${date} is corrupt \u2014 re-run \`wearables fuse ${date}\` to repair`
13864
+ );
13865
+ }
13866
+ return parsed.conversations;
13867
+ }
13868
+ /** List dates with stored fused artifacts, newest first. */
13869
+ async listFusedDays() {
13870
+ const storage = await this.deps.getStorage();
13871
+ return storage.fusionArtifactStore().listFusedDays();
13872
+ }
13733
13873
  /**
13734
13874
  * Search stored transcripts. Uses the indexed backend when available
13735
13875
  * and falls back to a bounded substring scan otherwise — the two
@@ -13763,25 +13903,36 @@ Install it alongside Remnic:
13763
13903
  return true;
13764
13904
  };
13765
13905
  if (this.deps.searchBackend) {
13766
- const hits = await this.deps.searchBackend.search(trimmed, limit * 5);
13767
- if (hits !== null) {
13768
- const results2 = [];
13906
+ const escaped = escapeSegmentText(trimmed);
13907
+ const queries = escaped === trimmed ? [trimmed] : [trimmed, escaped];
13908
+ const seen = /* @__PURE__ */ new Set();
13909
+ const results2 = [];
13910
+ const idxStorage = await this.deps.getStorage();
13911
+ for (const q of queries) {
13912
+ const hits = await this.deps.searchBackend.search(q, limit * 5);
13913
+ if (hits === null) break;
13769
13914
  for (const hit of hits) {
13770
13915
  const located = locateTranscriptPath(hit.path);
13771
13916
  if (!located) continue;
13772
13917
  if (!matchesScope(located.source, located.date)) continue;
13918
+ const dedupeKey = `${located.source}:${located.date}`;
13919
+ if (seen.has(dedupeKey)) continue;
13920
+ seen.add(dedupeKey);
13921
+ const idxRaw = await idxStorage.readWearableDayTranscript(located.source, located.date);
13922
+ const idxMeta = parseDayTranscript(idxRaw ?? "")?.meta ?? null;
13773
13923
  results2.push({
13774
13924
  source: located.source,
13775
13925
  date: located.date,
13776
13926
  score: hit.score,
13777
- snippet: hit.preview,
13927
+ snippet: decodeTranscriptBody(hit.preview, bodyIsEscaped(idxMeta)),
13778
13928
  backend: "indexed"
13779
13929
  });
13780
13930
  if (results2.length >= limit) break;
13781
13931
  }
13782
- if (results2.length > 0) {
13783
- return results2;
13784
- }
13932
+ if (results2.length >= limit) break;
13933
+ }
13934
+ if (results2.length > 0) {
13935
+ return results2;
13785
13936
  }
13786
13937
  }
13787
13938
  const storage = await this.deps.getStorage();
@@ -13792,7 +13943,11 @@ Install it alongside Remnic:
13792
13943
  if (!matchesScope(source, date)) continue;
13793
13944
  const raw = await storage.readWearableDayTranscript(source, date);
13794
13945
  if (raw === null) continue;
13795
- const body = parseDayTranscript(raw)?.body ?? raw;
13946
+ const scanParsed = parseDayTranscript(raw);
13947
+ const body = decodeTranscriptBody(
13948
+ scanParsed?.body ?? raw,
13949
+ bodyIsEscaped(scanParsed?.meta)
13950
+ );
13796
13951
  const lower = body.toLowerCase();
13797
13952
  const index = lower.indexOf(needle);
13798
13953
  if (index === -1) continue;
@@ -22713,4 +22868,4 @@ export {
22713
22868
  blendGraphExpandedRecallScore,
22714
22869
  Orchestrator
22715
22870
  };
22716
- //# sourceMappingURL=chunk-5QZDMSSN.js.map
22871
+ //# sourceMappingURL=chunk-FKCRGLRD.js.map