@remnic/core 9.45.3 → 9.45.5

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 (766) hide show
  1. package/dist/abort-error.d.ts +2 -1
  2. package/dist/abort-error.js +3 -1
  3. package/dist/access-admin-ops-surface.d.ts +14 -10
  4. package/dist/access-admin-ops-surface.js +84 -75
  5. package/dist/access-audit.js +2 -2
  6. package/dist/access-authorization-probe.d.ts +14 -10
  7. package/dist/access-authorization-probe.js +85 -76
  8. package/dist/access-boundary.d.ts +15 -11
  9. package/dist/access-boundary.js +84 -75
  10. package/dist/access-citation-namespace.js +2 -2
  11. package/dist/access-cli.js +191 -177
  12. package/dist/access-cli.js.map +1 -1
  13. package/dist/access-coding-context-resolution.d.ts +16 -0
  14. package/dist/access-coding-context-resolution.js +13 -0
  15. package/dist/access-coding-context-resolution.js.map +1 -0
  16. package/dist/access-extraction-force-flush.d.ts +14 -10
  17. package/dist/access-extraction-force-flush.js +84 -75
  18. package/dist/access-health-types.d.ts +2 -1
  19. package/dist/access-http-lcm-compaction.d.ts +16 -12
  20. package/dist/access-http-lcm-compaction.js +3 -3
  21. package/dist/access-http-lifecycle-flush.d.ts +14 -10
  22. package/dist/access-http-lifecycle-flush.js +2 -2
  23. package/dist/access-http-offline-stream.d.ts +123 -0
  24. package/dist/access-http-offline-stream.js +10 -0
  25. package/dist/access-http-offline-stream.js.map +1 -0
  26. package/dist/access-http-query.js +84 -75
  27. package/dist/access-http.d.ts +15 -11
  28. package/dist/access-http.js +104 -90
  29. package/dist/access-identity-continuity-surface.d.ts +9 -8
  30. package/dist/access-identity-continuity-surface.js +84 -75
  31. package/dist/access-lcm-surface.d.ts +14 -10
  32. package/dist/access-lcm-surface.js +84 -75
  33. package/dist/access-mcp-output-schemas.js +1 -1
  34. package/dist/access-mcp.d.ts +14 -10
  35. package/dist/access-mcp.js +95 -82
  36. package/dist/access-memory-search-fanout.d.ts +3 -2
  37. package/dist/{access-namespace-preflight-5yZ4g6F8.d.ts → access-namespace-preflight-CWUDwB4M.d.ts} +1 -1
  38. package/dist/access-namespace-preflight.d.ts +4 -3
  39. package/dist/access-namespace-preflight.js +84 -75
  40. package/dist/access-observe-helpers.d.ts +1 -0
  41. package/dist/access-observe-helpers.js +1 -1
  42. package/dist/access-observe-write-surface.d.ts +16 -10
  43. package/dist/access-observe-write-surface.js +84 -75
  44. package/dist/access-offline-manifest.d.ts +104 -0
  45. package/dist/access-offline-manifest.js +45 -0
  46. package/dist/access-offline-manifest.js.map +1 -0
  47. package/dist/access-operations-batch.js +86 -77
  48. package/dist/access-operations.d.ts +18 -14
  49. package/dist/access-operations.js +91 -79
  50. package/dist/access-recall-concurrency.d.ts +16 -26
  51. package/dist/access-recall-concurrency.js +86 -76
  52. package/dist/access-recall-response.d.ts +18 -14
  53. package/dist/access-recall-response.js +84 -75
  54. package/dist/access-recall-surface.d.ts +29 -24
  55. package/dist/access-recall-surface.js +84 -75
  56. package/dist/access-schema.d.ts +84 -84
  57. package/dist/access-schema.js +3 -3
  58. package/dist/{access-service-CiJRsgAB.d.ts → access-service-CNN89xyn.d.ts} +25 -16
  59. package/dist/access-service-helpers.d.ts +14 -10
  60. package/dist/access-service.d.ts +14 -10
  61. package/dist/access-service.js +84 -75
  62. package/dist/access-surface-catalog.d.ts +14 -10
  63. package/dist/access-surface-catalog.js +4 -0
  64. package/dist/access-surface-catalog.js.map +1 -1
  65. package/dist/access-wearables-meetings-surface.d.ts +4 -3
  66. package/dist/action-confidence.d.ts +2 -1
  67. package/dist/active-memory-bridge.d.ts +2 -1
  68. package/dist/active-recall.d.ts +2 -1
  69. package/dist/active-recall.js +10 -8
  70. package/dist/active-recall.js.map +1 -1
  71. package/dist/adapters/index.js +4 -4
  72. package/dist/adapters/registry.js +2 -2
  73. package/dist/{auto-sync-5OE5QOZB.js → auto-sync-UPTUVE4X.js} +6 -6
  74. package/dist/behavior-learner.d.ts +2 -1
  75. package/dist/behavior-learner.js +1 -1
  76. package/dist/behavior-signals.d.ts +2 -1
  77. package/dist/bootstrap.d.ts +9 -8
  78. package/dist/briefing.d.ts +3 -2
  79. package/dist/briefing.js +24 -22
  80. package/dist/buffer-surprise-report.d.ts +2 -1
  81. package/dist/buffer-turn-helpers.d.ts +2 -1
  82. package/dist/buffer.d.ts +3 -2
  83. package/dist/buffer.js +12 -11
  84. package/dist/bulk-import/index.d.ts +4 -3
  85. package/dist/calibration.d.ts +2 -1
  86. package/dist/capabilities.d.ts +2 -1
  87. package/dist/{capsule-merge-IDWJPCWK.js → capsule-merge-Q6AR3XL7.js} +67 -54
  88. package/dist/capsule-merge-Q6AR3XL7.js.map +1 -0
  89. package/dist/{catalog-scBmy0sO.d.ts → catalog-bctMURhN.d.ts} +1 -1
  90. package/dist/causal-behavior.d.ts +2 -1
  91. package/dist/causal-behavior.js +2 -2
  92. package/dist/causal-chain.js +2 -2
  93. package/dist/causal-consolidation.d.ts +2 -1
  94. package/dist/causal-consolidation.js +28 -26
  95. package/dist/causal-consolidation.js.map +1 -1
  96. package/dist/causal-retrieval.js +2 -2
  97. package/dist/causal-trajectory-graph.d.ts +2 -1
  98. package/dist/causal-trajectory.js +1 -1
  99. package/dist/{chunk-E5UK4VPE.js → chunk-2FSTB6BJ.js} +5 -5
  100. package/dist/{chunk-5ZE7QHTK.js → chunk-2X2T2UVE.js} +5 -5
  101. package/dist/{chunk-P4DRWEYC.js → chunk-3COYXTGM.js} +2 -2
  102. package/dist/{chunk-5IVLTFOV.js → chunk-44N6ESJ4.js} +2 -2
  103. package/dist/{chunk-DL7ZD3JH.js → chunk-4FBVAGV3.js} +14 -9
  104. package/dist/chunk-4FBVAGV3.js.map +1 -0
  105. package/dist/{chunk-WOCNN776.js → chunk-4POAMKV6.js} +100 -41
  106. package/dist/chunk-4POAMKV6.js.map +1 -0
  107. package/dist/{chunk-HO3QBJEY.js → chunk-5546W5SI.js} +2 -2
  108. package/dist/{chunk-AAIUERNB.js → chunk-5QJQHBLE.js} +6 -6
  109. package/dist/{chunk-6CZPDBJS.js → chunk-5U7ID3EZ.js} +3 -3
  110. package/dist/{chunk-RN7DY3FC.js → chunk-6ISC4AVB.js} +31 -12
  111. package/dist/chunk-6ISC4AVB.js.map +1 -0
  112. package/dist/chunk-773TRRGT.js +36 -0
  113. package/dist/chunk-773TRRGT.js.map +1 -0
  114. package/dist/chunk-7T4TOGMS.js +242 -0
  115. package/dist/chunk-7T4TOGMS.js.map +1 -0
  116. package/dist/{chunk-DLVPUX7U.js → chunk-7YKVM5H3.js} +8 -6
  117. package/dist/chunk-7YKVM5H3.js.map +1 -0
  118. package/dist/chunk-7YQ6ESEA.js +322 -0
  119. package/dist/chunk-7YQ6ESEA.js.map +1 -0
  120. package/dist/{chunk-DNWXFTLD.js → chunk-A4IJCD2Z.js} +2 -2
  121. package/dist/{chunk-3CE77VAP.js → chunk-A4JMGKCD.js} +87 -74
  122. package/dist/chunk-A4JMGKCD.js.map +1 -0
  123. package/dist/chunk-A5KNZSNA.js +26 -0
  124. package/dist/chunk-A5KNZSNA.js.map +1 -0
  125. package/dist/{chunk-PKNLM44P.js → chunk-AC5OWJLV.js} +9 -9
  126. package/dist/{chunk-LZ4LDKHZ.js → chunk-AMAUBUKY.js} +6 -6
  127. package/dist/{chunk-CUM2BBPN.js → chunk-AUMWZSE7.js} +19 -10
  128. package/dist/chunk-AUMWZSE7.js.map +1 -0
  129. package/dist/{chunk-BUE5E2HL.js → chunk-BGLY7EEM.js} +5 -314
  130. package/dist/chunk-BGLY7EEM.js.map +1 -0
  131. package/dist/chunk-BIPBQQFI.js +44 -0
  132. package/dist/chunk-BIPBQQFI.js.map +1 -0
  133. package/dist/{chunk-S5SLVSVY.js → chunk-BQIFZ2MP.js} +5 -5
  134. package/dist/chunk-BTTPKDIL.js +34 -0
  135. package/dist/{chunk-PVGDJXVK.js.map → chunk-BTTPKDIL.js.map} +1 -1
  136. package/dist/chunk-CK5KOVHW.js +69 -0
  137. package/dist/chunk-CK5KOVHW.js.map +1 -0
  138. package/dist/{chunk-Q6IP2ARR.js → chunk-CSOYVTRX.js} +2 -2
  139. package/dist/{chunk-XOQSEF7X.js → chunk-CVILPI77.js} +6 -6
  140. package/dist/{chunk-VWAXN2BN.js → chunk-CX4ZUMC6.js} +91 -83
  141. package/dist/chunk-CX4ZUMC6.js.map +1 -0
  142. package/dist/{chunk-NVRYW264.js → chunk-DAJPRXBR.js} +16 -13
  143. package/dist/chunk-DAJPRXBR.js.map +1 -0
  144. package/dist/{chunk-J7VGGECD.js → chunk-DZPFMQZ7.js} +1 -1
  145. package/dist/chunk-DZPFMQZ7.js.map +1 -0
  146. package/dist/{chunk-4LMA77JH.js → chunk-E5XQIWAL.js} +3 -3
  147. package/dist/{chunk-WUNIWKY4.js → chunk-ELIL2A37.js} +6 -6
  148. package/dist/{chunk-OQ5PRDDS.js → chunk-ERZ2R42X.js} +6 -6
  149. package/dist/{chunk-U7GW7NE7.js → chunk-FIK3CQNA.js} +10 -10
  150. package/dist/{chunk-D3J5SLQK.js → chunk-FR27HBBA.js} +81 -20
  151. package/dist/chunk-FR27HBBA.js.map +1 -0
  152. package/dist/{chunk-E6PNLPGJ.js → chunk-FUCYDRE5.js} +838 -480
  153. package/dist/chunk-FUCYDRE5.js.map +1 -0
  154. package/dist/{chunk-HZFHQ4AQ.js → chunk-G7A5HLUS.js} +23 -17
  155. package/dist/chunk-G7A5HLUS.js.map +1 -0
  156. package/dist/{chunk-33PLLLL7.js → chunk-GFCVUY6G.js} +6 -6
  157. package/dist/{chunk-HREE4JHI.js → chunk-GODSPTOT.js} +477 -278
  158. package/dist/chunk-GODSPTOT.js.map +1 -0
  159. package/dist/{chunk-S2NCTZGJ.js → chunk-GRUYA45P.js} +15 -15
  160. package/dist/chunk-GRUYA45P.js.map +1 -0
  161. package/dist/{chunk-VUPTKTDV.js → chunk-GUAL4PQH.js} +3 -3
  162. package/dist/{chunk-CINZGPSJ.js → chunk-GUMZC2BO.js} +2 -2
  163. package/dist/{chunk-H24WNPA2.js → chunk-GWFSVJ4P.js} +3 -3
  164. package/dist/{chunk-7XC2HX75.js → chunk-GYPQL6XN.js} +157 -16
  165. package/dist/chunk-GYPQL6XN.js.map +1 -0
  166. package/dist/{chunk-TSH56VPU.js → chunk-HAYSYUAB.js} +2 -2
  167. package/dist/{chunk-PDLBLTOK.js → chunk-HC3PBX23.js} +9 -9
  168. package/dist/{chunk-TDHTVMPG.js → chunk-HFPASSFV.js} +7 -2
  169. package/dist/chunk-HFPASSFV.js.map +1 -0
  170. package/dist/chunk-J2WC5LF4.js +395 -0
  171. package/dist/chunk-J2WC5LF4.js.map +1 -0
  172. package/dist/{chunk-KXB4VXHY.js → chunk-JIYDRBVZ.js} +2 -2
  173. package/dist/chunk-JV3C2MNQ.js +74 -0
  174. package/dist/chunk-JV3C2MNQ.js.map +1 -0
  175. package/dist/{chunk-HLPD7B7P.js → chunk-JZH4LWHB.js} +2 -2
  176. package/dist/{chunk-AV5ZEH4M.js → chunk-KVJRXN2E.js} +2 -2
  177. package/dist/{chunk-WFTIGIIS.js → chunk-L6CQ7WIW.js} +5 -5
  178. package/dist/{chunk-227UFSEQ.js → chunk-LEPOP46W.js} +4 -4
  179. package/dist/{chunk-EJUEXZHX.js → chunk-LLJMAULE.js} +2 -2
  180. package/dist/{chunk-N5Z4EVOR.js → chunk-LNEWDF2A.js} +36 -11
  181. package/dist/chunk-LNEWDF2A.js.map +1 -0
  182. package/dist/{chunk-QN25OCUF.js → chunk-LPYDOLSM.js} +5 -5
  183. package/dist/{chunk-AS7YMSL6.js → chunk-M23RF3LJ.js} +4 -4
  184. package/dist/{chunk-OAEQLRCY.js → chunk-MO4HSXHZ.js} +5 -5
  185. package/dist/{chunk-ECK75GDJ.js → chunk-N3LL5NEU.js} +43 -24
  186. package/dist/chunk-N3LL5NEU.js.map +1 -0
  187. package/dist/chunk-NEF7LR5J.js +29 -0
  188. package/dist/chunk-NEF7LR5J.js.map +1 -0
  189. package/dist/{chunk-3F2LKUMU.js → chunk-NIS256NW.js} +2 -2
  190. package/dist/{chunk-YIAA2X3D.js → chunk-NK5RGJ65.js} +3 -3
  191. package/dist/chunk-NLDVVWCL.js +84 -0
  192. package/dist/chunk-NLDVVWCL.js.map +1 -0
  193. package/dist/{chunk-4J7G5SY4.js → chunk-NZBZ7IS2.js} +72 -24
  194. package/dist/chunk-NZBZ7IS2.js.map +1 -0
  195. package/dist/{chunk-3TBLDMJA.js → chunk-O4KMGRXE.js} +5 -2
  196. package/dist/chunk-O4KMGRXE.js.map +1 -0
  197. package/dist/{chunk-7TWUCYER.js → chunk-PNRA7FAD.js} +7 -7
  198. package/dist/{chunk-5I4M26Q7.js → chunk-QBSFOKY6.js} +4 -4
  199. package/dist/{chunk-E53DSZEN.js → chunk-QR6G5KF4.js} +3 -3
  200. package/dist/{chunk-CJ2ZR7UA.js → chunk-QUENPGWZ.js} +261 -211
  201. package/dist/chunk-QUENPGWZ.js.map +1 -0
  202. package/dist/{chunk-4UH4BTGK.js → chunk-QVJPH7SH.js} +84 -84
  203. package/dist/{chunk-UYLMNVY6.js → chunk-R3KHKU7M.js} +16 -9
  204. package/dist/chunk-R3KHKU7M.js.map +1 -0
  205. package/dist/{chunk-JBPKEARU.js → chunk-RKNJBZ55.js} +4 -4
  206. package/dist/{chunk-WDISJRMG.js → chunk-RMMVQQA6.js} +2 -2
  207. package/dist/{chunk-JVLCVFQ4.js → chunk-RNHVVMFN.js} +3 -3
  208. package/dist/{chunk-QJAQNXWI.js → chunk-RVO6TCTU.js} +81 -84
  209. package/dist/chunk-RVO6TCTU.js.map +1 -0
  210. package/dist/chunk-S2HLHAZ4.js +16 -0
  211. package/dist/chunk-S2HLHAZ4.js.map +1 -0
  212. package/dist/{chunk-KWMXR7XS.js → chunk-S2V7RUCL.js} +8 -1
  213. package/dist/{chunk-KWMXR7XS.js.map → chunk-S2V7RUCL.js.map} +1 -1
  214. package/dist/{chunk-5SM35XZR.js → chunk-S5NZBKKQ.js} +2 -2
  215. package/dist/{chunk-VNA7W7QF.js → chunk-SVH57F5Z.js} +12 -4
  216. package/dist/chunk-SVH57F5Z.js.map +1 -0
  217. package/dist/{chunk-WIPEXG6R.js → chunk-SXIMQLGV.js} +2 -2
  218. package/dist/{chunk-RVLJEII5.js → chunk-SYUBB3WM.js} +256 -187
  219. package/dist/chunk-SYUBB3WM.js.map +1 -0
  220. package/dist/{chunk-VCD4PSK2.js → chunk-TQZ4DVBC.js} +7 -4
  221. package/dist/chunk-TQZ4DVBC.js.map +1 -0
  222. package/dist/{chunk-7K5Q6COX.js → chunk-TVVEYCNW.js} +4 -4
  223. package/dist/{chunk-YV32N67O.js → chunk-URS5GSM7.js} +1 -1
  224. package/dist/chunk-URS5GSM7.js.map +1 -0
  225. package/dist/{chunk-4B77XSG5.js → chunk-UV72DEZD.js} +5 -5
  226. package/dist/{chunk-BJKPPZ6Z.js → chunk-UW66OZTD.js} +2 -2
  227. package/dist/{chunk-XYTOI63Z.js → chunk-V2TNYF6Q.js} +19 -11
  228. package/dist/chunk-V2TNYF6Q.js.map +1 -0
  229. package/dist/{chunk-S2BBISHU.js → chunk-VANZKHTN.js} +3 -3
  230. package/dist/chunk-VHFXP27N.js +250 -0
  231. package/dist/chunk-VHFXP27N.js.map +1 -0
  232. package/dist/chunk-VL35ZFSZ.js +102 -0
  233. package/dist/chunk-VL35ZFSZ.js.map +1 -0
  234. package/dist/{chunk-3Y224NYC.js → chunk-VYISFWVX.js} +2 -2
  235. package/dist/{chunk-JE7EK33X.js → chunk-W2V7UESE.js} +2 -2
  236. package/dist/{chunk-TIHMZFIV.js → chunk-W3IC7QOY.js} +3 -3
  237. package/dist/{chunk-NRV4Y3PM.js → chunk-W4FBGYGK.js} +1 -1
  238. package/dist/{chunk-P2BM76KT.js → chunk-WAS4HV46.js} +174 -43
  239. package/dist/chunk-WAS4HV46.js.map +1 -0
  240. package/dist/{chunk-57QKLRBV.js → chunk-WB7JSQCP.js} +2 -1
  241. package/dist/chunk-WB7JSQCP.js.map +1 -0
  242. package/dist/{chunk-A5OJCXZL.js → chunk-WZ3TOIDW.js} +15 -4
  243. package/dist/chunk-WZ3TOIDW.js.map +1 -0
  244. package/dist/{chunk-MU7ZHSZE.js → chunk-WZFAPHIK.js} +2 -2
  245. package/dist/{chunk-T2TTP3KU.js → chunk-X4IDNPOS.js} +2 -2
  246. package/dist/{chunk-UVIKWC7M.js → chunk-XAGYS7X6.js} +17 -17
  247. package/dist/{chunk-BLAKS3CP.js → chunk-XL3TATMJ.js} +3 -3
  248. package/dist/{chunk-W4XJFLAL.js → chunk-XPRJSHNI.js} +2 -2
  249. package/dist/{chunk-5TFP4CUL.js → chunk-XQ3HXAQH.js} +14 -11
  250. package/dist/chunk-XQ3HXAQH.js.map +1 -0
  251. package/dist/{chunk-E6EE5B67.js → chunk-YK6BDDHP.js} +4 -4
  252. package/dist/{chunk-ES36HTSC.js → chunk-YLHM5BQQ.js} +3 -3
  253. package/dist/{chunk-ULARSG5Z.js → chunk-YN6ASZUG.js} +10 -8
  254. package/dist/{chunk-ULARSG5Z.js.map → chunk-YN6ASZUG.js.map} +1 -1
  255. package/dist/{chunk-VOUOLGIP.js → chunk-YRFAYOFQ.js} +11 -13
  256. package/dist/chunk-YRFAYOFQ.js.map +1 -0
  257. package/dist/{chunk-IKKWIPYN.js → chunk-YYQAKIDJ.js} +37 -1
  258. package/dist/chunk-YYQAKIDJ.js.map +1 -0
  259. package/dist/{chunk-GF22HWS2.js → chunk-Z54EM5YZ.js} +4 -4
  260. package/dist/{chunk-64UDOIMI.js → chunk-ZLQ37WJX.js} +2 -2
  261. package/dist/{cli-BUGN3d6_.d.ts → cli-BHBswmUa.d.ts} +5 -5
  262. package/dist/cli.d.ts +16 -12
  263. package/dist/cli.js +138 -123
  264. package/dist/compounding/engine.d.ts +3 -2
  265. package/dist/compounding/engine.js +25 -23
  266. package/dist/compounding/preference-consolidator.d.ts +2 -1
  267. package/dist/compression-optimizer.d.ts +2 -1
  268. package/dist/config.d.ts +2 -1
  269. package/dist/config.js +10 -8
  270. package/dist/connectors/codex-materialize-runner.d.ts +2 -1
  271. package/dist/connectors/codex-materialize-runner.js +24 -22
  272. package/dist/connectors/codex-materialize.d.ts +2 -1
  273. package/dist/connectors/index.d.ts +2 -1
  274. package/dist/connectors/index.js +27 -25
  275. package/dist/consolidation-provenance-check.d.ts +3 -2
  276. package/dist/consolidation-provenance-check.js +4 -4
  277. package/dist/consolidation-undo.d.ts +3 -2
  278. package/dist/consolidation-undo.js +10 -7
  279. package/dist/consolidation-undo.js.map +1 -1
  280. package/dist/contradiction/index.d.ts +3 -2
  281. package/dist/converge-config.d.ts +2 -1
  282. package/dist/convergence-refresh.d.ts +4 -3
  283. package/dist/convergence-refresh.js +28 -26
  284. package/dist/conversation-index/backend.d.ts +2 -1
  285. package/dist/conversation-index/backend.js +2 -2
  286. package/dist/conversation-index/chunker.d.ts +2 -1
  287. package/dist/conversation-index/faiss-adapter.d.ts +2 -1
  288. package/dist/conversation-index/indexer.d.ts +2 -1
  289. package/dist/conversation-index/search.d.ts +2 -1
  290. package/dist/corpus-watermark.d.ts +2 -1
  291. package/dist/corpus-watermark.js +43 -41
  292. package/dist/day-summary.d.ts +2 -1
  293. package/dist/delinearize.d.ts +2 -1
  294. package/dist/direct-answer-wiring.d.ts +2 -1
  295. package/dist/direct-answer-wiring.js +2 -2
  296. package/dist/direct-answer.d.ts +2 -1
  297. package/dist/embedding-fallback.d.ts +2 -1
  298. package/dist/embedding-fallback.js +2 -2
  299. package/dist/enrichment/index.d.ts +2 -1
  300. package/dist/entity-retrieval-boundaries.js +1 -1
  301. package/dist/entity-retrieval.d.ts +3 -2
  302. package/dist/entity-retrieval.js +25 -23
  303. package/dist/entity-schema.d.ts +2 -1
  304. package/dist/explicit-capture.d.ts +9 -8
  305. package/dist/explicit-capture.js +11 -9
  306. package/dist/external-wiki-access.d.ts +127 -0
  307. package/dist/external-wiki-access.js +187 -0
  308. package/dist/external-wiki-access.js.map +1 -0
  309. package/dist/external-wiki-cli.d.ts +13 -0
  310. package/dist/external-wiki-cli.js +10 -0
  311. package/dist/external-wiki-cli.js.map +1 -0
  312. package/dist/external-wiki-collection-registration.d.ts +39 -0
  313. package/dist/external-wiki-collection-registration.js +79 -0
  314. package/dist/external-wiki-collection-registration.js.map +1 -0
  315. package/dist/external-wiki-collection.d.ts +50 -0
  316. package/dist/external-wiki-collection.js +387 -0
  317. package/dist/external-wiki-collection.js.map +1 -0
  318. package/dist/external-wiki-config.d.ts +13 -0
  319. package/dist/external-wiki-config.js +13 -0
  320. package/dist/external-wiki-config.js.map +1 -0
  321. package/dist/external-wiki-guard.d.ts +11 -0
  322. package/dist/external-wiki-guard.js +18 -0
  323. package/dist/external-wiki-guard.js.map +1 -0
  324. package/dist/external-wiki-mcp-tools.d.ts +123 -0
  325. package/dist/external-wiki-mcp-tools.js +8 -0
  326. package/dist/external-wiki-mcp-tools.js.map +1 -0
  327. package/dist/external-wiki-search.d.ts +42 -0
  328. package/dist/external-wiki-search.js +11 -0
  329. package/dist/external-wiki-search.js.map +1 -0
  330. package/dist/external-wiki.d.ts +39 -0
  331. package/dist/external-wiki.js +14 -0
  332. package/dist/external-wiki.js.map +1 -0
  333. package/dist/extraction-error-classification.d.ts +2 -1
  334. package/dist/extraction-faithfulness.d.ts +2 -1
  335. package/dist/extraction-judge-telemetry.d.ts +2 -1
  336. package/dist/extraction-judge-training.d.ts +2 -1
  337. package/dist/extraction-judge.d.ts +2 -1
  338. package/dist/extraction-liveness.d.ts +2 -1
  339. package/dist/extraction-source-grounding-helpers.d.ts +5 -3
  340. package/dist/extraction-source-grounding-helpers.js +1 -1
  341. package/dist/extraction-source-grounding-rules.d.ts +2 -1
  342. package/dist/extraction-source-grounding-rules.js +2 -2
  343. package/dist/extraction-source-grounding.d.ts +2 -1
  344. package/dist/extraction-source-grounding.js +5 -5
  345. package/dist/extraction.d.ts +2 -1
  346. package/dist/extraction.js +46 -43
  347. package/dist/fallback-llm.d.ts +2 -1
  348. package/dist/{first-start-migration-F2QJD66E.js → first-start-migration-ZSHEFEI3.js} +10 -12
  349. package/dist/{first-start-migration-F2QJD66E.js.map → first-start-migration-ZSHEFEI3.js.map} +1 -1
  350. package/dist/graph-dashboard-diff.d.ts +2 -1
  351. package/dist/graph-dashboard-key.d.ts +2 -1
  352. package/dist/graph-dashboard-parser.d.ts +2 -1
  353. package/dist/graph-edge-reinforcement.d.ts +2 -1
  354. package/dist/graph-snapshot.d.ts +2 -1
  355. package/dist/graph.d.ts +2 -1
  356. package/dist/harmonic-retrieval.js +2 -2
  357. package/dist/importance.d.ts +2 -1
  358. package/dist/importers/index.d.ts +2 -1
  359. package/dist/in-flight-reads.d.ts +2 -1
  360. package/dist/index.d.ts +443 -430
  361. package/dist/index.js +304 -269
  362. package/dist/intent.d.ts +2 -1
  363. package/dist/lcm/engine.d.ts +2 -1
  364. package/dist/lcm/engine.js +2 -2
  365. package/dist/lcm/index.d.ts +2 -1
  366. package/dist/lcm/index.js +7 -7
  367. package/dist/lcm/tools.d.ts +2 -1
  368. package/dist/lifecycle.d.ts +2 -1
  369. package/dist/live-connectors-runner.d.ts +2 -1
  370. package/dist/local-llm.d.ts +2 -1
  371. package/dist/local-llm.js +2 -2
  372. package/dist/local-model-endpoint.d.ts +2 -1
  373. package/dist/maintenance/memory-governance.d.ts +2 -1
  374. package/dist/maintenance/memory-governance.js +25 -23
  375. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +3 -2
  376. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +25 -23
  377. package/dist/maintenance/rebuild-memory-projection.d.ts +3 -2
  378. package/dist/maintenance/rebuild-memory-projection.js +27 -25
  379. package/dist/{maintenance-LbuS2rUA.d.ts → maintenance-CoRikzIt.d.ts} +3 -3
  380. package/dist/mcp-memory-inspector-app.d.ts +14 -10
  381. package/dist/mcp-read-only-tools.js +1 -1
  382. package/dist/memory-action-policy.d.ts +2 -1
  383. package/dist/memory-cache.d.ts +2 -1
  384. package/dist/memory-lifecycle-ledger-utils.d.ts +2 -1
  385. package/dist/memory-projection-store.d.ts +2 -1
  386. package/dist/memory-provenance.d.ts +2 -1
  387. package/dist/memory-snapshot.d.ts +10 -0
  388. package/dist/memory-snapshot.js +8 -0
  389. package/dist/memory-snapshot.js.map +1 -0
  390. package/dist/memory-worth-outcomes.d.ts +3 -2
  391. package/dist/models-json.d.ts +2 -1
  392. package/dist/namespaces/migrate.d.ts +4 -3
  393. package/dist/namespaces/migrate.js +41 -39
  394. package/dist/namespaces/principal.d.ts +2 -1
  395. package/dist/namespaces/search.d.ts +2 -1
  396. package/dist/namespaces/search.js +18 -18
  397. package/dist/namespaces/storage.d.ts +4 -3
  398. package/dist/namespaces/storage.js +24 -22
  399. package/dist/native-knowledge.d.ts +2 -1
  400. package/dist/offline-sync-impression-drain.d.ts +2 -1
  401. package/dist/offline-sync-impression-drain.js +11 -9
  402. package/dist/offline-sync.d.ts +29 -3
  403. package/dist/offline-sync.js +6 -2
  404. package/dist/operator-doctor-corpus.d.ts +2 -1
  405. package/dist/operator-doctor-corpus.js +46 -44
  406. package/dist/operator-doctor-replica.d.ts +2 -1
  407. package/dist/operator-doctor-replica.js +3 -3
  408. package/dist/operator-toolkit.d.ts +4 -3
  409. package/dist/operator-toolkit.js +60 -55
  410. package/dist/orchestration/compression-guideline-coordinator.d.ts +3 -2
  411. package/dist/orchestration/maintenance.d.ts +5 -4
  412. package/dist/orchestration/maintenance.js +37 -33
  413. package/dist/{orchestrator-rHiWt32X.d.ts → orchestrator-BJeq7Pw1.d.ts} +14 -7
  414. package/dist/orchestrator.d.ts +9 -8
  415. package/dist/orchestrator.js +200 -186
  416. package/dist/page-versioning.js +3 -3
  417. package/dist/patterns-cli.d.ts +2 -1
  418. package/dist/{pipeline-W_97O8BV.d.ts → pipeline-CNjY4wk3.d.ts} +1 -1
  419. package/dist/policy-runtime.d.ts +2 -1
  420. package/dist/policy-runtime.js +1 -1
  421. package/dist/proactive-contention.d.ts +2 -1
  422. package/dist/provenance.d.ts +2 -1
  423. package/dist/provenance.js +2 -2
  424. package/dist/{qmd-LWtMofAf.d.ts → qmd-C0UDZidt.d.ts} +9 -7
  425. package/dist/qmd-preflight.d.ts +5 -4
  426. package/dist/qmd-preflight.js +2 -2
  427. package/dist/qmd-recall-cache.d.ts +2 -1
  428. package/dist/qmd.d.ts +4 -3
  429. package/dist/qmd.js +8 -8
  430. package/dist/recall-concurrency-config.d.ts +2 -1
  431. package/dist/recall-disclosure-escalation.d.ts +2 -1
  432. package/dist/recall-explain-renderer.d.ts +2 -1
  433. package/dist/recall-explain-renderer.js +3 -3
  434. package/dist/recall-memory-map.d.ts +2 -1
  435. package/dist/recall-planner-llm.d.ts +2 -1
  436. package/dist/recall-state.d.ts +2 -1
  437. package/dist/recall-tag-filter.d.ts +2 -1
  438. package/dist/recall-timings.d.ts +2 -1
  439. package/dist/recall-xray-cli.d.ts +2 -1
  440. package/dist/recall-xray-cli.js +4 -4
  441. package/dist/recall-xray-renderer.d.ts +2 -1
  442. package/dist/recall-xray-renderer.js +3 -3
  443. package/dist/recall-xray.d.ts +8 -1
  444. package/dist/recall-xray.js +2 -2
  445. package/dist/reconcile/cursor.d.ts +12 -2
  446. package/dist/reconcile/cursor.js +46 -7
  447. package/dist/reconcile/cursor.js.map +1 -1
  448. package/dist/reconcile/manifest.d.ts +9 -2
  449. package/dist/reconcile/manifest.js +15 -268
  450. package/dist/reconcile/manifest.js.map +1 -1
  451. package/dist/reconcile/plan.d.ts +4 -1
  452. package/dist/reconcile/plan.js +4 -4
  453. package/dist/replay/normalizers/chatgpt.d.ts +2 -1
  454. package/dist/replay/normalizers/claude.d.ts +2 -1
  455. package/dist/replay/normalizers/openclaw.d.ts +2 -1
  456. package/dist/replay/normalizers/shared.d.ts +2 -1
  457. package/dist/replay/runner.d.ts +2 -1
  458. package/dist/replay/types.d.ts +2 -1
  459. package/dist/replica-divergence.d.ts +2 -1
  460. package/dist/replica-divergence.js +2 -2
  461. package/dist/replica-peers-config.d.ts +2 -1
  462. package/dist/resolve-auth-token.d.ts +2 -1
  463. package/dist/resume-bundles.js +12 -10
  464. package/dist/retrieval-agents.d.ts +4 -3
  465. package/dist/retrieval-agents.js +2 -2
  466. package/dist/retrieval-tiers.d.ts +2 -1
  467. package/dist/routing/engine.d.ts +2 -1
  468. package/dist/routing/store.d.ts +2 -1
  469. package/dist/salvage-envelope.d.ts +2 -1
  470. package/dist/schemas.d.ts +54 -54
  471. package/dist/{scope-profiles-BiQKOE-p.d.ts → scope-profiles-BJzp2F5A.d.ts} +1 -1
  472. package/dist/search/embed-helper.d.ts +2 -1
  473. package/dist/search/embed-helper.js +3 -3
  474. package/dist/search/factory.d.ts +4 -2
  475. package/dist/search/factory.js +20 -18
  476. package/dist/search/index.d.ts +2 -1
  477. package/dist/search/index.js +20 -20
  478. package/dist/search/lancedb-backend.d.ts +2 -1
  479. package/dist/search/lancedb-backend.js +4 -4
  480. package/dist/search/meilisearch-backend.d.ts +2 -1
  481. package/dist/search/meilisearch-backend.js +4 -4
  482. package/dist/search/noop-backend.d.ts +2 -1
  483. package/dist/search/orama-backend.d.ts +2 -1
  484. package/dist/search/orama-backend.js +4 -4
  485. package/dist/search/port.d.ts +18 -1
  486. package/dist/search/port.js +1 -1
  487. package/dist/search/remote-backend.d.ts +2 -1
  488. package/dist/search/remote-backend.js +2 -2
  489. package/dist/secure-store/index.js +2 -2
  490. package/dist/{semantic-consolidation-dHYCyqgh.d.ts → semantic-consolidation-D4KAZO2G.d.ts} +1 -1
  491. package/dist/semantic-consolidation.d.ts +3 -2
  492. package/dist/semantic-consolidation.js +26 -24
  493. package/dist/semantic-rule-promotion.js +24 -22
  494. package/dist/semantic-rule-verifier.d.ts +2 -1
  495. package/dist/semantic-rule-verifier.js +25 -23
  496. package/dist/{service-DJG3KCQ4.d.ts → service-DWC4tq7p.d.ts} +2 -2
  497. package/dist/session-observer-bands.d.ts +2 -1
  498. package/dist/session-observer-state.d.ts +2 -1
  499. package/dist/shared-context/manager.d.ts +10 -9
  500. package/dist/shared-context/manager.js +2 -2
  501. package/dist/signal.d.ts +2 -1
  502. package/dist/source-agent-qualifier.d.ts +2 -1
  503. package/dist/source-agent-qualifier.js +43 -40
  504. package/dist/{storage-F9FVh-w9.d.ts → storage-DPGjB-8e.d.ts} +28 -13
  505. package/dist/storage.d.ts +3 -2
  506. package/dist/storage.js +26 -24
  507. package/dist/summarizer.d.ts +2 -1
  508. package/dist/summarizer.js +5 -5
  509. package/dist/summary-snapshot.d.ts +2 -1
  510. package/dist/temporal-supersession.d.ts +3 -2
  511. package/dist/temporal-timeline-recall.d.ts +2 -1
  512. package/dist/temporal-validity.d.ts +2 -1
  513. package/dist/threading.d.ts +2 -1
  514. package/dist/tier-migration.d.ts +3 -2
  515. package/dist/tier-migration.js +1 -1
  516. package/dist/tier-routing.d.ts +2 -1
  517. package/dist/tool-scoped-memory.d.ts +5 -1
  518. package/dist/tool-scoped-memory.js +3 -1
  519. package/dist/topics.d.ts +2 -1
  520. package/dist/transcript.d.ts +2 -1
  521. package/dist/transfer/capsule-import.js +4 -4
  522. package/dist/transfer/types.d.ts +66 -66
  523. package/dist/trust-score-stage.d.ts +2 -1
  524. package/dist/trust-score.d.ts +2 -1
  525. package/dist/{types-rEwubvim.d.ts → types-yX_FwERf.d.ts} +8 -1
  526. package/dist/types.d.ts +2 -1
  527. package/dist/types.js +1 -1
  528. package/dist/utility-runtime.d.ts +2 -1
  529. package/dist/verified-recall.js +25 -23
  530. package/dist/write-envelope.d.ts +2 -1
  531. package/package.json +2 -2
  532. package/src/abort-error.ts +17 -0
  533. package/src/access-admin-ops-surface.ts +1 -0
  534. package/src/access-boundary.ts +1 -0
  535. package/src/access-coding-context-resolution.ts +42 -0
  536. package/src/access-extraction-force-flush.ts +38 -2
  537. package/src/access-http-lcm-compaction.ts +5 -2
  538. package/src/access-http-offline-stream.ts +80 -0
  539. package/src/access-http.test.ts +310 -3
  540. package/src/access-http.ts +84 -77
  541. package/src/access-mcp-output-schemas.ts +36 -0
  542. package/src/access-mcp.test.ts +95 -1
  543. package/src/access-mcp.ts +7 -9
  544. package/src/access-observe-helpers.ts +64 -22
  545. package/src/access-observe-write-surface.ts +8 -0
  546. package/src/access-offline-manifest.ts +54 -0
  547. package/src/access-operations-batch.ts +3 -3
  548. package/src/access-operations.ts +13 -7
  549. package/src/access-recall-concurrency.ts +3 -27
  550. package/src/access-recall-surface.ts +3 -0
  551. package/src/access-service-health.test.ts +32 -7
  552. package/src/access-service-namespace.test.ts +55 -0
  553. package/src/access-service-observe-idempotency.test.ts +34 -2
  554. package/src/access-service-observe-lcm-parity.test.ts +183 -23
  555. package/src/access-service-observe-scope.test.ts +160 -1
  556. package/src/access-service-offline-file-content.test.ts +345 -1
  557. package/src/access-service.ts +88 -62
  558. package/src/access-surface-catalog.ts +4 -0
  559. package/src/admin/admin-surfaces.ts +2 -0
  560. package/src/binary-lifecycle/pipeline.test.ts +106 -1
  561. package/src/binary-lifecycle/pipeline.ts +3 -0
  562. package/src/coding/git-context.test.ts +47 -0
  563. package/src/coding/git-context.ts +129 -27
  564. package/src/config.test.ts +24 -0
  565. package/src/config.ts +9 -12
  566. package/src/connector-provenance.test.ts +101 -0
  567. package/src/consolidation-undo.ts +3 -0
  568. package/src/convergence-refresh.ts +14 -2
  569. package/src/correction/correction-access-wiring.ts +9 -7
  570. package/src/correction/correction-executor.test.ts +206 -2
  571. package/src/correction/correction-executor.ts +29 -20
  572. package/src/correction/correction-planner.test.ts +36 -0
  573. package/src/correction/correction-planner.ts +9 -15
  574. package/src/correction/correction-service.ts +3 -1
  575. package/src/correction/correction-storage-integration.test.ts +77 -0
  576. package/src/correction/correction-surfaces.test.ts +41 -28
  577. package/src/correction/passive-capture.test.ts +59 -0
  578. package/src/correction/passive-capture.ts +4 -1
  579. package/src/entity-retrieval-boundaries.ts +17 -4
  580. package/src/entity-retrieval.ts +27 -6
  581. package/src/external-wiki-access.test.ts +65 -0
  582. package/src/external-wiki-access.ts +31 -0
  583. package/src/external-wiki-cli.ts +100 -0
  584. package/src/external-wiki-collection-registration.test.ts +163 -0
  585. package/src/external-wiki-collection-registration.ts +101 -0
  586. package/src/external-wiki-collection.test.ts +502 -0
  587. package/src/external-wiki-collection.ts +503 -0
  588. package/src/external-wiki-config.test.ts +135 -0
  589. package/src/external-wiki-config.ts +100 -0
  590. package/src/external-wiki-guard.ts +83 -0
  591. package/src/external-wiki-mcp-tools.ts +23 -0
  592. package/src/external-wiki-search.test.ts +367 -0
  593. package/src/external-wiki-search.ts +362 -0
  594. package/src/external-wiki.test.ts +240 -0
  595. package/src/external-wiki.ts +427 -0
  596. package/src/extraction-scope-source-agent.test.ts +21 -0
  597. package/src/extraction-source-grounding-helpers.ts +243 -53
  598. package/src/extraction-source-grounding-rules.ts +133 -39
  599. package/src/extraction-source-grounding.test.ts +363 -33
  600. package/src/extraction-timeout.test.ts +1 -0
  601. package/src/extraction-watermark.test.ts +150 -7
  602. package/src/extraction.ts +8 -1
  603. package/src/index.ts +9 -5
  604. package/src/maintenance/first-start-migration.ts +11 -11
  605. package/src/mcp-read-only-tools.ts +1 -0
  606. package/src/memory-snapshot.ts +15 -0
  607. package/src/offline-sync.test.ts +194 -0
  608. package/src/offline-sync.ts +217 -13
  609. package/src/orchestration/external-wiki-recall-guard.test.ts +94 -0
  610. package/src/orchestration/extraction-persist.ts +19 -2
  611. package/src/orchestration/extraction-run-helpers.ts +37 -19
  612. package/src/orchestration/extraction-run.test.ts +171 -2
  613. package/src/orchestration/extraction-run.ts +11 -13
  614. package/src/orchestration/extraction-watermark.ts +106 -17
  615. package/src/orchestration/generic-recall-paths.ts +14 -0
  616. package/src/orchestration/orchestrator-helpers.ts +2 -0
  617. package/src/orchestration/orchestrator-init.ts +9 -0
  618. package/src/orchestration/recall-internal-deps.ts +6 -0
  619. package/src/orchestration/recall-internal.ts +154 -33
  620. package/src/orchestration/recall-rerank-coordinator.ts +60 -25
  621. package/src/orchestration/recall-search-pipeline.test.ts +75 -1
  622. package/src/orchestration/recall-search-pipeline.ts +50 -10
  623. package/src/orchestrator-convergence-refresh.test.ts +36 -2
  624. package/src/orchestrator.ts +13 -3
  625. package/src/page-versioning.ts +5 -19
  626. package/src/procedural/procedure-recall.ts +5 -1
  627. package/src/provenance-surfaces.test.ts +3 -0
  628. package/src/qmd-client.test.ts +78 -17
  629. package/src/qmd.test.ts +24 -0
  630. package/src/qmd.ts +224 -315
  631. package/src/recall-explain-renderer.ts +3 -0
  632. package/src/recall-rerank-coordinator.test.ts +61 -0
  633. package/src/recall-xray-renderer.test.ts +6 -0
  634. package/src/recall-xray.test.ts +88 -1
  635. package/src/recall-xray.ts +15 -0
  636. package/src/reconcile/cursor.test.ts +48 -0
  637. package/src/reconcile/cursor.ts +58 -11
  638. package/src/reconcile/manifest.test.ts +4 -0
  639. package/src/reconcile/manifest.ts +41 -51
  640. package/src/reconcile/plan.test.ts +4 -0
  641. package/src/reconcile/plan.ts +28 -16
  642. package/src/search/factory.ts +6 -6
  643. package/src/search/port.ts +25 -9
  644. package/src/secure-store/secure-fs.ts +20 -12
  645. package/src/secure-store/secure-store.test.ts +41 -2
  646. package/src/spaces/index.test.ts +61 -2
  647. package/src/spaces/index.ts +44 -18
  648. package/src/storage/entity-alias-config.ts +97 -0
  649. package/src/storage/entity-canonical-id-lock.ts +53 -23
  650. package/src/storage/entity-canonical-id-migration.ts +53 -22
  651. package/src/storage/entity-canonical-id-references.ts +3 -0
  652. package/src/storage/entity-id-safety.ts +7 -0
  653. package/src/storage/entity-store.ts +6 -2
  654. package/src/storage/memory-frontmatter-metadata.ts +4 -9
  655. package/src/storage/memory-migration-serialization.ts +10 -15
  656. package/src/storage/tombstone-blocked-capture-mutation.ts +52 -64
  657. package/src/storage/tombstone-blocked-capture-sync.ts +244 -199
  658. package/src/storage-contract/cache-coherence.test.ts +99 -0
  659. package/src/storage-deletion-revisions.test.ts +91 -0
  660. package/src/storage-fact-hash-index-defer.test.ts +460 -170
  661. package/src/storage.ts +572 -284
  662. package/src/testing/subjects/first-start-tier-migration.test.ts +75 -0
  663. package/src/tier-migration.ts +10 -12
  664. package/src/tool-scoped-memory.ts +10 -0
  665. package/src/transfer/capsule-import.ts +13 -0
  666. package/src/transfer/capsule-merge.ts +13 -0
  667. package/src/trust-score-recall-paths.test.ts +75 -1
  668. package/src/types.ts +7 -3
  669. package/dist/capsule-merge-IDWJPCWK.js.map +0 -1
  670. package/dist/chunk-3CE77VAP.js.map +0 -1
  671. package/dist/chunk-3TBLDMJA.js.map +0 -1
  672. package/dist/chunk-4J7G5SY4.js.map +0 -1
  673. package/dist/chunk-57QKLRBV.js.map +0 -1
  674. package/dist/chunk-5TFP4CUL.js.map +0 -1
  675. package/dist/chunk-7XC2HX75.js.map +0 -1
  676. package/dist/chunk-A5OJCXZL.js.map +0 -1
  677. package/dist/chunk-BUE5E2HL.js.map +0 -1
  678. package/dist/chunk-CJ2ZR7UA.js.map +0 -1
  679. package/dist/chunk-CUM2BBPN.js.map +0 -1
  680. package/dist/chunk-D3J5SLQK.js.map +0 -1
  681. package/dist/chunk-DL7ZD3JH.js.map +0 -1
  682. package/dist/chunk-DLVPUX7U.js.map +0 -1
  683. package/dist/chunk-E6PNLPGJ.js.map +0 -1
  684. package/dist/chunk-ECK75GDJ.js.map +0 -1
  685. package/dist/chunk-HREE4JHI.js.map +0 -1
  686. package/dist/chunk-HZFHQ4AQ.js.map +0 -1
  687. package/dist/chunk-IKKWIPYN.js.map +0 -1
  688. package/dist/chunk-J7VGGECD.js.map +0 -1
  689. package/dist/chunk-N5Z4EVOR.js.map +0 -1
  690. package/dist/chunk-NVRYW264.js.map +0 -1
  691. package/dist/chunk-P2BM76KT.js.map +0 -1
  692. package/dist/chunk-PVGDJXVK.js +0 -21
  693. package/dist/chunk-QJAQNXWI.js.map +0 -1
  694. package/dist/chunk-RN7DY3FC.js.map +0 -1
  695. package/dist/chunk-RVLJEII5.js.map +0 -1
  696. package/dist/chunk-S2NCTZGJ.js.map +0 -1
  697. package/dist/chunk-TDHTVMPG.js.map +0 -1
  698. package/dist/chunk-UYLMNVY6.js.map +0 -1
  699. package/dist/chunk-VCD4PSK2.js.map +0 -1
  700. package/dist/chunk-VNA7W7QF.js.map +0 -1
  701. package/dist/chunk-VOUOLGIP.js.map +0 -1
  702. package/dist/chunk-VWAXN2BN.js.map +0 -1
  703. package/dist/chunk-WOCNN776.js.map +0 -1
  704. package/dist/chunk-XYTOI63Z.js.map +0 -1
  705. package/dist/chunk-YV32N67O.js.map +0 -1
  706. /package/dist/{auto-sync-5OE5QOZB.js.map → auto-sync-UPTUVE4X.js.map} +0 -0
  707. /package/dist/{chunk-E5UK4VPE.js.map → chunk-2FSTB6BJ.js.map} +0 -0
  708. /package/dist/{chunk-5ZE7QHTK.js.map → chunk-2X2T2UVE.js.map} +0 -0
  709. /package/dist/{chunk-P4DRWEYC.js.map → chunk-3COYXTGM.js.map} +0 -0
  710. /package/dist/{chunk-5IVLTFOV.js.map → chunk-44N6ESJ4.js.map} +0 -0
  711. /package/dist/{chunk-HO3QBJEY.js.map → chunk-5546W5SI.js.map} +0 -0
  712. /package/dist/{chunk-AAIUERNB.js.map → chunk-5QJQHBLE.js.map} +0 -0
  713. /package/dist/{chunk-6CZPDBJS.js.map → chunk-5U7ID3EZ.js.map} +0 -0
  714. /package/dist/{chunk-DNWXFTLD.js.map → chunk-A4IJCD2Z.js.map} +0 -0
  715. /package/dist/{chunk-PKNLM44P.js.map → chunk-AC5OWJLV.js.map} +0 -0
  716. /package/dist/{chunk-LZ4LDKHZ.js.map → chunk-AMAUBUKY.js.map} +0 -0
  717. /package/dist/{chunk-S5SLVSVY.js.map → chunk-BQIFZ2MP.js.map} +0 -0
  718. /package/dist/{chunk-Q6IP2ARR.js.map → chunk-CSOYVTRX.js.map} +0 -0
  719. /package/dist/{chunk-XOQSEF7X.js.map → chunk-CVILPI77.js.map} +0 -0
  720. /package/dist/{chunk-4LMA77JH.js.map → chunk-E5XQIWAL.js.map} +0 -0
  721. /package/dist/{chunk-WUNIWKY4.js.map → chunk-ELIL2A37.js.map} +0 -0
  722. /package/dist/{chunk-OQ5PRDDS.js.map → chunk-ERZ2R42X.js.map} +0 -0
  723. /package/dist/{chunk-U7GW7NE7.js.map → chunk-FIK3CQNA.js.map} +0 -0
  724. /package/dist/{chunk-33PLLLL7.js.map → chunk-GFCVUY6G.js.map} +0 -0
  725. /package/dist/{chunk-VUPTKTDV.js.map → chunk-GUAL4PQH.js.map} +0 -0
  726. /package/dist/{chunk-CINZGPSJ.js.map → chunk-GUMZC2BO.js.map} +0 -0
  727. /package/dist/{chunk-H24WNPA2.js.map → chunk-GWFSVJ4P.js.map} +0 -0
  728. /package/dist/{chunk-TSH56VPU.js.map → chunk-HAYSYUAB.js.map} +0 -0
  729. /package/dist/{chunk-PDLBLTOK.js.map → chunk-HC3PBX23.js.map} +0 -0
  730. /package/dist/{chunk-KXB4VXHY.js.map → chunk-JIYDRBVZ.js.map} +0 -0
  731. /package/dist/{chunk-HLPD7B7P.js.map → chunk-JZH4LWHB.js.map} +0 -0
  732. /package/dist/{chunk-AV5ZEH4M.js.map → chunk-KVJRXN2E.js.map} +0 -0
  733. /package/dist/{chunk-WFTIGIIS.js.map → chunk-L6CQ7WIW.js.map} +0 -0
  734. /package/dist/{chunk-227UFSEQ.js.map → chunk-LEPOP46W.js.map} +0 -0
  735. /package/dist/{chunk-EJUEXZHX.js.map → chunk-LLJMAULE.js.map} +0 -0
  736. /package/dist/{chunk-QN25OCUF.js.map → chunk-LPYDOLSM.js.map} +0 -0
  737. /package/dist/{chunk-AS7YMSL6.js.map → chunk-M23RF3LJ.js.map} +0 -0
  738. /package/dist/{chunk-OAEQLRCY.js.map → chunk-MO4HSXHZ.js.map} +0 -0
  739. /package/dist/{chunk-3F2LKUMU.js.map → chunk-NIS256NW.js.map} +0 -0
  740. /package/dist/{chunk-YIAA2X3D.js.map → chunk-NK5RGJ65.js.map} +0 -0
  741. /package/dist/{chunk-7TWUCYER.js.map → chunk-PNRA7FAD.js.map} +0 -0
  742. /package/dist/{chunk-5I4M26Q7.js.map → chunk-QBSFOKY6.js.map} +0 -0
  743. /package/dist/{chunk-E53DSZEN.js.map → chunk-QR6G5KF4.js.map} +0 -0
  744. /package/dist/{chunk-4UH4BTGK.js.map → chunk-QVJPH7SH.js.map} +0 -0
  745. /package/dist/{chunk-JBPKEARU.js.map → chunk-RKNJBZ55.js.map} +0 -0
  746. /package/dist/{chunk-WDISJRMG.js.map → chunk-RMMVQQA6.js.map} +0 -0
  747. /package/dist/{chunk-JVLCVFQ4.js.map → chunk-RNHVVMFN.js.map} +0 -0
  748. /package/dist/{chunk-5SM35XZR.js.map → chunk-S5NZBKKQ.js.map} +0 -0
  749. /package/dist/{chunk-WIPEXG6R.js.map → chunk-SXIMQLGV.js.map} +0 -0
  750. /package/dist/{chunk-7K5Q6COX.js.map → chunk-TVVEYCNW.js.map} +0 -0
  751. /package/dist/{chunk-4B77XSG5.js.map → chunk-UV72DEZD.js.map} +0 -0
  752. /package/dist/{chunk-BJKPPZ6Z.js.map → chunk-UW66OZTD.js.map} +0 -0
  753. /package/dist/{chunk-S2BBISHU.js.map → chunk-VANZKHTN.js.map} +0 -0
  754. /package/dist/{chunk-3Y224NYC.js.map → chunk-VYISFWVX.js.map} +0 -0
  755. /package/dist/{chunk-JE7EK33X.js.map → chunk-W2V7UESE.js.map} +0 -0
  756. /package/dist/{chunk-TIHMZFIV.js.map → chunk-W3IC7QOY.js.map} +0 -0
  757. /package/dist/{chunk-NRV4Y3PM.js.map → chunk-W4FBGYGK.js.map} +0 -0
  758. /package/dist/{chunk-MU7ZHSZE.js.map → chunk-WZFAPHIK.js.map} +0 -0
  759. /package/dist/{chunk-T2TTP3KU.js.map → chunk-X4IDNPOS.js.map} +0 -0
  760. /package/dist/{chunk-UVIKWC7M.js.map → chunk-XAGYS7X6.js.map} +0 -0
  761. /package/dist/{chunk-BLAKS3CP.js.map → chunk-XL3TATMJ.js.map} +0 -0
  762. /package/dist/{chunk-W4XJFLAL.js.map → chunk-XPRJSHNI.js.map} +0 -0
  763. /package/dist/{chunk-E6EE5B67.js.map → chunk-YK6BDDHP.js.map} +0 -0
  764. /package/dist/{chunk-ES36HTSC.js.map → chunk-YLHM5BQQ.js.map} +0 -0
  765. /package/dist/{chunk-GF22HWS2.js.map → chunk-Z54EM5YZ.js.map} +0 -0
  766. /package/dist/{chunk-64UDOIMI.js.map → chunk-ZLQ37WJX.js.map} +0 -0
