@remnic/core 9.62.0 → 9.62.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 (512) hide show
  1. package/dist/access-admin-ops-surface.d.ts +11 -11
  2. package/dist/access-admin-ops-surface.js +28 -28
  3. package/dist/access-audit.js +2 -2
  4. package/dist/access-authorization-probe.d.ts +11 -11
  5. package/dist/access-authorization-probe.js +29 -29
  6. package/dist/access-boundary.d.ts +11 -11
  7. package/dist/access-boundary.js +28 -28
  8. package/dist/access-cli.js +93 -91
  9. package/dist/access-cli.js.map +1 -1
  10. package/dist/access-coding-context-resolution.d.ts +1 -1
  11. package/dist/access-extraction-force-flush.d.ts +11 -11
  12. package/dist/access-extraction-force-flush.js +28 -28
  13. package/dist/access-health-types.d.ts +1 -1
  14. package/dist/access-http-lcm-compaction.d.ts +11 -11
  15. package/dist/access-http-lifecycle-flush.d.ts +11 -11
  16. package/dist/access-http-offline-stream.d.ts +11 -11
  17. package/dist/access-http-query.js +28 -28
  18. package/dist/access-http.d.ts +12 -12
  19. package/dist/access-http.js +38 -38
  20. package/dist/access-identity-continuity-surface.d.ts +9 -9
  21. package/dist/access-identity-continuity-surface.js +28 -28
  22. package/dist/access-lcm-surface.d.ts +11 -11
  23. package/dist/access-lcm-surface.js +28 -28
  24. package/dist/access-mcp.d.ts +11 -11
  25. package/dist/access-mcp.js +33 -33
  26. package/dist/access-memory-search-fanout.d.ts +2 -2
  27. package/dist/{access-namespace-preflight-EMvicnrb.d.ts → access-namespace-preflight-yO4LMGFH.d.ts} +1 -1
  28. package/dist/access-namespace-preflight.d.ts +3 -3
  29. package/dist/access-namespace-preflight.js +28 -28
  30. package/dist/access-observe-write-surface.d.ts +11 -11
  31. package/dist/access-observe-write-surface.js +28 -28
  32. package/dist/access-offline-manifest.d.ts +9 -9
  33. package/dist/access-offline-manifest.js +2 -2
  34. package/dist/access-operations-batch.js +29 -29
  35. package/dist/access-operations.d.ts +11 -11
  36. package/dist/access-operations.js +32 -32
  37. package/dist/access-recall-concurrency.d.ts +11 -11
  38. package/dist/access-recall-concurrency.js +28 -28
  39. package/dist/access-recall-response.d.ts +11 -11
  40. package/dist/access-recall-response.js +28 -28
  41. package/dist/access-recall-surface.d.ts +11 -11
  42. package/dist/access-recall-surface.js +28 -28
  43. package/dist/{access-service-BeDYQQ62.d.ts → access-service-M4LgO141.d.ts} +7 -7
  44. package/dist/access-service-helpers.d.ts +11 -11
  45. package/dist/access-service.d.ts +11 -11
  46. package/dist/access-service.js +28 -28
  47. package/dist/access-surface-catalog.d.ts +11 -11
  48. package/dist/access-surface-catalog.js +30 -30
  49. package/dist/access-wearables-meetings-surface.d.ts +3 -3
  50. package/dist/action-confidence.d.ts +1 -1
  51. package/dist/active-memory-bridge.d.ts +1 -1
  52. package/dist/active-memory-bridge.js +2 -2
  53. package/dist/active-recall.d.ts +1 -1
  54. package/dist/active-recall.js +3 -3
  55. package/dist/ambient-provenance.d.ts +1 -1
  56. package/dist/artifact-search.d.ts +1 -1
  57. package/dist/{auto-sync-FMWQQB3J.js → auto-sync-Z52VWMNC.js} +3 -3
  58. package/dist/behavior-learner.d.ts +1 -1
  59. package/dist/behavior-learner.js +2 -2
  60. package/dist/behavior-signals.d.ts +1 -1
  61. package/dist/bootstrap.d.ts +9 -9
  62. package/dist/briefing-window.d.ts +2 -2
  63. package/dist/briefing.d.ts +2 -2
  64. package/dist/briefing.js +13 -12
  65. package/dist/buffer-surprise-report.d.ts +1 -1
  66. package/dist/buffer-turn-helpers.d.ts +1 -1
  67. package/dist/buffer.d.ts +2 -2
  68. package/dist/bulk-import/index.d.ts +3 -3
  69. package/dist/calibration.d.ts +1 -1
  70. package/dist/capabilities.d.ts +1 -1
  71. package/dist/{catalog-B2SxZ6LU.d.ts → catalog-CyYTf_ok.d.ts} +1 -1
  72. package/dist/causal-behavior.d.ts +1 -1
  73. package/dist/causal-behavior.js +3 -3
  74. package/dist/causal-chain.js +3 -3
  75. package/dist/causal-consolidation.d.ts +1 -1
  76. package/dist/causal-consolidation.js +16 -16
  77. package/dist/causal-retrieval.js +3 -3
  78. package/dist/causal-trajectory-graph.d.ts +1 -1
  79. package/dist/causal-trajectory.js +2 -2
  80. package/dist/{chunk-B2QHVLJO.js → chunk-256FBCVX.js} +22 -10
  81. package/dist/chunk-256FBCVX.js.map +1 -0
  82. package/dist/{chunk-QP2IZTUR.js → chunk-2TYIAKU5.js} +2 -2
  83. package/dist/{chunk-HQBVQICL.js → chunk-347ZR6D4.js} +2 -2
  84. package/dist/{chunk-76YNCJ5H.js → chunk-3F3CVVDS.js} +2 -2
  85. package/dist/{chunk-TE4MKFT2.js → chunk-3MA7JVXN.js} +4 -4
  86. package/dist/{chunk-KHQ57QLJ.js → chunk-46WM6JX2.js} +7 -3
  87. package/dist/chunk-46WM6JX2.js.map +1 -0
  88. package/dist/chunk-47DU4SGJ.js +92 -0
  89. package/dist/chunk-47DU4SGJ.js.map +1 -0
  90. package/dist/{chunk-AWRJBAIH.js → chunk-4FFROSFG.js} +37 -14
  91. package/dist/{chunk-AWRJBAIH.js.map → chunk-4FFROSFG.js.map} +1 -1
  92. package/dist/{chunk-N4OYPGZS.js → chunk-4HO3542O.js} +2 -2
  93. package/dist/{chunk-HEEEMJ26.js → chunk-4IZ2IT7D.js} +3 -3
  94. package/dist/{chunk-4XAVQLBR.js → chunk-4Y2RHVCV.js} +2 -2
  95. package/dist/{chunk-33JBK2XP.js → chunk-5F6HMNMZ.js} +2 -2
  96. package/dist/{chunk-5WQMORU5.js → chunk-5PFGMO33.js} +2 -2
  97. package/dist/{chunk-6HEM6HTQ.js → chunk-6GGTATZF.js} +2 -2
  98. package/dist/{chunk-W3Y6FYRK.js → chunk-7BJYTX6Q.js} +2 -2
  99. package/dist/{chunk-2GRLJMKJ.js → chunk-7DRSWPUV.js} +3 -3
  100. package/dist/{chunk-TVVEYCNW.js → chunk-7K5Q6COX.js} +4 -4
  101. package/dist/{chunk-HXXGZ4KV.js → chunk-ALNZEWGN.js} +2 -2
  102. package/dist/{chunk-5WVUO6QT.js → chunk-AR253JBM.js} +1 -1
  103. package/dist/chunk-AR253JBM.js.map +1 -0
  104. package/dist/{chunk-S3B3UIQ3.js → chunk-AYIHDC5S.js} +2 -2
  105. package/dist/{chunk-2RIDW23Y.js → chunk-BBHFAVMP.js} +8 -8
  106. package/dist/{chunk-MJ4UGUR6.js → chunk-BHO6RHE5.js} +3 -3
  107. package/dist/{chunk-URN7XWGC.js → chunk-BP6WMYLP.js} +3 -3
  108. package/dist/{chunk-YUIBXMZY.js → chunk-CALURYWR.js} +284 -249
  109. package/dist/chunk-CALURYWR.js.map +1 -0
  110. package/dist/{chunk-D5HDJWNN.js → chunk-CH627RRV.js} +4 -4
  111. package/dist/{chunk-C3R732UY.js → chunk-CLJ5QS6J.js} +257 -60
  112. package/dist/chunk-CLJ5QS6J.js.map +1 -0
  113. package/dist/{chunk-YLHM5BQQ.js → chunk-DCUMFQYM.js} +171 -8
  114. package/dist/chunk-DCUMFQYM.js.map +1 -0
  115. package/dist/{chunk-ZBJMUXZH.js → chunk-DJ7HMNSL.js} +15 -8
  116. package/dist/chunk-DJ7HMNSL.js.map +1 -0
  117. package/dist/{chunk-XDK6ZFLL.js → chunk-DROAPP6N.js} +3 -3
  118. package/dist/{chunk-MU3TPZOV.js → chunk-DTLF2SLZ.js} +2 -2
  119. package/dist/{chunk-I67HKRBF.js → chunk-EFWHCTYJ.js} +2 -2
  120. package/dist/{chunk-XD4VGLDL.js → chunk-FF6E6HOT.js} +56 -52
  121. package/dist/chunk-FF6E6HOT.js.map +1 -0
  122. package/dist/{chunk-NP7FLVZW.js → chunk-G2FCSILA.js} +2 -2
  123. package/dist/{chunk-3GPBFDXH.js → chunk-H23GIXJC.js} +2 -2
  124. package/dist/{chunk-WT6UL3UA.js → chunk-H7PRHUBD.js} +2 -2
  125. package/dist/{chunk-4JGSG7QN.js → chunk-HSBQJRV2.js} +2 -2
  126. package/dist/{chunk-L33N3BCA.js → chunk-HVKMJAEF.js} +2 -2
  127. package/dist/{chunk-CSOYVTRX.js → chunk-IIPJKCZB.js} +3 -3
  128. package/dist/{chunk-E57E5SCS.js → chunk-IRLH4NM2.js} +3 -3
  129. package/dist/{chunk-H32ANIFP.js → chunk-IZRNVNPV.js} +2 -2
  130. package/dist/{chunk-XBR5BAKW.js → chunk-JCJGYNIS.js} +3 -3
  131. package/dist/{chunk-EIQFIJDM.js → chunk-JDI7G6EA.js} +2 -2
  132. package/dist/{chunk-QWPAQLYV.js → chunk-JFLKSD5V.js} +2 -2
  133. package/dist/{chunk-KQS72GCR.js → chunk-LJOIZPJH.js} +2 -2
  134. package/dist/{chunk-N4EPIKSY.js → chunk-LLGDVG52.js} +3 -3
  135. package/dist/{chunk-7N7DB4L5.js → chunk-LTJTP5YQ.js} +10 -9
  136. package/dist/chunk-LTJTP5YQ.js.map +1 -0
  137. package/dist/{chunk-VOELBUS4.js → chunk-NXH34IPL.js} +2 -2
  138. package/dist/{chunk-XL3TATMJ.js → chunk-OQIRBGUU.js} +21 -12
  139. package/dist/chunk-OQIRBGUU.js.map +1 -0
  140. package/dist/chunk-PJKTFXE2.js +119 -0
  141. package/dist/chunk-PJKTFXE2.js.map +1 -0
  142. package/dist/{chunk-JGW2EUCQ.js → chunk-PMRUMGK6.js} +2 -2
  143. package/dist/{chunk-KAB7TZN3.js → chunk-PSNN25DW.js} +2 -2
  144. package/dist/{chunk-LRGSLV7M.js → chunk-PYHOAXTI.js} +4 -4
  145. package/dist/{chunk-PA5OPZX2.js → chunk-QCI73Z7C.js} +2 -2
  146. package/dist/{chunk-EHMMRZOZ.js → chunk-QICOU4RY.js} +2 -2
  147. package/dist/{chunk-FW73HN33.js → chunk-RFH7U5LT.js} +2 -2
  148. package/dist/{chunk-4SGDYYWV.js → chunk-RPKJHYVE.js} +2 -2
  149. package/dist/{chunk-DSA47WBN.js → chunk-RYST72N5.js} +13 -2
  150. package/dist/chunk-RYST72N5.js.map +1 -0
  151. package/dist/{chunk-L4DLLKPN.js → chunk-SZ4HFZKB.js} +2 -2
  152. package/dist/chunk-T3GIETKV.js +152 -0
  153. package/dist/chunk-T3GIETKV.js.map +1 -0
  154. package/dist/{chunk-MYZ4NA43.js → chunk-TGSMU3F2.js} +3 -3
  155. package/dist/{chunk-CM4SZZBN.js → chunk-TIRJV2LW.js} +2 -2
  156. package/dist/{chunk-EGW4O32Z.js → chunk-UDTME32W.js} +7 -4
  157. package/dist/chunk-UDTME32W.js.map +1 -0
  158. package/dist/{chunk-CIA6ZUBA.js → chunk-WMOJIOIG.js} +2 -2
  159. package/dist/{chunk-W4Q54HM3.js → chunk-WR2YKUIW.js} +2 -2
  160. package/dist/{chunk-VWDTV6SH.js → chunk-X6E7TT3A.js} +2 -2
  161. package/dist/{chunk-D4OCJSLV.js → chunk-YDPAE2RD.js} +2 -2
  162. package/dist/{chunk-G3YBWFUC.js → chunk-YIIC5IDU.js} +35 -18
  163. package/dist/chunk-YIIC5IDU.js.map +1 -0
  164. package/dist/{chunk-QRKYABS6.js → chunk-YSR3DXGC.js} +2 -2
  165. package/dist/{chunk-LBJBNWS2.js → chunk-YTHQHH5U.js} +2 -2
  166. package/dist/{chunk-GN7HO2LA.js → chunk-ZPGHA7EO.js} +12 -12
  167. package/dist/{chunk-VUDALPI5.js → chunk-ZQKXRKMR.js} +19 -5
  168. package/dist/chunk-ZQKXRKMR.js.map +1 -0
  169. package/dist/{chunk-FQSDU634.js → chunk-ZS4JADYY.js} +3 -3
  170. package/dist/{cli-DB_uakTc.d.ts → cli-Bw9z-KqX.d.ts} +5 -5
  171. package/dist/cli.d.ts +13 -13
  172. package/dist/cli.js +62 -62
  173. package/dist/coding/pre-action-gate.d.ts +1 -1
  174. package/dist/coding/pre-action-gate.js +3 -3
  175. package/dist/compounding/engine.d.ts +2 -2
  176. package/dist/compounding/engine.js +13 -12
  177. package/dist/compounding/preference-consolidator.d.ts +1 -1
  178. package/dist/compression-optimizer.d.ts +1 -1
  179. package/dist/config.d.ts +1 -1
  180. package/dist/config.js +3 -3
  181. package/dist/connectors/codex-materialize-runner.d.ts +1 -1
  182. package/dist/connectors/codex-materialize-runner.js +13 -12
  183. package/dist/connectors/codex-materialize.d.ts +1 -1
  184. package/dist/connectors/index.d.ts +1 -1
  185. package/dist/connectors/index.js +13 -12
  186. package/dist/consolidation-provenance-check.d.ts +2 -2
  187. package/dist/consolidation-undo.d.ts +2 -2
  188. package/dist/contradiction/index.d.ts +2 -2
  189. package/dist/converge-config.d.ts +1 -1
  190. package/dist/convergence-refresh.d.ts +2 -2
  191. package/dist/convergence-refresh.js +15 -14
  192. package/dist/conversation-index/backend.d.ts +1 -1
  193. package/dist/conversation-index/chunker.d.ts +1 -1
  194. package/dist/conversation-index/faiss-adapter.d.ts +1 -1
  195. package/dist/conversation-index/indexer.d.ts +1 -1
  196. package/dist/conversation-index/search.d.ts +1 -1
  197. package/dist/corpus-watermark.d.ts +1 -1
  198. package/dist/corpus-watermark.js +15 -14
  199. package/dist/day-summary.d.ts +1 -1
  200. package/dist/delinearize.d.ts +1 -1
  201. package/dist/dependency-propagation-config.d.ts +1 -1
  202. package/dist/{dependency-propagation-delivery-DcOVpK3y.d.ts → dependency-propagation-delivery-BxhvAppj.d.ts} +1 -1
  203. package/dist/direct-answer-wiring.d.ts +1 -1
  204. package/dist/direct-answer-wiring.js +3 -3
  205. package/dist/direct-answer.d.ts +1 -1
  206. package/dist/direct-answer.js +2 -2
  207. package/dist/embedding-fallback.d.ts +1 -1
  208. package/dist/enrichment/index.d.ts +1 -1
  209. package/dist/entity-origin-fields.d.ts +1 -1
  210. package/dist/entity-retrieval.d.ts +2 -2
  211. package/dist/entity-retrieval.js +13 -12
  212. package/dist/entity-schema.d.ts +1 -1
  213. package/dist/episodic-context.d.ts +92 -0
  214. package/dist/episodic-context.js +16 -0
  215. package/dist/episodic-context.js.map +1 -0
  216. package/dist/explicit-capture.d.ts +9 -9
  217. package/dist/external-wiki-access.d.ts +11 -11
  218. package/dist/external-wiki-access.js +29 -29
  219. package/dist/external-wiki-collection-registration.d.ts +1 -1
  220. package/dist/external-wiki-collection.d.ts +1 -1
  221. package/dist/external-wiki-mcp-tools.d.ts +11 -11
  222. package/dist/extraction-error-classification.d.ts +1 -1
  223. package/dist/extraction-faithfulness.d.ts +1 -1
  224. package/dist/extraction-judge-telemetry.d.ts +1 -1
  225. package/dist/extraction-judge-training.d.ts +1 -1
  226. package/dist/extraction-judge.d.ts +1 -1
  227. package/dist/extraction-liveness.d.ts +1 -1
  228. package/dist/extraction-normalization.d.ts +1 -1
  229. package/dist/extraction-normalization.js +2 -2
  230. package/dist/extraction-prompt.d.ts +1 -1
  231. package/dist/extraction-source-grounding-rules.d.ts +1 -1
  232. package/dist/extraction-source-grounding.d.ts +1 -1
  233. package/dist/extraction-source-grounding.js +3 -3
  234. package/dist/extraction.d.ts +1 -1
  235. package/dist/extraction.js +18 -18
  236. package/dist/fallback-llm.d.ts +1 -1
  237. package/dist/{forget-5TWK7CZT.js → forget-SZ2BXDGF.js} +2 -2
  238. package/dist/graph-dashboard-diff.d.ts +1 -1
  239. package/dist/graph-dashboard-key.d.ts +1 -1
  240. package/dist/graph-dashboard-parser.d.ts +1 -1
  241. package/dist/graph-edge-reinforcement.d.ts +1 -1
  242. package/dist/graph-path-reconstruction.d.ts +1 -1
  243. package/dist/graph-path-scoring.d.ts +1 -1
  244. package/dist/graph-snapshot.d.ts +1 -1
  245. package/dist/graph.d.ts +1 -1
  246. package/dist/harmonic-construction.js +2 -2
  247. package/dist/harmonic-retrieval.js +2 -2
  248. package/dist/importance.d.ts +1 -1
  249. package/dist/importers/index.d.ts +1 -1
  250. package/dist/in-flight-reads.d.ts +1 -1
  251. package/dist/index.d.ts +22 -21
  252. package/dist/index.js +118 -103
  253. package/dist/intent.d.ts +1 -1
  254. package/dist/lcm/engine.d.ts +8 -2
  255. package/dist/lcm/engine.js +4 -4
  256. package/dist/lcm/index.d.ts +1 -1
  257. package/dist/lcm/index.js +9 -9
  258. package/dist/lcm/tools.d.ts +1 -1
  259. package/dist/lifecycle.d.ts +1 -1
  260. package/dist/live-connectors-runner.d.ts +1 -1
  261. package/dist/local-llm.d.ts +1 -1
  262. package/dist/local-model-endpoint.d.ts +1 -1
  263. package/dist/maintenance/memory-governance.d.ts +1 -1
  264. package/dist/maintenance/memory-governance.js +13 -12
  265. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -2
  266. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +13 -12
  267. package/dist/maintenance/rebuild-memory-projection.d.ts +2 -2
  268. package/dist/maintenance/rebuild-memory-projection.js +14 -13
  269. package/dist/{maintenance-5c1olVtB.d.ts → maintenance-uJb74j64.d.ts} +3 -3
  270. package/dist/mcp-memory-inspector-app.d.ts +11 -11
  271. package/dist/memory-action-policy.d.ts +1 -1
  272. package/dist/memory-cache.d.ts +1 -1
  273. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  274. package/dist/memory-projection-store.d.ts +1 -1
  275. package/dist/memory-provenance.d.ts +1 -1
  276. package/dist/memory-snapshot.d.ts +1 -1
  277. package/dist/memory-worth-outcomes.d.ts +2 -2
  278. package/dist/models-json.d.ts +1 -1
  279. package/dist/namespaces/migrate.d.ts +3 -3
  280. package/dist/namespaces/migrate.js +14 -13
  281. package/dist/namespaces/principal.d.ts +1 -1
  282. package/dist/namespaces/search.d.ts +1 -1
  283. package/dist/namespaces/search.js +6 -5
  284. package/dist/namespaces/storage.d.ts +3 -3
  285. package/dist/namespaces/storage.js +13 -12
  286. package/dist/native-knowledge.d.ts +1 -1
  287. package/dist/offline-sync-impression-drain.d.ts +1 -1
  288. package/dist/operator-doctor-corpus.d.ts +1 -1
  289. package/dist/operator-doctor-corpus.js +16 -15
  290. package/dist/operator-doctor-replica.d.ts +1 -1
  291. package/dist/operator-toolkit.d.ts +3 -3
  292. package/dist/operator-toolkit.js +21 -20
  293. package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
  294. package/dist/orchestration/maintenance.d.ts +4 -4
  295. package/dist/orchestration/maintenance.js +18 -17
  296. package/dist/{orchestrator-HPuY6I4i.d.ts → orchestrator-CFi-5JSR.d.ts} +23 -8
  297. package/dist/orchestrator.d.ts +9 -9
  298. package/dist/orchestrator.js +93 -91
  299. package/dist/patterns-cli.d.ts +1 -1
  300. package/dist/{pipeline-CvVe1Q2_.d.ts → pipeline-BdF3ferY.d.ts} +1 -1
  301. package/dist/policy-runtime.d.ts +1 -1
  302. package/dist/policy-runtime.js +3 -3
  303. package/dist/proactive-contention.d.ts +1 -1
  304. package/dist/provenance.d.ts +1 -1
  305. package/dist/provenance.js +2 -2
  306. package/dist/{public-http-D0JKFkyf.d.ts → public-http-DK-QwaBu.d.ts} +1 -1
  307. package/dist/{qmd-Bd0Tp76_.d.ts → qmd-D_62bYNl.d.ts} +1 -1
  308. package/dist/qmd-preflight.d.ts +2 -2
  309. package/dist/qmd-recall-cache.d.ts +1 -1
  310. package/dist/qmd.d.ts +2 -2
  311. package/dist/recall-concurrency-config.d.ts +1 -1
  312. package/dist/recall-disclosure-escalation.d.ts +1 -1
  313. package/dist/recall-explain-renderer.d.ts +1 -1
  314. package/dist/recall-explain-renderer.js +3 -3
  315. package/dist/recall-memory-map.d.ts +1 -1
  316. package/dist/recall-planner-llm.d.ts +1 -1
  317. package/dist/recall-query-policy.js +2 -2
  318. package/dist/recall-state.d.ts +1 -1
  319. package/dist/recall-tag-filter.d.ts +1 -1
  320. package/dist/recall-timings.d.ts +1 -1
  321. package/dist/recall-tokenization.d.ts +3 -1
  322. package/dist/recall-tokenization.js +5 -1
  323. package/dist/recall-xray-cli.d.ts +1 -1
  324. package/dist/recall-xray-cli.js +4 -4
  325. package/dist/recall-xray-renderer.d.ts +1 -1
  326. package/dist/recall-xray-renderer.js +3 -3
  327. package/dist/recall-xray.d.ts +1 -1
  328. package/dist/recall-xray.js +2 -2
  329. package/dist/reconcile/cursor.d.ts +1 -1
  330. package/dist/reconcile/manifest.d.ts +10 -1
  331. package/dist/reconcile/manifest.js +1 -1
  332. package/dist/reconcile/plan.d.ts +1 -1
  333. package/dist/replay/normalizers/chatgpt.d.ts +1 -1
  334. package/dist/replay/normalizers/claude.d.ts +1 -1
  335. package/dist/replay/normalizers/openclaw.d.ts +1 -1
  336. package/dist/replay/normalizers/shared.d.ts +1 -1
  337. package/dist/replay/runner.d.ts +1 -1
  338. package/dist/replay/types.d.ts +1 -1
  339. package/dist/replica-divergence.d.ts +1 -1
  340. package/dist/replica-peers-config.d.ts +1 -1
  341. package/dist/resolve-auth-token.d.ts +1 -1
  342. package/dist/resume-bundles.js +6 -6
  343. package/dist/retrieval-agents.d.ts +2 -2
  344. package/dist/retrieval-tiers.d.ts +1 -1
  345. package/dist/routing/engine.d.ts +1 -1
  346. package/dist/routing/store.d.ts +1 -1
  347. package/dist/salvage-envelope.d.ts +1 -1
  348. package/dist/{scope-profiles-ClLtm9gK.d.ts → scope-profiles-CeMv7pP0.d.ts} +1 -1
  349. package/dist/search/embed-helper.d.ts +1 -1
  350. package/dist/search/factory.d.ts +1 -1
  351. package/dist/search/factory.js +5 -4
  352. package/dist/search/index.d.ts +1 -1
  353. package/dist/search/index.js +9 -8
  354. package/dist/search/lancedb-backend.d.ts +14 -1
  355. package/dist/search/lancedb-backend.js +1 -1
  356. package/dist/search/meilisearch-backend.d.ts +1 -1
  357. package/dist/search/noop-backend.d.ts +1 -1
  358. package/dist/search/orama-backend.d.ts +22 -1
  359. package/dist/search/orama-backend.js +2 -1
  360. package/dist/search/port.d.ts +1 -1
  361. package/dist/search/remote-backend.d.ts +1 -1
  362. package/dist/{semantic-consolidation-B1EkeEDj.d.ts → semantic-consolidation-B-85brYj.d.ts} +1 -1
  363. package/dist/semantic-consolidation.d.ts +2 -2
  364. package/dist/semantic-consolidation.js +14 -14
  365. package/dist/semantic-rule-promotion.js +13 -12
  366. package/dist/semantic-rule-verifier.d.ts +1 -1
  367. package/dist/semantic-rule-verifier.js +13 -13
  368. package/dist/{service-Cf3ANQj9.d.ts → service-CoO0HA2E.d.ts} +2 -2
  369. package/dist/session-observer-bands.d.ts +1 -1
  370. package/dist/session-observer-state.d.ts +1 -1
  371. package/dist/shared-context/manager.d.ts +1 -1
  372. package/dist/signal.d.ts +1 -1
  373. package/dist/source-agent-qualifier.d.ts +1 -1
  374. package/dist/source-agent-qualifier.js +15 -14
  375. package/dist/{storage-DS2O_6Qt.d.ts → storage-BVAVitkO.d.ts} +1 -1
  376. package/dist/storage.d.ts +2 -2
  377. package/dist/storage.js +12 -11
  378. package/dist/summarizer.d.ts +1 -1
  379. package/dist/summary-snapshot.d.ts +1 -1
  380. package/dist/support-passport/index.d.ts +14 -14
  381. package/dist/support-passport/index.js +31 -31
  382. package/dist/temporal-supersession.d.ts +2 -2
  383. package/dist/temporal-timeline-recall.d.ts +1 -1
  384. package/dist/temporal-validity.d.ts +1 -1
  385. package/dist/threading.d.ts +1 -1
  386. package/dist/tier-migration.d.ts +2 -2
  387. package/dist/tier-routing.d.ts +1 -1
  388. package/dist/topics.d.ts +1 -1
  389. package/dist/transcript.d.ts +1 -1
  390. package/dist/transfer/import-sqlite.js +2 -2
  391. package/dist/trust-score-stage.d.ts +1 -1
  392. package/dist/trust-score.d.ts +1 -1
  393. package/dist/trust-zones.js +2 -2
  394. package/dist/{types-BOANGhCJ.d.ts → types-DWHOxlZP.d.ts} +3 -0
  395. package/dist/types.d.ts +1 -1
  396. package/dist/types.js +1 -1
  397. package/dist/user-message-cleaning.d.ts +23 -0
  398. package/dist/user-message-cleaning.js +10 -0
  399. package/dist/user-message-cleaning.js.map +1 -0
  400. package/dist/utility-runtime.d.ts +1 -1
  401. package/dist/verified-recall.js +13 -13
  402. package/dist/whitespace.d.ts +26 -1
  403. package/dist/whitespace.js +11 -3
  404. package/dist/work-product-ledger.js +2 -2
  405. package/dist/write-envelope.d.ts +1 -1
  406. package/package.json +12 -2
  407. package/src/access-service-offline-file-content.test.ts +1 -0
  408. package/src/cli.ts +14 -13
  409. package/src/config.ts +11 -0
  410. package/src/entity-retrieval.ts +4 -7
  411. package/src/episodic-context-recall.integration.test.ts +169 -0
  412. package/src/episodic-context.test.ts +266 -0
  413. package/src/episodic-context.ts +274 -0
  414. package/src/harmonic-construction.test.ts +187 -2
  415. package/src/harmonic-retrieval.ts +54 -32
  416. package/src/index.ts +3 -4
  417. package/src/lcm/engine.ts +18 -1
  418. package/src/lifecycle/tombstones.test.ts +134 -0
  419. package/src/lifecycle/tombstones.ts +29 -2
  420. package/src/orchestration/episodic-context-section.ts +255 -0
  421. package/src/orchestration/recall-internal-deps.ts +2 -0
  422. package/src/orchestration/recall-internal.ts +40 -25
  423. package/src/orchestration/recall-result-formatter.ts +37 -0
  424. package/src/orchestration/recall-section-coordinator.ts +20 -14
  425. package/src/recall-tokenization.ts +14 -8
  426. package/src/reconcile/manifest.test.ts +133 -4
  427. package/src/reconcile/manifest.ts +43 -7
  428. package/src/search/factory.ts +1 -0
  429. package/src/search/lancedb-backend.ts +24 -16
  430. package/src/search/orama-backend.test.ts +208 -1
  431. package/src/search/orama-backend.ts +133 -18
  432. package/src/search/orama-cjk-tokenizer.test.ts +108 -0
  433. package/src/search/orama-cjk-tokenizer.ts +143 -0
  434. package/src/storage/tombstone-migration-sources.test.ts +116 -0
  435. package/src/storage/tombstone-migration-sources.ts +90 -0
  436. package/src/storage.ts +13 -34
  437. package/src/types.ts +3 -3
  438. package/src/user-message-cleaning.ts +139 -0
  439. package/src/whitespace.test.ts +178 -0
  440. package/src/whitespace.ts +119 -0
  441. package/dist/chunk-5WVUO6QT.js.map +0 -1
  442. package/dist/chunk-6MKAMLQL.js +0 -16
  443. package/dist/chunk-6MKAMLQL.js.map +0 -1
  444. package/dist/chunk-7N7DB4L5.js.map +0 -1
  445. package/dist/chunk-B2QHVLJO.js.map +0 -1
  446. package/dist/chunk-C3R732UY.js.map +0 -1
  447. package/dist/chunk-DSA47WBN.js.map +0 -1
  448. package/dist/chunk-EGW4O32Z.js.map +0 -1
  449. package/dist/chunk-G3YBWFUC.js.map +0 -1
  450. package/dist/chunk-KHQ57QLJ.js.map +0 -1
  451. package/dist/chunk-VUDALPI5.js.map +0 -1
  452. package/dist/chunk-XD4VGLDL.js.map +0 -1
  453. package/dist/chunk-XL3TATMJ.js.map +0 -1
  454. package/dist/chunk-YLHM5BQQ.js.map +0 -1
  455. package/dist/chunk-YUIBXMZY.js.map +0 -1
  456. package/dist/chunk-ZBJMUXZH.js.map +0 -1
  457. /package/dist/{auto-sync-FMWQQB3J.js.map → auto-sync-Z52VWMNC.js.map} +0 -0
  458. /package/dist/{chunk-QP2IZTUR.js.map → chunk-2TYIAKU5.js.map} +0 -0
  459. /package/dist/{chunk-HQBVQICL.js.map → chunk-347ZR6D4.js.map} +0 -0
  460. /package/dist/{chunk-76YNCJ5H.js.map → chunk-3F3CVVDS.js.map} +0 -0
  461. /package/dist/{chunk-TE4MKFT2.js.map → chunk-3MA7JVXN.js.map} +0 -0
  462. /package/dist/{chunk-N4OYPGZS.js.map → chunk-4HO3542O.js.map} +0 -0
  463. /package/dist/{chunk-HEEEMJ26.js.map → chunk-4IZ2IT7D.js.map} +0 -0
  464. /package/dist/{chunk-4XAVQLBR.js.map → chunk-4Y2RHVCV.js.map} +0 -0
  465. /package/dist/{chunk-33JBK2XP.js.map → chunk-5F6HMNMZ.js.map} +0 -0
  466. /package/dist/{chunk-5WQMORU5.js.map → chunk-5PFGMO33.js.map} +0 -0
  467. /package/dist/{chunk-6HEM6HTQ.js.map → chunk-6GGTATZF.js.map} +0 -0
  468. /package/dist/{chunk-W3Y6FYRK.js.map → chunk-7BJYTX6Q.js.map} +0 -0
  469. /package/dist/{chunk-2GRLJMKJ.js.map → chunk-7DRSWPUV.js.map} +0 -0
  470. /package/dist/{chunk-TVVEYCNW.js.map → chunk-7K5Q6COX.js.map} +0 -0
  471. /package/dist/{chunk-HXXGZ4KV.js.map → chunk-ALNZEWGN.js.map} +0 -0
  472. /package/dist/{chunk-S3B3UIQ3.js.map → chunk-AYIHDC5S.js.map} +0 -0
  473. /package/dist/{chunk-2RIDW23Y.js.map → chunk-BBHFAVMP.js.map} +0 -0
  474. /package/dist/{chunk-MJ4UGUR6.js.map → chunk-BHO6RHE5.js.map} +0 -0
  475. /package/dist/{chunk-URN7XWGC.js.map → chunk-BP6WMYLP.js.map} +0 -0
  476. /package/dist/{chunk-D5HDJWNN.js.map → chunk-CH627RRV.js.map} +0 -0
  477. /package/dist/{chunk-XDK6ZFLL.js.map → chunk-DROAPP6N.js.map} +0 -0
  478. /package/dist/{chunk-MU3TPZOV.js.map → chunk-DTLF2SLZ.js.map} +0 -0
  479. /package/dist/{chunk-I67HKRBF.js.map → chunk-EFWHCTYJ.js.map} +0 -0
  480. /package/dist/{chunk-NP7FLVZW.js.map → chunk-G2FCSILA.js.map} +0 -0
  481. /package/dist/{chunk-3GPBFDXH.js.map → chunk-H23GIXJC.js.map} +0 -0
  482. /package/dist/{chunk-WT6UL3UA.js.map → chunk-H7PRHUBD.js.map} +0 -0
  483. /package/dist/{chunk-4JGSG7QN.js.map → chunk-HSBQJRV2.js.map} +0 -0
  484. /package/dist/{chunk-L33N3BCA.js.map → chunk-HVKMJAEF.js.map} +0 -0
  485. /package/dist/{chunk-CSOYVTRX.js.map → chunk-IIPJKCZB.js.map} +0 -0
  486. /package/dist/{chunk-E57E5SCS.js.map → chunk-IRLH4NM2.js.map} +0 -0
  487. /package/dist/{chunk-H32ANIFP.js.map → chunk-IZRNVNPV.js.map} +0 -0
  488. /package/dist/{chunk-XBR5BAKW.js.map → chunk-JCJGYNIS.js.map} +0 -0
  489. /package/dist/{chunk-EIQFIJDM.js.map → chunk-JDI7G6EA.js.map} +0 -0
  490. /package/dist/{chunk-QWPAQLYV.js.map → chunk-JFLKSD5V.js.map} +0 -0
  491. /package/dist/{chunk-KQS72GCR.js.map → chunk-LJOIZPJH.js.map} +0 -0
  492. /package/dist/{chunk-N4EPIKSY.js.map → chunk-LLGDVG52.js.map} +0 -0
  493. /package/dist/{chunk-VOELBUS4.js.map → chunk-NXH34IPL.js.map} +0 -0
  494. /package/dist/{chunk-JGW2EUCQ.js.map → chunk-PMRUMGK6.js.map} +0 -0
  495. /package/dist/{chunk-KAB7TZN3.js.map → chunk-PSNN25DW.js.map} +0 -0
  496. /package/dist/{chunk-LRGSLV7M.js.map → chunk-PYHOAXTI.js.map} +0 -0
  497. /package/dist/{chunk-PA5OPZX2.js.map → chunk-QCI73Z7C.js.map} +0 -0
  498. /package/dist/{chunk-EHMMRZOZ.js.map → chunk-QICOU4RY.js.map} +0 -0
  499. /package/dist/{chunk-FW73HN33.js.map → chunk-RFH7U5LT.js.map} +0 -0
  500. /package/dist/{chunk-4SGDYYWV.js.map → chunk-RPKJHYVE.js.map} +0 -0
  501. /package/dist/{chunk-L4DLLKPN.js.map → chunk-SZ4HFZKB.js.map} +0 -0
  502. /package/dist/{chunk-MYZ4NA43.js.map → chunk-TGSMU3F2.js.map} +0 -0
  503. /package/dist/{chunk-CM4SZZBN.js.map → chunk-TIRJV2LW.js.map} +0 -0
  504. /package/dist/{chunk-CIA6ZUBA.js.map → chunk-WMOJIOIG.js.map} +0 -0
  505. /package/dist/{chunk-W4Q54HM3.js.map → chunk-WR2YKUIW.js.map} +0 -0
  506. /package/dist/{chunk-VWDTV6SH.js.map → chunk-X6E7TT3A.js.map} +0 -0
  507. /package/dist/{chunk-D4OCJSLV.js.map → chunk-YDPAE2RD.js.map} +0 -0
  508. /package/dist/{chunk-QRKYABS6.js.map → chunk-YSR3DXGC.js.map} +0 -0
  509. /package/dist/{chunk-LBJBNWS2.js.map → chunk-YTHQHH5U.js.map} +0 -0
  510. /package/dist/{chunk-GN7HO2LA.js.map → chunk-ZPGHA7EO.js.map} +0 -0
  511. /package/dist/{chunk-FQSDU634.js.map → chunk-ZS4JADYY.js.map} +0 -0
  512. /package/dist/{forget-5TWK7CZT.js.map → forget-SZ2BXDGF.js.map} +0 -0
