@robota-sdk/agent-provider 3.0.0-beta.64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/LICENSE +21 -0
  2. package/dist/browser/index.d.ts +1104 -0
  3. package/dist/browser/index.d.ts.map +1 -0
  4. package/dist/browser/index.js +7 -0
  5. package/dist/browser/index.js.map +1 -0
  6. package/dist/loggers/index.cjs +1 -0
  7. package/dist/loggers/index.d.ts +151 -0
  8. package/dist/loggers/index.d.ts.map +1 -0
  9. package/dist/loggers/index.js +2 -0
  10. package/dist/loggers/index.js.map +1 -0
  11. package/dist/node/anthropic/index.cjs +1 -0
  12. package/dist/node/anthropic/index.d.ts +158 -0
  13. package/dist/node/anthropic/index.d.ts.map +1 -0
  14. package/dist/node/anthropic/index.js +1 -0
  15. package/dist/node/anthropic--1vgLC-e.js +5 -0
  16. package/dist/node/anthropic--1vgLC-e.js.map +1 -0
  17. package/dist/node/anthropic-BFQ6DSCP.cjs +4 -0
  18. package/dist/node/bytedance/index.cjs +1 -0
  19. package/dist/node/bytedance/index.d.ts +74 -0
  20. package/dist/node/bytedance/index.d.ts.map +1 -0
  21. package/dist/node/bytedance/index.js +1 -0
  22. package/dist/node/bytedance-C_0sF_pJ.js +2 -0
  23. package/dist/node/bytedance-C_0sF_pJ.js.map +1 -0
  24. package/dist/node/bytedance-DVPxqEiC.cjs +1 -0
  25. package/dist/node/chunk-Bmb41Sf3.cjs +1 -0
  26. package/dist/node/deepseek/index.cjs +1 -0
  27. package/dist/node/deepseek/index.d.ts +2 -0
  28. package/dist/node/deepseek/index.js +1 -0
  29. package/dist/node/deepseek-_8Ixx7rA.js +2 -0
  30. package/dist/node/deepseek-_8Ixx7rA.js.map +1 -0
  31. package/dist/node/deepseek-oA2Y6bD0.cjs +1 -0
  32. package/dist/node/gemini/index.cjs +1 -0
  33. package/dist/node/gemini/index.d.ts +173 -0
  34. package/dist/node/gemini/index.d.ts.map +1 -0
  35. package/dist/node/gemini/index.js +1 -0
  36. package/dist/node/gemini-Bh2U87MY.js +4 -0
  37. package/dist/node/gemini-Bh2U87MY.js.map +1 -0
  38. package/dist/node/gemini-DSaNCxZj.cjs +3 -0
  39. package/dist/node/gemma/index.cjs +1 -0
  40. package/dist/node/gemma/index.d.ts +2 -0
  41. package/dist/node/gemma/index.js +1 -0
  42. package/dist/node/gemma-Dp_AfCUR.js +2 -0
  43. package/dist/node/gemma-Dp_AfCUR.js.map +1 -0
  44. package/dist/node/gemma-G-Pf_PnX.cjs +1 -0
  45. package/dist/node/google/index.cjs +1 -0
  46. package/dist/node/google/index.d.ts +14 -0
  47. package/dist/node/google/index.d.ts.map +1 -0
  48. package/dist/node/google/index.js +2 -0
  49. package/dist/node/google/index.js.map +1 -0
  50. package/dist/node/index-B6PnlDMd.d.ts +82 -0
  51. package/dist/node/index-B6PnlDMd.d.ts.map +1 -0
  52. package/dist/node/index-B7UvPJcI.d.ts +315 -0
  53. package/dist/node/index-B7UvPJcI.d.ts.map +1 -0
  54. package/dist/node/index-BLPOTNb5.d.ts +98 -0
  55. package/dist/node/index-BLPOTNb5.d.ts.map +1 -0
  56. package/dist/node/index-BqixM_XD.d.ts +231 -0
  57. package/dist/node/index-BqixM_XD.d.ts.map +1 -0
  58. package/dist/node/index-C3beaqKO.d.ts +231 -0
  59. package/dist/node/index-C3beaqKO.d.ts.map +1 -0
  60. package/dist/node/index-Cp2XRh9G.d.ts +82 -0
  61. package/dist/node/index-Cp2XRh9G.d.ts.map +1 -0
  62. package/dist/node/index-DSv5xruI.d.ts +98 -0
  63. package/dist/node/index-DSv5xruI.d.ts.map +1 -0
  64. package/dist/node/index-w0bV1uaP.d.ts +315 -0
  65. package/dist/node/index-w0bV1uaP.d.ts.map +1 -0
  66. package/dist/node/index.cjs +1 -0
  67. package/dist/node/index.d.ts +8 -0
  68. package/dist/node/index.js +1 -0
  69. package/dist/node/openai/index.cjs +1 -0
  70. package/dist/node/openai/index.d.ts +2 -0
  71. package/dist/node/openai/index.js +1 -0
  72. package/dist/node/openai-CRQjg4xF.js +2 -0
  73. package/dist/node/openai-CRQjg4xF.js.map +1 -0
  74. package/dist/node/openai-compatible-BYfyY5lb.cjs +1 -0
  75. package/dist/node/openai-compatible-Dm4Sof9e.js +2 -0
  76. package/dist/node/openai-compatible-Dm4Sof9e.js.map +1 -0
  77. package/dist/node/openai-xWC6pY7r.cjs +1 -0
  78. package/dist/node/qwen/index.cjs +1 -0
  79. package/dist/node/qwen/index.d.ts +2 -0
  80. package/dist/node/qwen/index.js +1 -0
  81. package/dist/node/qwen-ChUZobTL.js +2 -0
  82. package/dist/node/qwen-ChUZobTL.js.map +1 -0
  83. package/dist/node/qwen-CjT71vSM.cjs +1 -0
  84. package/package.json +157 -0
  85. package/src/anthropic/__tests__/abort-streaming.test.ts +199 -0
  86. package/src/anthropic/__tests__/model-catalog-refresh.test.ts +92 -0
  87. package/src/anthropic/__tests__/provider-definition.test.ts +55 -0
  88. package/src/anthropic/__tests__/provider.test.ts +1357 -0
  89. package/src/anthropic/__tests__/response-parser.test.ts +326 -0
  90. package/src/anthropic/index.ts +22 -0
  91. package/src/anthropic/message-converter.ts +181 -0
  92. package/src/anthropic/model-catalog-refresh.ts +128 -0
  93. package/src/anthropic/parsers/response-parser.ts +184 -0
  94. package/src/anthropic/provider-definition.ts +93 -0
  95. package/src/anthropic/provider.ts +290 -0
  96. package/src/anthropic/streaming-handler.ts +204 -0
  97. package/src/anthropic/types/api-types.ts +158 -0
  98. package/src/anthropic/types.ts +79 -0
  99. package/src/bytedance/http-client.test.ts +288 -0
  100. package/src/bytedance/http-client.ts +163 -0
  101. package/src/bytedance/index.ts +2 -0
  102. package/src/bytedance/provider.spec.ts +320 -0
  103. package/src/bytedance/provider.ts +171 -0
  104. package/src/bytedance/status-mapper.test.ts +299 -0
  105. package/src/bytedance/status-mapper.ts +141 -0
  106. package/src/bytedance/types.ts +68 -0
  107. package/src/deepseek/defaults.ts +4 -0
  108. package/src/deepseek/index.ts +22 -0
  109. package/src/deepseek/model-catalog-refresh.test.ts +57 -0
  110. package/src/deepseek/model-catalog-refresh.ts +105 -0
  111. package/src/deepseek/model-catalog.ts +55 -0
  112. package/src/deepseek/provider-definition.test.ts +109 -0
  113. package/src/deepseek/provider-definition.ts +132 -0
  114. package/src/deepseek/provider.test.ts +324 -0
  115. package/src/deepseek/provider.ts +298 -0
  116. package/src/deepseek/types.ts +37 -0
  117. package/src/gemini/execution-helpers.ts +233 -0
  118. package/src/gemini/genai-transport.test.ts +208 -0
  119. package/src/gemini/image-operations.test.ts +448 -0
  120. package/src/gemini/image-operations.ts +261 -0
  121. package/src/gemini/index.ts +11 -0
  122. package/src/gemini/message-converter.test.ts +616 -0
  123. package/src/gemini/message-converter.ts +140 -0
  124. package/src/gemini/model-catalog-refresh.test.ts +107 -0
  125. package/src/gemini/model-catalog-refresh.ts +92 -0
  126. package/src/gemini/provider-definition.test.ts +70 -0
  127. package/src/gemini/provider-definition.ts +78 -0
  128. package/src/gemini/provider-extended.test.ts +898 -0
  129. package/src/gemini/provider.spec.ts +216 -0
  130. package/src/gemini/provider.ts +279 -0
  131. package/src/gemini/request-converter.ts +226 -0
  132. package/src/gemini/tool-schema-converter.ts +78 -0
  133. package/src/gemini/types/api-types.ts +235 -0
  134. package/src/gemini/types.ts +121 -0
  135. package/src/gemma/index.ts +5 -0
  136. package/src/gemma/message-factory.ts +38 -0
  137. package/src/gemma/provider-definition.test.ts +43 -0
  138. package/src/gemma/provider-definition.ts +84 -0
  139. package/src/gemma/provider-projection.ts +49 -0
  140. package/src/gemma/provider.test.ts +628 -0
  141. package/src/gemma/provider.ts +308 -0
  142. package/src/gemma/pseudo-command-envelope.ts +58 -0
  143. package/src/gemma/pseudo-tool-call-projector.ts +243 -0
  144. package/src/gemma/pseudo-tool-call-tag-parser.ts +153 -0
  145. package/src/gemma/pseudo-tool-call-types.ts +31 -0
  146. package/src/gemma/reasoning-projector.test.ts +52 -0
  147. package/src/gemma/reasoning-projector.ts +144 -0
  148. package/src/gemma/streaming-projection.ts +79 -0
  149. package/src/gemma/tool-call-argument-parser.ts +126 -0
  150. package/src/gemma/tool-call-projector.test.ts +227 -0
  151. package/src/gemma/tool-call-projector.ts +264 -0
  152. package/src/gemma/types.ts +27 -0
  153. package/src/google/index.ts +11 -0
  154. package/src/google/provider-compat.test.ts +19 -0
  155. package/src/google/provider-definition.ts +6 -0
  156. package/src/google/provider.ts +10 -0
  157. package/src/google/types.ts +5 -0
  158. package/src/index.ts +9 -0
  159. package/src/openai/adapter.test.ts +494 -0
  160. package/src/openai/adapter.ts +145 -0
  161. package/src/openai/chat-completions-chat.ts +189 -0
  162. package/src/openai/executor-integration.test.ts +206 -0
  163. package/src/openai/index.ts +21 -0
  164. package/src/openai/interfaces/payload-logger.ts +48 -0
  165. package/src/openai/loggers/console-payload-logger.test.ts +173 -0
  166. package/src/openai/loggers/console-payload-logger.ts +94 -0
  167. package/src/openai/loggers/console.ts +9 -0
  168. package/src/openai/loggers/file-payload-logger.test.ts +238 -0
  169. package/src/openai/loggers/file-payload-logger.ts +112 -0
  170. package/src/openai/loggers/file.ts +9 -0
  171. package/src/openai/loggers/index.ts +12 -0
  172. package/src/openai/loggers/sanitize-openai-log-data.test.ts +89 -0
  173. package/src/openai/loggers/sanitize-openai-log-data.ts +14 -0
  174. package/src/openai/message-converter.ts +22 -0
  175. package/src/openai/model-catalog-refresh.test.ts +92 -0
  176. package/src/openai/model-catalog-refresh.ts +115 -0
  177. package/src/openai/openai-request-format.ts +92 -0
  178. package/src/openai/parsers/response-parser.test.ts +407 -0
  179. package/src/openai/parsers/response-parser.ts +47 -0
  180. package/src/openai/provider-definition.test.ts +75 -0
  181. package/src/openai/provider-definition.ts +132 -0
  182. package/src/openai/provider.test.ts +1402 -0
  183. package/src/openai/provider.ts +237 -0
  184. package/src/openai/responses-chat.ts +258 -0
  185. package/src/openai/responses-converter.ts +112 -0
  186. package/src/openai/responses-parser.ts +285 -0
  187. package/src/openai/responses-stream-utils.ts +45 -0
  188. package/src/openai/responses-types.ts +195 -0
  189. package/src/openai/streaming/stream-assembler.ts +3 -0
  190. package/src/openai/streaming/stream-handler.test.ts +367 -0
  191. package/src/openai/streaming/stream-handler.ts +119 -0
  192. package/src/openai/types/api-types.ts +112 -0
  193. package/src/openai/types.ts +194 -0
  194. package/src/qwen/defaults.ts +26 -0
  195. package/src/qwen/index.ts +5 -0
  196. package/src/qwen/model-catalog-refresh.test.ts +91 -0
  197. package/src/qwen/model-catalog-refresh.ts +97 -0
  198. package/src/qwen/provider-capabilities.ts +34 -0
  199. package/src/qwen/provider-definition.test.ts +139 -0
  200. package/src/qwen/provider-definition.ts +173 -0
  201. package/src/qwen/provider-streaming-assembly.ts +40 -0
  202. package/src/qwen/provider.test.ts +640 -0
  203. package/src/qwen/provider.ts +293 -0
  204. package/src/qwen/responses-chat.ts +194 -0
  205. package/src/qwen/responses-converter.ts +104 -0
  206. package/src/qwen/responses-parser.ts +299 -0
  207. package/src/qwen/responses-stream-utils.ts +38 -0
  208. package/src/qwen/types.ts +228 -0
  209. package/src/shared/openai-compatible/endpoint-probe.test.ts +52 -0
  210. package/src/shared/openai-compatible/endpoint-probe.ts +43 -0
  211. package/src/shared/openai-compatible/index.ts +6 -0
  212. package/src/shared/openai-compatible/message-converter.test.ts +111 -0
  213. package/src/shared/openai-compatible/message-converter.ts +84 -0
  214. package/src/shared/openai-compatible/native-payload-observer.test.ts +43 -0
  215. package/src/shared/openai-compatible/native-payload-observer.ts +26 -0
  216. package/src/shared/openai-compatible/response-parser.test.ts +172 -0
  217. package/src/shared/openai-compatible/response-parser.ts +180 -0
  218. package/src/shared/openai-compatible/stream-assembler.test.ts +266 -0
  219. package/src/shared/openai-compatible/stream-assembler.ts +248 -0
  220. package/src/shared/openai-compatible/types.ts +59 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/anthropic/types.ts","../../src/anthropic/provider.ts","../../src/anthropic/provider-definition.ts","../../src/anthropic/model-catalog-refresh.ts","../../src/anthropic/index.ts","../../src/openai/types/api-types.ts","../../src/openai/interfaces/payload-logger.ts","../../src/openai/types.ts","../../src/openai/provider.ts","../../src/openai/adapter.ts","../../src/openai/model-catalog-refresh.ts","../../src/openai/provider-definition.ts","../../src/deepseek/types.ts","../../src/deepseek/provider.ts","../../src/deepseek/provider-definition.ts","../../src/deepseek/defaults.ts","../../src/deepseek/model-catalog-refresh.ts","../../src/deepseek/model-catalog.ts","../../src/gemini/model-catalog-refresh.ts","../../src/gemini/types.ts","../../src/gemini/provider.ts","../../src/gemini/provider-definition.ts","../../src/gemma/types.ts","../../src/gemma/reasoning-projector.ts","../../src/shared/openai-compatible/types.ts","../../src/gemma/tool-call-projector.ts","../../src/gemma/provider.ts","../../src/gemma/provider-definition.ts","../../src/bytedance/types.ts","../../src/bytedance/provider.ts","../../src/qwen/defaults.ts","../../src/qwen/types.ts","../../src/qwen/provider.ts","../../src/qwen/provider-definition.ts","../../src/qwen/model-catalog-refresh.ts"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import{randomUUID as e}from"node:crypto";import t from"@anthropic-ai/sdk";import{AbstractAIProvider as n,CLAUDE_MODELS as r,SilentLogger as i,getModelMaxOutput as a,isAssistantMessage as o}from"@robota-sdk/agent-core";import s from"openai";import{GoogleGenAI as c,Type as l}from"@google/genai";function u(e){return e.map(e=>{if(e.role===`user`)return{role:`user`,content:e.content||``};if(e.role===`assistant`){let t=e;if(t.toolCalls&&t.toolCalls.length>0){let e=[];t.content&&e.push({type:`text`,text:t.content});for(let n of t.toolCalls)e.push({type:`tool_use`,id:n.id,name:n.function.name,input:JSON.parse(n.function.arguments)});return{role:`assistant`,content:e}}return{role:`assistant`,content:t.content||``}}else if(e.role===`tool`)return{role:`user`,content:[{type:`tool_result`,tool_use_id:e.toolCallId??``,content:e.content||``}]};else return{role:`user`,content:e.content||``}})}function d(e){if(!Array.isArray(e.content))return``;let t=e.content.filter(e=>e.type===`web_search_result`&&`title`in e&&`url`in e).map((e,t)=>`${t+1}. ${e.title}\n ${e.url}`).join(`
