@remnic/core 1.1.5 → 1.1.6

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 (195) hide show
  1. package/dist/access-cli.js +31 -29
  2. package/dist/access-cli.js.map +1 -1
  3. package/dist/access-http.d.ts +7 -7
  4. package/dist/access-http.js +13 -13
  5. package/dist/access-mcp.d.ts +7 -7
  6. package/dist/access-mcp.js +12 -12
  7. package/dist/access-schema.js +3 -3
  8. package/dist/{access-service-CWYIkMwY.d.ts → access-service-CcKu1Yc0.d.ts} +9 -9
  9. package/dist/access-service.d.ts +7 -7
  10. package/dist/access-service.js +10 -10
  11. package/dist/active-memory-bridge.d.ts +1 -1
  12. package/dist/active-recall.d.ts +1 -1
  13. package/dist/behavior-learner.d.ts +1 -1
  14. package/dist/behavior-signals.d.ts +1 -1
  15. package/dist/bootstrap.d.ts +6 -6
  16. package/dist/briefing.d.ts +2 -2
  17. package/dist/briefing.js +3 -3
  18. package/dist/buffer-surprise-report.d.ts +1 -1
  19. package/dist/buffer.d.ts +2 -2
  20. package/dist/calibration.d.ts +1 -1
  21. package/dist/calibration.js +1 -1
  22. package/dist/{capsule-crypto-5CYAGVC5.js → capsule-crypto-SJS5VVAP.js} +2 -2
  23. package/dist/{capsule-export-NZQPOTQ4.js → capsule-export-LLEVB2RG.js} +3 -3
  24. package/dist/{capsule-import-SDCUXLEV.js → capsule-import-UW45R2MZ.js} +3 -3
  25. package/dist/causal-behavior.d.ts +1 -1
  26. package/dist/causal-consolidation.d.ts +2 -2
  27. package/dist/causal-consolidation.js +4 -4
  28. package/dist/{chunk-CRU27Q4J.js → chunk-3P6TPZM4.js} +64 -5
  29. package/dist/chunk-3P6TPZM4.js.map +1 -0
  30. package/dist/{chunk-Y6EPN6XF.js → chunk-5NS6NN5A.js} +2 -2
  31. package/dist/{chunk-KNKUID7G.js → chunk-767ODGE6.js} +1 -1
  32. package/dist/{chunk-TMPLRVHD.js → chunk-7RAW2T4P.js} +2 -2
  33. package/dist/{chunk-RICG4UNC.js → chunk-A4ACKWIW.js} +2 -2
  34. package/dist/{chunk-3YBRSJ52.js → chunk-AIT53NLG.js} +2 -2
  35. package/dist/chunk-AKV3HOGZ.js +757 -0
  36. package/dist/chunk-AKV3HOGZ.js.map +1 -0
  37. package/dist/{chunk-7NFZWXAY.js → chunk-AOABCJVL.js} +72 -48
  38. package/dist/chunk-AOABCJVL.js.map +1 -0
  39. package/dist/{chunk-B2TL6GA2.js → chunk-BFVBG5XY.js} +2 -2
  40. package/dist/{chunk-TOC3VOOF.js → chunk-COAGZQT7.js} +1 -1
  41. package/dist/{chunk-TOC3VOOF.js.map → chunk-COAGZQT7.js.map} +1 -1
  42. package/dist/{chunk-WMK6YP7C.js → chunk-D7WYTVUQ.js} +2 -2
  43. package/dist/{chunk-46AIFPQM.js → chunk-DLYTYJ43.js} +2 -2
  44. package/dist/{chunk-KCZZLFW5.js → chunk-EONJ7GK3.js} +2 -2
  45. package/dist/{chunk-H62HCANJ.js → chunk-FSWYMUWI.js} +13 -1
  46. package/dist/chunk-FSWYMUWI.js.map +1 -0
  47. package/dist/{chunk-SGTA3HJC.js → chunk-KUIEFH2S.js} +3 -3
  48. package/dist/{chunk-5XVDDCMH.js → chunk-LKJA5MR2.js} +2 -2
  49. package/dist/{chunk-DKVEJTLC.js → chunk-M3QQ5DRA.js} +4 -4
  50. package/dist/{chunk-4CVIF7UZ.js → chunk-MYMOXFMR.js} +5 -5
  51. package/dist/{chunk-DTDB6YS2.js → chunk-OZAFME7S.js} +16 -16
  52. package/dist/{chunk-IYY4MCPG.js → chunk-P73JTV34.js} +2 -2
  53. package/dist/{chunk-FLHPNR5W.js → chunk-PT2EZWOH.js} +2 -2
  54. package/dist/{chunk-3KIS4VGT.js → chunk-QIGOEM65.js} +2 -2
  55. package/dist/{chunk-MJPNOMY4.js → chunk-RXGR3YLU.js} +2 -2
  56. package/dist/{chunk-Z665HFAD.js → chunk-TMSHGSIG.js} +2 -2
  57. package/dist/{chunk-X6VBWOVZ.js → chunk-UE2OQNQQ.js} +2 -2
  58. package/dist/{chunk-OAIXBFAH.js → chunk-XOG2FHYW.js} +43 -43
  59. package/dist/{chunk-57SNKQNS.js → chunk-YELFQNQH.js} +2 -2
  60. package/dist/{chunk-FG5R5AQF.js → chunk-YKGRACQP.js} +5 -5
  61. package/dist/{chunk-ERWKQVCX.js → chunk-ZBZVNWQO.js} +2 -2
  62. package/dist/{chunk-HPJPGIGN.js → chunk-ZOMA7J3J.js} +2 -2
  63. package/dist/{cli-CWLyGroU.d.ts → cli-WahR0rs-.d.ts} +4 -4
  64. package/dist/cli.d.ts +8 -8
  65. package/dist/cli.js +24 -24
  66. package/dist/{codex-materialize-XRen3WAz.d.ts → codex-materialize-D5d5vvyS.d.ts} +1 -1
  67. package/dist/compression-optimizer.d.ts +1 -1
  68. package/dist/config.d.ts +1 -1
  69. package/dist/config.js +1 -1
  70. package/dist/consolidation-provenance-check.d.ts +2 -2
  71. package/dist/consolidation-undo.d.ts +2 -2
  72. package/dist/day-summary.d.ts +1 -1
  73. package/dist/delinearize.d.ts +1 -1
  74. package/dist/direct-answer-wiring.d.ts +1 -1
  75. package/dist/direct-answer.d.ts +1 -1
  76. package/dist/embedding-fallback.d.ts +1 -1
  77. package/dist/{engine-WJ7K6AZ2.js → engine-5OTS6GY3.js} +4 -4
  78. package/dist/entity-retrieval.d.ts +2 -2
  79. package/dist/entity-retrieval.js +3 -3
  80. package/dist/entity-schema.d.ts +1 -1
  81. package/dist/explicit-capture.d.ts +6 -6
  82. package/dist/explicit-cue-recall.d.ts +40 -0
  83. package/dist/explicit-cue-recall.js +21 -0
  84. package/dist/extraction-judge-telemetry.d.ts +1 -1
  85. package/dist/extraction-judge-training.d.ts +1 -1
  86. package/dist/extraction-judge.d.ts +1 -1
  87. package/dist/extraction.d.ts +1 -1
  88. package/dist/extraction.js +2 -2
  89. package/dist/fallback-llm.d.ts +3 -1
  90. package/dist/fallback-llm.js +1 -1
  91. package/dist/identity-continuity.d.ts +1 -1
  92. package/dist/importance.d.ts +1 -1
  93. package/dist/index.d.ts +14 -13
  94. package/dist/index.js +176 -51
  95. package/dist/index.js.map +1 -1
  96. package/dist/intent.d.ts +1 -1
  97. package/dist/lifecycle.d.ts +1 -1
  98. package/dist/live-connectors-runner.d.ts +1 -1
  99. package/dist/local-llm.d.ts +1 -1
  100. package/dist/memory-action-policy.d.ts +1 -1
  101. package/dist/memory-cache.d.ts +1 -1
  102. package/dist/{memory-governance-KXMAURFF.js → memory-governance-7MI7KE35.js} +4 -4
  103. package/dist/memory-governance-7MI7KE35.js.map +1 -0
  104. package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
  105. package/dist/{memory-projection-store-ConH7gNj.d.ts → memory-projection-store-BQt5VUQ8.d.ts} +1 -1
  106. package/dist/memory-projection-store.d.ts +2 -2
  107. package/dist/memory-worth-outcomes.d.ts +2 -2
  108. package/dist/models-json.d.ts +1 -1
  109. package/dist/native-knowledge.d.ts +1 -1
  110. package/dist/operator-toolkit.d.ts +2 -2
  111. package/dist/operator-toolkit.js +6 -6
  112. package/dist/{orchestrator-BHkiEBbd.d.ts → orchestrator-D2lHhFWI.d.ts} +3 -3
  113. package/dist/orchestrator.d.ts +6 -6
  114. package/dist/orchestrator.js +23 -21
  115. package/dist/patterns-cli.d.ts +1 -1
  116. package/dist/policy-runtime.d.ts +1 -1
  117. package/dist/{port-DZHdlUId.d.ts → port-5W-r5SKc.d.ts} +1 -1
  118. package/dist/qmd-recall-cache.d.ts +2 -2
  119. package/dist/qmd.d.ts +2 -2
  120. package/dist/recall-disclosure-escalation.d.ts +1 -1
  121. package/dist/recall-explain-renderer.d.ts +1 -1
  122. package/dist/recall-explain-renderer.js +3 -3
  123. package/dist/recall-state.d.ts +1 -1
  124. package/dist/recall-tag-filter.d.ts +1 -1
  125. package/dist/recall-xray-cli.d.ts +1 -1
  126. package/dist/recall-xray-cli.js +4 -4
  127. package/dist/recall-xray-renderer.d.ts +1 -1
  128. package/dist/recall-xray-renderer.js +3 -3
  129. package/dist/recall-xray.d.ts +1 -1
  130. package/dist/recall-xray.js +2 -2
  131. package/dist/resolve-auth-token.d.ts +1 -1
  132. package/dist/resume-bundles.js +3 -3
  133. package/dist/retrieval-agents.d.ts +2 -2
  134. package/dist/retrieval-tiers.d.ts +1 -1
  135. package/dist/schemas.d.ts +22 -22
  136. package/dist/{semantic-consolidation-Cxj-inGC.d.ts → semantic-consolidation-tDODR2je.d.ts} +2 -2
  137. package/dist/semantic-consolidation.d.ts +3 -3
  138. package/dist/semantic-consolidation.js +3 -3
  139. package/dist/semantic-rule-promotion.js +3 -3
  140. package/dist/semantic-rule-verifier.d.ts +1 -1
  141. package/dist/semantic-rule-verifier.js +3 -3
  142. package/dist/session-observer-bands.d.ts +1 -1
  143. package/dist/session-observer-state.d.ts +1 -1
  144. package/dist/signal.d.ts +1 -1
  145. package/dist/storage.d.ts +2 -2
  146. package/dist/storage.js +2 -2
  147. package/dist/summarizer.d.ts +1 -1
  148. package/dist/summarizer.js +2 -2
  149. package/dist/summary-snapshot.d.ts +1 -1
  150. package/dist/temporal-supersession.d.ts +2 -2
  151. package/dist/temporal-validity.d.ts +1 -1
  152. package/dist/threading.d.ts +1 -1
  153. package/dist/tier-migration.d.ts +3 -3
  154. package/dist/tier-routing.d.ts +1 -1
  155. package/dist/topics.d.ts +1 -1
  156. package/dist/transcript.d.ts +1 -1
  157. package/dist/{types-B49NzJ5q.d.ts → types-C-USTTAx.d.ts} +6 -0
  158. package/dist/types.d.ts +1 -1
  159. package/dist/types.js +1 -1
  160. package/dist/utility-runtime.d.ts +1 -1
  161. package/dist/verified-recall.js +3 -3
  162. package/package.json +1 -1
  163. package/dist/chunk-7NFZWXAY.js.map +0 -1
  164. package/dist/chunk-CRU27Q4J.js.map +0 -1
  165. package/dist/chunk-H62HCANJ.js.map +0 -1
  166. /package/dist/{capsule-crypto-5CYAGVC5.js.map → capsule-crypto-SJS5VVAP.js.map} +0 -0
  167. /package/dist/{capsule-export-NZQPOTQ4.js.map → capsule-export-LLEVB2RG.js.map} +0 -0
  168. /package/dist/{capsule-import-SDCUXLEV.js.map → capsule-import-UW45R2MZ.js.map} +0 -0
  169. /package/dist/{chunk-Y6EPN6XF.js.map → chunk-5NS6NN5A.js.map} +0 -0
  170. /package/dist/{chunk-KNKUID7G.js.map → chunk-767ODGE6.js.map} +0 -0
  171. /package/dist/{chunk-TMPLRVHD.js.map → chunk-7RAW2T4P.js.map} +0 -0
  172. /package/dist/{chunk-RICG4UNC.js.map → chunk-A4ACKWIW.js.map} +0 -0
  173. /package/dist/{chunk-3YBRSJ52.js.map → chunk-AIT53NLG.js.map} +0 -0
  174. /package/dist/{chunk-B2TL6GA2.js.map → chunk-BFVBG5XY.js.map} +0 -0
  175. /package/dist/{chunk-WMK6YP7C.js.map → chunk-D7WYTVUQ.js.map} +0 -0
  176. /package/dist/{chunk-46AIFPQM.js.map → chunk-DLYTYJ43.js.map} +0 -0
  177. /package/dist/{chunk-KCZZLFW5.js.map → chunk-EONJ7GK3.js.map} +0 -0
  178. /package/dist/{chunk-SGTA3HJC.js.map → chunk-KUIEFH2S.js.map} +0 -0
  179. /package/dist/{chunk-5XVDDCMH.js.map → chunk-LKJA5MR2.js.map} +0 -0
  180. /package/dist/{chunk-DKVEJTLC.js.map → chunk-M3QQ5DRA.js.map} +0 -0
  181. /package/dist/{chunk-4CVIF7UZ.js.map → chunk-MYMOXFMR.js.map} +0 -0
  182. /package/dist/{chunk-DTDB6YS2.js.map → chunk-OZAFME7S.js.map} +0 -0
  183. /package/dist/{chunk-IYY4MCPG.js.map → chunk-P73JTV34.js.map} +0 -0
  184. /package/dist/{chunk-FLHPNR5W.js.map → chunk-PT2EZWOH.js.map} +0 -0
  185. /package/dist/{chunk-3KIS4VGT.js.map → chunk-QIGOEM65.js.map} +0 -0
  186. /package/dist/{chunk-MJPNOMY4.js.map → chunk-RXGR3YLU.js.map} +0 -0
  187. /package/dist/{chunk-Z665HFAD.js.map → chunk-TMSHGSIG.js.map} +0 -0
  188. /package/dist/{chunk-X6VBWOVZ.js.map → chunk-UE2OQNQQ.js.map} +0 -0
  189. /package/dist/{chunk-OAIXBFAH.js.map → chunk-XOG2FHYW.js.map} +0 -0
  190. /package/dist/{chunk-57SNKQNS.js.map → chunk-YELFQNQH.js.map} +0 -0
  191. /package/dist/{chunk-FG5R5AQF.js.map → chunk-YKGRACQP.js.map} +0 -0
  192. /package/dist/{chunk-ERWKQVCX.js.map → chunk-ZBZVNWQO.js.map} +0 -0
  193. /package/dist/{chunk-HPJPGIGN.js.map → chunk-ZOMA7J3J.js.map} +0 -0
  194. /package/dist/{engine-WJ7K6AZ2.js.map → engine-5OTS6GY3.js.map} +0 -0
  195. /package/dist/{memory-governance-KXMAURFF.js.map → explicit-cue-recall.js.map} +0 -0
