aura-code 0.6.3 → 0.10.2

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 (266) hide show
  1. package/README.md +47 -164
  2. package/dist/agent/affect.d.ts +13 -0
  3. package/dist/agent/affect.js +34 -0
  4. package/dist/agent/affect.js.map +1 -0
  5. package/dist/agent/compactor.d.ts +27 -4
  6. package/dist/agent/compactor.js +185 -54
  7. package/dist/agent/compactor.js.map +1 -1
  8. package/dist/agent/confess.d.ts +35 -0
  9. package/dist/agent/confess.js +296 -0
  10. package/dist/agent/confess.js.map +1 -0
  11. package/dist/agent/context.d.ts +0 -4
  12. package/dist/agent/context.js +0 -38
  13. package/dist/agent/context.js.map +1 -1
  14. package/dist/agent/domain-expertise.d.ts +22 -0
  15. package/dist/agent/domain-expertise.js +110 -0
  16. package/dist/agent/domain-expertise.js.map +1 -0
  17. package/dist/agent/executive-queue.d.ts +26 -0
  18. package/dist/agent/executive-queue.js +50 -0
  19. package/dist/agent/executive-queue.js.map +1 -0
  20. package/dist/agent/generational-flush.d.ts +28 -0
  21. package/dist/agent/generational-flush.js +48 -0
  22. package/dist/agent/generational-flush.js.map +1 -0
  23. package/dist/agent/loop-profile.d.ts +50 -0
  24. package/dist/agent/loop-profile.js +88 -0
  25. package/dist/agent/loop-profile.js.map +1 -0
  26. package/dist/agent/loop.d.ts +15 -5
  27. package/dist/agent/loop.js +182 -45
  28. package/dist/agent/loop.js.map +1 -1
  29. package/dist/agent/memory-consolidate.d.ts +14 -0
  30. package/dist/agent/memory-consolidate.js +141 -0
  31. package/dist/agent/memory-consolidate.js.map +1 -0
  32. package/dist/agent/mixture.d.ts +33 -0
  33. package/dist/agent/mixture.js +140 -0
  34. package/dist/agent/mixture.js.map +1 -0
  35. package/dist/agent/spawner.js +2 -2
  36. package/dist/agent/spawner.js.map +1 -1
  37. package/dist/agent/system-prompt.d.ts +1 -1
  38. package/dist/agent/system-prompt.js +50 -22
  39. package/dist/agent/system-prompt.js.map +1 -1
  40. package/dist/agent/unified-memory.d.ts +15 -0
  41. package/dist/agent/unified-memory.js +164 -0
  42. package/dist/agent/unified-memory.js.map +1 -0
  43. package/dist/checkpoints/engine.d.ts +44 -0
  44. package/dist/checkpoints/engine.js +324 -0
  45. package/dist/checkpoints/engine.js.map +1 -0
  46. package/dist/cli/command-palette.d.ts +26 -0
  47. package/dist/cli/command-palette.js +133 -0
  48. package/dist/cli/command-palette.js.map +1 -0
  49. package/dist/cli/context-health.d.ts +51 -0
  50. package/dist/cli/context-health.js +187 -0
  51. package/dist/cli/context-health.js.map +1 -0
  52. package/dist/cli/diamond.d.ts +67 -0
  53. package/dist/cli/diamond.js +222 -12
  54. package/dist/cli/diamond.js.map +1 -1
  55. package/dist/cli/dic.d.ts +2 -0
  56. package/dist/cli/dic.js +106 -0
  57. package/dist/cli/dic.js.map +1 -0
  58. package/dist/cli/diff-view.d.ts +18 -0
  59. package/dist/cli/diff-view.js +114 -0
  60. package/dist/cli/diff-view.js.map +1 -0
  61. package/dist/cli/display.d.ts +20 -4
  62. package/dist/cli/display.js +77 -151
  63. package/dist/cli/display.js.map +1 -1
  64. package/dist/cli/help-data.d.ts +7 -0
  65. package/dist/cli/help-data.js +80 -0
  66. package/dist/cli/help-data.js.map +1 -0
  67. package/dist/cli/index.js +1018 -851
  68. package/dist/cli/index.js.map +1 -1
  69. package/dist/cli/markdown.d.ts +5 -0
  70. package/dist/cli/markdown.js +128 -0
  71. package/dist/cli/markdown.js.map +1 -0
  72. package/dist/cli/model-select.d.ts +39 -0
  73. package/dist/cli/model-select.js +65 -0
  74. package/dist/cli/model-select.js.map +1 -0
  75. package/dist/cli/tui.d.ts +34 -0
  76. package/dist/cli/tui.js +1190 -0
  77. package/dist/cli/tui.js.map +1 -0
  78. package/dist/config/defaults.d.ts +6 -17
  79. package/dist/config/defaults.js +25 -46
  80. package/dist/config/defaults.js.map +1 -1
  81. package/dist/config/project-config.d.ts +2 -6
  82. package/dist/config/project-config.js +2 -2
  83. package/dist/config/project-config.js.map +1 -1
  84. package/dist/doctor/checks.d.ts +18 -0
  85. package/dist/doctor/checks.js +524 -0
  86. package/dist/doctor/checks.js.map +1 -0
  87. package/dist/doctor/index.d.ts +4 -0
  88. package/dist/doctor/index.js +229 -0
  89. package/dist/doctor/index.js.map +1 -0
  90. package/dist/doctor/repair.d.ts +19 -0
  91. package/dist/doctor/repair.js +126 -0
  92. package/dist/doctor/repair.js.map +1 -0
  93. package/dist/doctor/types.d.ts +38 -0
  94. package/dist/doctor/types.js +10 -0
  95. package/dist/doctor/types.js.map +1 -0
  96. package/dist/dream/dream.d.ts +79 -59
  97. package/dist/dream/dream.js +324 -144
  98. package/dist/dream/dream.js.map +1 -1
  99. package/dist/dream/episode.d.ts +17 -0
  100. package/dist/dream/episode.js +116 -0
  101. package/dist/dream/episode.js.map +1 -0
  102. package/dist/kanban/engine.d.ts +26 -0
  103. package/dist/kanban/engine.js +208 -0
  104. package/dist/kanban/engine.js.map +1 -0
  105. package/dist/kanban/types.d.ts +19 -0
  106. package/dist/kanban/types.js +9 -1
  107. package/dist/kanban/types.js.map +1 -1
  108. package/dist/machina/render-html.js +4 -2
  109. package/dist/machina/render-html.js.map +1 -1
  110. package/dist/machina/render-terminal.js +11 -4
  111. package/dist/machina/render-terminal.js.map +1 -1
  112. package/dist/machina/repair.d.ts +23 -0
  113. package/dist/machina/repair.js +98 -0
  114. package/dist/machina/repair.js.map +1 -0
  115. package/dist/machina/spec.js +12 -12
  116. package/dist/machina/spec.js.map +1 -1
  117. package/dist/machina/verify.d.ts +13 -1
  118. package/dist/machina/verify.js +12 -2
  119. package/dist/machina/verify.js.map +1 -1
  120. package/dist/mining/extract.d.ts +34 -0
  121. package/dist/mining/extract.js +229 -0
  122. package/dist/mining/extract.js.map +1 -0
  123. package/dist/mining/refine.d.ts +28 -0
  124. package/dist/mining/refine.js +256 -0
  125. package/dist/mining/refine.js.map +1 -0
  126. package/dist/perception/extractor.js +5 -3
  127. package/dist/perception/extractor.js.map +1 -1
  128. package/dist/perception/graph-store.d.ts +0 -11
  129. package/dist/perception/graph-store.js +0 -33
  130. package/dist/perception/graph-store.js.map +1 -1
  131. package/dist/perception/index.d.ts +1 -1
  132. package/dist/perception/index.js +1 -2
  133. package/dist/perception/index.js.map +1 -1
  134. package/dist/plugins/commands.d.ts +38 -0
  135. package/dist/plugins/commands.js +134 -0
  136. package/dist/plugins/commands.js.map +1 -0
  137. package/dist/plugins/frontmatter.d.ts +14 -0
  138. package/dist/plugins/frontmatter.js +78 -0
  139. package/dist/plugins/frontmatter.js.map +1 -0
  140. package/dist/plugins/hooks.d.ts +12 -0
  141. package/dist/plugins/hooks.js +148 -0
  142. package/dist/plugins/hooks.js.map +1 -0
  143. package/dist/plugins/loader.d.ts +7 -0
  144. package/dist/plugins/loader.js +255 -0
  145. package/dist/plugins/loader.js.map +1 -0
  146. package/dist/plugins/market.d.ts +23 -0
  147. package/dist/plugins/market.js +281 -0
  148. package/dist/plugins/market.js.map +1 -0
  149. package/dist/plugins/types.d.ts +90 -0
  150. package/dist/plugins/types.js +20 -0
  151. package/dist/plugins/types.js.map +1 -0
  152. package/dist/providers/anthropic-oauth-draft.d.ts +119 -0
  153. package/dist/providers/anthropic-oauth-draft.js +414 -0
  154. package/dist/providers/anthropic-oauth-draft.js.map +1 -0
  155. package/dist/providers/anthropic.d.ts +4 -1
  156. package/dist/providers/anthropic.js +35 -7
  157. package/dist/providers/anthropic.js.map +1 -1
  158. package/dist/providers/factory.d.ts +43 -19
  159. package/dist/providers/factory.js +183 -129
  160. package/dist/providers/factory.js.map +1 -1
  161. package/dist/providers/google.js +9 -22
  162. package/dist/providers/google.js.map +1 -1
  163. package/dist/providers/live-models.d.ts +23 -0
  164. package/dist/providers/live-models.js +145 -0
  165. package/dist/providers/live-models.js.map +1 -0
  166. package/dist/providers/openai-compatible.d.ts +1 -12
  167. package/dist/providers/openai-compatible.js +92 -108
  168. package/dist/providers/openai-compatible.js.map +1 -1
  169. package/dist/providers/resilient-factory.js +1 -1
  170. package/dist/providers/resilient-factory.js.map +1 -1
  171. package/dist/providers/types.d.ts +1 -0
  172. package/dist/repl/queue.d.ts +22 -0
  173. package/dist/repl/queue.js +165 -0
  174. package/dist/repl/queue.js.map +1 -0
  175. package/dist/repl/side-channel.d.ts +23 -0
  176. package/dist/repl/side-channel.js +63 -0
  177. package/dist/repl/side-channel.js.map +1 -0
  178. package/dist/research/council.d.ts +2 -0
  179. package/dist/research/council.js +29 -4
  180. package/dist/research/council.js.map +1 -1
  181. package/dist/ruby/alternator.d.ts +11 -30
  182. package/dist/ruby/alternator.js +59 -38
  183. package/dist/ruby/alternator.js.map +1 -1
  184. package/dist/ruby/episode-capture.d.ts +0 -10
  185. package/dist/ruby/episode-capture.js +0 -33
  186. package/dist/ruby/episode-capture.js.map +1 -1
  187. package/dist/ruby/types.js +1 -1
  188. package/dist/ruby/types.js.map +1 -1
  189. package/dist/safety/path-jail.d.ts +17 -0
  190. package/dist/safety/path-jail.js +100 -0
  191. package/dist/safety/path-jail.js.map +1 -0
  192. package/dist/safety/permissions.d.ts +12 -21
  193. package/dist/safety/permissions.js +81 -216
  194. package/dist/safety/permissions.js.map +1 -1
  195. package/dist/safety/ssrf.d.ts +29 -0
  196. package/dist/safety/ssrf.js +185 -0
  197. package/dist/safety/ssrf.js.map +1 -0
  198. package/dist/server/index.js +64 -10
  199. package/dist/server/index.js.map +1 -1
  200. package/dist/setup/first-run.d.ts +0 -24
  201. package/dist/setup/first-run.js +10 -344
  202. package/dist/setup/first-run.js.map +1 -1
  203. package/dist/setup/key-store.d.ts +12 -0
  204. package/dist/setup/key-store.js +108 -0
  205. package/dist/setup/key-store.js.map +1 -0
  206. package/dist/setup/provider-registry.js +31 -18
  207. package/dist/setup/provider-registry.js.map +1 -1
  208. package/dist/setup/provider-test.d.ts +7 -0
  209. package/dist/setup/provider-test.js +73 -10
  210. package/dist/setup/provider-test.js.map +1 -1
  211. package/dist/setup/provider-wizard.d.ts +4 -1
  212. package/dist/setup/provider-wizard.js +92 -26
  213. package/dist/setup/provider-wizard.js.map +1 -1
  214. package/dist/setup/xiaomi.d.ts +1 -1
  215. package/dist/setup/xiaomi.js +3 -3
  216. package/dist/setup/xiaomi.js.map +1 -1
  217. package/dist/tools/browser.js +14 -10
  218. package/dist/tools/browser.js.map +1 -1
  219. package/dist/tools/clipboard.js +7 -1
  220. package/dist/tools/clipboard.js.map +1 -1
  221. package/dist/tools/dictate.d.ts +60 -0
  222. package/dist/tools/dictate.js +983 -0
  223. package/dist/tools/dictate.js.map +1 -0
  224. package/dist/tools/dictate_patched.js +1057 -0
  225. package/dist/tools/edit-file.js +10 -2
  226. package/dist/tools/edit-file.js.map +1 -1
  227. package/dist/tools/http-request.js +14 -4
  228. package/dist/tools/http-request.js.map +1 -1
  229. package/dist/tools/image-read.js +34 -2
  230. package/dist/tools/image-read.js.map +1 -1
  231. package/dist/tools/index.d.ts +16 -1
  232. package/dist/tools/index.js +59 -8
  233. package/dist/tools/index.js.map +1 -1
  234. package/dist/tools/mcp.js +12 -0
  235. package/dist/tools/mcp.js.map +1 -1
  236. package/dist/tools/read-file.js +10 -14
  237. package/dist/tools/read-file.js.map +1 -1
  238. package/dist/tools/telegram-audio-policy.d.ts +30 -0
  239. package/dist/tools/telegram-audio-policy.js +49 -0
  240. package/dist/tools/telegram-audio-policy.js.map +1 -0
  241. package/dist/tools/telegram-bot.js +1136 -537
  242. package/dist/tools/telegram-bot.js.map +1 -1
  243. package/dist/tools/telegram-voice.d.ts +18 -5
  244. package/dist/tools/telegram-voice.js +54 -12
  245. package/dist/tools/telegram-voice.js.map +1 -1
  246. package/dist/tools/telegram.d.ts +3 -3
  247. package/dist/tools/telegram.js +5 -84
  248. package/dist/tools/telegram.js.map +1 -1
  249. package/dist/tools/tools.d.ts +2 -14
  250. package/dist/tools/tools.js +79 -144
  251. package/dist/tools/tools.js.map +1 -1
  252. package/dist/tools/web-fetch.js +39 -7
  253. package/dist/tools/web-fetch.js.map +1 -1
  254. package/dist/tools/web-search.d.ts +0 -20
  255. package/dist/tools/web-search.js +40 -137
  256. package/dist/tools/web-search.js.map +1 -1
  257. package/dist/util/errors.js +1 -15
  258. package/dist/util/errors.js.map +1 -1
  259. package/dist/util/json-repair.d.ts +11 -0
  260. package/dist/util/json-repair.js +31 -0
  261. package/dist/util/json-repair.js.map +1 -0
  262. package/dist/util/rate-limiter.js +2 -8
  263. package/dist/util/rate-limiter.js.map +1 -1
  264. package/dist/viz/index.js +793 -792
  265. package/dist/viz/index.js.map +1 -1
  266. package/package.json +12 -32
