@remnic/core 10.0.36 → 10.0.38

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 (422) hide show
  1. package/dist/access-admin-ops-surface.js +84 -84
  2. package/dist/access-authorization-probe.js +85 -85
  3. package/dist/access-boundary.js +84 -84
  4. package/dist/access-citation-namespace.js +2 -2
  5. package/dist/access-cli.js +178 -176
  6. package/dist/access-cli.js.map +1 -1
  7. package/dist/access-extraction-force-flush.js +84 -84
  8. package/dist/access-http-briefing.js +85 -85
  9. package/dist/access-http-query.js +86 -86
  10. package/dist/access-http.js +108 -108
  11. package/dist/access-identity-continuity-surface.js +84 -84
  12. package/dist/access-lcm-surface.js +84 -84
  13. package/dist/access-mcp.js +97 -97
  14. package/dist/access-namespace-preflight.js +84 -84
  15. package/dist/access-observe-write-category.js +13 -13
  16. package/dist/access-observe-write-surface.js +84 -84
  17. package/dist/access-offline-manifest.js +12 -12
  18. package/dist/access-operations-batch.js +88 -88
  19. package/dist/access-operations.js +95 -95
  20. package/dist/access-recall-concurrency.js +84 -84
  21. package/dist/access-recall-diagnostics.js +2 -2
  22. package/dist/access-recall-response.js +84 -84
  23. package/dist/access-recall-surface.js +84 -84
  24. package/dist/access-schema.js +8 -8
  25. package/dist/access-service.js +84 -84
  26. package/dist/access-surface-catalog.js +86 -86
  27. package/dist/active-recall.js +43 -43
  28. package/dist/adapters/index.js +7 -7
  29. package/dist/adapters/registry.js +3 -3
  30. package/dist/{auto-sync-VPHR3FBI.js → auto-sync-432USQDH.js} +9 -9
  31. package/dist/briefing.js +32 -32
  32. package/dist/buffer-eviction.d.ts +16 -0
  33. package/dist/buffer-eviction.d.ts.map +1 -0
  34. package/dist/buffer-eviction.js +8 -0
  35. package/dist/buffer-persistence.d.ts +45 -0
  36. package/dist/buffer-persistence.d.ts.map +1 -0
  37. package/dist/buffer-persistence.js +8 -0
  38. package/dist/buffer.d.ts +5 -2
  39. package/dist/buffer.d.ts.map +1 -1
  40. package/dist/buffer.js +13 -11
  41. package/dist/calibration.js +1 -1
  42. package/dist/causal-behavior.js +2 -2
  43. package/dist/causal-chain.js +2 -2
  44. package/dist/causal-consolidation.js +35 -35
  45. package/dist/causal-retrieval.js +2 -2
  46. package/dist/causal-trajectory-graph.js +2 -2
  47. package/dist/causal-trajectory.js +1 -1
  48. package/dist/{chunk-FL6SLVAJ.js → chunk-2AKIVSHP.js} +2 -2
  49. package/dist/{chunk-ORWDCX5Q.js → chunk-3AODCBKX.js} +11 -11
  50. package/dist/{chunk-XFDHL252.js → chunk-3K5IEJTK.js} +4 -4
  51. package/dist/{chunk-6FIFEXFF.js → chunk-3PLAL2KP.js} +21 -7
  52. package/dist/chunk-3PLAL2KP.js.map +1 -0
  53. package/dist/{chunk-XVZA6VXC.js → chunk-3SL52JKD.js} +4 -4
  54. package/dist/{chunk-ZSAQSLKL.js → chunk-3XVBGGF3.js} +2 -2
  55. package/dist/{chunk-XO4HOBM2.js → chunk-4B37KNMP.js} +2 -2
  56. package/dist/{chunk-NIANATGL.js → chunk-4IZ6AC2U.js} +2 -2
  57. package/dist/chunk-4OFXLQJD.js +58 -0
  58. package/dist/chunk-4OFXLQJD.js.map +1 -0
  59. package/dist/{chunk-S2PDFSXS.js → chunk-4P4VLPGB.js} +1 -1
  60. package/dist/{chunk-G5UR4DXQ.js → chunk-53BLBDV6.js} +2 -2
  61. package/dist/{chunk-PDYP7SUC.js → chunk-5ANUG4JZ.js} +2 -2
  62. package/dist/{chunk-2ZYIAUYU.js → chunk-5CWH2LKL.js} +4 -4
  63. package/dist/{chunk-S2S4U4G3.js → chunk-5DCS4C4S.js} +4 -4
  64. package/dist/{chunk-7WTTE5FW.js → chunk-5K23NQRI.js} +2 -2
  65. package/dist/{chunk-V3JZZJ2E.js → chunk-5UPOKIFP.js} +12 -12
  66. package/dist/{chunk-K567EIW3.js → chunk-63YPKHAU.js} +2 -2
  67. package/dist/{chunk-G3T6YMBO.js → chunk-64S6X4IU.js} +7 -7
  68. package/dist/{chunk-HJM23E65.js → chunk-6DTIYAAN.js} +2 -2
  69. package/dist/{chunk-G7XAZU2L.js → chunk-6F5BGIAF.js} +3 -3
  70. package/dist/{chunk-IHTKBQBS.js → chunk-6JEEY42N.js} +2 -2
  71. package/dist/{chunk-NHB4RC3G.js → chunk-6QOL4G76.js} +2 -2
  72. package/dist/{chunk-AD3ZB72W.js → chunk-6SYS5YX3.js} +2 -2
  73. package/dist/{chunk-DFP37GUN.js → chunk-7HXZOWTR.js} +2 -2
  74. package/dist/{chunk-DGBWPSM6.js → chunk-7VFNGQ4V.js} +2 -2
  75. package/dist/{chunk-77ZK533I.js → chunk-7ZRRJ6RG.js} +2 -2
  76. package/dist/{chunk-GMMZ45C4.js → chunk-AVVCPA7U.js} +6 -8
  77. package/dist/chunk-AVVCPA7U.js.map +1 -0
  78. package/dist/{chunk-QISYYK4L.js → chunk-AYBAC2N4.js} +3 -3
  79. package/dist/{chunk-V44DWTFA.js → chunk-AYXRK264.js} +6 -6
  80. package/dist/{chunk-LJSBF6PW.js → chunk-C2KOW2UQ.js} +2 -2
  81. package/dist/{chunk-GY4R4P2A.js → chunk-CUWOSRCS.js} +2 -2
  82. package/dist/{chunk-VNAIUNXI.js → chunk-CVMAOPAH.js} +10 -10
  83. package/dist/{chunk-CJKHLACF.js → chunk-DG4H56SK.js} +2 -2
  84. package/dist/{chunk-BQ6DGL6A.js → chunk-DKHX2FHI.js} +2 -2
  85. package/dist/{chunk-77IXBNV6.js → chunk-E24RUQEN.js} +2 -2
  86. package/dist/{chunk-HRT2SJPC.js → chunk-E3NBMTTX.js} +2 -2
  87. package/dist/{chunk-PTQZPVRQ.js → chunk-E5PVMB3I.js} +2 -2
  88. package/dist/{chunk-AHS3QEEA.js → chunk-EEOYF3IB.js} +2 -2
  89. package/dist/{chunk-5XTSIZ3L.js → chunk-EGNONTVT.js} +6 -6
  90. package/dist/{chunk-PH33R7GN.js → chunk-EHIKY2IA.js} +2 -2
  91. package/dist/{chunk-4ISHIPOC.js → chunk-FGEY2AGV.js} +2 -2
  92. package/dist/{chunk-O6YJI5VX.js → chunk-FKTMWDN2.js} +2 -2
  93. package/dist/{chunk-KQUN4RSX.js → chunk-FQFMLOAC.js} +18 -18
  94. package/dist/{chunk-5LWODP5R.js → chunk-FRAL3EU4.js} +2 -2
  95. package/dist/{chunk-AAANTXCQ.js → chunk-FZVZYU5C.js} +2 -2
  96. package/dist/{chunk-TGAXRT7N.js → chunk-GFYFKXWZ.js} +2 -2
  97. package/dist/{chunk-ID2PLENW.js → chunk-GGI6FLO6.js} +2 -2
  98. package/dist/{chunk-GDYLZ6FR.js → chunk-HJ3UTGIW.js} +3 -3
  99. package/dist/{chunk-X3IFRQKS.js → chunk-I73ZSORJ.js} +4 -4
  100. package/dist/{chunk-X73SCHKR.js → chunk-I75BWXRZ.js} +2 -2
  101. package/dist/{chunk-M3GKSCFN.js → chunk-J7G656MY.js} +4 -4
  102. package/dist/{chunk-EH6KLYIE.js → chunk-JF3MEIHO.js} +4 -4
  103. package/dist/{chunk-XUB4I2N6.js → chunk-JFI3ATK4.js} +2 -2
  104. package/dist/{chunk-R4SATHCV.js → chunk-JH2ALMPR.js} +2 -2
  105. package/dist/{chunk-TKBW4YLS.js → chunk-JH4FCVWJ.js} +2 -2
  106. package/dist/{chunk-DG5UKN2Y.js → chunk-JIA435P3.js} +2 -2
  107. package/dist/chunk-KASJJGRG.js +29 -0
  108. package/dist/chunk-KASJJGRG.js.map +1 -0
  109. package/dist/{chunk-4Z7O2QVJ.js → chunk-KOAVX2IT.js} +2 -2
  110. package/dist/{chunk-6NXHX6MI.js → chunk-KOY25HUB.js} +2 -2
  111. package/dist/{chunk-TRW7N4FS.js → chunk-L2JQSG5M.js} +2 -2
  112. package/dist/{chunk-QQ4T622E.js → chunk-L7PGPH4E.js} +2 -2
  113. package/dist/{chunk-TYT4TEQV.js → chunk-LDWE7OZS.js} +6 -2
  114. package/dist/chunk-LDWE7OZS.js.map +1 -0
  115. package/dist/{chunk-23VGZ65V.js → chunk-LHBOFROT.js} +2 -2
  116. package/dist/{chunk-VKB2FGNW.js → chunk-LOMSBYNS.js} +90 -90
  117. package/dist/{chunk-NDJ42GKB.js → chunk-MCPSMWUC.js} +6 -6
  118. package/dist/{chunk-ERMT5WQM.js → chunk-MKE5DP3S.js} +2 -2
  119. package/dist/{chunk-64IO6ZEE.js → chunk-MZWHIAOL.js} +2 -2
  120. package/dist/{chunk-LDXS746V.js → chunk-N7DVBHU3.js} +3 -3
  121. package/dist/{chunk-F2JLBXMG.js → chunk-NH6GZEQN.js} +8 -8
  122. package/dist/{chunk-7FG2JSU6.js → chunk-NMKETOAX.js} +2 -2
  123. package/dist/{chunk-GAARPWMN.js → chunk-OKKBOTRA.js} +2 -2
  124. package/dist/{chunk-PCIIKQXW.js → chunk-OLH4XCLU.js} +2 -2
  125. package/dist/{chunk-XA32GZ6B.js → chunk-OLHN4ZNT.js} +3 -3
  126. package/dist/{chunk-UR25IQVT.js → chunk-P5CUEB2Q.js} +8 -8
  127. package/dist/{chunk-LO775P3S.js → chunk-POGPI5GR.js} +2 -2
  128. package/dist/{chunk-FXO43NBW.js → chunk-PSQ2P2T3.js} +3 -3
  129. package/dist/{chunk-KRAMCBIW.js → chunk-QKXPOLQD.js} +4 -4
  130. package/dist/{chunk-65JLKIVA.js → chunk-QO5KDQGG.js} +8 -8
  131. package/dist/{chunk-A4B7WL5N.js → chunk-QOUKZ2N3.js} +2 -2
  132. package/dist/{chunk-ZABEDRGQ.js → chunk-RGKXF4W3.js} +2 -2
  133. package/dist/{chunk-IKCGNTGS.js → chunk-RWRHGE75.js} +2 -2
  134. package/dist/{chunk-NBH7IRME.js → chunk-SWZOAQUM.js} +54 -54
  135. package/dist/{chunk-FQ52AJXX.js → chunk-SZPPCEYT.js} +2 -2
  136. package/dist/{chunk-4YYIZ475.js → chunk-TAEJ2MRR.js} +52 -52
  137. package/dist/{chunk-3ODEGTVV.js → chunk-TDCR6PQL.js} +2 -2
  138. package/dist/{chunk-QCP75JGO.js → chunk-TFA6HPOA.js} +5 -5
  139. package/dist/{chunk-BBDASWNT.js → chunk-TJ5YGCPV.js} +81 -76
  140. package/dist/chunk-TJ5YGCPV.js.map +1 -0
  141. package/dist/{chunk-SE3JAD22.js → chunk-TPKB7T6Z.js} +2 -2
  142. package/dist/{chunk-6VYY2XFK.js → chunk-TVIGN3XZ.js} +19 -19
  143. package/dist/{chunk-OHMGR6QN.js → chunk-TXP7Q7T5.js} +2 -2
  144. package/dist/{chunk-ZG3HZZ6K.js → chunk-TYGLV6ZG.js} +5 -1
  145. package/dist/{chunk-ZG3HZZ6K.js.map → chunk-TYGLV6ZG.js.map} +1 -1
  146. package/dist/{chunk-AI2VXOSO.js → chunk-TYLNWE4D.js} +2 -2
  147. package/dist/{chunk-WI6MIJYK.js → chunk-U7HJBODU.js} +5 -5
  148. package/dist/{chunk-IS4HKNWP.js → chunk-UBN5AOLT.js} +2 -2
  149. package/dist/{chunk-A6PKEU7T.js → chunk-UFM3PJDT.js} +1 -1
  150. package/dist/chunk-UFM3PJDT.js.map +1 -0
  151. package/dist/{chunk-JNELS2TW.js → chunk-UJDTXWMT.js} +2 -2
  152. package/dist/{chunk-DJMC4W6N.js → chunk-VC3X7XP3.js} +2 -2
  153. package/dist/{chunk-A2D3WICT.js → chunk-VGFNTY3Y.js} +2 -2
  154. package/dist/{chunk-X544TW54.js → chunk-VGRM43X6.js} +2 -2
  155. package/dist/{chunk-CSGFGQBI.js → chunk-VPO53QMG.js} +2 -2
  156. package/dist/{chunk-BRZRP5WD.js → chunk-VSSQIBVU.js} +2 -2
  157. package/dist/{chunk-O3VKQMWC.js → chunk-WCBLPKG3.js} +366 -168
  158. package/dist/chunk-WCBLPKG3.js.map +1 -0
  159. package/dist/{chunk-GKNX4QO3.js → chunk-WCIDCJOQ.js} +3 -3
  160. package/dist/{chunk-7VJEZQYF.js → chunk-WEK3OUGO.js} +3 -3
  161. package/dist/{chunk-IVYAPAHG.js → chunk-WRDFYSUC.js} +2 -2
  162. package/dist/{chunk-5EILJ6W2.js → chunk-WXPBDEMW.js} +2 -2
  163. package/dist/{chunk-QZP3RMYP.js → chunk-X247CYL6.js} +4 -4
  164. package/dist/{chunk-UAYA4NJN.js → chunk-XHVO3CGX.js} +28 -36
  165. package/dist/chunk-XHVO3CGX.js.map +1 -0
  166. package/dist/{chunk-YLF42JQ7.js → chunk-XHX67LX6.js} +2 -2
  167. package/dist/{chunk-C6S2Y7HE.js → chunk-XKDQTDXN.js} +4 -4
  168. package/dist/{chunk-4AHKNZW7.js → chunk-XLEP7SS3.js} +2 -2
  169. package/dist/{chunk-B6L7BKA7.js → chunk-XRFLR3XF.js} +4 -4
  170. package/dist/{chunk-H7QC7WCU.js → chunk-XTBEXZFN.js} +4 -4
  171. package/dist/{chunk-CIJRM6SQ.js → chunk-Y5ZHZKZD.js} +2 -2
  172. package/dist/{chunk-H6SKBCNI.js → chunk-YC2C67F7.js} +2 -2
  173. package/dist/{chunk-EZ25VE3G.js → chunk-YNDLCWXS.js} +4 -4
  174. package/dist/{chunk-YOL56HY5.js → chunk-YQ6SLFNZ.js} +3 -3
  175. package/dist/{chunk-SIIWHIBK.js → chunk-YYGZ4EIY.js} +2 -2
  176. package/dist/{chunk-G22A6WJQ.js → chunk-Z2T5BPOZ.js} +2 -2
  177. package/dist/{chunk-RYUSWAAU.js → chunk-ZAP7BKTZ.js} +6 -6
  178. package/dist/cli.js +136 -136
  179. package/dist/coding/export-okf-codegraph.js +33 -33
  180. package/dist/coding/pre-action-gate.js +2 -2
  181. package/dist/compounding/engine.js +34 -34
  182. package/dist/config.d.ts.map +1 -1
  183. package/dist/config.js +43 -43
  184. package/dist/connectors/codex-materialize-runner.js +32 -32
  185. package/dist/connectors/index.js +32 -32
  186. package/dist/contradiction/index.js +5 -5
  187. package/dist/convergence-refresh.js +34 -34
  188. package/dist/conversation-index/backend.js +2 -2
  189. package/dist/corpus-watermark.js +34 -34
  190. package/dist/dashboard-runtime.js +2 -2
  191. package/dist/deep-recall-http-glue.js +9 -9
  192. package/dist/deep-recall-policy-llm.js +2 -2
  193. package/dist/entity-retrieval.js +34 -34
  194. package/dist/explicit-capture.js +7 -7
  195. package/dist/external-wiki-access.js +85 -85
  196. package/dist/extraction-faithfulness.js +2 -2
  197. package/dist/extraction-judge.d.ts +42 -2
  198. package/dist/extraction-judge.d.ts.map +1 -1
  199. package/dist/extraction-judge.js +12 -2
  200. package/dist/extraction-span-materialize.js +2 -2
  201. package/dist/extraction.js +47 -47
  202. package/dist/fallback-llm.d.ts +1 -0
  203. package/dist/fallback-llm.d.ts.map +1 -1
  204. package/dist/fallback-llm.js +1 -1
  205. package/dist/{graph-edge-decay-IU75NV42.js → graph-edge-decay-2BZTY2IM.js} +5 -5
  206. package/dist/graph-edge-decay-2BZTY2IM.js.map +1 -0
  207. package/dist/graph-jsonl.js +3 -3
  208. package/dist/graph-snapshot.js +3 -3
  209. package/dist/graph.js +2 -2
  210. package/dist/harmonic-retrieval.js +33 -33
  211. package/dist/harmonic-source-lookup.js +2 -2
  212. package/dist/index.js +236 -234
  213. package/dist/lcm/index.js +3 -3
  214. package/dist/location/index.js +35 -35
  215. package/dist/maintenance/memory-governance.js +32 -32
  216. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +32 -32
  217. package/dist/maintenance/rebuild-memory-projection-runner.js +34 -34
  218. package/dist/maintenance/rebuild-memory-projection.js +33 -33
  219. package/dist/memory-browse-operations.js +85 -85
  220. package/dist/memory-browse.js +5 -5
  221. package/dist/memory-subject.js +3 -3
  222. package/dist/namespaces/migrate.js +33 -33
  223. package/dist/namespaces/search.js +11 -11
  224. package/dist/namespaces/storage.js +32 -32
  225. package/dist/offline-sync-changeset-generations.js +3 -3
  226. package/dist/offline-sync-embedding-generation.js +2 -2
  227. package/dist/offline-sync-file-io.js +2 -2
  228. package/dist/offline-sync-impression-drain.js +3 -3
  229. package/dist/offline-sync-runtime-state.d.ts.map +1 -1
  230. package/dist/offline-sync-runtime-state.js +1 -1
  231. package/dist/offline-sync-snapshot-stream.js +8 -8
  232. package/dist/offline-sync-upload-staging.js +3 -3
  233. package/dist/offline-sync.js +8 -8
  234. package/dist/operator-doctor-corpus.js +35 -35
  235. package/dist/operator-toolkit.js +54 -54
  236. package/dist/orchestration/maintenance.js +44 -44
  237. package/dist/orchestrator.js +183 -181
  238. package/dist/qmd.js +4 -4
  239. package/dist/recall-explain-renderer.js +3 -3
  240. package/dist/recall-navigate-access.js +2 -2
  241. package/dist/recall-navigate-disclosure.js +2 -2
  242. package/dist/recall-navigate.js +2 -2
  243. package/dist/recall-navigation-operations.js +85 -85
  244. package/dist/recall-navigation.js +84 -84
  245. package/dist/recall-planner-llm.js +1 -1
  246. package/dist/recall-state-view-admission.js +5 -5
  247. package/dist/recall-why-service.js +5 -5
  248. package/dist/recall-xray-cli.js +4 -4
  249. package/dist/recall-xray-renderer.js +3 -3
  250. package/dist/recall-xray.js +2 -2
  251. package/dist/reconcile/manifest.js +3 -3
  252. package/dist/{resolution-V6JBMW7U.js → resolution-4ZEQPXUZ.js} +6 -6
  253. package/dist/resolution-4ZEQPXUZ.js.map +1 -0
  254. package/dist/resume-bundles.js +44 -44
  255. package/dist/retrieval-agents.js +2 -2
  256. package/dist/salvage-envelope.js +5 -5
  257. package/dist/search/factory.js +10 -10
  258. package/dist/search/index.js +14 -14
  259. package/dist/search/lancedb-backend.js +2 -2
  260. package/dist/search/meilisearch-backend.js +2 -2
  261. package/dist/search/orama-backend.js +2 -2
  262. package/dist/secure-store/index.js +2 -2
  263. package/dist/semantic-consolidation.js +33 -33
  264. package/dist/semantic-rule-promotion.js +32 -32
  265. package/dist/semantic-rule-verifier.js +32 -32
  266. package/dist/source-agent-qualifier.js +37 -37
  267. package/dist/standup/build.js +32 -32
  268. package/dist/storage/buffer-session-files.d.ts +69 -0
  269. package/dist/storage/buffer-session-files.d.ts.map +1 -0
  270. package/dist/storage.d.ts +5 -1
  271. package/dist/storage.d.ts.map +1 -1
  272. package/dist/storage.js +31 -31
  273. package/dist/subject-config.js +4 -4
  274. package/dist/summarizer.js +2 -2
  275. package/dist/support-passport/index.js +87 -87
  276. package/dist/transfer/export-okf.js +33 -33
  277. package/dist/types.d.ts +12 -0
  278. package/dist/types.d.ts.map +1 -1
  279. package/dist/types.js +1 -1
  280. package/dist/verified-recall.js +32 -32
  281. package/dist/who-knows-cli.js +33 -33
  282. package/dist/who-knows.js +32 -32
  283. package/dist/write-envelope.js +4 -4
  284. package/package.json +2 -2
  285. package/src/buffer-eviction.ts +51 -0
  286. package/src/buffer-incremental-persistence.test.ts +256 -0
  287. package/src/buffer-persistence.ts +89 -0
  288. package/src/buffer.ts +32 -61
  289. package/src/config.test.ts +16 -0
  290. package/src/config.ts +14 -0
  291. package/src/extraction-judge-chain.test.ts +298 -2
  292. package/src/extraction-judge.ts +147 -82
  293. package/src/fallback-llm.test.ts +94 -0
  294. package/src/fallback-llm.ts +7 -7
  295. package/src/offline-sync-runtime-state.ts +24 -2
  296. package/src/offline-sync.test.ts +9 -0
  297. package/src/secure-store/secure-fs.ts +11 -0
  298. package/src/secure-store/secure-store.test.ts +22 -0
  299. package/src/storage/buffer-session-files.ts +249 -0
  300. package/src/storage-buffer-sessions.test.ts +369 -0
  301. package/src/storage.ts +11 -16
  302. package/src/types.ts +12 -0
  303. package/dist/chunk-6FIFEXFF.js.map +0 -1
  304. package/dist/chunk-A6PKEU7T.js.map +0 -1
  305. package/dist/chunk-BBDASWNT.js.map +0 -1
  306. package/dist/chunk-GMMZ45C4.js.map +0 -1
  307. package/dist/chunk-O3VKQMWC.js.map +0 -1
  308. package/dist/chunk-TYT4TEQV.js.map +0 -1
  309. package/dist/chunk-UAYA4NJN.js.map +0 -1
  310. /package/dist/{auto-sync-VPHR3FBI.js.map → auto-sync-432USQDH.js.map} +0 -0
  311. /package/dist/{graph-edge-decay-IU75NV42.js.map → buffer-eviction.js.map} +0 -0
  312. /package/dist/{resolution-V6JBMW7U.js.map → buffer-persistence.js.map} +0 -0
  313. /package/dist/{chunk-FL6SLVAJ.js.map → chunk-2AKIVSHP.js.map} +0 -0
  314. /package/dist/{chunk-ORWDCX5Q.js.map → chunk-3AODCBKX.js.map} +0 -0
  315. /package/dist/{chunk-XFDHL252.js.map → chunk-3K5IEJTK.js.map} +0 -0
  316. /package/dist/{chunk-XVZA6VXC.js.map → chunk-3SL52JKD.js.map} +0 -0
  317. /package/dist/{chunk-ZSAQSLKL.js.map → chunk-3XVBGGF3.js.map} +0 -0
  318. /package/dist/{chunk-XO4HOBM2.js.map → chunk-4B37KNMP.js.map} +0 -0
  319. /package/dist/{chunk-NIANATGL.js.map → chunk-4IZ6AC2U.js.map} +0 -0
  320. /package/dist/{chunk-S2PDFSXS.js.map → chunk-4P4VLPGB.js.map} +0 -0
  321. /package/dist/{chunk-G5UR4DXQ.js.map → chunk-53BLBDV6.js.map} +0 -0
  322. /package/dist/{chunk-PDYP7SUC.js.map → chunk-5ANUG4JZ.js.map} +0 -0
  323. /package/dist/{chunk-2ZYIAUYU.js.map → chunk-5CWH2LKL.js.map} +0 -0
  324. /package/dist/{chunk-S2S4U4G3.js.map → chunk-5DCS4C4S.js.map} +0 -0
  325. /package/dist/{chunk-7WTTE5FW.js.map → chunk-5K23NQRI.js.map} +0 -0
  326. /package/dist/{chunk-V3JZZJ2E.js.map → chunk-5UPOKIFP.js.map} +0 -0
  327. /package/dist/{chunk-K567EIW3.js.map → chunk-63YPKHAU.js.map} +0 -0
  328. /package/dist/{chunk-G3T6YMBO.js.map → chunk-64S6X4IU.js.map} +0 -0
  329. /package/dist/{chunk-HJM23E65.js.map → chunk-6DTIYAAN.js.map} +0 -0
  330. /package/dist/{chunk-G7XAZU2L.js.map → chunk-6F5BGIAF.js.map} +0 -0
  331. /package/dist/{chunk-IHTKBQBS.js.map → chunk-6JEEY42N.js.map} +0 -0
  332. /package/dist/{chunk-NHB4RC3G.js.map → chunk-6QOL4G76.js.map} +0 -0
  333. /package/dist/{chunk-AD3ZB72W.js.map → chunk-6SYS5YX3.js.map} +0 -0
  334. /package/dist/{chunk-DFP37GUN.js.map → chunk-7HXZOWTR.js.map} +0 -0
  335. /package/dist/{chunk-DGBWPSM6.js.map → chunk-7VFNGQ4V.js.map} +0 -0
  336. /package/dist/{chunk-77ZK533I.js.map → chunk-7ZRRJ6RG.js.map} +0 -0
  337. /package/dist/{chunk-QISYYK4L.js.map → chunk-AYBAC2N4.js.map} +0 -0
  338. /package/dist/{chunk-V44DWTFA.js.map → chunk-AYXRK264.js.map} +0 -0
  339. /package/dist/{chunk-LJSBF6PW.js.map → chunk-C2KOW2UQ.js.map} +0 -0
  340. /package/dist/{chunk-GY4R4P2A.js.map → chunk-CUWOSRCS.js.map} +0 -0
  341. /package/dist/{chunk-VNAIUNXI.js.map → chunk-CVMAOPAH.js.map} +0 -0
  342. /package/dist/{chunk-CJKHLACF.js.map → chunk-DG4H56SK.js.map} +0 -0
  343. /package/dist/{chunk-BQ6DGL6A.js.map → chunk-DKHX2FHI.js.map} +0 -0
  344. /package/dist/{chunk-77IXBNV6.js.map → chunk-E24RUQEN.js.map} +0 -0
  345. /package/dist/{chunk-HRT2SJPC.js.map → chunk-E3NBMTTX.js.map} +0 -0
  346. /package/dist/{chunk-PTQZPVRQ.js.map → chunk-E5PVMB3I.js.map} +0 -0
  347. /package/dist/{chunk-AHS3QEEA.js.map → chunk-EEOYF3IB.js.map} +0 -0
  348. /package/dist/{chunk-5XTSIZ3L.js.map → chunk-EGNONTVT.js.map} +0 -0
  349. /package/dist/{chunk-PH33R7GN.js.map → chunk-EHIKY2IA.js.map} +0 -0
  350. /package/dist/{chunk-4ISHIPOC.js.map → chunk-FGEY2AGV.js.map} +0 -0
  351. /package/dist/{chunk-O6YJI5VX.js.map → chunk-FKTMWDN2.js.map} +0 -0
  352. /package/dist/{chunk-KQUN4RSX.js.map → chunk-FQFMLOAC.js.map} +0 -0
  353. /package/dist/{chunk-5LWODP5R.js.map → chunk-FRAL3EU4.js.map} +0 -0
  354. /package/dist/{chunk-AAANTXCQ.js.map → chunk-FZVZYU5C.js.map} +0 -0
  355. /package/dist/{chunk-TGAXRT7N.js.map → chunk-GFYFKXWZ.js.map} +0 -0
  356. /package/dist/{chunk-ID2PLENW.js.map → chunk-GGI6FLO6.js.map} +0 -0
  357. /package/dist/{chunk-GDYLZ6FR.js.map → chunk-HJ3UTGIW.js.map} +0 -0
  358. /package/dist/{chunk-X3IFRQKS.js.map → chunk-I73ZSORJ.js.map} +0 -0
  359. /package/dist/{chunk-X73SCHKR.js.map → chunk-I75BWXRZ.js.map} +0 -0
  360. /package/dist/{chunk-M3GKSCFN.js.map → chunk-J7G656MY.js.map} +0 -0
  361. /package/dist/{chunk-EH6KLYIE.js.map → chunk-JF3MEIHO.js.map} +0 -0
  362. /package/dist/{chunk-XUB4I2N6.js.map → chunk-JFI3ATK4.js.map} +0 -0
  363. /package/dist/{chunk-R4SATHCV.js.map → chunk-JH2ALMPR.js.map} +0 -0
  364. /package/dist/{chunk-TKBW4YLS.js.map → chunk-JH4FCVWJ.js.map} +0 -0
  365. /package/dist/{chunk-DG5UKN2Y.js.map → chunk-JIA435P3.js.map} +0 -0
  366. /package/dist/{chunk-4Z7O2QVJ.js.map → chunk-KOAVX2IT.js.map} +0 -0
  367. /package/dist/{chunk-6NXHX6MI.js.map → chunk-KOY25HUB.js.map} +0 -0
  368. /package/dist/{chunk-TRW7N4FS.js.map → chunk-L2JQSG5M.js.map} +0 -0
  369. /package/dist/{chunk-QQ4T622E.js.map → chunk-L7PGPH4E.js.map} +0 -0
  370. /package/dist/{chunk-23VGZ65V.js.map → chunk-LHBOFROT.js.map} +0 -0
  371. /package/dist/{chunk-VKB2FGNW.js.map → chunk-LOMSBYNS.js.map} +0 -0
  372. /package/dist/{chunk-NDJ42GKB.js.map → chunk-MCPSMWUC.js.map} +0 -0
  373. /package/dist/{chunk-ERMT5WQM.js.map → chunk-MKE5DP3S.js.map} +0 -0
  374. /package/dist/{chunk-64IO6ZEE.js.map → chunk-MZWHIAOL.js.map} +0 -0
  375. /package/dist/{chunk-LDXS746V.js.map → chunk-N7DVBHU3.js.map} +0 -0
  376. /package/dist/{chunk-F2JLBXMG.js.map → chunk-NH6GZEQN.js.map} +0 -0
  377. /package/dist/{chunk-7FG2JSU6.js.map → chunk-NMKETOAX.js.map} +0 -0
  378. /package/dist/{chunk-GAARPWMN.js.map → chunk-OKKBOTRA.js.map} +0 -0
  379. /package/dist/{chunk-PCIIKQXW.js.map → chunk-OLH4XCLU.js.map} +0 -0
  380. /package/dist/{chunk-XA32GZ6B.js.map → chunk-OLHN4ZNT.js.map} +0 -0
  381. /package/dist/{chunk-UR25IQVT.js.map → chunk-P5CUEB2Q.js.map} +0 -0
  382. /package/dist/{chunk-LO775P3S.js.map → chunk-POGPI5GR.js.map} +0 -0
  383. /package/dist/{chunk-FXO43NBW.js.map → chunk-PSQ2P2T3.js.map} +0 -0
  384. /package/dist/{chunk-KRAMCBIW.js.map → chunk-QKXPOLQD.js.map} +0 -0
  385. /package/dist/{chunk-65JLKIVA.js.map → chunk-QO5KDQGG.js.map} +0 -0
  386. /package/dist/{chunk-A4B7WL5N.js.map → chunk-QOUKZ2N3.js.map} +0 -0
  387. /package/dist/{chunk-ZABEDRGQ.js.map → chunk-RGKXF4W3.js.map} +0 -0
  388. /package/dist/{chunk-IKCGNTGS.js.map → chunk-RWRHGE75.js.map} +0 -0
  389. /package/dist/{chunk-NBH7IRME.js.map → chunk-SWZOAQUM.js.map} +0 -0
  390. /package/dist/{chunk-FQ52AJXX.js.map → chunk-SZPPCEYT.js.map} +0 -0
  391. /package/dist/{chunk-4YYIZ475.js.map → chunk-TAEJ2MRR.js.map} +0 -0
  392. /package/dist/{chunk-3ODEGTVV.js.map → chunk-TDCR6PQL.js.map} +0 -0
  393. /package/dist/{chunk-QCP75JGO.js.map → chunk-TFA6HPOA.js.map} +0 -0
  394. /package/dist/{chunk-SE3JAD22.js.map → chunk-TPKB7T6Z.js.map} +0 -0
  395. /package/dist/{chunk-6VYY2XFK.js.map → chunk-TVIGN3XZ.js.map} +0 -0
  396. /package/dist/{chunk-OHMGR6QN.js.map → chunk-TXP7Q7T5.js.map} +0 -0
  397. /package/dist/{chunk-AI2VXOSO.js.map → chunk-TYLNWE4D.js.map} +0 -0
  398. /package/dist/{chunk-WI6MIJYK.js.map → chunk-U7HJBODU.js.map} +0 -0
  399. /package/dist/{chunk-IS4HKNWP.js.map → chunk-UBN5AOLT.js.map} +0 -0
  400. /package/dist/{chunk-JNELS2TW.js.map → chunk-UJDTXWMT.js.map} +0 -0
  401. /package/dist/{chunk-DJMC4W6N.js.map → chunk-VC3X7XP3.js.map} +0 -0
  402. /package/dist/{chunk-A2D3WICT.js.map → chunk-VGFNTY3Y.js.map} +0 -0
  403. /package/dist/{chunk-X544TW54.js.map → chunk-VGRM43X6.js.map} +0 -0
  404. /package/dist/{chunk-CSGFGQBI.js.map → chunk-VPO53QMG.js.map} +0 -0
  405. /package/dist/{chunk-BRZRP5WD.js.map → chunk-VSSQIBVU.js.map} +0 -0
  406. /package/dist/{chunk-GKNX4QO3.js.map → chunk-WCIDCJOQ.js.map} +0 -0
  407. /package/dist/{chunk-7VJEZQYF.js.map → chunk-WEK3OUGO.js.map} +0 -0
  408. /package/dist/{chunk-IVYAPAHG.js.map → chunk-WRDFYSUC.js.map} +0 -0
  409. /package/dist/{chunk-5EILJ6W2.js.map → chunk-WXPBDEMW.js.map} +0 -0
  410. /package/dist/{chunk-QZP3RMYP.js.map → chunk-X247CYL6.js.map} +0 -0
  411. /package/dist/{chunk-YLF42JQ7.js.map → chunk-XHX67LX6.js.map} +0 -0
  412. /package/dist/{chunk-C6S2Y7HE.js.map → chunk-XKDQTDXN.js.map} +0 -0
  413. /package/dist/{chunk-4AHKNZW7.js.map → chunk-XLEP7SS3.js.map} +0 -0
  414. /package/dist/{chunk-B6L7BKA7.js.map → chunk-XRFLR3XF.js.map} +0 -0
  415. /package/dist/{chunk-H7QC7WCU.js.map → chunk-XTBEXZFN.js.map} +0 -0
  416. /package/dist/{chunk-CIJRM6SQ.js.map → chunk-Y5ZHZKZD.js.map} +0 -0
  417. /package/dist/{chunk-H6SKBCNI.js.map → chunk-YC2C67F7.js.map} +0 -0
  418. /package/dist/{chunk-EZ25VE3G.js.map → chunk-YNDLCWXS.js.map} +0 -0
  419. /package/dist/{chunk-YOL56HY5.js.map → chunk-YQ6SLFNZ.js.map} +0 -0
  420. /package/dist/{chunk-SIIWHIBK.js.map → chunk-YYGZ4EIY.js.map} +0 -0
  421. /package/dist/{chunk-G22A6WJQ.js.map → chunk-Z2T5BPOZ.js.map} +0 -0
  422. /package/dist/{chunk-RYUSWAAU.js.map → chunk-ZAP7BKTZ.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/fallback-llm.ts"],"sourcesContent":["import { log } from \"./logger.js\";\nimport type { AgentPersonaModelConfig, GatewayConfig, ModelProviderConfig, PluginConfig } from \"./types.js\";\nimport { extractJsonCandidates } from \"./json-extract.js\";\nimport {\n buildChatCompletionTemperature,\n buildChatCompletionTokenLimit,\n shouldAssumeOpenAiChatCompletions,\n} from \"./openai-chat-compat.js\";\nimport {\n resolveProviderApiKey,\n getGatewayRuntimeAuthForModel,\n} from \"./resolve-provider-secret.js\";\nimport {\n CODEX_SUBSCRIPTION_PROVIDER_ID,\n codexSubscriptionBuiltinProviderConfig,\n} from \"./providers/codex-subscription.js\";\nimport { loadModelsJsonProviders } from \"./models-json.js\";\nimport {\n abortReason,\n classifyThrownProviderError,\n codexDeadlineHeadroomMs,\n defaultOpenClawWorkspaceDir,\n extractResponsesOutputText,\n fallbackLlmRuntimeContextFromConfig,\n isTerminalCodexSubscriptionError,\n isTimeoutError,\n isUnsupportedJsonSchemaError,\n normalizeRuntimePath,\n raceFallbackLlmDeadline,\n readGatewayWorkspaceDir,\n tryCodexSubscriptionProvider,\n withCodexRuntimeShutdown,\n type FallbackLlmRuntimeContext,\n type StructuredParseFailure,\n type StructuredParseResult,\n} from \"./fallback-llm-codex-subscription.js\";\n\nexport {\n fallbackLlmRuntimeContextFromConfig,\n type FallbackLlmRuntimeContext,\n type StructuredParseFailure,\n type StructuredParseFailureReason,\n type StructuredParseResult,\n} from \"./fallback-llm-codex-subscription.js\";\n\nexport interface FallbackLlmOptions {\n temperature?: number;\n maxTokens?: number;\n reasoningHeadroomTokens?: number; // Responses API only: extra max_output_tokens for reasoning (they count against it); unset adds none\n timeoutMs?: number;\n signal?: AbortSignal;\n /** Set the Responses API storage policy. Other transports ignore this value. */\n store?: boolean;\n /** Request strict JSON output when a route uses the Responses API. */\n responsesJsonSchema?: { name: string; schema: Record<string, unknown> };\n /** Request provider-native structured output on supported JSON transports. */\n jsonSchema?: { name: string; schema: Record<string, unknown>; strict?: boolean };\n /** Hide provider error details that could echo private request content. */\n redactProviderErrors?: boolean;\n /** Explicit \"provider/model\" override to try before the configured chain. */\n model?: string;\n /** Explicit model chain override to use instead of the configured agent/default chain. */\n modelChain?: AgentPersonaModelConfig;\n /** Append the gateway default chain after an explicit model chain. */\n includeDefaultModelFallback?: boolean;\n /** Override which agent persona's model chain to use (by ID from agents.list[]). */\n agentId?: string;\n /** Reject a transport-successful response and continue through the configured model chain. */\n acceptResponse?: (response: FallbackLlmResponse) => boolean;\n /**\n * Optional out-box for the terminal failure cause (issue #2891): when every\n * model in the chain fails, the last thrown provider error is recorded here\n * so callers can classify it (e.g. HTTP 429 → rate-limited) in memory\n * instead of seeing only null. Never logged.\n */\n failureDiag?: { lastError?: unknown };\n}\n\nexport interface FallbackLlmAvailabilityOptions {\n agentId?: string;\n modelChain?: AgentPersonaModelConfig;\n}\n\n/**\n * Resolve the gateway routing options Remnic's background tasks should pass to\n * FallbackLlmClient — extraction, fact/profile/identity consolidation,\n * summarization, calibration, and causal/semantic consolidation. Single source\n * of truth so every task path stays consistent and can't diverge (gotcha #22):\n * in gateway mode an explicit `taskModelChain` wins over the gateway agent\n * persona; otherwise the persona (if any) is used. Returns `{}` in plugin mode\n * because the chain resolves through gateway providers only. Issue #1365.\n */\nexport function gatewayTaskChainOptions(\n config: Pick<PluginConfig, \"modelSource\" | \"taskModelChain\" | \"gatewayAgentId\">,\n): Pick<FallbackLlmOptions, \"modelChain\" | \"agentId\"> {\n if (config.modelSource !== \"gateway\") return {};\n if (config.taskModelChain) return { modelChain: config.taskModelChain };\n return config.gatewayAgentId ? { agentId: config.gatewayAgentId } : {};\n}\n\nexport interface FallbackLlmResponse {\n content: string;\n modelUsed: string;\n usage?: {\n inputTokens?: number;\n outputTokens?: number;\n totalTokens?: number;\n };\n}\n\ntype ChatCompletionOutcome =\n | { ok: true; response: FallbackLlmResponse }\n | { ok: false; failure: Omit<StructuredParseFailure, \"result\"> };\n\ninterface ModelRef {\n providerId: string;\n modelId: string;\n providerConfig: ModelProviderConfig;\n modelString: string;\n}\n\nconst PROVIDER_ALIASES: Record<string, readonly string[]> = {\n \"openai-codex\": [\"codex\"],\n codex: [\"openai-codex\"],\n \"claude-cli\": [\"anthropic\"],\n};\n\nconst LEGACY_PROVIDER_IDS = new Set([\"openai-codex\", \"claude-cli\"]);\n\nconst MANAGED_SECRETREF_MARKER = [\"secretref\", \"managed\"].join(\"-\");\nconst PROVIDER_API_KEY_FIELD = [\"api\", \"Key\"].join(\"\") as keyof ModelProviderConfig;\n\n/** Built-in OAuth/managed-auth providers so resolveProviderConfig reaches runtime auth. */\nconst BUILT_IN_PROVIDER_FALLBACKS: Record<string, ModelProviderConfig> = {\n anthropic: {\n baseUrl: \"https://api.anthropic.com/v1\",\n api: \"anthropic-messages\",\n models: [],\n [PROVIDER_API_KEY_FIELD]: MANAGED_SECRETREF_MARKER,\n },\n openai: {\n baseUrl: \"https://api.openai.com/v1\",\n api: \"openai-responses\",\n models: [],\n [PROVIDER_API_KEY_FIELD]: MANAGED_SECRETREF_MARKER,\n },\n // Subscription-OAuth extraction provider (issue #2784): no apiKey — the\n // codex CLI login authenticates, via the runner the codex-subscription\n // module registers on this same seam.\n [CODEX_SUBSCRIPTION_PROVIDER_ID]: codexSubscriptionBuiltinProviderConfig(),\n};\n\n/**\n * Gateway/task LLM client. In `modelSource: \"gateway\"` this is the primary\n * configured path (taskModelChain / agent persona), not a secondary recovery\n * client. The class name stays `FallbackLlmClient` because it is imported\n * widely; prefer the `TaskLlmClient` alias in new code. Issue #2967.\n */\nexport class FallbackLlmClient {\n private gatewayConfig: GatewayConfig | undefined;\n private runtimeContext: FallbackLlmRuntimeContext;\n\n constructor(\n gatewayConfig?: GatewayConfig,\n runtimeContext: FallbackLlmRuntimeContext = {},\n ) {\n this.gatewayConfig = gatewayConfig;\n this.runtimeContext = {\n ...runtimeContext,\n workspaceDir:\n normalizeRuntimePath(runtimeContext.workspaceDir) ??\n readGatewayWorkspaceDir(gatewayConfig) ??\n defaultOpenClawWorkspaceDir(),\n };\n }\n\n /**\n * Check if fallback is available (gateway config has at least one model).\n */\n isAvailable(agentIdOrOptions?: string | FallbackLlmAvailabilityOptions): boolean {\n const options = typeof agentIdOrOptions === \"string\"\n ? { agentId: agentIdOrOptions }\n : (agentIdOrOptions ?? {});\n const models = this.getModelChain(options.agentId, undefined, options.modelChain);\n return models.length > 0;\n }\n\n /**\n * Make a chat completion request using the gateway's default AI chain.\n * Tries primary first, then each fallback in order.\n * When agentId is provided, uses that agent persona's model chain instead of defaults.\n */\n async chatCompletion(\n messages: Array<{ role: \"system\" | \"user\" | \"assistant\"; content: string }>,\n options: FallbackLlmOptions = {},\n ): Promise<FallbackLlmResponse | null> {\n const outcome = await this.completeChat(messages, options);\n return outcome.ok ? outcome.response : null;\n }\n\n /**\n * Same transport walk as chatCompletion, but tagged so structured parse can\n * tell timeout / empty / HTTP error apart instead of collapsing them to null.\n */\n private async completeChat(\n messages: Array<{ role: \"system\" | \"user\" | \"assistant\"; content: string }>,\n options: FallbackLlmOptions = {},\n ): Promise<ChatCompletionOutcome> {\n const models = this.getModelChain(\n options.agentId,\n options.model,\n options.modelChain,\n options.includeDefaultModelFallback,\n );\n if (models.length === 0) {\n log.warn(\"task LLM: no models configured in gateway\");\n return { ok: false, failure: { failureReason: \"no_models\", errorClass: \"no_models\" } };\n }\n options = withCodexRuntimeShutdown(options, this.runtimeContext.codexSubscriptionRunner);\n\n let lastFailure: Omit<StructuredParseFailure, \"result\"> = {\n failureReason: \"http_error\",\n errorClass: \"network\",\n };\n\n const recordFailure = (\n failure: Omit<StructuredParseFailure, \"result\">,\n attemptedModel?: string,\n ): void => {\n lastFailure = attemptedModel ? { ...failure, attemptedModel } : failure;\n };\n\n const throwIfCallerAborted = (signal: AbortSignal | undefined): void => {\n if (!signal?.aborted) return;\n const reason = abortReason(signal);\n if (isTimeoutError(reason) && !options.signal?.aborted) {\n recordFailure({ failureReason: \"timeout\", errorClass: \"timeout\" });\n return;\n }\n throw reason;\n };\n\n const runChain = async (\n initialOptions: FallbackLlmOptions,\n ): Promise<FallbackLlmResponse | null> => {\n let runOptions = initialOptions;\n let lastRejectedResponse: FallbackLlmResponse | null = null;\n let lastError: unknown;\n let terminalError: unknown;\n // Try each model in the chain\n for (let i = 0; i < models.length; i++) {\n if (runOptions.signal?.aborted) {\n throwIfCallerAborted(runOptions.signal);\n if (lastFailure.failureReason === \"timeout\") return null;\n }\n const model = models[i];\n const isFallback = i > 0;\n\n try {\n const result = await this.tryModel(model, messages, runOptions);\n if (result?.content) {\n const response = {\n content: result.content,\n modelUsed: model.modelString,\n usage: result.usage,\n };\n if (runOptions.acceptResponse && !runOptions.acceptResponse(response)) {\n lastRejectedResponse = response;\n log.debug(`task LLM: ${model.modelString} returned rejected output, trying next...`);\n continue;\n }\n if (isFallback) {\n log.debug(`task LLM: succeeded using ${model.modelString} (fallback ${i})`);\n }\n return response;\n }\n recordFailure({ failureReason: \"empty\", errorClass: \"empty\" }, model.modelString);\n } catch (err) {\n if (isTerminalCodexSubscriptionError(err) && runOptions.signal?.aborted) {\n throw err;\n }\n if (runOptions.signal?.aborted) {\n throwIfCallerAborted(runOptions.signal);\n if (lastFailure.failureReason === \"timeout\") return null;\n }\n lastError = err;\n if (\n (runOptions.jsonSchema || runOptions.responsesJsonSchema) &&\n isUnsupportedJsonSchemaError(err)\n ) {\n log.debug(`task LLM: ${model.modelString} rejected native JSON schema; retrying without it`);\n // Degrade to prompt-only for the REST of the chain too, so an\n // N-model chain where every provider rejects structured output\n // costs N+1 requests instead of 2N.\n runOptions = {\n ...runOptions,\n jsonSchema: undefined,\n responsesJsonSchema: undefined,\n };\n try {\n const result = await this.tryModel(model, messages, runOptions);\n if (result?.content) {\n const response = {\n content: result.content,\n modelUsed: model.modelString,\n usage: result.usage,\n };\n if (!runOptions.acceptResponse || runOptions.acceptResponse(response)) {\n return response;\n }\n lastRejectedResponse = response;\n log.debug(`task LLM: ${model.modelString} unstructured retry output rejected by acceptResponse, trying next model...`);\n continue;\n }\n recordFailure({ failureReason: \"empty\", errorClass: \"empty\" }, model.modelString);\n } catch (retryError) {\n if (isTerminalCodexSubscriptionError(retryError) && runOptions.signal?.aborted) {\n throw retryError;\n }\n if (runOptions.signal?.aborted) {\n throwIfCallerAborted(runOptions.signal);\n if (lastFailure.failureReason === \"timeout\") return null;\n }\n lastError = retryError;\n const retryClassified = classifyThrownProviderError(retryError);\n recordFailure(retryClassified, model.modelString);\n const retryErrorMsg = runOptions.redactProviderErrors\n ? \"provider error details redacted\"\n : retryError instanceof Error\n ? retryError.message\n : String(retryError);\n log.debug(\n `task LLM: ${model.modelString} unstructured retry failed (${retryErrorMsg})`,\n );\n if (isTerminalCodexSubscriptionError(retryError)) {\n terminalError = retryError;\n }\n }\n continue;\n }\n const classified = classifyThrownProviderError(err);\n recordFailure(classified, model.modelString);\n const errorMsg = runOptions.redactProviderErrors\n ? \"provider error details redacted\"\n : err instanceof Error\n ? err.message\n : String(err);\n log.debug(`task LLM: ${model.modelString} failed (${errorMsg}), trying next...`);\n if (isTerminalCodexSubscriptionError(err)) {\n terminalError = err;\n }\n // Continue to next model in chain\n }\n }\n\n log.warn(`task LLM: all ${models.length} models in chain failed`);\n if (options.failureDiag && lastError !== undefined && !lastRejectedResponse) {\n options.failureDiag.lastError = lastError;\n }\n // A terminal typed provider failure must reach the caller when the\n // chain is exhausted — the documented timeout/re-login guidance\n // depends on it (issue #2833).\n if (terminalError !== undefined) {\n throw terminalError;\n }\n return lastRejectedResponse;\n };\n\n const toOutcome = (response: FallbackLlmResponse | null): ChatCompletionOutcome => {\n if (response) return { ok: true, response };\n return { ok: false, failure: lastFailure };\n };\n\n if (typeof options.timeoutMs === \"number\") {\n if (options.timeoutMs <= 0) {\n log.warn(\"task LLM: timed out before request started\");\n return { ok: false, failure: { failureReason: \"timeout\", errorClass: \"timeout\" } };\n }\n const controller = new AbortController();\n const onCallerAbort = (): void => {\n controller.abort(abortReason(options.signal));\n };\n options.signal?.addEventListener(\"abort\", onCallerAbort, { once: true });\n if (options.signal?.aborted) onCallerAbort();\n const timedOptions = { ...options, signal: controller.signal };\n const chain = runChain(timedOptions);\n const guarded = chain.catch((err) => {\n if (isTerminalCodexSubscriptionError(err)) throw err;\n return null;\n });\n try {\n const timeoutError = Object.assign(\n new Error(`task LLM timed out after ${options.timeoutMs}ms`),\n { name: \"TimeoutError\" },\n );\n const outcome = await raceFallbackLlmDeadline(\n guarded,\n options.timeoutMs,\n () => {\n log.warn(`task LLM: timed out after ${options.timeoutMs}ms`);\n recordFailure({ failureReason: \"timeout\", errorClass: \"timeout\" });\n controller.abort(timeoutError);\n if (options.failureDiag) options.failureDiag.lastError = timeoutError;\n },\n models.some((m) => m.providerConfig.api === \"codex-cli\") ? codexDeadlineHeadroomMs(options.timeoutMs) : 0,\n );\n if (outcome.timedOut) {\n return { ok: false, failure: { failureReason: \"timeout\", errorClass: \"timeout\" } };\n }\n return toOutcome(outcome.value);\n } finally {\n options.signal?.removeEventListener(\"abort\", onCallerAbort);\n }\n }\n\n return toOutcome(await runChain(options));\n }\n\n /**\n * Make a request with structured output (Zod schema).\n * Returns parsed JSON or null on failure.\n */\n async parseWithSchema<T>(\n messages: Array<{ role: \"system\" | \"user\" | \"assistant\"; content: string }>,\n schema: { parse: (data: unknown) => T },\n options: FallbackLlmOptions = {},\n ): Promise<T | null> {\n const detailed = await this.parseWithSchemaDetailed(messages, schema, options);\n return detailed?.result ?? null;\n }\n\n /**\n * Like parseWithSchema but also returns the model that was used,\n * so callers can emit accurate trace events.\n */\n async parseWithSchemaDetailed<T>(\n messages: Array<{ role: \"system\" | \"user\" | \"assistant\"; content: string }>,\n schema: { parse: (data: unknown) => T },\n options: FallbackLlmOptions = {},\n ): Promise<StructuredParseResult<T>> {\n let outcome: ChatCompletionOutcome;\n try {\n outcome = await this.completeChat(messages, options);\n } catch (err) {\n // Caller aborts must propagate (e.g. recall planner cancellation) — do\n // not swallow them as a provider failure, or abort-driven callers lose\n // cancellation and treat it as an extraction error (codex review).\n // Terminal codex-subscription failures propagate for the same reason:\n // their TimeoutError/auth guidance is the documented contract.\n if (options.signal?.aborted || isTerminalCodexSubscriptionError(err)) throw err;\n if (isTimeoutError(err)) {\n return { result: null, failureReason: \"timeout\", errorClass: \"timeout\" };\n }\n log.warn(\"task LLM: chatCompletion threw during structured parse:\", err);\n return { result: null, ...classifyThrownProviderError(err) };\n }\n if (!outcome.ok) {\n return { result: null, ...outcome.failure };\n }\n const response = outcome.response;\n if (!response.content) {\n return {\n result: null,\n failureReason: \"empty\",\n attemptedModel: response.modelUsed,\n errorClass: \"empty\",\n };\n }\n\n try {\n const candidates = extractJsonCandidates(response.content);\n let sawJson = false;\n let sawSchemaReject = false;\n for (const c of candidates) {\n let parsed: unknown;\n try {\n parsed = JSON.parse(c);\n sawJson = true;\n } catch {\n continue;\n }\n try {\n return { result: schema.parse(parsed), modelUsed: response.modelUsed };\n } catch {\n sawSchemaReject = true;\n }\n }\n if (sawSchemaReject) {\n return {\n result: null,\n failureReason: \"schema_rejection\",\n attemptedModel: response.modelUsed,\n errorClass: \"schema_rejection\",\n };\n }\n return {\n result: null,\n failureReason: \"empty\",\n attemptedModel: response.modelUsed,\n errorClass: \"empty\",\n };\n } catch (err) {\n log.warn(\"task LLM: failed to parse structured output:\", err);\n return {\n result: null,\n failureReason: \"empty\",\n attemptedModel: response.modelUsed,\n errorClass: \"empty\",\n };\n }\n }\n\n /**\n * Get the full model chain from gateway config.\n * Returns array of models in order: [primary, fallback1, fallback2, ...]\n *\n * When modelChainOverride is provided, uses it instead of any configured\n * agent/default chain. Otherwise, when agentId is provided, looks up the\n * matching entry in agents.list[] and uses that persona's model chain.\n * Falls back to agents.defaults.model if agentId is not found or not provided.\n */\n private getModelChain(\n agentId?: string,\n modelOverride?: string,\n modelChainOverride?: AgentPersonaModelConfig,\n includeDefaultModelFallback = true,\n ): ModelRef[] {\n const chain: ModelRef[] = [];\n const providers = this.gatewayConfig?.models?.providers ?? {};\n\n // Resolve the model config: explicit task chain, agent persona chain, or global defaults\n let modelConfig: AgentPersonaModelConfig | undefined;\n\n if (modelChainOverride?.primary) {\n modelConfig = modelChainOverride;\n log.debug(\"task LLM: using explicit model chain override\");\n } else if (modelChainOverride) {\n log.warn(\"task LLM: ignoring explicit model chain override without primary model\");\n }\n\n if (!modelConfig && agentId) {\n const persona = this.gatewayConfig?.agents?.list?.find(\n (a) => a.id === agentId,\n );\n if (persona?.model) {\n modelConfig = persona.model;\n log.debug(`task LLM: using agent persona \"${agentId}\" model chain`);\n } else {\n log.warn(\n `task LLM: agent persona \"${agentId}\" not found or has no model config, falling back to defaults`,\n );\n }\n }\n\n if (!modelConfig) {\n modelConfig = this.gatewayConfig?.agents?.defaults?.model;\n }\n\n // Build list of model strings: primary + fallbacks\n const modelStrings: string[] = [];\n\n const addModelString = (value: unknown): void => {\n if (typeof value !== \"string\") return;\n const trimmed = value.trim();\n if (trimmed.length > 0 && !modelStrings.includes(trimmed)) {\n modelStrings.push(trimmed);\n }\n };\n\n addModelString(modelOverride);\n addModelString(modelConfig?.primary);\n\n if (Array.isArray(modelConfig?.fallbacks)) {\n for (const fb of modelConfig.fallbacks) {\n addModelString(fb);\n }\n }\n\n // Parse each model string and look up provider config\n for (const modelString of modelStrings) {\n const modelRef = this.parseModelString(modelString, providers);\n if (modelRef) {\n chain.push(modelRef);\n }\n }\n\n // Implicit last-resort: when a task-specific modelChain override is active,\n // append the gateway default model so a stale or exhausted taskModelChain\n // never leaves the chain empty — Remnic should never be the reason a chat is\n // interrupted by a flush failure. Keyed on `modelChainOverride?.primary` —\n // the SAME activation condition chain resolution uses above — so a\n // primary-less override (e.g. {}) that falls through to a persona/default\n // chain does NOT get the default appended (gotcha #39). Issue #1365 / PR #1370.\n if (includeDefaultModelFallback && modelChainOverride?.primary && modelStrings.length > 0) {\n // Append the FULL gateway default chain (primary + fallbacks), not just\n // the primary — if the default primary is also unreachable, a listed\n // default fallback may still succeed (cursor review #1425).\n const defaults = this.gatewayConfig?.agents?.defaults?.model;\n const defaultStrings: string[] = [\n ...(typeof defaults?.primary === \"string\" ? [defaults.primary] : []),\n ...(Array.isArray(defaults?.fallbacks) ? defaults.fallbacks : []),\n ];\n for (const candidate of defaultStrings) {\n if (typeof candidate !== \"string\") continue;\n const trimmed = candidate.trim();\n if (trimmed.length === 0 || modelStrings.includes(trimmed)) continue;\n const defaultRef = this.parseModelString(trimmed, providers);\n if (defaultRef) {\n chain.push(defaultRef);\n modelStrings.push(trimmed); // keep dedupe correct for later default fallbacks\n log.debug(\n `task LLM: appended gateway default model \"${trimmed}\" as implicit last resort`,\n );\n }\n }\n }\n\n return chain;\n }\n\n /**\n * Parse a \"provider/model\" string and look up its config.\n */\n private parseModelString(\n modelString: string,\n providers: Record<string, ModelProviderConfig>,\n ): ModelRef | null {\n // Parse \"provider/model\" format (e.g., \"openai/gpt-5.5\", \"anthropic/claude-opus-4-6\")\n const parts = modelString.split(\"/\");\n if (parts.length < 2) {\n log.warn(`task LLM: invalid model format: ${modelString}`);\n return null;\n }\n\n const requestedProviderId = parts[0];\n const modelId = parts.slice(1).join(\"/\"); // Handle cases like \"openai/gpt-5.5\"\n\n // Respect the active gateway config first so profile-local overrides and\n // credentials win. Fall back to the materialized models.json only when\n // the provider is absent from the loaded config (for built-in providers\n // registered by the gateway at runtime).\n const resolvedProvider = this.resolveProviderConfig(requestedProviderId, providers);\n const providerConfig = resolvedProvider?.config;\n if (!providerConfig) {\n log.warn(\n `task LLM: provider not found: ${requestedProviderId} ` +\n `(tried: ${this.providerResolutionCandidates(requestedProviderId).join(\", \")})`,\n );\n return null;\n }\n\n return {\n providerId: resolvedProvider.providerId,\n modelId,\n providerConfig,\n modelString,\n };\n }\n\n private resolveProviderConfig(\n providerId: string,\n providers: Record<string, ModelProviderConfig>,\n ): { providerId: string; config: ModelProviderConfig } | null {\n const candidates = this.providerResolutionCandidates(providerId);\n const aliasCandidates = candidates.filter((candidate) => candidate !== providerId);\n const fallbackCandidates = LEGACY_PROVIDER_IDS.has(providerId)\n ? [...aliasCandidates, providerId]\n : [providerId, ...aliasCandidates];\n for (const candidate of candidates) {\n const config = providers[candidate];\n if (config) {\n if (candidate !== providerId) {\n log.debug(`task LLM: provider \"${providerId}\" resolved via alias \"${candidate}\"`);\n }\n return { providerId: candidate, config };\n }\n }\n for (const candidate of fallbackCandidates) {\n const config = this.resolveFromModelsJson(candidate);\n if (config) {\n if (candidate !== providerId) {\n log.debug(`task LLM: provider \"${providerId}\" resolved via models.json alias \"${candidate}\"`);\n }\n return { providerId: candidate, config };\n }\n const builtInConfig = BUILT_IN_PROVIDER_FALLBACKS[candidate];\n if (builtInConfig) {\n if (candidate === providerId) {\n log.debug(`task LLM: provider \"${providerId}\" resolved from built-in defaults`);\n return { providerId, config: builtInConfig };\n }\n log.debug(`task LLM: provider \"${providerId}\" resolved via built-in alias \"${candidate}\"`);\n return { providerId: candidate, config: builtInConfig };\n }\n }\n return null;\n }\n\n private providerResolutionCandidates(providerId: string): string[] {\n const candidates = [providerId, ...(PROVIDER_ALIASES[providerId] ?? [])];\n return [...new Set(candidates)];\n }\n\n /**\n * Look up a provider from the gateway's materialized models.json, which\n * contains all providers including built-in ones (openai-codex, google-vertex,\n * etc.) that aren't in the user's openclaw.json but are registered by\n * gateway plugins. Returns null if the provider isn't found there either.\n */\n private resolveFromModelsJson(providerId: string): ModelProviderConfig | null {\n const allProviders = loadModelsJsonProviders();\n const config = allProviders[providerId];\n if (config) {\n log.debug(`task LLM: resolved provider \"${providerId}\" from models.json (api: ${config.api ?? \"default\"})`);\n return config;\n }\n return null;\n }\n\n /**\n * Try to call a single model.\n *\n * Uses the gateway's native getRuntimeAuthForModel when available — this\n * handles all provider-specific auth transforms (OAuth token exchange,\n * base URL overrides for codex/copilot/etc.) through the same codepath\n * the gateway itself uses. Falls back to resolveProviderApiKey for\n * simpler providers or when the runtime module isn't loaded.\n */\n private async tryModel(\n model: ModelRef,\n messages: Array<{ role: \"system\" | \"user\" | \"assistant\"; content: string }>,\n options: FallbackLlmOptions,\n ): Promise<{ content: string; usage?: FallbackLlmResponse[\"usage\"] } | null> {\n const codexResult = await tryCodexSubscriptionProvider(\n model,\n messages,\n options,\n () => this.resolveFallbackApiKey(model),\n this.runtimeContext.codexSubscriptionRunner,\n );\n if (codexResult !== undefined) return codexResult;\n const runtimeAuth = await this.resolveRuntimeAuth(model);\n const effectiveBaseUrl = runtimeAuth?.baseUrl ?? model.providerConfig.baseUrl;\n const resolvedApiKey = runtimeAuth?.apiKey ?? await this.resolveFallbackApiKey(model);\n\n // If the raw key looks like an unresolved secret ref and resolution fails,\n // skip this provider entirely so the chain falls through to the next.\n const rawKey = model.providerConfig.apiKey;\n const needsResolution = rawKey === \"secretref-managed\" || (typeof rawKey === \"object\" && rawKey !== null);\n if (needsResolution && !resolvedApiKey) {\n throw new Error(`API key for provider \"${model.providerId}\" could not be resolved from secret ref`);\n }\n\n const effectiveConfig: ModelProviderConfig = {\n ...model.providerConfig,\n baseUrl: effectiveBaseUrl,\n ...(resolvedApiKey ? { apiKey: resolvedApiKey } : {}),\n };\n\n if (model.providerConfig.api === \"anthropic-messages\") {\n return await this.callAnthropic(effectiveConfig, model.modelId, messages, options);\n }\n\n if (model.providerConfig.api === \"ollama-chat\") {\n return await this.callOllamaChat(effectiveConfig, model.modelId, messages, options);\n }\n\n const wanted = Math.floor(options.reasoningHeadroomTokens ?? 0);\n const headroom = Number.isFinite(wanted) ? Math.max(0, wanted) : 0; // NaN and Infinity add nothing\n const capped = options.maxTokens === undefined ? options : { ...options, maxTokens: options.maxTokens + headroom };\n\n if (\n model.providerConfig.api === \"openai-responses\" ||\n model.providerConfig.api === \"openai-codex-responses\" ||\n model.providerConfig.api === \"azure-openai-responses\"\n ) {\n return await this.callOpenAIResponses(effectiveConfig, model.modelId, messages, capped);\n }\n\n // For OpenAI-compatible chat-completions APIs (openai-completions,\n // ollama, etc.) and unknown formats, use chat completions — the gateway's\n // runtime auth resolver returns request-ready base URL and credentials for\n // most providers.\n return await this.callOpenAI(\n effectiveConfig,\n model.modelId,\n messages,\n capped,\n shouldAssumeOpenAiChatCompletions(effectiveConfig.baseUrl),\n );\n }\n\n /**\n * Resolve request-ready auth through the gateway's native runtime, which\n * handles provider-specific transforms (OAuth token exchange for codex/copilot,\n * base URL rewrite, etc.). Returns null if the runtime isn't available.\n */\n private async resolveRuntimeAuth(\n model: ModelRef,\n ): Promise<{ apiKey?: string; baseUrl?: string } | null> {\n try {\n const getRuntimeAuth = await getGatewayRuntimeAuthForModel({\n getRuntimeAuthForModel: this.runtimeContext.getRuntimeAuthForModel,\n });\n if (!getRuntimeAuth) return null;\n\n const result = await getRuntimeAuth({\n model: {\n provider: model.providerId,\n id: model.modelId,\n api: model.providerConfig.api,\n baseUrl: model.providerConfig.baseUrl,\n },\n cfg: this.gatewayConfig,\n workspaceDir: this.runtimeContext.workspaceDir,\n });\n\n if (result?.apiKey || result?.baseUrl) {\n log.debug(\n `task LLM: resolved runtime auth for \"${model.modelString}\" (source: ${result.source ?? \"unknown\"}, mode: ${result.mode ?? \"unknown\"})`,\n );\n return { apiKey: result.apiKey, baseUrl: result.baseUrl };\n }\n } catch (err) {\n log.debug(\n `task LLM: gateway runtime auth failed for \"${model.modelString}\": ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n return null;\n }\n\n /**\n * Resolve API key through the existing provider-level resolution (env vars,\n * secret refs, etc.). Used as fallback when gateway runtime auth isn't available.\n */\n private async resolveFallbackApiKey(model: ModelRef): Promise<string | undefined> {\n return resolveProviderApiKey(\n model.providerId,\n model.providerConfig.apiKey,\n this.gatewayConfig,\n this.runtimeContext.agentDir,\n {\n resolveApiKeyForProvider: this.runtimeContext.resolveApiKeyForProvider,\n },\n );\n }\n\n /**\n * Call OpenAI-compatible API.\n */\n private async callOpenAI(\n config: ModelProviderConfig,\n modelId: string,\n messages: Array<{ role: \"system\" | \"user\" | \"assistant\"; content: string }>,\n options: FallbackLlmOptions,\n assumeOpenAI: boolean,\n ): Promise<{ content: string; usage?: FallbackLlmResponse[\"usage\"] } | null> {\n const base = config.baseUrl.replace(/\\/$/, \"\");\n const url = base.endsWith(\"/v1\")\n ? `${base}/chat/completions`\n : `${base}/v1/chat/completions`;\n\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n ...config.headers,\n };\n\n // Handle auth — apiKey is already resolved to a string by tryModel()\n if (config.apiKey && typeof config.apiKey === \"string\") {\n if (config.authHeader !== false) {\n headers[\"Authorization\"] = `Bearer ${config.apiKey}`;\n }\n }\n\n const body = {\n model: modelId,\n messages,\n ...buildChatCompletionTemperature(modelId, options.temperature ?? 0.3, {\n assumeOpenAI,\n }),\n ...buildChatCompletionTokenLimit(modelId, options.maxTokens ?? 4096, {\n assumeOpenAI,\n }),\n ...(options.jsonSchema\n ? {\n response_format: {\n type: \"json_schema\",\n json_schema: {\n name: options.jsonSchema.name,\n strict: options.jsonSchema.strict ?? false,\n schema: options.jsonSchema.schema,\n },\n },\n }\n : {}),\n };\n\n const response = await fetch(url, {\n method: \"POST\",\n headers,\n signal: options.signal,\n body: JSON.stringify(body),\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw Object.assign(new Error(`OpenAI API error: ${response.status} ${error}`), { status: response.status });\n }\n\n const data = (await response.json()) as {\n choices: Array<{\n message: {\n content: string;\n };\n }>;\n usage?: {\n prompt_tokens?: number;\n completion_tokens?: number;\n total_tokens?: number;\n };\n };\n\n const content = data.choices?.[0]?.message?.content;\n if (!content) {\n throw new Error(\"Empty response from OpenAI API\");\n }\n\n return {\n content,\n usage: data.usage\n ? {\n inputTokens: data.usage.prompt_tokens,\n outputTokens: data.usage.completion_tokens,\n totalTokens: data.usage.total_tokens,\n }\n : undefined,\n };\n }\n\n /**\n * Call Ollama's native /api/chat transport. This lets benchmark-isolated\n * gateway configs route Remnic's own internal LLM calls to Ollama Cloud\n * without requiring an OpenAI-compatible shim.\n */\n private async callOllamaChat(\n config: ModelProviderConfig,\n modelId: string,\n messages: Array<{ role: \"system\" | \"user\" | \"assistant\"; content: string }>,\n options: FallbackLlmOptions,\n ): Promise<{ content: string; usage?: FallbackLlmResponse[\"usage\"] } | null> {\n const base = config.baseUrl.replace(/\\/$/, \"\");\n const url = base.endsWith(\"/api\") ? `${base}/chat` : `${base}/api/chat`;\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n ...config.headers,\n };\n if (config.apiKey && typeof config.apiKey === \"string\" && config.authHeader !== false) {\n headers.Authorization = `Bearer ${config.apiKey}`;\n }\n\n const response = await fetch(url, {\n method: \"POST\",\n headers,\n signal: options.signal,\n body: JSON.stringify({\n model: modelId,\n messages,\n stream: false,\n ...(config.disableThinking ? { think: false } : {}),\n options: {\n temperature: options.temperature ?? 0.3,\n num_predict: options.maxTokens ?? 4096,\n },\n }),\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw Object.assign(new Error(`Ollama API error: ${response.status} ${error}`), { status: response.status });\n }\n\n const data = (await response.json()) as {\n message?: { content?: string };\n response?: string;\n prompt_eval_count?: number;\n eval_count?: number;\n };\n const content = data.message?.content ?? data.response;\n if (!content) {\n throw new Error(\"Empty response from Ollama API\");\n }\n\n const inputTokens = data.prompt_eval_count ?? 0;\n const outputTokens = data.eval_count ?? 0;\n return {\n content,\n usage: {\n inputTokens,\n outputTokens,\n totalTokens: inputTokens + outputTokens,\n },\n };\n }\n\n /**\n * Call an OpenAI-compatible Responses API.\n */\n private async callOpenAIResponses(\n config: ModelProviderConfig,\n modelId: string,\n messages: Array<{ role: \"system\" | \"user\" | \"assistant\"; content: string }>,\n options: FallbackLlmOptions,\n ): Promise<{ content: string; usage?: FallbackLlmResponse[\"usage\"] } | null> {\n const base = config.baseUrl.replace(/\\/$/, \"\");\n const url = base.endsWith(\"/v1\")\n ? `${base}/responses`\n : `${base}/v1/responses`;\n\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n ...config.headers,\n };\n\n if (config.apiKey && typeof config.apiKey === \"string\" && config.authHeader !== false) {\n headers[\"Authorization\"] = `Bearer ${config.apiKey}`;\n }\n\n const instructions = messages\n .filter((message) => message.role === \"system\")\n .map((message) => message.content)\n .join(\"\\n\\n\")\n .trim();\n const input = messages\n .filter((message) => message.role !== \"system\")\n .map((message) => ({\n role: message.role,\n content: [{\n type: message.role === \"assistant\" ? \"output_text\" : \"input_text\",\n text: message.content,\n }],\n }));\n\n const body: Record<string, unknown> = {\n model: modelId,\n input,\n max_output_tokens: Math.max(0, Math.floor(options.maxTokens ?? 4096)),\n ...buildChatCompletionTemperature(modelId, options.temperature ?? 0.3, {\n assumeOpenAI: shouldAssumeOpenAiChatCompletions(config.baseUrl),\n }),\n ...(options.store === undefined ? {} : { store: options.store }),\n ...(options.jsonSchema || options.responsesJsonSchema\n ? {\n text: {\n format: {\n type: \"json_schema\",\n name: (options.jsonSchema ?? options.responsesJsonSchema)!.name,\n strict: (options.jsonSchema?.strict ?? (options.responsesJsonSchema ? true : false)),\n schema: (options.jsonSchema ?? options.responsesJsonSchema)!.schema,\n },\n },\n }\n : {}),\n };\n if (instructions.length > 0) {\n body.instructions = instructions;\n }\n\n const response = await fetch(url, {\n method: \"POST\",\n headers,\n signal: options.signal,\n body: JSON.stringify(body),\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw Object.assign(new Error(`OpenAI Responses API error: ${response.status} ${error}`), { status: response.status });\n }\n\n const data = (await response.json()) as {\n output_text?: string;\n output?: Array<{\n type?: string;\n text?: string;\n content?: Array<{\n type?: string;\n text?: string;\n }>;\n }>;\n usage?: {\n input_tokens?: number;\n output_tokens?: number;\n total_tokens?: number;\n };\n };\n\n const outputText = extractResponsesOutputText(data);\n if (!outputText) {\n throw new Error(\"Empty response from OpenAI Responses API\");\n }\n\n return {\n content: outputText,\n usage: data.usage\n ? {\n inputTokens: data.usage.input_tokens,\n outputTokens: data.usage.output_tokens,\n totalTokens: data.usage.total_tokens,\n }\n : undefined,\n };\n }\n\n /**\n * Call Anthropic Messages API.\n */\n private async callAnthropic(\n config: ModelProviderConfig,\n modelId: string,\n messages: Array<{ role: \"system\" | \"user\" | \"assistant\"; content: string }>,\n options: FallbackLlmOptions,\n ): Promise<{ content: string; usage?: FallbackLlmResponse[\"usage\"] } | null> {\n const base = config.baseUrl.replace(/\\/$/, \"\");\n const url = base.endsWith(\"/v1\")\n ? `${base}/messages`\n : `${base}/v1/messages`;\n\n const headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n \"anthropic-version\": \"2023-06-01\",\n ...config.headers,\n };\n\n // Handle auth - Anthropic uses x-api-key header (apiKey resolved by tryModel)\n if (config.apiKey && typeof config.apiKey === \"string\") {\n headers[\"x-api-key\"] = config.apiKey;\n }\n\n // Extract system message (Anthropic handles it separately)\n const systemMessage = messages.find((m) => m.role === \"system\")?.content;\n const nonSystemMessages = messages.filter((m) => m.role !== \"system\");\n\n // Convert messages to Anthropic format\n const anthropicMessages = nonSystemMessages.map((m) => ({\n role: m.role,\n content: m.content,\n }));\n\n const body: Record<string, unknown> = {\n model: modelId,\n messages: anthropicMessages,\n max_tokens: options.maxTokens ?? 4096,\n temperature: options.temperature ?? 0.3,\n };\n\n if (systemMessage) {\n body.system = systemMessage;\n }\n\n const response = await fetch(url, {\n method: \"POST\",\n headers,\n signal: options.signal,\n body: JSON.stringify(body),\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw Object.assign(new Error(`Anthropic API error: ${response.status} ${error}`), { status: response.status });\n }\n\n const data = (await response.json()) as {\n content: Array<{\n type: string;\n text: string;\n }>;\n usage?: {\n input_tokens?: number;\n output_tokens?: number;\n };\n };\n\n const content = data.content?.[0]?.text;\n if (!content) {\n throw new Error(\"Empty response from Anthropic API\");\n }\n\n return {\n content,\n usage: data.usage\n ? {\n inputTokens: data.usage.input_tokens,\n outputTokens: data.usage.output_tokens,\n totalTokens: (data.usage.input_tokens ?? 0) + (data.usage.output_tokens ?? 0),\n }\n : undefined,\n };\n }\n}\n\n"],"mappings":"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","names":[]}
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  hasMemoryData
3
- } from "./chunk-4ISHIPOC.js";
3
+ } from "./chunk-FGEY2AGV.js";
4
4
  import {
5
5
  resolveNamespaceStorageRoot
6
- } from "./chunk-FQ52AJXX.js";
6
+ } from "./chunk-SZPPCEYT.js";
7
7
  import {
8
8
  getConfiguredNamespaces
9
9
  } from "./chunk-I6QGI65T.js";