@@ -1,12 +1,12 @@
1
- import { P as PluginConfig } from './types-B49NzJ5q.js';
2
- import { O as Orchestrator } from './orchestrator-BHkiEBbd.js';
1
+ import { P as PluginConfig } from './types-C-USTTAx.js';
2
+ import { O as Orchestrator } from './orchestrator-D2lHhFWI.js';
3
3
  import './buffer.js';
4
4
  import './storage.js';
5
5
  import './page-versioning.js';
6
6
  import './consolidation-operator.js';
7
- import './memory-projection-store-ConH7gNj.js';
7
+ import './memory-projection-store-BQt5VUQ8.js';
8
8
  import 'better-sqlite3';
9
- import './port-DZHdlUId.js';
9
+ import './port-5W-r5SKc.js';
10
10
  import './transcript.js';
11
11
  import './session-integrity.js';
12
12
  import './summarizer.js';
@@ -21,8 +21,8 @@ import './recall-state.js';
21
21
  import './recall-xray.js';
22
22
  import './session-observer-state.js';
23
23
  import './embedding-fallback.js';
24
- import './semantic-consolidation-Cxj-inGC.js';
25
- import './codex-materialize-XRen3WAz.js';
24
+ import './semantic-consolidation-tDODR2je.js';
25
+ import './codex-materialize-D5d5vvyS.js';
26
26
  import './logger.js';