@@ -11,7 +11,7 @@ class GoogleProvider {
11
11
  maxTokens;
12
12
  constructor(config) {
13
13
  this.model = config.model;
14
- this.maxTokens = config.maxTokens ?? 2048; // aligned with DEFAULTS.maxTokens (402 cost-gate fix)
14
+ this.maxTokens = config.maxTokens ?? 8192;
15
15
  this.client = new generative_ai_1.GoogleGenerativeAI(config.apiKey ?? (0, env_js_1.getApiKey)('GOOGLE_API_KEY', 'GEMINI_API_KEY') ?? '');
16
16
  }
17
17
  async complete(system, history, tools) {
@@ -75,10 +75,8 @@ function toGoogleTool(t) {
75
75
  function toGoogleHistory(history) {
76
76
  const contents = [];
77
77
  for (const msg of history) {
78
- let newContent = null;
79
78
  if (msg.role === 'user') {
80
- const text = msg.content || "(empty)";
81
- newContent = { role: 'user', parts: [{ text }] };
79
+ contents.push({ role: 'user', parts: [{ text: msg.content }] });
82
80
  }
83
81
  else if (msg.role === 'assistant') {
84
82
  const parts = [];
@@ -87,26 +85,15 @@ function toGoogleHistory(history) {
87
85
  for (const tc of msg.toolCalls ?? []) {
88
86
  parts.push({ functionCall: { name: tc.name, args: tc.input } });
89
87
  }
90
- if (parts.length === 0)
91
- parts.push({ text: '(empty)' });
92
- newContent = { role: 'model', parts };
88
+ contents.push({ role: 'model', parts });
93
89
  }
94
90
  else if (msg.role === 'tool_result') {
95
- const parts = msg.results.map(r => ({
96
- functionResponse: { name: r.name, response: { result: r.content || '(empty)' } },
97
- }));
98
- if (parts.length === 0)
99
- parts.push({ text: '(empty)' });
100
- newContent = { role: 'user', parts };
101
- }
102
- if (newContent) {
103
- const last = contents[contents.length - 1];
104
- if (last && last.role === newContent.role) {
105
- last.parts.push(...newContent.parts);
106
- }
107
- else {
108
- contents.push(newContent);
109
- }
91
+ contents.push({
92
+ role: 'user',
93
+ parts: msg.results.map(r => ({
94
+ functionResponse: { name: r.name, response: { result: r.content } },
95
+ })),
96
+ });
110
97
  }
111
98
  }
112
99
  return { contents };
@@ -1 +1 @@
1
- {"version":3,"file":"google.js","sourceRoot":"","sources":["../../src/providers/google.ts"],"names":[],"mappings":";;;AAAA,yDAAgG;AAChG,2CAA2C;AAM3C,MAAa,cAAc;IACzB,IAAI,GAAG,QAAQ,CAAC;IAChB,aAAa,GAAG,IAAI,CAAC;IACrB,KAAK,CAAS;IAEN,MAAM,CAAqB;IAC3B,SAAS,CAAS;IAE1B,YAAY,MAAsB;QAChC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,sDAAsD;QACjG,IAAI,CAAC,MAAM,GAAG,IAAI,kCAAkB,CAClC,MAAM,CAAC,MAAM,IAAI,IAAA,kBAAS,EAAC,gBAAgB,EAAE,gBAAgB,CAAC,IAAI,EAAE,CACrE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,MAAc,EACd,OAAyB,EACzB,KAAuB;QAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;YAC9C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,iBAAiB,EAAE,MAAM;YACzB,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;YACzF,gBAAgB,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,SAAS,EAAE;SACtD,CAAC,CAAC;QAEH,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CACnC,OAAO,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CACjC,CAAC;QAEF,OAAO,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CACX,MAAc,EACd,OAAyB,EACzB,KAAuB;QAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;YAC9C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,iBAAiB,EAAE,MAAM;YACzB,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;YACzF,gBAAgB,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,SAAS,EAAE;SACtD,CAAC,CAAC;QAEH,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAE9E,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,MAAM,SAAS,GAAe,EAAE,CAAC;QAEjC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACxC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC;gBAC/D,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC;oBACxB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC1C,CAAC;gBACD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACtB,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;oBACxE,MAAM,IAAI,GAAa;wBACrB,EAAE;wBACF,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;wBAC5B,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,IAA+B;qBACzD,CAAC;oBACF,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACrB,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;oBAClD,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3D,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,CAAC;IAChF,CAAC;CACF;AAlFD,wCAkFC;AAED,+EAA+E;AAE/E,SAAS,YAAY,CAAC,CAAiB;IACrC,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,UAAU,EAAE,CAAC,CAAC,UAA+C;KAC9D,CAAC;AACJ,CAAC;AAID,SAAS,eAAe,CAAC,OAAyB;IAChD,MAAM,QAAQ,GAAoB,EAAE,CAAC;IAErC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,UAAU,GAAyB,IAAI,CAAC;QAE5C,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC;YACtC,UAAU,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACnD,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACpC,MAAM,KAAK,GAAW,EAAE,CAAC;YACzB,IAAI,GAAG,CAAC,OAAO;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACnD,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;gBACrC,KAAK,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAClE,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YACxD,UAAU,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACxC,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACtC,MAAM,KAAK,GAAW,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC1C,gBAAgB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,IAAI,SAAS,EAAE,EAAE;aACjF,CAAC,CAAC,CAAC;YACJ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YACxD,UAAU,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QACvC,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC3C,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC1C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,CAAC;AACtB,CAAC;AAED,8DAA8D;AAC9D,SAAS,kBAAkB,CAAC,QAAa;IACvC,MAAM,UAAU,GAAG,QAAQ,EAAE,UAAU,IAAI,EAAE,CAAC;IAC9C,MAAM,KAAK,GAAW,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;IAE1D,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,MAAM,SAAS,GAAe,EAAE,CAAC;IAEjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;QACjC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,SAAS,CAAC,IAAI,CAAC;gBACb,EAAE,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;gBAChE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI;gBAC5B,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,IAA+B;aACzD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,EAAE,aAAa,CAAC;IACrC,OAAO;QACL,IAAI;QACJ,SAAS;QACT,UAAU,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;QACnD,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;YACZ,WAAW,EAAE,IAAI,CAAC,gBAAgB,IAAI,CAAC;YACvC,YAAY,EAAE,IAAI,CAAC,oBAAoB,IAAI,CAAC;SAC7C,CAAC,CAAC,CAAC,SAAS;KACd,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"google.js","sourceRoot":"","sources":["../../src/providers/google.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export interface ModelEntry {
2
+ id: string;
3
+ name: string;
4
+ provider: string;
5
+ speed: string;
6
+ }
7
+ /**
8
+ * Synchronous accessor for whatever refreshLiveModels() last fetched.
9
+ * Empty array until the first refresh completes — getAllModels() in
10
+ * factory.ts falls back to the static KNOWN_MODELS list in that case.
11
+ */
12
+ export declare function getLiveModels(): ModelEntry[];
13
+ /**
14
+ * Fetch live model lists from every provider with a configured API key,
15
+ * merge into the module cache. Best-effort: a provider with no key, a
16
+ * network failure, or a non-200 response contributes nothing for that
17
+ * provider — getAllModels() falls back to static entries in that case.
18
+ * Never throws.
19
+ *
20
+ * Call once at startup (fire-and-forget, see index.ts). Safe to call
21
+ * again later to refresh (e.g. a future `:models refresh` REPL command).
22
+ */
23
+ export declare function refreshLiveModels(openRouterLimit?: number): Promise<void>;
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getLiveModels = getLiveModels;
4
+ exports.refreshLiveModels = refreshLiveModels;
5
+ const env_js_1 = require("../util/env.js");
6
+ let liveModelsCache = [];
7
+ /**
8
+ * Synchronous accessor for whatever refreshLiveModels() last fetched.
9
+ * Empty array until the first refresh completes — getAllModels() in
10
+ * factory.ts falls back to the static KNOWN_MODELS list in that case.
11
+ */
12
+ function getLiveModels() {
13
+ return liveModelsCache;
14
+ }
15
+ const FETCH_TIMEOUT_MS = 8_000;
16
+ async function fetchAnthropicModels() {
17
+ const apiKey = (0, env_js_1.getApiKey)('ANTHROPIC_API_KEY');
18
+ if (!apiKey)
19
+ return [];
20
+ try {
21
+ const results = [];
22
+ let afterId;
23
+ // Anthropic's /v1/models is paginated (has_more / last_id) — loop
24
+ // until exhausted so a growing model catalog doesn't silently get
25
+ // truncated to just the first page.
26
+ for (let page = 0; page < 10; page++) {
27
+ const url = new URL('https://api.anthropic.com/v1/models');
28
+ if (afterId)
29
+ url.searchParams.set('after_id', afterId);
30
+ const resp = await fetch(url, {
31
+ headers: {
32
+ 'x-api-key': apiKey,
33
+ 'anthropic-version': '2023-06-01',
34
+ },
35
+ signal: AbortSignal.timeout(FETCH_TIMEOUT_MS),
36
+ });
37
+ if (!resp.ok)
38
+ return page === 0 ? [] : results;
39
+ const data = (await resp.json());
40
+ for (const m of data.data) {
41
+ if (m.type !== 'model')
42
+ continue;
43
+ results.push({ id: m.id, name: m.display_name ?? m.id, provider: 'Anthropic', speed: 'Live' });
44
+ }
45
+ if (!data.has_more || !data.last_id)
46
+ break;
47
+ afterId = data.last_id;
48
+ }
49
+ return results;
50
+ }
51
+ catch {
52
+ return [];
53
+ }
54
+ }
55
+ // OpenAI's /v1/models returns every model type it hosts — embeddings, TTS,
56
+ // Whisper, DALL-E/image, moderation, realtime, legacy completions. Only
57
+ // chat-capable text models belong in the picker.
58
+ const OPENAI_EXCLUDE = /embedding|whisper|tts|dall-e|gpt-image|davinci|babbage|ada-|curie|moderation|realtime|audio|transcribe|computer-use/i;
59
+ async function fetchOpenAIModels() {
60
+ const apiKey = (0, env_js_1.getApiKey)('OPENAI_API_KEY');
61
+ if (!apiKey)
62
+ return [];
63
+ try {
64
+ const resp = await fetch('https://api.openai.com/v1/models', {
65
+ headers: { Authorization: `Bearer ${apiKey}` },
66
+ signal: AbortSignal.timeout(FETCH_TIMEOUT_MS),
67
+ });
68
+ if (!resp.ok)
69
+ return [];
70
+ const data = (await resp.json());
71
+ return data.data
72
+ .filter((m) => !OPENAI_EXCLUDE.test(m.id))
73
+ .map((m) => ({ id: m.id, name: m.id, provider: 'OpenAI', speed: 'Live' }))
74
+ .sort((a, b) => a.id.localeCompare(b.id));
75
+ }
76
+ catch {
77
+ return [];
78
+ }
79
+ }
80
+ async function fetchGoogleModels() {
81
+ const apiKey = (0, env_js_1.getApiKey)('GOOGLE_API_KEY');
82
+ if (!apiKey)
83
+ return [];
84
+ try {
85
+ const resp = await fetch(`https://generativelanguage.googleapis.com/v1beta/models?key=${apiKey}`, { signal: AbortSignal.timeout(FETCH_TIMEOUT_MS) });
86
+ if (!resp.ok)
87
+ return [];
88
+ const data = (await resp.json());
89
+ return data.models
90
+ .filter((m) => m.supportedGenerationMethods?.includes('generateContent'))
91
+ .map((m) => {
92
+ const id = m.name.replace(/^models\//, '');
93
+ return { id, name: m.displayName ?? id, provider: 'Google', speed: 'Live' };
94
+ })
95
+ .sort((a, b) => a.id.localeCompare(b.id));
96
+ }
97
+ catch {
98
+ return [];
99
+ }
100
+ }
101
+ async function fetchOpenRouterModels(limit) {
102
+ try {
103
+ const resp = await fetch('https://openrouter.ai/api/v1/models', {
104
+ signal: AbortSignal.timeout(FETCH_TIMEOUT_MS),
105
+ });
106
+ if (!resp.ok)
107
+ return [];
108
+ const data = (await resp.json());
109
+ // OpenRouter lists 300+ models — cap to the top N by context length as
110
+ // a simple, defensible ranking (no popularity/quality signal available
111
+ // from this endpoint without additional calls).
112
+ return data.data
113
+ .sort((a, b) => (b.context_length ?? 0) - (a.context_length ?? 0))
114
+ .slice(0, limit)
115
+ .map((m) => ({
116
+ id: `openrouter/${m.id}`,
117
+ name: `${m.name ?? m.id} (OR)`,
118
+ provider: 'OpenRouter',
119
+ speed: 'Live',
120
+ }));
121
+ }
122
+ catch {
123
+ return [];
124
+ }
125
+ }
126
+ /**
127
+ * Fetch live model lists from every provider with a configured API key,
128
+ * merge into the module cache. Best-effort: a provider with no key, a
129
+ * network failure, or a non-200 response contributes nothing for that
130
+ * provider — getAllModels() falls back to static entries in that case.
131
+ * Never throws.
132
+ *
133
+ * Call once at startup (fire-and-forget, see index.ts). Safe to call
134
+ * again later to refresh (e.g. a future `:models refresh` REPL command).
135
+ */
136
+ async function refreshLiveModels(openRouterLimit = 8) {
137
+ const [anthropic, openai, google, openrouter] = await Promise.all([
138
+ fetchAnthropicModels(),
139
+ fetchOpenAIModels(),
140
+ fetchGoogleModels(),
141
+ fetchOpenRouterModels(openRouterLimit),
142
+ ]);
143
+ liveModelsCache = [...anthropic, ...openai, ...google, ...openrouter];
144
+ }
145
+ //# sourceMappingURL=live-models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-models.js","sourceRoot":"","sources":["../../src/providers/live-models.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,4 @@
1
1
  import type { LLMProvider, ProviderConfig, ToolDefinition, HistoryMessage, LLMResponse, StreamChunk } from './types.js';
2
- /**
3
- * OpenAI-compatible provider.
4
- * Works with: OpenAI, OpenRouter, xAI (Grok), Ollama, LM Studio,
5
- * Together AI, Groq, Perplexity, and any server that speaks the OpenAI API spec.
6
- *
7
- * How to target each:
8
- * OpenAI: model="gpt-4o" apiKey=OPENAI_API_KEY
9
- * OpenRouter: model="anthropic/claude-3.5" baseUrl="https://openrouter.ai/api/v1" apiKey=OPENROUTER_API_KEY
10
- * xAI/Grok: model="grok-beta" baseUrl="https://api.x.ai/v1" apiKey=XAI_API_KEY
11
- * Ollama: model="llama3.2" baseUrl="http://localhost:11434/v1" apiKey="ollama"
12
- * LM Studio: model="local-model" baseUrl="http://localhost:1234/v1" apiKey="lm-studio"
13
- */
14
2
  export declare class OpenAICompatibleProvider implements LLMProvider {
15
3
  name: string;
16
4
  supportsTools: boolean;
@@ -18,6 +6,7 @@ export declare class OpenAICompatibleProvider implements LLMProvider {
18
6
  private client;
19
7
  private maxTokens;
20
8
  private temperature;
9
+ private reasoningEffort?;
21
10
  constructor(config: ProviderConfig, providerName?: string);
22
11
  complete(system: string, history: HistoryMessage[], tools: ToolDefinition[]): Promise<LLMResponse>;
23
12
  stream(system: string, history: HistoryMessage[], tools: ToolDefinition[]): AsyncGenerator<StreamChunk>;
@@ -6,18 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.OpenAICompatibleProvider = void 0;
7
7
  const openai_1 = __importDefault(require("openai"));
8
8
  const env_js_1 = require("../util/env.js");
9
- /**
10
- * OpenAI-compatible provider.
11
- * Works with: OpenAI, OpenRouter, xAI (Grok), Ollama, LM Studio,
12
- * Together AI, Groq, Perplexity, and any server that speaks the OpenAI API spec.
13
- *
14
- * How to target each:
15
- * OpenAI: model="gpt-4o" apiKey=OPENAI_API_KEY
16
- * OpenRouter: model="anthropic/claude-3.5" baseUrl="https://openrouter.ai/api/v1" apiKey=OPENROUTER_API_KEY
17
- * xAI/Grok: model="grok-beta" baseUrl="https://api.x.ai/v1" apiKey=XAI_API_KEY
18
- * Ollama: model="llama3.2" baseUrl="http://localhost:11434/v1" apiKey="ollama"
19
- * LM Studio: model="local-model" baseUrl="http://localhost:1234/v1" apiKey="lm-studio"
20
- */
9
+ const json_repair_js_1 = require("../util/json-repair.js");
21
10
  class OpenAICompatibleProvider {
22
11
  name;
23
12
  supportsTools = true;
@@ -25,9 +14,14 @@ class OpenAICompatibleProvider {
25
14
  client;
26
15
  maxTokens;
27
16
  temperature;
17
+ reasoningEffort;
28
18
  constructor(config, providerName) {
29
19
  this.model = config.model;
30
- this.maxTokens = config.maxTokens ?? 2048; // aligned with DEFAULTS.maxTokens (402 cost-gate fix)
20
+ // Reasoning models (GLM-5.x, MiMo, DeepSeek-R, o-series) spend tokens on
21
+ // internal reasoning BEFORE emitting visible content. A small cap suffocates
22
+ // them: budget exhausted mid-think -> finish_reason "length" -> zero output.
23
+ this.maxTokens = config.maxTokens ?? 16384;
24
+ this.reasoningEffort = deriveProviderName(config) === 'Zhipu' ? 'high' : undefined;
31
25
  this.temperature = config.temperature ?? 0.2;
32
26
  this.name = providerName ?? deriveProviderName(config);
33
27
  this.client = new openai_1.default({
@@ -43,6 +37,10 @@ class OpenAICompatibleProvider {
43
37
  temperature: this.temperature,
44
38
  tools: tools.length > 0 ? tools.map(toOpenAITool) : undefined,
45
39
  messages,
40
+ // GLM defaults to "max" thinking effort (~85k reasoning tokens per Z.ai's
41
+ // own benchmarks) before writing any visible content. "high" keeps useful
42
+ // reasoning for code quality while roughly halving that token burn.
43
+ ...(this.reasoningEffort ? { reasoning_effort: this.reasoningEffort } : {}),
46
44
  });
47
45
  return fromOpenAIResponse(response);
48
46
  }
@@ -56,102 +54,87 @@ class OpenAICompatibleProvider {
56
54
  messages,
57
55
  stream: true,
58
56
  stream_options: { include_usage: true },
57
+ ...(this.reasoningEffort ? { reasoning_effort: this.reasoningEffort } : {}),
59
58
  });
60
59
  let textBuffer = '';
61
60
  const toolCallBuilders = new Map();
62
61
  let usage;
63
- // Emit `done` as soon as we see finish_reason and RETURN. We do NOT keep
64
- // draining the stream to wait for a trailing usage-only chunk: many servers
65
- // (Ollama, some DeepSeek/OpenRouter endpoints) close the socket immediately
66
- // after the finish chunk, so an extra read throws "Premature close" — which
67
- // previously failed otherwise-successful turns and forced a fallback. Usage
68
- // is captured opportunistically if it arrives on or before the finish chunk;
69
- // when it doesn't, that's harmless — context compaction is driven by a local
70
- // size estimate (see compactor.ts/estimateContextTokens), not this figure.
71
- //
72
- // The whole iteration is wrapped so that if the connection drops mid-stream
73
- // we still surface whatever partial output we have as a clean `done` rather
74
- // than throwing and nuking the turn.
75
- const emitDone = (toolCalls, stopReason) => ({
76
- type: 'done',
77
- response: { text: textBuffer, toolCalls, stopReason, usage },
78
- });
79
- const finalizeToolCalls = () => {
80
- const calls = [];
81
- for (const [, b] of toolCallBuilders) {
82
- let input = {};
83
- try {
84
- input = JSON.parse(b.args);
62
+ let finishReason;
63
+ // CRITICAL: do NOT return early when finish_reason arrives.
64
+ // With stream_options.include_usage, OpenAI sends a trailing usage-only
65
+ // chunk AFTER the finish_reason chunk. Returning early drops it -- usage
66
+ // stays undefined, token/cost accounting reads 0, and compaction never
67
+ // fires. Drain the entire stream, then finalize.
68
+ for await (const chunk of stream) {
69
+ if (chunk.usage) {
70
+ // DeepSeek reports cache stats via prompt_cache_hit_tokens /
71
+ // prompt_cache_miss_tokens in the usage object. The OpenAI SDK
72
+ // passes unknown fields through, so we can read them here.
73
+ const raw = chunk.usage;
74
+ const cacheHit = raw.prompt_cache_hit_tokens ?? 0;
75
+ const cacheMiss = raw.prompt_cache_miss_tokens ?? 0;
76
+ usage = {
77
+ inputTokens: chunk.usage.prompt_tokens ?? 0,
78
+ outputTokens: chunk.usage.completion_tokens ?? 0,
79
+ // Only set cachedTokens when the provider actually reports them
80
+ // (DeepSeek). Other OpenAI-compatible providers don't set these
81
+ // fields, so cachedTokens stays undefined and costFor uses the
82
+ // standard rate for all input tokens.
83
+ ...(cacheHit > 0 ? { cachedTokens: cacheHit } : {}),
84
+ };
85
+ if (process.env.AURA_DEBUG_CACHE && (cacheHit > 0 || cacheMiss > 0)) {
86
+ console.error(`[cache] hit=${cacheHit} miss=${cacheMiss} input=${chunk.usage.prompt_tokens ?? 0}`);
85
87
  }
86
- catch {
87
- input = { _raw: b.args };
88
- }
89
- calls.push({ id: b.id, name: b.name, input });
90
88
  }
91
- return calls;
92
- };
93
- try {
94
- for await (const chunk of stream) {
95
- // Usage may ride on its own chunk (choices empty) or alongside finish.
96
- if (chunk.usage) {
97
- usage = { inputTokens: chunk.usage.prompt_tokens ?? 0, outputTokens: chunk.usage.completion_tokens ?? 0 };
98
- }
99
- const delta = chunk.choices[0]?.delta;
100
- if (delta) {
101
- // Text content
102
- if (delta.content) {
103
- textBuffer += delta.content;
104
- yield { type: 'text', text: delta.content };
105
- }
106
- // Tool calls (streamed in pieces)
107
- for (const tc of delta.tool_calls ?? []) {
108
- if (!toolCallBuilders.has(tc.index)) {
109
- const id = tc.id ?? `tc_${tc.index}`;
110
- const name = tc.function?.name ?? '';
111
- toolCallBuilders.set(tc.index, { id, name, args: '' });
112
- yield { type: 'tool_start', id, name };
113
- }
114
- const builder = toolCallBuilders.get(tc.index);
115
- if (tc.function?.arguments) {
116
- builder.args += tc.function.arguments;
117
- yield { type: 'tool_input', id: builder.id, partial: tc.function.arguments };
118
- }
119
- }
89
+ const choice = chunk.choices[0];
90
+ if (choice?.finish_reason) {
91
+ finishReason = choice.finish_reason;
92
+ }
93
+ const delta = choice?.delta;
94
+ if (!delta)
95
+ continue;
96
+ if (delta.content) {
97
+ textBuffer += delta.content;
98
+ yield { type: 'text', text: delta.content };
99
+ }
100
+ for (const tc of delta.tool_calls ?? []) {
101
+ if (!toolCallBuilders.has(tc.index)) {
102
+ const id = tc.id ?? `tc_${tc.index}`;
103
+ const name = tc.function?.name ?? '';
104
+ toolCallBuilders.set(tc.index, { id, name, args: '' });
105
+ yield { type: 'tool_start', id, name };
120
106
  }
121
- // Finish: finalise tool calls, emit done, and return immediately.
122
- const finishReason = chunk.choices[0]?.finish_reason;
123
- if (finishReason === 'tool_calls' || finishReason === 'stop') {
124
- const calls = finalizeToolCalls();
125
- for (const call of calls)
126
- yield { type: 'tool_end', call };
127
- yield emitDone(calls, finishReason === 'tool_calls' ? 'tools' : 'done');
128
- return;
107
+ const builder = toolCallBuilders.get(tc.index);
108
+ if (tc.function?.arguments) {
109
+ builder.args += tc.function.arguments;
110
+ yield { type: 'tool_input', id: builder.id, partial: tc.function.arguments };
129
111
  }
130
112
  }
131
113
  }
132
- catch (err) {
133
- // Connection dropped (e.g. "Premature close") after the model had already
134
- // produced output. If we have content or tool calls, treat it as a
135
- // completed turn rather than an error the response is usable. Only
136
- // re-throw when nothing was produced, since that's a genuine failure.
137
- const hadOutput = textBuffer.length > 0 || toolCallBuilders.size > 0;
138
- if (!hadOutput)
139
- throw err;
140
- const calls = finalizeToolCalls();
141
- for (const call of calls)
142
- yield { type: 'tool_end', call };
143
- yield emitDone(calls, calls.length > 0 ? 'tools' : 'done');
144
- return;
145
- }
146
- // Stream ended without an explicit finish_reason — emit whatever we have.
147
- const calls = finalizeToolCalls();
148
- for (const call of calls)
114
+ const calls = [];
115
+ for (const [, b] of toolCallBuilders) {
116
+ const input = (0, json_repair_js_1.safeParseToolArgs)(b.args);
117
+ const call = { id: b.id, name: b.name, input };
118
+ calls.push(call);
149
119
  yield { type: 'tool_end', call };
150
- yield emitDone(calls, calls.length > 0 ? 'tools' : 'done');
120
+ }
121
+ // Map finish_reason -> stopReason. "length" means the response was
122
+ // TRUNCATED by max_tokens -- it must never be mislabeled as a clean "done".
123
+ const stopReason = finishReason === 'tool_calls' ? 'tools' :
124
+ finishReason === 'length' ? 'limit' : 'done';
125
+ yield {
126
+ type: 'done',
127
+ response: {
128
+ text: textBuffer,
129
+ toolCalls: calls,
130
+ stopReason,
131
+ usage,
132
+ },
133
+ };
151
134
  }
152
135
  }
153
136
  exports.OpenAICompatibleProvider = OpenAICompatibleProvider;
154
- // ── Conversion helpers ──────────────────────────────────────────────────────
137
+ // -- Conversion helpers ------------------------------------------------------
155
138
  function toOpenAITool(t) {
156
139
  return {
157
140
  type: 'function',
@@ -195,30 +178,33 @@ function fromOpenAIResponse(response) {
195
178
  return { text: '', toolCalls: [], stopReason: 'done' };
196
179
  const text = choice.message.content ?? '';
197
180
  const toolCalls = (choice.message.tool_calls ?? []).map(tc => {
198
- let input = {};
199
- try {
200
- input = JSON.parse(tc.function.arguments);
201
- }
202
- catch {
203
- input = { _raw: tc.function.arguments };
204
- }
181
+ const input = (0, json_repair_js_1.safeParseToolArgs)(tc.function.arguments);
205
182
  return { id: tc.id, name: tc.function.name, input };
206
183
  });
207
184
  const stopReason = choice.finish_reason === 'tool_calls' ? 'tools' :
208
185
  choice.finish_reason === 'length' ? 'limit' : 'done';
209
186
  const u = response.usage;
187
+ if (!u)
188
+ return { text, toolCalls, stopReason };
189
+ const cacheHit = u.prompt_cache_hit_tokens ?? 0;
210
190
  return {
211
191
  text, toolCalls, stopReason,
212
- usage: u ? { inputTokens: u.prompt_tokens ?? 0, outputTokens: u.completion_tokens ?? 0 } : undefined,
192
+ usage: {
193
+ inputTokens: u.prompt_tokens ?? 0,
194
+ outputTokens: u.completion_tokens ?? 0,
195
+ ...(cacheHit > 0 ? { cachedTokens: cacheHit } : {}),
196
+ },
213
197
  };
214
198
  }
215
- // ── Auto-resolution helpers ─────────────────────────────────────────────────
199
+ // -- Auto-resolution helpers --------------------------------------------------
216
200
  function deriveProviderName(config) {
217
201
  const m = config.model.toLowerCase();
218
202
  if (config.baseUrl?.includes('openrouter'))
219
203
  return 'OpenRouter';
220
204
  if (config.baseUrl?.includes('x.ai') || m.includes('grok'))
221
205
  return 'xAI';
206
+ if (config.baseUrl?.includes('api.z.ai') || m.startsWith('glm-'))
207
+ return 'Zhipu';
222
208
  if (config.baseUrl?.includes('localhost') || config.baseUrl?.includes('127.0.0.1')) {
223
209
  return config.baseUrl?.includes('11434') ? 'Ollama' : 'Local';
224
210
  }
@@ -234,12 +220,10 @@ function resolveApiKey(config) {
234
220
  return (0, env_js_1.getApiKey)('XAI_API_KEY') ?? '';
235
221
  if (config.baseUrl?.includes('xiaomimimo') || m.startsWith('mimo-'))
236
222
  return (0, env_js_1.getApiKey)('XIAOMI_API_KEY') ?? '';
237
- if (config.baseUrl?.includes('deepseek'))
238
- return (0, env_js_1.getApiKey)('DEEPSEEK_API_KEY') ?? '';
223
+ if (config.baseUrl?.includes('api.z.ai') || m.startsWith('glm-'))
224
+ return (0, env_js_1.getApiKey)('ZHIPU_API_KEY') ?? '';
239
225
  if (config.baseUrl?.includes('localhost') || config.baseUrl?.includes('127.0.0.1'))
240
226
  return 'local';
241
- if (m.startsWith('deepseek-'))
242
- return (0, env_js_1.getApiKey)('DEEPSEEK_API_KEY') ?? '';
243
227
  return (0, env_js_1.getApiKey)('OPENAI_API_KEY') ?? '';
244
228
  }
245
229
  function resolveBaseUrl(config) {
@@ -1 +1 @@
1
- {"version":3,"file":"openai-compatible.js","sourceRoot":"","sources":["../../src/providers/openai-compatible.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai-compatible.js","sourceRoot":"","sources":["../../src/providers/openai-compatible.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAC5B,2CAA2C;AAC3C,2DAA2D;AAM3D,MAAa,wBAAwB;IACnC,IAAI,CAAS;IACb,aAAa,GAAG,IAAI,CAAC;IACrB,KAAK,CAAS;IAEN,MAAM,CAAS;IACf,SAAS,CAAS;IAClB,WAAW,CAAS;IACpB,eAAe,CAAU;IAEjC,YAAY,MAAsB,EAAE,YAAqB;QACvD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,yEAAyE;QACzE,6EAA6E;QAC7E,6EAA6E;QAC7E,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC;QAC3C,IAAI,CAAC,eAAe,GAAG,kBAAkB,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QACnF,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,YAAY,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAEvD,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAM,CAAC;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC;YAC9C,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC;SAClD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,MAAc,EACd,OAAyB,EACzB,KAAuB;QAEvB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YACzD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;YAC7D,QAAQ;YACR,0EAA0E;YAC1E,0EAA0E;YAC1E,oEAAoE;YACpE,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3B,CAAC,CAAC;QACpD,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CACX,MAAc,EACd,OAAyB,EACzB,KAAuB;QAEvB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YACvD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,SAAS;YAC1B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;YAC7D,QAAQ;YACR,MAAM,EAAE,IAAI;YACZ,cAAc,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;YACvC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9B,CAAC,CAAC;QAEjD,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,MAAM,gBAAgB,GAA4D,IAAI,GAAG,EAAE,CAAC;QAC5F,IAAI,KAAgE,CAAC;QACrE,IAAI,YAAgC,CAAC;QAErC,4DAA4D;QAC5D,wEAAwE;QACxE,yEAAyE;QACzE,uEAAuE;QACvE,iDAAiD;QACjD,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,6DAA6D;gBAC7D,+DAA+D;gBAC/D,2DAA2D;gBAC3D,MAAM,GAAG,GAAG,KAAK,CAAC,KAGjB,CAAC;gBACF,MAAM,QAAQ,GAAG,GAAG,CAAC,uBAAuB,IAAI,CAAC,CAAC;gBAClD,MAAM,SAAS,GAAG,GAAG,CAAC,wBAAwB,IAAI,CAAC,CAAC;gBACpD,KAAK,GAAG;oBACN,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC;oBAC3C,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC;oBAChD,gEAAgE;oBAChE,gEAAgE;oBAChE,+DAA+D;oBAC/D,sCAAsC;oBACtC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACpD,CAAC;gBACF,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;oBACpE,OAAO,CAAC,KAAK,CAAC,eAAe,QAAQ,SAAS,SAAS,UAAU,KAAK,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,EAAE,CAAC,CAAC;gBACrG,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,MAAM,EAAE,aAAa,EAAE,CAAC;gBAC1B,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC;YACtC,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,CAAC;YAC5B,IAAI,CAAC,KAAK;gBAAE,SAAS;YAErB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClB,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC;gBAC5B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;YAC9C,CAAC;YAED,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;gBACxC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpC,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;oBACrC,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC;oBACrC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;oBACvD,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;gBACzC,CAAC;gBACD,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAE,CAAC;gBAChD,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;oBAC3B,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;oBACtC,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;gBAC/E,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAe,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,gBAAgB,EAAE,CAAC;YACrC,MAAM,KAAK,GAA4B,IAAA,kCAAiB,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACjE,MAAM,IAAI,GAAa,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;YACzD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACnC,CAAC;QAED,mEAAmE;QACnE,4EAA4E;QAC5E,MAAM,UAAU,GACd,YAAY,KAAK,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACzC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAE/C,MAAM;YACJ,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE;gBACR,IAAI,EAAE,UAAU;gBAChB,SAAS,EAAE,KAAK;gBAChB,UAAU;gBACV,KAAK;aACN;SACF,CAAC;IACJ,CAAC;CACF;AAtJD,4DAsJC;AAED,+EAA+E;AAE/E,SAAS,YAAY,CAAC,CAAiB;IACrC,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE;KACjF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CACvB,MAAc,EACd,OAAyB;IAEzB,MAAM,GAAG,GAAwC;QAC/C,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;KACpC,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACnD,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACpC,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9C,GAAG,CAAC,IAAI,CAAC;oBACP,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI;oBAC5B,UAAU,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;wBACnC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,UAAmB;wBACpC,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;qBACjE,CAAC,CAAC;iBACJ,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACtC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC5B,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,kBAAkB,CAAC,QAA+B;IACzD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAEpE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAe,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QACvE,MAAM,KAAK,GAA4B,IAAA,kCAAiB,EAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAChF,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GACd,MAAM,CAAC,aAAa,KAAK,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAEvD,MAAM,CAAC,GAAG,QAAQ,CAAC,KAGN,CAAC;IACd,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;IAE/C,MAAM,QAAQ,GAAG,CAAC,CAAC,uBAAuB,IAAI,CAAC,CAAC;IAChD,OAAO;QACL,IAAI,EAAE,SAAS,EAAE,UAAU;QAC3B,KAAK,EAAE;YACL,WAAW,EAAE,CAAC,CAAC,aAAa,IAAI,CAAC;YACjC,YAAY,EAAE,CAAC,CAAC,iBAAiB,IAAI,CAAC;YACtC,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpD;KACF,CAAC;AACJ,CAAC;AAED,gFAAgF;AAEhF,SAAS,kBAAkB,CAAC,MAAsB;IAChD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IACrC,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,YAAY,CAAC;IAChE,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IACzE,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,OAAO,CAAC;IACjF,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACnF,OAAO,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;IAChE,CAAC;IACD,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IACtF,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,SAAS,aAAa,CAAC,MAAsB;IAC3C,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IACrC,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,IAAA,kBAAS,EAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;IACzF,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,IAAA,kBAAS,EAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAClG,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAA,kBAAS,EAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;IAC9G,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,IAAA,kBAAS,EAAC,eAAe,CAAC,IAAI,EAAE,CAAC;IAC1G,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,OAAO,CAAC;IACnG,OAAO,IAAA,kBAAS,EAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,cAAc,CAAC,MAAsB;IAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IACrC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,qBAAqB,CAAC;IACrD,OAAO,SAAS,CAAC,CAAC,iBAAiB;AACrC,CAAC"}
@@ -47,7 +47,7 @@ function createResilientProvider(config, resilience, display) {
47
47
  if (!merged.fallbacks || merged.fallbacks.length === 0)
48
48
  return primary;
49
49
  const fallbackProviders = merged.fallbacks.map(model => {
50
- const fc = { ...config, model, baseUrl: undefined };
50
+ const fc = { ...config, model };
51
51
  return new resilient_js_1.ResilientProvider((0, factory_js_1.createProvider)(fc), resilientOpts);
52
52
  });
53
53
  return new fallback_js_1.FallbackChainProvider([primary, ...fallbackProviders], {