@@ -724,4 +724,4 @@ export {
724
724
  runNamespaceMaintenancePlan,
725
725
  runNamespaceMaintenanceBatchPlan
726
726
  };
727
- //# sourceMappingURL=chunk-QISYYK4L.js.map
727
+ //# sourceMappingURL=chunk-AYBAC2N4.js.map
@@ -1,3 +1,8 @@
1
+ import {
2
+ EMPTY_QMD_STATUS,
3
+ embedQmdFiles,
4
+ fetchQmdStatus
5
+ } from "./chunk-IUM3VSHI.js";
1
6
  import {
2
7
  resolveEnsureCollectionArgs
3
8
  } from "./chunk-G26YNEOC.js";
@@ -20,11 +25,6 @@ import {
20
25
  qmdVersionToString,
21
26
  resolveQmdCapabilities
22
27
  } from "./chunk-OR42ZI54.js";
23
- import {
24
- EMPTY_QMD_STATUS,
25
- embedQmdFiles,
26
- fetchQmdStatus
27
- } from "./chunk-IUM3VSHI.js";
28
28
  import {
29
29
  clearQmdResultCaches,
30
30
  getCachedQmdSearch,
@@ -2028,4 +2028,4 @@ export {
2028
2028
  sharedDaemonSessionCountForTest,
2029
2029
  QmdClient
2030
2030
  };
2031
- //# sourceMappingURL=chunk-V44DWTFA.js.map
2031
+ //# sourceMappingURL=chunk-AYXRK264.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getOperation
3
- } from "./chunk-4YYIZ475.js";
3
+ } from "./chunk-TAEJ2MRR.js";
4
4
  import {
5
5
  EngramAccessInputError
6
6
  } from "./chunk-3MUKQQ7A.js";