27
27
  import 'zod';
28
28
  import './policy-runtime.js';
@@ -1,8 +1,8 @@
1
1
  import { StorageManager } from './storage.js';
2
- import { a6 as BriefingSections, a7 as BriefingFollowup, a8 as BriefingFocus, a9 as CalendarSource, aa as CalendarEvent, f as MemoryFile, ab as BriefingActiveThread, ac as BriefingResult, E as EntityFile, ad as BriefingRecentEntity } from './types-B49NzJ5q.js';
2
+ import { a6 as BriefingSections, a7 as BriefingFollowup, a8 as BriefingFocus, a9 as CalendarSource, aa as CalendarEvent, f as MemoryFile, ab as BriefingActiveThread, ac as BriefingResult, E as EntityFile, ad as BriefingRecentEntity } from './types-C-USTTAx.js';
3
3
  import './page-versioning.js';
4
4
  import './consolidation-operator.js';
5
- import './memory-projection-store-ConH7gNj.js';
5
+ import './memory-projection-store-BQt5VUQ8.js';
6
6
  import 'better-sqlite3';
7
7
 
8
8
  /**
package/dist/briefing.js CHANGED
@@ -16,11 +16,11 @@ import {
16
16
  renderBriefingMarkdown,
17
17
  resolveBriefingSaveDir,
18
18
  validateBriefingFormat
19
- } from "./chunk-KCZZLFW5.js";
20
- import "./chunk-46AIFPQM.js";
19
+ } from "./chunk-EONJ7GK3.js";
20
+ import "./chunk-DLYTYJ43.js";
21
21
  import "./chunk-YNJHCGDT.js";
22
22
  import "./chunk-4KAN3GZ3.js";
23
- import "./chunk-TOC3VOOF.js";
23
+ import "./chunk-COAGZQT7.js";
24
24
  import "./chunk-PFV5C235.js";
25
25
  import "./chunk-RULE4VG5.js";
26
26
  import "./chunk-SCU65EZI.js";
@@ -1,4 +1,4 @@
1
- import { t as BufferSurpriseEvent } from './types-B49NzJ5q.js';
1
+ import { t as BufferSurpriseEvent } from './types-C-USTTAx.js';
2
2
 
3
3
  /**
4
4
  * Buffer-surprise telemetry report (issue #563 PR 3).
package/dist/buffer.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { StorageManager } from './storage.js';
2
- import { P as PluginConfig, a1 as BufferTurn } from './types-B49NzJ5q.js';
2
+ import { P as PluginConfig, a1 as BufferTurn } from './types-C-USTTAx.js';
3
3
  import './page-versioning.js';
4
4
  import './consolidation-operator.js';
5
- import './memory-projection-store-ConH7gNj.js';
5
+ import './memory-projection-store-BQt5VUQ8.js';
6
6
  import 'better-sqlite3';
7
7
 
8
8
  type TriggerDecision = "extract_now" | "extract_batch" | "keep_buffering";
@@ -1,5 +1,5 @@
1
1
  import { FallbackLlmClient } from './fallback-llm.js';
2
- import { G as GatewayConfig } from './types-B49NzJ5q.js';
2
+ import { G as GatewayConfig } from './types-C-USTTAx.js';
3
3
 
4
4
  /**
5
5
  * calibration.ts — Prediction-Error-Driven Model-User Calibration
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  FallbackLlmClient
3
- } from "./chunk-CRU27Q4J.js";
3
+ } from "./chunk-3P6TPZM4.js";
4
4
  import "./chunk-Q7FJ5ZHM.js";
5
5
  import "./chunk-ODWDQNRE.js";
6
6
  import "./chunk-Y27UJK6V.js";
@@ -3,7 +3,7 @@ import {
3
3
  decryptCapsuleFileInMemory,
4
4
  encryptCapsuleFile,
5
5
  isEncryptedCapsuleFile
6
- } from "./chunk-KNKUID7G.js";
6
+ } from "./chunk-767ODGE6.js";
7
7
  import "./chunk-BJMBJZ2Y.js";
8
8
  import "./chunk-UKJAGEXH.js";
9
9
  import "./chunk-FP2373TW.js";
@@ -15,4 +15,4 @@ export {
15
15
  encryptCapsuleFile,
16
16
  isEncryptedCapsuleFile
17
17
  };
18
- //# sourceMappingURL=capsule-crypto-5CYAGVC5.js.map
18
+ //# sourceMappingURL=capsule-crypto-SJS5VVAP.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  exportCapsule,
3
3
  isValidCapsuleSince
4
- } from "./chunk-IYY4MCPG.js";
4
+ } from "./chunk-P73JTV34.js";
5
5
  import "./chunk-457A4P3L.js";
6
6
  import "./chunk-OA3L7BFR.js";
7
- import "./chunk-KNKUID7G.js";
7
+ import "./chunk-767ODGE6.js";
8
8
  import "./chunk-BJMBJZ2Y.js";
9
9
  import "./chunk-UKJAGEXH.js";
10
10
  import "./chunk-FP2373TW.js";
@@ -14,4 +14,4 @@ export {
14
14
  exportCapsule,
15
15
  isValidCapsuleSince
16
16
  };
17
- //# sourceMappingURL=capsule-export-NZQPOTQ4.js.map
17
+ //# sourceMappingURL=capsule-export-LLEVB2RG.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  importCapsule
3
- } from "./chunk-3KIS4VGT.js";
3
+ } from "./chunk-QIGOEM65.js";
4
4
  import "./chunk-FAAFWE4G.js";
5
5
  import "./chunk-457A4P3L.js";
6
6
  import "./chunk-OA3L7BFR.js";
7
- import "./chunk-KNKUID7G.js";
7
+ import "./chunk-767ODGE6.js";
8
8
  import "./chunk-BJMBJZ2Y.js";
9
9
  import "./chunk-UKJAGEXH.js";
10
10
  import "./chunk-FP2373TW.js";
@@ -13,4 +13,4 @@ import "./chunk-PZ5AY32C.js";
13
13
  export {
14
14
  importCapsule
15
15
  };
16
- //# sourceMappingURL=capsule-import-SDCUXLEV.js.map
16
+ //# sourceMappingURL=capsule-import-UW45R2MZ.js.map
@@ -1,5 +1,5 @@
1
1
  import { CausalChainIndex } from './causal-chain.js';
2
- import { M as MemoryCategory } from './types-B49NzJ5q.js';
2
+ import { M as MemoryCategory } from './types-C-USTTAx.js';
3
3
  import './causal-trajectory.js';
4
4
  import './objective-state.js';
5
5
 
@@ -1,5 +1,5 @@
1
- import { G as GatewayConfig, P as PluginConfig, f as MemoryFile } from './types-B49NzJ5q.js';
2
- import { R as RolloutSummaryInput, M as MaterializeResult } from './codex-materialize-XRen3WAz.js';
1
+ import { G as GatewayConfig, P as PluginConfig, f as MemoryFile } from './types-C-USTTAx.js';
2
+ import { R as RolloutSummaryInput, M as MaterializeResult } from './codex-materialize-D5d5vvyS.js';
3
3
 
4
4
  /**
5
5
  * causal-consolidation.ts — CMC Phase 2: LLM-Assisted Causal Consolidation
@@ -5,21 +5,21 @@ import {
5
5
  import {
6
6
  buildExtensionsBlockForConsolidation,
7
7
  runPostConsolidationMaterialize
8
- } from "./chunk-ERWKQVCX.js";
8
+ } from "./chunk-ZBZVNWQO.js";
9
9
  import "./chunk-EJI5XIBB.js";
10
10
  import {
11
11
  FallbackLlmClient
12
- } from "./chunk-CRU27Q4J.js";
12
+ } from "./chunk-3P6TPZM4.js";
13
13
  import "./chunk-Q7FJ5ZHM.js";
14
14
  import "./chunk-ODWDQNRE.js";
15
15
  import "./chunk-Y27UJK6V.js";
16
16
  import "./chunk-UZB5KHKX.js";
17
17
  import "./chunk-URB2WSKZ.js";
18
18
  import "./chunk-DT5TVLJE.js";
19
- import "./chunk-46AIFPQM.js";
19
+ import "./chunk-DLYTYJ43.js";
20
20
  import "./chunk-YNJHCGDT.js";
21
21
  import "./chunk-4KAN3GZ3.js";
22
- import "./chunk-TOC3VOOF.js";
22
+ import "./chunk-COAGZQT7.js";
23
23
  import "./chunk-PFV5C235.js";
24
24
  import "./chunk-RULE4VG5.js";
25
25
  import "./chunk-SCU65EZI.js";
@@ -17,6 +17,20 @@ import {
17
17
  } from "./chunk-2ODBA7MQ.js";
18
18
 
19
19
  // src/fallback-llm.ts
20
+ var PROVIDER_ALIASES = {
21
+ "openai-codex": ["codex"],
22
+ codex: ["openai-codex"],
23
+ "claude-cli": ["anthropic"]
24
+ };
25
+ var LEGACY_PROVIDER_IDS = /* @__PURE__ */ new Set(["openai-codex", "claude-cli"]);
26
+ var BUILT_IN_PROVIDER_FALLBACKS = {
27
+ anthropic: {
28
+ baseUrl: "https://api.anthropic.com/v1",
29
+ api: "anthropic-messages",
30
+ apiKey: "secretref-managed",
31
+ models: []
32
+ }
33
+ };
20
34
  var FallbackLlmClient = class {
21
35
  gatewayConfig;
22
36
  runtimeContext;
@@ -174,14 +188,59 @@ var FallbackLlmClient = class {
174
188
  log.warn(`fallback LLM: invalid model format: ${modelString}`);
175
189
  return null;
176
190
  }
177
- const providerId = parts[0];
191
+ const requestedProviderId = parts[0];
178
192
  const modelId = parts.slice(1).join("/");
179
- const providerConfig = providers[providerId] ?? this.resolveFromModelsJson(providerId);
193
+ const resolvedProvider = this.resolveProviderConfig(requestedProviderId, providers);
194
+ const providerConfig = resolvedProvider?.config;
180
195
  if (!providerConfig) {
181
- log.warn(`fallback LLM: provider not found: ${providerId}`);
196
+ log.warn(
197
+ `fallback LLM: provider not found: ${requestedProviderId} (tried: ${this.providerResolutionCandidates(requestedProviderId).join(", ")})`
198
+ );
182
199
  return null;
183
200
  }
184
- return { providerId, modelId, providerConfig, modelString };
201
+ return {
202
+ providerId: resolvedProvider.providerId,
203
+ modelId,
204
+ providerConfig,
205
+ modelString
206
+ };
207
+ }
208
+ resolveProviderConfig(providerId, providers) {
209
+ const candidates = this.providerResolutionCandidates(providerId);
210
+ const aliasCandidates = candidates.filter((candidate) => candidate !== providerId);
211
+ const fallbackCandidates = LEGACY_PROVIDER_IDS.has(providerId) ? [...aliasCandidates, providerId] : [providerId, ...aliasCandidates];
212
+ for (const candidate of candidates) {
213
+ const config = providers[candidate];
214
+ if (config) {
215
+ if (candidate !== providerId) {
216
+ log.debug(`fallback LLM: provider "${providerId}" resolved via alias "${candidate}"`);
217
+ }
218
+ return { providerId: candidate, config };
219
+ }
220
+ }
221
+ for (const candidate of fallbackCandidates) {
222
+ const config = this.resolveFromModelsJson(candidate);
223
+ if (config) {
224
+ if (candidate !== providerId) {
225
+ log.debug(`fallback LLM: provider "${providerId}" resolved via models.json alias "${candidate}"`);
226
+ }
227
+ return { providerId: candidate, config };
228
+ }
229
+ const builtInConfig = BUILT_IN_PROVIDER_FALLBACKS[candidate];
230
+ if (builtInConfig) {
231
+ if (candidate === providerId) {
232
+ log.debug(`fallback LLM: provider "${providerId}" resolved from built-in defaults`);
233
+ return { providerId, config: builtInConfig };
234
+ }
235
+ log.debug(`fallback LLM: provider "${providerId}" resolved via built-in alias "${candidate}"`);
236
+ return { providerId: candidate, config: builtInConfig };
237
+ }
238
+ }
239
+ return null;
240
+ }
241
+ providerResolutionCandidates(providerId) {
242
+ const candidates = [providerId, ...PROVIDER_ALIASES[providerId] ?? []];
243
+ return [...new Set(candidates)];
185
244
  }