package/dist/topics.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { M as MemoryFile, aD as TopicScore } from './types-BOANGhCJ.js';
1
+ import { M as MemoryFile, aD as TopicScore } from './types-DWHOxlZP.js';
2
2
  import './message-parts/index.js';
3
3
  import './bounded-jsonl-state.js';
4
4
  import './operator-doctor-types.js';
@@ -1,4 +1,4 @@
1
- import { P as PluginConfig, T as TranscriptEntry, m as Checkpoint } from './types-BOANGhCJ.js';
1
+ import { P as PluginConfig, T as TranscriptEntry, m as Checkpoint } from './types-DWHOxlZP.js';
2
2
  import { SessionIntegrityReport } from './session-integrity.js';
3
3
  import './message-parts/index.js';
4
4
  import './bounded-jsonl-state.js';
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  importSqlite
3
- } from "../chunk-LRGSLV7M.js";
4
- import "../chunk-G4IAEX6D.js";
3
+ } from "../chunk-PYHOAXTI.js";
5
4
  import "../chunk-Z734BLO3.js";
5
+ import "../chunk-G4IAEX6D.js";
6
6
  import "../chunk-RL6NEVXT.js";
7
7
  import "../chunk-GCGJW34D.js";
8
8
  import "../chunk-PZ5AY32C.js";
