@remnic/core 9.69.10 → 9.69.11

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 (578) hide show
  1. package/dist/access-admin-ops-surface.d.ts +15 -13
  2. package/dist/access-admin-ops-surface.js +46 -34
  3. package/dist/access-authorization-probe.d.ts +13 -11
  4. package/dist/access-authorization-probe.js +47 -35
  5. package/dist/access-boundary.d.ts +13 -11
  6. package/dist/access-boundary.js +46 -34
  7. package/dist/access-cli.js +108 -97
  8. package/dist/access-cli.js.map +1 -1
  9. package/dist/access-coding-context-resolution.d.ts +2 -1
  10. package/dist/access-extraction-force-flush.d.ts +13 -11
  11. package/dist/access-extraction-force-flush.js +46 -34
  12. package/dist/access-health-types.d.ts +2 -1
  13. package/dist/access-http-lcm-compaction.d.ts +13 -11
  14. package/dist/access-http-lifecycle-flush.d.ts +13 -11
  15. package/dist/access-http-offline-stream.d.ts +13 -11
  16. package/dist/access-http-query.d.ts +3 -2
  17. package/dist/access-http-query.js +48 -36
  18. package/dist/access-http.d.ts +14 -12
  19. package/dist/access-http.js +67 -53
  20. package/dist/access-identity-continuity-surface.d.ts +10 -9
  21. package/dist/access-identity-continuity-surface.js +46 -34
  22. package/dist/access-lcm-surface.d.ts +13 -11
  23. package/dist/access-lcm-surface.js +46 -34
  24. package/dist/access-mcp-output-schemas.js +1 -1
  25. package/dist/access-mcp.d.ts +13 -11
  26. package/dist/access-mcp.js +58 -45
  27. package/dist/access-memory-search-fanout.d.ts +3 -2
  28. package/dist/{access-namespace-preflight-S8fhQcCo.d.ts → access-namespace-preflight-Cy0yPsaE.d.ts} +1 -1
  29. package/dist/access-namespace-preflight.d.ts +4 -3
  30. package/dist/access-namespace-preflight.js +46 -34
  31. package/dist/access-observe-write-surface.d.ts +15 -13
  32. package/dist/access-observe-write-surface.js +46 -34
  33. package/dist/access-offline-manifest.d.ts +10 -9
  34. package/dist/access-offline-manifest.js +3 -3
  35. package/dist/access-operations-batch.js +49 -37
  36. package/dist/access-operations.d.ts +14 -12
  37. package/dist/access-operations.js +54 -42
  38. package/dist/access-recall-concurrency.d.ts +13 -11
  39. package/dist/access-recall-concurrency.js +46 -34
  40. package/dist/access-recall-response.d.ts +13 -11
  41. package/dist/access-recall-response.js +46 -34
  42. package/dist/access-recall-surface.d.ts +13 -11
  43. package/dist/access-recall-surface.js +46 -34
  44. package/dist/access-schema.d.ts +18 -1
  45. package/dist/access-schema.js +7 -5
  46. package/dist/{access-service-DcfM0Vf0.d.ts → access-service-Cqfk3dD1.d.ts} +25 -8
  47. package/dist/access-service-helpers.d.ts +13 -11
  48. package/dist/access-service.d.ts +13 -11
  49. package/dist/access-service.js +46 -34
  50. package/dist/access-surface-catalog.d.ts +13 -11
  51. package/dist/access-surface-catalog.js +50 -36
  52. package/dist/access-surface-catalog.js.map +1 -1
  53. package/dist/access-wearables-meetings-surface.d.ts +4 -3
  54. package/dist/action-confidence.d.ts +2 -1
  55. package/dist/active-memory-bridge.d.ts +2 -1
  56. package/dist/active-recall.d.ts +2 -1
  57. package/dist/active-recall.js +6 -5
  58. package/dist/active-recall.js.map +1 -1
  59. package/dist/adapters/index.js +4 -4
  60. package/dist/adapters/registry.js +2 -2
  61. package/dist/ambient-provenance.d.ts +2 -1
  62. package/dist/artifact-search.d.ts +2 -1
  63. package/dist/behavior-learner.d.ts +2 -1
  64. package/dist/behavior-signals.d.ts +2 -1
  65. package/dist/bootstrap.d.ts +10 -9
  66. package/dist/briefing-window.d.ts +3 -2
  67. package/dist/briefing.d.ts +3 -2
  68. package/dist/briefing.js +13 -13
  69. package/dist/buffer-surprise-report.d.ts +2 -1
  70. package/dist/buffer-turn-helpers.d.ts +2 -1
  71. package/dist/buffer.d.ts +3 -2
  72. package/dist/bulk-import/index.d.ts +4 -3
  73. package/dist/calibration.d.ts +2 -1
  74. package/dist/capabilities.d.ts +2 -1
  75. package/dist/{catalog-BmBXTtOs.d.ts → catalog-9X8WpZNO.d.ts} +1 -1
  76. package/dist/causal-behavior.d.ts +2 -1
  77. package/dist/causal-behavior.js +2 -2
  78. package/dist/causal-chain.js +2 -2
  79. package/dist/causal-consolidation.d.ts +2 -1
  80. package/dist/causal-consolidation.js +16 -16
  81. package/dist/causal-retrieval.js +2 -2
  82. package/dist/causal-trajectory-graph.d.ts +2 -1
  83. package/dist/causal-trajectory-graph.js +2 -2
  84. package/dist/causal-trajectory.js +1 -1
  85. package/dist/{chunk-D5VPIJN3.js → chunk-227WJVPY.js} +2 -2
  86. package/dist/{chunk-Y3BWCIY2.js → chunk-2EHDPHMD.js} +2 -2
  87. package/dist/{chunk-2LKW6OO7.js → chunk-2XJDAEAM.js} +2 -2
  88. package/dist/{chunk-P23JWI3D.js → chunk-3ITTF7YH.js} +52 -52
  89. package/dist/{chunk-3DT2F5OI.js → chunk-3YKOFCKP.js} +11 -6
  90. package/dist/chunk-3YKOFCKP.js.map +1 -0
  91. package/dist/{chunk-NGP2FPB2.js → chunk-4UVDLNHQ.js} +2 -2
  92. package/dist/{chunk-HXWOVCS6.js → chunk-4WIKMOE3.js} +44 -22
  93. package/dist/chunk-4WIKMOE3.js.map +1 -0
  94. package/dist/{chunk-6RPB2TDG.js → chunk-5HO3QBAD.js} +11 -6
  95. package/dist/chunk-5HO3QBAD.js.map +1 -0
  96. package/dist/{chunk-AYWPIH4M.js → chunk-5P2KNFJZ.js} +149 -25
  97. package/dist/chunk-5P2KNFJZ.js.map +1 -0
  98. package/dist/{chunk-FJMIQTMH.js → chunk-5YQ7RFSO.js} +2 -2
  99. package/dist/{chunk-KQAFEZQX.js → chunk-7LCGFUMB.js} +4 -4
  100. package/dist/{chunk-EESYTBXV.js → chunk-7NCUHD5U.js} +2 -2
  101. package/dist/{chunk-X574KX52.js → chunk-7ZMU4XQT.js} +2 -2
  102. package/dist/{chunk-SG3Z67FB.js → chunk-APZXA4WI.js} +2 -2
  103. package/dist/{chunk-2QSZNTDO.js → chunk-AU7Q3LSC.js} +4 -4
  104. package/dist/{chunk-VGMRI4J6.js → chunk-B75VCEX5.js} +4 -4
  105. package/dist/{chunk-D35XLYQ7.js → chunk-BE4Y6GK6.js} +11 -11
  106. package/dist/{chunk-ELKD5PCD.js → chunk-BEXFNGQ3.js} +3 -3
  107. package/dist/{chunk-U5SRTYFS.js → chunk-BFDOBESV.js} +2 -2
  108. package/dist/{chunk-OLT3YTDH.js → chunk-BIJAWZYW.js} +4 -4
  109. package/dist/{chunk-FU2NYFX6.js → chunk-BO4PWIJY.js} +3 -3
  110. package/dist/{chunk-JMAG7WZ7.js → chunk-BX6GW4KC.js} +2 -2
  111. package/dist/chunk-CC37E3QM.js +198 -0
  112. package/dist/chunk-CC37E3QM.js.map +1 -0
  113. package/dist/{chunk-J2R275FN.js → chunk-CTCGHNWN.js} +4 -4
  114. package/dist/{chunk-X5PIDJ3L.js → chunk-DA4ZMCBU.js} +3 -3
  115. package/dist/{chunk-IVAW3HBF.js → chunk-DH3V7RCQ.js} +21 -13
  116. package/dist/chunk-DH3V7RCQ.js.map +1 -0
  117. package/dist/chunk-DXFG2VGN.js +50 -0
  118. package/dist/chunk-DXFG2VGN.js.map +1 -0
  119. package/dist/{chunk-4OFKZAJG.js → chunk-EAARGPWI.js} +2 -1
  120. package/dist/chunk-EAARGPWI.js.map +1 -0
  121. package/dist/{chunk-H6RSANGQ.js → chunk-ETZ7KKOS.js} +2 -2
  122. package/dist/{chunk-K4E3Y3ZX.js → chunk-G7VEQEMG.js} +2 -1
  123. package/dist/chunk-G7VEQEMG.js.map +1 -0
  124. package/dist/{chunk-XZBXINXZ.js → chunk-GIC6BASP.js} +4 -4
  125. package/dist/{chunk-SXQZMC7R.js → chunk-GR4C3FHT.js} +2 -2
  126. package/dist/{chunk-7DYGPGCT.js → chunk-H5IIBGDM.js} +2 -2
  127. package/dist/{chunk-CNNXMIS6.js → chunk-HFRGCNFY.js} +10 -10
  128. package/dist/chunk-HRATODNO.js +28 -0
  129. package/dist/chunk-HRATODNO.js.map +1 -0
  130. package/dist/{chunk-MAG6M3B6.js → chunk-HTOWFFAI.js} +2 -2
  131. package/dist/chunk-HUSTM6PU.js +27 -0
  132. package/dist/chunk-HUSTM6PU.js.map +1 -0
  133. package/dist/{chunk-FOCMJEHH.js → chunk-I4QAH4SY.js} +3 -3
  134. package/dist/{chunk-FSGCXGK6.js → chunk-I6DUKBUI.js} +2 -2
  135. package/dist/{chunk-VI637ILW.js → chunk-IN673LEP.js} +48 -15
  136. package/dist/chunk-IN673LEP.js.map +1 -0
  137. package/dist/{chunk-6FUMA6AA.js → chunk-JGXMA6HL.js} +2 -2
  138. package/dist/{chunk-TA7UZZMW.js → chunk-JHTF22NQ.js} +2 -2
  139. package/dist/{chunk-DZ3CNJPB.js → chunk-LDOQE34V.js} +2 -2
  140. package/dist/{chunk-MEW53VQJ.js → chunk-LDWIPYJ6.js} +7 -7
  141. package/dist/{chunk-227UFSEQ.js → chunk-LEPOP46W.js} +4 -4
  142. package/dist/{chunk-KJTSWJZN.js → chunk-LF6SHWVV.js} +2 -2
  143. package/dist/{chunk-G6OZZX7P.js → chunk-LJAP4KSW.js} +2 -2
  144. package/dist/{chunk-NV6BTBUI.js → chunk-LJNLLNEM.js} +2 -2
  145. package/dist/{chunk-FFFZEF6B.js → chunk-LUDXSSTW.js} +2 -2
  146. package/dist/{chunk-PCH2CVCS.js → chunk-LWBSEYW3.js} +6 -6
  147. package/dist/chunk-M6RORUO5.js +59 -0
  148. package/dist/chunk-M6RORUO5.js.map +1 -0
  149. package/dist/{chunk-FMUJGGKW.js → chunk-M7DGN6JZ.js} +3 -3
  150. package/dist/{chunk-TZIHB2LP.js → chunk-MNH2GM4O.js} +5 -5
  151. package/dist/{chunk-RACZB5HT.js → chunk-N37X5RU7.js} +4 -4
  152. package/dist/{chunk-LK4TOYPU.js → chunk-NF3NMAG7.js} +2 -2
  153. package/dist/{chunk-QL4U3SJA.js → chunk-NHLEFBE2.js} +11 -3
  154. package/dist/chunk-NHLEFBE2.js.map +1 -0
  155. package/dist/chunk-NN5CQTAJ.js +42 -0
  156. package/dist/chunk-NN5CQTAJ.js.map +1 -0
  157. package/dist/{chunk-AG46P24C.js → chunk-NNBZS3DY.js} +4 -4
  158. package/dist/{chunk-LZ2JTO7N.js → chunk-OASGWNYL.js} +2 -2
  159. package/dist/chunk-OEDW4ER7.js +62 -0
  160. package/dist/chunk-OEDW4ER7.js.map +1 -0
  161. package/dist/{chunk-C2JCVZWX.js → chunk-OLBZ2WGG.js} +2 -2
  162. package/dist/{chunk-Z3SQEEB6.js → chunk-OUKBMQ2O.js} +2 -2
  163. package/dist/{chunk-XXW32OL7.js → chunk-OYV6RKPM.js} +1 -1
  164. package/dist/chunk-OYV6RKPM.js.map +1 -0
  165. package/dist/{chunk-2Z3DG5CQ.js → chunk-P6GKRT2H.js} +1 -1
  166. package/dist/{chunk-UGA6PZTX.js → chunk-P7LVYPIX.js} +3 -3
  167. package/dist/{chunk-26JWBSWD.js → chunk-PGCZLHRB.js} +11 -3
  168. package/dist/chunk-PGCZLHRB.js.map +1 -0
  169. package/dist/{chunk-VE45LRCE.js → chunk-QRDSXR3V.js} +2 -2
  170. package/dist/{chunk-KS67VHXA.js → chunk-QUVWFZOU.js} +2 -2
  171. package/dist/{chunk-AI4QFDPR.js → chunk-R7FXPG4T.js} +2 -2
  172. package/dist/chunk-RF2SMMPP.js +37 -0
  173. package/dist/chunk-RF2SMMPP.js.map +1 -0
  174. package/dist/{chunk-X66BHMAU.js → chunk-RJ57OOCD.js} +2 -2
  175. package/dist/chunk-S5G2LAL7.js +354 -0
  176. package/dist/chunk-S5G2LAL7.js.map +1 -0
  177. package/dist/{chunk-VXMKW7YN.js → chunk-TRLCMLX7.js} +2 -2
  178. package/dist/{chunk-ELCMVOQT.js → chunk-V3HUBF7T.js} +2 -2
  179. package/dist/{chunk-KMIAD7JR.js → chunk-VHAKBUBD.js} +2 -2
  180. package/dist/{chunk-GS5IFIVE.js → chunk-VYD63IFH.js} +3 -3
  181. package/dist/chunk-VZIAVM72.js +49 -0
  182. package/dist/chunk-VZIAVM72.js.map +1 -0
  183. package/dist/chunk-WTWQA7BB.js +28 -0
  184. package/dist/chunk-WTWQA7BB.js.map +1 -0
  185. package/dist/{chunk-TBRG2SYY.js → chunk-X4FIZAVQ.js} +94 -52
  186. package/dist/chunk-X4FIZAVQ.js.map +1 -0
  187. package/dist/{chunk-WSFPNCRA.js → chunk-XFPHV65N.js} +2 -2
  188. package/dist/{chunk-JCUG7AXZ.js → chunk-XJJYSX6F.js} +4 -4
  189. package/dist/{chunk-I6DURYZI.js → chunk-XMIAU4CO.js} +2 -2
  190. package/dist/{chunk-PJIGYPO5.js → chunk-XQGFIAG7.js} +2 -2
  191. package/dist/{chunk-B2URC6LJ.js → chunk-YWN3GYI2.js} +2 -2
  192. package/dist/{chunk-TG6JEJDV.js → chunk-Z33VUMKY.js} +3 -3
  193. package/dist/{cli-CFpMhqz5.d.ts → cli-Dk-lM_tI.d.ts} +5 -5
  194. package/dist/cli.d.ts +15 -13
  195. package/dist/cli.js +88 -77
  196. package/dist/coding/export-okf-codegraph.d.ts +2 -1
  197. package/dist/coding/export-okf-codegraph.js +13 -13
  198. package/dist/coding/pre-action-gate.d.ts +2 -1
  199. package/dist/coding/pre-action-gate.js +2 -2
  200. package/dist/compounding/engine.d.ts +3 -2
  201. package/dist/compounding/engine.js +15 -14
  202. package/dist/compounding/preference-consolidator.d.ts +2 -1
  203. package/dist/compression-optimizer.d.ts +2 -1
  204. package/dist/config.d.ts +2 -1
  205. package/dist/config.js +6 -5
  206. package/dist/connectors/codex-materialize-runner.d.ts +2 -1
  207. package/dist/connectors/codex-materialize-runner.js +13 -13
  208. package/dist/connectors/codex-materialize.d.ts +2 -1
  209. package/dist/connectors/index.d.ts +2 -1
  210. package/dist/connectors/index.js +13 -13
  211. package/dist/consolidation-provenance-check.d.ts +3 -2
  212. package/dist/consolidation-undo.d.ts +3 -2
  213. package/dist/contradiction/index.d.ts +4 -3
  214. package/dist/converge-config.d.ts +2 -1
  215. package/dist/convergence-refresh.d.ts +3 -2
  216. package/dist/convergence-refresh.js +15 -15
  217. package/dist/conversation-index/backend.d.ts +2 -1
  218. package/dist/conversation-index/backend.js +2 -2
  219. package/dist/conversation-index/chunker.d.ts +2 -1
  220. package/dist/conversation-index/faiss-adapter.d.ts +2 -1
  221. package/dist/conversation-index/indexer.d.ts +2 -1
  222. package/dist/conversation-index/search.d.ts +2 -1
  223. package/dist/corpus-watermark.d.ts +2 -1
  224. package/dist/corpus-watermark.js +15 -15
  225. package/dist/cross-lingual-recall.d.ts +2 -1
  226. package/dist/day-summary.d.ts +2 -1
  227. package/dist/deep-recall-config.d.ts +32 -0
  228. package/dist/deep-recall-config.js +12 -0
  229. package/dist/deep-recall-http-glue.d.ts +170 -0
  230. package/dist/deep-recall-http-glue.js +31 -0
  231. package/dist/deep-recall-http-glue.js.map +1 -0
  232. package/dist/deep-recall-mcp-tools.d.ts +144 -0
  233. package/dist/deep-recall-mcp-tools.js +8 -0
  234. package/dist/deep-recall-mcp-tools.js.map +1 -0
  235. package/dist/deep-recall-policy-llm.d.ts +37 -0
  236. package/dist/deep-recall-policy-llm.js +19 -0
  237. package/dist/deep-recall-policy-llm.js.map +1 -0
  238. package/dist/deep-recall-renderer.d.ts +16 -0
  239. package/dist/deep-recall-renderer.js +8 -0
  240. package/dist/deep-recall-renderer.js.map +1 -0
  241. package/dist/deep-recall-seeds.d.ts +83 -0
  242. package/dist/deep-recall-seeds.js +8 -0
  243. package/dist/deep-recall-seeds.js.map +1 -0
  244. package/dist/deep-recall.d.ts +97 -0
  245. package/dist/deep-recall.js +13 -0
  246. package/dist/deep-recall.js.map +1 -0
  247. package/dist/delinearize.d.ts +2 -1
  248. package/dist/dependency-propagation-config.d.ts +2 -1
  249. package/dist/{dependency-propagation-delivery-BC3bCEet.d.ts → dependency-propagation-delivery-BZGUecZf.d.ts} +1 -1
  250. package/dist/direct-answer-wiring.d.ts +2 -1
  251. package/dist/direct-answer.d.ts +2 -1
  252. package/dist/embedding-fallback.d.ts +2 -1
  253. package/dist/enrichment/index.d.ts +2 -1
  254. package/dist/entity-origin-fields.d.ts +2 -1
  255. package/dist/entity-retrieval.d.ts +3 -2
  256. package/dist/entity-retrieval.js +13 -13
  257. package/dist/entity-schema.d.ts +2 -1
  258. package/dist/episodic-context.d.ts +2 -1
  259. package/dist/eval-trajectory-contracts.d.ts +2 -1
  260. package/dist/eval-trajectory-store.d.ts +2 -1
  261. package/dist/eval-trajectory.d.ts +2 -1
  262. package/dist/explicit-capture.d.ts +10 -9
  263. package/dist/external-wiki-access.d.ts +13 -11
  264. package/dist/external-wiki-access.js +47 -35
  265. package/dist/external-wiki-collection-registration.d.ts +2 -1
  266. package/dist/external-wiki-collection.d.ts +2 -1
  267. package/dist/external-wiki-mcp-tools.d.ts +13 -11
  268. package/dist/extraction-error-classification.d.ts +2 -1
  269. package/dist/extraction-faithfulness.d.ts +2 -1
  270. package/dist/extraction-judge-telemetry.d.ts +2 -1
  271. package/dist/extraction-judge-training.d.ts +2 -1
  272. package/dist/extraction-judge.d.ts +2 -1
  273. package/dist/extraction-liveness.d.ts +2 -1
  274. package/dist/extraction-normalization.d.ts +2 -1
  275. package/dist/extraction-prompt.d.ts +2 -1
  276. package/dist/extraction-source-grounding-rules.d.ts +2 -1
  277. package/dist/extraction-source-grounding.d.ts +2 -1
  278. package/dist/extraction.d.ts +2 -1
  279. package/dist/extraction.js +15 -15
  280. package/dist/fallback-llm.d.ts +2 -1
  281. package/dist/graph-dashboard-diff.d.ts +2 -1
  282. package/dist/graph-dashboard-key.d.ts +2 -1
  283. package/dist/graph-dashboard-parser.d.ts +2 -1
  284. package/dist/{graph-edge-decay-DGTBFALQ.js → graph-edge-decay-FXGELBFA.js} +4 -4
  285. package/dist/graph-edge-decay-FXGELBFA.js.map +1 -0
  286. package/dist/graph-edge-reinforcement.d.ts +2 -1
  287. package/dist/graph-path-reconstruction.d.ts +2 -1
  288. package/dist/graph-path-scoring.d.ts +2 -1
  289. package/dist/graph-snapshot.d.ts +2 -1
  290. package/dist/graph-snapshot.js +3 -3
  291. package/dist/graph.d.ts +2 -1
  292. package/dist/graph.js +2 -2
  293. package/dist/harmonic-construction.js +3 -3
  294. package/dist/harmonic-retrieval.d.ts +38 -2
  295. package/dist/harmonic-retrieval.js +12 -3
  296. package/dist/importance.d.ts +2 -1
  297. package/dist/importers/index.d.ts +2 -1
  298. package/dist/in-flight-reads.d.ts +2 -1
  299. package/dist/{index-D4hS9uxK.d.ts → index-B4iTvT-w.d.ts} +2 -2
  300. package/dist/index.d.ts +25 -23
  301. package/dist/index.js +126 -115
  302. package/dist/intent.d.ts +2 -1
  303. package/dist/lcm/engine.d.ts +2 -1
  304. package/dist/lcm/index.d.ts +2 -1
  305. package/dist/lcm/tools.d.ts +2 -1
  306. package/dist/lifecycle.d.ts +2 -1
  307. package/dist/live-connectors-runner.d.ts +2 -1
  308. package/dist/local-llm.d.ts +2 -1
  309. package/dist/local-model-endpoint.d.ts +2 -1
  310. package/dist/location/index.d.ts +4 -3
  311. package/dist/location/index.js +15 -15
  312. package/dist/maintenance/memory-governance.d.ts +2 -1
  313. package/dist/maintenance/memory-governance.js +13 -13
  314. package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +3 -2
  315. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +13 -13
  316. package/dist/maintenance/rebuild-memory-projection.d.ts +3 -2
  317. package/dist/maintenance/rebuild-memory-projection.js +14 -14
  318. package/dist/{maintenance-BRcc3Hx8.d.ts → maintenance-BBpNqEeJ.d.ts} +3 -3
  319. package/dist/mcp-memory-inspector-app.d.ts +13 -11
  320. package/dist/mcp-read-only-tools.js +1 -1
  321. package/dist/memory-action-policy.d.ts +2 -1
  322. package/dist/memory-cache.d.ts +2 -1
  323. package/dist/memory-controller.d.ts +2 -1
  324. package/dist/memory-lifecycle-ledger-utils.d.ts +2 -1
  325. package/dist/memory-projection-store.d.ts +2 -1
  326. package/dist/memory-provenance.d.ts +2 -1
  327. package/dist/memory-snapshot.d.ts +2 -1
  328. package/dist/memory-subject-cli.d.ts +13 -11
  329. package/dist/memory-subject.d.ts +13 -11
  330. package/dist/memory-worth-outcomes.d.ts +3 -2
  331. package/dist/models-json.d.ts +2 -1
  332. package/dist/namespaces/migrate.d.ts +4 -3
  333. package/dist/namespaces/migrate.js +14 -14
  334. package/dist/namespaces/principal.d.ts +2 -1
  335. package/dist/namespaces/search.d.ts +2 -1
  336. package/dist/namespaces/search.js +9 -9
  337. package/dist/namespaces/storage.d.ts +4 -3
  338. package/dist/namespaces/storage.js +13 -13
  339. package/dist/native-knowledge.d.ts +2 -1
  340. package/dist/offline-sync-impression-drain.d.ts +2 -1
  341. package/dist/offline-sync.js +2 -2
  342. package/dist/operator-doctor-corpus.d.ts +2 -1
  343. package/dist/operator-doctor-corpus.js +16 -16
  344. package/dist/operator-doctor-replica.d.ts +2 -1
  345. package/dist/operator-toolkit.d.ts +4 -3
  346. package/dist/operator-toolkit.js +29 -28
  347. package/dist/orchestration/compression-guideline-coordinator.d.ts +3 -2
  348. package/dist/orchestration/maintenance.d.ts +5 -4
  349. package/dist/orchestration/maintenance.js +21 -21
  350. package/dist/{orchestrator-Btq9lzAN.d.ts → orchestrator-DglY1H0w.d.ts} +8 -8
  351. package/dist/orchestrator.d.ts +10 -9
  352. package/dist/orchestrator.js +108 -97
  353. package/dist/patterns-cli.d.ts +2 -1
  354. package/dist/{pipeline-CZoNdFb5.d.ts → pipeline-C7qRsy6g.d.ts} +1 -1
  355. package/dist/policy-runtime.d.ts +2 -1
  356. package/dist/proactive-contention.d.ts +2 -1
  357. package/dist/provenance.d.ts +2 -1
  358. package/dist/{public-http-C9-CHc40.d.ts → public-http-CPpCsi35.d.ts} +1 -1
  359. package/dist/{qmd-VIjSCKIE.d.ts → qmd-YRLTa3AE.d.ts} +1 -1
  360. package/dist/qmd-preflight.d.ts +3 -2
  361. package/dist/qmd-recall-cache.d.ts +2 -1
  362. package/dist/qmd.d.ts +3 -2
  363. package/dist/recall-concurrency-config.d.ts +2 -1
  364. package/dist/recall-deep-expand-select.js +4 -44
  365. package/dist/recall-deep-expand-select.js.map +1 -1
  366. package/dist/recall-deep-frontier.js +4 -23
  367. package/dist/recall-deep-frontier.js.map +1 -1
  368. package/dist/recall-deep-rewrite.js +4 -23
  369. package/dist/recall-deep-rewrite.js.map +1 -1
  370. package/dist/recall-disclosure-escalation.d.ts +2 -1
  371. package/dist/recall-explain-renderer.d.ts +2 -1
  372. package/dist/recall-explain-renderer.js +3 -3
  373. package/dist/recall-memory-map.d.ts +2 -1
  374. package/dist/recall-navigate-access.d.ts +2 -1
  375. package/dist/recall-navigate-access.js +2 -2
  376. package/dist/recall-navigate-disclosure.d.ts +2 -1
  377. package/dist/recall-navigate-disclosure.js +1 -1
  378. package/dist/recall-navigate.d.ts +2 -1
  379. package/dist/recall-navigate.js +2 -2
  380. package/dist/recall-planner-llm.d.ts +2 -1
  381. package/dist/recall-state.d.ts +2 -1
  382. package/dist/recall-tag-filter.d.ts +2 -1
  383. package/dist/recall-timings.d.ts +2 -1
  384. package/dist/recall-xray-cli.d.ts +2 -1
  385. package/dist/recall-xray-cli.js +4 -4
  386. package/dist/recall-xray-renderer.d.ts +2 -1
  387. package/dist/recall-xray-renderer.js +3 -3
  388. package/dist/recall-xray.d.ts +2 -1
  389. package/dist/recall-xray.js +2 -2
  390. package/dist/reconcile/cursor.d.ts +2 -1
  391. package/dist/reconcile/manifest.d.ts +2 -1
  392. package/dist/reconcile/plan.d.ts +2 -1
  393. package/dist/replay/normalizers/chatgpt.d.ts +2 -1
  394. package/dist/replay/normalizers/claude.d.ts +2 -1
  395. package/dist/replay/normalizers/openclaw.d.ts +2 -1
  396. package/dist/replay/normalizers/shared.d.ts +2 -1
  397. package/dist/replay/runner.d.ts +2 -1
  398. package/dist/replay/types.d.ts +2 -1
  399. package/dist/replica-divergence.d.ts +2 -1
  400. package/dist/replica-peers-config.d.ts +2 -1
  401. package/dist/resolve-auth-token.d.ts +2 -1
  402. package/dist/resume-bundles.js +7 -6
  403. package/dist/retrieval-agents.d.ts +3 -2
  404. package/dist/retrieval-tiers.d.ts +2 -1
  405. package/dist/routing/engine.d.ts +2 -1
  406. package/dist/routing/store.d.ts +2 -1
  407. package/dist/salvage-envelope.d.ts +2 -1
  408. package/dist/{scope-profiles-DqbxQXIS.d.ts → scope-profiles-BVvqVzJX.d.ts} +1 -1
  409. package/dist/search/embed-helper.d.ts +2 -1
  410. package/dist/search/factory.d.ts +2 -1
  411. package/dist/search/factory.js +8 -8
  412. package/dist/search/index.d.ts +2 -1
  413. package/dist/search/index.js +13 -13
  414. package/dist/search/lancedb-backend.d.ts +2 -1
  415. package/dist/search/lancedb-backend.js +2 -2
  416. package/dist/search/meilisearch-backend.d.ts +2 -1
  417. package/dist/search/meilisearch-backend.js +2 -2
  418. package/dist/search/noop-backend.d.ts +2 -1
  419. package/dist/search/orama-backend.d.ts +2 -1
  420. package/dist/search/orama-backend.js +2 -2
  421. package/dist/search/port.d.ts +2 -1
  422. package/dist/search/remote-backend.d.ts +2 -1
  423. package/dist/{semantic-consolidation-DW3rEUoW.d.ts → semantic-consolidation-BzCI6Kuu.d.ts} +1 -1
  424. package/dist/semantic-consolidation.d.ts +3 -2
  425. package/dist/semantic-consolidation.js +14 -14
  426. package/dist/semantic-rule-promotion.js +13 -13
  427. package/dist/semantic-rule-verifier.d.ts +2 -1
  428. package/dist/semantic-rule-verifier.js +13 -13
  429. package/dist/{service-B2vJU_Bx.d.ts → service-DQ3Gscy5.d.ts} +2 -2
  430. package/dist/session-observer-bands.d.ts +2 -1
  431. package/dist/session-observer-state.d.ts +2 -1
  432. package/dist/shared-context/manager.d.ts +37 -1
  433. package/dist/shared-context/manager.js +2 -1
  434. package/dist/signal.d.ts +2 -1
  435. package/dist/source-agent-qualifier.d.ts +2 -1
  436. package/dist/source-agent-qualifier.js +13 -13
  437. package/dist/standup/build.js +13 -13
  438. package/dist/{storage-6fn7BPmb.d.ts → storage-DmTbQdD0.d.ts} +1 -1
  439. package/dist/storage.d.ts +3 -2
  440. package/dist/storage.js +12 -12
  441. package/dist/subject-config.d.ts +2 -1
  442. package/dist/summarizer.d.ts +2 -1
  443. package/dist/summary-snapshot.d.ts +2 -1
  444. package/dist/support-passport/index.d.ts +16 -14
  445. package/dist/support-passport/index.js +49 -37
  446. package/dist/temporal-supersession.d.ts +3 -2
  447. package/dist/temporal-timeline-recall.d.ts +2 -1
  448. package/dist/temporal-validity.d.ts +2 -1
  449. package/dist/threading.d.ts +2 -1
  450. package/dist/tier-migration.d.ts +3 -2
  451. package/dist/tier-routing.d.ts +2 -1
  452. package/dist/topics.d.ts +2 -1
  453. package/dist/transcript.d.ts +2 -1
  454. package/dist/transfer/capsule-export.js +2 -2
  455. package/dist/transfer/capsule-import.js +2 -2
  456. package/dist/transfer/export-okf.d.ts +2 -1
  457. package/dist/transfer/export-okf.js +14 -14
  458. package/dist/trust-score-stage.d.ts +2 -1
  459. package/dist/trust-score.d.ts +2 -1
  460. package/dist/{types-eM7QIcX2.d.ts → types-CLRTESSD.d.ts} +3 -1
  461. package/dist/types.d.ts +2 -1
  462. package/dist/types.js +1 -1
  463. package/dist/utility-runtime.d.ts +2 -1
  464. package/dist/verified-recall.js +13 -13
  465. package/dist/who-knows-cli.d.ts +13 -11
  466. package/dist/who-knows-cli.js +14 -14
  467. package/dist/who-knows.d.ts +13 -11
  468. package/dist/who-knows.js +13 -13
  469. package/dist/write-envelope.d.ts +2 -1
  470. package/package.json +2 -2
  471. package/src/access-boundary.ts +1 -0
  472. package/src/access-http.ts +5 -5
  473. package/src/access-mcp-output-schemas.ts +1 -0
  474. package/src/access-mcp.ts +3 -3
  475. package/src/access-operations-batch.ts +3 -1
  476. package/src/access-schema.ts +12 -0
  477. package/src/access-service.ts +162 -5
  478. package/src/access-surface-catalog.ts +2 -0
  479. package/src/cli/deep-recall-commands.ts +60 -0
  480. package/src/cli.ts +2 -2
  481. package/src/config.test.ts +19 -0
  482. package/src/config.ts +7 -0
  483. package/src/deep-recall-config.ts +83 -0
  484. package/src/deep-recall-http-glue.ts +75 -0
  485. package/src/deep-recall-mcp-tools.ts +33 -0
  486. package/src/deep-recall-policy-llm.ts +65 -0
  487. package/src/deep-recall-renderer.ts +41 -0
  488. package/src/deep-recall-seeds.ts +134 -0
  489. package/src/deep-recall-surface.test.ts +902 -0
  490. package/src/deep-recall.test.ts +348 -0
  491. package/src/deep-recall.ts +572 -0
  492. package/src/harmonic-retrieval.ts +78 -25
  493. package/src/mcp-read-only-tools.ts +1 -0
  494. package/src/shared-context/envelope-at.test.ts +23 -0
  495. package/src/shared-context/envelope-at.ts +12 -6
  496. package/src/shared-context/envelope-io.ts +184 -0
  497. package/src/shared-context/envelope-wiring.test.ts +193 -0
  498. package/src/shared-context/governance.ts +28 -9
  499. package/src/shared-context/iso-instant.ts +43 -0
  500. package/src/shared-context/manager.ts +74 -15
  501. package/src/shared-context/provenance.ts +3 -26
  502. package/src/shared-context/write-origin.test.ts +145 -0
  503. package/src/types.ts +3 -1
  504. package/dist/chunk-26JWBSWD.js.map +0 -1
  505. package/dist/chunk-3DT2F5OI.js.map +0 -1
  506. package/dist/chunk-4OFKZAJG.js.map +0 -1
  507. package/dist/chunk-6RPB2TDG.js.map +0 -1
  508. package/dist/chunk-AYWPIH4M.js.map +0 -1
  509. package/dist/chunk-HXWOVCS6.js.map +0 -1
  510. package/dist/chunk-IVAW3HBF.js.map +0 -1
  511. package/dist/chunk-K4E3Y3ZX.js.map +0 -1
  512. package/dist/chunk-QL4U3SJA.js.map +0 -1
  513. package/dist/chunk-TBRG2SYY.js.map +0 -1
  514. package/dist/chunk-VI637ILW.js.map +0 -1
  515. package/dist/chunk-XXW32OL7.js.map +0 -1
  516. /package/dist/{chunk-D5VPIJN3.js.map → chunk-227WJVPY.js.map} +0 -0
  517. /package/dist/{chunk-Y3BWCIY2.js.map → chunk-2EHDPHMD.js.map} +0 -0
  518. /package/dist/{chunk-2LKW6OO7.js.map → chunk-2XJDAEAM.js.map} +0 -0
  519. /package/dist/{chunk-P23JWI3D.js.map → chunk-3ITTF7YH.js.map} +0 -0
  520. /package/dist/{chunk-NGP2FPB2.js.map → chunk-4UVDLNHQ.js.map} +0 -0
  521. /package/dist/{chunk-FJMIQTMH.js.map → chunk-5YQ7RFSO.js.map} +0 -0
  522. /package/dist/{chunk-KQAFEZQX.js.map → chunk-7LCGFUMB.js.map} +0 -0
  523. /package/dist/{chunk-EESYTBXV.js.map → chunk-7NCUHD5U.js.map} +0 -0
  524. /package/dist/{chunk-X574KX52.js.map → chunk-7ZMU4XQT.js.map} +0 -0
  525. /package/dist/{chunk-SG3Z67FB.js.map → chunk-APZXA4WI.js.map} +0 -0
  526. /package/dist/{chunk-2QSZNTDO.js.map → chunk-AU7Q3LSC.js.map} +0 -0
  527. /package/dist/{chunk-VGMRI4J6.js.map → chunk-B75VCEX5.js.map} +0 -0
  528. /package/dist/{chunk-D35XLYQ7.js.map → chunk-BE4Y6GK6.js.map} +0 -0
  529. /package/dist/{chunk-ELKD5PCD.js.map → chunk-BEXFNGQ3.js.map} +0 -0
  530. /package/dist/{chunk-U5SRTYFS.js.map → chunk-BFDOBESV.js.map} +0 -0
  531. /package/dist/{chunk-OLT3YTDH.js.map → chunk-BIJAWZYW.js.map} +0 -0
  532. /package/dist/{chunk-FU2NYFX6.js.map → chunk-BO4PWIJY.js.map} +0 -0
  533. /package/dist/{chunk-JMAG7WZ7.js.map → chunk-BX6GW4KC.js.map} +0 -0
  534. /package/dist/{chunk-J2R275FN.js.map → chunk-CTCGHNWN.js.map} +0 -0
  535. /package/dist/{chunk-X5PIDJ3L.js.map → chunk-DA4ZMCBU.js.map} +0 -0
  536. /package/dist/{chunk-H6RSANGQ.js.map → chunk-ETZ7KKOS.js.map} +0 -0
  537. /package/dist/{chunk-XZBXINXZ.js.map → chunk-GIC6BASP.js.map} +0 -0
  538. /package/dist/{chunk-SXQZMC7R.js.map → chunk-GR4C3FHT.js.map} +0 -0
  539. /package/dist/{chunk-7DYGPGCT.js.map → chunk-H5IIBGDM.js.map} +0 -0
  540. /package/dist/{chunk-CNNXMIS6.js.map → chunk-HFRGCNFY.js.map} +0 -0
  541. /package/dist/{chunk-MAG6M3B6.js.map → chunk-HTOWFFAI.js.map} +0 -0
  542. /package/dist/{chunk-FOCMJEHH.js.map → chunk-I4QAH4SY.js.map} +0 -0
  543. /package/dist/{chunk-FSGCXGK6.js.map → chunk-I6DUKBUI.js.map} +0 -0
  544. /package/dist/{chunk-6FUMA6AA.js.map → chunk-JGXMA6HL.js.map} +0 -0
  545. /package/dist/{chunk-TA7UZZMW.js.map → chunk-JHTF22NQ.js.map} +0 -0
  546. /package/dist/{chunk-DZ3CNJPB.js.map → chunk-LDOQE34V.js.map} +0 -0
  547. /package/dist/{chunk-MEW53VQJ.js.map → chunk-LDWIPYJ6.js.map} +0 -0
  548. /package/dist/{chunk-227UFSEQ.js.map → chunk-LEPOP46W.js.map} +0 -0
  549. /package/dist/{chunk-KJTSWJZN.js.map → chunk-LF6SHWVV.js.map} +0 -0
  550. /package/dist/{chunk-G6OZZX7P.js.map → chunk-LJAP4KSW.js.map} +0 -0
  551. /package/dist/{chunk-NV6BTBUI.js.map → chunk-LJNLLNEM.js.map} +0 -0
  552. /package/dist/{chunk-FFFZEF6B.js.map → chunk-LUDXSSTW.js.map} +0 -0
  553. /package/dist/{chunk-PCH2CVCS.js.map → chunk-LWBSEYW3.js.map} +0 -0
  554. /package/dist/{chunk-FMUJGGKW.js.map → chunk-M7DGN6JZ.js.map} +0 -0
  555. /package/dist/{chunk-TZIHB2LP.js.map → chunk-MNH2GM4O.js.map} +0 -0
  556. /package/dist/{chunk-RACZB5HT.js.map → chunk-N37X5RU7.js.map} +0 -0
  557. /package/dist/{chunk-LK4TOYPU.js.map → chunk-NF3NMAG7.js.map} +0 -0
  558. /package/dist/{chunk-AG46P24C.js.map → chunk-NNBZS3DY.js.map} +0 -0
  559. /package/dist/{chunk-LZ2JTO7N.js.map → chunk-OASGWNYL.js.map} +0 -0
  560. /package/dist/{chunk-C2JCVZWX.js.map → chunk-OLBZ2WGG.js.map} +0 -0
  561. /package/dist/{chunk-Z3SQEEB6.js.map → chunk-OUKBMQ2O.js.map} +0 -0
  562. /package/dist/{chunk-2Z3DG5CQ.js.map → chunk-P6GKRT2H.js.map} +0 -0
  563. /package/dist/{chunk-UGA6PZTX.js.map → chunk-P7LVYPIX.js.map} +0 -0
  564. /package/dist/{chunk-VE45LRCE.js.map → chunk-QRDSXR3V.js.map} +0 -0
  565. /package/dist/{chunk-KS67VHXA.js.map → chunk-QUVWFZOU.js.map} +0 -0
  566. /package/dist/{chunk-AI4QFDPR.js.map → chunk-R7FXPG4T.js.map} +0 -0
  567. /package/dist/{chunk-X66BHMAU.js.map → chunk-RJ57OOCD.js.map} +0 -0
  568. /package/dist/{chunk-VXMKW7YN.js.map → chunk-TRLCMLX7.js.map} +0 -0
  569. /package/dist/{chunk-ELCMVOQT.js.map → chunk-V3HUBF7T.js.map} +0 -0
  570. /package/dist/{chunk-KMIAD7JR.js.map → chunk-VHAKBUBD.js.map} +0 -0
  571. /package/dist/{chunk-GS5IFIVE.js.map → chunk-VYD63IFH.js.map} +0 -0
  572. /package/dist/{chunk-WSFPNCRA.js.map → chunk-XFPHV65N.js.map} +0 -0
  573. /package/dist/{chunk-JCUG7AXZ.js.map → chunk-XJJYSX6F.js.map} +0 -0
  574. /package/dist/{chunk-I6DURYZI.js.map → chunk-XMIAU4CO.js.map} +0 -0
  575. /package/dist/{chunk-PJIGYPO5.js.map → chunk-XQGFIAG7.js.map} +0 -0
  576. /package/dist/{chunk-B2URC6LJ.js.map → chunk-YWN3GYI2.js.map} +0 -0
  577. /package/dist/{chunk-TG6JEJDV.js.map → chunk-Z33VUMKY.js.map} +0 -0
  578. /package/dist/{graph-edge-decay-DGTBFALQ.js.map → deep-recall-config.js.map} +0 -0
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Deep-recall HTTP glue (issue #2332) — route body lives here so
3
+ * access-http.ts stays at its structural ceiling (same seam as
4
+ * meetings/http-glue.ts and location/http-glue.ts).
5
+ *
6
+ * Input errors map to 400; everything else rethrows so backend faults keep
7
+ * flowing to the global 500 handler. `deepRecall.enabled` gating lives in
8
+ * EngramAccessService — this module only translates transport shape.
9
+ */
10
+
11
+ import type { IncomingMessage, ServerResponse } from "node:http";
12
+ import { deepRecallRequestSchema } from "./access-schema.js";
13
+ import { EngramAccessInputError } from "./access-errors.js";
14
+ import type { EngramAccessService } from "./access-service.js";
15
+
16
+ type RespondJson = (res: ServerResponse, status: number, payload: unknown) => void;
17
+ type ReadJsonBody = (req: IncomingMessage) => Promise<unknown>;
18
+
19
+ function coerceMaxSteps(raw: unknown): number | undefined {
20
+ if (raw === undefined || raw === null) return undefined;
21
+ const value = typeof raw === "string" ? Number(raw) : raw;
22
+ if (typeof value !== "number" || !Number.isFinite(value) || !Number.isInteger(value) || value < 0) {
23
+ throw new EngramAccessInputError("maxSteps must be a non-negative integer");
24
+ }
25
+ return value;
26
+ }
27
+
28
+ export async function respondDeepRecall(
29
+ req: IncomingMessage,
30
+ res: ServerResponse,
31
+ respondJson: RespondJson,
32
+ readJsonBody: ReadJsonBody,
33
+ service: EngramAccessService,
34
+ /**
35
+ * Resolve the caller scope for a body-supplied namespace/sessionKey. The
36
+ * body `namespace` is user-controlled, so it MUST flow through the SAME
37
+ * effective-namespace allow-list gate as the query-string value (issue
38
+ * #1850 finding 2 / #2332 review): a scoped bearer that passes an allowed
39
+ * `?namespace=` while setting a different `namespace` in the body would
40
+ * otherwise read another tenant. access-http supplies the gate and applies
41
+ * the query-string fallback, so this module never selects a namespace of
42
+ * its own. Throws 403 when the effective namespace is not permitted.
43
+ *
44
+ * `authenticatedPrincipal` is the identity the transport authenticated, and
45
+ * it MUST reach the service: authorization and the audit trail derive from
46
+ * the presenting principal, never from the client-supplied `sessionKey`.
47
+ * Dropping it let a crafted key matching another principal rule read that
48
+ * principal's namespaces, and made a legitimate namespace-enabled request
49
+ * with no session key fail as unauthenticated.
50
+ */
51
+ scopeFor: (
52
+ bodyNamespace?: string,
53
+ bodySessionKey?: string,
54
+ ) => { namespace?: string; sessionKey?: string; authenticatedPrincipal?: string },
55
+ ): Promise<void> {
56
+ const parsed = deepRecallRequestSchema.safeParse(await readJsonBody(req));
57
+ if (!parsed.success) {
58
+ respondJson(
59
+ res,
60
+ 400,
61
+ { error: "invalid_request", detail: parsed.error.issues.map((i) => `${i.path.join(".")}: ${i.message}`).join("; ") },
62
+ );
63
+ return;
64
+ }
65
+ const maxSteps = coerceMaxSteps(parsed.data.maxSteps);
66
+ const scope = scopeFor(parsed.data.namespace, parsed.data.sessionKey);
67
+ const result = await service.deepRecall({
68
+ query: parsed.data.query,
69
+ ...(maxSteps !== undefined ? { maxSteps } : {}),
70
+ namespace: scope.namespace,
71
+ sessionKey: scope.sessionKey,
72
+ authenticatedPrincipal: scope.authenticatedPrincipal,
73
+ });
74
+ respondJson(res, 200, result);
75
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Deep-recall MCP tool definition (issue #2332) — extracted from
3
+ * access-mcp.ts so the surface file stays at its structural ceiling.
4
+ * Spread back into `this.tools` (`...DEEP_RECALL_MCP_TOOLS`); the
5
+ * migrated-operation mapping spreads into MCP_MIGRATED_OPERATIONS.
6
+ * The `remnic.` canonical alias is minted by withToolAliases at
7
+ * tools/list time (same as meetings).
8
+ */
9
+
10
+ import type { McpTool } from "./access-mcp.js";
11
+
12
+ export const DEEP_RECALL_MCP_TOOLS: McpTool[] = [
13
+ {
14
+ name: "engram.deep_recall",
15
+ description:
16
+ "Budgeted REFINE/EXPAND/STOP multi-hop retrieval over the cue-anchor graph (issue #2332). Slow and thorough (seconds; several LLM calls) — opt in when a question warrants deep search, not for routine recall. Returns ranked entries plus a per-step trace. Typed error when deepRecall.enabled is off.",
17
+ inputSchema: {
18
+ type: "object",
19
+ properties: {
20
+ query: { type: "string", description: "The question to retrieve for. Required." },
21
+ maxSteps: {
22
+ type: "integer",
23
+ minimum: 0,
24
+ description: "Optional policy-step ceiling; cannot exceed the configured deepRecall.maxSteps.",
25
+ },
26
+ namespace: { type: "string", description: "Caller namespace to scope this operation to." },
27
+ sessionKey: { type: "string", description: "Session key for principal/namespace resolution." },
28
+ },
29
+ required: ["query"],
30
+ additionalProperties: false,
31
+ },
32
+ },
33
+ ];
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Policy-call LLM routing for deep recall (issue #2332).
3
+ *
4
+ * Mirrors `extraction-judge.ts` `callJudgeLlm` exactly: local client first
5
+ * (json_object response format) unless modelSource is "gateway", then the
6
+ * fallback client with the shared background-task chain options. Never a
7
+ * raw OpenAI client. Returns null when both legs fail — the loop treats
8
+ * that as a stop, never a crash.
9
+ */
10
+
11
+ import { gatewayTaskChainOptions, type FallbackLlmClient } from "./fallback-llm.js";
12
+ import type { LocalLlmClient } from "./local-llm.js";
13
+ import type { PluginConfig } from "./types.js";
14
+
15
+ export const DEEP_RECALL_POLICY_SYSTEM_PROMPT =
16
+ "You are the retrieval policy for a long-term memory system. Given the question, the current working set of retrieved memories, and the frontier of anchor-linked candidates, choose exactly one action: REFINE (rewrite the query), EXPAND (follow named frontier nodes), or STOP. Respond with JSON only.";
17
+
18
+ export async function callDeepRecallPolicyLlm(input: {
19
+ statePrompt: string;
20
+ config: PluginConfig;
21
+ localLlm: LocalLlmClient | null;
22
+ fallbackLlm: FallbackLlmClient | null;
23
+ timeoutMs: number;
24
+ }): Promise<string | null> {
25
+ const messages: Array<{ role: "system" | "user"; content: string }> = [
26
+ { role: "system", content: DEEP_RECALL_POLICY_SYSTEM_PROMPT },
27
+ { role: "user", content: input.statePrompt },
28
+ ];
29
+ const timeout = input.timeoutMs > 0 ? input.timeoutMs : undefined;
30
+ const skipLocal = input.config.modelSource === "gateway";
31
+ const gatewayChain = gatewayTaskChainOptions(input.config);
32
+
33
+ if (input.localLlm && !skipLocal) {
34
+ try {
35
+ const result = await input.localLlm.chatCompletion(messages, {
36
+ temperature: 0.1,
37
+ maxTokens: 1024,
38
+ ...(timeout ? { timeoutMs: timeout } : {}),
39
+ responseFormat: { type: "json_object" },
40
+ operation: "deep-recall-policy",
41
+ });
42
+ if (result?.content) return result.content;
43
+ } catch {
44
+ // fall through to the gateway leg
45
+ }
46
+ }
47
+
48
+ if (input.fallbackLlm) {
49
+ try {
50
+ const result = await input.fallbackLlm.chatCompletion(
51
+ messages as Array<{ role: "system" | "user" | "assistant"; content: string }>,
52
+ {
53
+ temperature: 0.1,
54
+ maxTokens: 1024,
55
+ ...(timeout ? { timeoutMs: timeout } : {}),
56
+ ...gatewayChain,
57
+ },
58
+ );
59
+ if (result?.content) return result.content;
60
+ } catch {
61
+ // both legs failed — caller treats null as a stop
62
+ }
63
+ }
64
+ return null;
65
+ }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Shared markdown renderer for deep recall (issue #2332).
3
+ *
4
+ * Rule 22 (AGENTS.md): never fork formatting — CLI text output, MCP text
5
+ * output, and any later surface all render through this one module.
6
+ * Deterministic: entries in result order, trace in step order.
7
+ */
8
+
9
+ import type { DeepRecallResult } from "./deep-recall.js";
10
+
11
+ export function renderDeepRecallResult(result: DeepRecallResult): string {
12
+ if (!result.ok) {
13
+ return [`# Deep recall`, ``, `- error: ${result.error ?? "unknown"}`, ``].join("\n");
14
+ }
15
+ const lines: string[] = ["# Deep recall", ""];
16
+ if (result.entries.length === 0) {
17
+ lines.push("No memories retrieved.", "");
18
+ } else {
19
+ lines.push("## Memories", "");
20
+ for (const [index, entry] of result.entries.entries()) {
21
+ const via = entry.viaAnchor ? ` via anchor "${entry.viaAnchor}"` : "";
22
+ lines.push(
23
+ `${index + 1}. **${entry.memoryId}** (score ${entry.score.toFixed(3)}, origin ${entry.origin}${via})`,
24
+ );
25
+ lines.push(` ${entry.content.replace(/\s+/g, " ").trim().slice(0, 400)}`);
26
+ }
27
+ lines.push("");
28
+ }
29
+ lines.push("## Trace", "");
30
+ if (result.trace.length === 0) {
31
+ lines.push("(empty)");
32
+ } else {
33
+ for (const step of result.trace) {
34
+ lines.push(
35
+ `- step ${step.step}: ${step.action} — ${step.detail} (workingSet=${step.workingSetSize}, frontier=${step.frontierSize}, ${step.durationMs}ms)`,
36
+ );
37
+ }
38
+ }
39
+ lines.push("");
40
+ return lines.join("\n");
41
+ }
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Deep-recall seed retrieval (issue #2332 review).
3
+ *
4
+ * Seeds route through the SAME namespace search router the rest of the read
5
+ * path uses, so a non-default caller searches its own suffixed collection
6
+ * instead of the base (default-namespace) collection — read and write resolve
7
+ * through one resolver, never two (§30).
8
+ *
9
+ * Each hit is resolved to a real memory id through the shared QMD result
10
+ * resolver (`QmdResultResolver.readQmdResultMemory`), per hit and bounded by
11
+ * the requested limit, instead of pre-scanning the whole namespace corpus to
12
+ * build a path index. With namespaces disabled the fanout queries the QMD
13
+ * backend directly, so hits keep the indexer's raw path forms; the resolver
14
+ * decodes `qmd://<collection>/` URIs and `<collection>/`-prefixed relatives,
15
+ * and the two forms it cannot decode (`qmd:///`, a leading `/`) are stripped
16
+ * for one retry. A hit with no path is dropped: its namespace membership
17
+ * cannot be verified, and a bare docid from a foreign collection must never
18
+ * enter the working set as a resolved memory.
19
+ *
20
+ * An unavailable namespace backend (or a missing collection) contributes an
21
+ * empty result set and reports itself only through `execution.onDegradation`,
22
+ * so the observer is REQUIRED here: without it a dead index is indistinguishable
23
+ * from a healthy empty one and deep recall would answer `ok: true` with zero
24
+ * entries instead of the advertised `backend_unavailable` failure.
25
+ */
26
+
27
+ import type { DeepRecallSeedHit } from "./deep-recall.js";
28
+ import type { SearchDegradation } from "./search/port.js";
29
+
30
+ /** Namespace-scoped search entrypoint (satisfied by `Orchestrator.searchAcrossNamespaces`). */
31
+ export interface DeepRecallSeedRouter {
32
+ searchAcrossNamespaces(options: {
33
+ query: string;
34
+ namespaces: string[];
35
+ maxResults?: number;
36
+ execution?: { onDegradation?: (degradation: SearchDegradation) => void };
37
+ }): Promise<ReadonlyArray<{ path?: string; docid?: string; score?: number }>>;
38
+ }
39
+
40
+ /** Namespace-scoped storage read (satisfied by `StorageManager`). */
41
+ export interface DeepRecallSeedStorage {
42
+ readonly dir: string;
43
+ readMemoryByPath(filePath: string): Promise<{ frontmatter: { id?: string } } | null>;
44
+ }
45
+
46
+ /** Full QMD hit -> memory resolver (satisfied by `QmdResultResolver#readQmdResultMemory`). */
47
+ export interface DeepRecallSeedResultResolver {
48
+ readQmdResultMemory(
49
+ resultPath: string,
50
+ fallbackStorage: DeepRecallSeedStorage,
51
+ recallNamespaces?: readonly string[],
52
+ preferredNamespace?: string,
53
+ ): Promise<{ frontmatter: { id?: string } } | null>;
54
+ }
55
+
56
+ /**
57
+ * Strip the collection-qualified forms the indexer can emit but
58
+ * `readQmdResultMemory` cannot decode: the empty-hostname `qmd:///` URI and
59
+ * the root-relative `/` path both reach its fallback probe still prefixed and
60
+ * miss. Returns `null` when the path carries no such prefix — including a
61
+ * decodable `qmd://<collection>/` or `<collection>/` form, which the resolver
62
+ * owns, and a foreign collection prefix, which must stay a miss.
63
+ */
64
+ function collectionPrefixStrippedPath(resultPath: string): string | null {
65
+ const trimmed = resultPath.trim();
66
+ if (trimmed.startsWith("qmd:///")) {
67
+ const relative = trimmed.slice("qmd:///".length).replace(/^\/+/, "");
68
+ return relative.length > 0 ? relative : null;
69
+ }
70
+ if (trimmed.startsWith("/")) {
71
+ const relative = trimmed.replace(/^\/+/, "");
72
+ return relative.length > 0 ? relative : null;
73
+ }
74
+ return null;
75
+ }
76
+
77
+ async function resolveSeedMemoryId(
78
+ resolver: DeepRecallSeedResultResolver,
79
+ storage: DeepRecallSeedStorage,
80
+ namespace: string,
81
+ resultPath: string | undefined,
82
+ ): Promise<string | null> {
83
+ if (typeof resultPath !== "string" || resultPath.length === 0) return null;
84
+ const attempts = [resultPath];
85
+ const stripped = collectionPrefixStrippedPath(resultPath);
86
+ if (stripped !== null) attempts.push(stripped);
87
+ for (const attempt of attempts) {
88
+ const memory = await resolver.readQmdResultMemory(attempt, storage, [namespace]);
89
+ const id = memory?.frontmatter?.id;
90
+ if (typeof id === "string" && id.length > 0) return id;
91
+ }
92
+ return null;
93
+ }
94
+
95
+ export function createDeepRecallSeedSearch(deps: {
96
+ namespace: string;
97
+ storage: DeepRecallSeedStorage;
98
+ router: DeepRecallSeedRouter;
99
+ resolver: DeepRecallSeedResultResolver;
100
+ }): (query: string, limit: number) => Promise<DeepRecallSeedHit[]> {
101
+ return async (query, limit) => {
102
+ if (limit <= 0) return [];
103
+ const unavailable: SearchDegradation[] = [];
104
+ const hits = await deps.router.searchAcrossNamespaces({
105
+ query,
106
+ namespaces: [deps.namespace],
107
+ maxResults: limit,
108
+ execution: {
109
+ onDegradation: (degradation) => {
110
+ if (degradation.code === "backend_unavailable") unavailable.push(degradation);
111
+ },
112
+ },
113
+ });
114
+ // The requested namespace has no usable index: a seed-search failure, which
115
+ // is the one condition deep recall reports as `backend_unavailable`.
116
+ if (unavailable.length > 0) {
117
+ throw new Error(
118
+ `deep recall seed search unavailable: ${unavailable.map((d) => d.detail ?? d.code).join("; ")}`,
119
+ );
120
+ }
121
+ const seeds: DeepRecallSeedHit[] = [];
122
+ for (const hit of hits) {
123
+ if (typeof hit.path !== "string" || hit.path.length === 0) continue;
124
+ const memoryId =
125
+ (await resolveSeedMemoryId(deps.resolver, deps.storage, deps.namespace, hit.path)) ?? hit.docid;
126
+ if (typeof memoryId !== "string" || memoryId.length === 0) continue;
127
+ seeds.push({
128
+ memoryId,
129
+ score: typeof hit.score === "number" && Number.isFinite(hit.score) ? hit.score : 0,
130
+ });
131
+ }
132
+ return seeds;
133
+ };
134
+ }