@@ -21,4 +21,4 @@ async function respondBriefingHttp(options) {
21
21
  export {
22
22
  respondBriefingHttp
23
23
  };
24
- //# sourceMappingURL=chunk-LJSBF6PW.js.map
24
+ //# sourceMappingURL=chunk-C2KOW2UQ.js.map
@@ -10,7 +10,7 @@ import {
10
10
  import {
11
11
  MAGIC_HEADER_SIZE,
12
12
  isEncryptedFile
13
- } from "./chunk-ZG3HZZ6K.js";
13
+ } from "./chunk-TYGLV6ZG.js";
14
14
 
15
15
  // src/offline-sync-file-io.ts
16
16
  import { createHash } from "crypto";
@@ -108,4 +108,4 @@ export {
108
108
  assertOfflineSyncMtimeMs,
109
109
  setSafeFileMtime
110
110
  };
111
- //# sourceMappingURL=chunk-GY4R4P2A.js.map
111
+ //# sourceMappingURL=chunk-CUWOSRCS.js.map
@@ -3,7 +3,7 @@ import {
3
3
  readNamespaceMaintenanceLastRanStatuses,
4
4
  readNamespaceMaintenanceStatuses,
5
5
  runNamespaceMaintenancePlan
6
- } from "./chunk-QISYYK4L.js";
6
+ } from "./chunk-AYBAC2N4.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-CIJRM6SQ.js";
17
+ } from "./chunk-Y5ZHZKZD.js";
18
18
  import {
19
19
  readJudgeVerdictStats
20
20
  } from "./chunk-OZKOPQCM.js";