@@ -2112,39 +2112,6 @@ test("grounding scopes nested entity facts to the enclosing entity", () => {
2112
2112
  }]);
2113
2113
  });
2114
2114
 
2115
- test("grounding preserves punctuation in technology identifiers", () => {
2116
- const cppResult = filterExtractionResultBySource(
2117
- {
2118
- facts: [{
2119
- category: "fact",
2120
- content: "Alice uses C++.",
2121
- confidence: 0.9,
2122
- tags: [],
2123
- }],
2124
- profileUpdates: [],
2125
- entities: [],
2126
- questions: [],
2127
- },
2128
- "Alice uses C.",
2129
- );
2130
- const plainCResult = filterExtractionResultBySource(
2131
- {
2132
- facts: [{
2133
- category: "fact",
2134
- content: "Alice uses C.",
2135
- confidence: 0.9,
2136
- tags: [],
2137
- }],
2138
- profileUpdates: [],
2139
- entities: [],
2140
- questions: [],
2141
- },
2142
- "Alice uses C++.",
2143
- );
2144
-
2145
- assert.deepEqual(cppResult.facts, []);
2146
- assert.deepEqual(plainCResult.facts, []);
2147
- });
2148
2115
 
2149
2116
  test("grounding requires unresolved questions on the asserted target turn", () => {
2150
2117
  const result = filterExtractionResultBySource(
@@ -2321,6 +2288,214 @@ test("grounding aligns predicates after medial source modifiers", () => {
2321
2288
  }
2322
2289
  });
2323
2290
 
2291
+ test("grounding normalizes regular third-person verb inflections", () => {
2292
+ for (const [source, content] of [
2293
+ ["Alice deploys Acme.", "Alice deployed Acme."],
2294
+ ["Alice designs Atlas.", "Alice designed Atlas."],
2295
+ ["Alice manages Beacon.", "Alice managed Beacon."],
2296
+ ["Alice plans Atlas.", "Alice planned Atlas."],
2297
+ ["Alice stops Beacon.", "Alice stopped Beacon."],
2298
+ ["Alice tries again.", "Alice tried again."],
2299
+ ["They add tags.", "They added tags."],
2300
+ ["They call Alice.", "They called Alice."],
2301
+ ["They fill forms.", "They filled forms."],
2302
+ ["Alice Smith plans Atlas.", "Alice Smith planned Atlas."],
2303
+ ["Alice King works at Acme.", "Alice King worked at Acme."],
2304
+ ]) {
2305
+ const result = filterExtractionResultBySource(
2306
+ {
2307
+ facts: [{ category: "fact", content, confidence: 0.9, tags: [] }],
2308
+ profileUpdates: [],
2309
+ entities: [],
2310
+ questions: [],
2311
+ },
2312
+ source,
2313
+ );
2314
+ assert.deepEqual(result.facts.map((fact) => fact.content), [content]);
2315
+ }
2316
+ });
2317
+
2318
+ test("grounding keeps silent-e compatibility out of proper identifiers", () => {
2319
+ for (const [source, content] of [
2320
+ ["Alice works at Strip.", "Alice works at Stripe."],
2321
+ ["Alice met Kat.", "Alice met Kate."],
2322
+ ["Alice owns Plan.", "Alice planned."],
2323
+ ]) {
2324
+ const result = filterExtractionResultBySource(
2325
+ {
2326
+ facts: [{ category: "fact", content, confidence: 0.9, tags: [] }],
2327
+ profileUpdates: [],
2328
+ entities: [],
2329
+ questions: [],
2330
+ },
2331
+ source,
2332
+ );
2333
+ assert.deepEqual(result.facts, []);
2334
+ }
2335
+ });
2336
+
2337
+ test("grounding preserves lowercase identifier tokens ending in s", () => {
2338
+ const result = filterExtractionResultBySource(
2339
+ {
2340
+ facts: [{ category: "fact", content: "alice deployed atla.", confidence: 0.9, tags: [] }],
2341
+ profileUpdates: [],
2342
+ entities: [],
2343
+ questions: [],
2344
+ },
2345
+ "alice deployed atlas.",
2346
+ );
2347
+
2348
+ assert.deepEqual(result.facts, []);
2349
+ });
2350
+
2351
+ test("grounding role normalization matches exact-marked identifiers case-insensitively", () => {
2352
+ const result = filterExtractionResultBySource(
2353
+ {
2354
+ facts: [],
2355
+ profileUpdates: ["User works at Stripe."],
2356
+ entities: [],
2357
+ questions: [],
2358
+ },
2359
+ "I work at stripe.",
2360
+ undefined,
2361
+ { profile: "I work at stripe.", identity: "" },
2362
+ );
2363
+
2364
+ assert.deepEqual(result.profileUpdates, ["User works at Stripe."]);
2365
+ });
2366
+
2367
+ test("grounding does not stem role-source identifiers ending in s", () => {
2368
+ for (const content of ["User uses Redi.", "User uses Redis."]) {
2369
+ const result = filterExtractionResultBySource(
2370
+ {
2371
+ facts: [],
2372
+ profileUpdates: [content],
2373
+ entities: [],
2374
+ questions: [],
2375
+ },
2376
+ "I use redis.",
2377
+ undefined,
2378
+ { profile: "I use redis.", identity: "" },
2379
+ );
2380
+ assert.deepEqual(
2381
+ result.profileUpdates,
2382
+ content.endsWith("Redis.") ? [content] : [],
2383
+ );
2384
+ }
2385
+ });
2386
+
2387
+ test("grounding does not treat role-source object plurals as predicates", () => {
2388
+ const result = filterExtractionResultBySource(
2389
+ {
2390
+ facts: [],
2391
+ profileUpdates: ["User planned."],
2392
+ entities: [],
2393
+ questions: [],
2394
+ },
2395
+ "I own plans.",
2396
+ undefined,
2397
+ { profile: "I own plans.", identity: "" },
2398
+ );
2399
+
2400
+ assert.deepEqual(result.profileUpdates, []);
2401
+ });
2402
+
2403
+ test("grounding falls back to explicitly role-labeled source sentences", () => {
2404
+ const result = filterExtractionResultBySource(
2405
+ {
2406
+ facts: [],
2407
+ profileUpdates: ["User prefers tea."],
2408
+ entities: [],
2409
+ questions: [],
2410
+ },
2411
+ "User prefers tea.",
2412
+ undefined,
2413
+ { profile: "", identity: "" },
2414
+ );
2415
+
2416
+ assert.deepEqual(result.profileUpdates, ["User prefers tea."]);
2417
+ });
2418
+
2419
+ test("grounding uses the main source when a role source is omitted", () => {
2420
+ const result = filterExtractionResultBySource(
2421
+ {
2422
+ facts: [],
2423
+ profileUpdates: ["User prefers tea."],
2424
+ entities: [],
2425
+ questions: [],
2426
+ },
2427
+ "I prefer tea.",
2428
+ undefined,
2429
+ { identity: "" },
2430
+ );
2431
+
2432
+ assert.deepEqual(result.profileUpdates, ["User prefers tea."]);
2433
+ });
2434
+
2435
+ test("grounding keeps C, C++, and C# identifiers pairwise distinct", () => {
2436
+ const identifiers = ["C", "C++", "C#"];
2437
+ for (const sourceIdentifier of identifiers) {
2438
+ for (const candidateIdentifier of identifiers) {
2439
+ const content = `Alice uses ${candidateIdentifier}.`;
2440
+ const result = filterExtractionResultBySource(
2441
+ {
2442
+ facts: [{ category: "fact", content, confidence: 0.9, tags: [] }],
2443
+ profileUpdates: [],
2444
+ entities: [],
2445
+ questions: [],
2446
+ },
2447
+ `Alice uses ${sourceIdentifier}.`,
2448
+ );
2449
+ assert.deepEqual(
2450
+ result.facts.map((fact) => fact.content),
2451
+ sourceIdentifier === candidateIdentifier ? [content] : [],
2452
+ );
2453
+ }
2454
+ }
2455
+ });
2456
+
2457
+
2458
+ test("grounding inherits coordinated subjects and predicates", () => {
2459
+ for (const [source, content] of [
2460
+ ["Alice works at Acme and owns Mars.", "Alice owns Mars."],
2461
+ ["Alice uses PostgreSQL, Redis, and Kafka.", "Alice uses Kafka."],
2462
+ ]) {
2463
+ const result = filterExtractionResultBySource(
2464
+ {
2465
+ facts: [{ category: "fact", content, confidence: 0.9, tags: [] }],
2466
+ profileUpdates: [],
2467
+ entities: [],
2468
+ questions: [],
2469
+ },
2470
+ source,
2471
+ );
2472
+ assert.deepEqual(result.facts.map((fact) => fact.content), [content]);
2473
+ }
2474
+ });
2475
+
2476
+ test("grounding does not inherit across explicit coordinated subjects", () => {
2477
+ for (const [source, content] of [
2478
+ ["Alice works at Acme and Bob owns Mars.", "Alice owns Mars."],
2479
+ ["Alice works at Acme and Bob sleeps.", "Alice sleeps."],
2480
+ ["Alice works at Acme, Bob called Alice, and designed Mars.", "Alice designed Mars."],
2481
+ ["Alice works at Acme and Bob can swim.", "Alice can swim."],
2482
+ ["Acme works with Alice, Acme Labs called Bob, and designed Mars.", "Acme designed Mars."],
2483
+ ["Alice works at Acme and Bob went home.", "Alice went home."],
2484
+ ["Alice works at Acme and Bob ate lunch.", "Alice ate lunch."],
2485
+ ]) {
2486
+ const result = filterExtractionResultBySource(
2487
+ {
2488
+ facts: [{ category: "fact", content, confidence: 0.9, tags: [] }],
2489
+ profileUpdates: [],
2490
+ entities: [],
2491
+ questions: [],
2492
+ },
2493
+ source,
2494
+ );
2495
+ assert.deepEqual(result.facts, []);
2496
+ }
2497
+ });
2498
+
2324
2499
  test("grounding requires causal evidence before removing why questions", () => {
2325
2500
  const question = { question: "Why did Alice deploy Acme?", context: "", priority: 0.5 };
2326
2501
  const unanswered = filterExtractionResultBySource(
@@ -2335,3 +2510,158 @@ test("grounding requires causal evidence before removing why questions", () => {
2335
2510
  );
2336
2511
  assert.deepEqual(answered.questions, []);
2337
2512
  });
2513
+
2514
+ test("grounding rejects partial assertions from source disjunctions", () => {
2515
+ for (const source of [
2516
+ "Alice uses Redis or PostgreSQL.",
2517
+ "Does Alice use Redis or PostgreSQL?\nYes.",
2518
+ ]) {
2519
+ for (const content of ["Alice uses Redis.", "Alice uses PostgreSQL."]) {
2520
+ const result = filterExtractionResultBySource(
2521
+ {
2522
+ facts: [{ category: "fact", content, confidence: 0.9, tags: [] }],
2523
+ profileUpdates: [],
2524
+ entities: [],
2525
+ questions: [],
2526
+ },
2527
+ source,
2528
+ );
2529
+ assert.deepEqual(result.facts, []);
2530
+ }
2531
+ }
2532
+
2533
+ for (const source of [
2534
+ "Alice uses Redis or PostgreSQL.",
2535
+ "Does Alice use Redis or PostgreSQL?\nYes.",
2536
+ ]) {
2537
+ const content = "Alice uses Redis or PostgreSQL.";
2538
+ const result = filterExtractionResultBySource(
2539
+ {
2540
+ facts: [{ category: "fact", content, confidence: 0.9, tags: [] }],
2541
+ profileUpdates: [],
2542
+ entities: [],
2543
+ questions: [],
2544
+ },
2545
+ source,
2546
+ );
2547
+ assert.deepEqual(result.facts.map((fact) => fact.content), [content]);
2548
+ }
2549
+
2550
+ const commonPrefix = filterExtractionResultBySource(
2551
+ {
2552
+ facts: [{
2553
+ category: "fact",
2554
+ content: "Alice uses Redis.",
2555
+ confidence: 0.9,
2556
+ tags: [],
2557
+ }],
2558
+ profileUpdates: [],
2559
+ entities: [],
2560
+ questions: [],
2561
+ },
2562
+ "Alice uses Redis for cache hits or misses.",
2563
+ );
2564
+ assert.deepEqual(
2565
+ commonPrefix.facts.map((fact) => fact.content),
2566
+ ["Alice uses Redis."],
2567
+ );
2568
+ });
2569
+
2570
+ test("grounding aligns object wh-question answers by subject and predicate", () => {
2571
+ for (const [questionText, answer, roleReversedAnswer] of [
2572
+ [
2573
+ "What database does Alice use?",
2574
+ "Alice uses PostgreSQL as the database.",
2575
+ "PostgreSQL uses Alice as the database.",
2576
+ ],
2577
+ ["Who does Alice employ?", "Alice employs Bob.", "Bob employs Alice."],
2578
+ ["Whom does Alice employ?", "Alice employs Bob.", "Bob employs Alice."],
2579
+ ["Who does Alice work with?", "Alice works with Bob.", "Bob works with Alice."],
2580
+ ["Whom does Alice connect to?", "Alice connects to Bob.", "Bob connects to Alice."],
2581
+ ]) {
2582
+ const question = { question: questionText, context: "", priority: 0.5 };
2583
+ const answered = filterExtractionResultBySource(
2584
+ { facts: [], profileUpdates: [], entities: [], questions: [question] },
2585
+ `${questionText}\n${answer}`,
2586
+ );
2587
+ assert.deepEqual(answered.questions, []);
2588
+
2589
+ const roleReversed = filterExtractionResultBySource(
2590
+ { facts: [], profileUpdates: [], entities: [], questions: [question] },
2591
+ `${questionText}\n${roleReversedAnswer}`,
2592
+ );
2593
+ assert.deepEqual(roleReversed.questions, [question]);
2594
+ }
2595
+ });
2596
+
2597
+ test("grounding does not stem verb-like object plurals", () => {
2598
+ const result = filterExtractionResultBySource(
2599
+ {
2600
+ facts: [{
2601
+ category: "fact",
2602
+ content: "Alice sells the plan.",
2603
+ confidence: 0.9,
2604
+ tags: [],
2605
+ }],
2606
+ profileUpdates: [],
2607
+ entities: [],
2608
+ questions: [],
2609
+ },
2610
+ "Alice sells plans.",
2611
+ );
2612
+
2613
+ assert.deepEqual(result.facts, []);
2614
+ });
2615
+
2616
+ test("grounding recognizes capitalized predicates in subjectless role fragments", () => {
2617
+ const result = filterExtractionResultBySource(
2618
+ {
2619
+ facts: [],
2620
+ profileUpdates: ["User uses Redis."],
2621
+ entities: [],
2622
+ questions: [],
2623
+ },
2624
+ "Uses Redis.",
2625
+ undefined,
2626
+ { profile: "Uses Redis.", identity: "" },
2627
+ );
2628
+
2629
+ assert.deepEqual(result.profileUpdates, ["User uses Redis."]);
2630
+ });
2631
+
2632
+ test("grounding keeps sentence-initial plural subjects distinct", () => {
2633
+ const result = filterExtractionResultBySource(
2634
+ {
2635
+ facts: [{
2636
+ category: "fact",
2637
+ content: "Plan is active.",
2638
+ confidence: 0.9,
2639
+ tags: [],
2640
+ }],
2641
+ profileUpdates: [],
2642
+ entities: [],
2643
+ questions: [],
2644
+ },
2645
+ "Plans are active.",
2646
+ );
2647
+
2648
+ assert.deepEqual(result.facts, []);
2649
+ });
2650
+
2651
+ test("grounding preserves plural identifiers after a proper-name copular subject", () => {
2652
+ for (const [source, content] of [
2653
+ ["Alice is atlas.", "Alice is atla."],
2654
+ ["Alice is the atlas.", "Alice is the atla."],
2655
+ ]) {
2656
+ const result = filterExtractionResultBySource(
2657
+ {
2658
+ facts: [{ category: "fact", content, confidence: 0.9, tags: [] }],
2659
+ profileUpdates: [],
2660
+ entities: [],
2661
+ questions: [],
2662
+ },
2663
+ source,
2664
+ );
2665
+ assert.deepEqual(result.facts, []);
2666
+ }
2667
+ });
@@ -205,6 +205,7 @@ test("extraction skips mechanical action telemetry without durable memory cues",
205
205
  profileUpdates: [],
206
206
  entities: [],
207
207
  questions: [],
208
+ extractionSkippedReason: "mechanical_telemetry",
208
209
  });
209
210
  });
210
211
 
@@ -64,6 +64,49 @@ test("aggregate watermark selects the most recent extraction across distinct nam
64
64
  }
65
65
  });
