@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
@@ -27,6 +27,7 @@ import { log } from "../logger.js";
27
27
  import { NamespaceStorageRouter } from "../namespaces/storage.js";
28
28
  import { NegativeExampleStore } from "../negative.js";
29
29
  import { qmdCollectionPathParts } from "./qmd-result-resolver.js";
30
+ import type { RecallRerankCoordinator, RecallResultPartitionSink } from "./recall-rerank-coordinator.js";
30
31
  import type { GraphRecallExpandedEntry } from "../recall-state.js";
31
32
  import { RelevanceStore } from "../relevance.js";
32
33
  import { RerankCache, rerankLocalOrNoop, reorderByRankedKeys } from "../rerank.js";
@@ -90,6 +91,7 @@ export interface RecallSearchPipelineDeps {
90
91
  * string at the input boundary (CLI / HTTP / MCP).
91
92
  */
92
93
  asOfMs?: number;
94
+ requestingConnector?: string;
93
95
  },
94
96
  ): Promise<QmdSearchResult[]>;
95
97
  buildConfiguredQmdSearchOptions(
@@ -100,6 +102,7 @@ export interface RecallSearchPipelineDeps {
100
102
  recallNamespaces: string[],
101
103
  ): Promise<QueryAwarePrefilter>;
102
104
  readonly config: PluginConfig;
105
+ readonly recallRerankCoordinator: Pick<RecallRerankCoordinator, "diversifyRecallResultsWithHeadroom">;
103
106
  diversifyAndLimitRecallResults(
104
107
  sectionId: string,
105
108
  results: QmdSearchResult[],
@@ -152,6 +155,7 @@ export interface RecallSearchPipelineDeps {
152
155
  allowDedicatedSurface?: boolean;
153
156
  asOfMs?: number;
154
157
  blockedPaths?: Set<string>;
158
+ requestingConnector?: string;
155
159
  },
156
160
  ): QmdSearchResult[];
157
161
  filterSearchResultsForRecall(
@@ -165,6 +169,7 @@ export interface RecallSearchPipelineDeps {
165
169
  abortSignal?: AbortSignal;
166
170
  dropUnresolved?: boolean;
167
171
  recallNamespaces?: readonly string[];
172
+ requestingConnector?: string;
168
173
  },
169
174
  ): Promise<{ results: QmdSearchResult[]; memoryByPath: Map<string, MemoryFile> }>;
170
175
  loadSearchResultMemoryMap(
@@ -719,6 +724,7 @@ export class RecallSearchPipelineCoordinator {
719
724
  onDegradation?: (degradation: SearchDegradation) => void;
720
725
  /** Issue #680 — historical recall point in ms-since-epoch. */
721
726
  asOfMs?: number;
727
+ requestingConnector?: string;
722
728
  /**
723
729
  * Optional out-parameter that receives the pre-MMR / pre-truncation
724
730
  * pool size captured inside the pipeline (issue #570 PR 1). The
@@ -728,6 +734,7 @@ export class RecallSearchPipelineCoordinator {
728
734
  * Unset by default so existing call sites are unaffected.
729
735
  */
730
736
  xrayPoolSizeSink?: { size: number };
737
+ resultPartitionSink?: RecallResultPartitionSink;
731
738
  /**
732
739
  * Issue #1577 — out-parameter that receives the TrustScore stage's
733
740
  * per-path trust map (admitted + quarantined) when the cold path runs
@@ -983,6 +990,7 @@ export class RecallSearchPipelineCoordinator {
983
990
  abortSignal: options.abortSignal,
984
991
  dropUnresolved: true,
985
992
  recallNamespaces: options.recallNamespaces,
993
+ requestingConnector: options.requestingConnector,
986
994
  },
987
995
  );
988
996
  results = boostInput.results;
@@ -1000,7 +1008,11 @@ export class RecallSearchPipelineCoordinator {
1000
1008
  options.recallNamespaces,
1001
1009
  options.prompt,
1002
1010
  boostInput.memoryByPath,
1003
- { allowLifecycleFiltered: true, asOfMs: options.asOfMs },
1011
+ {
1012
+ allowLifecycleFiltered: true,
1013
+ asOfMs: options.asOfMs,
1014
+ requestingConnector: options.requestingConnector,
1015
+ },
1004
1016
  ),
1005
1017
  new Promise<{ status: "timed_out" }>((resolve) => {
1006
1018
  timeoutHandle = setTimeout(
@@ -1014,7 +1026,11 @@ export class RecallSearchPipelineCoordinator {
1014
1026
  options.recallNamespaces,
1015
1027
  options.prompt,
1016
1028
  boostInput.memoryByPath,
1017
- { allowLifecycleFiltered: true, asOfMs: options.asOfMs },
1029
+ {
1030
+ allowLifecycleFiltered: true,
1031
+ asOfMs: options.asOfMs,
1032
+ requestingConnector: options.requestingConnector,
1033
+ },
1018
1034
  ));
1019
1035
  if (
1020
1036
  typeof boosted === "object" &&
@@ -1066,10 +1082,6 @@ export class RecallSearchPipelineCoordinator {
1066
1082
  );
1067
1083
  }
1068
1084
 
1069
- // Trust-reweighting — must fire on the cold fallback path too, or the
1070
- // feature flag produces divergent behavior by retrieval path (rule 39).
1071
- // TrustScore subsumes the Memory Worth multiplier; run exactly one.
1072
- // Fail-open on lookup errors.
1073
1085
  if (caps.recallTrustScore && results.length > 0) {
1074
1086
  try {
1075
1087
  const trustOutcome = await this.deps.applyTrustScoreRerank(results, options.recallNamespaces, boostInput.memoryByPath);
@@ -1090,16 +1102,23 @@ export class RecallSearchPipelineCoordinator {
1090
1102
  }
1091
1103
  }
1092
1104
 
1093
- // Apply MMR before final truncation so the cold fallback path mirrors
1094
- // the diversification policy applied in the hot QMD/embedding/recent
1095
- // paths. Running MMR post-slice would be unable to promote diverse
1096
- // candidates sitting just below the cutoff.
1097
1105
  if (options.xrayPoolSizeSink) {
1098
1106
  options.xrayPoolSizeSink.size = Math.max(
1099
1107
  options.xrayPoolSizeSink.size,
1100
1108
  results.length,
1101
1109
  );
1102
1110
  }
1111
+ if (options.resultPartitionSink) {
1112
+ const partition = this.deps.recallRerankCoordinator.diversifyRecallResultsWithHeadroom(
1113
+ "memories",
1114
+ results,
1115
+ options.recallResultLimit,
1116
+ options.prompt,
1117
+ caps,
1118
+ );
1119
+ options.resultPartitionSink.partition = partition;
1120
+ return partition.appliedResults;
1121
+ }
1103
1122
  return this.deps.diversifyAndLimitRecallResults(
1104
1123
  "memories",
1105
1124
  results,
@@ -1225,6 +1244,7 @@ export class RecallSearchPipelineCoordinator {
1225
1244
  allowDedicatedSurface?: boolean;
1226
1245
  asOfMs?: number;
1227
1246
  blockedPaths?: Set<string>;
1247
+ requestingConnector?: string;
1228
1248
  },
1229
1249
  ): QmdSearchResult[] {
1230
1250
  const lifecycleCaps = resolveMemoryLifecycleCapabilities(this.deps.config);
@@ -1234,6 +1254,7 @@ export class RecallSearchPipelineCoordinator {
1234
1254
  let dedicatedSurfaceFilteredCount = 0;
1235
1255
  let forgottenFilteredCount = 0;
1236
1256
  let blockedPathFilteredCount = 0;
1257
+ let connectorPartitionFilteredCount = 0;
1237
1258
  const filtered: QmdSearchResult[] = [];
1238
1259
  for (const r of results) {
1239
1260
  if (options?.blockedPaths && resultHasKey(options.blockedPaths, r)) {
@@ -1242,6 +1263,18 @@ export class RecallSearchPipelineCoordinator {
1242
1263
  }
1243
1264
  const memory = memoryForResult(memoryByPath, r);
1244
1265
  if (memory) {
1266
+ const memoryConnector = memory.frontmatter.sourceConnector?.trim();
1267
+ const requestingConnector = options?.requestingConnector?.trim();
1268
+ if (
1269
+ lifecycleCaps.extractionScopeClassification &&
1270
+ memory.frontmatter.toolScoped === true &&
1271
+ memoryConnector &&
1272
+ requestingConnector &&
1273
+ memoryConnector !== requestingConnector
1274
+ ) {
1275
+ connectorPartitionFilteredCount += 1;
1276
+ continue;
1277
+ }
1245
1278
  // Review-lifecycle statuses never enter active recall injection
1246
1279
  // (forgotten, pending_review, rejected, quarantined). Superseded and
1247
1280
  // archived have dedicated filters below. #1576: the faithfulness gate
@@ -1349,6 +1382,11 @@ export class RecallSearchPipelineCoordinator {
1349
1382
  sourceConnector: memory ? memory.frontmatter.sourceConnector : undefined,
1350
1383
  });
1351
1384
  }
1385
+ if (connectorPartitionFilteredCount > 0) {
1386
+ log.debug(
1387
+ `connector partition filter removed ${connectorPartitionFilteredCount} tool-scoped candidates from recall`,
1388
+ );
1389
+ }
1352
1390
  if (lifecycleFilteredCount > 0) {
1353
1391
  log.debug(
1354
1392
  `lifecycle retrieval filter removed ${lifecycleFilteredCount} stale/archived candidates`,
@@ -1393,6 +1431,7 @@ export class RecallSearchPipelineCoordinator {
1393
1431
  abortSignal?: AbortSignal;
1394
1432
  dropUnresolved?: boolean;
1395
1433
  recallNamespaces?: readonly string[];
1434
+ requestingConnector?: string;
1396
1435
  },
1397
1436
  ): Promise<{ results: QmdSearchResult[]; memoryByPath: Map<string, MemoryFile> }> {
1398
1437
  if (results.length === 0) {
@@ -1455,6 +1494,7 @@ export class RecallSearchPipelineCoordinator {
1455
1494
  * string at the input boundary (CLI / HTTP / MCP).
1456
1495
  */
1457
1496
  asOfMs?: number;
1497
+ requestingConnector?: string;
1458
1498
  },
1459
1499
  ): Promise<QmdSearchResult[]> {
1460
1500
  const lifecycleCaps = resolveMemoryLifecycleCapabilities(this.deps.config);
@@ -27,7 +27,7 @@ test("refreshNamespacesAfterConvergence runs one strict QMD batch and rebuilds e
27
27
  const storageCalls: string[] = [];
28
28
  const orchestrator = Object.create(Orchestrator.prototype) as Orchestrator;
29
29
  const internals = orchestrator as unknown as {
30
- config: { defaultNamespace: string };
30
+ config: { defaultNamespace: string; qmdEnabled: boolean };
31
31
  namespaceSearchRouter: {
32
32
  updateNamespacesDetailed(
33
33
  namespaces: string[],
@@ -37,7 +37,7 @@ test("refreshNamespacesAfterConvergence runs one strict QMD batch and rebuilds e
37
37
  };
38
38
  getStorage(namespace: string): Promise<StorageManager>;
39
39
  };
40
- internals.config = { defaultNamespace: "default" };
40
+ internals.config = { defaultNamespace: "default", qmdEnabled: true };
41
41
  internals.namespaceSearchRouter = {
42
42
  async updateNamespacesDetailed(namespaces, _execution, options) {
43
43
  qmdCalls.push({ namespaces, options });
@@ -85,6 +85,7 @@ test("refreshNamespacesAfterConvergence rebuilds projection when search is disab
85
85
  });
86
86
  const orchestrator = Object.create(Orchestrator.prototype) as Orchestrator;
87
87
  const internals = orchestrator as unknown as {
88
+ config: { qmdEnabled: boolean; searchBackend: "qmd" };
88
89
  namespaceSearchRouter: {
89
90
  updateNamespacesDetailed(
90
91
  namespaces: string[],
@@ -94,6 +95,7 @@ test("refreshNamespacesAfterConvergence rebuilds projection when search is disab
94
95
  };
95
96
  getStorage(namespace: string): Promise<StorageManager>;
96
97
  };
98
+ internals.config = { qmdEnabled: false, searchBackend: "qmd" };
97
99
  internals.namespaceSearchRouter = {
98
100
  async updateNamespacesDetailed() {
99
101
  return { backendCount: 0, eligibleNamespaces: [] };
@@ -112,3 +114,35 @@ test("refreshNamespacesAfterConvergence rebuilds projection when search is disab
112
114
  await rm(memoryDir, { recursive: true, force: true });
113
115
  }
114
116
  });
117
+
118
+ test("refreshNamespacesAfterConvergence rejects skipped namespaces when search is enabled", async () => {
119
+ const storageCalls: string[] = [];
120
+ const orchestrator = Object.create(Orchestrator.prototype) as Orchestrator;
121
+ const internals = orchestrator as unknown as {
122
+ config: { qmdEnabled: boolean };
123
+ namespaceSearchRouter: {
124
+ updateNamespacesDetailed(
125
+ namespaces: string[],
126
+ execution?: unknown,
127
+ options?: { strict?: boolean },
128
+ ): Promise<{ backendCount: number; eligibleNamespaces: string[] }>;
129
+ };
130
+ getStorage(namespace: string): Promise<StorageManager>;
131
+ };
132
+ internals.config = { qmdEnabled: true };
133
+ internals.namespaceSearchRouter = {
134
+ async updateNamespacesDetailed() {
135
+ return { backendCount: 1, eligibleNamespaces: ["default"] };
136
+ },
137
+ };
138
+ internals.getStorage = async (namespace) => {
139
+ storageCalls.push(namespace);
140
+ throw new Error("projection rebuild must not run after incomplete search refresh");
141
+ };
142
+
143
+ await assert.rejects(
144
+ () => orchestrator.refreshNamespacesAfterConvergence(["default", "team"]),
145
+ /search refresh skipped namespaces: team/,
146
+ );
147
+ assert.deepEqual(storageCalls, []);
148
+ });
@@ -76,6 +76,7 @@ import type {
76
76
  import {
77
77
  createSearchBackend,
78
78
  createConversationIndexRuntime,
79
+ isSearchBackendEnabled,
79
80
  } from "./search/factory.js";
80
81
  import { NoopSearchBackend } from "./search/noop-backend.js";
81
82
  import {
@@ -102,7 +103,7 @@ import { LifecyclePolicyCoordinator } from "./orchestration/lifecycle-policy-coo
102
103
  import { EntitySynthesisCoordinator } from "./orchestration/entity-synthesis-coordinator.js";
103
104
  import { RecallResultFormatter } from "./orchestration/recall-result-formatter.js";
104
105
  import { ConversationIndexCoordinator } from "./orchestration/conversation-index-coordinator.js";
105
- import { RecallRerankCoordinator } from "./orchestration/recall-rerank-coordinator.js";
106
+ import { RecallRerankCoordinator, type RecallResultPartitionSink } from "./orchestration/recall-rerank-coordinator.js";
106
107
  import {
107
108
  RecallSectionCoordinator,
108
109
  type RecallSectionAppendOptions,
@@ -1280,7 +1281,12 @@ export class Orchestrator {
1280
1281
  }
1281
1282
 
1282
1283
  async refreshNamespacesAfterConvergence(namespaces: readonly string[]): Promise<void> {
1283
- return refreshConvergedNamespaces(namespaces, this.namespaceSearchRouter, this.getStorage.bind(this));
1284
+ return refreshConvergedNamespaces(
1285
+ namespaces,
1286
+ this.namespaceSearchRouter,
1287
+ this.getStorage.bind(this),
1288
+ isSearchBackendEnabled(this.config),
1289
+ );
1284
1290
  }
1285
1291
 
1286
1292
 
@@ -3506,7 +3512,6 @@ export class Orchestrator {
3506
3512
  abortSignal,
3507
3513
  );
3508
3514
  }
3509
-
3510
3515
  private diversifyAndLimitRecallResults(
3511
3516
  sectionId: string,
3512
3517
  results: QmdSearchResult[],
@@ -3634,6 +3639,7 @@ export class Orchestrator {
3634
3639
  onDegradation?: (degradation: SearchDegradation) => void;
3635
3640
  /** Issue #680 — historical recall point in ms-since-epoch. */
3636
3641
  asOfMs?: number;
3642
+ requestingConnector?: string;
3637
3643
  /**
3638
3644
  * Optional out-parameter that receives the pre-MMR / pre-truncation
3639
3645
  * pool size captured inside the pipeline (issue #570 PR 1). The
@@ -3643,6 +3649,7 @@ export class Orchestrator {
3643
3649
  * Unset by default so existing call sites are unaffected.
3644
3650
  */
3645
3651
  xrayPoolSizeSink?: { size: number };
3652
+ resultPartitionSink?: RecallResultPartitionSink;
3646
3653
  /**
3647
3654
  * Issue #1577 — out-parameter that receives the TrustScore stage's
3648
3655
  * per-path trust map (admitted + quarantined) when the cold path runs
@@ -3713,6 +3720,7 @@ export class Orchestrator {
3713
3720
  allowDedicatedSurface?: boolean;
3714
3721
  asOfMs?: number;
3715
3722
  blockedPaths?: Set<string>;
3723
+ requestingConnector?: string;
3716
3724
  },
3717
3725
  ): QmdSearchResult[] {
3718
3726
  return this.recallSearchPipelineCoordinator.filterSearchResultsByRecallSafety(
@@ -3733,6 +3741,7 @@ export class Orchestrator {
3733
3741
  abortSignal?: AbortSignal;
3734
3742
  dropUnresolved?: boolean;
3735
3743
  recallNamespaces?: readonly string[];
3744
+ requestingConnector?: string;
3736
3745
  },
3737
3746
  ): Promise<{ results: QmdSearchResult[]; memoryByPath: Map<string, MemoryFile> }> {
3738
3747
  return this.recallSearchPipelineCoordinator.filterSearchResultsForRecall(
@@ -3758,6 +3767,7 @@ export class Orchestrator {
3758
3767
  * string at the input boundary (CLI / HTTP / MCP).
3759
3768
  */
3760
3769
  asOfMs?: number;
3770
+ requestingConnector?: string;
3761
3771
  },
3762
3772
  ): Promise<QmdSearchResult[]> {
3763
3773
  return this.recallSearchPipelineCoordinator.boostSearchResults(
@@ -31,6 +31,7 @@ import {
31
31
  pathMayCarryEntityRefs,
32
32
  requestEntityCanonicalIdReconcile,
33
33
  } from "./storage/entity-canonical-id-references.js";
34
+ import { withRawEntityPageMutation } from "./storage/entity-canonical-id-lock.js";
34
35
 
35
36
  // ---------------------------------------------------------------------------
36
37
  // Public interfaces
@@ -335,28 +336,13 @@ export async function revertToVersion(
335
336
  resolvedMemoryDir,
336
337
  );
337
338
 
338
- // Write the reverted content to the actual page
339
- await writeFile(pagePath, targetContent, "utf-8");
340
- // A revert overwrites a memory file out-of-band (not via a StorageManager
341
- // mutation), so bump the corpus sentinel when the reverted page lives under a
342
- // recall category dir — forcing a warm hot-memories cache to rescan on its
343
- // next read (issue #1902, Codex P1). Non-recall pages (entities/artifacts/
344
- // profiles) are not in the corpus scan, so they need no bump.
345
- // The hot-memories corpus covers the RECALL corpus, which excludes the
346
- // non-memory queue dirs (questions/). Use RECALL_FALLBACK_DIRS — a revert of a
347
- // questions/ page must NOT bump the recall corpus sentinel and force a rescan.
339
+ await withRawEntityPageMutation(resolvedMemoryDir, pagePath, async () => {
340
+ await writeFile(pagePath, targetContent, "utf-8");
341
+ });
348
342
  const revertedTop = relPath(pagePath, resolvedMemoryDir).split(path.sep)[0];
349
- const inRecallTier = (RECALL_FALLBACK_DIRS as readonly string[]).includes(revertedTop);
350
- if (inRecallTier) {
343
+ if ((RECALL_FALLBACK_DIRS as readonly string[]).includes(revertedTop)) {
351
344
  bumpMemoryCorpusVersionForDir(resolvedMemoryDir);
352
345
  }
353
- // A pre-migration snapshot can reintroduce a legacy entityRef — or, under
354
- // entities/, a legacy relationship target rewriteRelationshipTargets had
355
- // migrated — that the target's completed journal already renamed (issue
356
- // #2213); the revert keeps the snapshot bytes faithful, so request one
357
- // bounded reconcile pass instead. pathMayCarryEntityRefs is the migration's
358
- // own scan scope (hot recall + cold + archive + entities), which is wider
359
- // than the corpus bump above on purpose.
360
346
  if (pathMayCarryEntityRefs(resolvedMemoryDir, pagePath)) {
361
347
  await requestEntityCanonicalIdReconcile(path.join(resolvedMemoryDir, "state"));
362
348
  }
@@ -6,6 +6,7 @@ import type { MemoryFile, PluginConfig } from "../types.js";
6
6
  import type { StorageManager } from "../storage.js";
7
7
  import { inferIntentFromText, intentCompatibilityScore, isTaskInitiationIntent } from "../intent.js";
8
8
  import { isActiveMemoryStatus } from "../memory-lifecycle-ledger-utils.js";
9
+ import { canRecallToolScopedMemory } from "../tool-scoped-memory.js";
9
10
 
10
11
  function tokenOverlapScore(prompt: string, memoryText: string): number {
11
12
  const norm = (s: string) =>
@@ -44,6 +45,7 @@ export async function buildProcedureRecallSection(
44
45
  storage: StorageManager,
45
46
  prompt: string,
46
47
  config: PluginConfig,
48
+ options?: { partitionToolScoped?: boolean; requestingConnector?: string },
47
49
  ): Promise<string | null> {
48
50
  if (config.procedural?.enabled !== true) return null;
49
51
  const trimmed = typeof prompt === "string" ? prompt.trim() : "";
@@ -72,7 +74,9 @@ export async function buildProcedureRecallSection(
72
74
  .filter(
73
75
  (m) =>
74
76
  m.frontmatter.category === "procedure" &&
75
- isActiveMemoryStatus(m.frontmatter.status),
77
+ isActiveMemoryStatus(m.frontmatter.status) &&
78
+ (options?.partitionToolScoped !== true ||
79
+ canRecallToolScopedMemory(m.frontmatter, options.requestingConnector)),
76
80
  )
77
81
  .map((m) => ({ m, score: scoreProcedureForPrompt(m, trimmed, queryIntent) }))
78
82
  .filter((x) => x.score > 0.04)
@@ -44,6 +44,9 @@ function snapshotWithSourceSpan(): RecallXraySnapshot {
44
44
  snapshotId: "22222222-2222-2222-2222-222222222222",
45
45
  tierExplain: null,
46
46
  results: [resultWithSourceSpan()],
47
+ appliedResultLimit: 0,
48
+ appliedResults: [],
49
+ headroomResults: [],
47
50
  filters: [{ name: "recall-result-limit", considered: 1, admitted: 1 }],
48
51
  budget: { chars: 4096, used: 100 },
49
52
  };
@@ -13,11 +13,7 @@ test("QmdClient rechecks daemon availability before returning unavailable", asyn
13
13
  available: boolean;
14
14
  daemonAvailable: boolean;
15
15
  probeDaemon: () => Promise<boolean>;
16
- searchViaDaemon: (
17
- query: string,
18
- collection: string | undefined,
19
- maxResults: number,
20
- ) => Promise<QmdSearchResult[]>;
16
+ searchViaDaemon: (query: string, collection: string | undefined, maxResults: number) => Promise<QmdSearchResult[]>;
21
17
  };
22
18
  let probeCount = 0;
23
19
  internals.available = false;
@@ -49,13 +45,9 @@ type SubprocessInternals = {
49
45
  runQmdCommand: (
50
46
  args: string[],
51
47
  timeoutMs?: number,
52
- signal?: AbortSignal,
48
+ signal?: AbortSignal
53
49
  ) => Promise<{ stdout: string; stderr: string }>;
54
- searchViaSubprocess: (
55
- query: string,
56
- collection: string,
57
- maxResults: number,
58
- ) => Promise<QmdSearchResult[]>;
50
+ searchViaSubprocess: (query: string, collection: string, maxResults: number) => Promise<QmdSearchResult[]>;
59
51
  searchGlobalViaSubprocess: (query: string, maxResults: number) => Promise<QmdSearchResult[]>;
60
52
  };
61
53
 
@@ -79,7 +71,7 @@ test("updateStrict respects QMD update min-interval throttles", async () => {
79
71
  await client.updateStrict();
80
72
  await assert.rejects(
81
73
  () => client.updateStrict(),
82
- /QMD update skipped by min-interval gate|QMD update skipped by global min-interval gate/,
74
+ /QMD update skipped by min-interval gate|QMD update skipped by global min-interval gate/
83
75
  );
84
76
  } finally {
85
77
  client.resetUpdateThrottles();
@@ -100,10 +92,7 @@ test("embedCollectionStrict rejects QMD embed subprocess failures", async () =>
100
92
  };
101
93
 
102
94
  try {
103
- await assert.rejects(
104
- () => client.embedCollectionStrict("memories--project"),
105
- /embed subprocess failed/,
106
- );
95
+ await assert.rejects(() => client.embedCollectionStrict("memories--project"), /embed subprocess failed/);
107
96
  } finally {
108
97
  client.resetUpdateThrottles();
109
98
  }
@@ -120,7 +109,7 @@ test("embedCollectionStrict respects QMD embed min-interval throttles", async ()
120
109
  await client.embedCollectionStrict("memories--project");
121
110
  await assert.rejects(
122
111
  () => client.embedCollectionStrict("memories--project"),
123
- /QMD embed skipped by per-collection min-interval gate/,
112
+ /QMD embed skipped by per-collection min-interval gate/
124
113
  );
125
114
  } finally {
126
115
  client.resetUpdateThrottles();
@@ -198,6 +187,78 @@ test("ensureCollection rechecks collection state after auto-create failure", asy
198
187
  ]);
199
188
  });
200
189
 
190
+ test("QmdClient advertises isolated additional collection support", () => {
191
+ const client = new QmdClient("memories", 3, {});
192
+
193
+ assert.equal(client.supportsAdditionalCollections(), true);
194
+ });
195
+
196
+ test("QmdClient excludes a dedicated collection from global search", async () => {
197
+ const client = new QmdClient("memories", 3, {});
198
+ const calls = captureSubprocessArgs(client);
199
+ const controller = new AbortController();
200
+
201
+ await client.excludeCollectionFromGlobalSearch("external-wiki-reading", {
202
+ signal: controller.signal,
203
+ });
204
+
205
+ assert.deepEqual(calls, [["collection", "exclude", "external-wiki-reading"]]);
206
+ });
207
+
208
+ test("QmdClient reports status for a named collection", async () => {
209
+ const client = new QmdClient("memories", 3, {});
210
+ const internals = client as unknown as SubprocessInternals & {
211
+ qmdCapabilities: { safeStatusDeviceProbe: boolean };
212
+ };
213
+ const calls: string[][] = [];
214
+ internals.available = true;
215
+ internals.qmdCapabilities = { safeStatusDeviceProbe: true };
216
+ internals.runQmdCommand = async (args) => {
217
+ calls.push(args);
218
+ return { stdout: "Total: 12\nVectors: 10\nPending: 2", stderr: "" };
219
+ };
220
+
221
+ const status = await client.collectionStatus("external-wiki-reading");
222
+
223
+ assert.equal(status.totalFiles, 12);
224
+ assert.deepEqual(calls, [["status", "-c", "external-wiki-reading"]]);
225
+ });
226
+
227
+ test("QmdClient reports the configured root for a named collection", async () => {
228
+ const client = new QmdClient("memories", 3, {});
229
+ const internals = client as unknown as SubprocessInternals;
230
+ const calls: string[][] = [];
231
+ internals.available = true;
232
+ internals.runQmdCommand = async (args) => {
233
+ calls.push(args);
234
+ return {
235
+ stdout: [
236
+ "Collection: external-wiki-reading",
237
+ " Path: /srv/reading/wiki",
238
+ " Pattern: **/*.md",
239
+ " Include: no",
240
+ ].join("\n"),
241
+ stderr: "",
242
+ };
243
+ };
244
+
245
+ const root = await client.collectionRoot("external-wiki-reading");
246
+
247
+ assert.equal(root, "/srv/reading/wiki");
248
+ assert.deepEqual(calls, [["collection", "show", "external-wiki-reading"]]);
249
+ });
250
+
251
+ test("QmdClient removes a dedicated collection but refuses its primary collection", async () => {
252
+ const client = new QmdClient("memories", 3, {});
253
+ const calls = captureSubprocessArgs(client);
254
+
255
+ await assert.rejects(() => client.deleteCollection("memories"), /primary QMD collection/i);
256
+ const removed = await client.deleteCollection("external-wiki-reading");
257
+
258
+ assert.equal(removed, true);
259
+ assert.deepEqual(calls, [["collection", "remove", "external-wiki-reading"]]);
260
+ });
261
+
201
262
  test("subprocess fallback defaults to `qmd query` for scoped and global recall", async () => {
202
263
  const client = new QmdClient("memories", 3, {});
203
264
  const calls = captureSubprocessArgs(client);
package/src/qmd.test.ts CHANGED
@@ -12,6 +12,7 @@ import {
12
12
  parseQmdVersion,
13
13
  parseQmdExplain,
14
14
  resolveQmdCapabilities,
15
+ QmdClient,
15
16
  shouldAutoUpgradeQmd,
16
17
  } from "./qmd.js";
17
18
 
@@ -183,6 +184,29 @@ test("QmdClient preserves configured qmdPath diagnostics when all probes fail",
183
184
  }
184
185
  });
185
186
 
187
+ test("QmdClient strict configured path never probes PATH or fallback binaries", async () => {
188
+ const configuredPath = "/explicit/benchmark/qmd";
189
+ const probedPaths: string[] = [];
190
+ const client = new QmdClient("test-collection", 10, {
191
+ qmdPath: configuredPath,
192
+ qmdFallbackPaths: ["/implicit/fallback/qmd"],
193
+ qmdStrictPath: true,
194
+ });
195
+ const internals = client as unknown as {
196
+ runVersionProbe: (qmdPath: string) => Promise<{ stdout: string; stderr: string }>;
197
+ };
198
+ internals.runVersionProbe = async (qmdPath: string) => {
199
+ probedPaths.push(qmdPath);
200
+ if (qmdPath === configuredPath) {
201
+ throw Object.assign(new Error("configured binary missing"), { code: "ENOENT" });
202
+ }
203
+ return { stdout: "qmd 2.5.3", stderr: "" };
204
+ };
205
+
206
+ assert.equal(await client.probe(), false);
207
+ assert.deepEqual(probedPaths, [configuredPath]);
208
+ });
209
+
186
210
  test("QmdClient read-only availability failures preserve operational state", async () => {
187
211
  const { QmdClient } = await import("./qmd.js");
188
212
  const originalPath = process.env.PATH;