@remnic/core 9.69.61 → 9.69.64

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 (263) hide show
  1. package/dist/access-admin-ops-surface.js +27 -27
  2. package/dist/access-authorization-probe.js +28 -28
  3. package/dist/access-boundary.js +27 -27
  4. package/dist/access-cli.js +68 -68
  5. package/dist/access-extraction-force-flush.js +27 -27
  6. package/dist/access-http-briefing.js +28 -28
  7. package/dist/access-http-query.js +29 -29
  8. package/dist/access-http.js +44 -44
  9. package/dist/access-identity-continuity-surface.js +27 -27
  10. package/dist/access-lcm-surface.js +27 -27
  11. package/dist/access-mcp-output-schemas.d.ts.map +1 -1
  12. package/dist/access-mcp-output-schemas.js +1 -1
  13. package/dist/access-mcp.js +37 -37
  14. package/dist/access-namespace-preflight.js +27 -27
  15. package/dist/access-observe-write-surface.js +27 -27
  16. package/dist/access-operations-batch.js +28 -28
  17. package/dist/access-operations.js +35 -35
  18. package/dist/access-recall-concurrency.js +27 -27
  19. package/dist/access-recall-response.d.ts.map +1 -1
  20. package/dist/access-recall-response.js +27 -27
  21. package/dist/access-recall-surface.js +27 -27
  22. package/dist/access-service.d.ts +4 -0
  23. package/dist/access-service.d.ts.map +1 -1
  24. package/dist/access-service.js +27 -27
  25. package/dist/access-surface-catalog.js +29 -29
  26. package/dist/active-recall.js +9 -9
  27. package/dist/briefing.js +10 -10
  28. package/dist/buffer.js +5 -5
  29. package/dist/causal-consolidation.js +11 -11
  30. package/dist/{chunk-52VL6LCY.js → chunk-2VH2JWYN.js} +2 -2
  31. package/dist/{chunk-WD32KTVI.js → chunk-2ZVSQPAA.js} +32 -16
  32. package/dist/chunk-2ZVSQPAA.js.map +1 -0
  33. package/dist/{chunk-G4WZDQ32.js → chunk-3NG5OOCX.js} +2 -2
  34. package/dist/{chunk-KG2OOAFF.js → chunk-3NTVCMDD.js} +2 -2
  35. package/dist/{chunk-7OC3Q5X4.js → chunk-3S4R2HA5.js} +2 -2
  36. package/dist/{chunk-NORFVW2H.js → chunk-4RWPQZYD.js} +2 -2
  37. package/dist/{chunk-B5GMOOY2.js → chunk-5AABWM72.js} +3 -3
  38. package/dist/{chunk-KRPMISWO.js → chunk-5C765XYU.js} +2 -2
  39. package/dist/{chunk-WLZYGLJ4.js → chunk-5MA7ZLPD.js} +5 -7
  40. package/dist/chunk-5MA7ZLPD.js.map +1 -0
  41. package/dist/{chunk-XOLVM3AT.js → chunk-5WXJE5TV.js} +2 -2
  42. package/dist/{chunk-2C5Z7CWB.js → chunk-6YTL3JYX.js} +2 -2
  43. package/dist/{chunk-F4PEETM4.js → chunk-755VRFBS.js} +2 -2
  44. package/dist/{chunk-HNOKNHFO.js → chunk-7L747CFR.js} +2 -2
  45. package/dist/{chunk-WPGR3RW4.js → chunk-7VO6E5UD.js} +2 -2
  46. package/dist/{chunk-LMLPLIT4.js → chunk-AQ6IBVFQ.js} +2 -2
  47. package/dist/{chunk-XN4CPSCN.js → chunk-B2JE56NB.js} +2 -2
  48. package/dist/{chunk-L4WBADKG.js → chunk-B5EZWPSM.js} +2 -2
  49. package/dist/{chunk-EIU642TN.js → chunk-BE4GMH45.js} +2 -2
  50. package/dist/{chunk-NLE6TSLG.js → chunk-BLVHDY2U.js} +5 -7
  51. package/dist/chunk-BLVHDY2U.js.map +1 -0
  52. package/dist/{chunk-JTTLH646.js → chunk-C2W6JKQQ.js} +2 -2
  53. package/dist/{chunk-FG5QU7A2.js → chunk-CFCAFAJC.js} +2 -2
  54. package/dist/{chunk-ZJ6MEVTX.js → chunk-CZM4MHZF.js} +37 -32
  55. package/dist/chunk-CZM4MHZF.js.map +1 -0
  56. package/dist/{chunk-M4PHCEPU.js → chunk-DDY7LJMP.js} +2 -2
  57. package/dist/{chunk-2L5DIVDU.js → chunk-DT33WNG2.js} +4 -4
  58. package/dist/{chunk-SZAWZPY6.js → chunk-E7SKAUEW.js} +7 -7
  59. package/dist/{chunk-NRVGODSE.js → chunk-EK4MOTHM.js} +6 -6
  60. package/dist/{chunk-QEGKMZNQ.js → chunk-FO5NDQZH.js} +3 -3
  61. package/dist/chunk-G26YNEOC.js +37 -0
  62. package/dist/chunk-G26YNEOC.js.map +1 -0
  63. package/dist/{chunk-GMHWCPLP.js → chunk-GZLSIPYU.js} +2 -2
  64. package/dist/{chunk-ZFUPRODV.js → chunk-HPWJ5B7D.js} +39 -3
  65. package/dist/chunk-HPWJ5B7D.js.map +1 -0
  66. package/dist/{chunk-SEHKTE4F.js → chunk-I4IKTNZP.js} +3 -3
  67. package/dist/{chunk-W65KK3X6.js → chunk-II4TIQCU.js} +2 -2
  68. package/dist/{chunk-FWVDTLRK.js → chunk-IJQEVNEF.js} +1 -1
  69. package/dist/{chunk-KXJ7XYUT.js → chunk-IOUQUXHO.js} +2 -2
  70. package/dist/{chunk-V3JM4XEI.js → chunk-ITLFUILH.js} +2 -2
  71. package/dist/{chunk-ZNFHWNDM.js → chunk-IULYVB5X.js} +5 -5
  72. package/dist/{chunk-Z3YQOV45.js → chunk-JLU7WK22.js} +2 -2
  73. package/dist/{chunk-NRTVZSPO.js → chunk-L4HT5QZ5.js} +2 -2
  74. package/dist/{chunk-5QZHDS4X.js → chunk-LI4IWBLN.js} +2 -2
  75. package/dist/{chunk-LY3SDHMI.js → chunk-LQ4OSM5V.js} +3 -3
  76. package/dist/{chunk-2OUSWDY6.js → chunk-M3TMVHQ2.js} +2 -2
  77. package/dist/{chunk-IDRSTHVR.js → chunk-MB3HMRXM.js} +2 -2
  78. package/dist/{chunk-4P3ZBL5E.js → chunk-MUGLJAZ3.js} +2 -2
  79. package/dist/{chunk-ZOASYXBS.js → chunk-MY2PLXSM.js} +6 -2
  80. package/dist/chunk-MY2PLXSM.js.map +1 -0
  81. package/dist/{chunk-4IFSMCRS.js → chunk-NYN4ZMPL.js} +2 -2
  82. package/dist/{chunk-K7S2IMGJ.js → chunk-O7QF3TCV.js} +322 -25
  83. package/dist/{chunk-K7S2IMGJ.js.map → chunk-O7QF3TCV.js.map} +1 -1
  84. package/dist/{chunk-KV44HTMJ.js → chunk-OBD77TYC.js} +2 -2
  85. package/dist/{chunk-GYNCJSQ7.js → chunk-OCEIHKH5.js} +3 -3
  86. package/dist/{chunk-DC5CTLCZ.js → chunk-PSGRZFBH.js} +10 -10
  87. package/dist/{chunk-FQGY7XB2.js → chunk-S52VKUUW.js} +2 -2
  88. package/dist/{chunk-D7MAYFQP.js → chunk-S7LWX2PQ.js} +2 -2
  89. package/dist/{chunk-TYP7GYRI.js → chunk-SB4ZWVKI.js} +2 -2
  90. package/dist/{chunk-KVO2BTA4.js → chunk-T2YX56QI.js} +2 -2
  91. package/dist/{chunk-G6NQ3L4T.js → chunk-T3FMRLWQ.js} +2 -2
  92. package/dist/{chunk-CDQO5DCD.js → chunk-TO3G56GM.js} +2 -2
  93. package/dist/{chunk-WEQZ5OYK.js → chunk-U6GKPSZH.js} +2 -2
  94. package/dist/{chunk-FM5HN7LL.js → chunk-WQC54W25.js} +9 -17
  95. package/dist/chunk-WQC54W25.js.map +1 -0
  96. package/dist/{chunk-XDH5MO6L.js → chunk-WZ33AIOP.js} +2 -2
  97. package/dist/{chunk-TM7S5UHD.js → chunk-XDIFADVN.js} +2 -2
  98. package/dist/{chunk-SVWYZXIL.js → chunk-XDOXR3U6.js} +2 -2
  99. package/dist/{chunk-VKDWYDFQ.js → chunk-XGLBVYEA.js} +5 -5
  100. package/dist/{chunk-5Y7VCE3A.js → chunk-XJNSOI23.js} +2 -2
  101. package/dist/{chunk-LDP6LBDS.js → chunk-Y3AFTYK4.js} +2 -2
  102. package/dist/{chunk-YL2W6NUG.js → chunk-YGJMMMPN.js} +4 -4
  103. package/dist/{chunk-KIOXEHWF.js → chunk-YIDBKTZJ.js} +2 -2
  104. package/dist/{chunk-F5ZCNJ3V.js → chunk-ZPPWW576.js} +2 -2
  105. package/dist/{chunk-TQAXUYUE.js → chunk-ZSXSMVW6.js} +2 -2
  106. package/dist/{chunk-6RD7MSIO.js → chunk-ZUT4FK5W.js} +2 -2
  107. package/dist/cli.js +54 -54
  108. package/dist/coding/export-okf-codegraph.js +9 -9
  109. package/dist/compounding/engine.js +10 -10
  110. package/dist/config.js +9 -9
  111. package/dist/connectors/codex-materialize-runner.js +10 -10
  112. package/dist/connectors/index.js +10 -10
  113. package/dist/convergence-refresh.js +12 -12
  114. package/dist/corpus-watermark.js +12 -12
  115. package/dist/entity-retrieval.js +10 -10
  116. package/dist/external-wiki-access.js +28 -28
  117. package/dist/extraction.js +16 -16
  118. package/dist/harmonic-retrieval.js +1 -1
  119. package/dist/index.d.ts +1 -1
  120. package/dist/index.d.ts.map +1 -1
  121. package/dist/index.js +70 -68
  122. package/dist/location/index.js +12 -12
  123. package/dist/maintenance/memory-governance.js +10 -10
  124. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +10 -10
  125. package/dist/maintenance/rebuild-memory-projection.js +11 -11
  126. package/dist/memory-browse-operations.js +28 -28
  127. package/dist/memory-browse.js +5 -5
  128. package/dist/model-registry.d.ts.map +1 -1
  129. package/dist/model-registry.js +1 -1
  130. package/dist/namespaces/migrate.js +11 -11
  131. package/dist/namespaces/search.js +8 -8
  132. package/dist/namespaces/storage.js +10 -10
  133. package/dist/operator-doctor-corpus.js +13 -13
  134. package/dist/operator-toolkit.js +18 -18
  135. package/dist/orchestration/maintenance.js +18 -18
  136. package/dist/orchestration/recall-internal.d.ts.map +1 -1
  137. package/dist/orchestrator.js +68 -68
  138. package/dist/profiling.d.ts.map +1 -1
  139. package/dist/profiling.js +1 -1
  140. package/dist/qmd.js +2 -2
  141. package/dist/recall-composition-decision.d.ts +9 -0
  142. package/dist/recall-composition-decision.d.ts.map +1 -1
  143. package/dist/recall-composition-decision.js +2 -1
  144. package/dist/recall-navigation-operations.js +28 -28
  145. package/dist/recall-navigation.js +27 -27
  146. package/dist/recall-state-view-admission.js +5 -5
  147. package/dist/recall-why-service.d.ts.map +1 -1
  148. package/dist/recall-why-service.js +5 -5
  149. package/dist/resume-bundles.js +9 -9
  150. package/dist/search/factory.js +7 -7
  151. package/dist/search/index.js +7 -7
  152. package/dist/search/lancedb-backend.js +2 -2
  153. package/dist/search/meilisearch-backend.js +2 -2
  154. package/dist/search/orama-backend.js +2 -2
  155. package/dist/search/port.d.ts +9 -0
  156. package/dist/search/port.d.ts.map +1 -1
  157. package/dist/search/port.js +7 -1
  158. package/dist/search/remote-backend.js +2 -2
  159. package/dist/security/audit-memory-cli.d.ts.map +1 -1
  160. package/dist/security/audit-memory.d.ts +10 -0
  161. package/dist/security/audit-memory.d.ts.map +1 -1
  162. package/dist/security/injection-screen.d.ts +1 -2
  163. package/dist/security/injection-screen.d.ts.map +1 -1
  164. package/dist/semantic-consolidation.js +11 -11
  165. package/dist/semantic-rule-promotion.js +10 -10
  166. package/dist/semantic-rule-verifier.js +10 -10
  167. package/dist/source-agent-qualifier.js +13 -13
  168. package/dist/standup/build.js +10 -10
  169. package/dist/storage.js +9 -9
  170. package/dist/summarizer.js +2 -2
  171. package/dist/support-passport/index.js +30 -30
  172. package/dist/transfer/export-okf.js +10 -10
  173. package/dist/verified-recall.js +10 -10
  174. package/dist/who-knows-cli.js +11 -11
  175. package/dist/who-knows.js +10 -10
  176. package/package.json +12 -2
  177. package/src/access-mcp-output-schemas.ts +4 -0
  178. package/src/access-recall-response.ts +26 -1
  179. package/src/access-service.ts +1 -0
  180. package/src/index.ts +1 -1
  181. package/src/model-registry.test.ts +22 -1
  182. package/src/model-registry.ts +7 -6
  183. package/src/orchestration/recall-internal.ts +8 -5
  184. package/src/profiling.test.ts +20 -1
  185. package/src/profiling.ts +7 -7
  186. package/src/recall-composition-decision.test.ts +75 -0
  187. package/src/recall-composition-decision.ts +52 -3
  188. package/src/recall-retrieval-failure.test.ts +245 -0
  189. package/src/recall-why-service.ts +8 -24
  190. package/src/search/port.ts +32 -0
  191. package/src/security/audit-memory-cli.test.ts +90 -0
  192. package/src/security/audit-memory-cli.ts +7 -0
  193. package/src/security/audit-memory.ts +14 -0
  194. package/src/security/injection-screen.test.ts +245 -0
  195. package/src/security/injection-screen.ts +341 -11
  196. package/dist/chunk-FM5HN7LL.js.map +0 -1
  197. package/dist/chunk-NLE6TSLG.js.map +0 -1
  198. package/dist/chunk-U2VDCFXW.js +0 -19
  199. package/dist/chunk-U2VDCFXW.js.map +0 -1
  200. package/dist/chunk-WD32KTVI.js.map +0 -1
  201. package/dist/chunk-WLZYGLJ4.js.map +0 -1
  202. package/dist/chunk-ZFUPRODV.js.map +0 -1
  203. package/dist/chunk-ZJ6MEVTX.js.map +0 -1
  204. package/dist/chunk-ZOASYXBS.js.map +0 -1
  205. /package/dist/{chunk-52VL6LCY.js.map → chunk-2VH2JWYN.js.map} +0 -0
  206. /package/dist/{chunk-G4WZDQ32.js.map → chunk-3NG5OOCX.js.map} +0 -0
  207. /package/dist/{chunk-KG2OOAFF.js.map → chunk-3NTVCMDD.js.map} +0 -0
  208. /package/dist/{chunk-7OC3Q5X4.js.map → chunk-3S4R2HA5.js.map} +0 -0
  209. /package/dist/{chunk-NORFVW2H.js.map → chunk-4RWPQZYD.js.map} +0 -0
  210. /package/dist/{chunk-B5GMOOY2.js.map → chunk-5AABWM72.js.map} +0 -0
  211. /package/dist/{chunk-KRPMISWO.js.map → chunk-5C765XYU.js.map} +0 -0
  212. /package/dist/{chunk-XOLVM3AT.js.map → chunk-5WXJE5TV.js.map} +0 -0
  213. /package/dist/{chunk-2C5Z7CWB.js.map → chunk-6YTL3JYX.js.map} +0 -0
  214. /package/dist/{chunk-F4PEETM4.js.map → chunk-755VRFBS.js.map} +0 -0
  215. /package/dist/{chunk-HNOKNHFO.js.map → chunk-7L747CFR.js.map} +0 -0
  216. /package/dist/{chunk-WPGR3RW4.js.map → chunk-7VO6E5UD.js.map} +0 -0
  217. /package/dist/{chunk-LMLPLIT4.js.map → chunk-AQ6IBVFQ.js.map} +0 -0
  218. /package/dist/{chunk-XN4CPSCN.js.map → chunk-B2JE56NB.js.map} +0 -0
  219. /package/dist/{chunk-L4WBADKG.js.map → chunk-B5EZWPSM.js.map} +0 -0
  220. /package/dist/{chunk-EIU642TN.js.map → chunk-BE4GMH45.js.map} +0 -0
  221. /package/dist/{chunk-JTTLH646.js.map → chunk-C2W6JKQQ.js.map} +0 -0
  222. /package/dist/{chunk-FG5QU7A2.js.map → chunk-CFCAFAJC.js.map} +0 -0
  223. /package/dist/{chunk-M4PHCEPU.js.map → chunk-DDY7LJMP.js.map} +0 -0
  224. /package/dist/{chunk-2L5DIVDU.js.map → chunk-DT33WNG2.js.map} +0 -0
  225. /package/dist/{chunk-SZAWZPY6.js.map → chunk-E7SKAUEW.js.map} +0 -0
  226. /package/dist/{chunk-NRVGODSE.js.map → chunk-EK4MOTHM.js.map} +0 -0
  227. /package/dist/{chunk-QEGKMZNQ.js.map → chunk-FO5NDQZH.js.map} +0 -0
  228. /package/dist/{chunk-GMHWCPLP.js.map → chunk-GZLSIPYU.js.map} +0 -0
  229. /package/dist/{chunk-SEHKTE4F.js.map → chunk-I4IKTNZP.js.map} +0 -0
  230. /package/dist/{chunk-W65KK3X6.js.map → chunk-II4TIQCU.js.map} +0 -0
  231. /package/dist/{chunk-FWVDTLRK.js.map → chunk-IJQEVNEF.js.map} +0 -0
  232. /package/dist/{chunk-KXJ7XYUT.js.map → chunk-IOUQUXHO.js.map} +0 -0
  233. /package/dist/{chunk-V3JM4XEI.js.map → chunk-ITLFUILH.js.map} +0 -0
  234. /package/dist/{chunk-ZNFHWNDM.js.map → chunk-IULYVB5X.js.map} +0 -0
  235. /package/dist/{chunk-Z3YQOV45.js.map → chunk-JLU7WK22.js.map} +0 -0
  236. /package/dist/{chunk-NRTVZSPO.js.map → chunk-L4HT5QZ5.js.map} +0 -0
  237. /package/dist/{chunk-5QZHDS4X.js.map → chunk-LI4IWBLN.js.map} +0 -0
  238. /package/dist/{chunk-LY3SDHMI.js.map → chunk-LQ4OSM5V.js.map} +0 -0
  239. /package/dist/{chunk-2OUSWDY6.js.map → chunk-M3TMVHQ2.js.map} +0 -0
  240. /package/dist/{chunk-IDRSTHVR.js.map → chunk-MB3HMRXM.js.map} +0 -0
  241. /package/dist/{chunk-4P3ZBL5E.js.map → chunk-MUGLJAZ3.js.map} +0 -0
  242. /package/dist/{chunk-4IFSMCRS.js.map → chunk-NYN4ZMPL.js.map} +0 -0
  243. /package/dist/{chunk-KV44HTMJ.js.map → chunk-OBD77TYC.js.map} +0 -0
  244. /package/dist/{chunk-GYNCJSQ7.js.map → chunk-OCEIHKH5.js.map} +0 -0
  245. /package/dist/{chunk-DC5CTLCZ.js.map → chunk-PSGRZFBH.js.map} +0 -0
  246. /package/dist/{chunk-FQGY7XB2.js.map → chunk-S52VKUUW.js.map} +0 -0
  247. /package/dist/{chunk-D7MAYFQP.js.map → chunk-S7LWX2PQ.js.map} +0 -0
  248. /package/dist/{chunk-TYP7GYRI.js.map → chunk-SB4ZWVKI.js.map} +0 -0
  249. /package/dist/{chunk-KVO2BTA4.js.map → chunk-T2YX56QI.js.map} +0 -0
  250. /package/dist/{chunk-G6NQ3L4T.js.map → chunk-T3FMRLWQ.js.map} +0 -0
  251. /package/dist/{chunk-CDQO5DCD.js.map → chunk-TO3G56GM.js.map} +0 -0
  252. /package/dist/{chunk-WEQZ5OYK.js.map → chunk-U6GKPSZH.js.map} +0 -0
  253. /package/dist/{chunk-XDH5MO6L.js.map → chunk-WZ33AIOP.js.map} +0 -0
  254. /package/dist/{chunk-TM7S5UHD.js.map → chunk-XDIFADVN.js.map} +0 -0
  255. /package/dist/{chunk-SVWYZXIL.js.map → chunk-XDOXR3U6.js.map} +0 -0
  256. /package/dist/{chunk-VKDWYDFQ.js.map → chunk-XGLBVYEA.js.map} +0 -0
  257. /package/dist/{chunk-5Y7VCE3A.js.map → chunk-XJNSOI23.js.map} +0 -0
  258. /package/dist/{chunk-LDP6LBDS.js.map → chunk-Y3AFTYK4.js.map} +0 -0
  259. /package/dist/{chunk-YL2W6NUG.js.map → chunk-YGJMMMPN.js.map} +0 -0
  260. /package/dist/{chunk-KIOXEHWF.js.map → chunk-YIDBKTZJ.js.map} +0 -0
  261. /package/dist/{chunk-F5ZCNJ3V.js.map → chunk-ZPPWW576.js.map} +0 -0
  262. /package/dist/{chunk-TQAXUYUE.js.map → chunk-ZSXSMVW6.js.map} +0 -0
  263. /package/dist/{chunk-6RD7MSIO.js.map → chunk-ZUT4FK5W.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  SUPPORT_PASSPORT_DRAFT_MAX_CONTENT_CHARACTERS,
3
3
  SUPPORT_PASSPORT_DRAFT_MAX_MEMORIES
4
- } from "./chunk-WD32KTVI.js";
4
+ } from "./chunk-2ZVSQPAA.js";
5
5
  import {
6
6
  SUPPORT_PASSPORT_SOURCE_MEMORY_ID_MAX_LENGTH
7
7
  } from "./chunk-PWPIERBM.js";