@@ -38,26 +38,26 @@ import {
38
38
  } from "./chunk-YBPYIAA5.js";
39
39
  import {
40
40
  parseConfig
41
- } from "./chunk-6FIFEXFF.js";
41
+ } from "./chunk-3PLAL2KP.js";
42
42
  import {
43
43
  readAggregateExtractionWatermark
44
- } from "./chunk-PCIIKQXW.js";
44
+ } from "./chunk-OLH4XCLU.js";
45
45
  import {
46
46
  listMemoryGovernanceRuns,
47
47
  readMemoryGovernanceRunArtifact
48
- } from "./chunk-AI2VXOSO.js";
48
+ } from "./chunk-TYLNWE4D.js";
49
49
  import {
50
50
  listNamespaces
51
- } from "./chunk-GKNX4QO3.js";
51
+ } from "./chunk-WCIDCJOQ.js";
52
52
  import {
53
53
  analyzeGraphHealth
54
- } from "./chunk-KRAMCBIW.js";
54
+ } from "./chunk-QKXPOLQD.js";
55
55
  import {
56
56
  summarizeExtractionLiveness
57
57
  } from "./chunk-AWD36R4D.js";
58
58
  import {
59
59
  StorageManager
60
- } from "./chunk-O3VKQMWC.js";
60
+ } from "./chunk-WCBLPKG3.js";
61
61
  import {
62
62
  lintWorkspaceFiles
63
63
  } from "./chunk-DM2T26WE.js";