66
66
 
67
+ test("aggregate stats sum extraction counts and select the newest consolidation", async () => {
68
+ const fixture = await namespacedFixture();
69
+ try {
70
+ const result = await readAggregateExtractionWatermark({
71
+ config: fixture.config,
72
+ rootStorage: {
73
+ dir: fixture.memoryDir,
74
+ loadMeta: async () => ({
75
+ lastExtractionAt: "2026-07-20T12:00:00.000Z",
76
+ extractionCount: 2,
77
+ lastConsolidationAt: "2026-07-20T13:00:00.000Z",
78
+ }),
79
+ },
80
+ storageForNamespace: async (namespace, rootDir) => ({
81
+ dir: rootDir,
82
+ loadMeta: async () => ({
83
+ lastExtractionAt:
84
+ namespace === "team-a"
85
+ ? "2026-07-21T12:00:00.000Z"
86
+ : "2026-07-22T12:00:00.000Z",
87
+ extractionCount:
88
+ namespace === "team-a"
89
+ ? 3
90
+ : namespace === fixture.config.sharedNamespace
91
+ ? 7
92
+ : 5,
93
+ lastConsolidationAt:
94
+ namespace === "team-a"
95
+ ? "2026-07-23T13:00:00.000Z"
96
+ : "2026-07-21T13:00:00.000Z",
97
+ }),
98
+ }),
99
+ });
100
+
101
+ assert.deepEqual(result.rootStats, {
102
+ extractionCount: 17,
103
+ lastConsolidationAt: "2026-07-23T13:00:00.000Z",
104
+ });
105
+ } finally {
106
+ await rm(fixture.memoryDir, { recursive: true, force: true });
107
+ }
108
+ });
109
+
67
110
  test("a namespace-isolated extraction advances the daemon aggregate watermark", async () => {
68
111
  const fixture = await namespacedFixture();
69
112
  try {
@@ -89,7 +132,14 @@ test("a partial namespace read returns readFailed instead of a survivor's fresh
89
132
  try {
90
133
  const result = await readAggregateExtractionWatermark({
91
134
  config: fixture.config,
92
- rootStorage: storage(fixture.memoryDir, async () => "2026-07-23T12:00:00.000Z"),
135
+ rootStorage: {
136
+ dir: fixture.memoryDir,
137
+ loadMeta: async () => ({
138
+ lastExtractionAt: "2026-07-23T12:00:00.000Z",
139
+ extractionCount: 2,
140
+ lastConsolidationAt: null,
141
+ }),
142
+ },
93
143
  storageForNamespace: async (namespace) =>
94
144
  storage(fixture.namespaceDirs[namespace], async () => {
95
145
  if (namespace === "team-b") throw new Error("meta store unavailable");
@@ -101,6 +151,7 @@ test("a partial namespace read returns readFailed instead of a survivor's fresh
101
151
  assert.equal(result.readFailed, true);
102
152
  assert.match(result.readError ?? "", /namespace watermark unreadable/);
103
153
  assert.match(result.readError ?? "", /meta store unavailable/);
154
+ assert.equal(result.rootStats, undefined, "partial aggregate counters must not be reported");
104
155
  } finally {
105
156
  await rm(fixture.memoryDir, { recursive: true, force: true });
106
157
  }
@@ -136,17 +187,27 @@ test("default root capability check uses normalized aliases for migrated storage
136
187
  rootStorage: storage(fixture.memoryDir, async () => {
137
188
  throw new Error("inactive legacy root is unreadable");
138
189
  }),
139
- storageForNamespace: async (_namespace, rootDir) =>
140
- storage(rootDir, async () =>
141
- path.resolve(rootDir) === path.resolve(migratedDefaultDir)
142
- ? "2026-07-26T12:00:00.000Z"
143
- : "2026-07-24T12:00:00.000Z",
144
- ),
190
+ storageForNamespace: async (_namespace, rootDir) => ({
191
+ dir: rootDir,
192
+ loadMeta: async () => ({
193
+ lastExtractionAt:
194
+ path.resolve(rootDir) === path.resolve(migratedDefaultDir)
195
+ ? "2026-07-26T12:00:00.000Z"
196
+ : "2026-07-24T12:00:00.000Z",
197
+ extractionCount:
198
+ path.resolve(rootDir) === path.resolve(migratedDefaultDir) ? 7 : 11,
199
+ lastConsolidationAt: null,
200
+ }),
201
+ }),
145
202
  caps: { version: TOKEN_CAPABILITIES_VERSION, namespaces: ["default"] },
146
203
  });
147
204
 
148
205
  assert.equal(result.lastExtractionAt, "2026-07-26T12:00:00.000Z");
149
206
  assert.equal(result.readFailed, false);
207
+ assert.deepEqual(result.rootStats, {
208
+ extractionCount: 7,
209
+ lastConsolidationAt: null,
210
+ });
150
211
  } finally {
151
212
  await rm(fixture.memoryDir, { recursive: true, force: true });
152
213
  }
@@ -169,6 +230,88 @@ test("unparsable non-null timestamp in namespace store fails the aggregate read"
169
230
  }
170
231
  });
171
232
 
233
+ test("overflowed calendar timestamp in namespace store fails the aggregate read", async () => {
234
+ const fixture = await namespacedFixture();
235
+ try {
236
+ const result = await readAggregateExtractionWatermark({
237
+ config: fixture.config,
238
+ rootStorage: storage(fixture.memoryDir, async () => "2026-07-20T12:00:00.000Z"),
239
+ storageForNamespace: async (namespace) =>
240
+ storage(
241
+ fixture.namespaceDirs[namespace],
242
+ async () =>
243
+ namespace === "team-a"
244
+ ? "2026-02-30T12:00:00.000Z"
245
+ : "2026-07-25T12:00:00.000Z",
246
+ ),
247
+ });
248
+
249
+ assert.equal(result.lastExtractionAt, null);
250
+ assert.equal(result.readFailed, true);
251
+ assert.match(result.readError ?? "", /watermark timestamp invalid/);
252
+ } finally {
253
+ await rm(fixture.memoryDir, { recursive: true, force: true });
254
+ }
255
+ });
256
+
257
+ test("valid ISO timestamp variants remain eligible for aggregate watermark selection", async () => {
258
+ const fixture = await namespacedFixture();
259
+ try {
260
+ const result = await readAggregateExtractionWatermark({
261
+ config: fixture.config,
262
+ rootStorage: storage(fixture.memoryDir, async () => "2026-07-19t24:00:00z"),
263
+ storageForNamespace: async (namespace) =>
264
+ storage(
265
+ fixture.namespaceDirs[namespace],
266
+ async () =>
267
+ namespace === "team-a"
268
+ ? "2026-07-20t12:00:00z"
269
+ : "2026-07-20T08:00:00-0500",
270
+ ),
271
+ });
272
+
273
+ assert.equal(result.lastExtractionAt, "2026-07-20T08:00:00-0500");
274
+ assert.equal(result.readFailed, false);
275
+ } finally {
276
+ await rm(fixture.memoryDir, { recursive: true, force: true });
277
+ }
278
+ });
279
+
280
+ test("overflowed consolidation timestamp in namespace store fails the aggregate read", async () => {
281
+ const fixture = await namespacedFixture();
282
+ try {
283
+ const result = await readAggregateExtractionWatermark({
284
+ config: fixture.config,
285
+ rootStorage: {
286
+ dir: fixture.memoryDir,
287
+ loadMeta: async () => ({
288
+ lastExtractionAt: "2026-07-20T12:00:00.000Z",
289
+ extractionCount: 2,
290
+ lastConsolidationAt: "2026-07-20T13:00:00.000Z",
291
+ }),
292
+ },
293
+ storageForNamespace: async (namespace) => ({
294
+ dir: fixture.namespaceDirs[namespace],
295
+ loadMeta: async () => ({
296
+ lastExtractionAt: "2026-07-21T12:00:00.000Z",
297
+ extractionCount: 3,
298
+ lastConsolidationAt:
299
+ namespace === "team-a"
300
+ ? "2026-02-30T13:00:00.000Z"
301
+ : "2026-07-21T13:00:00.000Z",
302
+ }),
303
+ }),
304
+ });
305
+
306
+ assert.equal(result.lastExtractionAt, null);
307
+ assert.equal(result.readFailed, true);
308
+ assert.equal(result.rootStats, undefined);
309
+ assert.match(result.readError ?? "", /consolidation timestamp invalid/);
310
+ } finally {
311
+ await rm(fixture.memoryDir, { recursive: true, force: true });
312
+ }
313
+ });
314
+
172
315
  test("namespace discovery I/O failure is an explicit incomplete read", async () => {
173
316
  const memoryDir = await mkdtemp(path.join(os.tmpdir(), "remnic-extraction-watermark-enumeration-"));
174
317
  try {
package/src/extraction.ts CHANGED
@@ -1161,7 +1161,13 @@ export class ExtractionEngine {
1161
1161
  };
1162
1162
  if (renderedConversation.trim().length === 0) {
1163
1163
  log.debug("extraction skipped — conversation only contained non-memory work-layer context");
1164
- return { facts: [], profileUpdates: [], entities: [], questions: [] };
1164
+ return {
1165
+ facts: [],
1166
+ profileUpdates: [],
1167
+ entities: [],
1168
+ questions: [],
1169
+ extractionSkippedReason: "conversation_only_non_memory",
1170
+ };
1165
1171
  }
1166
1172
  if (
1167
1173
  lifecycleCaps.extractionTelemetryPrefilter &&
@@ -1173,6 +1179,7 @@ export class ExtractionEngine {
1173
1179
  profileUpdates: [],
1174
1180
  entities: [],
1175
1181
  questions: [],
1182
+ extractionSkippedReason: "mechanical_telemetry",
1176
1183
  };
1177
1184
  }
1178
1185
 
package/src/index.ts CHANGED
@@ -9,11 +9,6 @@
9
9
  * This package has ZERO OpenClaw imports — it can be consumed by
10
10
  * any host adapter (CLI, HTTP server, MCP server, etc.).
11
11
  *
12
- * Usage:
13
- * import { Orchestrator, parseConfig } from "@remnic/core";
14
- * const config = parseConfig({ memoryDir: "/tmp/mem" });
15
- * const orch = new Orchestrator(config);
16
- * await orch.initialize();
17
12
  */
18
13
 
19
14
  // ---------------------------------------------------------------------------
@@ -28,6 +23,8 @@ export { resolvePluginEntry, type PluginEntryResolverOptions } from "./plugin-en
28
23
 
29
24
  export { parseConfig, isOpenaiApiKeyDisabled, resolveEnvVars } from "./config.js";
30
25
  export { resolveRemnicConfigRecord } from "./config-record.js";
26
+ export * from "./external-wiki.js";
27
+ export * from "./external-wiki-cli.js";
31
28
  export {
32
29
  parseFlexibleIsoTimestamp,
33
30
  parseIsoOffsetTimestamp,
@@ -111,6 +108,7 @@ export {
111
108
  serializeEntityFile,
112
109
  type MemoryWriteResult,
113
110
  } from "./storage.js";
111
+ export { withRawEntityPageMutation } from "./storage/entity-canonical-id-lock.js";
114
112
  export {
115
113
  composeMemoryEnvelope,
116
114
  buildAccessWriteRequestFingerprint,
@@ -836,6 +834,7 @@ export {
836
834
  OFFLINE_SYNC_CHANGESET_FORMAT,
837
835
  OFFLINE_SYNC_FILE_CONTENT_MAX_CHUNK_BYTES,
838
836
  OFFLINE_SYNC_FILE_CONTENT_TRANSFER_CHUNK_BYTES,
837
+ OFFLINE_SYNC_MAX_MTIME_MS,
839
838
  OFFLINE_SYNC_SNAPSHOT_BASE_MAX_BODY_BYTES,
840
839
  OFFLINE_SYNC_SNAPSHOT_FORMAT,
841
840
  OFFLINE_SYNC_STATE_VERSION,
@@ -850,8 +849,10 @@ export {
850
849
  compileOfflineSyncExcludeGlobs,
851
850
  defaultOfflineSyncStatePath,
852
851
  fileStatesFromSnapshot,
852
+ filterOfflineSyncDeletionRevisions,
853
853
  globToRegExp,
854
854
  iterateOfflineSyncSnapshotFileRecords,
855
+ isInternalRemnicStatePath,
855
856
  normalizeOfflineSyncChangeset,
856
857
  normalizeOfflineSyncSnapshot,
857
858
  offlineSyncStateFromSnapshot,
@@ -868,9 +869,12 @@ export {
868
869
  type OfflineSyncChange,
869
870
  type OfflineSyncChangeset,
870
871
  type OfflineSyncConflict,
872
+ type OfflineSyncDeletionRevision,
873
+ type OfflineSyncFileDeleteTarget,
871
874
  type OfflineSyncFileDigest,
872
875
  type OfflineSyncFileRecord,
873
876
  type OfflineSyncFileContentChunk,
877
+ type OfflineSyncRecordDeletionRevision,
874
878
  type OfflineSyncFileState,
875
879
  type OfflineSyncFileTarget,
876
880
  type OfflineSyncFileWriteTarget,