@@ -343,4 +343,4 @@ export {
343
343
  parseSupportPassportModelJob,
344
344
  SupportPassportModelBridge
345
345
  };
346
- //# sourceMappingURL=chunk-M4PHCEPU.js.map
346
+ //# sourceMappingURL=chunk-DDY7LJMP.js.map
@@ -43,13 +43,13 @@ import {
43
43
  } from "./chunk-AB3A7EFH.js";
44
44
  import {
45
45
  applyToolOutputSchemas
46
- } from "./chunk-ZOASYXBS.js";
46
+ } from "./chunk-MY2PLXSM.js";
47
47
  import {
48
48
  getOperation
49
- } from "./chunk-WD32KTVI.js";
49
+ } from "./chunk-2ZVSQPAA.js";
50
50
  import {
51
51
  WHO_KNOWS_MCP_TOOLS
52
- } from "./chunk-HNOKNHFO.js";
52
+ } from "./chunk-7L747CFR.js";
53
53
  import {
54
54
  PROMOTION_CANDIDATES_MCP_TOOLS
55
55
  } from "./chunk-VYCOJKSX.js";
@@ -4004,4 +4004,4 @@ export {
4004
4004
  MCP_MIGRATED_OPERATIONS,
4005
4005
  EngramMcpServer
4006
4006
  };