@@ -1069,7 +1069,7 @@ async function summarizeBufferSurpriseDistribution(storage, config) {
1069
1069
  }
1070
1070
  }
1071
1071
  async function summarizeGraphEdgeDecayStatus(config) {
1072
- const { readGraphEdgeDecayStatus } = await import("./graph-edge-decay-IU75NV42.js");
1072
+ const { readGraphEdgeDecayStatus } = await import("./graph-edge-decay-2BZTY2IM.js");
1073
1073
  const { graphEdgeDecayEnabled } = config;
1074
1074
  const enabled = graphEdgeDecayEnabled === true;
1075
1075
  if (!enabled) {
@@ -1683,4 +1683,4 @@ export {
1683
1683
  runBenchmarkRecall,
1684
1684
  runOperatorRepair
1685
1685
  };
1686
- //# sourceMappingURL=chunk-VNAIUNXI.js.map
1686
+ //# sourceMappingURL=chunk-CVMAOPAH.js.map
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-TBBDFYXW.js";
11
11
  import {
12
12
  parseQmdExplain
13
- } from "./chunk-V44DWTFA.js";
13
+ } from "./chunk-AYXRK264.js";
14
14
  import {
15
15
  parseFlexibleIsoTimestamp
16
16
  } from "./chunk-P7FMDTKL.js";
@@ -645,4 +645,4 @@ export {
645
645
  appendMemoryToGraphContext,
646
646
  resolvePersistedMemoryRelativePath
647
647
  };
648
- //# sourceMappingURL=chunk-CJKHLACF.js.map
648
+ //# sourceMappingURL=chunk-DG4H56SK.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  RECALL_DISCLOSURE_LEVELS
3
- } from "./chunk-A6PKEU7T.js";
3
+ } from "./chunk-UFM3PJDT.js";
4
4
 