@@ -1,4 +1,4 @@
1
- import { F as FaithfulnessFrontmatter, K as ProvenanceSource, N as TrustWeights, Q as QmdSearchResult } from './types-BOANGhCJ.js';
1
+ import { F as FaithfulnessFrontmatter, K as ProvenanceSource, N as TrustWeights, Q as QmdSearchResult } from './types-DWHOxlZP.js';
2
2
  import { TrustScoreResult, TrustSignals, TrustBand, TrustScoreComponent } from './trust-score.js';
3
3
  import './message-parts/index.js';
4
4
  import './bounded-jsonl-state.js';
@@ -1,4 +1,4 @@
1
- import { N as TrustWeights } from './types-BOANGhCJ.js';
1
+ import { N as TrustWeights } from './types-DWHOxlZP.js';
2
2
  import './message-parts/index.js';
3
3
  import './bounded-jsonl-state.js';
4
4
  import './operator-doctor-types.js';
@@ -11,8 +11,8 @@ import {
11
11
  seedTrustZoneDemoDataset,
12
12
  summarizeTrustZonePromotionReadiness,
13
13
  validateTrustZoneRecord
14
- } from "./chunk-KQS72GCR.js";
15
- import "./chunk-ZBJMUXZH.js";
14
+ } from "./chunk-LJOIZPJH.js";
15
+ import "./chunk-DJ7HMNSL.js";
16
16
  import "./chunk-A2IYSXDQ.js";