4007
- //# sourceMappingURL=chunk-2L5DIVDU.js.map
4007
+ //# sourceMappingURL=chunk-DT33WNG2.js.map
@@ -3,7 +3,7 @@ import {
3
3
  readNamespaceMaintenanceLastRanStatuses,
4
4
  readNamespaceMaintenanceStatuses,
5
5
  runNamespaceMaintenancePlan
6
- } from "./chunk-B5GMOOY2.js";
6
+ } from "./chunk-5AABWM72.js";
7
7
  import {
8
8
  analyzeSessionIntegrity,
9
9
  applySessionRepair,
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-CMTINOFS.js";
15
15
  import {
16
16
  summarizeCorpusAndReplica
17
- } from "./chunk-GMHWCPLP.js";
17
+ } from "./chunk-GZLSIPYU.js";
18
18
  import {
19
19
  readJudgeVerdictStats
20
20
  } from "./chunk-OZKOPQCM.js";
@@ -41,14 +41,14 @@ import {
41
41
  } from "./chunk-2PKGJPQL.js";
42
42
  import {
43
43
  readAggregateExtractionWatermark
44
- } from "./chunk-KRPMISWO.js";
44
+ } from "./chunk-5C765XYU.js";
45
45
  import {
46
46
  listMemoryGovernanceRuns,
47
47
  readMemoryGovernanceRunArtifact
48
- } from "./chunk-LMLPLIT4.js";
48
+ } from "./chunk-AQ6IBVFQ.js";
49
49
  import {
50
50
  listNamespaces
51
- } from "./chunk-QEGKMZNQ.js";
51
+ } from "./chunk-FO5NDQZH.js";
52
52
  import {
53
53
  analyzeGraphHealth
54
54
  } from "./chunk-GWK7FEUL.js";