5
5
  // src/recall-navigate.ts
6
6
  var RECALL_NAV_LINK_TYPES = [
@@ -48,4 +48,4 @@ export {
48
48
  expandRecallNode,
49
49
  traverseRecallLink
50
50
  };
51
- //# sourceMappingURL=chunk-BQ6DGL6A.js.map
51
+ //# sourceMappingURL=chunk-DKHX2FHI.js.map
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  PROMOTION_CANDIDATES_DEFAULT_MIN_ACCESS,
7
7
  isSubjectGuardMode
8
- } from "./chunk-PTQZPVRQ.js";
8
+ } from "./chunk-E5PVMB3I.js";
9
9
 
10
10
  // src/subject-config.ts
11
11
  function assertObjectBlock(value, key, shape) {
@@ -52,4 +52,4 @@ function parseSubjectRuntimeConfig(cfg) {
52
52
  export {
53
53
  parseSubjectRuntimeConfig
54
54
  };
55
- //# sourceMappingURL=chunk-77IXBNV6.js.map
55
+ //# sourceMappingURL=chunk-E24RUQEN.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  gatewayTaskChainOptions
3
- } from "./chunk-GMMZ45C4.js";
3
+ } from "./chunk-AVVCPA7U.js";
4
4
  import {
5
5
  isAbortError,
6
6
  throwIfAborted
@@ -70,4 +70,4 @@ export {
70
70
  DEEP_RECALL_POLICY_SYSTEM_PROMPT,
71
71
  callDeepRecallPolicyLlm
72
72
  };
73
- //# sourceMappingURL=chunk-HRT2SJPC.js.map
73
+ //# sourceMappingURL=chunk-E3NBMTTX.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ContentHashIndex
3
- } from "./chunk-IS4HKNWP.js";
3
+ } from "./chunk-UBN5AOLT.js";
4
4
  import {
5
5
  sanitizeMemoryContent
6
6
  } from "./chunk-5GKPFL3S.js";