17
17
  import "./chunk-P77QX3ID.js";
18
18
  import "./chunk-PZ5AY32C.js";
@@ -2549,6 +2549,7 @@ interface PluginConfig extends BoundedJsonlStateConfig, SecurityConfig {
2549
2549
  harmonicRetrievalEnabled: boolean;
2550
2550
  abstractionAnchorsEnabled: boolean;
2551
2551
  abstractionNodeStoreDir: string;
2552
+ episodicContextEnabled: boolean;
2552
2553
  verifiedRecallEnabled: boolean;
2553
2554
  semanticRulePromotionEnabled: boolean;
2554
2555
  semanticRuleVerificationEnabled: boolean;
@@ -2988,6 +2989,8 @@ interface PluginConfig extends BoundedJsonlStateConfig, SecurityConfig {
2988
2989
  oramaEnabled: boolean;
2989
2990
  oramaDbPath?: string;
2990
2991
  oramaEmbeddingDimension?: number;
2992
+ /** Segment space-free scripts (CJK/Thai) in the Orama lexical index (issue #2187). Default `true`. */
2993
+ oramaCjkSegmentation?: boolean;
2991
2994
  qmdDaemonEnabled: boolean;
2992
2995
  qmdDaemonUrl: string;
2993
2996
  qmdDaemonRecheckIntervalMs: number;
package/dist/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { bb as AccessTrackingEntry, a0 as ActiveRecallChatType, a4 as ActiveRecallModelFallbackPolicy, a2 as ActiveRecallPromptStyle, a1 as ActiveRecallQueryMode, a3 as ActiveRecallThinking, v as AgentAccessAuthToken, cu as AgentAccessHttpConfig, cv as AgentDefaultsConfig, cw as AgentPersona, A as AgentPersonaModelConfig, cx as BehaviorLoopAdjustment, s as BehaviorLoopPolicyState, cy as BehaviorSignalDirection, a6 as BehaviorSignalEvent, cz as BehaviorSignalType, bf as BootstrapOptions, bg as BootstrapResult, g as BriefingActiveThread, cA as BriefingCalendarSourceError, bB as BriefingConfig, d as BriefingFocus, c as BriefingFollowup, bC as BriefingOpenCommitment, i as BriefingRecentEntity, h as BriefingResult, B as BriefingSections, bD as BriefingWindow, cB as BufferEntryState, b7 as BufferState, a7 as BufferSurpriseEvent, j as BufferTurn, f as CalendarEvent, e as CalendarSource, x as CaptureMode, cC as ChatConfig, m as Checkpoint, cD as CodexCliReasoningEffort, cE as CodexCompactionFlushMode, bG as CodexCompatConfig, cF as CodexConnectorConfig, C as CodingContext, cG as CodingGraphLspConfig, bo as CodingKnowledgeConfig, bi as CodingModeConfig, cH as CompressionGuidelineActivationState, ad as CompressionGuidelineOptimizerActionSummary, ac as CompressionGuidelineOptimizerEventCounts, ae as CompressionGuidelineOptimizerRuleUpdate, cI as CompressionGuidelineOptimizerSourceWindow, ah as CompressionGuidelineOptimizerState, cJ as ConfidenceTier, cK as ConsolidationAction, cL as ConsolidationItem, bh as ConsolidationObservation, aE as ConsolidationResult, ai as ConvergeConfig, $ as ConvergeConflictPolicy, O as ConversationThread, cM as CronConversationRecallMode, cN as CronRecallMode, bH as DEFAULT_RECALL_DISCLOSURE, aF as DaySummaryResult, ak as DependencyPropagationConfig, cO as DreamingConfig, cP as DreamingNarrativePromptStyle, cQ as DreamsDeepSleepConfig, cR as DreamsLightSleepConfig, D as DreamsPhase, cS as DreamsPhaseStatus, cT as DreamsPhasesConfig, cU as DreamsRemConfig, a as DreamsRunResult, bd as DreamsStatusResult, cV as EngramTraceEvent, ba as EntityActivityEntry, E as EntityFile, aj as EntityMention, b9 as EntityRelationship, am as EntitySchemaDefinition, an as EntitySchemaSectionDefinition, al as EntityStructuredSection, b5 as EntityTimelineEntry, ao as ExtractedFact, cW as ExtractedProcedureStep, cX as ExtractedQuestion, cY as ExtractedReasoningTrace, cZ as ExtractedReasoningTraceStep, c_ as ExtractedRelationship, Z as ExtractionFailureClass, c$ as ExtractionPassSource, a5 as ExtractionResult, F as FaithfulnessFrontmatter, b8 as FileHygieneConfig, G as GatewayConfig, d0 as GitHubLiveConnectorConfig, d1 as GmailLiveConnectorConfig, d2 as GoogleDriveLiveConnectorConfig, d3 as HeartbeatConfig, d4 as HeartbeatDetectionMode, H as HourlySummary, I as IdentityInjectionMode, _ as ImportanceLevel, aq as ImportanceScore, U as LifecycleState, L as LiveConnectorsConfig, d5 as LlmTraceCallback, d6 as LlmTraceEvent, as as MemoryActionEligibilityContext, bR as MemoryActionEligibilitySource, ag as MemoryActionEvent, d7 as MemoryActionOutcome, d8 as MemoryActionPolicyDecision, at as MemoryActionPolicyResult, d9 as MemoryActionStatus, af as MemoryActionType, w as MemoryCategory, M as MemoryFile, l as MemoryFrontmatter, ar as MemoryIntent, J as MemoryLifecycleEvent, au as MemoryLifecycleEventType, av as MemoryLifecycleStateSummary, b6 as MemoryLink, da as MemoryLinkType, bS as MemoryObservation, db as MemoryOsPresetName, z as MemoryProjectionCurrentState, bT as MemoryScope, y as MemoryStatus, bc as MemorySummary, az as MetaState, dc as ModelApi, dd as ModelDefinitionConfig, de as ModelProviderAuthMode, aw as ModelProviderConfig, df as NamespacePolicy, ax as NativeKnowledgeConfig, dg as NativeKnowledgeFolderRuleConfig, dh as NativeKnowledgeObsidianVaultConfig, di as NativeKnowledgeOpenClawWorkspaceConfig, dj as NotionLiveConnectorConfig, P as PluginConfig, W as PolicyClass, dk as PrincipalFromSessionKeyMode, dl as PrincipalRule, dm as ProceduralConfig, ap as ProvenanceConfig, K as ProvenanceSource, aG as QmdSearchExplain, Q as QmdSearchResult, dn as QuestionEntry, bU as RECALL_DISCLOSURE_LEVELS, dp as ReasoningEffort, n as RecallDisclosure, dq as RecallPipelineConfig, R as RecallPlanMode, be as RecallSectionConfig, b as RecallTierExplain, dr as RecallTraceEvent, ds as RelevanceFeedback, aB as RetrievalTier, dt as SPECULATIVE_TTL_DAYS, du as ScopeProfileAutoPromoteConfig, p as ScopeProfileConfig, q as ScopeProfileLayerId, r as ScopeProfilePromotionTarget, dv as ScopeProfileTeamProjectConfig, dw as ScopeTeamConfig, dx as ScoredEntity, u as SecretRef, dy as SemanticChunkingConfigShape, S as SessionObserverBandConfig, dz as SignalLevel, aC as SignalScanResult, dA as SlotBehaviorConfig, dB as SlotMismatchMode, o as SourceConnectorProvenance, c3 as SupportPassportConfig, aD as TopicScore, T as TranscriptEntry, dC as TriggerMode, N as TrustWeights, V as VerificationState, dD as confidenceTier, c0 as isRecallDisclosure } from './types-BOANGhCJ.js';
1
+ export { bb as AccessTrackingEntry, a0 as ActiveRecallChatType, a4 as ActiveRecallModelFallbackPolicy, a2 as ActiveRecallPromptStyle, a1 as ActiveRecallQueryMode, a3 as ActiveRecallThinking, v as AgentAccessAuthToken, cu as AgentAccessHttpConfig, cv as AgentDefaultsConfig, cw as AgentPersona, A as AgentPersonaModelConfig, cx as BehaviorLoopAdjustment, s as BehaviorLoopPolicyState, cy as BehaviorSignalDirection, a6 as BehaviorSignalEvent, cz as BehaviorSignalType, bf as BootstrapOptions, bg as BootstrapResult, g as BriefingActiveThread, cA as BriefingCalendarSourceError, bB as BriefingConfig, d as BriefingFocus, c as BriefingFollowup, bC as BriefingOpenCommitment, i as BriefingRecentEntity, h as BriefingResult, B as BriefingSections, bD as BriefingWindow, cB as BufferEntryState, b7 as BufferState, a7 as BufferSurpriseEvent, j as BufferTurn, f as CalendarEvent, e as CalendarSource, x as CaptureMode, cC as ChatConfig, m as Checkpoint, cD as CodexCliReasoningEffort, cE as CodexCompactionFlushMode, bG as CodexCompatConfig, cF as CodexConnectorConfig, C as CodingContext, cG as CodingGraphLspConfig, bo as CodingKnowledgeConfig, bi as CodingModeConfig, cH as CompressionGuidelineActivationState, ad as CompressionGuidelineOptimizerActionSummary, ac as CompressionGuidelineOptimizerEventCounts, ae as CompressionGuidelineOptimizerRuleUpdate, cI as CompressionGuidelineOptimizerSourceWindow, ah as CompressionGuidelineOptimizerState, cJ as ConfidenceTier, cK as ConsolidationAction, cL as ConsolidationItem, bh as ConsolidationObservation, aE as ConsolidationResult, ai as ConvergeConfig, $ as ConvergeConflictPolicy, O as ConversationThread, cM as CronConversationRecallMode, cN as CronRecallMode, bH as DEFAULT_RECALL_DISCLOSURE, aF as DaySummaryResult, ak as DependencyPropagationConfig, cO as DreamingConfig, cP as DreamingNarrativePromptStyle, cQ as DreamsDeepSleepConfig, cR as DreamsLightSleepConfig, D as DreamsPhase, cS as DreamsPhaseStatus, cT as DreamsPhasesConfig, cU as DreamsRemConfig, a as DreamsRunResult, bd as DreamsStatusResult, cV as EngramTraceEvent, ba as EntityActivityEntry, E as EntityFile, aj as EntityMention, b9 as EntityRelationship, am as EntitySchemaDefinition, an as EntitySchemaSectionDefinition, al as EntityStructuredSection, b5 as EntityTimelineEntry, ao as ExtractedFact, cW as ExtractedProcedureStep, cX as ExtractedQuestion, cY as ExtractedReasoningTrace, cZ as ExtractedReasoningTraceStep, c_ as ExtractedRelationship, Z as ExtractionFailureClass, c$ as ExtractionPassSource, a5 as ExtractionResult, F as FaithfulnessFrontmatter, b8 as FileHygieneConfig, G as GatewayConfig, d0 as GitHubLiveConnectorConfig, d1 as GmailLiveConnectorConfig, d2 as GoogleDriveLiveConnectorConfig, d3 as HeartbeatConfig, d4 as HeartbeatDetectionMode, H as HourlySummary, I as IdentityInjectionMode, _ as ImportanceLevel, aq as ImportanceScore, U as LifecycleState, L as LiveConnectorsConfig, d5 as LlmTraceCallback, d6 as LlmTraceEvent, as as MemoryActionEligibilityContext, bR as MemoryActionEligibilitySource, ag as MemoryActionEvent, d7 as MemoryActionOutcome, d8 as MemoryActionPolicyDecision, at as MemoryActionPolicyResult, d9 as MemoryActionStatus, af as MemoryActionType, w as MemoryCategory, M as MemoryFile, l as MemoryFrontmatter, ar as MemoryIntent, J as MemoryLifecycleEvent, au as MemoryLifecycleEventType, av as MemoryLifecycleStateSummary, b6 as MemoryLink, da as MemoryLinkType, bS as MemoryObservation, db as MemoryOsPresetName, z as MemoryProjectionCurrentState, bT as MemoryScope, y as MemoryStatus, bc as MemorySummary, az as MetaState, dc as ModelApi, dd as ModelDefinitionConfig, de as ModelProviderAuthMode, aw as ModelProviderConfig, df as NamespacePolicy, ax as NativeKnowledgeConfig, dg as NativeKnowledgeFolderRuleConfig, dh as NativeKnowledgeObsidianVaultConfig, di as NativeKnowledgeOpenClawWorkspaceConfig, dj as NotionLiveConnectorConfig, P as PluginConfig, W as PolicyClass, dk as PrincipalFromSessionKeyMode, dl as PrincipalRule, dm as ProceduralConfig, ap as ProvenanceConfig, K as ProvenanceSource, aG as QmdSearchExplain, Q as QmdSearchResult, dn as QuestionEntry, bU as RECALL_DISCLOSURE_LEVELS, dp as ReasoningEffort, n as RecallDisclosure, dq as RecallPipelineConfig, R as RecallPlanMode, be as RecallSectionConfig, b as RecallTierExplain, dr as RecallTraceEvent, ds as RelevanceFeedback, aB as RetrievalTier, dt as SPECULATIVE_TTL_DAYS, du as ScopeProfileAutoPromoteConfig, p as ScopeProfileConfig, q as ScopeProfileLayerId, r as ScopeProfilePromotionTarget, dv as ScopeProfileTeamProjectConfig, dw as ScopeTeamConfig, dx as ScoredEntity, u as SecretRef, dy as SemanticChunkingConfigShape, S as SessionObserverBandConfig, dz as SignalLevel, aC as SignalScanResult, dA as SlotBehaviorConfig, dB as SlotMismatchMode, o as SourceConnectorProvenance, c3 as SupportPassportConfig, aD as TopicScore, T as TranscriptEntry, dC as TriggerMode, N as TrustWeights, V as VerificationState, dD as confidenceTier, c0 as isRecallDisclosure } from './types-DWHOxlZP.js';
2
2
  import './message-parts/index.js';
3
3
  import './bounded-jsonl-state.js';
4
4
  import './external-wiki-config.js';
package/dist/types.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  SPECULATIVE_TTL_DAYS,
5
5
  confidenceTier,
6
6
  isRecallDisclosure
7
- } from "./chunk-5WVUO6QT.js";
7
+ } from "./chunk-AR253JBM.js";
8
8
  import "./chunk-PZ5AY32C.js";