2
+ `);return t?`[Web Search Results]\n${t}`:``}function f(e){return e.map(e=>({name:e.name,description:e.description,input_schema:e.parameters}))}async function p(t,n,r,i,a,o){let s={...n,stream:!0};o?.({provider:`anthropic`,apiSurface:`anthropic-messages`,payloadKind:`request`,payload:s});let c=await t.messages.create(s,a?{signal:a}:void 0),l=[],u=[],f=``,p=``,m=``,h={input_tokens:0,output_tokens:0},g=``,_=null;try{let e=0;for await(let t of te(c,a))switch(o?.({provider:`anthropic`,apiSurface:`anthropic-messages`,payloadKind:`stream_event`,sequence:e,payload:t}),e++,t.type){case`message_start`:h=t.message.usage,g=t.message.model;break;case`content_block_start`:if(t.content_block.type===`tool_use`)f=t.content_block.id,p=t.content_block.name,m=``;else if(t.content_block.type===`server_tool_use`){let e=t.content_block,n=e.input?.query??``,a=n?`\n🔍 Searching: "${n}"\n`:`\n🔍 [${e.name??`server_tool`}]\n`;l.push(a),r(a),i&&i(e.name??`server_tool`,{query:n})}else if(t.content_block.type===`web_search_tool_result`){let e=t.content_block,n=d(e);n&&(l.push(`\n${n}\n\n`),r(`\n${n}\n\n`))}break;case`content_block_delta`:t.delta.type===`text_delta`?(l.push(t.delta.text),r(t.delta.text)):t.delta.type===`input_json_delta`&&(m+=t.delta.partial_json);break;case`content_block_stop`:f&&(u.push({id:f,type:`function`,function:{name:p,arguments:m||`{}`}}),f=``,p=``,m=``);break;case`message_delta`:t.usage&&(h.output_tokens=t.usage.output_tokens),_=t.delta.stop_reason;break}}catch(e){if(e instanceof Error&&e.name===`AbortError`)return ee(l,u,h,g);throw e}if(a?.aborted)return ee(l,u,h,g);let ne=l.join(``)||``,v={id:e(),role:`assistant`,content:ne,state:`complete`,timestamp:new Date,...u.length>0&&{toolCalls:u}};return v.metadata={inputTokens:h.input_tokens,outputTokens:h.output_tokens,model:g},_&&(v.metadata.stopReason=_),v}function ee(t,n,r,i){let a=t.join(``)||``,o={id:e(),role:`assistant`,content:a,state:`complete`,timestamp:new Date,...n.length>0&&{toolCalls:n}};return o.metadata={inputTokens:r.input_tokens,outputTokens:r.output_tokens,model:i,stopReason:`aborted`},o}async function*te(e,t){for await(let n of e){if(t?.aborted)break;yield n}}var m=class extends n{name=`anthropic`;version=`1.0.0`;client;options;enableWebTools=!1;onTextDelta;onServerToolUse;constructor(e){if(super(),this.options=e,e.executor&&(this.executor=e.executor),!this.executor)if(e.client)this.client=e.client;else if(e.apiKey)this.client=new t({apiKey:e.apiKey,...e.timeout&&{timeout:e.timeout},...e.baseURL&&{baseURL:e.baseURL}});else throw Error(`Either Anthropic client, apiKey, or executor is required`)}async chat(e,t){if(this.validateMessages(e),this.validateNativeWebTools(t?.nativeWebTools),this.executor)try{return await this.executeViaExecutorOrDirect(e,t)}catch(e){throw e}if(!this.client)throw Error(`Anthropic client not available. Either provide a client/apiKey or use an executor.`);let n=e.filter(e=>e.role===`system`),r=u(e.filter(e=>e.role!==`system`)),i=n.map(e=>e.content||``).join(`
3
+
4
+ `)||void 0;if(!t?.model)throw Error(`Model is required in chat options. Please specify a model in defaultModel configuration.`);let o=t?.tools?f(t.tools):[],s=this.enableWebTools?[{type:`web_search_20250305`,name:`web_search`}]:[],c=[...o,...s],l={model:t.model,messages:r,max_tokens:t?.maxTokens||a(t.model),...i&&{system:i},...t?.temperature!==void 0&&{temperature:t.temperature},...c.length>0&&{tools:c}},d=t?.onTextDelta??this.onTextDelta??(()=>{});return p(this.client,l,d,this.onServerToolUse,t?.signal,t?.onProviderNativeRawPayload)}async*chatStream(t,n){if(this.validateMessages(t),this.validateNativeWebTools(n?.nativeWebTools),this.executor)try{yield*this.executeStreamViaExecutorOrDirect(t,n);return}catch(e){throw e}if(!this.client)throw Error(`Anthropic client not available. Either provide a client/apiKey or use an executor.`);let r=u(t);if(!n?.model)throw Error(`Model is required in chat options. Please specify a model in defaultModel configuration.`);let i={model:n.model,messages:r,max_tokens:n?.maxTokens||a(n.model),stream:!0};n?.temperature!==void 0&&(i.temperature=n.temperature);let o=n?.tools?f(n.tools):[],s=this.enableWebTools?[{type:`web_search_20250305`,name:`web_search`}]:[],c=[...o,...s];c.length>0&&(i.tools=c),n?.onProviderNativeRawPayload?.({provider:`anthropic`,apiSurface:`anthropic-messages`,payloadKind:`request`,payload:i});let l=await this.client.messages.create(i),d=0;for await(let t of l)n?.onProviderNativeRawPayload?.({provider:`anthropic`,apiSurface:`anthropic-messages`,payloadKind:`stream_event`,sequence:d,payload:t}),d++,t.type===`content_block_delta`&&t.delta.type===`text_delta`&&(yield{id:e(),role:`assistant`,content:t.delta.text,state:`complete`,timestamp:new Date})}supportsTools(){return!0}getCapabilities(){return{functionCalling:{supported:!0},nativeWebTools:{webSearch:this.enableWebTools?{supported:!0,enabled:!0,source:`anthropic-messages`}:{supported:!0,enabled:!1,source:`anthropic-messages`,reason:`Call configureNativeWebTools({ webSearch: true }) or set enableWebTools.`},webFetch:{supported:!1,enabled:!1,source:`anthropic-messages`,reason:`Anthropic provider exposes server web search only.`}}}}configureNativeWebTools(e){return e.webSearch===!0&&(this.enableWebTools=!0),this.validateNativeWebTools(e),this.getCapabilities()}validateConfig(){return!!this.client&&!!this.options&&!!this.options.apiKey}async dispose(){}validateMessages(e){if(!Array.isArray(e))throw Error(`Messages must be an array`);if(e.length===0)throw Error(`Messages array cannot be empty`);for(let t of e)if(!t.role||![`user`,`assistant`,`system`,`tool`].includes(t.role))throw Error(`Invalid message role: ${t.role}`)}};async function h(e,t=ne){return g(e,t)}async function g(e,t){let n=await t(`https://api.anthropic.com/v1/models`,_(e.apiKey)).catch(e=>({ok:!1,status:0,json:()=>Promise.resolve({data:[]}),errorMessage:`Anthropic model refresh failed: ${e instanceof Error?e.message:String(e)}`}));if(`errorMessage`in n)return{status:`unavailable`,sourceUrl:y,message:n.errorMessage};if(!n.ok)return{status:`unavailable`,sourceUrl:y,message:`Anthropic model refresh failed: HTTP ${n.status}`};let r=await n.json(),i=new Date().toISOString(),a=(r.data??[]).filter(e=>typeof e.id==`string`&&e.id.length>0).map(e=>({id:e.id,displayName:e.display_name??e.id,lifecycle:`active`,sourceUrl:y,lastVerifiedAt:i}));return{status:`live`,sourceUrl:y,lastVerifiedAt:b,entries:a,message:`Fetched ${a.length} models from Anthropic API`}}function _(e){if(e)return{headers:{"x-api-key":e,"anthropic-version":`2023-06-01`}}}async function ne(e,t){let n=await fetch(e,{...t?.headers!==void 0&&{headers:t.headers}});return{ok:n.ok,status:n.status,json:()=>n.json()}}const v=`claude-sonnet-4-6`,re=`ANTHROPIC_API_KEY`,ie=`$ENV:${re}`,y=`https://platform.claude.com/docs/en/api/models/list`,b=`2026-05-04`,ae=[{kind:`api-key`,label:`Anthropic API keys`,url:`https://platform.claude.com/settings/keys`,sourceUrl:`https://platform.claude.com/docs/en/api/overview`,lastVerifiedAt:`2026-05-08`}];function oe(){return{type:`anthropic`,displayName:`Anthropic`,description:`Claude models through Anthropic API`,defaults:{model:v,apiKey:ie},modelCatalog:{status:`fallback`,sourceUrl:y,lastVerifiedAt:b,entries:se()},setupHelpLinks:ae,setupSteps:[{key:`apiKey`,title:`Anthropic API key`,defaultValue:ie,masked:!0},{key:`model`,title:`Anthropic model`,defaultValue:v}],refreshModelCatalog:({profile:e})=>h(e),modelCatalogCacheTtlSeconds:86400,requiresApiKey:!0,createProvider:e=>new m({apiKey:ce(e.apiKey),...e.baseURL!==void 0&&{baseURL:e.baseURL},...e.timeout!==void 0&&{timeout:e.timeout},defaultModel:e.model})}}function se(){let e=new Set,t=[];for(let n of Object.values(r))e.has(n.name)||(e.add(n.name),t.push({id:n.id,displayName:n.name,contextWindow:n.contextWindow,capabilities:[`tools`,`vision`,`json_schema`,`reasoning`,`streaming`],lifecycle:`active`,sourceUrl:y,lastVerifiedAt:b}));return t}function ce(e){if(!e)throw Error(`Provider anthropic requires apiKey`);return e}function le(e){}function x(e){return e.map(e=>ue(e))}function S(e){return e.map(e=>({type:`function`,function:{name:e.name,description:e.description,parameters:e.parameters}}))}function ue(e){if(e.role===`user`)return{role:`user`,content:e.content||``};if(e.role===`assistant`)return de(e);if(e.role===`system`)return{role:`system`,content:e.content||``};if(e.role===`tool`){if(!e.toolCallId||e.toolCallId.trim().length===0)throw Error(`Tool message missing toolCallId: ${JSON.stringify(e)}`);return{role:`tool`,content:e.content||``,tool_call_id:e.toolCallId}}throw Error(`Unsupported message role: ${JSON.stringify(e)}`)}function de(e){return e.toolCalls&&e.toolCalls.length>0?{role:`assistant`,content:e.content===``?null:e.content||null,tool_calls:e.toolCalls.map(e=>({id:e.id,type:`function`,function:{name:e.function.name,arguments:e.function.arguments}}))}:{role:`assistant`,content:e.content===null?null:e.content||``}}var C=class{logger;textProjector;toolCallTextProjector;constructor(e={}){this.logger=e.logger??i,this.textProjector=e.textProjector,this.toolCallTextProjector=e.toolCallTextProjector}parseResponse(e){try{let t=e.choices?.[0];if(!t)throw Error(`No choices found in OpenAI-compatible response`);return this.parseChoice(t,e.usage)}catch(e){let t=e instanceof Error?e.message:`OpenAI-compatible response parsing failed`;throw this.logger.error(`Response parsing failed`,{error:t}),Error(`OpenAI-compatible response parsing failed: ${t}`)}}parseChoice(t,n){let r=t.message,i=this.projectToolCallText(r.content||``),a=this.toolCallTextProjector?.flush(),o=this.parseNativeToolCalls(r),s=[...i.toolCalls,...a?.toolCalls??[]],c=[...o,...s];return{id:e(),state:`complete`,role:`assistant`,content:this.projectText(i.visibleText+(a?.visibleText??``)),timestamp:new Date,...c.length>0&&{toolCalls:c},...n&&{usage:this.parseUsage(n)},metadata:{finishReason:t.finish_reason||void 0,...this.buildToolTextMetadata(i,a)}}}parseNativeToolCalls(e){return e.tool_calls?.map(e=>({id:e.id,type:`function`,function:{name:e.function.name,arguments:e.function.arguments}}))||[]}parseUsage(e){return{promptTokens:e.prompt_tokens,completionTokens:e.completion_tokens,totalTokens:e.total_tokens}}parseStreamingChunk(t){try{let n=t.choices?.[0];if(!n)return null;let r=n.finish_reason,i=n.delta.tool_calls?.map(e=>({id:e.id||``,type:`function`,function:{name:e.function?.name||``,arguments:e.function?.arguments||``}}));return i?{id:e(),state:`complete`,role:`assistant`,content:``,timestamp:new Date,toolCalls:i,metadata:{isStreamChunk:!0,isComplete:r===`stop`||r===`tool_calls`}}:{id:e(),state:`complete`,role:`assistant`,content:this.projectText(n.delta.content||``),timestamp:new Date,metadata:{isStreamChunk:!0,isComplete:r===`stop`||r===`tool_calls`}}}catch(e){let t=e instanceof Error?e.message:`OpenAI-compatible chunk parsing failed`;throw this.logger.error(`Chunk parsing failed`,{error:t}),Error(`OpenAI-compatible chunk parsing failed: ${t}`)}}projectText(e){return this.textProjector?this.textProjector(e):e}projectToolCallText(e){return this.toolCallTextProjector?.project(e)??{visibleText:e,toolCalls:[],removedToolCallText:!1}}buildToolTextMetadata(e,t){let n=[e.rawToolCallText,t?.rawToolCallText].filter(e=>typeof e==`string`&&e.length>0).join(``);return{...(e.removedToolCallText||(t?.removedToolCallText??!1))&&{toolCallTextProjected:!0},...n.length>0&&{rawToolCallText:n}}}};async function w(e){let t={textParts:[],toolCallParts:new Map,projectedToolCalls:[],rawToolCallTextParts:[],toolCallTextProjected:!1,model:``,finishReason:null};for await(let n of Se(e.stream,e.signal))fe(t,n,e);return he(t,e),ye(t,e.metadata)}function fe(e,t,n){t.model&&(e.model=t.model);let r=t.choices?.[0];r&&(e.finishReason=r.finish_reason??e.finishReason,pe(e,r.delta.content,n),ve(e,r.delta.tool_calls??[]))}function pe(e,t,n){if(!t)return;let r=ge(t,n.toolCallTextProjector);_e(e,r);let i=me(r.visibleText,n.textProjector);i.length!==0&&(e.textParts.push(i),n.onTextDelta?.(i))}function me(e,t){return t?t(e):e}function he(e,t){let n=t.toolCallTextProjector?.flush();if(n){_e(e,n);let r=me(n.visibleText,t.textProjector);r.length>0&&(e.textParts.push(r),t.onTextDelta?.(r))}let r=t.textProjectorFlush?.();r&&(e.textParts.push(r),t.onTextDelta?.(r))}function ge(e,t){return t?.project(e)??{visibleText:e,toolCalls:[],removedToolCallText:!1}}function _e(e,t){t.toolCalls.length>0&&e.projectedToolCalls.push(...t.toolCalls),t.removedToolCallText&&(e.toolCallTextProjected=!0),t.rawToolCallText&&t.rawToolCallText.length>0&&e.rawToolCallTextParts.push(t.rawToolCallText)}function ve(e,t){for(let n of t){let t=n.index??0,r=e.toolCallParts.get(t)??{id:``,name:``,arguments:``},i=n.function?.name??r.name;e.toolCallParts.set(t,{id:n.id??r.id,name:i,arguments:r.arguments+(n.function?.arguments??``)})}}function ye(t,n={}){let r={...n};t.model&&(r.model=t.model),t.finishReason&&(r.finishReason=t.finishReason),t.toolCallTextProjected&&(r.toolCallTextProjected=!0),t.rawToolCallTextParts.length>0&&(r.rawToolCallText=t.rawToolCallTextParts.join(``));let i=be(t);return{id:e(),role:`assistant`,content:t.textParts.join(``),state:`complete`,timestamp:new Date,...i.length>0&&{toolCalls:i},...Object.keys(r).length>0&&{metadata:r}}}function be(e){return[...xe(e.toolCallParts),...e.projectedToolCalls]}function xe(e){return Array.from(e.entries()).sort(([e],[t])=>e-t).map(([e,t])=>({id:t.id||`call_${e}`,type:`function`,function:{name:t.name,arguments:t.arguments||`{}`}}))}async function*Se(e,t){let n=e[Symbol.asyncIterator]();try{for(;!t?.aborted;){let e=await Ce(n,t);if(e.done||(await we(t),t?.aborted))break;yield e.value}}finally{t?.aborted&&await n.return?.()}}async function Ce(e,t){if(!t)return e.next();if(t.aborted)return{done:!0,value:void 0};let n,r=new Promise(e=>{n=()=>e({done:!0,value:void 0}),t.addEventListener(`abort`,n,{once:!0})});try{return await Promise.race([e.next(),r])}finally{n&&t.removeEventListener(`abort`,n)}}async function we(e){e?.aborted||await new Promise(e=>setTimeout(e,0))}async function*T(e,t){let n=t.initialSequence??0;for await(let r of e)t.onProviderNativeRawPayload?.({provider:t.provider,...t.apiSurface!==void 0&&{apiSurface:t.apiSurface},payloadKind:`stream_event`,sequence:n,payload:r}),n++,yield r}async function E(e,t=Te){if(!e.baseURL)return{ok:!0,message:`Profile fields are valid; no endpoint probe configured.`};try{let n=await t(`${e.baseURL.replace(/\/$/,``)}/models`);if(!n.ok)return{ok:!1,message:`HTTP ${n.status}`};let r=((await n.json()).data??[]).map(e=>e.id).filter(e=>!!e);return{ok:!0,message:`${r.length} model(s) discovered`,models:r}}catch(e){return{ok:!1,message:e instanceof Error?e.message:String(e)}}}async function Te(e){let t=await fetch(e);return{ok:t.ok,status:t.status,json:()=>t.json()}}var Ee=class{parser;constructor(e){this.parser=new C({logger:e})}parseResponse(e){try{return this.parser.parseResponse(e)}catch(e){let t=De(e instanceof Error?e.message:`OpenAI response parsing failed`);throw Error(`OpenAI response parsing failed: ${t}`)}}parseStreamingChunk(e){try{return this.parser.parseStreamingChunk(e)}catch(e){let t=De(e instanceof Error?e.message:`OpenAI chunk parsing failed`);throw Error(`OpenAI chunk parsing failed: ${t}`)}}};function De(e){return e.replace(/^OpenAI-compatible response parsing failed: /,``).replace(/^OpenAI-compatible chunk parsing failed: /,``).replace(`OpenAI-compatible response`,`OpenAI response`)}function Oe(e){if(e.responseFormat===void 0||e.responseFormat===`text`)return;if(e.responseFormat===`json_object`)return{type:`json_object`};let t=Ae(e);return{type:`json_schema`,json_schema:{name:t.name,schema:t.schema,...t.description!==void 0&&{description:t.description},...t.strict!==void 0&&{strict:t.strict}}}}function ke(e){if(e.responseFormat===void 0||e.responseFormat===`text`)return;if(e.responseFormat===`json_object`)return{format:{type:`json_object`}};let t=Ae(e);return{format:{type:`json_schema`,name:t.name,schema:t.schema,...t.description!==void 0&&{description:t.description},...t.strict!==void 0&&{strict:t.strict}}}}function Ae(e){let t=e.jsonSchema;if(e.responseFormat!==`json_schema`)throw Error(`Unsupported OpenAI response format: ${e.responseFormat}`);if(!t?.schema)throw Error(`OpenAI jsonSchema.schema is required when responseFormat is json_schema`);return{name:t.name,schema:t.schema,...t.description!==void 0&&{description:t.description},...t.strict!==void 0&&{strict:t.strict}}}function je(e){return x(e)}function Me(e){return S(e)}async function Ne(e){let t=Re(e.client);try{let n=Fe(e);if(e.chatOptions?.onTextDelta??e.onTextDelta)return await Ie(t,e,{...n,stream:!0});await Le(e,n,`chat`),e.chatOptions?.onProviderNativeRawPayload?.({provider:`openai`,apiSurface:`chat-completions`,payloadKind:`request`,payload:n});let r=await t.chat.completions.create(n);return e.chatOptions?.onProviderNativeRawPayload?.({provider:`openai`,apiSurface:`chat-completions`,payloadKind:`response`,payload:r}),e.responseParser.parseResponse(r)}catch(e){let t=e.message||`OpenAI API request failed`;throw Error(`OpenAI chat failed: ${t}`)}}async function*Pe(e){let t=Re(e.client);try{let n={...Fe(e),stream:!0};await Le(e,n,`stream`),e.chatOptions?.onProviderNativeRawPayload?.({provider:`openai`,apiSurface:`chat-completions`,payloadKind:`request`,payload:n});let r=await t.chat.completions.create(n,e.chatOptions?.signal?{signal:e.chatOptions.signal}:void 0);for await(let t of T(r,{provider:`openai`,apiSurface:`chat-completions`,onProviderNativeRawPayload:e.chatOptions?.onProviderNativeRawPayload})){let n=e.responseParser.parseStreamingChunk(t);n&&(yield n)}}catch(e){let t=e.message||`OpenAI API request failed`;throw Error(`OpenAI stream failed: ${t}`)}}function Fe(e){let t=je(e.messages),n=e.chatOptions?.model??e.providerOptions.defaultModel;if(!n)throw Error(`Model is required in chat options. Please specify a model in defaultModel configuration.`);let r=Oe(e.providerOptions);return{model:n,messages:t,...e.chatOptions?.temperature!==void 0&&{temperature:e.chatOptions.temperature},...e.chatOptions?.maxTokens!==void 0&&{max_tokens:e.chatOptions.maxTokens},...e.chatOptions?.tools&&{tools:Me(e.chatOptions.tools),tool_choice:`auto`},...r!==void 0&&{response_format:r}}}async function Ie(e,t,n){try{return await Le(t,n,`stream`),t.chatOptions?.onProviderNativeRawPayload?.({provider:`openai`,apiSurface:`chat-completions`,payloadKind:`request`,payload:n}),w({stream:T(await e.chat.completions.create(n,t.chatOptions?.signal?{signal:t.chatOptions.signal}:void 0),{provider:`openai`,apiSurface:`chat-completions`,onProviderNativeRawPayload:t.chatOptions?.onProviderNativeRawPayload}),onTextDelta:t.chatOptions?.onTextDelta??t.onTextDelta,signal:t.chatOptions?.signal})}catch(e){let t=e.message||`OpenAI streaming request failed`;throw Error(`OpenAI stream failed: ${t}`)}}async function Le(e,t,n){if(!e.payloadLogger?.isEnabled())return;let r={model:t.model,messagesCount:t.messages.length,hasTools:!!t.tools,temperature:t.temperature??void 0,maxTokens:t.max_tokens??void 0,timestamp:new Date().toISOString()};await e.payloadLogger.logPayload(r,n)}function Re(e){if(!e)throw Error(`OpenAI client not available. Either provide a client/apiKey or use an executor.`);return e}function ze(e){return e.flatMap(e=>Ve(e))}function Be(e,t){let n=e?.map(e=>({type:`function`,name:e.name,description:e.description,parameters:e.parameters,strict:t??!1}))??[];return n.length>0?n:void 0}function Ve(e){if(e.role===`user`)return[D(`user`,Ue(e.content,e.parts))];if(e.role===`system`)return[D(`system`,e.content)];if(e.role===`tool`){if(!e.toolCallId||e.toolCallId.trim().length===0)throw Error(`Tool message missing toolCallId: ${JSON.stringify(e)}`);return[{type:`function_call_output`,call_id:e.toolCallId,output:e.content||``}]}return He(e)}function He(e){let t=[];e.content&&e.content.length>0&&t.push(D(`assistant`,e.content));for(let n of e.toolCalls??[])t.push({type:`function_call`,call_id:n.id,name:n.function.name,arguments:n.function.arguments});return t.length===0&&t.push(D(`assistant`,``)),t}function Ue(e,t){if(!t||t.length===0)return e;let n=t.map(e=>We(e));return e.length>0&&!t.some(e=>e.type===`text`)?[{type:`input_text`,text:e},...n]:n}function We(e){return e.type===`text`?{type:`input_text`,text:e.text}:e.type===`image_uri`?{type:`input_image`,image_url:e.uri}:{type:`input_image`,image_url:`data:${e.mimeType};base64,${e.data}`}}function D(e,t){return{role:e,content:t}}async function*Ge(e,t){let n=e[Symbol.asyncIterator]();try{for(;!t?.aborted;){let e=await Ke(n,t);if(e.done||t?.aborted)break;yield e.value}}finally{t?.aborted&&await n.return?.()}}async function Ke(e,t){if(!t)return e.next();if(t.aborted)return{done:!0,value:void 0};let n,r=new Promise(e=>{n=()=>e({done:!0,value:void 0}),t.addEventListener(`abort`,n,{once:!0})});try{return await Promise.race([e.next(),r])}finally{n&&t.removeEventListener(`abort`,n)}}function qe(e){ut(e);let t=e.output??[];return Qe({content:e.output_text??it(t),toolCalls:tt(t),response:e,reasoning:O(t)})}async function Je(e){let t={textParts:[],toolCalls:[],reasoning:ct()};for await(let n of Ge(e.stream,e.signal))Ye(t,n,e.onTextDelta);return t.completedResponse===void 0?Qe({content:t.textParts.join(``),toolCalls:t.toolCalls,reasoning:t.reasoning}):Ze(t)}function Ye(e,t,n){if(t.type===`response.output_text.delta`){e.textParts.push(t.delta),n?.(t.delta);return}if(t.type===`response.completed`){e.completedResponse=t.response,k(e.reasoning,O(t.response.output??[]));return}if(t.type===`response.output_item.done`){Xe(e,t.item);return}if(t.type===`response.error`||t.type===`response.failed`||t.type===`response.incomplete`)throw Error(`OpenAI Responses API failed: ${dt(t)}`)}function Xe(e,t){if(nt(t)){e.toolCalls.push(rt(t));return}st(t)&&k(e.reasoning,O([t]))}function Ze(e){let t=e.completedResponse;if(t===void 0)throw Error(`OpenAI Responses stream completed without response metadata`);ut(t);let n=t.output??[],r=tt(n),i=e.textParts.length>0?e.textParts.join(``):t.output_text??it(n),a=O(n);return k(a,e.reasoning),Qe({content:i,toolCalls:r.length>0?r:e.toolCalls,response:t,reasoning:a})}function Qe(t){return{id:e(),role:`assistant`,content:t.content,state:`complete`,timestamp:new Date,...t.toolCalls.length>0&&{toolCalls:t.toolCalls},...t.response?.usage!==void 0&&{usage:et(t.response.usage)},metadata:$e(t.response,t.reasoning)}}function $e(e,t){return{providerApiSurface:`responses`,...e?.id!==void 0&&{responseId:e.id},...e?.model!==void 0&&{model:e.model},...e?.status!==void 0&&{finishReason:e.status},...t.reasoningSummaryCount>0&&{reasoningSummaryCount:t.reasoningSummaryCount,reasoningSummaries:t.reasoningSummaries},...t.hasEncryptedReasoning&&{hasEncryptedReasoning:!0}}}function et(e){return{promptTokens:e.input_tokens??0,completionTokens:e.output_tokens??0,totalTokens:e.total_tokens??0}}function tt(e){return e.filter(nt).map(e=>rt(e))}function nt(e){return e.type===`function_call`&&`call_id`in e&&`name`in e&&`arguments`in e}function rt(e){return{id:e.call_id,type:`function`,function:{name:e.name,arguments:e.arguments}}}function it(e){return e.filter(ot).flatMap(e=>e.content).map(at).join(``)}function at(e){return e.type===`refusal`?e.refusal:e.text}function ot(e){return e.type===`message`&&`content`in e&&Array.isArray(e.content)}function O(e){let t=ct();for(let n of e){if(!st(n))continue;let e=n.summary?.map(e=>e.text).filter(lt)??[];t.reasoningSummaryCount+=e.length,t.reasoningSummaries.push(...e),t.hasEncryptedReasoning=t.hasEncryptedReasoning||!!n.encrypted_content}return t}function st(e){return e.type===`reasoning`}function ct(){return{reasoningSummaryCount:0,reasoningSummaries:[],hasEncryptedReasoning:!1}}function k(e,t){e.reasoningSummaryCount+=t.reasoningSummaryCount,e.reasoningSummaries.push(...t.reasoningSummaries),e.hasEncryptedReasoning=e.hasEncryptedReasoning||t.hasEncryptedReasoning}function lt(e){return e!==void 0}function ut(e){if(e.status===`failed`||e.status===`incomplete`)throw Error(`OpenAI Responses API failed: ${e.error?.message??e.status}`)}function dt(e){return e.message??e.error?.message??e.response?.error?.message??`unknown error`}async function ft(e){let t=e.chatOptions?.onTextDelta??e.onTextDelta;if(t)return mt({...e,chatOptions:{...e.chatOptions,onTextDelta:t}});if(!e.client)throw Error(`OpenAI Responses client not available.`);try{let t=ht(e);e.chatOptions?.onProviderNativeRawPayload?.({provider:`openai`,apiSurface:`responses`,payloadKind:`request`,payload:t});let n=await e.client.responses.create(t,e.chatOptions?.signal?{signal:e.chatOptions.signal}:void 0);return e.chatOptions?.onProviderNativeRawPayload?.({provider:`openai`,apiSurface:`responses`,payloadKind:`response`,payload:n}),qe(n)}catch(e){let t=e.message||`OpenAI Responses API request failed`;throw Error(`OpenAI responses failed: ${t}`)}}async function*pt(e){let t={deltas:[]},n=e.chatOptions?.onTextDelta??e.onTextDelta,r=mt({...e,chatOptions:{...e.chatOptions,onTextDelta:e=>{n?.(e),yt(t,_t(e))}}}).then(e=>bt(t,e)).catch(e=>xt(t,Tt(e)));yield*vt(t),await r}async function mt(e){if(!e.client)throw Error(`OpenAI Responses client not available.`);try{let t=gt(e);return e.chatOptions?.onProviderNativeRawPayload?.({provider:`openai`,apiSurface:`responses`,payloadKind:`request`,payload:t}),Je({stream:T(await e.client.responses.create(t,e.chatOptions?.signal?{signal:e.chatOptions.signal}:void 0),{provider:`openai`,apiSurface:`responses`,onProviderNativeRawPayload:e.chatOptions?.onProviderNativeRawPayload}),onTextDelta:e.chatOptions?.onTextDelta,signal:e.chatOptions?.signal})}catch(e){let t=e.message||`OpenAI Responses streaming request failed`;throw Error(`OpenAI responses stream failed: ${t}`)}}function ht(e){let t=e.chatOptions?.model??e.providerOptions.defaultModel;if(!t)throw Error(`Model is required in chat options. Please specify a model in defaultModel configuration.`);let n=Be(e.chatOptions?.tools,e.providerOptions.strictTools),r=ke(e.providerOptions);return{model:t,input:ze(e.messages),...n!==void 0&&{tools:n,tool_choice:`auto`},...e.chatOptions?.temperature!==void 0&&{temperature:e.chatOptions.temperature},...e.chatOptions?.maxTokens!==void 0&&{max_output_tokens:e.chatOptions.maxTokens},...r!==void 0&&{text:r},...e.providerOptions.reasoning!==void 0&&{reasoning:e.providerOptions.reasoning},...e.providerOptions.includeEncryptedReasoning===!0&&{include:[`reasoning.encrypted_content`]},...e.providerOptions.store!==void 0&&{store:e.providerOptions.store}}}function gt(e){return{...ht(e),stream:!0}}function _t(t){return{id:e(),role:`assistant`,content:t,state:`complete`,timestamp:new Date,metadata:{providerApiSurface:`responses`,isStreamChunk:!0,isComplete:!1}}}async function*vt(e){for(;;){let t=e.deltas.shift();if(t!==void 0){yield t;continue}if(e.error!==void 0)throw e.error;if(e.finalMessage!==void 0){yield wt(e.finalMessage);return}await St(e)}}function yt(e,t){e.deltas.push(t),Ct(e)}function bt(e,t){e.finalMessage=t,Ct(e)}function xt(e,t){e.error=t,Ct(e)}function St(e){return new Promise(t=>{e.wake=t})}function Ct(e){e.wake?.(),e.wake=void 0}function wt(e){return{...e,content:``,metadata:{...e.metadata,isStreamChunk:!0,isComplete:!0}}}function Tt(e){return e instanceof Error?e:Error(String(e))}var Et=class extends n{name=`openai`;version=`1.0.0`;client;options;apiSurface;payloadLogger;responseParser;onTextDelta;constructor(e){if(super(e.logger||i),this.options=e,this.apiSurface=Dt(e),kt(this.apiSurface,e.nativeWebTools),e.executor&&(this.executor=e.executor),!this.executor)if(e.client)this.client=e.client;else if(e.apiKey)this.client=new s({apiKey:e.apiKey,...e.organization&&{organization:e.organization},...e.timeout&&{timeout:e.timeout},...e.baseURL&&{baseURL:e.baseURL}});else throw Error(`Either OpenAI client, apiKey, or executor is required`);this.responseParser=new Ee(this.logger),this.payloadLogger=e.payloadLogger}async chat(e,t){if(this.validateMessages(e),this.validateNativeWebTools(t?.nativeWebTools),this.executor)try{return await this.executeViaExecutorOrDirect(e,t)}catch(e){throw this.logger.error(`OpenAI Provider executor chat error:`,e instanceof Error?e.message:String(e)),e}return this.apiSurface===`responses`?ft({client:this.client,messages:e,chatOptions:t,providerOptions:this.options,onTextDelta:this.onTextDelta}):Ne({client:this.client,messages:e,chatOptions:t,providerOptions:this.options,payloadLogger:this.payloadLogger,responseParser:this.responseParser,onTextDelta:this.onTextDelta})}async*chatStream(e,t){if(this.validateNativeWebTools(t?.nativeWebTools),this.executor)try{yield*this.executeStreamViaExecutorOrDirect(e,t);return}catch(e){throw this.logger.error(`OpenAI Provider executor stream error:`,e instanceof Error?e.message:String(e)),e}if(this.apiSurface===`responses`){yield*pt({client:this.client,messages:e,chatOptions:t,providerOptions:this.options,onTextDelta:this.onTextDelta});return}yield*Pe({client:this.client,messages:e,chatOptions:t,providerOptions:this.options,payloadLogger:this.payloadLogger,responseParser:this.responseParser,onTextDelta:this.onTextDelta})}supportsTools(){return!0}getCapabilities(){let e=this.apiSurface===`chat-completions`?`openai-compatible-chat-completions`:`openai-responses`;return{functionCalling:{supported:!0},nativeWebTools:{webSearch:{supported:!1,enabled:!1,source:e,reason:Ot(this.apiSurface,`search`)},webFetch:{supported:!1,enabled:!1,source:e,reason:Ot(this.apiSurface,`fetch`)}}}}validateConfig(){return!!this.client&&!!this.options}async dispose(){}validateMessages(e){super.validateMessages(e);for(let t of e)if(t.role===`assistant`){let e=t;if(e.toolCalls&&e.toolCalls.length>0&&e.content===``)continue}}};function Dt(e){return e.apiSurface===void 0?e.baseURL?`chat-completions`:`responses`:e.apiSurface}function Ot(e,t){return e===`chat-completions`?`OpenAI-compatible Chat Completions endpoints support declared function tools, not provider-native web ${t}.`:`OpenAI Responses native web ${t} is not wired in this Robota provider version.`}function kt(e,t){if(!(t?.webSearch!==!0&&t?.webFetch!==!0))throw Error(`Provider openai native web search/fetch is not supported for apiSurface ${e} in this Robota provider version.`)}var At=class{static filterMessagesForOpenAI(e){return e.filter(e=>e.role===`user`||e.role===`assistant`||e.role===`system`?!0:e.role===`tool`?!!(e.toolCallId&&e.toolCallId.trim()!==``&&e.toolCallId!==`unknown`):!1)}static toOpenAIFormat(e){return this.filterMessagesForOpenAI(e).map(e=>this.convertMessage(e))}static convertMessage(e){let t=e.role;if(t===`user`)return{role:`user`,content:e.content};if(t===`assistant`){let t=e;return t.toolCalls&&t.toolCalls.length>0?{role:`assistant`,content:t.content===``?null:t.content||null,tool_calls:t.toolCalls.map(e=>({id:e.id,type:`function`,function:{name:e.function.name,arguments:e.function.arguments}}))}:{role:`assistant`,content:t.content===null||t.content===``?null:t.content||``}}if(t===`system`)return{role:`system`,content:e.content};if(t===`tool`){if(!e.toolCallId||e.toolCallId.trim()===``)throw Error(`Tool message missing toolCallId: ${JSON.stringify(e)}`);return{role:`tool`,content:e.content,tool_call_id:e.toolCallId}}throw Error(`Unsupported message role: ${t}`)}static addSystemPromptIfNeeded(e,t){return!t||e.some(e=>e.role===`system`)?e:[{role:`system`,content:t},...e]}};const jt=`https://platform.openai.com/docs/api-reference/models/list`;async function Mt(e,t={}){if(!e.apiKey)return It(`OpenAI model catalog refresh requires apiKey.`);let n=t.fetcher??Lt,r=t.now??(()=>new Date),i=Nt(e.baseURL);try{let t=await n(i,{headers:{Authorization:`Bearer ${e.apiKey}`}});if(!t.ok)return It(Ft(t));let a=Pt(await t.json());return{status:`live`,entries:a,lastVerifiedAt:r().toISOString(),sourceUrl:jt,message:`${a.length} OpenAI model(s) discovered.`}}catch(e){return It(e instanceof Error?e.message:String(e))}}function Nt(e){return e?`${e.replace(/\/$/,``)}/models`:`https://api.openai.com/v1/models`}function Pt(e){return(e.data??[]).map(e=>e.id).filter(e=>e!==void 0&&e.trim().length>0).map(e=>({id:e,displayName:e,lifecycle:`active`}))}function Ft(e){let t=e.statusText?` ${e.statusText}`:``;return`OpenAI model catalog refresh failed: HTTP ${e.status}${t}`}function It(e){return{status:`unavailable`,sourceUrl:jt,message:e}}async function Lt(e,t){let n=await fetch(e,t);return{ok:n.ok,status:n.status,statusText:n.statusText,json:()=>n.json()}}const Rt=void 0,A=`$ENV:OPENAI_API_KEY`,zt=[{kind:`api-key`,label:`OpenAI API keys`,url:`https://platform.openai.com/api-keys`,sourceUrl:`https://developers.openai.com/api/reference/overview#authentication`,lastVerifiedAt:`2026-05-08`}];function Bt(){return{type:`openai`,displayName:`OpenAI`,description:`Official OpenAI Responses API provider`,defaults:{apiKey:A},modelCatalog:{status:`unavailable`,sourceUrl:`https://platform.openai.com/docs/api-reference/models/list`,message:`OpenAI model availability should be discovered live from GET /v1/models.`},setupHelpLinks:zt,setupSteps:[{key:`model`,title:`OpenAI model`,required:!0},{key:`apiKey`,title:`OpenAI API key`,defaultValue:A,masked:!0}],requiresApiKey:!0,probeProfile:E,refreshModelCatalog:({profile:e})=>Mt(e),modelCatalogCacheTtlSeconds:86400,createProvider:e=>{let t=Ht(e.options),n=Ut(e.options);return Gt(e.baseURL,t,n),new Et({apiKey:Vt(e.apiKey),...e.baseURL!==void 0&&{baseURL:e.baseURL},...e.timeout!==void 0&&{timeout:e.timeout},...t!==void 0&&{apiSurface:t},...n!==void 0&&{nativeWebTools:n},defaultModel:e.model})}}}function Vt(e){if(!e)throw Error(`Provider openai requires apiKey`);return e}function Ht(e){let t=e?.apiSurface;if(t===`responses`||t===`chat-completions`)return t}function Ut(e){let t=Wt(e?.nativeWebTools)??Wt(e?.builtInWebTools);if(t!==void 0)return t}function Wt(e){if(e==null||e instanceof Date||Array.isArray(e)||typeof e!=`object`)return;let t=e.webSearch,n=e.webFetch;return{...typeof t==`boolean`&&{webSearch:t},...typeof n==`boolean`&&{webFetch:n}}}function Gt(e,t,n){if(!(n?.webSearch!==!0&&n?.webFetch!==!0))throw Error(e!==void 0||t===`chat-completions`?`Provider openai profile uses an OpenAI-compatible Chat Completions endpoint; native web search/fetch is not supported for this profile. Use Robota local WebSearch/WebFetch tools or a provider with documented hosted web support.`:`Provider openai native web search/fetch is not wired in this Robota provider version. Use Robota local WebSearch/WebFetch tools or a provider with documented hosted web support.`)}const j=`deepseek-v4-flash`,Kt=`DEEPSEEK_API_KEY`,qt=`$ENV:${Kt}`,Jt=`https://api.deepseek.com`;var Yt=class extends n{name=`deepseek`;version=`1.0.0`;client;options;responseParser;onTextDelta;constructor(e){if(super(e.logger||i),this.options=e,e.executor&&(this.executor=e.executor),!this.executor)if(e.client)this.client=e.client;else if(e.apiKey)this.client=new s({apiKey:e.apiKey,baseURL:e.baseURL??`https://api.deepseek.com`,...e.timeout!==void 0&&{timeout:e.timeout}});else throw Error(`Either DeepSeek client, apiKey, or executor is required`);this.responseParser=new C({logger:this.logger})}async chat(e,t){if(this.validateMessages(e),this.validateNativeWebTools(t?.nativeWebTools),this.executor)try{return await this.executeViaExecutorOrDirect(e,t)}catch(e){throw this.logger.error(`DeepSeek Provider executor chat error:`,e instanceof Error?e.message:String(e)),e}let n=this.getClient();try{let r=this.buildRequestParams(e,t),i=t?.onTextDelta??this.onTextDelta;if(i)return await this.chatWithStreamingAssembly({...r,stream:!0},{...t,onTextDelta:i});t?.onProviderNativeRawPayload?.({provider:`deepseek`,apiSurface:`chat-completions`,payloadKind:`request`,payload:r});let a=await n.chat.completions.create(r);return t?.onProviderNativeRawPayload?.({provider:`deepseek`,apiSurface:`chat-completions`,payloadKind:`response`,payload:a}),this.responseParser.parseResponse(a)}catch(e){let t=e.message||`DeepSeek API request failed`;throw Error(`DeepSeek chat failed: ${t}`)}}async*chatStream(e,t){if(this.validateMessages(e),this.validateNativeWebTools(t?.nativeWebTools),this.executor)try{yield*this.executeStreamViaExecutorOrDirect(e,t);return}catch(e){throw this.logger.error(`DeepSeek Provider executor stream error:`,e instanceof Error?e.message:String(e)),e}let n=this.getClient();try{let r=this.buildStreamingRequestParams(e,t);t?.onProviderNativeRawPayload?.({provider:`deepseek`,apiSurface:`chat-completions`,payloadKind:`request`,payload:r});let i=T(await n.chat.completions.create(r),{provider:`deepseek`,apiSurface:`chat-completions`,onProviderNativeRawPayload:t?.onProviderNativeRawPayload});for await(let e of this.streamWithAbort(i,t?.signal)){let t=this.responseParser.parseStreamingChunk(e);t&&(yield t)}}catch(e){let t=e.message||`DeepSeek API request failed`;throw Error(`DeepSeek stream failed: ${t}`)}}supportsTools(){return!0}getCapabilities(){return{functionCalling:{supported:!0},nativeWebTools:{webSearch:{supported:!1,enabled:!1,source:`openai-compatible-chat-completions`,reason:`DeepSeek OpenAI-compatible Chat Completions supports declared function tools, not provider-native web search.`},webFetch:{supported:!1,enabled:!1,source:`openai-compatible-chat-completions`,reason:`DeepSeek OpenAI-compatible Chat Completions supports declared function tools, not provider-native web fetch.`}}}}validateConfig(){return!!this.client&&!!this.options}async dispose(){}buildRequestParams(e,t){this.validateTools(t?.tools);let n=t?.model??this.options.defaultModel;if(!n)throw Error(`Model is required in chat options. Please specify a model in defaultModel configuration.`);return{model:n,messages:x(e),...t?.temperature!==void 0&&{temperature:t.temperature},...t?.maxTokens!==void 0&&{max_tokens:t.maxTokens},...t?.tools&&{tools:S(t.tools),tool_choice:`auto`},...this.options.thinking!==void 0&&{thinking:{type:this.options.thinking}},...this.options.reasoningEffort!==void 0&&{reasoning_effort:this.options.reasoningEffort}}}buildStreamingRequestParams(e,t){return{...this.buildRequestParams(e,t),stream:!0}}getClient(){if(!this.client)throw Error(`DeepSeek client not available. Either provide a client/apiKey or use an executor.`);return this.client}async chatWithStreamingAssembly(e,t){let n=this.getClient();try{return t.onProviderNativeRawPayload?.({provider:`deepseek`,apiSurface:`chat-completions`,payloadKind:`request`,payload:e}),w({stream:T(await n.chat.completions.create(e,t.signal?{signal:t.signal}:void 0),{provider:`deepseek`,apiSurface:`chat-completions`,onProviderNativeRawPayload:t.onProviderNativeRawPayload}),onTextDelta:t.onTextDelta,signal:t.signal})}catch(e){let t=e.message||`DeepSeek streaming request failed`;throw Error(`DeepSeek stream failed: ${t}`)}}};const M=`https://api-docs.deepseek.com/quick_start/pricing`,Xt=`https://api-docs.deepseek.com/api/list-models`,N=`2026-05-07`,P=`2026-07-24`,Zt=[{id:j,displayName:`DeepSeek V4 Flash`,contextWindow:1e6,capabilities:[`tools`,`reasoning`,`json_schema`,`streaming`],lifecycle:`active`,sourceUrl:M,lastVerifiedAt:N},{id:`deepseek-v4-pro`,displayName:`DeepSeek V4 Pro`,contextWindow:1e6,capabilities:[`tools`,`reasoning`,`json_schema`,`streaming`],lifecycle:`active`,sourceUrl:M,lastVerifiedAt:N},{id:`deepseek-chat`,displayName:`DeepSeek Chat compatibility alias, deprecated ${P}`,aliases:[j],contextWindow:1e6,capabilities:[`tools`,`json_schema`,`streaming`],lifecycle:`deprecated`,sourceUrl:M,lastVerifiedAt:N},{id:`deepseek-reasoner`,displayName:`DeepSeek Reasoner compatibility alias, deprecated ${P}`,aliases:[j],contextWindow:1e6,capabilities:[`reasoning`,`json_schema`,`streaming`],lifecycle:`deprecated`,sourceUrl:M,lastVerifiedAt:N}];function Qt(e){return Zt.find(t=>t.id===e)}async function $t(e,t=rn){let n=await t(`${nn(e.baseURL??`https://api.deepseek.com`)}/models`,en(e.apiKey));return n.ok?{status:`live`,sourceUrl:M,lastVerifiedAt:N,entries:((await n.json()).data??[]).map(e=>e.id).filter(e=>typeof e==`string`&&e.length>0).map(tn)}:{status:`unavailable`,sourceUrl:M,message:`DeepSeek model refresh failed: HTTP ${n.status}`}}function en(e){if(e)return{headers:{Authorization:`Bearer ${e}`}}}function tn(e){return Qt(e)??{id:e,displayName:e,lifecycle:`active`,sourceUrl:`https://api-docs.deepseek.com/quick_start/pricing`,lastVerifiedAt:`2026-05-07`}}function nn(e){return e.replace(/\/$/,``)}async function rn(e,t){let n=await fetch(e,{...t?.headers!==void 0&&{headers:t.headers}});return{ok:n.ok,status:n.status,json:()=>n.json()}}const an={status:`fallback`,sourceUrl:M,lastVerifiedAt:N,entries:Zt},on=[{kind:`api-key`,label:`DeepSeek API keys`,url:`https://platform.deepseek.com/api_keys`,sourceUrl:`https://api-docs.deepseek.com/`,lastVerifiedAt:`2026-05-08`}];function sn(){return{type:`deepseek`,displayName:`DeepSeek`,description:`DeepSeek OpenAI-compatible endpoint`,defaults:{model:j,apiKey:qt,baseURL:Jt},modelCatalog:an,setupHelpLinks:on,setupSteps:[{key:`baseURL`,title:`DeepSeek OpenAI-compatible base URL`,defaultValue:Jt},{key:`model`,title:`DeepSeek model`,defaultValue:j},{key:`apiKey`,title:`DeepSeek API key`,defaultValue:qt,masked:!0}],requiresApiKey:!0,probeProfile:E,refreshModelCatalog:({profile:e})=>$t(e),modelCatalogCacheTtlSeconds:86400,createProvider:e=>{let t=ln(e.options);return new Yt({apiKey:cn(e.apiKey),...e.baseURL!==void 0&&{baseURL:e.baseURL},...e.timeout!==void 0&&{timeout:e.timeout},...t.thinking!==void 0&&{thinking:t.thinking},...t.reasoningEffort!==void 0&&{reasoningEffort:t.reasoningEffort},defaultModel:e.model})}}}function cn(e){if(!e)throw Error(`Provider deepseek requires apiKey`);return e}function ln(e){let t=un(e?.thinking),n=dn(e?.reasoningEffort);return{...t!==void 0&&{thinking:t},...n!==void 0&&{reasoningEffort:n}}}function un(e){if(e===!0)return`enabled`;if(e===!1)return`disabled`;if(e===`enabled`||e===`disabled`)return e;let t=fn(e)?.type;return t===`enabled`||t===`disabled`?t:void 0}function dn(e){if(e===`low`||e===`medium`||e===`high`||e===`xhigh`||e===`max`)return e}function fn(e){if(!(e==null||e instanceof Date||Array.isArray(e)))return typeof e==`object`?e:void 0}function pn(e){return e?e.some(e=>e.type===`image_inline`||e.type===`image_uri`):!1}function mn(e){if(!e)return[];let t=[];for(let n of e)n.type===`image_inline`&&t.push({kind:`uri`,uri:`data:${n.mimeType};base64,${n.data}`,mimeType:n.mimeType});return t}function hn(e){let t=e.indexOf(`,`);if(t<0)return;let n=e.slice(0,t),r=e.slice(t+1);if(!n.endsWith(`;base64`))return;let i=n.replace(`data:`,``).replace(`;base64`,``).trim();if(!(i.length===0||r.trim().length===0))return{mimeType:i,data:r}}function gn(e){if(e.kind===`inline`)return e.mimeType.trim().length===0||e.data.trim().length===0?{ok:!1,error:{code:`PROVIDER_INVALID_REQUEST`,message:`Inline image source requires non-empty mimeType and data.`}}:{ok:!0,value:{type:`image_inline`,mimeType:e.mimeType,data:e.data}};if(!e.uri.startsWith(`data:`))return{ok:!1,error:{code:`PROVIDER_INVALID_REQUEST`,message:`Google image provider supports only inline or data URI input sources.`}};let t=hn(e.uri);return t?{ok:!0,value:{type:`image_inline`,mimeType:t.mimeType,data:t.data}}:{ok:!1,error:{code:`PROVIDER_INVALID_REQUEST`,message:`Data URI source must use base64 payload.`}}}function F(e,t,n){return n&&n.length>0?n:e.some(e=>pn(e.parts))?[`TEXT`,`IMAGE`]:t&&t.length>0?t:[`TEXT`]}function _n(e,t){return!t||t.length===0?!0:t.includes(e)}function vn(e,t,n){wn(t);let r=F(e,t.defaultResponseModalities,n?.google?.responseModalities);yn(n?.model,r,t);let i={responseModalities:r};return bn(i,n),xn(i,t,n),Sn(i,t),Cn(i,t),i}function yn(e,t,n){if(!(!e||!t.includes(`IMAGE`))&&!_n(e,n.imageCapableModels))throw Error(`Selected model "${e}" is not configured as image-capable for Google provider.`)}function bn(e,t){typeof t?.temperature==`number`&&(e.temperature=t.temperature),typeof t?.maxTokens==`number`&&(e.maxOutputTokens=t.maxTokens),typeof t?.google?.topP==`number`&&(e.topP=t.google.topP),typeof t?.google?.topK==`number`&&(e.topK=t.google.topK),typeof t?.google?.candidateCount==`number`&&(e.candidateCount=t.google.candidateCount),t?.google?.stopSequences&&t.google.stopSequences.length>0&&(e.stopSequences=t.google.stopSequences),t?.signal&&(e.abortSignal=t.signal)}function xn(e,t,n){let r=n?.google?.safetySettings??t.safetySettings;r&&r.length>0&&(e.safetySettings=r)}function Sn(e,t){t.responseMimeType&&(e.responseMimeType=t.responseMimeType),t.responseSchema&&(e.responseMimeType=t.responseMimeType??`application/json`,e.responseSchema=t.responseSchema),t.responseJsonSchema&&(e.responseMimeType=t.responseMimeType??`application/json`,e.responseJsonSchema=t.responseJsonSchema)}function Cn(e,t){t.thinkingConfig&&(e.thinkingConfig=t.thinkingConfig),t.toolConfig&&(e.toolConfig=t.toolConfig)}function wn(e){if(e.responseSchema&&e.responseJsonSchema)throw Error(`Gemini structured output options responseSchema and responseJsonSchema are mutually exclusive.`)}function Tn(e){let t=[],n=e.parts??[];for(let e of n){if(e.type===`text`){t.push({text:e.text});continue}if(e.type===`image_inline`){t.push({inlineData:{mimeType:e.mimeType,data:e.data}});continue}throw Error(`Google provider does not support image URI parts directly: ${e.uri}`)}return t.length===0&&typeof e.content==`string`&&e.content.length>0&&t.push({text:e.content}),t}function En(e){let t=[],n=[];for(let r of e){if(r.role===`user`){t.push({role:`user`,parts:Tn(r)});continue}if(r.role===`assistant`){t.push(Dn(r));continue}if(r.role===`tool`){t.push(On(r));continue}let e=kn(r);e.length>0&&n.push(e)}return{contents:t,...n.length>0&&{systemInstruction:n.join(`
5
+ `)}}}function Dn(e){let t=[],n=Tn(e);for(let e of n)t.push(e);return t.length===0&&e.content&&t.push({text:e.content}),e.toolCalls&&e.toolCalls.length>0&&e.toolCalls.forEach(e=>{t.push({functionCall:{id:e.id,name:e.function.name,args:jn(e.function.arguments)}})}),{role:`model`,parts:t}}function On(e){return{role:`user`,parts:[{functionResponse:{id:e.toolCallId,name:An(e),response:Mn(e.content)}}]}}function kn(e){let t=Tn(e);if(t.length===0)return e.content;let n=[];for(let e of t){if(typeof e.text==`string`){n.push(e.text);continue}throw Error(`Google provider system instructions support only text parts.`)}return n.join(`
6
+ `)}function An(e){let t=e.name?.trim();if(!t)throw Error(`Google provider tool message requires a function name.`);return t}function jn(e){let t=JSON.parse(e);if(!Nn(t))throw Error(`Google provider tool call arguments must be a JSON object.`);return t}function Mn(e){let t=e.trim();if(t.length===0)return{output:null};try{let e=JSON.parse(t);return Nn(e)?e:{output:e}}catch{return{output:e}}}function Nn(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}const Pn={string:l.STRING,number:l.NUMBER,integer:l.INTEGER,boolean:l.BOOLEAN,array:l.ARRAY,object:l.OBJECT};function Fn(e){return e.map(e=>({name:e.name,description:e.description,parameters:{type:l.OBJECT,properties:In(e.parameters.properties),required:e.parameters.required}}))}function In(e){let t={};for(let[n,r]of Object.entries(e))t[n]=Ln(r);return t}function Ln(e){let t={},n=Rn(e.type);return n&&(t.type=n),e.description&&(t.description=e.description),e.enum&&(t.enum=e.enum.map(String)),e.items&&(t.items=Ln(e.items)),e.properties&&(t.properties=In(e.properties)),typeof e.minimum==`number`&&(t.minimum=e.minimum),typeof e.maximum==`number`&&(t.maximum=e.maximum),e.pattern&&(t.pattern=e.pattern),e.format&&(t.format=e.format),e.default!==void 0&&(t.default=e.default),t}function Rn(e){if(e!==`null`)return Pn[e]}function zn(){return`call_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}function Bn(t){let n=t.candidates?.[0];if(!n)throw Error(`No candidate in Gemini response`);let r=n.content;if(!r||!r.parts||r.parts.length===0)throw Error(`No content in Gemini response`);let i=Vn(r.parts),a={id:e(),state:`complete`,role:`assistant`,content:i.textValues.length>0?i.textValues.join(``):null,parts:i.messageParts,timestamp:new Date};if(i.functionCalls.length>0){let e=a;e.toolCalls=i.functionCalls.map(e=>({id:e.id??zn(),type:`function`,function:{name:Gn(e),arguments:JSON.stringify(e.args??{})}}))}let o=Wn(t);return o&&(a.metadata=o),a}function Vn(e){let t=[],n=[],r=[];for(let i of e)Hn(i,t,n),Un(i,n),i.functionCall&&r.push(i.functionCall);return{textValues:t,messageParts:n,functionCalls:r}}function Hn(e,t,n){typeof e.text==`string`&&(t.push(e.text),n.push({type:`text`,text:e.text}))}function Un(e,t){!e.inlineData||typeof e.inlineData.data!=`string`||typeof e.inlineData.mimeType!=`string`||t.push({type:`image_inline`,data:e.inlineData.data,mimeType:e.inlineData.mimeType})}function Wn(e){if(!(!e.usageMetadata||typeof e.usageMetadata.promptTokenCount!=`number`||typeof e.usageMetadata.candidatesTokenCount!=`number`||typeof e.usageMetadata.totalTokenCount!=`number`))return{promptTokens:e.usageMetadata.promptTokenCount,completionTokens:e.usageMetadata.candidatesTokenCount,totalTokens:e.usageMetadata.totalTokenCount}}function Gn(e){if(!e.name||e.name.trim().length===0)throw Error(`Gemini function call is missing a function name.`);return e.name}async function Kn(e,t,n,r,i=`gemini`){let a=Yn(t,r),o=F(n,t.defaultResponseModalities,r?.google?.responseModalities);if(r?.onTextDelta&&!o.includes(`IMAGE`))return Xn(e,t,n,r,i);let s=En(n),c=vn(n,t,{...r,model:a}),l=Jn(a,s.contents,c,r,s.systemInstruction);I(r,i,`request`,l);let u=await e.models.generateContent(l);I(r,i,`response`,u);let d=Bn(u);if(o.includes(`IMAGE`)&&!pn(d.parts))throw Error(`Gemini response did not include an image part while IMAGE modality was requested.`);return d}async function*qn(t,n,r,i,a=`gemini`){let o=Yn(n,i);if(F(r,n.defaultResponseModalities,i?.google?.responseModalities).includes(`IMAGE`))throw Error(`Google provider does not support streaming image modality responses.`);let s=En(r),c=vn(r,n,{...i,model:o}),l=Jn(o,s.contents,c,i,s.systemInstruction);I(i,a,`request`,l);let u=await t.models.generateContentStream(l),d=0;for await(let t of u){I(i,a,`stream_event`,t,d),d++;let n=Zn(t);n&&(i?.onTextDelta?.(n),yield{id:e(),role:`assistant`,content:n,state:`complete`,timestamp:new Date})}}function Jn(e,t,n,r,i){let a={...n};return r?.tools&&r.tools.length>0&&(a.tools=[{functionDeclarations:Fn(r.tools)}]),i&&(a.systemInstruction=i),{model:e,contents:t,config:a}}function Yn(e,t){let n=t?.model??e.defaultModel;if(!n)throw Error(`Model is required in chat options. Please specify a model in defaultModel configuration.`);return n}async function Xn(t,n,r,i,a=`gemini`){let o=[];for await(let e of qn(t,n,r,i,a))typeof e.content==`string`&&o.push(e.content);let s=o.join(``);return{id:e(),role:`assistant`,content:s,parts:s.length>0?[{type:`text`,text:s}]:[],state:`complete`,timestamp:new Date}}function I(e,t,n,r,i){e?.onProviderNativeRawPayload?.({provider:t,apiSurface:`gemini-generate-content`,payloadKind:n,...i!==void 0&&{sequence:i},payload:r})}function Zn(e){let t=e.text;return typeof t==`function`?t():t}async function Qn(e,t,n){try{let r=mn((await e(t,{model:n,google:{responseModalities:[`TEXT`,`IMAGE`]}})).parts);return r.length===0?{ok:!1,error:{code:`PROVIDER_UPSTREAM_ERROR`,message:`Google image response did not include image output parts.`}}:{ok:!0,value:{outputs:r,model:n}}}catch(e){return{ok:!1,error:{code:`PROVIDER_UPSTREAM_ERROR`,message:e instanceof Error?e.message:`Google image request failed.`}}}}var $n=class extends n{name=`gemini`;version=`1.0.0`;onTextDelta;client;options;constructor(e){super(),this.options=e,e.executor&&(this.executor=e.executor),this.executor||(this.client=new c({apiKey:e.apiKey}))}async chat(e,t){if(this.validateMessages(e),this.executor)try{return await this.executeViaExecutorOrDirect(e,t)}catch(e){throw this.logger.error(`Gemini Provider executor chat error:`,e instanceof Error?e.message:String(e)),e}if(!this.client)throw Error(`Google client not available. Either provide apiKey or use an executor.`);try{return await Kn(this.client,this.options,e,this.withProviderCallbacks(t),this.name)}catch(e){let t=e instanceof Error?e.message:`Google API request failed`;throw Error(`Google chat failed: ${t}`)}}async*chatStream(e,t){if(this.validateMessages(e),this.executor)try{yield*this.executeStreamViaExecutorOrDirect(e,t);return}catch(e){throw this.logger.error(`Gemini Provider executor stream error:`,e instanceof Error?e.message:String(e)),e}if(!this.client)throw Error(`Google client not available. Either provide apiKey or use an executor.`);try{yield*qn(this.client,this.options,e,this.withProviderCallbacks(t),this.name)}catch(e){let t=e instanceof Error?e.message:`Google API request failed`;throw Error(`Google stream failed: ${t}`)}}async generateImage(t){if(t.prompt.trim().length===0)return{ok:!1,error:{code:`PROVIDER_INVALID_REQUEST`,message:`Image generation requires a non-empty prompt.`}};if(t.model.trim().length===0)return{ok:!1,error:{code:`PROVIDER_INVALID_REQUEST`,message:`Image generation requires a non-empty model.`}};let n={id:e(),role:`user`,content:t.prompt,state:`complete`,parts:[{type:`text`,text:t.prompt}],timestamp:new Date};return Qn(this.chat.bind(this),[n],t.model)}async editImage(t){if(t.prompt.trim().length===0)return{ok:!1,error:{code:`PROVIDER_INVALID_REQUEST`,message:`Image edit requires a non-empty prompt.`}};if(t.model.trim().length===0)return{ok:!1,error:{code:`PROVIDER_INVALID_REQUEST`,message:`Image edit requires a non-empty model.`}};let n=gn(t.image);if(!n.ok)return n;let r={id:e(),role:`user`,content:t.prompt,state:`complete`,parts:[n.value,{type:`text`,text:t.prompt}],timestamp:new Date};return Qn(this.chat.bind(this),[r],t.model)}async composeImage(t){if(t.prompt.trim().length===0)return{ok:!1,error:{code:`PROVIDER_INVALID_REQUEST`,message:`Image compose requires a non-empty prompt.`}};if(t.model.trim().length===0)return{ok:!1,error:{code:`PROVIDER_INVALID_REQUEST`,message:`Image compose requires a non-empty model.`}};if(t.images.length<2)return{ok:!1,error:{code:`PROVIDER_INVALID_REQUEST`,message:`Image compose requires at least two input images.`}};let n=[];for(let e of t.images){let t=gn(e);if(!t.ok)return t;n.push(t.value)}n.push({type:`text`,text:t.prompt});let r={id:e(),role:`user`,content:t.prompt,state:`complete`,parts:n,timestamp:new Date};return Qn(this.chat.bind(this),[r],t.model)}supportsTools(){return!0}validateConfig(){return this.executor?this.executor.validateConfig():!!this.client&&!!this.options&&!!this.options.apiKey}async dispose(){}withProviderCallbacks(e){let t=e?.onTextDelta??this.onTextDelta;return t?{...e,onTextDelta:t}:e}};const er=`GEMINI_API_KEY`,tr=`$ENV:${er}`,L=`gemini-3-flash-preview`,R=`https://ai.google.dev/api/models`,z=`2026-05-04`,nr=[{kind:`api-key`,label:`Google AI Studio API keys`,url:`https://aistudio.google.com/apikey`,sourceUrl:`https://ai.google.dev/gemini-api/docs/api-key`,lastVerifiedAt:`2026-05-08`}];function rr(){return{type:`gemini`,aliases:[`google`],displayName:`Gemini`,description:`Google Gemini API provider`,defaults:{model:L,apiKey:tr},modelCatalog:{status:`fallback`,sourceUrl:R,lastVerifiedAt:z,entries:[{id:L,displayName:`Gemini 3 Flash Preview`,capabilities:[`tools`,`vision`,`json_schema`,`reasoning`,`streaming`],lifecycle:`preview`,sourceUrl:R,lastVerifiedAt:z}]},setupHelpLinks:nr,setupSteps:[{key:`model`,title:`Gemini model`,defaultValue:L},{key:`apiKey`,title:`Gemini API key`,defaultValue:tr,masked:!0}],requiresApiKey:!0,refreshModelCatalog:({profile:e})=>or(e),modelCatalogCacheTtlSeconds:86400,createProvider:e=>new $n({apiKey:ir(e.apiKey),defaultModel:e.model})}}function ir(e){if(!e)throw Error(`Provider gemini requires apiKey`);return e}const ar=`https://generativelanguage.googleapis.com/v1beta/models`;async function or(e,t=lr){let n=await t(e.apiKey?`${ar}?key=${e.apiKey}`:ar);if(!n.ok)return{status:`unavailable`,sourceUrl:R,message:`Gemini model refresh failed: HTTP ${n.status}`};let r=((await n.json()).models??[]).filter(sr).map(cr);return{status:`live`,sourceUrl:R,lastVerifiedAt:new Date().toISOString(),entries:r,message:`Fetched ${r.length} Gemini models`}}function sr(e){return e.supportedGenerationMethods?.includes(`generateContent`)===!0}function cr(e){let t=e.name??``,n=t.startsWith(`models/`)?t.slice(7):t,r=t.includes(`preview`)?`preview`:`active`;return{id:n,displayName:e.displayName??n,lifecycle:r,sourceUrl:R,lastVerifiedAt:z}}async function lr(e,t){let n=await fetch(e);return{ok:n.ok,status:n.status,json:()=>n.json()}}const ur=`<|channel>`;function dr(e){let t=pr(e,{final:!0});return{rawText:e,visibleText:t.visibleParts.join(``),removedReasoning:t.removedReasoning}}var fr=class{buffer=``;emittedVisibleText=``;hasRemovedReasoning=!1;get rawText(){return this.buffer}get removedReasoning(){return this.hasRemovedReasoning}project(e){return e.length===0?``:(this.buffer+=e,this.projectVisibleText({final:!1}))}flush(){return this.projectVisibleText({final:!0})}projectVisibleText(e){let t=pr(this.buffer,e);this.hasRemovedReasoning=this.hasRemovedReasoning||t.removedReasoning;let n=t.visibleParts.join(``),r=n.slice(this.emittedVisibleText.length);return this.emittedVisibleText=n,r}};function pr(e,t){let n={visibleParts:[],removedReasoning:!1},r=0;for(;r<e.length;){let i=e.indexOf(ur,r);if(i===-1){mr(n,e.slice(r),t);break}mr(n,e.slice(r,i),t);let a=i+10,o=e.indexOf(`<channel|>`,a);if(o===-1){t.final&&(n.removedReasoning=!0);break}n.removedReasoning=!0,r=hr(e,a,o)}return n}function mr(e,t,n){if(t.length===0)return;if(n.final){e.visibleParts.push(t);return}let r=gr(t);e.visibleParts.push(t.slice(0,t.length-r))}function hr(e,t,n){let r=e.slice(t,n),i=n+10;if(r.trim().length===0){let t=e.slice(i).match(/^thought(?:\r?\n)*/);return t&&(i+=t[0].length),i}return r.split(/\r?\n/,1)[0]?.trim(),i}function gr(e){let t=Math.min(e.length,9);for(let n=t;n>0;--n)if(ur.startsWith(e.slice(e.length-n)))return n;return 0}const B=`<|"|>`;var _r=class{source;cursor=0;constructor(e){this.source=e}parse(){let e=this.parseObject();if(this.skipWhitespace(),this.cursor===this.source.length)return e}parseObject(){if(!this.consume(`{`))return;let e={};if(this.skipWhitespace(),this.consume(`}`))return e;for(;this.cursor<this.source.length;){let t=this.parseKey();if(!t||!this.consume(`:`))return;let n=this.parseValue();if(n===void 0)return;if(e[t]=n,this.skipWhitespace(),this.consume(`}`))return e;if(!this.consume(`,`))return}}parseArray(){if(!this.consume(`[`))return;let e=[];if(this.skipWhitespace(),this.consume(`]`))return e;for(;this.cursor<this.source.length;){let t=this.parseValue();if(t===void 0)return;if(e.push(t),this.skipWhitespace(),this.consume(`]`))return e;if(!this.consume(`,`))return}}parseValue(){return this.skipWhitespace(),this.source.startsWith(B,this.cursor)?this.parseString():this.source.startsWith(`{`,this.cursor)?this.parseObject():this.source.startsWith(`[`,this.cursor)?this.parseArray():this.consumeLiteral(`true`)?!0:this.consumeLiteral(`false`)?!1:this.consumeLiteral(`null`)?null:this.parseNumber()}parseKey(){if(this.skipWhitespace(),this.source.startsWith(B,this.cursor))return this.parseString();let e=/^[A-Za-z_][A-Za-z0-9_-]*/.exec(this.source.slice(this.cursor));if(e)return this.cursor+=e[0].length,this.skipWhitespace(),e[0]}parseString(){if(!this.consume(B))return;let e=this.source.indexOf(B,this.cursor);if(e===-1)return;let t=this.source.slice(this.cursor,e);return this.cursor=e+5,this.skipWhitespace(),t}parseNumber(){let e=/^-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?/.exec(this.source.slice(this.cursor));if(e)return this.cursor+=e[0].length,this.skipWhitespace(),Number(e[0])}consume(e){return this.skipWhitespace(),this.source.startsWith(e,this.cursor)?(this.cursor+=e.length,this.skipWhitespace(),!0):!1}consumeLiteral(e){return this.source.startsWith(e,this.cursor)?(this.cursor+=e.length,this.skipWhitespace(),!0):!1}skipWhitespace(){for(;/\s/.test(this.source[this.cursor]??``);)this.cursor+=1}};function vr(e){return[`<`]}function yr(e,t,n){return e.indexOf(`<`,t)}function br(e,t){return+!!e.endsWith(`<`)}function xr(e,t){let n=e.indexOf(`>`,t+1);if(n===-1)return;let r=e.slice(t,n+1),i=r.match(/^<\s*([A-Za-z][\w:-]*)([\s/>][\s\S]*?|)>$/);if(!i)return;let a=i[1]??``;return{tagName:a,normalizedName:a.toLowerCase(),rawOpenTag:r,attributes:Tr(i[2]??``),openEnd:n+1,selfClosing:/\/\s*>$/.test(r)}}function Sr(e,t,n){if(t.selfClosing)return{innerText:``,end:t.openEnd,complete:!0};let r=Or(e,t.tagName,t.openEnd);if(r===-1)return{innerText:e.slice(t.openEnd),end:n.final?e.length:t.openEnd-t.rawOpenTag.length,complete:!1};let i=e.indexOf(`>`,r);return{innerText:e.slice(t.openEnd,r),end:i===-1?e.length:i+1,complete:!0}}function Cr(e,t){if(t.selfClosing)return{rawText:t.rawOpenTag,end:t.openEnd};let n=Or(e,t.tagName,t.openEnd);if(n===-1)return{rawText:t.rawOpenTag,end:t.openEnd};let r=e.indexOf(`>`,n),i=r===-1?e.length:r+1;return{rawText:e.slice(t.openEnd-t.rawOpenTag.length,i),end:i}}function wr(e,t){let n=kr(e);return t.find(e=>kr(e)===n)}function Tr(e){let t={},n=/([A-Za-z_][\w:-]*)\s*=\s*(?:"([^"]*)"|'([^']*)')/g,r=n.exec(e);for(;r;){let i=r[1]??``;t[i]=Er(Dr(r[2]??r[3]??``)),r=n.exec(e)}return t}function Er(e){return e===`true`?!0:e===`false`?!1:e===`null`?null:/^-?(?:0|[1-9]\d*)(?:\.\d+)?$/.test(e)?Number(e):e}function Dr(e){return e.replace(/&quot;/g,`"`).replace(/&apos;/g,`'`).replace(/&lt;/g,`<`).replace(/&gt;/g,`>`).replace(/&amp;/g,`&`)}function Or(e,t,n){return e.toLowerCase().indexOf(`</${t.toLowerCase()}>`,n)}function kr(e){return e.replace(/[^a-z0-9]/gi,``).toLowerCase()}function Ar(e,t){let n=jr(e,t);return n?[n]:[]}function jr(e,t){let n=e.indexOf(`>`),r=e.lastIndexOf(`</`);if(n===-1||r===-1||r<=n)return;let i=Mr(e.slice(n+1,r).trim());if(!Nr(i))return;let a=i.command,o=i.args;if(typeof a!=`string`||!Nr(o))return;let s=wr(a,t);if(s)return{toolName:s,args:o}}function Mr(e){try{return JSON.parse(e)}catch{return}}function Nr(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Pr(e,t,n){let r=Wr(),i=vr(t.toolNames),a=0;for(;a<e.length;){let o=yr(e,a,i);if(o===-1){Br(r,e.slice(a),n,i);break}Br(r,e.slice(a,o),n,i);let s=Fr(e,o,r,t,n);if(!s.completed)break;a=s.cursor}return{visibleText:r.visibleParts.join(``),toolCalls:r.toolCalls,rawToolCallTextParts:r.rawToolCallTextParts,removedToolCallText:r.removedToolCallText}}function Fr(e,t,n,r,i){let a=xr(e,t);if(!a)return Ir(e,t,n,i);let o=wr(a.tagName,r.toolNames);return o?zr(e,a,o,n,r):Lr(e,t,a,n,r,i)}function Ir(e,t,n,r){return r.final?(n.visibleParts.push(e[t]??``),{cursor:t+1,completed:!0}):{cursor:t,completed:!1}}function Lr(e,t,n,r,i,a){let o=Sr(e,n,a);if(!o.complete&&!a.final)return{cursor:t,completed:!1};let s=e.slice(t,o.end),c=r.rawToolCallTextParts.length;return r.removedToolCallText=!0,Hr(r,s,i),Gr(r,Rr(o,r,i)),r.rawToolCallTextParts.length===c&&r.rawToolCallTextParts.push(s),{cursor:o.end,completed:!0}}function Rr(e,t,n){return Pr(e.innerText,{...n,startCallIndex:Kr(t,n)},{final:!0})}function zr(e,t,n,r,i){let a=Cr(e,t);return Vr(r,n,t.attributes,a.rawText,i),{cursor:a.end,completed:!0}}function Br(e,t,n,r){if(t.length===0)return;if(n.final){e.visibleParts.push(t);return}let i=br(t,r);e.visibleParts.push(t.slice(0,t.length-i))}function Vr(e,t,n,r,i){Object.keys(n).length!==0&&(e.toolCalls.push(Ur(t,n,i,e)),e.rawToolCallTextParts.push(r),e.removedToolCallText=!0)}function Hr(e,t,n){let r=Ar(t,n.toolNames);for(let i of r)e.toolCalls.push(Ur(i.toolName,i.args,n,e)),e.rawToolCallTextParts.push(t)}function Ur(e,t,n,r){return{id:`${n.callIdPrefix??`gemma_call`}_${Kr(r,n)}`,type:`function`,function:{name:e,arguments:JSON.stringify(t)}}}function Wr(){return{visibleParts:[],toolCalls:[],rawToolCallTextParts:[],removedToolCallText:!1}}function Gr(e,t){e.toolCalls.push(...t.toolCalls),e.rawToolCallTextParts.push(...t.rawToolCallTextParts),e.removedToolCallText=e.removedToolCallText||t.removedToolCallText}function Kr(e,t){return(t.startCallIndex??0)+e.toolCalls.length}const qr=`<|tool_call>`,Jr=`gemma_call`;function V(e){if(!(!e||e.length===0))return new Xr({toolNames:e.map(e=>e.name)})}function Yr(e,t){return ri(e,Zr(e,t,{final:!0}))}var Xr=class{options;buffer=``;emittedVisibleText=``;emittedRawToolCallText=``;emittedToolCallIds=new Set;constructor(e){this.options=e}project(e){return e.length===0?ii():(this.buffer+=e,this.projectVisibleText({final:!1}))}flush(){return this.projectVisibleText({final:!0})}projectVisibleText(e){let t=Zr(this.buffer,this.options,e),n=t.visibleParts.join(``),r=n.slice(this.emittedVisibleText.length),i=t.rawToolCallTextParts.join(``),a=i.slice(this.emittedRawToolCallText.length);return this.emittedVisibleText=n,this.emittedRawToolCallText=i,{visibleText:r,toolCalls:t.toolCalls.filter(e=>this.emittedToolCallIds.has(e.id)?!1:(this.emittedToolCallIds.add(e.id),!0)),removedToolCallText:a.length>0,...a.length>0&&{rawToolCallText:a}}}};function Zr(e,t,n){let r=Qr(e,t,n),i=Pr(r.visibleParts.join(``),{toolNames:t.toolNames,callIdPrefix:t.callIdPrefix??Jr,startCallIndex:r.toolCalls.length},n);return{visibleParts:[i.visibleText],toolCalls:[...r.toolCalls,...i.toolCalls],rawToolCallTextParts:[...r.rawToolCallTextParts,...i.rawToolCallTextParts],removedToolCallText:r.removedToolCallText||i.removedToolCallText}}function Qr(e,t,n){let r=ei(),i=new Set(t.toolNames),a=0,o=0;for(;a<e.length;){let s=e.indexOf(qr,a);if(s===-1){ti(r,e.slice(a),n);break}ti(r,e.slice(a,s),n);let c=s+12,l=e.indexOf(`<tool_call|>`,c);if(l===-1){n.final&&r.visibleParts.push(e.slice(s));break}let u=e.slice(s,l+12),d=$r(e.slice(c,l),i,t,o);d?(r.toolCalls.push(d),r.rawToolCallTextParts.push(u),r.removedToolCallText=!0,o+=1):r.visibleParts.push(u),a=l+12}return r}function $r(e,t,n,r){let i=e.trim();if(!i.startsWith(`call:`))return;let a=i.slice(5).trimStart(),o=a.indexOf(`{`);if(o<=0)return;let s=a.slice(0,o).trim();if(!t.has(s))return;let c=new _r(a.slice(o)).parse();if(c)return{id:`${n.callIdPrefix??Jr}_${r}`,type:`function`,function:{name:s,arguments:JSON.stringify(c)}}}function ei(){return{visibleParts:[],toolCalls:[],rawToolCallTextParts:[],removedToolCallText:!1}}function ti(e,t,n){if(t.length===0)return;if(n.final){e.visibleParts.push(t);return}let r=ni(t);e.visibleParts.push(t.slice(0,t.length-r))}function ni(e){let t=Math.min(e.length,11);for(let n=t;n>0;--n)if(qr.startsWith(e.slice(e.length-n)))return n;return 0}function ri(e,t){return{rawText:e,visibleText:t.visibleParts.join(``),toolCalls:t.toolCalls,removedToolCallText:t.removedToolCallText,...t.rawToolCallTextParts.length>0&&{rawToolCallText:t.rawToolCallTextParts.join(``)}}}function ii(){return{visibleText:``,toolCalls:[],removedToolCallText:!1}}function ai(e,t,n){let r=e.choices?.[0]?.message.content||``,i=new C({logger:t,...n?.tools&&{toolCallTextProjector:V(n.tools)}}).parseResponse(e),a=dr(i.content??``);return oi({...i,content:a.visibleText},r,a.removedReasoning)}function oi(e,t,n){return n?{...e,metadata:{...e.metadata??{},gemmaReasoningFiltered:!0,gemmaRawContent:t}}:e}function si(t,n){return{id:e(),role:`assistant`,content:t,state:`complete`,timestamp:new Date,metadata:{isStreamChunk:!0,isComplete:n===`stop`||n===`tool_calls`}}}function ci(t,n){return{id:e(),role:`assistant`,content:``,toolCalls:t,state:`complete`,timestamp:new Date,metadata:{isStreamChunk:!0,isComplete:n===`stop`||n===`tool_calls`}}}function li(e,t){return{reasoningProjector:new fr,responseParser:new C({logger:e}),...t&&{toolCallProjector:V(t)}}}function ui(e,t){let n=e.choices?.[0];if(!n)return[];let r=t.responseParser.parseStreamingChunk(e);return r&&o(r)&&r.toolCalls?.length?[r]:fi(n.delta.content||``,n.finish_reason,t)}function di(e){let t=fi(``,null,e,!0),n=e.reasoningProjector.flush();return n.length>0&&t.push(si(n,null)),t}function fi(e,t,n,r=!1){let i=r?n.toolCallProjector?.flush():n.toolCallProjector?.project(e),a=[];i?.toolCalls.length&&a.push(ci(i.toolCalls,t));let o=i?.visibleText??e,s=n.reasoningProjector.project(o);return s.length>0&&a.push(si(s,t)),a}var pi=class extends n{name=`gemma`;version=`1.0.0`;client;options;onTextDelta;constructor(e){if(super(e.logger||i),this.options=e,e.executor&&(this.executor=e.executor),!this.executor)if(e.client)this.client=e.client;else if(e.apiKey)this.client=new s({apiKey:e.apiKey,...e.baseURL!==void 0&&{baseURL:e.baseURL},...e.timeout!==void 0&&{timeout:e.timeout}});else throw Error(`Either Gemma client, apiKey, or executor is required`)}async chat(e,t){if(this.validateMessages(e),this.validateNativeWebTools(t?.nativeWebTools),this.executor)try{return await this.executeViaExecutorOrDirect(e,t)}catch(e){throw this.logger.error(`Gemma Provider executor chat error:`,e instanceof Error?e.message:String(e)),e}if(!this.client)throw Error(`Gemma client not available. Either provide a client/apiKey or use an executor.`);try{let n=this.buildRequestParams(e,t),r=t?.onTextDelta??this.onTextDelta;if(r)return await this.chatWithStreamingAssembly({...n,stream:!0},{...t,onTextDelta:r});t?.onProviderNativeRawPayload?.({provider:`gemma`,apiSurface:`chat-completions`,payloadKind:`request`,payload:n});let i=await this.client.chat.completions.create(n);return t?.onProviderNativeRawPayload?.({provider:`gemma`,apiSurface:`chat-completions`,payloadKind:`response`,payload:i}),ai(i,this.logger,t)}catch(e){let t=e.message||`Gemma API request failed`;throw Error(`Gemma chat failed: ${t}`)}}async*chatStream(e,t){if(this.validateMessages(e),this.validateNativeWebTools(t?.nativeWebTools),this.executor)try{yield*this.executeStreamViaExecutorOrDirect(e,t);return}catch(e){throw this.logger.error(`Gemma Provider executor stream error:`,e instanceof Error?e.message:String(e)),e}if(!this.client)throw Error(`Gemma client not available. Either provide a client/apiKey or use an executor.`);try{let n=this.buildStreamingRequestParams(e,t);t?.onProviderNativeRawPayload?.({provider:`gemma`,apiSurface:`chat-completions`,payloadKind:`request`,payload:n});let r=await this.client.chat.completions.create(n),i=li(this.logger,t?.tools),a=T(r,{provider:`gemma`,apiSurface:`chat-completions`,onProviderNativeRawPayload:t?.onProviderNativeRawPayload});for await(let e of this.streamWithAbort(a,t?.signal))for(let t of ui(e,i))yield t;for(let e of di(i))yield e}catch(e){let t=e.message||`Gemma API request failed`;throw Error(`Gemma stream failed: ${t}`)}}supportsTools(){return!0}getCapabilities(){return{functionCalling:{supported:!0},nativeWebTools:{webSearch:{supported:!1,enabled:!1,source:`openai-compatible-chat-completions`,reason:`Gemma OpenAI-compatible endpoints support declared function tools, not provider-native web search.`},webFetch:{supported:!1,enabled:!1,source:`openai-compatible-chat-completions`,reason:`Gemma OpenAI-compatible endpoints support declared function tools, not provider-native web fetch.`}}}}validateConfig(){return!!this.client&&!!this.options}async dispose(){}validateMessages(e){super.validateMessages(e);for(let t of e)if(t.role===`assistant`){let e=t;if(e.toolCalls&&e.toolCalls.length>0&&e.content===``)continue}}buildRequestParams(e,t){let n=t?.model??this.options.defaultModel;if(!n)throw Error(`Model is required in chat options. Please specify a model in defaultModel configuration.`);return{model:n,messages:x(e),...t?.temperature!==void 0&&{temperature:t.temperature},...t?.maxTokens!==void 0&&{max_tokens:t.maxTokens},...t?.tools&&{tools:S(t.tools),tool_choice:`auto`}}}buildStreamingRequestParams(e,t){return{...this.buildRequestParams(e,t),stream:!0}}async chatWithStreamingAssembly(e,t){if(!this.client)throw Error(`Gemma client not available. Either provide a client/apiKey or use an executor.`);try{t.onProviderNativeRawPayload?.({provider:`gemma`,apiSurface:`chat-completions`,payloadKind:`request`,payload:e});let n=await this.client.chat.completions.create(e,t.signal?{signal:t.signal}:void 0),r=new fr;return oi(await w({stream:T(n,{provider:`gemma`,apiSurface:`chat-completions`,onProviderNativeRawPayload:t.onProviderNativeRawPayload}),onTextDelta:t.onTextDelta,signal:t.signal,textProjector:e=>r.project(e),textProjectorFlush:()=>r.flush(),toolCallTextProjector:V(t.tools)}),r.rawText,r.removedReasoning)}catch(e){let t=e.message||`Gemma streaming request failed`;throw Error(`Gemma stream failed: ${t}`)}}};const H=`supergemma4-26b-uncensored-v2`,U=`lm-studio`,mi=`http://localhost:1234/v1`,hi=`https://ai.google.dev/gemma`,gi=`2026-05-04`,_i=`https://lmstudio.ai/docs/developer`,vi=[{kind:`official`,label:`LM Studio local API documentation`,url:_i,sourceUrl:_i,lastVerifiedAt:`2026-05-08`}],yi={status:`fallback`,sourceUrl:hi,lastVerifiedAt:gi,entries:[{id:H,displayName:`SuperGemma 4 26B`,capabilities:[`tools`,`streaming`],lifecycle:`active`,sourceUrl:hi,lastVerifiedAt:gi}]};function bi(){return{type:`gemma`,displayName:`Gemma`,description:`Gemma-family local models through an OpenAI-compatible endpoint`,defaults:{model:H,apiKey:U,baseURL:mi},modelCatalog:yi,setupHelpLinks:vi,setupSteps:[{key:`baseURL`,title:`Gemma OpenAI-compatible base URL`,defaultValue:mi},{key:`model`,title:`Gemma model`,defaultValue:H},{key:`apiKey`,title:`Gemma OpenAI-compatible API key`,defaultValue:U,masked:!0}],requiresApiKey:!0,probeProfile:E,createProvider:e=>new pi({apiKey:xi(e.apiKey),...e.baseURL!==void 0&&{baseURL:e.baseURL},...e.timeout!==void 0&&{timeout:e.timeout},defaultModel:e.model})}}function xi(e){if(!e)throw Error(`Provider gemma requires apiKey`);return e}async function Si(e,t){let n=new AbortController,r=setTimeout(()=>n.abort(),e.timeoutMs??6e4);try{let r=await fetch(Ci(e.baseUrl,t.path),{method:t.method,headers:{Authorization:`Bearer ${e.apiKey}`,"Content-Type":`application/json`,...e.defaultHeaders??{}},body:t.body,signal:n.signal}),i=await r.text();if(!r.ok)return Ei(r.status,i);let a=wi(i);return a.ok?{ok:!0,value:a.value}:a}catch(e){return e instanceof Error&&e.name===`AbortError`?{ok:!1,error:{code:`PROVIDER_TIMEOUT`,message:`Bytedance media request timed out.`}}:{ok:!1,error:{code:`PROVIDER_UPSTREAM_ERROR`,message:e instanceof Error?e.message:`Bytedance media request failed.`}}}finally{clearTimeout(r)}}function Ci(e,t){return`${e.endsWith(`/`)?e.slice(0,-1):e}${t.startsWith(`/`)?t:`/${t}`}`}function wi(e){try{return{ok:!0,value:JSON.parse(e)}}catch{return{ok:!1,error:{code:`PROVIDER_UPSTREAM_ERROR`,message:`Bytedance response is not valid JSON.`}}}}function Ti(e){try{return JSON.parse(e)}catch{return{message:e}}}function Ei(e,t){let n=Ti(t);return e===401||e===403?{ok:!1,error:{code:`PROVIDER_AUTH_ERROR`,message:n.message??`Bytedance authentication failed.`,details:n.details}}:e===404?{ok:!1,error:{code:`PROVIDER_JOB_NOT_FOUND`,message:n.message??`Bytedance video job was not found.`,details:n.details}}:e===409?{ok:!1,error:{code:`PROVIDER_JOB_NOT_CANCELLABLE`,message:n.message??`Bytedance video job cannot be cancelled in current state.`,details:n.details}}:e===429?{ok:!1,error:{code:`PROVIDER_RATE_LIMITED`,message:n.message??`Bytedance rate limit exceeded.`,details:n.details}}:e>=400&&e<500?{ok:!1,error:{code:`PROVIDER_INVALID_REQUEST`,message:n.message??`Bytedance rejected request payload.`,details:n.details}}:{ok:!1,error:{code:`PROVIDER_UPSTREAM_ERROR`,message:n.message??`Bytedance upstream request failed.`,details:n.details}}}function Di(e){if(e.id.trim().length===0)return{ok:!1,error:{code:`PROVIDER_UPSTREAM_ERROR`,message:`Bytedance video job response is missing task id.`}};let t=Oi(e.status);return t.ok?{ok:!0,value:{jobId:e.id,status:t.value,output:ji(e),error:t.value===`failed`&&e.error_message?{code:`PROVIDER_UPSTREAM_ERROR`,message:e.error_message}:void 0,updatedAt:Ai(e.updated_at??e.created_at)}}:t}function Oi(e){let t=e.trim().toLowerCase();return t===`queued`||t===`pending`||t===`submitted`?{ok:!0,value:`queued`}:t===`running`||t===`processing`||t===`in_progress`?{ok:!0,value:`running`}:t===`succeeded`||t===`success`||t===`completed`?{ok:!0,value:`succeeded`}:t===`failed`||t===`error`?{ok:!0,value:`failed`}:t===`cancelled`||t===`canceled`?{ok:!0,value:`cancelled`}:{ok:!1,error:{code:`PROVIDER_UPSTREAM_ERROR`,message:`Unexpected video job status from Bytedance: ${e}`}}}function ki(e){if(typeof e!=`string`||e.trim().length===0)return{ok:!0,value:`queued`};let t=e.trim().toLowerCase();return t===`queued`||t===`pending`||t===`submitted`?{ok:!0,value:`queued`}:t===`running`||t===`processing`||t===`in_progress`?{ok:!0,value:`running`}:{ok:!1,error:{code:`PROVIDER_UPSTREAM_ERROR`,message:`Unexpected createVideo status from Bytedance: ${e}`}}}function Ai(e){if(typeof e==`number`&&Number.isFinite(e)){let t=e>0xe8d4a51000?e:e*1e3,n=new Date(t);if(!Number.isNaN(n.getTime()))return n.toISOString()}if(typeof e==`string`&&e.trim().length>0){let t=Number(e);if(Number.isFinite(t))return Ai(t);let n=new Date(e);if(!Number.isNaN(n.getTime()))return n.toISOString()}return new Date().toISOString()}function ji(e){let t=typeof e.video_url==`string`&&e.video_url.trim().length>0?e.video_url:void 0,n=typeof e.content?.video_url==`string`&&e.content.video_url.trim().length>0?e.content.video_url:void 0,r=t??n;if(typeof r==`string`)return{kind:`uri`,uri:r,mimeType:e.mime_type,bytes:e.bytes}}var Mi=class{options;constructor(e){this.options=e}async createVideo(e){if(e.prompt.trim().length===0)return W(`Video generation requires non-empty prompt.`);if(e.model.trim().length===0)return W(`Video generation requires non-empty model.`);if(typeof e.seed==`number`)return W(`ModelArk Seedance provider does not support seed field in current contract.`);let t=this.buildContentPayload(e.prompt,e.inputImages);if(!t.ok)return t;let n={model:e.model.trim(),content:t.value,duration:e.durationSeconds,ratio:e.aspectRatio},r=await Si(this.options,{path:this.options.createVideoPath??`/contents/generations/tasks`,method:`POST`,body:JSON.stringify(n)});if(!r.ok)return r;if(r.value.id.trim().length===0)return Pi(`Bytedance createVideo response is missing task id.`);let i=ki(r.value.status);return i.ok?{ok:!0,value:{jobId:r.value.id,status:i.value,createdAt:Ai(r.value.created_at)}}:i}async getVideoJob(e){if(e.trim().length===0)return W(`Video job lookup requires non-empty jobId.`);let t=await Si(this.options,{path:Ni(this.options.getVideoTaskPathTemplate??`/contents/generations/tasks/{taskId}`,e),method:`GET`});return t.ok?Di(t.value):t}async cancelVideoJob(e){if(e.trim().length===0)return W(`Video job cancellation requires non-empty jobId.`);let t=this.options.cancelVideoTaskMethod??`DELETE`,n=await Si(this.options,{path:Ni(this.options.cancelVideoTaskPathTemplate??`/contents/generations/tasks/{taskId}`,e),method:t});return n.ok?Di(n.value):n}buildContentPayload(e,t){let n=e.trim();if(n.length===0)return W(`Video generation requires non-empty prompt.`);let r=[{type:`text`,text:n}];if(Array.isArray(t))for(let e of t){let t=Fi(e);if(!t.ok)return t;r.push({type:`image_url`,image_url:{url:t.value}})}return{ok:!0,value:r}}};function Ni(e,t){return e.replace(`{taskId}`,encodeURIComponent(t))}function W(e){return{ok:!1,error:{code:`PROVIDER_INVALID_REQUEST`,message:e}}}function Pi(e){return{ok:!1,error:{code:`PROVIDER_UPSTREAM_ERROR`,message:e}}}function Fi(e){return e.kind===`uri`?e.uri.trim().length===0?W(`Image uri must be non-empty.`):{ok:!0,value:e.uri}:e.data.trim().length===0?W(`Inline image data must be non-empty.`):e.mimeType.trim().length===0?W(`Inline image mimeType must be non-empty.`):{ok:!0,value:`data:${e.mimeType};base64,${e.data}`}}const Ii={singapore:`https://dashscope-intl.aliyuncs.com/compatible-mode/v1`,usVirginia:`https://dashscope-us.aliyuncs.com/compatible-mode/v1`,beijing:`https://dashscope.aliyuncs.com/compatible-mode/v1`,hongKong:`https://cn-hongkong.dashscope.aliyuncs.com/compatible-mode/v1`},Li={singapore:`https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1`,usVirginia:`https://dashscope-us.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1`,beijing:`https://dashscope.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1`},G=`qwen-plus`,Ri=`DASHSCOPE_API_KEY`,zi=`$ENV:${Ri}`,K=Ii.singapore,Bi=Li.singapore,q=`https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope`,J=`2026-05-04`;function Y(e){let t=[];return(e?.webSearch===!0||e?.webFetch===!0)&&t.push(`web_search`),e?.webFetch===!0&&t.push(`web_extractor`),t}function Vi(e){return Y(e).length>0}function Hi(e){return e.flatMap(e=>Gi(e))}function Ui(e,t){let n=[...e.map(e=>({type:e})),...Wi(t)];return n.length>0?n:void 0}function Wi(e){return e?.map(e=>({type:`function`,name:e.name,description:e.description,parameters:e.parameters}))??[]}function Gi(e){return e.role===`user`?[X(`user`,e.content)]:e.role===`system`?[X(`system`,e.content)]:e.role===`tool`?[{type:`function_call_output`,call_id:e.toolCallId,output:e.content||``}]:Ki(e)}function Ki(e){let t=[];e.content&&e.content.length>0&&t.push(X(`assistant`,e.content));for(let n of e.toolCalls??[])t.push({type:`function_call`,call_id:n.id,name:n.function.name,arguments:n.function.arguments});return t.length===0&&t.push(X(`assistant`,``)),t}function X(e,t){return{role:e,content:t??``}}async function*qi(e,t){let n=e[Symbol.asyncIterator]();try{for(;!t?.aborted;){let e=await Ji(n,t);if(e.done||t?.aborted)break;yield e.value}}finally{t?.aborted&&await n.return?.()}}async function Ji(e,t){if(!t)return e.next();if(t.aborted)return{done:!0,value:void 0};let n,r=new Promise(e=>{n=()=>e({done:!0,value:void 0}),t.addEventListener(`abort`,n,{once:!0})});try{return await Promise.race([e.next(),r])}finally{n&&t.removeEventListener(`abort`,n)}}function Yi(e,t){let n=e.output??[],r=Z(n,e.usage),i=sa(n);return ea({content:e.output_text??ua(n),toolCalls:i,response:e,usage:r,enabledBuiltInTools:t.enabledBuiltInTools})}async function Xi(e){let t={textParts:[],toolCalls:[],usage:aa()};for await(let n of qi(e.stream,e.signal))Zi(t,n,e.onTextDelta);return t.completedResponse===void 0?ea({content:t.textParts.join(``),toolCalls:t.toolCalls,usage:t.usage,enabledBuiltInTools:e.enabledBuiltInTools}):Qi(t,e.enabledBuiltInTools)}function Zi(e,t,n){if(t.type===`response.output_text.delta`){e.textParts.push(t.delta),n?.(t.delta);return}if(t.type===`response.completed`){e.completedResponse=t.response,ia(e.usage,Z(t.response.output??[],t.response.usage));return}if(t.type===`response.output_item.done`){$i(e,t.item);return}if(t.type===`response.web_search_call.completed`){e.usage.webSearchCalls+=1;return}if(t.type===`response.error`||t.type===`response.failed`)throw Error(`Qwen Responses API failed: ${da(t)}`)}function Qi(e,t){let n=e.completedResponse;if(n===void 0)throw Error(`Qwen Responses stream completed without response metadata`);let r=n.output??[],i=sa(r),a=e.textParts.length>0?e.textParts.join(``):n.output_text??ua(r),o=Z(r,n.usage);return ia(o,e.usage),ea({content:a,toolCalls:i.length>0?i:e.toolCalls,response:n,usage:o,enabledBuiltInTools:t})}function $i(e,t){if(t.type===`function_call`){ca(t)&&e.toolCalls.push(la(t));return}ia(e.usage,Z([t],void 0))}function ea(t){return{id:e(),role:`assistant`,content:t.content,state:`complete`,timestamp:new Date,...t.toolCalls.length>0&&{toolCalls:t.toolCalls},...t.response?.usage!==void 0&&{usage:{promptTokens:t.response.usage.input_tokens??0,completionTokens:t.response.usage.output_tokens??0,totalTokens:t.response.usage.total_tokens??0}},metadata:ta(t.enabledBuiltInTools,t.usage,t.response)}}function ta(e,t,n){let r=na(t);return{providerToolMode:`qwen_responses`,providerBuiltInToolsEnabled:[...e],...r.length>0&&{providerBuiltInToolsUsed:r},qwenWebSearchCalls:t.webSearchCalls,qwenWebExtractorCalls:t.webExtractorCalls,...t.unsupportedToolTypes.size>0&&{qwenUnsupportedProviderToolTypes:[...t.unsupportedToolTypes].sort()},...n?.id!==void 0&&{responseId:n.id},...n?.model!==void 0&&{model:n.model},...n?.status!==void 0&&{finishReason:n.status}}}function na(e){let t=[];return e.webSearchCalls>0&&t.push(`web_search`),e.webExtractorCalls>0&&t.push(`web_extractor`),t}function Z(e,t){let n=aa();for(let t of e)t.type===`web_search_call`?n.webSearchCalls+=1:t.type===`web_extractor_call`?n.webExtractorCalls+=1:oa(t.type)&&n.unsupportedToolTypes.add(t.type);return ra(n,t),n}function ra(e,t){let n=t?.x_tools;if(n!==void 0){e.webSearchCalls=Math.max(e.webSearchCalls,n.web_search?.count??0),e.webExtractorCalls=Math.max(e.webExtractorCalls,n.web_extractor?.count??0);for(let t of Object.keys(n))t!==`web_search`&&t!==`web_extractor`&&e.unsupportedToolTypes.add(t)}}function ia(e,t){e.webSearchCalls=Math.max(e.webSearchCalls,t.webSearchCalls),e.webExtractorCalls=Math.max(e.webExtractorCalls,t.webExtractorCalls);for(let n of t.unsupportedToolTypes)e.unsupportedToolTypes.add(n)}function aa(){return{webSearchCalls:0,webExtractorCalls:0,unsupportedToolTypes:new Set}}function oa(e){return e.endsWith(`_call`)&&e!==`function_call`}function sa(e){return e.filter(ca).map(e=>la(e))}function ca(e){return e.type===`function_call`&&`call_id`in e&&`name`in e&&`arguments`in e}function la(e){return{id:e.call_id,type:`function`,function:{name:e.name,arguments:e.arguments}}}function ua(e){return e.filter(e=>e.type===`message`).flatMap(e=>e.content).map(e=>e.text).join(``)}function da(e){return e.message??e.error?.message??e.response?.error?.message??`unknown error`}async function fa(e){let t=e.chatOptions?.onTextDelta??e.onTextDelta;if(t)return ma({...e,chatOptions:{...e.chatOptions,onTextDelta:t}});if(!e.client)throw Error(`Qwen Responses client not available for built-in web tools.`);try{let t=ha(e);e.chatOptions?.onProviderNativeRawPayload?.({provider:`qwen`,apiSurface:`responses`,payloadKind:`request`,payload:t});let n=await e.client.responses.create(t,e.chatOptions?.signal?{signal:e.chatOptions.signal}:void 0);return e.chatOptions?.onProviderNativeRawPayload?.({provider:`qwen`,apiSurface:`responses`,payloadKind:`response`,payload:n}),Yi(n,{enabledBuiltInTools:Y(e.builtInWebTools)})}catch(e){let t=e.message||`Qwen Responses API request failed`;throw Error(`Qwen responses failed: ${t}`)}}async function*pa(e){let t=[],n=await ma({...e,chatOptions:{...e.chatOptions,onTextDelta:n=>{e.chatOptions?.onTextDelta?.(n),t.push(_a(n))}}});for(let e of t)yield e;yield{...n,content:``,metadata:{...n.metadata,isStreamChunk:!0,isComplete:!0}}}async function ma(e){if(!e.client)throw Error(`Qwen Responses client not available for built-in web tools.`);try{let t=ga(e);return e.chatOptions?.onProviderNativeRawPayload?.({provider:`qwen`,apiSurface:`responses`,payloadKind:`request`,payload:t}),Xi({stream:T(await e.client.responses.create(t,e.chatOptions?.signal?{signal:e.chatOptions.signal}:void 0),{provider:`qwen`,apiSurface:`responses`,onProviderNativeRawPayload:e.chatOptions?.onProviderNativeRawPayload}),enabledBuiltInTools:Y(e.builtInWebTools),onTextDelta:e.chatOptions?.onTextDelta,signal:e.chatOptions?.signal})}catch(e){let t=e.message||`Qwen Responses streaming request failed`;throw Error(`Qwen responses stream failed: ${t}`)}}function ha(e){let t=e.chatOptions?.model??e.defaultModel;if(!t)throw Error(`Model is required in chat options. Please specify a model in defaultModel configuration.`);let n=Ui(Y(e.builtInWebTools),e.chatOptions?.tools);return{model:t,input:Hi(e.messages),...n!==void 0&&{tools:n},...e.chatOptions?.temperature!==void 0&&{temperature:e.chatOptions.temperature},...e.chatOptions?.maxTokens!==void 0&&{max_output_tokens:e.chatOptions.maxTokens},...e.builtInWebTools?.enableThinking!==void 0&&{enable_thinking:e.builtInWebTools.enableThinking}}}function ga(e){return{...ha(e),stream:!0}}function _a(t){return{id:e(),role:`assistant`,content:t,state:`complete`,timestamp:new Date,metadata:{isStreamChunk:!0,isComplete:!1}}}const Q=`qwen-responses`;function va(e){let t=e.builtInWebTools,n=t?.webSearch===!0||t?.webFetch===!0,r=t?.webFetch===!0;return{functionCalling:{supported:!0},nativeWebTools:{webSearch:n?{supported:!0,enabled:!0,source:Q}:{supported:!0,enabled:!1,source:Q,reason:`Enable builtInWebTools.webSearch or builtInWebTools.webFetch.`},webFetch:r?{supported:!0,enabled:!0,source:Q}:{supported:!0,enabled:!1,source:Q,reason:`Enable builtInWebTools.webFetch.`}}}}async function ya(e,t,n){try{return n.onProviderNativeRawPayload?.({provider:`qwen`,apiSurface:`chat-completions`,payloadKind:`request`,payload:t}),w({stream:T(await e.chat.completions.create(t,n.signal?{signal:n.signal}:void 0),{provider:`qwen`,apiSurface:`chat-completions`,onProviderNativeRawPayload:n.onProviderNativeRawPayload}),onTextDelta:n.onTextDelta,signal:n.signal})}catch(e){let t=e.message||`Qwen streaming request failed`;throw Error(`Qwen stream failed: ${t}`)}}var ba=class extends n{name=`qwen`;version=`1.0.0`;client;responsesClient;options;responseParser;onTextDelta;constructor(e){if(super(e.logger||i),this.options=e,e.executor&&(this.executor=e.executor),!this.executor)if(e.client)this.client=e.client,this.responsesClient=e.client;else if(e.apiKey)this.client=new s({apiKey:e.apiKey,baseURL:e.baseURL??K,...e.timeout!==void 0&&{timeout:e.timeout}}),this.responsesClient=new s({apiKey:e.apiKey,baseURL:e.responsesBaseURL??Bi,...e.timeout!==void 0&&{timeout:e.timeout}});else throw Error(`Either Qwen client, apiKey, or executor is required`);this.responseParser=new C({logger:this.logger})}async chat(e,t){return this.validateMessages(e),this.validateNativeWebTools(t?.nativeWebTools),this.executor?this.chatViaExecutor(e,t):this.shouldUseResponsesApi()?this.chatViaResponsesApi(e,t,this.getResponsesClient()):this.chatViaChatCompletions(e,t,this.getClient())}async chatViaExecutor(e,t){try{return await this.executeViaExecutorOrDirect(e,t)}catch(e){throw this.logger.error(`Qwen Provider executor chat error:`,e instanceof Error?e.message:String(e)),e}}async chatViaResponsesApi(e,t,n){return this.validateTools(t?.tools),fa({client:n,messages:e,chatOptions:t,defaultModel:this.options.defaultModel,builtInWebTools:this.options.builtInWebTools,onTextDelta:this.onTextDelta})}async chatViaChatCompletions(e,t,n){try{let r=this.buildRequestParams(e,t),i=t?.onTextDelta??this.onTextDelta;if(i)return ya(n,{...r,stream:!0},{...t,onTextDelta:i});t?.onProviderNativeRawPayload?.({provider:`qwen`,apiSurface:`chat-completions`,payloadKind:`request`,payload:r});let a=await n.chat.completions.create(r);return t?.onProviderNativeRawPayload?.({provider:`qwen`,apiSurface:`chat-completions`,payloadKind:`response`,payload:a}),this.responseParser.parseResponse(a)}catch(e){let t=e.message||`Qwen API request failed`;throw Error(`Qwen chat failed: ${t}`)}}async*chatStream(e,t){if(this.validateMessages(e),this.validateNativeWebTools(t?.nativeWebTools),this.executor)try{yield*this.executeStreamViaExecutorOrDirect(e,t);return}catch(e){throw this.logger.error(`Qwen Provider executor stream error:`,e instanceof Error?e.message:String(e)),e}if(!this.client)throw Error(`Qwen client not available. Either provide a client/apiKey or use an executor.`);if(this.shouldUseResponsesApi()){this.validateTools(t?.tools),yield*pa({client:this.responsesClient,messages:e,chatOptions:t,defaultModel:this.options.defaultModel,builtInWebTools:this.options.builtInWebTools,onTextDelta:this.onTextDelta});return}try{let n=this.buildStreamingRequestParams(e,t);t?.onProviderNativeRawPayload?.({provider:`qwen`,apiSurface:`chat-completions`,payloadKind:`request`,payload:n});let r=T(await this.client.chat.completions.create(n),{provider:`qwen`,apiSurface:`chat-completions`,onProviderNativeRawPayload:t?.onProviderNativeRawPayload});for await(let e of this.streamWithAbort(r,t?.signal)){let t=this.responseParser.parseStreamingChunk(e);t&&(yield t)}}catch(e){let t=e.message||`Qwen API request failed`;throw Error(`Qwen stream failed: ${t}`)}}supportsTools(){return!0}getCapabilities(){return va(this.options)}validateConfig(){return!!this.client&&!!this.options&&(!this.shouldUseResponsesApi()||!!this.responsesClient)}async dispose(){}buildRequestParams(e,t){this.validateTools(t?.tools);let n=t?.model??this.options.defaultModel;if(!n)throw Error(`Model is required in chat options. Please specify a model in defaultModel configuration.`);return{model:n,messages:x(e),...t?.temperature!==void 0&&{temperature:t.temperature},...t?.maxTokens!==void 0&&{max_tokens:t.maxTokens},...t?.tools&&{tools:S(t.tools),tool_choice:`auto`}}}buildStreamingRequestParams(e,t){return{...this.buildRequestParams(e,t),stream:!0}}shouldUseResponsesApi(){return Vi(this.options.builtInWebTools)}getClient(){if(!this.client)throw Error(`Qwen client not available. Either provide a client/apiKey or use an executor.`);return this.client}getResponsesClient(){if(!this.responsesClient)throw Error(`Qwen Responses client not available for built-in web tools.`);return this.responsesClient}};async function xa(e,t=Ta){let n=await t(`${wa(e.baseURL??K)}/models`,Sa(e.apiKey));if(!n.ok)return{status:`unavailable`,sourceUrl:q,message:`Qwen model refresh failed: HTTP ${n.status}`};let r=((await n.json()).data??[]).map(e=>e.id).filter(e=>typeof e==`string`&&e.length>0).map(Ca);return{status:`live`,sourceUrl:q,lastVerifiedAt:J,entries:r,message:`Loaded ${r.length} models from Qwen API`}}function Sa(e){if(e)return{headers:{Authorization:`Bearer ${e}`}}}function Ca(e){return{id:e,displayName:e,lifecycle:`active`,sourceUrl:q,lastVerifiedAt:J}}function wa(e){return e.replace(/\/$/,``)}async function Ta(e,t){let n=await fetch(e,{...t?.headers!==void 0&&{headers:t.headers}});return{ok:n.ok,status:n.status,json:()=>n.json()}}const Ea=[{kind:`api-key`,label:`Alibaba Cloud Model Studio API keys`,url:`https://modelstudio.console.alibabacloud.com/?tab=api#/api-key`,sourceUrl:`https://www.alibabacloud.com/help/en/model-studio/get-api-key`,lastVerifiedAt:`2026-05-08`}],Da={status:`fallback`,sourceUrl:q,lastVerifiedAt:J,entries:[{id:G,displayName:`Qwen Plus`,capabilities:[`tools`,`reasoning`,`native_web`,`streaming`],lifecycle:`active`,sourceUrl:q,lastVerifiedAt:J},{id:`qwen-max`,displayName:`Qwen Max`,capabilities:[`tools`,`reasoning`,`native_web`,`streaming`],lifecycle:`active`,sourceUrl:q,lastVerifiedAt:J},{id:`qwen-flash`,displayName:`Qwen Flash`,capabilities:[`tools`,`native_web`,`streaming`],lifecycle:`active`,sourceUrl:q,lastVerifiedAt:J}]};function Oa(){return{type:`qwen`,displayName:`Qwen`,description:`Alibaba Cloud Model Studio OpenAI-compatible endpoint`,defaults:{model:G,apiKey:zi,baseURL:K},modelCatalog:Da,refreshModelCatalog:({profile:e})=>xa(e),modelCatalogCacheTtlSeconds:86400,setupHelpLinks:Ea,setupSteps:[{key:`baseURL`,title:`Qwen OpenAI-compatible base URL`,defaultValue:K},{key:`model`,title:`Qwen model`,defaultValue:G},{key:`apiKey`,title:`Qwen Model Studio API key`,defaultValue:zi,masked:!0}],requiresApiKey:!0,probeProfile:E,createProvider:e=>{let t=Aa(e.options);return new ba({apiKey:ka(e.apiKey),...e.baseURL!==void 0&&{baseURL:e.baseURL},...t.responsesBaseURL!==void 0&&{responsesBaseURL:t.responsesBaseURL},...e.timeout!==void 0&&{timeout:e.timeout},...t.builtInWebTools!==void 0&&{builtInWebTools:t.builtInWebTools},defaultModel:e.model})}}}function ka(e){if(!e)throw Error(`Provider qwen requires apiKey`);return e}function Aa(e){let t=ja(Ma(e?.builtInWebTools)),n=Na(e?.responsesBaseURL);return{...n!==void 0&&{responsesBaseURL:n},...t!==void 0&&{builtInWebTools:t}}}function ja(e){if(e!==void 0)return{...$(e.webSearch)!==void 0&&{webSearch:$(e.webSearch)},...$(e.webFetch)!==void 0&&{webFetch:$(e.webFetch)},...$(e.enableThinking)!==void 0&&{enableThinking:$(e.enableThinking)}}}function Ma(e){if(!(e==null||e instanceof Date||Array.isArray(e)))return typeof e==`object`?e:void 0}function $(e){return typeof e==`boolean`?e:void 0}function Na(e){return typeof e==`string`&&e.length>0?e:void 0}export{b as ANTHROPIC_MODEL_LAST_VERIFIED_AT,y as ANTHROPIC_MODEL_SOURCE_URL,m as AnthropicProvider,Mi as BytedanceProvider,P as DEEPSEEK_DEPRECATED_ALIAS_RETIREMENT_DATE,M as DEEPSEEK_MODEL_CATALOG_SOURCE_URL,N as DEEPSEEK_MODEL_LAST_VERIFIED_AT,Xt as DEEPSEEK_MODEL_LIST_SOURCE_URL,re as DEFAULT_ANTHROPIC_PROVIDER_API_KEY_ENV,ie as DEFAULT_ANTHROPIC_PROVIDER_API_KEY_REFERENCE,v as DEFAULT_ANTHROPIC_PROVIDER_MODEL,Kt as DEFAULT_DEEPSEEK_PROVIDER_API_KEY_ENV,qt as DEFAULT_DEEPSEEK_PROVIDER_API_KEY_REFERENCE,Jt as DEFAULT_DEEPSEEK_PROVIDER_BASE_URL,j as DEFAULT_DEEPSEEK_PROVIDER_MODEL,er as DEFAULT_GEMINI_PROVIDER_API_KEY_ENV,tr as DEFAULT_GEMINI_PROVIDER_API_KEY_REFERENCE,L as DEFAULT_GEMINI_PROVIDER_MODEL,U as DEFAULT_GEMMA_PROVIDER_API_KEY,mi as DEFAULT_GEMMA_PROVIDER_BASE_URL,H as DEFAULT_GEMMA_PROVIDER_MODEL,A as DEFAULT_OPENAI_PROVIDER_API_KEY_REFERENCE,Rt as DEFAULT_OPENAI_PROVIDER_MODEL,Ri as DEFAULT_QWEN_PROVIDER_API_KEY_ENV,zi as DEFAULT_QWEN_PROVIDER_API_KEY_REFERENCE,K as DEFAULT_QWEN_PROVIDER_BASE_URL,G as DEFAULT_QWEN_PROVIDER_MODEL,Bi as DEFAULT_QWEN_PROVIDER_RESPONSES_BASE_URL,Yt as DeepSeekProvider,z as GEMINI_MODEL_LAST_VERIFIED_AT,R as GEMINI_MODEL_SOURCE_URL,$n as GeminiProvider,pi as GemmaProvider,fr as GemmaReasoningProjector,Xr as GemmaToolCallProjector,At as OpenAIConversationAdapter,Et as OpenAIProvider,J as QWEN_MODEL_LAST_VERIFIED_AT,q as QWEN_MODEL_SOURCE_URL,Ii as QWEN_PROVIDER_BASE_URLS,Li as QWEN_PROVIDER_RESPONSES_BASE_URLS,ba as QwenProvider,le as createAnthropicProvider,oe as createAnthropicProviderDefinition,sn as createDeepSeekProviderDefinition,rr as createGeminiProviderDefinition,bi as createGemmaProviderDefinition,V as createGemmaToolCallProjector,Bt as createOpenAIProviderDefinition,Oa as createQwenProviderDefinition,dr as projectGemmaReasoningText,Yr as projectGemmaToolCallText,h as refreshAnthropicModelCatalog,$t as refreshDeepSeekModelCatalog,or as refreshGeminiModelCatalog,Mt as refreshOpenAIModelCatalog,xa as refreshQwenModelCatalog};
7
+ //# sourceMappingURL=index.js.map