@@ -164,4 +164,4 @@ export {
164
164
  PROMOTION_CANDIDATES_MCP_TOOLS,
165
165
  backfillMemorySubjects
166
166
  };
167
- //# sourceMappingURL=chunk-PTQZPVRQ.js.map
167
+ //# sourceMappingURL=chunk-E5PVMB3I.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-A7AISUJI.js";
4
4
  import {
5
5
  deepRecallRequestSchema
6
- } from "./chunk-H6SKBCNI.js";
6
+ } from "./chunk-YC2C67F7.js";
7
7
  import {
8
8
  EngramAccessInputError
9
9
  } from "./chunk-3MUKQQ7A.js";
@@ -40,4 +40,4 @@ async function respondDeepRecall(req, res, respondJson, readJsonBody, service, s
40
40
  export {
41
41
  respondDeepRecall
42
42
  };
43
- //# sourceMappingURL=chunk-AHS3QEEA.js.map
43
+ //# sourceMappingURL=chunk-EEOYF3IB.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  buildStandup,
3
3
  parseStandupDate
4
- } from "./chunk-QQ4T622E.js";
4
+ } from "./chunk-L7PGPH4E.js";
5
5
  import {
6
6
  backfillMemoryStorage,
7
7
  runLocationBackfill,
@@ -9,23 +9,23 @@ import {
9
9
  runLocationDay,
10
10
  runLocationStatus,
11
11
  runLocationSync
12
- } from "./chunk-M3GKSCFN.js";
12
+ } from "./chunk-J7G656MY.js";
13
13
  import {
14
14
  externalWikiSearchOperation
15
- } from "./chunk-ZSAQSLKL.js";
15
+ } from "./chunk-3XVBGGF3.js";
16
16
  import {
17
17
  DECISION_SUBCOMMANDS,
18
18
  DELTA_SUBCOMMANDS,
19
19
  defineOperation,
20
20
  isCodegraphToolName
21
- } from "./chunk-4YYIZ475.js";
21
+ } from "./chunk-TAEJ2MRR.js";
22
22
  import {
23
23
  CorrectionContractError
24
24
  } from "./chunk-ETSJD5IV.js";