@@ -57,7 +57,7 @@ import {
57
57
  } from "./chunk-3SG4FGDV.js";
58
58
  import {
59
59
  StorageManager
60
- } from "./chunk-5QZHDS4X.js";
60
+ } from "./chunk-LI4IWBLN.js";
61
61
  import {
62
62
  lintWorkspaceFiles
63
63
  } from "./chunk-DM2T26WE.js";
@@ -1683,4 +1683,4 @@ export {
1683
1683
  runBenchmarkRecall,
1684
1684
  runOperatorRepair
1685
1685
  };
1686
- //# sourceMappingURL=chunk-SZAWZPY6.js.map
1686
+ //# sourceMappingURL=chunk-E7SKAUEW.js.map
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  RemoteSearchBackend
3
- } from "./chunk-WPGR3RW4.js";
3
+ } from "./chunk-7VO6E5UD.js";
4
4
  import {
5
5
  EmbedHelper
6
6
  } from "./chunk-Z4TXB4K7.js";
7
7
  import {
8
8
  LanceDbBackend
9
- } from "./chunk-D7MAYFQP.js";
9
+ } from "./chunk-S7LWX2PQ.js";
10
10
  import {
11
11
  MeilisearchBackend
12
- } from "./chunk-KVO2BTA4.js";
12
+ } from "./chunk-T2YX56QI.js";
13
13
  import {
14
14
  NoopSearchBackend
15
15
  } from "./chunk-CYEPCZN5.js";
16
16
  import {
17
17
  OramaBackend
18
- } from "./chunk-G6NQ3L4T.js";
18
+ } from "./chunk-T3FMRLWQ.js";
19
19
  import {
20
20
  createConversationIndexBackend
21
21
  } from "./chunk-TFA6HPOA.js";
@@ -24,7 +24,7 @@ import {
24
24
  } from "./chunk-F4TWWUMP.js";
25
25
  import {
26
26
  QmdClient
27
- } from "./chunk-KG2OOAFF.js";
27
+ } from "./chunk-3NTVCMDD.js";
28
28
  import {
29
29
  resolveIndexingCapabilities,
30
30
  resolvePipelineProcessingCapabilities,
@@ -179,4 +179,4 @@ export {
179
179
  createConversationSearchBackend,
180
180
  createConversationIndexRuntime
181
181
  };
182
- //# sourceMappingURL=chunk-NRVGODSE.js.map
182
+ //# sourceMappingURL=chunk-EK4MOTHM.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  NamespaceStorageRouter
3
- } from "./chunk-G4WZDQ32.js";
3
+ } from "./chunk-3NG5OOCX.js";
4
4
  import {
5
5
  namespaceCollectionName
6
- } from "./chunk-JTTLH646.js";
6
+ } from "./chunk-C2W6JKQQ.js";
7
7
  import {
8
8
  isSafeRouteNamespace
9
9
  } from "./chunk-PCXDUHQH.js";
@@ -213,4 +213,4 @@ export {
213
213
  verifyNamespaces,
214
214
  runNamespaceMigration
215
215
  };