186
245
  /**
187
246
  * Look up a provider from the gateway's materialized models.json, which
@@ -458,4 +517,4 @@ function extractResponsesOutputText(data) {
458
517
  export {
459
518
  FallbackLlmClient
460
519
  };
461
- //# sourceMappingURL=chunk-CRU27Q4J.js.map
520
+ //# sourceMappingURL=chunk-3P6TPZM4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/fallback-llm.ts"],"sourcesContent":["import { log } from \"./logger.js\";\nimport type { GatewayConfig, ModelProviderConfig, AgentPersona } from \"./types.js\";\nimport { extractJsonCandidates } from \"./json-extract.js\";\nimport {\n buildChatCompletionTokenLimit,\n shouldAssumeOpenAiChatCompletions,\n} from \"./openai-chat-compat.js\";\nimport { resolveProviderApiKey, getGatewayRuntimeAuthForModel } from \"./resolve-provider-secret.js\";\nimport { loadModelsJsonProviders } from \"./models-json.js\";\n\nexport interface FallbackLlmOptions {\n temperature?: number;\n maxTokens?: number;\n timeoutMs?: number;\n /** Override which agent persona's model chain to use (by ID from agents.list[]). */\n agentId?: string;\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\nexport interface FallbackLlmRuntimeContext {\n agentDir?: string;\n workspaceDir?: string;\n}\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 BUILT_IN_PROVIDER_FALLBACKS: Record<string, ModelProviderConfig> = {\n anthropic: {\n baseUrl: \"https://api.anthropic.com/v1\",\n api: \"anthropic-messages\",\n apiKey: \"secretref-managed\",\n models: [],\n },\n};\n\n/**\n * Generic fallback LLM client that uses the gateway's default AI configuration\n * and walks through the full fallback chain (primary + fallbacks).\n * Supports OpenAI and Anthropic API formats.\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 = runtimeContext;\n }\n\n /**\n * Check if fallback is available (gateway config has at least one model).\n */\n isAvailable(agentId?: string): boolean {\n const models = this.getModelChain(agentId);\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 models = this.getModelChain(options.agentId);\n if (models.length === 0) {\n log.warn(\"fallback LLM: no models configured in gateway\");\n return null;\n }\n\n const runChain = async (): Promise<FallbackLlmResponse | null> => {\n // Try each model in the chain\n for (let i = 0; i < models.length; i++) {\n const model = models[i];\n const isFallback = i > 0;\n\n try {\n const result = await this.tryModel(model, messages, options);\n if (result) {\n if (isFallback) {\n log.debug(`fallback LLM: succeeded using ${model.modelString} (fallback ${i})`);\n }\n return {\n content: result.content,\n modelUsed: model.modelString,\n usage: result.usage,\n };\n }\n } catch (err) {\n const errorMsg = err instanceof Error ? err.message : String(err);\n log.debug(`fallback LLM: ${model.modelString} failed (${errorMsg}), trying next...`);\n // Continue to next model in chain\n }\n }\n\n log.warn(`fallback LLM: all ${models.length} models in chain failed`);\n return null;\n };\n\n if (typeof options.timeoutMs === \"number\") {\n if (options.timeoutMs <= 0) {\n log.warn(\"fallback LLM: timed out before request started\");\n return null;\n }\n let timeoutHandle: ReturnType<typeof setTimeout> | undefined;\n try {\n return await Promise.race([\n runChain(),\n new Promise<null>((resolve) => {\n timeoutHandle = setTimeout(() => {\n log.warn(`fallback LLM: timed out after ${options.timeoutMs}ms`);\n resolve(null);\n }, options.timeoutMs);\n }),\n ]);\n } finally {\n if (timeoutHandle) clearTimeout(timeoutHandle);\n }\n }\n\n return await runChain();\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<{ result: T; modelUsed: string } | null> {\n const response = await this.chatCompletion(messages, options);\n if (!response?.content) return null;\n\n try {\n const candidates = extractJsonCandidates(response.content);\n for (const c of candidates) {\n try {\n const parsed = JSON.parse(c);\n return { result: schema.parse(parsed), modelUsed: response.modelUsed };\n } catch {\n // keep trying other candidates\n }\n }\n return null;\n } catch (err) {\n log.warn(\"fallback LLM: failed to parse structured output:\", err);\n return null;\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 agentId is provided, looks up the matching entry in agents.list[]\n * and uses that persona's model chain. Falls back to agents.defaults.model\n * if agentId is not found or not provided.\n */\n private getModelChain(agentId?: string): ModelRef[] {\n const chain: ModelRef[] = [];\n const providers = this.gatewayConfig?.models?.providers ?? {};\n\n // Resolve the model config: agent persona chain or global defaults\n let modelConfig: { primary?: string; fallbacks?: string[] } | undefined;\n\n if (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(`fallback LLM: using agent persona \"${agentId}\" model chain`);\n } else {\n log.warn(\n `fallback 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 if (modelConfig?.primary) {\n modelStrings.push(modelConfig.primary);\n }\n\n if (Array.isArray(modelConfig?.fallbacks)) {\n for (const fb of modelConfig.fallbacks) {\n if (typeof fb === \"string\" && !modelStrings.includes(fb)) {\n modelStrings.push(fb);\n }\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 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.2\", \"anthropic/claude-opus-4-6\")\n const parts = modelString.split(\"/\");\n if (parts.length < 2) {\n log.warn(`fallback 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.2-turbo\"\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 `fallback 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(`fallback 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(`fallback 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(`fallback LLM: provider \"${providerId}\" resolved from built-in defaults`);\n return { providerId, config: builtInConfig };\n }\n log.debug(`fallback 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(`fallback 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 // Try the gateway's native runtime auth first — it handles all provider-\n // specific transforms (OAuth exchange, base URL rewrite, etc.)\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\"\n || (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 (\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(\n effectiveConfig,\n model.modelId,\n messages,\n options,\n );\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 options,\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 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 `fallback 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 `fallback 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 }\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 temperature: options.temperature ?? 0.3,\n ...buildChatCompletionTokenLimit(modelId, options.maxTokens ?? 4096, {\n assumeOpenAI,\n }),\n };\n\n const response = await fetch(url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(body),\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`OpenAI API error: ${response.status} ${error}`);\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 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 temperature: options.temperature ?? 0.3,\n };\n if (instructions.length > 0) {\n body.instructions = instructions;\n }\n\n const response = await fetch(url, {\n method: \"POST\",\n headers,\n body: JSON.stringify(body),\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`OpenAI Responses API error: ${response.status} ${error}`);\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 body: JSON.stringify(body),\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`Anthropic API error: ${response.status} ${error}`);\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\nfunction extractResponsesOutputText(data: {\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}): string | null {\n if (typeof data.output_text === \"string\" && data.output_text.trim().length > 0) {\n return data.output_text;\n }\n\n const chunks: string[] = [];\n for (const item of data.output ?? []) {\n if (typeof item.text === \"string\" && item.text.trim().length > 0) {\n chunks.push(item.text);\n }\n for (const part of item.content ?? []) {\n if (\n (part.type === \"output_text\" || part.type === \"text\") &&\n typeof part.text === \"string\" &&\n part.text.trim().length > 0\n ) {\n chunks.push(part.text);\n }\n }\n }\n\n const joined = chunks.join(\"\\n\").trim();\n return joined.length > 0 ? joined : null;\n}\n"],"mappings":"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","names":[]}
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-SOBJ6NEY.js";
4
4
  import {
5
5
  summarizeDisclosureTokens
6
- } from "./chunk-WMK6YP7C.js";
6
+ } from "./chunk-D7WYTVUQ.js";
7
7
 
