@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
@@ -39,6 +39,10 @@ import {
39
39
  resolveCodingNamespaceOverlay,
40
40
  type CodingNamespaceOverlay,
41
41
  } from "./coding/coding-namespace.js";
42
+ import {
43
+ resolveCodingContextFromOptions,
44
+ type InterruptibleCodingScopeInput,
45
+ } from "./access-coding-context-resolution.js";
42
46
  import {
43
47
  handleCodingDecision,
44
48
  type DecisionSurfaceRequest,
@@ -72,7 +76,7 @@ import {
72
76
  type DeltaSurfaceResponse,
73
77
  type DeltaSurfaceStorage,
74
78
  } from "./coding/session-delta-surfaces.js";
75
- import { defaultGitInvoker } from "./coding/git-context.js";
79
+ import { defaultGitInvokerSync } from "./coding/git-context.js";
76
80
  import {
77
81
  createCorrectionService,
78
82
  isCorrectionFeatureEnabled,
@@ -180,7 +184,7 @@ import type {
180
184
  Orchestrator,
181
185
  RecallInvocationOptions,
182
186
  } from "./orchestrator.js";
183
- import { parseEntityFile, StorageManager } from "./storage.js";
187
+ import { parseEntityFile, parseFrontmatter, StorageManager } from "./storage.js";
184
188
  import {
185
189
  buildGraphSnapshot,
186
190
  type GraphSnapshotRequest,
@@ -283,6 +287,7 @@ import {
283
287
  buildOfflineSyncSnapshotFromBase,
284
288
  buildOfflineSyncSnapshotForPaths,
285
289
  iterateOfflineSyncSnapshotFileRecords,
290
+ filterOfflineSyncDeletionRevisions,
286
291
  OFFLINE_SYNC_SNAPSHOT_FORMAT,
287
292
  readOfflineSyncFileContentChunk,
288
293
  type OfflineSyncApplyFileContentChunkResult,
@@ -293,6 +298,10 @@ import {
293
298
  type OfflineSyncSnapshot,
294
299
  } from "./offline-sync.js";
295
300
  import { offlineSyncStorageForSnapshot } from "./offline-sync-impression-drain.js";
301
+ import {
302
+ createOfflineSyncManifestStream,
303
+ type OfflineSyncManifestStreamResponse,
304
+ } from "./access-offline-manifest.js";
296
305
  import {
297
306
  evaluateActionConfidence,
298
307
  type ActionConfidenceInput,
@@ -372,6 +381,8 @@ export interface EngramAccessRecallRequest {
372
381
  sessionKey?: string;
373
382
  namespace?: string;
374
383
  authenticatedPrincipal?: string;
384
+ /** Trusted connector identity resolved at the transport boundary. */
385
+ sourceConnector?: string;
375
386
  idempotencyKey?: string;
376
387
  topK?: number;
377
388
  mode?: RecallPlanMode | "auto";
@@ -781,6 +792,12 @@ export interface EngramAccessOfflineSyncSnapshotRequest {
781
792
  baseFiles?: OfflineSyncFileState[];
782
793
  }
783
794
 
795
+ export interface EngramAccessOfflineSyncManifestRequest {
796
+ namespace?: string;
797
+ principal?: string;
798
+ includeTranscripts?: boolean;
799
+ }
800
+
784
801
  export interface EngramAccessOfflineSyncFilesRequest {
785
802
  namespace?: string;
786
803
  principal?: string;
@@ -924,6 +941,7 @@ export interface CodingScopedWriteInput {
924
941
  cwd?: string;
925
942
  projectTag?: string;
926
943
  }
944
+
927
945
  export type { EngramAccessNamespaceWritableRequest } from "./access-namespace-preflight.js";
928
946
  /**
929
947
  * Internal, single-resolution plan describing the effective memory scope for a
@@ -1463,38 +1481,6 @@ export class EngramAccessService {
1463
1481
  return result.namespace;
1464
1482
  }
1465
1483
 
1466
- /**
1467
- * Resolve a coding context from `cwd`/`projectTag` WITHOUT persisting it to
1468
- * any session — the read-only half of `maybeAttachCodingContext`. Returns
1469
- * null when project scoping is off or nothing resolves. `projectTag` takes
1470
- * priority over `cwd` (matching `maybeAttachCodingContext`).
1471
- */
1472
- private async resolveCodingContextFromOptions(
1473
- options: CodingScopedWriteInput,
1474
- ): Promise<CodingContext | null> {
1475
- if (!this.orchestrator.config.codingMode?.projectScope) return null;
1476
- if (typeof options.projectTag === "string" && options.projectTag.trim().length > 0) {
1477
- const projectId = projectTagProjectId(options.projectTag);
1478
- return { projectId, branch: null, rootPath: projectId, defaultBranch: null };
1479
- }
1480
- if (typeof options.cwd === "string" && options.cwd.trim().length > 0) {
1481
- try {
1482
- const gitCtx = await resolveGitContext(options.cwd);
1483
- if (gitCtx) {
1484
- return {
1485
- projectId: gitCtx.projectId,
1486
- branch: gitCtx.branch,
1487
- rootPath: gitCtx.rootPath,
1488
- defaultBranch: gitCtx.defaultBranch,
1489
- };
1490
- }
1491
- } catch {
1492
- // resolveGitContext never throws, but stay defensive — not being in a
1493
- // repo is normal and must not break the write.
1494
- }
1495
- }
1496
- return null;
1497
- }
1498
1484
 
1499
1485
  /** Shared coding-scope derivation for the read/write resolvers below —
1500
1486
  * coding context, overlay, principal, scope-profile plan for an IMPLICIT
@@ -1503,7 +1489,7 @@ export class EngramAccessService {
1503
1489
  * of truth for the namespacesEnabled/projectScope gates (rule 22; keeps the
1504
1490
  * scattered-config-read ratchet flat). READ-ONLY: never mutates session. */
1505
1491
  private async resolveCodingScopeInputs(
1506
- request: CodingScopedWriteInput & {
1492
+ request: InterruptibleCodingScopeInput & {
1507
1493
  namespace?: string;
1508
1494
  sessionKey?: string;
1509
1495
  authenticatedPrincipal?: string;
@@ -1526,7 +1512,7 @@ export class EngramAccessService {
1526
1512
  resolveNamespaceCapabilities(this.orchestrator.config).namespaces &&
1527
1513
  this.orchestrator.config.codingMode?.projectScope
1528
1514
  ? this.orchestrator.getCodingContextForSession(request.sessionKey) ??
1529
- (await this.resolveCodingContextFromOptions(request))
1515
+ (await resolveCodingContextFromOptions(request))
1530
1516
  : null;
1531
1517
  const overlay =
1532
1518
  hasSession &&
@@ -1702,7 +1688,7 @@ export class EngramAccessService {
1702
1688
  * precedence), falling back to the per-call `cwd`/`projectTag`.
1703
1689
  */
1704
1690
  private async resolveMemoryScopePlan(
1705
- request: CodingScopedWriteInput & {
1691
+ request: InterruptibleCodingScopeInput & {
1706
1692
  namespace?: string;
1707
1693
  sessionKey?: string;
1708
1694
  authenticatedPrincipal?: string;
@@ -2393,15 +2379,24 @@ export class EngramAccessService {
2393
2379
  extractionWatermark,
2394
2380
  caps?.namespaces !== undefined ? undefined : this.extractionLivenessWarn,
2395
2381
  );
2382
+ let scopedDegradedReason: string | null = null;
2383
+ if (extraction.degraded) {
2384
+ if (extraction.degradedReason?.includes("watermark unreadable")) {
2385
+ scopedDegradedReason = "daemon extraction pipeline degraded; extraction watermark unreadable";
2386
+ } else if (extraction.degradedReason?.includes("buffer unreadable")) {
2387
+ scopedDegradedReason = "daemon extraction pipeline degraded; extraction buffer unreadable";
2388
+ } else {
2389
+ scopedDegradedReason =
2390
+ `${extraction.bufferedSessionCount} buffered session(s), ` +
2391
+ `${extraction.pendingTurnCount} turn(s) pending extraction`;
2392
+ }
2393
+ }
2396
2394
  const visibleExtraction =
2397
2395
  caps?.namespaces !== undefined
2398
2396
  ? {
2399
2397
  ...extraction,
2400
2398
  lastExtractionAt: null,
2401
- bufferedSessionCount: 0,
2402
- pendingTurnCount: 0,
2403
- oldestBufferedTurnAgeMs: null,
2404
- degradedReason: extraction.degraded ? "daemon extraction pipeline degraded" : null,
2399
+ degradedReason: scopedDegradedReason,
2405
2400
  }
2406
2401
  : extraction;
2407
2402
  // ONE call: the corpus array and the flag describing it must not come from
@@ -2844,6 +2839,7 @@ export class EngramAccessService {
2844
2839
  namespace?: string;
2845
2840
  budget?: number;
2846
2841
  authenticatedPrincipal?: string;
2842
+ sourceConnector?: string;
2847
2843
  /**
2848
2844
  * Disclosure depth used to shape per-result payload (issue #677
2849
2845
  * PR 3/4). When set, each X-ray result is decorated with the
@@ -3229,12 +3225,9 @@ export class EngramAccessService {
3229
3225
  } satisfies DeltaSurfaceStorage;
3230
3226
  },
3231
3227
  gitInvoker: (cwd, args) => {
3232
- // Reuse the existing defaultGitInvoker (2s timeout, never throws —
3233
- // the discipline git-context.ts already established). It returns
3234
- // { stdout, exitCode } so the handler can recover from non-zero
3235
- // exits without a try/catch.
3236
- const invoker = defaultGitInvoker();
3237
- return invoker(cwd, args);
3228
+ // Session-delta remains a synchronous pure calculation; use the
3229
+ // bounded synchronous invoker rather than the abortable scope resolver.
3230
+ return defaultGitInvokerSync()(cwd, args);
3238
3231
  },
3239
3232
  throwInputError: (msg) => { throw new EngramAccessInputError(msg); },
3240
3233
  });
@@ -3318,23 +3311,28 @@ export class EngramAccessService {
3318
3311
  }
3319
3312
  }
3320
3313
 
3321
- async correctionPlan(request: CorrectionRequest): Promise<CorrectionPlan> {
3322
- // Issue #1582 — resolve any `[m:xxxx]` handle in targetIds to its memory
3323
- // id against the caller's session BEFORE planning, so the planner only ever
3324
- // sees concrete ids. One shared resolve path (rule 22); a handle that
3325
- // misses or collides is an explicit input error, never silent (rule 34/51).
3314
+ async correctionPlan(
3315
+ request: CorrectionRequest,
3316
+ opts?: { abortSignal?: AbortSignal },
3317
+ ): Promise<CorrectionPlan> {
3326
3318
  if (request.targetIds?.some((id) => isHandleToken(id))) {
3327
3319
  const targetIds = request.targetIds.map((id) =>
3328
3320
  this.resolveMemoryIdOrHandleInput(id, request.sessionKey),
3329
3321
  );
3330
- return this.correctionService().plan({ ...request, targetIds });
3322
+ return this.correctionService().plan({ ...request, targetIds }, opts);
3331
3323
  }
3332
- return this.correctionService().plan(request);
3324
+ return this.correctionService().plan(request, opts);
3333
3325
  }
3334
3326
 
3335
3327
  async correctionApply(
3336
3328
  planId: string,
3337
- opts: { confirm?: boolean; namespace?: string; sessionKey?: string; principal?: string },
3329
+ opts: {
3330
+ confirm?: boolean;
3331
+ namespace?: string;
3332
+ sessionKey?: string;
3333
+ principal?: string;
3334
+ abortSignal?: AbortSignal;
3335
+ },
3338
3336
  ): Promise<CorrectionOutcome> {
3339
3337
  return this.correctionService().apply(planId, opts);
3340
3338
  }
@@ -4019,12 +4017,9 @@ export class EngramAccessService {
4019
4017
  // Explicit namespace pins the scope (resolveMemoryScopePlan returns early),
4020
4018
  // so the coding context is irrelevant — skip it to avoid false conflicts
4021
4019
  // when the session context changes under a namespace-pinned observe.
4022
- // resolveCodingContextFromOptions self-gates on projectScope (no scattered
4023
- // config read here).
4024
- effectiveCodingContext =
4025
- (typeof this.orchestrator.getCodingContextForSession === "function"
4026
- ? this.orchestrator.getCodingContextForSession(request.sessionKey)
4027
- : null) ?? (await this.resolveCodingContextFromOptions(request));
4020
+ // Reuse the write resolver's namespace/projectScope gates so context
4021
+ // ignored by runObserve cannot change the retry fingerprint.
4022
+ effectiveCodingContext = (await this.resolveCodingScopeInputs(request)).codingContext;
4028
4023
  }
4029
4024
  return this.handleIdempotentWrite<EngramAccessObserveResponse>({
4030
4025
  operation: "observe",
@@ -4330,6 +4325,10 @@ export class EngramAccessService {
4330
4325
  async extractionForceFlush(request: EngramAccessExtractionForceFlushRequest): Promise<EngramAccessExtractionForceFlushResponse> {
4331
4326
  return delegateExtractionForceFlush(this.accessObserveWriteSurface, request);
4332
4327
  }
4328
+ cancelPendingObservePreparations(sessionKey: string, scopeHint?: string): void {
4329
+ this.accessObserveWriteSurface.cancelPendingObservePreparations(sessionKey, scopeHint);
4330
+ }
4331
+
4333
4332
  cancelPendingObserveExtractions(
4334
4333
  sessionKey: string,
4335
4334
  principal?: string,
@@ -5469,6 +5468,8 @@ export class EngramAccessService {
5469
5468
  const resolvedNamespace = this.resolveReadableNamespace(options.namespace, options.principal);
5470
5469
  const storage = await offlineSyncStorageForSnapshot(this.orchestrator, resolvedNamespace);
5471
5470
  const storageHash = createHash("sha256").update(storage.dir).digest("hex").slice(0, 16);
5471
+ const deletions = [...await storage.readDeletionRevisions()]
5472
+ .map(([path, mtimeMs]) => ({ path, mtimeMs }));
5472
5473
  const snapshotBuilder = options.includeContent === false && options.baseFiles && options.baseFiles.length > 0
5473
5474
  ? buildOfflineSyncSnapshotFromBase
5474
5475
  : buildOfflineSyncSnapshot;
@@ -5482,6 +5483,7 @@ export class EngramAccessService {
5482
5483
  readFileDigest: async ({ filePath }) => storage.digestOfflineSyncFile(filePath),
5483
5484
  signal: options.signal,
5484
5485
  userExcludeRegexps: this.offlineSyncUserExcludes,
5486
+ deletions,
5485
5487
  });
5486
5488
  return {
5487
5489
  namespace: resolvedNamespace,
@@ -5495,6 +5497,13 @@ export class EngramAccessService {
5495
5497
  const resolvedNamespace = this.resolveReadableNamespace(options.namespace, options.principal);
5496
5498
  const storage = await offlineSyncStorageForSnapshot(this.orchestrator, resolvedNamespace);
5497
5499
  const storageHash = createHash("sha256").update(storage.dir).digest("hex").slice(0, 16);
5500
+ const deletions = await filterOfflineSyncDeletionRevisions({
5501
+ root: storage.dir,
5502
+ deletions: [...await storage.readDeletionRevisions()]
5503
+ .map(([path, mtimeMs]) => ({ path, mtimeMs })),
5504
+ includeTranscripts: options.includeTranscripts !== false,
5505
+ userExcludeRegexps: this.offlineSyncUserExcludes,
5506
+ });
5498
5507
  return {
5499
5508
  namespace: resolvedNamespace,
5500
5509
  format: OFFLINE_SYNC_SNAPSHOT_FORMAT,
@@ -5502,6 +5511,7 @@ export class EngramAccessService {
5502
5511
  createdAt: new Date().toISOString(),
5503
5512
  sourceId: `remnic:${resolvedNamespace}:${storageHash}`,
5504
5513
  includeTranscripts: options.includeTranscripts !== false,
5514
+ deletions,
5505
5515
  files: iterateOfflineSyncSnapshotFileRecords({
5506
5516
  root: storage.dir,
5507
5517
  includeContent: options.includeContent === true,
@@ -5513,6 +5523,19 @@ export class EngramAccessService {
5513
5523
  }),
5514
5524
  };
5515
5525
  }
5526
+ async offlineSyncManifestStream(
5527
+ options: EngramAccessOfflineSyncManifestRequest & { signal?: AbortSignal } = {},
5528
+ ): Promise<OfflineSyncManifestStreamResponse> {
5529
+ const namespace = this.resolveReadableNamespace(options.namespace, options.principal);
5530
+ return createOfflineSyncManifestStream(
5531
+ this.orchestrator,
5532
+ namespace,
5533
+ this.offlineSyncUserExcludes,
5534
+ options,
5535
+ parseFrontmatter,
5536
+ );
5537
+ }
5538
+
5516
5539
 
5517
5540
  async offlineSyncFiles(
5518
5541
  options: EngramAccessOfflineSyncFilesRequest,
@@ -5672,7 +5695,10 @@ export class EngramAccessService {
5672
5695
  readFile: async ({ filePath }) => storage.readOfflineSyncFile(filePath),
5673
5696
  readFileDigest: async ({ filePath }) => storage.digestOfflineSyncFile(filePath),
5674
5697
  writeFile: async ({ filePath, content }) => storage.writeOfflineSyncFile(filePath, content),
5675
- deleteFile: async ({ filePath }) => storage.deleteOfflineSyncFile(filePath),
5698
+ deleteFile: async ({ filePath, mtimeMs }) =>
5699
+ storage.deleteOfflineSyncFile(filePath, mtimeMs ?? null),
5700
+ recordDeletionRevision: async ({ filePath, mtimeMs }) =>
5701
+ storage.recordReplicatedDeletionRevision(filePath, mtimeMs),
5676
5702
  });
5677
5703
  return {
5678
5704
  namespace: resolvedNamespace,
@@ -130,6 +130,7 @@ export const MCP_TOOLS: readonly McpToolEntry[] = [
130
130
  { tool: "compression_guidelines_optimize", operation: "compression_guidelines_optimize" },
131
131
  { tool: "compression_guidelines_activate", operation: "compression_guidelines_activate" },
132
132
  { tool: "memory_search", operation: "memory_search" },
133
+ { tool: "external_wiki_search", operation: "external_wiki_search" },
133
134
  { tool: "memory_profile", operation: "memory_profile" },
134
135
  { tool: "memory_entities_list", operation: "memory_entities_list" },
135
136
  { tool: "memory_questions", operation: "memory_questions" },
@@ -175,10 +176,12 @@ export const MCP_TOOLS: readonly McpToolEntry[] = [
175
176
  export const HTTP_ROUTES: readonly HttpRouteEntry[] = [
176
177
  { method: "GET", pathname: "/engram/v1/adapters", operation: "adapters_status" },
177
178
  { method: "POST", pathname: "/engram/v1/recall", operation: "recall" },
179
+ { method: "POST", pathname: "/engram/v1/external-wikis/search", operation: "external_wiki_search" },
178
180
  { method: "POST", pathname: "/engram/v1/coding-context", operation: "set_coding_context" },
179
181
  { method: "POST", pathname: "/engram/v1/capsules/export", operation: "capsule_export" },
180
182
  { method: "POST", pathname: "/engram/v1/capsules/import", operation: "capsule_import" },
181
183
  { method: "GET", pathname: "/engram/v1/offline-sync/snapshot", operation: "offline_sync_snapshot" },
184
+ { method: "GET", pathname: "/engram/v1/offline-sync/capabilities", operation: "offline_sync_snapshot" },
182
185
  { method: "POST", pathname: "/engram/v1/offline-sync/snapshot", operation: "offline_sync_snapshot" },
183
186
  { method: "POST", pathname: "/engram/v1/offline-sync/files", operation: "offline_sync_files" },
184
187
  { method: "POST", pathname: "/engram/v1/offline-sync/file-content", operation: "offline_sync_file_content" },
@@ -252,6 +255,7 @@ export const HTTP_ROUTES: readonly HttpRouteEntry[] = [
252
255
  // The operation registration makes them visible to the boundary; the
253
256
  // streaming lifecycle is owned by the HTTP transport (handleGraphEventsSSE).
254
257
  { method: "GET", pathname: "/engram/v1/offline-sync/snapshot-stream", operation: "offline_sync_snapshot_stream" },
258
+ { method: "GET", pathname: "/engram/v1/offline-sync/manifest-stream", operation: "offline_sync_snapshot_stream" },
255
259
  { method: "GET", pathname: "/engram/v1/graph/events", operation: "graph_events" },
256
260
  { method: "POST", pathname: "/engram/v1/chat/message", operation: "chat_message" },
257
261
  { method: "GET", pathname: "/engram/v1/chat/events/:id", operation: "chat_events" },
@@ -783,6 +783,7 @@ export interface PromotionStorageProvider {
783
783
  */
784
784
  lineage: string[];
785
785
  sourceConnector?: string;
786
+ toolScoped?: true;
786
787
  }
787
788
  ): Promise<string>;
788
789
  }
@@ -920,6 +921,7 @@ export async function promoteMemory(options: PromoteMemoryOptions): Promise<Memo
920
921
  validAt: sourceMemory.frontmatter.valid_at,
921
922
  lineage: [options.sourceMemoryId],
922
923
  ...(sourceMemory.frontmatter.sourceConnector ? { sourceConnector: sourceMemory.frontmatter.sourceConnector } : {}),
924
+ ...(sourceMemory.frontmatter.toolScoped ? { toolScoped: true as const } : {}),
923
925
  });
924
926
  target.promoted = true;
925
927
  target.promotedMemoryId = promotedId;
@@ -7,8 +7,9 @@ import test from "node:test";
7
7
 
8
8
  import { runBinaryLifecyclePipeline } from "./pipeline.js";
9
9
  import { manifestPath, writeManifest } from "./manifest.js";
10
- import type { BinaryLifecycleConfig } from "./types.js";
10
+ import type { BinaryLifecycleConfig, PipelineResult } from "./types.js";
11
11
  import type { BinaryStorageBackend } from "./backend.js";
12
+ import { withEntityCanonicalMutationLock } from "../storage/entity-canonical-id-lock.js";
12
13
 
13
14
  const baseConfig: BinaryLifecycleConfig = {
14
15
  enabled: true,
@@ -666,6 +667,110 @@ test("binary lifecycle fails closed without overwriting an invalid manifest", as
666
667
  }
667
668
  });
668
669
 
670
+ test("binary lifecycle entity redirects wait for the canonical mutation lock", async () => {
671
+ const targetDir = await mkdtemp(path.join(os.tmpdir(), "remnic-binary-entity-lock-"));
672
+ const controlDir = await mkdtemp(path.join(os.tmpdir(), "remnic-binary-control-"));
673
+ const entityPath = path.join(targetDir, "entities", "binary-lock-target.md");
674
+ const originalEntity = "entity before redirect\n\n![img](../image.png)\n";
675
+ const redirectedEntity = "entity before redirect\n\n![img](remote/image.png)\n";
676
+ let targetPromise: Promise<PipelineResult> | undefined;
677
+
678
+ try {
679
+ await Promise.all([
680
+ mkdir(path.dirname(entityPath), { recursive: true }),
681
+ mkdir(path.join(targetDir, "state"), { recursive: true }),
682
+ ]);
683
+ await Promise.all([
684
+ writeFile(path.join(targetDir, "image.png"), "image", "utf8"),
685
+ writeFile(entityPath, originalEntity, "utf8"),
686
+ writeFile(path.join(controlDir, "image.png"), "image", "utf8"),
687
+ writeFile(path.join(controlDir, "note.md"), "![img](image.png)\n", "utf8"),
688
+ ]);
689
+ const manifest = {
690
+ version: 1 as const,
691
+ assets: [
692
+ {
693
+ originalPath: "image.png",
694
+ mirroredPath: "remote/image.png",
695
+ contentHash: sha256("image"),
696
+ sizeBytes: "image".length,
697
+ mimeType: "image/png",
698
+ mirroredAt: "2026-01-01T00:00:00.000Z",
699
+ status: "mirrored" as const,
700
+ },
701
+ ],
702
+ };
703
+ await Promise.all([
704
+ writeManifest(targetDir, manifest),
705
+ writeManifest(controlDir, manifest),
706
+ ]);
707
+
708
+ const redirectPrepared = Promise.withResolvers<void>();
709
+ const continueRedirect = Promise.withResolvers<void>();
710
+ let targetFinished = false;
711
+
712
+ await withEntityCanonicalMutationLock(path.join(targetDir, "state"), async () => {
713
+ targetPromise = runBinaryLifecyclePipeline(
714
+ targetDir,
715
+ baseConfig,
716
+ nestedRemoteBackend,
717
+ noopLogger,
718
+ {
719
+ readMarkdownFile: async (filePath) => {
720
+ const content = await readFile(filePath, "utf8");
721
+ if (filePath === entityPath) {
722
+ redirectPrepared.resolve();
723
+ await continueRedirect.promise;
724
+ }
725
+ return content;
726
+ },
727
+ },
728
+ );
729
+ void targetPromise.then(
730
+ () => {
731
+ targetFinished = true;
732
+ },
733
+ () => undefined,
734
+ );
735
+
736
+ await redirectPrepared.promise;
737
+ continueRedirect.resolve();
738
+ const controlResult = await runBinaryLifecyclePipeline(
739
+ controlDir,
740
+ baseConfig,
741
+ nestedRemoteBackend,
742
+ noopLogger,
743
+ );
744
+ assert.equal(controlResult.redirected, 1);
745
+ assert.equal(
746
+ await readFile(path.join(controlDir, "note.md"), "utf8"),
747
+ "![img](remote/image.png)\n",
748
+ );
749
+ assert.equal(
750
+ targetFinished,
751
+ false,
752
+ "the target redirect must not finish while its entity mutation lock is held",
753
+ );
754
+ assert.equal(
755
+ await readFile(entityPath, "utf8"),
756
+ originalEntity,
757
+ "the entity redirect write must not enter while the canonical mutation lock is held",
758
+ );
759
+ });
760
+
761
+ assert.ok(targetPromise);
762
+ const targetResult = await targetPromise;
763
+ assert.equal(targetResult.redirected, 1);
764
+ assert.equal(await readFile(entityPath, "utf8"), redirectedEntity);
765
+ } finally {
766
+ await targetPromise?.catch(() => undefined);
767
+ await Promise.all([
768
+ rm(targetDir, { recursive: true, force: true }),
769
+ rm(controlDir, { recursive: true, force: true }),
770
+ ]);
771
+ }
772
+ });
773
+
669
774
  const noopLogger = {
670
775
  info: () => {},
671
776
  warn: () => {},
@@ -27,6 +27,7 @@ import {
27
27
  repairContentAfterJournalMove,
28
28
  requestEntityCanonicalIdReconcile,
29
29
  } from "../storage/entity-canonical-id-references.js";
30
+ import { withRawEntityPageMutation } from "../storage/entity-canonical-id-lock.js";
30
31
 
31
32
  // Write-boundary journal cache for redirect rewrites (issue #2213).
32
33
  const historicalIdCache = new HistoricalEntityCanonicalIdCache();
@@ -338,6 +339,7 @@ async function stageRedirect(
338
339
  // keep their bytes (plus the redirect) untouched, and entities/ pages
339
340
  // get the bounded reconcile marker instead — their migrated surface
340
341
  // is relationship targets, not an entityRef frontmatter field.
342
+ await withRawEntityPageMutation(memoryDir, update.mdPath, async () => {
341
343
  const stateDir = path.join(memoryDir, "state");
342
344
  const kind = classifyEntityRefWritePath(memoryDir, update.mdPath);
343
345
  if (kind === "memory") {
@@ -371,6 +373,7 @@ async function stageRedirect(
371
373
  await requestEntityCanonicalIdReconcile(stateDir);
372
374
  }
373
375
  }
376
+ });
374
377
  // The redirect rewrote an on-disk memory file out-of-band (not through a
375
378
  // StorageManager mutation). Bump the corpus sentinel per write so a warm
376
379
  // hot-memories cache rescans — mid-batch too, never serving pre-redirect
@@ -331,6 +331,53 @@ test("resolveGitContext: custom invoker throwing on a later call → returns nul
331
331
  assert.equal(ctx, null);
332
332
  });
333
333
 
334
+ test("#2206 resolveGitContext forwards caller cancellation to an active git probe", async () => {
335
+ const abortController = new AbortController();
336
+ let forwardedSignal: AbortSignal | undefined;
337
+ const pendingProbe = Promise.withResolvers<{ stdout: string; exitCode: number }>();
338
+ const invoker: GitInvoker = (_cwd, _args, options) => {
339
+ forwardedSignal = options?.abortSignal;
340
+ options?.abortSignal?.addEventListener(
341
+ "abort",
342
+ () => pendingProbe.reject(options.abortSignal?.reason),
343
+ { once: true },
344
+ );
345
+ return pendingProbe.promise;
346
+ };
347
+
348
+ const resolving = resolveGitContext("/work/repo", {
349
+ invoker,
350
+ abortSignal: abortController.signal,
351
+ });
352
+ await Promise.resolve();
353
+ abortController.abort(new Error("caller cancelled"));
354
+
355
+ await assert.rejects(resolving, /caller cancelled/);
356
+ assert.equal(forwardedSignal, abortController.signal);
357
+ });
358
+
359
+ test("#2206 resolveGitContext gives each probe only the remaining deadline budget", async () => {
360
+ const timeouts: number[] = [];
361
+ let now = 1_000;
362
+ const invoker: GitInvoker = (cwd, args, options) => {
363
+ timeouts.push(options?.timeoutMs ?? -1);
364
+ now += 100;
365
+ const command = args.join(" ");
366
+ if (command === "rev-parse --show-toplevel") return { stdout: cwd, exitCode: 0 };
367
+ if (command === "rev-parse --abbrev-ref HEAD") return { stdout: "main", exitCode: 0 };
368
+ return { stdout: "", exitCode: 1 };
369
+ };
370
+
371
+ const context = await resolveGitContext("/work/repo", {
372
+ invoker,
373
+ deadlineMs: 1_400,
374
+ now: () => now,
375
+ });
376
+
377
+ assert.ok(context);
378
+ assert.deepEqual(timeouts, [400, 300, 200, 100]);
379
+ });
380
+
334
381
  // ──────────────────────────────────────────────────────────────────────────
335
382
  // resolveGitContext — happy path (origin, branch, default branch)
336
383
  // ──────────────────────────────────────────────────────────────────────────