216
- //# sourceMappingURL=chunk-QEGKMZNQ.js.map
216
+ //# sourceMappingURL=chunk-FO5NDQZH.js.map
@@ -0,0 +1,37 @@
1
+ // src/search/port.ts
2
+ function reportSearchDegradation(execution, degradation) {
3
+ try {
4
+ execution?.onDegradation?.(degradation);
5
+ } catch {
6
+ }
7
+ }
8
+ var FATAL_SEARCH_DEGRADATION_CODES = Object.freeze({
9
+ backend_unavailable: true,
10
+ backend_error: true,
11
+ daemon_timeout: true,
12
+ daemon_loading: true,
13
+ subprocess_error: true,
14
+ deadline_exceeded: true,
15
+ remote_error: true
16
+ });
17
+ function fatalSearchDegradations(degradations) {
18
+ return degradations.filter((d) => FATAL_SEARCH_DEGRADATION_CODES[d.code] === true);
19
+ }
20
+ function describeSearchDegradations(degradations) {
21
+ return degradations.map((d) => `${d.backend}:${d.code}${d.detail !== void 0 ? ` (${d.detail})` : ""}`).join("; ");
22
+ }
23
+ function resolveEnsureCollectionArgs(collectionOrExecution, execution) {
24
+ if (typeof collectionOrExecution === "string") {
25
+ return { collection: collectionOrExecution, execution };
26
+ }
27
+ return { collection: void 0, execution: collectionOrExecution ?? execution };
28
+ }
29
+
30
+ export {
31
+ reportSearchDegradation,
32
+ FATAL_SEARCH_DEGRADATION_CODES,
33
+ fatalSearchDegradations,
34
+ describeSearchDegradations,
35
+ resolveEnsureCollectionArgs
36
+ };
37
+ //# sourceMappingURL=chunk-G26YNEOC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/search/port.ts"],"sourcesContent":["import type { QmdSearchResult } from \"../types.js\";\n\n/** Alias so consumers don't need to reference \"Qmd\" in a backend-agnostic context. */\nexport type SearchResult = QmdSearchResult;\n\nexport interface SearchQueryOptions {\n intent?: string;\n explain?: boolean;\n candidateLimit?: number;\n rerank?: boolean;\n chunkStrategy?: \"auto\" | \"regex\";\n structuredSearches?: Array<{ type: \"lex\" | \"vec\" | \"hyde\"; query: string }>;\n}\n\n/**\n * A search that returned empty (or partial) results because the backend was\n * unavailable, still loading, or timed out — cases that are otherwise\n * indistinguishable from a genuine \"no matches\" (issue #1536, CLAUDE.md\n * rule 34).\n */\nexport interface SearchDegradation {\n backend: \"qmd\" | \"remote\" | \"meilisearch\" | \"orama\" | \"lancedb\";\n code:\n | \"backend_unavailable\"\n | \"backend_error\"\n | \"daemon_timeout\"\n | \"daemon_loading\"\n | \"subprocess_error\"\n | \"deadline_exceeded\"\n | \"remote_error\"\n | \"vector_tier_unavailable\";\n detail?: string;\n}\n\nexport interface SearchExecutionOptions {\n signal?: AbortSignal;\n /**\n * Observer invoked when the backend degrades during this call (#1536).\n * Callers that need to distinguish empty-because-degraded from\n * empty-because-no-matches (recall x-ray, fallback decisions) pass a\n * collector here. Observer failures are swallowed by the notifier —\n * observability must never break search.\n */\n onDegradation?: (degradation: SearchDegradation) => void;\n}\n\nexport function reportSearchDegradation(\n execution: SearchExecutionOptions | undefined,\n degradation: SearchDegradation\n): void {\n try {\n execution?.onDegradation?.(degradation);\n } catch {\n // Observability must never break search.\n }\n}\n\n/**\n * Codes that mean the search backend could NOT answer, so an empty\n * result set carries no information (issue #3082 / recall_why #3033).\n * `vector_tier_unavailable` is excluded on purpose: the lexical tier\n * still answered, so the result set is degraded but real.\n */\nexport const FATAL_SEARCH_DEGRADATION_CODES: Readonly<\n Partial<Record<SearchDegradation[\"code\"], true>>\n> = Object.freeze({\n backend_unavailable: true,\n backend_error: true,\n daemon_timeout: true,\n daemon_loading: true,\n subprocess_error: true,\n deadline_exceeded: true,\n remote_error: true,\n});\n\nexport function fatalSearchDegradations(\n degradations: readonly SearchDegradation[],\n): SearchDegradation[] {\n return degradations.filter((d) => FATAL_SEARCH_DEGRADATION_CODES[d.code] === true);\n}\n\nexport function describeSearchDegradations(\n degradations: readonly SearchDegradation[],\n): string {\n return degradations\n .map((d) => `${d.backend}:${d.code}${d.detail !== undefined ? ` (${d.detail})` : \"\"}`)\n .join(\"; \");\n}\n\nexport function resolveEnsureCollectionArgs(\n collectionOrExecution?: string | SearchExecutionOptions,\n execution?: SearchExecutionOptions\n): { collection?: string; execution?: SearchExecutionOptions } {\n if (typeof collectionOrExecution === \"string\") {\n return { collection: collectionOrExecution, execution };\n }\n return { collection: undefined, execution: collectionOrExecution ?? execution };\n}\n\n/**\n * Optional status report for search backends that track embedding backlog.\n * Backends without embedding pipelines return null from status().\n */\nexport interface SearchBackendStatus {\n pendingEmbeddings: number | null;\n oldestPendingAgeMs: number | null;\n totalFiles: number | null;\n embeddedFiles: number | null;\n}\n\n/**\n * Abstract search backend interface.\n *\n * Implementations:\n * - QmdClient (default, local hybrid BM25+vector+reranking)\n * - OramaBackend (embedded, pure JS, hybrid FTS+vector)\n * - LanceDbBackend (embedded, native Arrow bindings, RRF reranking)\n * - MeilisearchBackend (server-based SDK, hybrid search)\n * - RemoteSearchBackend (HTTP REST adapter)\n * - NoopSearchBackend (graceful degradation)\n *\n * See docs/writing-a-search-backend.md for the implementation guide.\n */\nexport interface SearchBackend {\n // ── Lifecycle ──\n probe(execution?: SearchExecutionOptions): Promise<boolean>;\n /**\n * Optional non-mutating availability probe for health/readiness checks.\n * Implementations must avoid auto-upgrades, collection creation, daemon\n * startup, or any other runtime-modifying side effects.\n */\n checkAvailability?(execution?: SearchExecutionOptions): Promise<boolean>;\n isAvailable(): boolean;\n debugStatus(): string;\n /** Optional embedding backlog status for health surfaces. */\n status?(): Promise<SearchBackendStatus>;\n\n // ── Search ──\n search(\n query: string,\n collection?: string,\n maxResults?: number,\n options?: SearchQueryOptions,\n execution?: SearchExecutionOptions\n ): Promise<SearchResult[]>;\n searchGlobal(query: string, maxResults?: number, execution?: SearchExecutionOptions): Promise<SearchResult[]>;\n bm25Search(\n query: string,\n collection?: string,\n maxResults?: number,\n execution?: SearchExecutionOptions\n ): Promise<SearchResult[]>;\n vectorSearch(\n query: string,\n collection?: string,\n maxResults?: number,\n execution?: SearchExecutionOptions\n ): Promise<SearchResult[]>;\n hybridSearch(\n query: string,\n collection?: string,\n maxResults?: number,\n execution?: SearchExecutionOptions\n ): Promise<SearchResult[]>;\n\n // ── Maintenance ──\n update(execution?: SearchExecutionOptions): Promise<void>;\n /**\n * Wall-clock ms of the most recent SUCCESSFUL index refresh, or null when the\n * backend has never run one. Ordinary update() is fail-open: it returns\n * silently (without throwing or advancing this timestamp) when the backend is\n * unavailable or the call is suppressed by a min-interval / failure backoff.\n * Callers that must know whether update() actually indexed — so they can\n * invalidate dependent caches only on a real refresh — snapshot this before\n * the call and treat the backend as refreshed iff the value advanced. Optional\n * because not every backend tracks it; absent means \"assume refreshed\".\n */\n readonly lastUpdateRanAtMs?: number | null;\n /**\n * Optional strict refresh used by callers that must know whether the backend\n * was actually refreshed before writing success markers. Ordinary update\n * calls remain fail-open for migration/maintenance resilience.\n */\n updateStrict?(execution?: SearchExecutionOptions): Promise<void>;\n updateCollection(collection: string, execution?: SearchExecutionOptions): Promise<void>;\n updateCollectionFromDir?(collection: string, memoryDir: string, execution?: SearchExecutionOptions): Promise<void>;\n /**\n * True when update() refreshes every indexed collection, not just this\n * backend's configured collection. Namespace routers use this to avoid\n * repeating the same expensive global update once per namespace.\n */\n updatesAllCollections?(): boolean;\n /**\n * Optional strict refresh used by callers that must know whether a collection\n * was actually refreshed before writing success markers. Ordinary update\n * calls remain fail-open for migration/maintenance resilience.\n */\n updateCollectionStrict?(collection: string, execution?: SearchExecutionOptions): Promise<void>;\n embed(): Promise<void>;\n /**\n * Optional strict embed used by callers that must know vectors were actually\n * refreshed before writing success markers.\n */\n embedStrict?(): Promise<void>;\n embedCollection(collection: string): Promise<void>;\n /**\n * Optional strict collection embed used by callers that must know vectors were\n * actually refreshed before writing success markers.\n */\n embedCollectionStrict?(collection: string): Promise<void>;\n\n // ── Collection management ──\n /**\n * True only when the backend can bind, isolate, search, and delete collections\n * outside Remnic's primary memory roots.\n */\n supportsAdditionalCollections?(): boolean;\n /**\n * Prevent a collection from participating in unscoped/global searches.\n * Dedicated corpora must call this immediately after collection creation.\n */\n excludeCollectionFromGlobalSearch?(collection: string, execution?: SearchExecutionOptions): Promise<void>;\n /** Remove a non-primary collection and its backend-owned index state. */\n deleteCollection?(collection: string, execution?: SearchExecutionOptions): Promise<boolean>;\n /** Canonical source root currently bound to a named collection. */\n collectionRoot?(collection: string, execution?: SearchExecutionOptions): Promise<string | null>;\n /** Collection-scoped status for observability surfaces. */\n collectionStatus?(collection: string): Promise<Pick<SearchBackendStatus, \"totalFiles\">>;\n /**\n * Optional non-mutating collection probe. Backends that can distinguish a\n * missing collection from a transient probe failure should implement this so\n * callers can avoid auto-creating collections in unsafe layouts.\n */\n checkCollection?(\n collectionOrExecution?: string | SearchExecutionOptions,\n execution?: SearchExecutionOptions\n ): Promise<\"present\" | \"missing\" | \"unknown\" | \"skipped\">;\n ensureCollection(\n memoryDir: string,\n execution?: SearchExecutionOptions\n ): Promise<\"present\" | \"missing\" | \"unknown\" | \"skipped\">;\n ensureCollection(\n memoryDir: string,\n collection?: string,\n execution?: SearchExecutionOptions\n ): Promise<\"present\" | \"missing\" | \"unknown\" | \"skipped\">;\n}\n"],"mappings":";AA8CO,SAAS,wBACd,WACA,aACM;AACN,MAAI;AACF,eAAW,gBAAgB,WAAW;AAAA,EACxC,QAAQ;AAAA,EAER;AACF;AAQO,IAAM,iCAET,OAAO,OAAO;AAAA,EAChB,qBAAqB;AAAA,EACrB,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,cAAc;AAChB,CAAC;AAEM,SAAS,wBACd,cACqB;AACrB,SAAO,aAAa,OAAO,CAAC,MAAM,+BAA+B,EAAE,IAAI,MAAM,IAAI;AACnF;AAEO,SAAS,2BACd,cACQ;AACR,SAAO,aACJ,IAAI,CAAC,MAAM,GAAG,EAAE,OAAO,IAAI,EAAE,IAAI,GAAG,EAAE,WAAW,SAAY,KAAK,EAAE,MAAM,MAAM,EAAE,EAAE,EACpF,KAAK,IAAI;AACd;AAEO,SAAS,4BACd,uBACA,WAC6D;AAC7D,MAAI,OAAO,0BAA0B,UAAU;AAC7C,WAAO,EAAE,YAAY,uBAAuB,UAAU;AAAA,EACxD;AACA,SAAO,EAAE,YAAY,QAAW,WAAW,yBAAyB,UAAU;AAChF;","names":[]}
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  computeCorpusWatermarks,
6
6
  resolveCorpusNamespaceRoots