8
8
  // src/recall-explain-renderer.ts
9
9
  function sanitizeString(v) {
@@ -530,4 +530,4 @@ export {
530
530
  renderRecallExplain,
531
531
  parseRecallExplainFormat
532
532
  };
533
- //# sourceMappingURL=chunk-Y6EPN6XF.js.map
533
+ //# sourceMappingURL=chunk-5NS6NN5A.js.map
@@ -180,4 +180,4 @@ export {
180
180
  decryptCapsuleFile,
181
181
  decryptCapsuleFileInMemory
182
182
  };
183
- //# sourceMappingURL=chunk-KNKUID7G.js.map
183
+ //# sourceMappingURL=chunk-767ODGE6.js.map
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-OR64ZGRZ.js";
10
10
  import {
11
11
  StorageManager
12
- } from "./chunk-46AIFPQM.js";
12
+ } from "./chunk-DLYTYJ43.js";
13
13
  import {
14
14
  log
15
15
  } from "./chunk-2ODBA7MQ.js";
@@ -1904,4 +1904,4 @@ export {
1904
1904
  namespaceCollectionName,
1905
1905
  NamespaceSearchRouter
1906
1906
  };
1907
- //# sourceMappingURL=chunk-TMPLRVHD.js.map
1907
+ //# sourceMappingURL=chunk-7RAW2T4P.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  isValidCapsuleSince
3
- } from "./chunk-IYY4MCPG.js";
3
+ } from "./chunk-P73JTV34.js";
4
4
  import {
5
5
  CAPSULE_ID_PATTERN
6
6
  } from "./chunk-OA3L7BFR.js";
@@ -286,4 +286,4 @@ export {
286
286
  capsuleListRequestSchema,
287
287
  validateRequest
288
288
  };
289
- //# sourceMappingURL=chunk-RICG4UNC.js.map
289
+ //# sourceMappingURL=chunk-A4ACKWIW.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-TBBDFYXW.js";
4
4
  import {
5
5
  StorageManager
6
- } from "./chunk-46AIFPQM.js";
6
+ } from "./chunk-DLYTYJ43.js";
7
7
 
8
8
  // src/maintenance/memory-governance.ts
9
9
  import path from "path";
@@ -718,4 +718,4 @@ export {
718
718
  listMemoryGovernanceRuns,
719
719
  readMemoryGovernanceRunArtifact
720
720
  };
721
- //# sourceMappingURL=chunk-3YBRSJ52.js.map
721
+ //# sourceMappingURL=chunk-AIT53NLG.js.map