25
25
  import {
26
26
  memoryStoreRequestSchema,
27
27
  retainedCategoryAlias
28
- } from "./chunk-H6SKBCNI.js";
28
+ } from "./chunk-YC2C67F7.js";
29
29
  import {
30
30
  serializeMutations,
31
31
  withHeldFileLock
@@ -1916,4 +1916,4 @@ export {
1916
1916
  codegraphIngestTracesOperation,
1917
1917
  REGISTERED_OPERATIONS
1918
1918
  };
1919
- //# sourceMappingURL=chunk-5XTSIZ3L.js.map
1919
+ //# sourceMappingURL=chunk-EGNONTVT.js.map
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  TAG_LIMITS,
7
7
  composeMemoryEnvelope
8
- } from "./chunk-3ODEGTVV.js";
8
+ } from "./chunk-TDCR6PQL.js";
9
9
  import {
10
10
  isTombstoneBlockedCaptureWriteLockBusy
11
11
  } from "./chunk-YET735EZ.js";
@@ -789,4 +789,4 @@ export {
789
789
  shouldProcessInlineExplicitCapture,
790
790
  InlineExplicitCaptureProcessor
791
791
  };
792
- //# sourceMappingURL=chunk-PH33R7GN.js.map
792
+ //# sourceMappingURL=chunk-EHIKY2IA.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  resolveDefaultNamespaceRoot,
3
3
  resolveNamespaceStorageRoot
4
- } from "./chunk-FQ52AJXX.js";
4
+ } from "./chunk-SZPPCEYT.js";
5
5
  import {
6
6
  MutationSerializer,
7
7
  withHeldFileLock
@@ -1473,4 +1473,4 @@ export {
1473
1473
  isNamespaceKind,
1474
1474
  NamespaceCatalog
1475
1475
  };
1476
- //# sourceMappingURL=chunk-4ISHIPOC.js.map
1476
+ //# sourceMappingURL=chunk-FGEY2AGV.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-SOBJ6NEY.js";
4
4
  import {
5
5
  summarizeDisclosureTokens
6
- } from "./chunk-ID2PLENW.js";
6
+ } from "./chunk-GGI6FLO6.js";
7
7
  import {
8
8
  summarizeRetrievedMemoryProvenance
9
9
  } from "./chunk-I4WBNM3M.js";
@@ -620,4 +620,4 @@ export {
620
620
  renderRecallExplain,
621
621
  parseRecallExplainFormat
622
622
  };
623
- //# sourceMappingURL=chunk-O6YJI5VX.js.map
623
+ //# sourceMappingURL=chunk-FKTMWDN2.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-V7IZKJI3.js";
4
4
  import {
5
5
  AdapterRegistry
6
- } from "./chunk-G3T6YMBO.js";
6
+ } from "./chunk-64S6X4IU.js";
7
7
  import {
8
8
  WriteRateLimiter
9
9
  } from "./chunk-TB6CBZ5V.js";
@@ -18,13 +18,13 @@ import {
18
18
  } from "./chunk-3HSRWJTC.js";
19
19
  import {
20
20
  respondDeepRecall
21
- } from "./chunk-AHS3QEEA.js";
21
+ } from "./chunk-EEOYF3IB.js";
22
22
  import {
23
23
  handleSupportPassportOwnerHttp
24
- } from "./chunk-XO4HOBM2.js";
24
+ } from "./chunk-4B37KNMP.js";
25
25
  import {
26
26
  buildSupportPassportPublicRequestHandler
27
- } from "./chunk-X544TW54.js";
27
+ } from "./chunk-VGRM43X6.js";
28
28
  import {
29
29
  handleMcpGetSse
30
30
  } from "./chunk-SRT6SHVZ.js";
@@ -37,18 +37,18 @@ import {
37
37
  processChatMessage,
38
38
  sessionBelongsToPrincipal,
39
39
  subscribeChatTranscript
40
- } from "./chunk-NDJ42GKB.js";
40
+ } from "./chunk-MCPSMWUC.js";
41
41
  import {
42
42
  handleRecallWhyHttpQuery,
43
43
  handleRecallXrayHttpQuery
44
- } from "./chunk-64IO6ZEE.js";
44
+ } from "./chunk-MZWHIAOL.js";
45
45
  import {
46
46
  RelayMissionStoreError
47
- } from "./chunk-5XTSIZ3L.js";
47
+ } from "./chunk-EGNONTVT.js";
48
48
  import {
49
49
  executeResolution,
50
50
  isValidResolutionVerb
51
- } from "./chunk-5LWODP5R.js";
51
+ } from "./chunk-FRAL3EU4.js";
52
52
  import {
53
53
  toDottedRemnicName
54
54
  } from "./chunk-ZQUVBZI4.js";
@@ -61,10 +61,10 @@ import {
61
61
  optionalNamespaceKindQueryParam,
62
62
  optionalQueryString,
63
63
  positiveIntQueryParam
64
- } from "./chunk-DFP37GUN.js";
64
+ } from "./chunk-7HXZOWTR.js";
65
65
  import {
66
66
  respondBriefingHttp
67
- } from "./chunk-LJSBF6PW.js";
67
+ } from "./chunk-C2KOW2UQ.js";
68
68
  import {
69
69
  maybeHandleLifecycleFlush
70
70
  } from "./chunk-2BPPGNAQ.js";
@@ -75,14 +75,14 @@ import {
75
75
  authorizationProbeNamespaces,
76
76
  authorizationProbeRequiresPrincipalNamespace,
77
77
  probeOperationAuthorization
78
- } from "./chunk-PDYP7SUC.js";
78
+ } from "./chunk-5ANUG4JZ.js";
79
79
  import {
80
80
  getOperation,
81
81
  resolveQueryNamespaceWritablePreflight
82
- } from "./chunk-4YYIZ475.js";
82
+ } from "./chunk-TAEJ2MRR.js";
83
83
  import {
84
84
  handleWhoKnowsHttpQuery
85
- } from "./chunk-BRZRP5WD.js";
85
+ } from "./chunk-VSSQIBVU.js";
86
86
  import {
87
87
  isTrustZoneName
88
88
  } from "./chunk-JWX2Q6HS.js";
@@ -99,13 +99,13 @@ import {
99
99
  } from "./chunk-CTVWELNK.js";
100
100
  import {
101
101
  isRecallDisclosure
102
- } from "./chunk-A6PKEU7T.js";
102
+ } from "./chunk-UFM3PJDT.js";
103
103
  import {
104
104
  validateRequest
105
- } from "./chunk-H6SKBCNI.js";
105
+ } from "./chunk-YC2C67F7.js";
106
106
  import {
107
107
  peerManifestRevision
108
- } from "./chunk-6NXHX6MI.js";
108
+ } from "./chunk-KOY25HUB.js";
109
109
  import {
110
110
  assertOperationAllowed,
111
111
  capabilityAllowsOp,
@@ -117,7 +117,7 @@ import {
117
117
  OFFLINE_SYNC_APPLY_MAX_BODY_BYTES,
118
118
  OFFLINE_SYNC_FILE_CONTENT_MAX_CHUNK_BYTES,
119
119
  OFFLINE_SYNC_SNAPSHOT_BASE_MAX_BODY_BYTES
120
- } from "./chunk-6VYY2XFK.js";
120
+ } from "./chunk-TVIGN3XZ.js";
121
121
  import {
122
122
  resolveNamespaceCapabilities
123
123
  } from "./chunk-C5LWPYS3.js";
@@ -3565,4 +3565,4 @@ export {
3565
3565
  resolveDefaultAdminConsolePublicDir,
3566
3566
  EngramAccessHttpServer
3567
3567
  };
3568
- //# sourceMappingURL=chunk-KQUN4RSX.js.map
3568
+ //# sourceMappingURL=chunk-FQFMLOAC.js.map
@@ -15,7 +15,7 @@ import {
15
15
  } from "./chunk-CTVWELNK.js";
16
16
  import {
17
17
  composeMemoryEnvelope
18
- } from "./chunk-3ODEGTVV.js";
18
+ } from "./chunk-TDCR6PQL.js";
19
19
  import {
20
20
  readJsonFile,
21
21
  writeJsonFileAtomic
@@ -878,4 +878,4 @@ export {
878
878
  isValidResolutionVerb,
879
879
  executeResolution
880
880
  };
881
- //# sourceMappingURL=chunk-5LWODP5R.js.map
881
+ //# sourceMappingURL=chunk-FRAL3EU4.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  graphFilePath,
3
3
  readEdgesStrict
4
- } from "./chunk-KRAMCBIW.js";
4
+ } from "./chunk-QKXPOLQD.js";
5
5
  import {
6
6
  assertGraphLockHeld,
7
7
  withGraphWriteLock,
@@ -138,4 +138,4 @@ export {
138
138
  restoreRemovedNodeEdges,
139
139
  rollbackNodeEdgeRewrite
140
140
  };
141
- //# sourceMappingURL=chunk-AAANTXCQ.js.map
141
+ //# sourceMappingURL=chunk-FZVZYU5C.js.map
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-LDPPTPO5.js";
18
18
  import {
19
19
  SecureStoreLockedError
20
- } from "./chunk-ZG3HZZ6K.js";
20
+ } from "./chunk-TYGLV6ZG.js";
21
21
  import {
22
22
  RECALL_FALLBACK_DIRS
23
23
  } from "./chunk-VS2IYZRU.js";
@@ -131,4 +131,4 @@ export {
131
131
  readHarmonicSourceMemory,
132
132
  readUnresolvedHarmonicSources
133
133
  };
134
- //# sourceMappingURL=chunk-TGAXRT7N.js.map
134
+ //# sourceMappingURL=chunk-GFYFKXWZ.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-TOTT6S2V.js";
4
4
  import {
5
5
  isRecallDisclosure
6
- } from "./chunk-A6PKEU7T.js";
6
+ } from "./chunk-UFM3PJDT.js";
7
7
  import {
8
8
  normalizeRetrievedMemoryProvenance
9
9
  } from "./chunk-I4WBNM3M.js";
@@ -312,4 +312,4 @@ export {
312
312
  RecallXrayBuilder,
313
313
  summarizeDisclosureTokens
314
314
  };
315
- //# sourceMappingURL=chunk-ID2PLENW.js.map
315
+ //# sourceMappingURL=chunk-GGI6FLO6.js.map