7
- } from "./chunk-CDQO5DCD.js";
7
+ } from "./chunk-TO3G56GM.js";
8
8
 
9
9
  // src/operator-doctor-corpus.ts
10
10
  var DIGEST_PREFIX_LENGTH = 12;
@@ -78,4 +78,4 @@ export {
78
78
  corpusWatermarksFromCheck,
79
79
  summarizeCorpusAndReplica
80
80
  };
81
- //# sourceMappingURL=chunk-GMHWCPLP.js.map
81
+ //# sourceMappingURL=chunk-GZLSIPYU.js.map
@@ -4,6 +4,10 @@ import {
4
4
  composeMissingMemoryContext,
5
5
  composeRecallContext
6
6
  } from "./chunk-NVKO5YKP.js";
7
+ import {
8
+ describeSearchDegradations,
9
+ fatalSearchDegradations
10
+ } from "./chunk-G26YNEOC.js";
7
11
  import {
8
12
  isAbortError
9
13
  } from "./chunk-BTTPKDIL.js";
@@ -31,16 +35,48 @@ function compactRecallContextFromBuckets(buckets) {
31
35
  return sections.join(RECALL_CONTEXT_SEPARATOR);
32
36
  }
33
37
  function decideRecallContextComposition(input) {
34
- const composition = boundRecallContextComposition({
38
+ const observed = input.backendDegradations ?? [];
39
+ const qmdExpected = input.qmdExpected !== false;
40
+ const fatal = fatalSearchDegradations(observed).filter(
41
+ (d) => qmdExpected || d.backend !== "qmd" || d.code !== "backend_unavailable"
42
+ );
43
+ if (fatal.length > 0 && input.context.trim().length === 0) {
44
+ const missing = composeMissingMemoryContext({
45
+ detail: describeSearchDegradations(fatal)
46
+ });
47
+ const composition2 = input.footer ? { ...missing, footer: input.footer } : missing;
48
+ return {
49
+ composition: composition2,
50
+ context: composeRecallContext(composition2),
51
+ truncated: false
52
+ };
53
+ }
54
+ const bounded = boundRecallContextComposition({
35
55
  context: input.context,
36
56
  footer: input.footer,
37
57
  maxChars: input.maxChars,
38
58
  compactContext: input.compactContext
39
59
  });
60
+ if (fatal.length === 0) {
61
+ return {
62
+ composition: bounded,
63
+ context: composeRecallContext(bounded),
64
+ truncated: bounded.degradation?.reason === "budget-clipped" || bounded.degradation?.reason === "budget-compacted"
65
+ };
66
+ }
67
+ const composition = {
68
+ ...bounded,
69
+ degradation: {
70
+ state: "degraded",
71
+ reason: "backend-unavailable",
72
+ detail: describeSearchDegradations(fatal),
73
+ ...bounded.degradation?.budget ? { budget: bounded.degradation.budget } : {}
74
+ }
75
+ };
40
76
  return {
41
77
  composition,
42
78
  context: composeRecallContext(composition),
43
- truncated: composition.degradation?.reason === "budget-clipped" || composition.degradation?.reason === "budget-compacted"
79
+ truncated: bounded.degradation?.reason === "budget-clipped" || bounded.degradation?.reason === "budget-compacted"
44
80
  };
45
81
  }
46
82
  function notifyContextComposition(onContextComposition, composition, onError) {
@@ -66,4 +102,4 @@ export {
66
102
  notifyContextComposition,
67
103
  recallFailureComposition
68
104
  };
69
- //# sourceMappingURL=chunk-ZFUPRODV.js.map
105
+ //# sourceMappingURL=chunk-HPWJ5B7D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/recall-composition-decision.ts"],"sourcesContent":["/**\n * Recall composition decision (#2972 layer 2).\n *\n * Extracted from recall-internal so that file stays under its ratchet\n * ceiling. Classifies injected memory context as complete / degraded /\n * missing, builds the compact (first-line) form from section buckets,\n * and turns outer-recall failures into the missing-note instead of \"\".\n */\n\nimport { isAbortError } from \"./abort-error.js\";\nimport {\n boundRecallContextComposition,\n composeMissingMemoryContext,\n composeRecallContext,\n RECALL_CONTEXT_SEPARATOR,\n type RecallContextComposition,\n} from \"./recall-context-composition.js\";\nimport {\n describeSearchDegradations,\n fatalSearchDegradations,\n type SearchDegradation,\n} from \"./search/port.js\";\n\nexport type RecallCompositionChunk = string | { readonly content: string };\n\nexport interface DecideRecallContextCompositionInput {\n context: string;\n compactContext?: string;\n footer?: string;\n maxChars: number;\n /** Mid-recall backend degradations (#3082). Absent on the healthy path. */\n backendDegradations?: readonly SearchDegradation[];\n /**\n * When false, `{ backend: \"qmd\", code: \"backend_unavailable\" }` is the\n * QMD-disabled/noop skip marker, not an outage. Other backends still count.\n * Default true so unit tests that pass degradations stay honest.\n */\n qmdExpected?: boolean;\n}\n\nexport interface DecidedRecallContextComposition {\n composition: RecallContextComposition;\n context: string;\n truncated: boolean;\n}\n\nfunction firstLine(content: string): string {\n const trimmed = content.trim();\n if (trimmed.length === 0) return \"\";\n const newline = trimmed.indexOf(\"\\n\");\n return newline === -1 ? trimmed : trimmed.slice(0, newline).trimEnd();\n}\n\nfunction chunkContent(chunk: RecallCompositionChunk): string {\n return typeof chunk === \"string\" ? chunk : chunk.content;\n}\n\n/**\n * Shallow form of every section chunk: the first line of each entry,\n * so a budget miss prefers breadth-complete-but-shallow over a clipped\n * tail. Empty chunks contribute nothing.\n */\nexport function compactRecallContextFromBuckets(\n buckets: Iterable<readonly [unknown, readonly RecallCompositionChunk[]]>,\n): string {\n const sections: string[] = [];\n for (const [, chunks] of buckets) {\n const lines: string[] = [];\n for (const chunk of chunks) {\n const line = firstLine(chunkContent(chunk));\n if (line.length > 0) lines.push(line);\n }\n if (lines.length > 0) sections.push(lines.join(\"\\n\"));\n }\n return sections.join(RECALL_CONTEXT_SEPARATOR);\n}\n\nexport function decideRecallContextComposition(\n input: DecideRecallContextCompositionInput,\n): DecidedRecallContextComposition {\n const observed = input.backendDegradations ?? [];\n const qmdExpected = input.qmdExpected !== false;\n const fatal = fatalSearchDegradations(observed).filter(\n (d) => qmdExpected || d.backend !== \"qmd\" || d.code !== \"backend_unavailable\",\n );\n if (fatal.length > 0 && input.context.trim().length === 0) {\n const missing = composeMissingMemoryContext({\n detail: describeSearchDegradations(fatal),\n });\n const composition = input.footer\n ? { ...missing, footer: input.footer }\n : missing;\n return {\n composition,\n context: composeRecallContext(composition),\n truncated: false,\n };\n }\n const bounded = boundRecallContextComposition({\n context: input.context,\n footer: input.footer,\n maxChars: input.maxChars,\n compactContext: input.compactContext,\n });\n if (fatal.length === 0) {\n return {\n composition: bounded,\n context: composeRecallContext(bounded),\n truncated:\n bounded.degradation?.reason === \"budget-clipped\" ||\n bounded.degradation?.reason === \"budget-compacted\",\n };\n }\n const composition = {\n ...bounded,\n degradation: {\n state: \"degraded\" as const,\n reason: \"backend-unavailable\" as const,\n detail: describeSearchDegradations(fatal),\n ...(bounded.degradation?.budget ? { budget: bounded.degradation.budget } : {}),\n },\n };\n return {\n composition,\n context: composeRecallContext(composition),\n truncated:\n bounded.degradation?.reason === \"budget-clipped\" ||\n bounded.degradation?.reason === \"budget-compacted\",\n };\n}\n\nexport function notifyContextComposition(\n onContextComposition:\n | ((composition: RecallContextComposition) => void | PromiseLike<void>)\n | undefined,\n composition: RecallContextComposition,\n onError: (err: unknown) => void,\n): void {\n if (!onContextComposition) return;\n try {\n const result = onContextComposition(composition);\n if (result && typeof result.then === \"function\") {\n void Promise.resolve(result).catch(onError);\n }\n } catch (err) {\n onError(err);\n }\n}\n\n/**\n * Outer-recall failure: abort stays silent (empty string). Timeout and\n * other errors become the missing-note so a failed query is never\n * indistinguishable from \"no matches\".\n */\nexport function recallFailureComposition(err: unknown): RecallContextComposition | null {\n if (isAbortError(err)) return null;\n const detail =\n err instanceof Error && err.message === \"recall timeout\"\n ? \"timeout\"\n : \"recall_failed\";\n return composeMissingMemoryContext({ detail });\n}\n"],"mappings":";;;;;;;;;;;;;;;AA8CA,SAAS,UAAU,SAAyB;AAC1C,QAAM,UAAU,QAAQ,KAAK;AAC7B,MAAI,QAAQ,WAAW,EAAG,QAAO;AACjC,QAAM,UAAU,QAAQ,QAAQ,IAAI;AACpC,SAAO,YAAY,KAAK,UAAU,QAAQ,MAAM,GAAG,OAAO,EAAE,QAAQ;AACtE;AAEA,SAAS,aAAa,OAAuC;AAC3D,SAAO,OAAO,UAAU,WAAW,QAAQ,MAAM;AACnD;AAOO,SAAS,gCACd,SACQ;AACR,QAAM,WAAqB,CAAC;AAC5B,aAAW,CAAC,EAAE,MAAM,KAAK,SAAS;AAChC,UAAM,QAAkB,CAAC;AACzB,eAAW,SAAS,QAAQ;AAC1B,YAAM,OAAO,UAAU,aAAa,KAAK,CAAC;AAC1C,UAAI,KAAK,SAAS,EAAG,OAAM,KAAK,IAAI;AAAA,IACtC;AACA,QAAI,MAAM,SAAS,EAAG,UAAS,KAAK,MAAM,KAAK,IAAI,CAAC;AAAA,EACtD;AACA,SAAO,SAAS,KAAK,wBAAwB;AAC/C;AAEO,SAAS,+BACd,OACiC;AACjC,QAAM,WAAW,MAAM,uBAAuB,CAAC;AAC/C,QAAM,cAAc,MAAM,gBAAgB;AAC1C,QAAM,QAAQ,wBAAwB,QAAQ,EAAE;AAAA,IAC9C,CAAC,MAAM,eAAe,EAAE,YAAY,SAAS,EAAE,SAAS;AAAA,EAC1D;AACA,MAAI,MAAM,SAAS,KAAK,MAAM,QAAQ,KAAK,EAAE,WAAW,GAAG;AACzD,UAAM,UAAU,4BAA4B;AAAA,MAC1C,QAAQ,2BAA2B,KAAK;AAAA,IAC1C,CAAC;AACD,UAAMA,eAAc,MAAM,SACtB,EAAE,GAAG,SAAS,QAAQ,MAAM,OAAO,IACnC;AACJ,WAAO;AAAA,MACL,aAAAA;AAAA,MACA,SAAS,qBAAqBA,YAAW;AAAA,MACzC,WAAW;AAAA,IACb;AAAA,EACF;AACA,QAAM,UAAU,8BAA8B;AAAA,IAC5C,SAAS,MAAM;AAAA,IACf,QAAQ,MAAM;AAAA,IACd,UAAU,MAAM;AAAA,IAChB,gBAAgB,MAAM;AAAA,EACxB,CAAC;AACD,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO;AAAA,MACL,aAAa;AAAA,MACb,SAAS,qBAAqB,OAAO;AAAA,MACrC,WACE,QAAQ,aAAa,WAAW,oBAChC,QAAQ,aAAa,WAAW;AAAA,IACpC;AAAA,EACF;AACA,QAAM,cAAc;AAAA,IAClB,GAAG;AAAA,IACH,aAAa;AAAA,MACX,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ,2BAA2B,KAAK;AAAA,MACxC,GAAI,QAAQ,aAAa,SAAS,EAAE,QAAQ,QAAQ,YAAY,OAAO,IAAI,CAAC;AAAA,IAC9E;AAAA,EACF;AACA,SAAO;AAAA,IACL;AAAA,IACA,SAAS,qBAAqB,WAAW;AAAA,IACzC,WACE,QAAQ,aAAa,WAAW,oBAChC,QAAQ,aAAa,WAAW;AAAA,EACpC;AACF;AAEO,SAAS,yBACd,sBAGA,aACA,SACM;AACN,MAAI,CAAC,qBAAsB;AAC3B,MAAI;AACF,UAAM,SAAS,qBAAqB,WAAW;AAC/C,QAAI,UAAU,OAAO,OAAO,SAAS,YAAY;AAC/C,WAAK,QAAQ,QAAQ,MAAM,EAAE,MAAM,OAAO;AAAA,IAC5C;AAAA,EACF,SAAS,KAAK;AACZ,YAAQ,GAAG;AAAA,EACb;AACF;AAOO,SAAS,yBAAyB,KAA+C;AACtF,MAAI,aAAa,GAAG,EAAG,QAAO;AAC9B,QAAM,SACJ,eAAe,SAAS,IAAI,YAAY,mBACpC,YACA;AACN,SAAO,4BAA4B,EAAE,OAAO,CAAC;AAC/C;","names":["composition"]}
@@ -7,10 +7,10 @@ import {
7
7
  import {
8
8
  listMemoryGovernanceRuns,
9
9
  readMemoryGovernanceRunArtifact
10
- } from "./chunk-LMLPLIT4.js";
10
+ } from "./chunk-AQ6IBVFQ.js";
11
11
  import {
12
12
  StorageManager
13
- } from "./chunk-5QZHDS4X.js";
13
+ } from "./chunk-LI4IWBLN.js";
14
14
  import {
15
15
  normalizeProjectionPreview,
16
16
  normalizeProjectionTags
@@ -1005,4 +1005,4 @@ export {
1005
1005
  verifyMemoryProjection,
1006
1006
  repairMemoryProjection
1007
1007
  };
1008
- //# sourceMappingURL=chunk-SEHKTE4F.js.map
1008
+ //# sourceMappingURL=chunk-I4IKTNZP.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-KJTKLXTH.js";
4
4
  import {
5
5
  StorageManager
6
- } from "./chunk-5QZHDS4X.js";
6
+ } from "./chunk-LI4IWBLN.js";
7
7
  import {
8
8
  assertInjectedStorageRooted
9
9
  } from "./chunk-JE334SIA.js";
@@ -260,4 +260,4 @@ export {
260
260
  backupExistingLedger,
261
261
  rebuildMemoryLifecycleLedger
262
262
  };
263
- //# sourceMappingURL=chunk-W65KK3X6.js.map
263
+ //# sourceMappingURL=chunk-II4TIQCU.js.map
@@ -318,4 +318,4 @@ export {
318
318
  readProjectedHarmonicGraph,
319
319
  searchHarmonicRetrieval
320
320
  };
321
- //# sourceMappingURL=chunk-FWVDTLRK.js.map
321
+ //# sourceMappingURL=chunk-IJQEVNEF.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  StorageManager
3
- } from "./chunk-5QZHDS4X.js";
3
+ } from "./chunk-LI4IWBLN.js";
4
4
  import {
5
5
  getCachedRuleMemories,
6
6
  setCachedRuleMemories
@@ -119,4 +119,4 @@ export {
119
119
  compareVerifiedSemanticRuleResults,
120
120
  searchVerifiedSemanticRules
121
121
  };
122
- //# sourceMappingURL=chunk-KXJ7XYUT.js.map
122
+ //# sourceMappingURL=chunk-IOUQUXHO.js.map
@@ -23,7 +23,7 @@ import {
23
23
  } from "./chunk-NVKO5YKP.js";
24
24
  import {
25
25
  compareEntityTimestamps
26
- } from "./chunk-5QZHDS4X.js";
26
+ } from "./chunk-LI4IWBLN.js";
27
27
  import {
28
28
  normalizeEntityName
29
29
  } from "./chunk-YXZG5TVN.js";