9
9
  export {
10
10
  DEFAULT_RECALL_DISCLOSURE,
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Host-agnostic user-message cleaning (issue #2331).
3
+ *
4
+ * Owns the generic part of the cleaner the OpenClaw wiring has always used
5
+ * (`src/user-message-cleaning.ts` in the root host bundle): stripping the
6
+ * structured host-injected memory wrappers and the leading memory-context
7
+ * preamble from a user message. The host wrapper keeps only the
8
+ * platform-header pattern (channel envelopes are an OpenClaw concept) and
9
+ * delegates here, so core consumers — the episodic-context recall section
10
+ * re-rendering archived user turns — share ONE implementation instead of a
11
+ * second cleaner drifting beside it.
12
+ */
13
+ declare function cleanUserMessageWithPattern(content: string, platformHeaderPattern: RegExp): string;
14
+ /**
15
+ * Clean an archived user turn for re-injection (issue #2331): strips the
16
+ * memory wrappers this system itself injects, so an archived echo of a
17
+ * previous recall output cannot re-enter the context through the
18
+ * episodic-context section. No platform envelope stripping — core has no
19
+ * host channel-envelope concept.
20
+ */
21
+ declare function cleanArchivedUserMessage(content: string): string;
22
+
23
+ export { cleanArchivedUserMessage, cleanUserMessageWithPattern };
@@ -0,0 +1,10 @@
1
+ import {
2
+ cleanArchivedUserMessage,
3
+ cleanUserMessageWithPattern
4
+ } from "./chunk-47DU4SGJ.js";
5
+ import "./chunk-PZ5AY32C.js";
6
+ export {
7
+ cleanArchivedUserMessage,
8
+ cleanUserMessageWithPattern
9
+ };
10
+ //# sourceMappingURL=user-message-cleaning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,6 +1,6 @@
1
1
  import { TierRoutingPolicy } from './tier-routing.js';
2
2
  import './lifecycle.js';
3
- import './types-BOANGhCJ.js';
3
+ import './types-DWHOxlZP.js';
4
4
  import './message-parts/index.js';
5
5
  import './bounded-jsonl-state.js';
6
6
  import './operator-doctor-types.js';
@@ -1,20 +1,20 @@
1
1
  import {
2
2
  compareVerifiedEpisodeResults,
3
3
  searchVerifiedEpisodes
4
- } from "./chunk-MJ4UGUR6.js";
4
+ } from "./chunk-BHO6RHE5.js";
5
5
  import "./chunk-B7RWBZXW.js";
6
- import "./chunk-YUIBXMZY.js";
6
+ import "./chunk-CALURYWR.js";
7
7
  import "./chunk-UHVXE24Y.js";
8
- import "./chunk-KHQ57QLJ.js";
8
+ import "./chunk-46WM6JX2.js";
9
9
  import "./chunk-SXIMQLGV.js";
10
- import "./chunk-QWPAQLYV.js";
11
- import "./chunk-7N7DB4L5.js";
10
+ import "./chunk-JFLKSD5V.js";
11
+ import "./chunk-LTJTP5YQ.js";
12
+ import "./chunk-CYEPCZN5.js";
13
+ import "./chunk-DCUMFQYM.js";
12
14
  import "./chunk-VYISFWVX.js";
13
15
  import "./chunk-6KTXE6A3.js";
14
- import "./chunk-XL3TATMJ.js";
16
+ import "./chunk-OQIRBGUU.js";
15
17
  import "./chunk-VANZKHTN.js";
16
- import "./chunk-CYEPCZN5.js";
17
- import "./chunk-YLHM5BQQ.js";
18
18
  import "./chunk-W7IGLX4G.js";
19
19
  import "./chunk-GUMZC2BO.js";
20
20
  import "./chunk-227UFSEQ.js";
@@ -22,12 +22,12 @@ import "./chunk-ET356KSB.js";
22
22
  import "./chunk-72A4L5JJ.js";
23
23
  import "./chunk-A7Q43EUZ.js";
24
24
  import "./chunk-S2V7RUCL.js";
25
- import "./chunk-5WVUO6QT.js";
25
+ import "./chunk-AR253JBM.js";
26
26
  import "./chunk-S2HLHAZ4.js";
27
27
  import "./chunk-SCU65EZI.js";
28
28
  import "./chunk-PO7NXBG2.js";
29
- import "./chunk-DM2T26WE.js";
30
29
  import "./chunk-LDXUBPMO.js";
30
+ import "./chunk-DM2T26WE.js";
31
31
  import "./chunk-UG6VXIOK.js";
32
32
  import "./chunk-AAD2ZS6P.js";
33
33
  import "./chunk-H6ZXNH5I.js";
@@ -55,15 +55,15 @@ import "./chunk-L2EXJQJP.js";
55
55
  import "./chunk-45GF7Y3V.js";
56
56
  import "./chunk-RGMVMVMF.js";
57
57
  import "./chunk-N7RWREIQ.js";
58
- import "./chunk-VOELBUS4.js";
58
+ import "./chunk-NXH34IPL.js";
59
59
  import "./chunk-ZIKENA2C.js";
60
60
  import "./chunk-PQVCH2AE.js";
61
61
  import "./chunk-6Q3ZTEF6.js";
62
- import "./chunk-6MKAMLQL.js";
62
+ import "./chunk-PJKTFXE2.js";
63
63
  import "./chunk-W5BIQOAJ.js";
64
64
  import "./chunk-Z7L72ZHL.js";
65
65
  import "./chunk-4O4TKIXQ.js";
66
- import "./chunk-ZBJMUXZH.js";
66
+ import "./chunk-DJ7HMNSL.js";
67
67
  import "./chunk-BJMBJZ2Y.js";
68
68
  import "./chunk-UKJAGEXH.js";
69
69
  import "./chunk-FP2373TW.js";
@@ -1,4 +1,29 @@
1
1
  declare function collapseWhitespace(value: string): string;
2
2
  declare function truncateCodePointSafe(value: string, maxChars: number): string;
3
+ /**
4
+ * Longest prefix of `value` whose UTF-16 length stays within `maxChars`
5
+ * without splitting a surrogate pair or a grapheme cluster (ZWJ emoji
6
+ * sequences, flags, Hangul jamo runs, combining marks). A cluster wider than
7
+ * the budget is dropped whole rather than split. Falls back to code-point
8
+ * boundaries when Intl.Segmenter is unavailable.
9
+ */
10
+ declare function truncateGraphemeSafe(value: string, maxChars: number): string;
11
+ /**
12
+ * Grapheme clusters of `value` as separate strings, or its code points when
13
+ * Intl.Segmenter is unavailable.
14
+ */
15
+ declare function graphemeUnits(value: string): string[];
16
+ /**
17
+ * Terminal cell width: East_Asian_Width Wide/Fullwidth glyphs count as 2,
18
+ * combining marks and format characters (ZWJ, variation selectors) as 0,
19
+ * everything else as 1. A grapheme cluster with emoji presentation - ZWJ
20
+ * sequences, flags, skin-tone modifiers - occupies two cells.
21
+ */
22
+ declare function displayWidth(value: string): number;
23
+ /**
24
+ * padEnd analog that pads to a terminal cell width, so rows containing CJK
25
+ * or emoji keep their columns aligned.
26
+ */
27
+ declare function padEndDisplay(value: string, targetWidth: number): string;
3
28
 
4
- export { collapseWhitespace, truncateCodePointSafe };
29
+ export { collapseWhitespace, displayWidth, graphemeUnits, padEndDisplay, truncateCodePointSafe, truncateGraphemeSafe };
@@ -1,10 +1,18 @@
1
1
  import {
2
2
  collapseWhitespace,
3
- truncateCodePointSafe
4
- } from "./chunk-6MKAMLQL.js";
3
+ displayWidth,
4
+ graphemeUnits,
5
+ padEndDisplay,
6
+ truncateCodePointSafe,
7
+ truncateGraphemeSafe
8
+ } from "./chunk-PJKTFXE2.js";
5
9
  import "./chunk-PZ5AY32C.js";