@@ -918,4 +918,4 @@ export {
918
918
  entityIndexVersion,
919
919
  entityRecentTranscriptLookbackHours
920
920
  };
921
- //# sourceMappingURL=chunk-V3JM4XEI.js.map
921
+ //# sourceMappingURL=chunk-ITLFUILH.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  buildStandup,
3
3
  parseStandupDate
4
- } from "./chunk-EIU642TN.js";
4
+ } from "./chunk-BE4GMH45.js";
5
5
  import {
6
6
  backfillMemoryStorage,
7
7
  runLocationBackfill,
@@ -9,16 +9,16 @@ import {
9
9
  runLocationDay,
10
10
  runLocationStatus,
11
11
  runLocationSync
12
- } from "./chunk-GYNCJSQ7.js";
12
+ } from "./chunk-OCEIHKH5.js";
13
13
  import {
14
14
  externalWikiSearchOperation
15
- } from "./chunk-4P3ZBL5E.js";
15
+ } from "./chunk-MUGLJAZ3.js";
16
16
  import {
17
17
  DECISION_SUBCOMMANDS,
18
18
  DELTA_SUBCOMMANDS,
19
19
  defineOperation,
20
20
  isCodegraphToolName
21
- } from "./chunk-WD32KTVI.js";
21
+ } from "./chunk-2ZVSQPAA.js";
22
22
  import {
23
23
  CorrectionContractError
24
24
  } from "./chunk-QLK3SL7Q.js";
@@ -1914,4 +1914,4 @@ export {
1914
1914
  codegraphIngestTracesOperation,
1915
1915
  REGISTERED_OPERATIONS
1916
1916
  };
1917
- //# sourceMappingURL=chunk-ZNFHWNDM.js.map
1917
+ //# sourceMappingURL=chunk-IULYVB5X.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isNamespaceKind
3
- } from "./chunk-F4PEETM4.js";
3
+ } from "./chunk-755VRFBS.js";
4
4
  import {
5
5
  EngramAccessInputError
6
6
  } from "./chunk-3MUKQQ7A.js";
@@ -40,4 +40,4 @@ export {
40
40
  positiveIntQueryParam,
41
41
  optionalNamespaceKindQueryParam
42
42
  };
43
- //# sourceMappingURL=chunk-Z3YQOV45.js.map
43
+ //# sourceMappingURL=chunk-JLU7WK22.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-B7RWBZXW.js";
4
4
  import {
5
5
  StorageManager
6
- } from "./chunk-5QZHDS4X.js";
6
+ } from "./chunk-LI4IWBLN.js";
7
7
  import {
8
8
  getCachedEpisodeMap,
9
9
  setCachedEpisodeMap
@@ -109,4 +109,4 @@ export {
109
109
  compareVerifiedEpisodeResults,
110
110
  searchVerifiedEpisodes
111
111
  };
112
- //# sourceMappingURL=chunk-NRTVZSPO.js.map
112
+ //# sourceMappingURL=chunk-L4HT5QZ5.js.map
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-UHVXE24Y.js";
18
18
  import {
19
19
  normalizeQmdResultPath
20
- } from "./chunk-JTTLH646.js";
20
+ } from "./chunk-C2W6JKQQ.js";
21
21
  import {
22
22
  withholdToolScopedFromSharedNamespace
23
23
  } from "./chunk-S2V7RUCL.js";
@@ -11348,4 +11348,4 @@ export {
11348
11348
  isValidBufferSurpriseEvent,
11349
11349
  StorageManager3 as StorageManager
11350
11350
  };
11351
- //# sourceMappingURL=chunk-5QZHDS4X.js.map
11351
+ //# sourceMappingURL=chunk-LI4IWBLN.js.map
@@ -21,13 +21,13 @@ import {
21
21
  defineOperation,
22
22
  parseNamespacePreflightWriteOp,
23
23
  resolveAuthorizedNamespaceWritablePreflight
24
- } from "./chunk-WD32KTVI.js";
24
+ } from "./chunk-2ZVSQPAA.js";
25
25
  import {
26
26
  parseSharedWriteOutputControls
27
27
  } from "./chunk-IFBSZGW3.js";
28
28
  import {
29
29
  validateBriefingFormat
30
- } from "./chunk-LDP6LBDS.js";
30
+ } from "./chunk-Y3AFTYK4.js";
31
31
  import {
32
32
  parseDeepRecallMaxSteps
33
33
  } from "./chunk-A7AISUJI.js";
@@ -603,4 +603,4 @@ defineOperation({ name: "graph_events", description: "SSE graph events.", schema
603
603
  defineOperation({ name: "chat_message", description: "Chat message.", schema: strictSchema({ message: S.str, chatSessionId: S.str }), handler: async (_i, _ctx) => ({ result: { ok: true } }) });
604
604
  defineOperation({ name: "chat_events", description: "SSE chat events.", schema: strictSchema({}), handler: async (_i, _ctx) => ({ result: { stream: "sse" } }) });
605
605
  defineOperation({ name: "adapters_status", description: "Adapter registry metadata (issue #1850 round 5). Marker op: the HTTP transport builds the response from its own adapterRegistry, but the op still must be registered so it appears in listRegisteredOperations and enforceTokenOp can gate it for scoped tokens.", schema: strictSchema({}), handler: async (_i, _ctx) => ({ result: { ok: true } }) });
606
- //# sourceMappingURL=chunk-LY3SDHMI.js.map
606
+ //# sourceMappingURL=chunk-LQ4OSM5V.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  rebuildMemoryProjection
3
- } from "./chunk-SEHKTE4F.js";
3
+ } from "./chunk-I4IKTNZP.js";
4
4
 
5
5
  // src/convergence-refresh.ts
6
6
  async function refreshConvergedNamespaces(namespaces, namespaceSearchRouter, getStorage, searchEnabled) {
@@ -32,4 +32,4 @@ async function refreshConvergedNamespaces(namespaces, namespaceSearchRouter, get
32
32
  export {
33
33
  refreshConvergedNamespaces
34
34
  };
35
- //# sourceMappingURL=chunk-2OUSWDY6.js.map
35
+ //# sourceMappingURL=chunk-M3TMVHQ2.js.map
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-AERXJCOG.js";
11
11
  import {
12
12
  deriveSourceConnector
13
- } from "./chunk-FQGY7XB2.js";
13
+ } from "./chunk-S52VKUUW.js";
14
14
  import {
15
15
  resolvePipelineProcessingCapabilities
16
16
  } from "./chunk-BMXEBWBT.js";
@@ -112,4 +112,4 @@ export {
112
112
  renderExtractionConversation,
113
113
  applyGroundingWithConnector
114
114
  };
115
- //# sourceMappingURL=chunk-IDRSTHVR.js.map
115
+ //# sourceMappingURL=chunk-MB3HMRXM.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-7T4TOGMS.js";
4
4
  import {
5
5
  defineOperation
6
- } from "./chunk-WD32KTVI.js";
6
+ } from "./chunk-2ZVSQPAA.js";
7
7
 
8
8
  // src/external-wiki-access.ts
9
9
  import { z } from "zod";
@@ -26,4 +26,4 @@ var externalWikiSearchOperation = defineOperation({
26
26
  export {
27
27
  externalWikiSearchOperation
28
28
  };
29
- //# sourceMappingURL=chunk-4P3ZBL5E.js.map
29
+ //# sourceMappingURL=chunk-MUGLJAZ3.js.map
@@ -77,7 +77,11 @@ var TOOL_OUTPUT_SCHEMAS = {
77
77
  memoryIds: T_ARRAY,
78
78
  results: T_ARRAY,
79
79
  fallbackUsed: T_BOOLEAN,
80
- sourcesUsed: T_ARRAY
80
+ sourcesUsed: T_ARRAY,
81
+ retrievalFailure: objectSchema({
82
+ reason: T_STRING,
83
+ detail: T_STRING
84
+ })
81
85
  }),
82
86
  recall_explain: objectSchema({
83
87
  found: T_BOOLEAN,
@@ -626,4 +630,4 @@ function applyToolOutputSchemas(tools, canonicalPrefix, legacyPrefix) {
626
630
  export {
627
631
  applyToolOutputSchemas
628
632
  };
629
- //# sourceMappingURL=chunk-ZOASYXBS.js.map
633
+ //# sourceMappingURL=chunk-MY2PLXSM.js.map