6
10
  export {
7
11
  collapseWhitespace,
8
- truncateCodePointSafe
12
+ displayWidth,
13
+ graphemeUnits,
14
+ padEndDisplay,
15
+ truncateCodePointSafe,
16
+ truncateGraphemeSafe
9
17
  };
10
18
  //# sourceMappingURL=whitespace.js.map
@@ -4,8 +4,8 @@ import {
4
4
  resolveWorkProductLedgerDir,
5
5
  searchWorkProductLedgerEntries,
6
6
  validateWorkProductLedgerEntry
7
- } from "./chunk-WT6UL3UA.js";
8
- import "./chunk-ZBJMUXZH.js";
7
+ } from "./chunk-H7PRHUBD.js";
8
+ import "./chunk-DJ7HMNSL.js";
9
9
  import "./chunk-A2IYSXDQ.js";
10
10
  import "./chunk-P77QX3ID.js";
11
11
  import "./chunk-PZ5AY32C.js";
@@ -1,4 +1,4 @@
1
- import { w as MemoryCategory } from './types-BOANGhCJ.js';
1
+ import { w as MemoryCategory } from './types-DWHOxlZP.js';
2
2
  import './message-parts/index.js';
3
3
  import './bounded-jsonl-state.js';
4
4
  import './operator-doctor-types.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remnic/core",
3
- "version": "9.62.0",
3
+ "version": "9.62.2",
4
4
  "description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -2930,6 +2930,16 @@
2930
2930
  "remnic-source": "./src/types.ts",
2931
2931
  "import": "./dist/types.js"
2932
2932
  },
2933
+ "./user-message-cleaning": {
2934
+ "types": "./dist/user-message-cleaning.d.ts",
2935
+ "remnic-source": "./src/user-message-cleaning.ts",
2936
+ "import": "./dist/user-message-cleaning.js"
2937
+ },
2938
+ "./user-message-cleaning.js": {
2939
+ "types": "./dist/user-message-cleaning.d.ts",
2940
+ "remnic-source": "./src/user-message-cleaning.ts",
2941
+ "import": "./dist/user-message-cleaning.js"
2942
+ },
2933
2943
  "./user-model": {
2934
2944
  "types": "./dist/user-model.d.ts",
2935
2945
  "remnic-source": "./src/user-model.ts",
@@ -3146,7 +3156,7 @@
3146
3156
  "core"
3147
3157
  ],
3148
3158
  "peerDependencies": {
3149
- "@remnic/coding-graph": "^9.62.0"
3159
+ "@remnic/coding-graph": "^9.62.2"
3150
3160
  },
3151
3161
  "peerDependenciesMeta": {
3152
3162
  "@remnic/coding-graph": {
@@ -213,6 +213,7 @@ test("offline manifest streams body-free active, archived, old, bad, and encrypt
213
213
  id: "active-memory",
214
214
  category: "fact",
215
215
  contentHash: activeContentHash,
216
+ identityResolutionVersion: 2,
216
217
  normalizerVersion: 4,
217
218
  status: "active",
218
219
  });
package/src/cli.ts CHANGED
@@ -12,6 +12,7 @@ import { resolveNamespaceCapabilities,
12
12
  import { ThreadingManager } from "./threading.js";
13
13
  import { bumpMemoryCorpusVersionForDir } from "./memory-corpus-version.js";
14
14
  import { utcDayRange } from "./transcript.js";
15
+ import { padEndDisplay, truncateGraphemeSafe } from "./whitespace.js";
15
16
  import { runWearablesCliCommand } from "./wearables/cli.js";
16
17
  import { registerMeetingsCommands } from "./cli/meetings-commands.js";
17
18
  import { registerResearchStatusCommands } from "./cli/research-status-commands.js";
@@ -5672,7 +5673,7 @@ export function registerCli(
5672
5673
  console.log(` raw excerpts (${r.rawExcerpts.length}):`);
5673
5674
  for (const ex of r.rawExcerpts) {
5674
5675
  console.log(
5675
- ` [turn ${ex.turnIndex}, ${ex.role}] ${ex.content.slice(0, 200)}`,
5676
+ ` [turn ${ex.turnIndex}, ${ex.role}] ${truncateGraphemeSafe(ex.content, 200)}`,
5676
5677
  );
5677
5678
  }
5678
5679
  }
@@ -7614,7 +7615,7 @@ export function registerCli(
7614
7615
  console.log(` ${r.path} (score: ${r.score.toFixed(3)})`);
7615
7616
  if (r.snippet) {
7616
7617
  console.log(
7617
- ` ${r.snippet.slice(0, 150).replace(/\n/g, " ")}`,
7618
+ ` ${truncateGraphemeSafe(r.snippet, 150).replace(/\n/g, " ")}`,
7618
7619
  );
7619
7620
  }
7620
7621
  console.log();
@@ -7640,7 +7641,7 @@ export function registerCli(
7640
7641
  console.log(`\n=== Text Search Fallback: "${query}" (${matches.length} results) ===\n`);
7641
7642
  console.log(`QMD status: ${qmdStatus}\n`);
7642
7643
  for (const m of matches.slice(0, maxResults)) {
7643
- console.log(` [${m.frontmatter.category}] ${m.content.slice(0, 120)}`);
7644
+ console.log(` [${m.frontmatter.category}] ${truncateGraphemeSafe(m.content, 120)}`);
7644
7645
  }
7645
7646
  }
7646
7647
  });
@@ -7783,12 +7784,12 @@ export function registerCli(
7783
7784
  for (const cluster of result.clusters) {
7784
7785
  console.log(`\n Category: ${cluster.category} (${cluster.memories.length} memories, overlap=${cluster.overlapScore.toFixed(2)})`);
7785
7786
  for (const m of cluster.memories) {
7786
- const preview = m.content.length > 80 ? m.content.slice(0, 80) + "..." : m.content;
7787
+ const preview = m.content.length > 80 ? `${truncateGraphemeSafe(m.content, 80)}...` : m.content;
7787
7788
  console.log(` - ${m.frontmatter.id}: ${preview}`);
7788
7789
  }
7789
7790
  if (cluster.canonicalContent) {
7790
7791
  const preview = cluster.canonicalContent.length > 120
7791
- ? cluster.canonicalContent.slice(0, 120) + "..."
7792
+ ? `${truncateGraphemeSafe(cluster.canonicalContent, 120)}...`
7792
7793
  : cluster.canonicalContent;
7793
7794
  console.log(` → Canonical: ${preview}`);
7794
7795
  }
@@ -8018,7 +8019,7 @@ export function registerCli(
8018
8019
  const lastAccessed = m.frontmatter.lastAccessed
8019
8020
  ? new Date(m.frontmatter.lastAccessed).toLocaleDateString()
8020
8021
  : "unknown";
8021
- console.log(` ${m.frontmatter.accessCount}x [${m.frontmatter.category}] ${m.content.slice(0, 80)}`);
8022
+ console.log(` ${m.frontmatter.accessCount}x [${m.frontmatter.category}] ${truncateGraphemeSafe(m.content, 80)}`);
8022
8023
  console.log(` Last accessed: ${lastAccessed} ID: ${m.frontmatter.id}`);
8023
8024
  console.log();
8024
8025
  }
@@ -8071,7 +8072,7 @@ export function registerCli(
8071
8072
  console.log("\n=== Importance Distribution ===\n");
8072
8073
  for (const [level, count] of Object.entries(levelCounts)) {
8073
8074
  const bar = "█".repeat(Math.min(count, 50));
8074
- console.log(` ${level.padEnd(10)} ${count.toString().padStart(4)} ${bar}`);
8075
+ console.log(` ${padEndDisplay(level, 10)} ${count.toString().padStart(4)} ${bar}`);
8075
8076
  }
8076
8077
  console.log(`\n Total scored: ${withImportance.length} / ${memories.length} memories\n`);
8077
8078
 
@@ -8104,7 +8105,7 @@ export function registerCli(
8104
8105
  console.log(
8105
8106
  ` ${imp.score.toFixed(2)} [${imp.level}] [${m.frontmatter.category}]`,
8106
8107
  );
8107
- console.log(` ${m.content.slice(0, 100)}`);
8108
+ console.log(` ${truncateGraphemeSafe(m.content, 100)}`);
8108
8109
  if (imp.keywords.length > 0) {
8109
8110
  console.log(` Keywords: ${imp.keywords.join(", ")}`);
8110
8111
  }
@@ -8131,7 +8132,7 @@ export function registerCli(
8131
8132
 
8132
8133
  for (const topic of topics.slice(0, top)) {
8133
8134
  const bar = "█".repeat(Math.min(Math.round(topic.score * 10), 30));
8134
- console.log(` ${topic.term.padEnd(20)} ${topic.score.toFixed(3)} (${topic.count}x) ${bar}`);
8135
+ console.log(` ${padEndDisplay(topic.term, 20)} ${topic.score.toFixed(3)} (${topic.count}x) ${bar}`);
8135
8136
  }
8136
8137
  });
8137
8138
 
@@ -8163,7 +8164,7 @@ export function registerCli(
8163
8164
  console.log(` Time range: ${summary.timeRangeStart.slice(0, 10)} to ${summary.timeRangeEnd.slice(0, 10)}`);
8164
8165
  console.log(` Source memories: ${summary.sourceEpisodeIds.length}`);
8165
8166
  console.log(` Key facts: ${summary.keyFacts.length}`);
8166
- console.log(`\n Summary: ${summary.summaryText.slice(0, 200)}...`);
8167
+ console.log(`\n Summary: ${truncateGraphemeSafe(summary.summaryText, 200)}...`);
8167
8168
  console.log();
8168
8169
  }
8169
8170
  });
@@ -8255,13 +8256,13 @@ export function registerCli(
8255
8256
  const parent = memories.find((m) => m.frontmatter.id === parentId);
8256
8257
  console.log(`\n=== Chunks for ${parentId} ===\n`);
8257
8258
  if (parent) {
8258
- console.log(`Parent: ${parent.content.slice(0, 100)}...`);
8259
+ console.log(`Parent: ${truncateGraphemeSafe(parent.content, 100)}...`);
8259
8260
  console.log();
8260
8261
  }
8261
8262
 
8262
8263
  for (const chunk of chunks) {
8263
8264
  console.log(
8264
- ` [${(chunk.frontmatter.chunkIndex ?? 0) + 1}/${chunk.frontmatter.chunkTotal}] ${chunk.content.slice(0, 80)}...`,
8265
+ ` [${(chunk.frontmatter.chunkIndex ?? 0) + 1}/${chunk.frontmatter.chunkTotal}] ${truncateGraphemeSafe(chunk.content, 80)}...`,
8265
8266
  );
8266
8267
  }
8267
8268
  return;
@@ -9408,7 +9409,7 @@ function formatTranscript(entries: TranscriptEntry[]): string {
9408
9409
  return entries
9409
9410
  .map((e) => {
9410
9411
  const time = e.timestamp.slice(11, 16); // HH:MM
9411
- return `[${time}] ${e.role}: ${e.content.slice(0, 200)}${e.content.length > 200 ? "..." : ""}`;
9412
+ return `[${time}] ${e.role}: ${truncateGraphemeSafe(e.content, 200)}${e.content.length > 200 ? "..." : ""}`;
9412
9413
  })
9413
9414
  .join("\n");
9414
9415
  }
package/src/config.ts CHANGED
@@ -2472,6 +2472,7 @@ export function parseConfig(
2472
2472
  memoryPoisoningDefenseEnabled: cfg.memoryPoisoningDefenseEnabled === true,
2473
2473
  memoryRedTeamBenchEnabled: cfg.memoryRedTeamBenchEnabled === true,
2474
2474
  harmonicRetrievalEnabled: cfg.harmonicRetrievalEnabled === true,
2475
+ episodicContextEnabled: cfg.episodicContextEnabled === true,
2475
2476
  abstractionAnchorsEnabled: cfg.abstractionAnchorsEnabled === true,
2476
2477
  verifiedRecallEnabled: cfg.verifiedRecallEnabled === true,
2477
2478
  semanticRulePromotionEnabled: cfg.semanticRulePromotionEnabled === true,
@@ -3175,6 +3176,9 @@ export function parseConfig(
3175
3176
  oramaEnabled: cfg.oramaEnabled === true,
3176
3177
  oramaDbPath: typeof cfg.oramaDbPath === "string" ? cfg.oramaDbPath : path.join(memoryDir, "orama"),
3177
3178
  oramaEmbeddingDimension: typeof cfg.oramaEmbeddingDimension === "number" ? cfg.oramaEmbeddingDimension : 1536,
3179
+ // CJK/Thai lexical segmentation (issue #2187) — default on; string forms
3180
+ // from CLI `--config` are coerced like neighboring boolean flags.
3181
+ oramaCjkSegmentation: coerceBooleanLike(cfg.oramaCjkSegmentation) ?? true,
3178
3182
 
3179
3183
  // QMD daemon mode
3180
3184
  qmdDaemonEnabled: cfg.qmdDaemonEnabled !== false,
@@ -4428,6 +4432,13 @@ function buildDefaultRecallPipeline(cfg: Record<string, unknown>): RecallSection
4428
4432
  ? Math.max(0, Math.floor(cfg.qmdMaxResults))
4429
4433
  : 8,
4430
4434
  },
4435
+ {
4436
+ id: "episodic-context",
4437
+ enabled: cfg.episodicContextEnabled === true,
4438
+ maxResults: 2,
4439
+ maxTurns: 8,
4440
+ maxChars: 2400,
4441
+ },
4431
4442
  {
4432
4443
  id: "compression-guidelines",
4433
4444
  enabled: cfg.compressionGuidelineLearningEnabled === true,
@@ -8,12 +8,9 @@ import { collectNativeKnowledgeChunks, type NativeKnowledgeChunk } from "./nativ
8
8
  import { compareEntityTimestamps, normalizeEntityName, type StorageManager } from "./storage.js";
9
9
  import { normalizeEntityText, resolveRequestedEntitySectionKeys } from "./entity-schema.js";
10
10
  import type { EntityStructuredSection, MemoryFile, PluginConfig, TranscriptEntry } from "./types.js";
11
+ import { truncateGraphemeSafe } from "./whitespace.js";
11
12
  import { containsPhrase } from "./entity-retrieval-boundaries.js";
12
- import {
13
- buildOriginStructuredSections,
14
- sanitizeOriginatedFacts,
15
- type EntityOriginStructuredSection,
16
- } from "./entity-origin-fields.js";
13
+ import { buildOriginStructuredSections, sanitizeOriginatedFacts, type EntityOriginStructuredSection } from "./entity-origin-fields.js";
17
14
  import {
18
15
  checkEntityRecallAbort,
19
16
  entityRecallSectionAbsent,
@@ -106,7 +103,7 @@ function uniqueStrings(values: string[]): string[] {
106
103
  function compactLine(value: string, maxLength: number = 220): string {
107
104
  const normalized = value.replace(/\s+/g, " ").trim();
108
105
  if (normalized.length <= maxLength) return normalized;
109
- return `${normalized.slice(0, Math.max(0, maxLength - 1)).trimEnd()}…`;
106
+ return `${truncateGraphemeSafe(normalized, maxLength - 1).trimEnd()}…`;
110
107
  }
111
108
  function dedupeHintSnippetsByText(snippets: EntityHintSnippet[]): EntityHintSnippet[] {
112
109
  const deduped = new Map<string, EntityHintSnippet>();
@@ -1052,7 +1049,7 @@ function formatEntityHintSection(
1052
1049
 
1053
1050
  let result = lines.join("\n");
1054
1051
  if (result.length > maxChars) {
1055
- result = `${result.slice(0, Math.max(0, maxChars - 15)).trimEnd()}\n\n...(trimmed)\n`;
1052
+ result = `${truncateGraphemeSafe(result, Math.max(0, maxChars - 15)).trimEnd()}\n\n...(trimmed)\n`;
1056
1053
  }
1057
1054
  return result.trim().length > 0 ? result.trimEnd() : null;
1058
1055
  }