@cline/core 0.0.95 → 0.2.0-nightly.1793312794

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 (175) hide show
  1. package/dist/ClineCore.d.ts +6 -1
  2. package/dist/account/rpc.d.ts +3 -1
  3. package/dist/account/types.d.ts +2 -0
  4. package/dist/artifacts/cloud/fetch.d.ts +8 -0
  5. package/dist/artifacts/cloud/publish.d.ts +6 -0
  6. package/dist/artifacts/publish.d.ts +30 -0
  7. package/dist/cline-core/runtime-services.d.ts +4 -2
  8. package/dist/cloud/computer-use-prompt.d.ts +9 -0
  9. package/dist/cloud/controller.d.ts +26 -4
  10. package/dist/cloud/hub-client.d.ts +53 -0
  11. package/dist/cloud/hub-protocol.d.ts +32 -0
  12. package/dist/cloud/index.d.ts +5 -0
  13. package/dist/cloud/index.js +34 -17
  14. package/dist/cloud/types.d.ts +4 -1
  15. package/dist/extensions/context/compaction-shared.d.ts +1 -0
  16. package/dist/extensions/context/compaction.d.ts +7 -0
  17. package/dist/extensions/context/summarize-conversation.d.ts +7 -0
  18. package/dist/extensions/context/summary-generation.d.ts +14 -0
  19. package/dist/extensions/mcp/apps.d.ts +16 -0
  20. package/dist/extensions/mcp/client.d.ts +1 -0
  21. package/dist/extensions/mcp/index.d.ts +5 -1
  22. package/dist/extensions/mcp/manager.d.ts +2 -1
  23. package/dist/extensions/mcp/session-apps.d.ts +28 -0
  24. package/dist/extensions/mcp/types.d.ts +22 -0
  25. package/dist/extensions/plugin/plugin-command-origin.d.ts +8 -0
  26. package/dist/extensions/plugin/plugin-registry.d.ts +1 -0
  27. package/dist/extensions/plugin/plugin-runtime.d.ts +7 -0
  28. package/dist/hub/client/index.d.ts +6 -0
  29. package/dist/hub/client/managed-hub-build-watcher.d.ts +2 -0
  30. package/dist/hub/client/plugin-commands.d.ts +4 -0
  31. package/dist/hub/client/session-client.d.ts +2 -0
  32. package/dist/hub/daemon/entry.js +248 -229
  33. package/dist/hub/daemon/index.d.ts +2 -0
  34. package/dist/hub/index.d.ts +1 -0
  35. package/dist/hub/index.js +238 -219
  36. package/dist/hub/runtime-host/hub-runtime-host.d.ts +6 -0
  37. package/dist/hub/server/cloud-session-service.d.ts +52 -0
  38. package/dist/hub/server/handlers/capability-handlers.d.ts +18 -1
  39. package/dist/hub/server/handlers/context.d.ts +13 -2
  40. package/dist/hub/server/handlers/mcp-apps-handlers.d.ts +5 -0
  41. package/dist/hub/server/handlers/session-handlers.d.ts +4 -0
  42. package/dist/hub/server/hub-server-options.d.ts +3 -0
  43. package/dist/hub/server/hub-server-transport.d.ts +2 -0
  44. package/dist/index.d.ts +10 -5
  45. package/dist/index.js +284 -258
  46. package/dist/plugin-runtime/node_modules/@cline/agents/dist/index.js +76 -0
  47. package/dist/plugin-runtime/node_modules/@cline/agents/package.json +1 -0
  48. package/dist/plugin-runtime/node_modules/@cline/core/dist/ai-sdk-bdvd54cj.js +1 -0
  49. package/dist/plugin-runtime/node_modules/@cline/core/dist/anthropic-d88t4w67.js +1 -0
  50. package/dist/plugin-runtime/node_modules/@cline/core/dist/bedrock-4rh6dw0e.js +1 -0
  51. package/dist/plugin-runtime/node_modules/@cline/core/dist/cline-dex049wz.js +1 -0
  52. package/dist/plugin-runtime/node_modules/@cline/core/dist/cloud/index.js +38 -0
  53. package/dist/plugin-runtime/node_modules/@cline/core/dist/community-adrseffv.js +1 -0
  54. package/dist/plugin-runtime/node_modules/@cline/core/dist/foundation-models-embedding-model-strategy-SAVQFBF4-vf44v1q1.js +1 -0
  55. package/dist/plugin-runtime/node_modules/@cline/core/dist/foundation-models-language-model-strategy-BPQO66W7-np6pavev.js +1 -0
  56. package/dist/plugin-runtime/node_modules/@cline/core/dist/getMachineId-bsd-1xg0n8py.js +1 -0
  57. package/dist/plugin-runtime/node_modules/@cline/core/dist/getMachineId-bsd-2h2811k3.js +1 -0
  58. package/dist/plugin-runtime/node_modules/@cline/core/dist/getMachineId-darwin-918h9zb6.js +2 -0
  59. package/dist/plugin-runtime/node_modules/@cline/core/dist/getMachineId-darwin-9g9qz8kw.js +2 -0
  60. package/dist/plugin-runtime/node_modules/@cline/core/dist/getMachineId-linux-8p52y0t4.js +1 -0
  61. package/dist/plugin-runtime/node_modules/@cline/core/dist/getMachineId-linux-cr4wnstr.js +1 -0
  62. package/dist/plugin-runtime/node_modules/@cline/core/dist/getMachineId-unsupported-aa72jh2v.js +1 -0
  63. package/dist/plugin-runtime/node_modules/@cline/core/dist/getMachineId-unsupported-k2y10eep.js +1 -0
  64. package/dist/plugin-runtime/node_modules/@cline/core/dist/getMachineId-win-1hvm2h6v.js +1 -0
  65. package/dist/plugin-runtime/node_modules/@cline/core/dist/getMachineId-win-7nqbajdc.js +1 -0
  66. package/dist/plugin-runtime/node_modules/@cline/core/dist/google-nqn5r579.js +1 -0
  67. package/dist/plugin-runtime/node_modules/@cline/core/dist/hub/daemon/entry.js +1166 -0
  68. package/dist/plugin-runtime/node_modules/@cline/core/dist/hub/index.js +1153 -0
  69. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-0ahmqye5.js +2 -0
  70. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-1jwj53tz.js +2 -0
  71. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-3qy7846d.js +14 -0
  72. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-418gvd4a.js +2 -0
  73. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-4etvmc8g.js +2 -0
  74. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-4pm9q9we.js +1 -0
  75. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-4tgv599k.js +2 -0
  76. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-5hwscy9s.js +15 -0
  77. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-6dpcn5cw.js +9 -0
  78. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-7ycwqbm0.js +1 -0
  79. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-8qjtgvqw.js +9 -0
  80. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-8zb5grad.js +1210 -0
  81. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-94jdgxt6.js +2 -0
  82. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-9g67p34k.js +2 -0
  83. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-a9d2sjh0.js +85 -0
  84. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-agemt17a.js +3 -0
  85. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-bhf7enwn.js +1 -0
  86. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-bnwxdgvg.js +1 -0
  87. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-brjxtvsh.js +4 -0
  88. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-bvb7f701.js +1 -0
  89. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-bwet95hr.js +2 -0
  90. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-cadyf2yp.js +14 -0
  91. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-cxfnnrmh.js +9 -0
  92. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-cyyvppz9.js +6 -0
  93. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-d4pbedxj.js +137 -0
  94. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-ddwn220p.js +12 -0
  95. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-edf1hmcw.js +62 -0
  96. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-ejyd73x5.js +1 -0
  97. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-f25bf131.js +4 -0
  98. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-f4rfmj6q.js +3 -0
  99. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-fet3kwk6.js +1 -0
  100. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-ffna8yzn.js +121 -0
  101. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-g2y6ptdc.js +213 -0
  102. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-ge184xvn.js +6 -0
  103. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-gevnedsc.js +13 -0
  104. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-hkmarmve.js +190 -0
  105. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-kqacxn3s.js +39 -0
  106. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-m3gtj35r.js +14 -0
  107. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-neczvge6.js +21 -0
  108. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-p5k5hnam.js +75 -0
  109. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-sdvqs19c.js +20 -0
  110. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-t75m2pgm.js +146 -0
  111. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-v4-qqb2kabr.js +1 -0
  112. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-v6mehmme.js +12 -0
  113. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-v80fh3x3.js +16 -0
  114. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-vd605jwp.js +2 -0
  115. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-vryppqt1.js +1 -0
  116. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-w55v4n1n.js +2 -0
  117. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-w9n2kgjk.js +140 -0
  118. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-yjbp9r76.js +142 -0
  119. package/dist/plugin-runtime/node_modules/@cline/core/dist/index-ztb3cjfh.js +3 -0
  120. package/dist/plugin-runtime/node_modules/@cline/core/dist/index.js +1 -0
  121. package/dist/plugin-runtime/node_modules/@cline/core/dist/jiti-static-kj4rdeey.js +473 -0
  122. package/dist/plugin-runtime/node_modules/@cline/core/dist/jiti-y9tt7gmq.js +1 -0
  123. package/dist/plugin-runtime/node_modules/@cline/core/dist/langfuse-stream-telemetry-bg81k3qh.js +1 -0
  124. package/dist/plugin-runtime/node_modules/@cline/core/dist/langfuse-telemetry-tkbfbx5w.js +1 -0
  125. package/dist/plugin-runtime/node_modules/@cline/core/dist/mistral-mkw95amh.js +1 -0
  126. package/dist/plugin-runtime/node_modules/@cline/core/dist/multipart-parser-9z19cm6q.js +2 -0
  127. package/dist/plugin-runtime/node_modules/@cline/core/dist/ollama-sjp09b7p.js +1 -0
  128. package/dist/plugin-runtime/node_modules/@cline/core/dist/openai-1eyn4hw0.js +1 -0
  129. package/dist/plugin-runtime/node_modules/@cline/core/dist/openai-compatible-f99c7syq.js +1 -0
  130. package/dist/plugin-runtime/node_modules/@cline/core/dist/orchestration-embedding-model-strategy-GT27AFII-19936r1a.js +1 -0
  131. package/dist/plugin-runtime/node_modules/@cline/core/dist/orchestration-language-model-strategy-YEQPUCOT-eavx3zc3.js +1 -0
  132. package/dist/plugin-runtime/node_modules/@cline/core/dist/services/feature-flags/posthog.js +2 -0
  133. package/dist/plugin-runtime/node_modules/@cline/core/dist/services/telemetry/index.js +1 -0
  134. package/dist/plugin-runtime/node_modules/@cline/core/dist/token-04d0mwe8.js +1 -0
  135. package/dist/plugin-runtime/node_modules/@cline/core/dist/token-util-mt7pvm61.js +1 -0
  136. package/dist/plugin-runtime/node_modules/@cline/core/dist/vertex-6armtc3s.js +1 -0
  137. package/dist/plugin-runtime/node_modules/@cline/core/package.json +1 -0
  138. package/dist/plugin-runtime/node_modules/@cline/llms/dist/index.browser.js +16 -0
  139. package/dist/plugin-runtime/node_modules/@cline/llms/dist/index.js +1 -0
  140. package/dist/plugin-runtime/node_modules/@cline/llms/package.json +1 -0
  141. package/dist/plugin-runtime/node_modules/@cline/sdk/dist/index.js +1 -0
  142. package/dist/plugin-runtime/node_modules/@cline/sdk/package.json +1 -0
  143. package/dist/plugin-runtime/node_modules/@cline/shared/dist/automation/index.js +57 -0
  144. package/dist/plugin-runtime/node_modules/@cline/shared/dist/db/index.js +127 -0
  145. package/dist/plugin-runtime/node_modules/@cline/shared/dist/index.browser.js +110 -0
  146. package/dist/plugin-runtime/node_modules/@cline/shared/dist/index.js +1 -0
  147. package/dist/plugin-runtime/node_modules/@cline/shared/dist/node.js +1 -0
  148. package/dist/plugin-runtime/node_modules/@cline/shared/dist/remote-config/index.js +68 -0
  149. package/dist/plugin-runtime/node_modules/@cline/shared/dist/storage/index.js +1 -0
  150. package/dist/plugin-runtime/node_modules/@cline/shared/dist/types/index.js +1 -0
  151. package/dist/plugin-runtime/node_modules/@cline/shared/package.json +1 -0
  152. package/dist/plugin-runtime/package.json +1 -0
  153. package/dist/{extensions → plugin-runtime}/plugin-sandbox-bootstrap.js +129 -129
  154. package/dist/remote/remote-environments.d.ts +1 -0
  155. package/dist/runtime/config/agent-runtime-config-builder.d.ts +2 -0
  156. package/dist/runtime/host/local-runtime-host.d.ts +10 -0
  157. package/dist/runtime/host/runtime-host.d.ts +6 -0
  158. package/dist/runtime/orchestration/runtime-oauth-token-manager.d.ts +3 -0
  159. package/dist/runtime/orchestration/session-runtime-orchestrator.d.ts +10 -1
  160. package/dist/runtime/orchestration/session-runtime.d.ts +2 -0
  161. package/dist/runtime/tools/subprocess-sandbox.d.ts +22 -0
  162. package/dist/services/cloud-handoff/git-preparation.d.ts +22 -0
  163. package/dist/services/global-settings.d.ts +6 -0
  164. package/dist/services/llms/cline-recommended-models.d.ts +2 -0
  165. package/dist/services/local-runtime-bootstrap.d.ts +1 -0
  166. package/dist/services/plugin-command-api.d.ts +47 -0
  167. package/dist/services/plugin-commands.d.ts +25 -27
  168. package/dist/services/skills-cli.d.ts +2 -0
  169. package/dist/services/telemetry/core-events.d.ts +26 -0
  170. package/dist/services/telemetry/index.js +1 -1
  171. package/dist/services/telemetry/run-health.d.ts +40 -0
  172. package/dist/services/telemetry/stall-signals.d.ts +12 -0
  173. package/dist/types/config.d.ts +1 -0
  174. package/dist/types/session.d.ts +7 -0
  175. package/package.json +6 -5
@@ -0,0 +1,15 @@
1
+ import{mp}from"./index-cyyvppz9.js";import{D,F,ve,pt,b,H,Q,I,Ci,vn,ia,na,ke,it,j,aa,gp,At,Vt,Kt,Pi,We,Ee,nt,fe,Ae,_l,Do,_y,ro,C,Ce,Oe,Nr,Wo,Pe,ut,nn,Lr,Qe,u,l,De,yt,T,O,Br,G,M,ee,qe,oe,ze,E,Fr,te,Ye}from"./index-w9n2kgjk.js";import{e,n,r,m,le,o,t,ae,p,d,s,a,Fe}from"./index-edf1hmcw.js";var On="4.0.108",zt=()=>t({code:n().nullable(),message:e(),status:e(),details:o(m()).nullish()}),Mn=u(()=>l(t({error:zt()}))),ge=oe({errorSchema:Mn,errorToMessage:(i)=>i.error.message}),En=()=>p([t({text:e()}),t({inlineData:t({mimeType:e(),data:e()})}),t({fileData:t({fileUri:e(),mimeType:e()})})]),An=u(()=>l(t({outputDimensionality:n().optional(),taskType:s(["SEMANTIC_SIMILARITY","CLASSIFICATION","CLUSTERING","RETRIEVAL_DOCUMENT","RETRIEVAL_QUERY","QUESTION_ANSWERING","FACT_VERIFICATION","CODE_RETRIEVAL_QUERY"]).optional(),content:o(o(En()).min(1).nullable()).optional()}))),Ln=class i{static[H](c){return te({modelId:c.modelId,config:c.config})}static[Q](c){return new i(c.modelId,c.config)}get provider(){return this.config.provider}constructor(c,g){this.specificationVersion="v4",this.maxEmbeddingsPerCall=100,this.supportsParallelCalls=!0,this[_y]=({providerOptions:h,values:f,startIndex:y,endIndex:x})=>{let _=h?.google?.content;if(!Array.isArray(_))return h;return kt({multimodalContent:_,values:f}),{...h,google:{...h?.google,content:_.slice(y,x)}}},this.modelId=c,this.config=g}async doEmbed({values:c,dimensions:g,headers:h,abortSignal:f,providerOptions:y}){let x=await T({provider:"google",providerOptions:y,schema:An});if(c.length>this.maxEmbeddingsPerCall)throw new pt({provider:this.provider,modelId:this.modelId,maxEmbeddingsPerCall:this.maxEmbeddingsPerCall,values:c});let _=I(this.config.headers?await M(this.config.headers):void 0,h),v=x?.content;if(kt({multimodalContent:v,values:c}),c.length===1){let B=v?.[0],N=c[0]?[{text:c[0]}]:[],q=B!=null?[...N,...B]:[{text:c[0]}],{responseHeaders:V,value:K,rawValue:L}=await O({url:`${this.config.baseURL}/models/${this.modelId}:embedContent`,headers:_,body:{model:`models/${this.modelId}`,content:{parts:q},outputDimensionality:x?.outputDimensionality??g,taskType:x?.taskType},failedResponseHandler:ge,successfulResponseHandler:E(Un),abortSignal:f,fetch:this.config.fetch});return{warnings:[],embeddings:[K.embedding.values],usage:void 0,response:{headers:V,body:L}}}let{responseHeaders:A,value:R,rawValue:P}=await O({url:`${this.config.baseURL}/models/${this.modelId}:batchEmbedContents`,headers:_,body:{requests:c.map((B,N)=>{let q=v?.[N],V=B?[{text:B}]:[];return{model:`models/${this.modelId}`,content:{role:"user",parts:q!=null?[...V,...q]:[{text:B}]},outputDimensionality:x?.outputDimensionality??g,taskType:x?.taskType}})},failedResponseHandler:ge,successfulResponseHandler:E(jn),abortSignal:f,fetch:this.config.fetch});return{warnings:[],embeddings:R.embeddings.map((B)=>B.values),usage:void 0,response:{headers:A,body:P}}}},jn=u(()=>l(t({embeddings:o(t({values:o(n())}))}))),Un=u(()=>l(t({embedding:t({values:o(n())})})));function kt({multimodalContent:i,values:c}){if(i!=null&&i.length!==c.length)throw Error(`The number of multimodal content entries (${i.length}) must match the number of values (${c.length}).`)}function He(i){return i.includes("/")?i:`models/${i}`}function Nn({stream:i,getContinuationToken:c,continueStream:g}){let h=i.getReader(),f;return new ReadableStream({async pull(y){while(!0){let{done:x,value:_}=await h.read();if(!x){if(_.success){let A=c(_.value);if(A!=null)f=A}y.enqueue(_);return}if(f==null){y.close();return}let v=f;f=void 0;try{h=(await g(v)).getReader(),y.enqueue({type:"continuation-start"});return}catch(A){y.enqueue({success:!1,error:A,rawValue:void 0}),y.close();return}}},async cancel(y){await h.cancel(y)}})}function xt(i){if(i==null)return At();let c=i.promptTokenCount??0,g=i.candidatesTokenCount??0,h=i.toolUsePromptTokenCount??0,f=i.cachedContentTokenCount??0,y=i.thoughtsTokenCount??0,x=c+h;return{inputTokens:{total:x,noCache:x-f,cacheRead:f,cacheWrite:void 0},outputTokens:{total:g+y,text:g,reasoning:y},raw:i}}function dt(i,c){if(i==null||c==null)return c??i;return{...i,...c,promptTokenCount:$e(i.promptTokenCount,c.promptTokenCount),candidatesTokenCount:$e(i.candidatesTokenCount,c.candidatesTokenCount),toolUsePromptTokenCount:$e(i.toolUsePromptTokenCount,c.toolUsePromptTokenCount),totalTokenCount:$e(i.totalTokenCount,c.totalTokenCount),cachedContentTokenCount:$e(i.cachedContentTokenCount,c.cachedContentTokenCount),thoughtsTokenCount:$e(i.thoughtsTokenCount,c.thoughtsTokenCount),promptTokensDetails:et(i.promptTokensDetails,c.promptTokensDetails),cacheTokensDetails:et(i.cacheTokensDetails,c.cacheTokensDetails),candidatesTokensDetails:et(i.candidatesTokensDetails,c.candidatesTokensDetails),toolUsePromptTokensDetails:et(i.toolUsePromptTokensDetails,c.toolUsePromptTokensDetails)}}function $e(i,c){return i==null&&c==null?c??i:(i??0)+(c??0)}function et(i,c){if(i==null||c==null)return c??i;let g=new Map;for(let{modality:h,tokenCount:f}of[...i,...c])g.set(h,(g.get(h)??0)+f);return Array.from(g,([h,f])=>({modality:h,tokenCount:f}))}var Gn=t({startOffset:e().optional(),endOffset:e().optional(),fps:n().gt(0).max(24).optional()}),Jt=t({language:e().describe("The programming language of the code."),code:e().describe("The code to be executed.")}),Yt=t({outcome:e().describe('The outcome of the execution (e.g., "OUTCOME_OK").'),output:e().describe("The output from the code execution.")}),Dn=G({id:"google.code_execution",inputSchema:Jt,outputSchema:Yt}),Pn="skip_thought_signature_validator",qn=/^data:([^;,]+);base64,(.+)$/s;function $n(i){let c=qn.exec(i);if(c==null)return;return{mediaType:c[1],data:c[2]}}function Fn(i){let c=$n(i);if(c==null)return;return{inlineData:{mimeType:c.mediaType,data:c.data}}}function mt(i){if(Array.isArray(i))return i.some(mt);if(typeof i!=="object"||i===null)return!1;return Object.entries(i).some(([c,g])=>c==="$ref"||mt(g))}function Rt(i){return mt(i)?JSON.stringify(i):i}function Bn(i,c,g,h,f=!0,y={}){let x=[],_=[];for(let v of g)switch(v.type){case"text":_.push(v.text);break;case"file":if(v.data.type==="data")x.push({inlineData:{mimeType:ee({part:v}),data:j(v.data.data)}});else if(v.data.type==="url"){let A=v.data.url.toString(),R=Fn(A),P=v.data.url.protocol==="gs:"&&v.data.originalUrl!=null?v.data.originalUrl:A;if(R!=null)x.push(R);else if(Ae(v.mediaType)&&Nr({url:P,mediaType:v.mediaType,supportedUrls:y}))x.push({fileData:{mimeType:v.mediaType,fileUri:P}});else _.push(JSON.stringify(v))}else _.push(JSON.stringify(v));break;default:_.push(JSON.stringify(v))}i.push({functionResponse:{...f&&h!=null?{id:h}:{},name:c,response:{name:c,content:_.length>0?_.join(`
2
+ `):"Tool executed successfully."},...x.length>0?{parts:x}:{}}})}function Hn(i,c,g,h,f=!0){for(let y of g)switch(y.type){case"text":i.push({functionResponse:{...f&&h!=null?{id:h}:{},name:c,response:{name:c,content:y.text}}});break;case"file":if(y.data.type==="data"){let x=fe(y.mediaType);i.push({inlineData:{mimeType:ee({part:y}),data:j(y.data.data)}},{text:`Tool executed successfully and returned this ${x==="image"?"image":"file"} as a response`})}else i.push({text:JSON.stringify(y)});break;default:i.push({text:JSON.stringify(y)})}}function Vn(i,c){let g=[],h=[],f=!0,y=c?.isGemmaModel??!1,x=c?.isGemini3Model??!1,_=c?.onWarning,v=c?.providerOptionsNames??["google"],A=!v.includes("google"),R=c?.supportsFunctionResponseParts??!0,P=c?.includeFunctionCallIds??!0,B=c?.supportedFunctionResponseUrls??{},N=!1,q=[],V=(L)=>(q.push(L),N=!0,Pn),K=(L)=>{for(let k of v){let U=L.providerOptions?.[k];if(U!=null)return U}if(A)return L.providerOptions?.google;return L.providerOptions?.googleVertex??L.providerOptions?.vertex};for(let{role:L,content:k}of i)switch(L){case"system":if(!f)throw new b({functionality:"system messages are only supported at the beginning of the conversation"});g.push({text:k});break;case"user":{f=!1;let U=[];for(let w of k)switch(w.type){case"text":U.push({text:w.text});break;case"file":{let S=K(w)?.videoMetadata,W=S==null?void 0:Gn.parse(S);switch(w.data.type){case"url":U.push({fileData:{mimeType:ee({part:w}),fileUri:w.data.url.protocol==="gs:"&&w.data.originalUrl!=null?w.data.originalUrl:w.data.url.toString()},...W!=null?{videoMetadata:W}:{}});break;case"reference":if(A)throw new b({functionality:"file parts with provider references"});U.push({fileData:{mimeType:ee({part:w}),fileUri:qe({reference:w.data.reference,provider:"google"})},...W!=null?{videoMetadata:W}:{}});break;case"text":U.push({inlineData:{mimeType:Ae(w.mediaType)?w.mediaType:"text/plain",data:j(new TextEncoder().encode(w.data.text))},...W!=null?{videoMetadata:W}:{}});break;case"data":U.push({inlineData:{mimeType:ee({part:w}),data:j(w.data.data)},...W!=null?{videoMetadata:W}:{}})}break}}h.push({role:"user",parts:U});break}case"assistant":{f=!1;let U=!1;h.push({role:"model",parts:k.map((w)=>{let S=K(w),W=S?.thoughtSignature!=null?String(S.thoughtSignature):void 0;switch(w.type){case"text":return w.text.length===0?void 0:{text:w.text,thoughtSignature:W};case"reasoning":return w.text.length===0?void 0:{text:w.text,thought:!0,thoughtSignature:W};case"reasoning-file":switch(w.data.type){case"url":throw new b({functionality:"File data URLs in assistant messages are not supported"});case"data":return{inlineData:{mimeType:w.mediaType,data:j(w.data.data)},thought:!0,thoughtSignature:W}}break;case"file":switch(w.data.type){case"url":throw new b({functionality:"File data URLs in assistant messages are not supported"});case"reference":if(A)throw new b({functionality:"file parts with provider references"});return{fileData:{mimeType:w.mediaType,fileUri:qe({reference:w.data.reference,provider:"google"})},...S?.thought===!0?{thought:!0}:{},thoughtSignature:W};case"text":return{inlineData:{mimeType:Ae(w.mediaType)?w.mediaType:"text/plain",data:j(new TextEncoder().encode(w.data.text))},...S?.thought===!0?{thought:!0}:{},thoughtSignature:W};case"data":return{inlineData:{mimeType:w.mediaType,data:j(w.data.data)},...S?.thought===!0?{thought:!0}:{},thoughtSignature:W}}break;case"tool-call":{if(w.providerExecuted===!0&&w.toolName==="code_execution")return{executableCode:Jt.parse(typeof w.input==="string"?Qe(w.input):w.input)};let J=S?.serverToolCallId!=null?String(S.serverToolCallId):void 0,X=S?.serverToolType!=null?String(S.serverToolType):void 0,re=J!=null&&X!=null,ye=W??(x&&!(!re&&W==null&&U)?V(w.toolName):void 0);if(!re&&W!=null)U=!0;if(re)return{toolCall:{toolType:X,args:typeof w.input==="string"?Qe(w.input):w.input,id:J},thoughtSignature:ye};return{functionCall:{...P&&w.toolCallId!=null?{id:w.toolCallId}:{},name:w.toolName,args:w.input},thoughtSignature:ye}}case"tool-result":{if(w.toolName==="code_execution"&&w.output.type==="json")return{codeExecutionResult:Yt.parse(w.output.value)};let J=S?.serverToolCallId!=null?String(S.serverToolCallId):void 0,X=S?.serverToolType!=null?String(S.serverToolType):void 0;if(J&&X)return{toolResponse:{toolType:X,response:w.output.type==="json"?w.output.value:{},id:J},thoughtSignature:W};return}}}).filter((w)=>w!==void 0)});break}case"tool":{f=!1;let U=[];for(let w of k){if(w.type==="tool-approval-response")continue;let S=K(w),W=S?.serverToolCallId!=null?String(S.serverToolCallId):void 0,J=S?.serverToolType!=null?String(S.serverToolType):void 0;if(W&&J){let re=S?.thoughtSignature!=null?String(S.thoughtSignature):void 0;if(h.length>0){let ye=h[h.length-1];if(ye.role==="model"){ye.parts.push({toolResponse:{toolType:J,response:w.output.type==="json"?w.output.value:{},id:W},thoughtSignature:re});continue}}}let X=w.output;if(X.type==="content")if(R)Bn(U,w.toolName,X.value,w.toolCallId,P,B);else Hn(U,w.toolName,X.value,w.toolCallId,P);else{let re=X.type==="error-text"||X.type==="error-json"||X.type==="execution-denied";U.push({functionResponse:{...P&&w.toolCallId!=null?{id:w.toolCallId}:{},name:w.toolName,response:{name:w.toolName,...re?{error:X.type==="execution-denied"?X.reason??"Tool call execution denied.":Rt(X.value)}:{content:Rt(X.value)}}}})}}h.push({role:"user",parts:U});break}}if(y&&g.length>0&&h.length>0&&h[0].role==="user"){let L=g.map((k)=>k.text).join(`
3
+
4
+ `);h[0].parts.unshift({text:L+`
5
+
6
+ `})}if(N&&_!=null){let L=Array.from(new Set(q));_({type:"other",message:`Replayed ${q.length} \`functionCall\` part(s) for a Gemini 3 model without a \`thoughtSignature\` (tools: ${L.map((k)=>`\`${k}\``).join(", ")}). Injected the documented \`skip_thought_signature_validator\` sentinel to keep the request from failing with HTTP 400. The likely cause is application code that drops \`providerOptions.google.thoughtSignature\` when persisting or serializing assistant tool-call messages. See https://ai.google.dev/gemini-api/docs/thought-signatures.`})}return{systemInstruction:g.length>0&&!y?{parts:g}:void 0,contents:h}}async function Wn(i,{abortSignal:c,maxBytes:g,supportedUrls:h={}}){let f=[];for(let y of i){if(y.role==="assistant"){let x=[];for(let _ of y.content)x.push(_.type==="tool-result"?{..._,output:await Ot(_.output,{abortSignal:c,maxBytes:g,supportedUrls:h})}:_);f.push({...y,content:x});continue}if(y.role==="tool"){let x=[];for(let _ of y.content){if(_.type!=="tool-result"){x.push(_);continue}x.push({..._,output:await Ot(_.output,{abortSignal:c,maxBytes:g,supportedUrls:h})})}f.push({...y,content:x});continue}f.push(y)}return f}async function Ot(i,{abortSignal:c,maxBytes:g,supportedUrls:h}){if(i.type!=="content")return i;let f=[];for(let y of i.value){if(y.type!=="file"||y.data.type!=="url"){f.push(y);continue}if(Nr({url:y.data.url.toString(),mediaType:y.mediaType,supportedUrls:h})){f.push(y);continue}let x=await Do(y.data.url.toString(),{abortSignal:c,maxBytes:g}),_=new Uint8Array(await x.arrayBuffer()),v=nt({data:_,topLevelType:"image"});f.push({...y,data:{type:"data",data:_},mediaType:v??(x.type&&!Ae(y.mediaType)?x.type:y.mediaType)})}return{...i,value:f}}function Xt(i){let{const:c,properties:g,items:h,additionalProperties:f,anyOf:y,oneOf:x,..._}=i;return{..._,...c!==void 0?{enum:[c]}:{},...g!=null?{properties:Mt(g)}:{},...h!=null?{items:Array.isArray(h)?h.map(Be):Be(h)}:{},...f!=null?{additionalProperties:typeof f==="boolean"?f:Be(f)}:{},...y!=null?{anyOf:y.map(Be)}:{},...x!=null?{oneOf:x.map(Be)}:{},..._.$defs!=null?{$defs:Mt(_.$defs)}:{}}}function Mt(i){return Object.fromEntries(Object.entries(i).map(([c,g])=>[c,Be(g)]))}function Be(i){return typeof i==="boolean"?i:Xt(i)}var rt=u(()=>l(t({responseModalities:o(s(["TEXT","IMAGE","AUDIO"])).optional(),thinkingConfig:t({thinkingBudget:n().optional(),includeThoughts:r().optional(),thinkingLevel:s(["minimal","low","medium","high"]).optional()}).optional(),cachedContent:e().optional(),structuredOutputs:r().optional(),safetySettings:o(t({category:s(["HARM_CATEGORY_UNSPECIFIED","HARM_CATEGORY_HATE_SPEECH","HARM_CATEGORY_DANGEROUS_CONTENT","HARM_CATEGORY_HARASSMENT","HARM_CATEGORY_SEXUALLY_EXPLICIT","HARM_CATEGORY_CIVIC_INTEGRITY"]),threshold:s(["HARM_BLOCK_THRESHOLD_UNSPECIFIED","BLOCK_LOW_AND_ABOVE","BLOCK_MEDIUM_AND_ABOVE","BLOCK_ONLY_HIGH","BLOCK_NONE","OFF"])})).optional(),threshold:s(["HARM_BLOCK_THRESHOLD_UNSPECIFIED","BLOCK_LOW_AND_ABOVE","BLOCK_MEDIUM_AND_ABOVE","BLOCK_ONLY_HIGH","BLOCK_NONE","OFF"]).optional(),audioTimestamp:r().optional(),labels:d(e(),e()).optional(),mediaResolution:s(["MEDIA_RESOLUTION_UNSPECIFIED","MEDIA_RESOLUTION_LOW","MEDIA_RESOLUTION_MEDIUM","MEDIA_RESOLUTION_HIGH"]).optional(),imageConfig:t({aspectRatio:s(["1:1","2:3","3:2","3:4","4:3","4:5","5:4","9:16","16:9","21:9","1:8","8:1","1:4","4:1"]).optional(),imageSize:s(["1K","2K","4K","512"]).optional(),personGeneration:s(["PERSON_GENERATION_UNSPECIFIED","ALLOW_ALL","ALLOW_ADULT","ALLOW_NONE"]).optional(),prominentPeople:s(["PROMINENT_PEOPLE_UNSPECIFIED","ALLOW_PROMINENT_PEOPLE","BLOCK_PROMINENT_PEOPLE"]).optional(),imageOutputOptions:t({mimeType:s(["image/jpeg","image/png"]).optional(),compressionQuality:n().optional()}).optional()}).optional(),retrievalConfig:t({latLng:t({latitude:n(),longitude:n()}).optional()}).optional(),streamFunctionCallArguments:r().optional(),serviceTier:s(["standard","flex","priority"]).optional(),continuationToken:e().optional(),sharedRequestType:s(["priority","flex","standard"]).optional(),requestType:s(["shared"]).optional()}))),Kn=/(^|[/.])gemini-1(?:[.-]|$)/i,zn=/(^|[/.])gemini-2(?:[.-]|$)/i,Jn=/(^|[/.])gemini-2\.5(?:[.-]|$)/i,Yn=/(^|[/.])gemini-/i;function Xn(i){return Kn.test(i)||/(^|[/.])gemini-pro(?:-vision)?$/i.test(i)||/(^|[/.])gemini-robotics-er-1\.5(?:[.-]|$)/i.test(i)}function lt(i){let c=Yn.test(i),g=zn.test(i),h=Xn(i),f=c&&!(h||g);return{supportsGemini2Tools:c&&!h||i.toLowerCase().includes("nano-banana"),supportsFileSearch:Jn.test(i)||f,usesGemini3Features:f}}function Qn({tools:i,toolChoice:c,modelId:g,isVertexProvider:h=!1}){i=i?.length?i:void 0;let f=[],{supportsGemini2Tools:y,supportsFileSearch:x,usesGemini3Features:_}=lt(g);if(i==null)return{tools:void 0,toolConfig:void 0,toolWarnings:f};let v=i.some((N)=>N.type==="function"),A=i.some((N)=>N.type==="provider");if(v&&A&&!_)f.push({type:"unsupported",feature:"combination of function and provider-defined tools"});if(A){let N=[];if(i.filter((q)=>q.type==="provider").forEach((q)=>{switch(q.id){case"google.google_search":if(y)N.push({googleSearch:{...q.args}});else f.push({type:"unsupported",feature:`provider-defined tool ${q.id}`,details:"Google Search requires Gemini 2.0 or newer."});break;case"google.enterprise_web_search":if(y)N.push({enterpriseWebSearch:{}});else f.push({type:"unsupported",feature:`provider-defined tool ${q.id}`,details:"Enterprise Web Search requires Gemini 2.0 or newer."});break;case"google.url_context":if(y)N.push({urlContext:{}});else f.push({type:"unsupported",feature:`provider-defined tool ${q.id}`,details:"The URL context tool is not supported with other Gemini models than Gemini 2."});break;case"google.code_execution":if(y)N.push({codeExecution:{}});else f.push({type:"unsupported",feature:`provider-defined tool ${q.id}`,details:"The code execution tool is not supported with other Gemini models than Gemini 2."});break;case"google.file_search":if(x)N.push({fileSearch:{...q.args}});else f.push({type:"unsupported",feature:`provider-defined tool ${q.id}`,details:"The file search tool is only supported with Gemini 2.5 models and Gemini 3 models."});break;case"google.vertex_rag_store":if(y)N.push({retrieval:{vertex_rag_store:{rag_resources:{rag_corpus:q.args.ragCorpus},similarity_top_k:q.args.topK}}});else f.push({type:"unsupported",feature:`provider-defined tool ${q.id}`,details:"The RAG store tool is not supported with other Gemini models than Gemini 2."});break;case"google.google_maps":if(y)N.push({googleMaps:{}});else f.push({type:"unsupported",feature:`provider-defined tool ${q.id}`,details:"The Google Maps grounding tool is not supported with Gemini models other than Gemini 2 or newer."});break;default:f.push({type:"unsupported",feature:`provider-defined tool ${q.id}`})}}),v&&_&&N.length>0){let q=[];for(let K of i)if(K.type==="function")q.push(Et(K));let V={functionCallingConfig:{mode:"VALIDATED"},...!h&&{includeServerSideToolInvocations:!0}};if(c!=null)switch(c.type){case"auto":break;case"none":V.functionCallingConfig={mode:"NONE"};break;case"required":V.functionCallingConfig={mode:"ANY"};break;case"tool":V.functionCallingConfig={mode:"ANY",allowedFunctionNames:[c.toolName]}}return{tools:[...N,{functionDeclarations:q}],toolConfig:V,toolWarnings:f}}return{tools:N.length>0?N:void 0,toolConfig:void 0,toolWarnings:f}}let R=[],P=!1;for(let N of i)switch(N.type){case"function":if(R.push(Et(N)),N.strict===!0)P=!0;break;default:f.push({type:"unsupported",feature:`function tool ${N.name}`})}if(c==null)return{tools:[{functionDeclarations:R}],toolConfig:P?{functionCallingConfig:{mode:"VALIDATED"}}:void 0,toolWarnings:f};let B=c.type;switch(B){case"auto":return{tools:[{functionDeclarations:R}],toolConfig:{functionCallingConfig:{mode:P?"VALIDATED":"AUTO"}},toolWarnings:f};case"none":return{tools:[{functionDeclarations:R}],toolConfig:{functionCallingConfig:{mode:"NONE"}},toolWarnings:f};case"required":return{tools:[{functionDeclarations:R}],toolConfig:{functionCallingConfig:{mode:"ANY"}},toolWarnings:f};case"tool":return{tools:[{functionDeclarations:R}],toolConfig:{functionCallingConfig:{mode:"ANY",allowedFunctionNames:[c.toolName]}},toolWarnings:f};default:throw new b({functionality:`tool choice type: ${B}`})}}function Et(i){return{name:i.name,description:i.description??"",parametersJsonSchema:i.inputSchema}}var Zn=class{constructor(){this.accumulatedArgs={},this.jsonText="",this.pathStack=[],this.stringOpen=!1}processPartialArgs(i){let c="";for(let g of i){let h=g.jsonPath.endsWith("[]"),f=(h?g.jsonPath.slice(0,-2):g.jsonPath).replace(/^\$\./,"");if(!f||f==="$")continue;let y=eo(f),x=no(this.accumulatedArgs,y);if(g.stringValue!=null&&x!==void 0){let v=JSON.stringify(g.stringValue).slice(1,-1);if(gt(this.accumulatedArgs,y,x+g.stringValue),c+=v,g.willContinue!==!0)c+=this.closeOpenString();continue}let _=oo(g);if(_==null){if(x!==void 0){if(typeof x==="string"&&g.willContinue!==!0)c+=this.closeOpenString();continue}if(g.willContinue===!0)continue;gt(this.accumulatedArgs,y,h?[]:{}),c+=this.emitContainer(y,h);continue}gt(this.accumulatedArgs,y,_.value),c+=this.emitNavigationTo(y,g,_.json)}return this.jsonText+=c,{currentJSON:this.accumulatedArgs,textDelta:c}}finalize(){let i=JSON.stringify(this.accumulatedArgs);return{finalJSON:i,closingDelta:i.slice(this.jsonText.length)}}closeOpenString(){if(!this.stringOpen)return"";return this.stringOpen=!1,'"'}ensureRoot(){if(this.pathStack.length===0)return this.pathStack.push({segment:"",isArray:!1,childCount:0}),"{";return""}emitNavigationTo(i,c,g){let h=this.closeOpenString();h+=this.ensureRoot();let f=i.slice(0,-1),y=i[i.length-1],x=this.findCommonStackDepth(f);return h+=this.closeDownTo(x),h+=this.openDownTo(f,y),h+=this.emitLeaf(y,c,g),h}emitContainer(i,c){let g=this.closeOpenString();g+=this.ensureRoot();let h=this.findCommonStackDepth(i);return g+=this.closeDownTo(h),g+=this.openDownTo(i,c?0:""),g}findCommonStackDepth(i){let c=Math.min(this.pathStack.length-1,i.length),g=0;for(let h=0;h<c;h++)if(this.pathStack[h+1].segment===i[h])g++;else break;return g+1}closeDownTo(i){let c="";while(this.pathStack.length>i){let g=this.pathStack.pop();c+=g.isArray?"]":"}"}return c}openDownTo(i,c){let g="",h=this.pathStack.length-1;for(let f=h;f<i.length;f++){let y=i[f],x=this.pathStack[this.pathStack.length-1];if(x.childCount>0)g+=",";if(x.childCount++,typeof y==="string")g+=`${JSON.stringify(y)}:`;let _=typeof(f+1<i.length?i[f+1]:c)==="number";g+=_?"[":"{",this.pathStack.push({segment:y,isArray:_,childCount:0})}return g}emitLeaf(i,c,g){let h="",f=this.pathStack[this.pathStack.length-1];if(f.childCount>0)h+=",";if(f.childCount++,typeof i==="string")h+=`${JSON.stringify(i)}:`;if(c.stringValue!=null&&c.willContinue)h+=g.slice(0,-1),this.stringOpen=!0;else h+=g;return h}};function eo(i){let c=[];for(let g of i.split(".")){let h=g.indexOf("[");if(h===-1)c.push(g);else{if(h>0)c.push(g.slice(0,h));for(let f of g.matchAll(/\[(\d+)\]/g))c.push(parseInt(f[1],10))}}return c}var to=Object.prototype.hasOwnProperty;function Qt(i,c){return to.call(i,c)}function Lt(i,c,g){Object.defineProperty(i,c,{value:g,enumerable:!0,configurable:!0,writable:!0})}function no(i,c){let g=i;for(let h of c){if(g==null||typeof g!=="object")return;let f=g;if(!Qt(f,h))return;g=f[h]}return g}function gt(i,c,g){let h=i;for(let f=0;f<c.length-1;f++){let y=c[f],x=c[f+1];if(!Qt(h,y)||h[y]==null)Lt(h,y,typeof x==="number"?[]:{});h=h[y]}Lt(h,c[c.length-1],g)}function oo(i){let c=i.stringValue??i.numberValue??i.boolValue;if(c!=null)return{value:c,json:JSON.stringify(c)};if("nullValue"in i)return{value:null,json:"null"}}function jt({finishReason:i,hasToolCalls:c}){switch(i){case"STOP":return c?"tool-calls":"stop";case"MAX_TOKENS":case"CONTINUATION":return"length";case"IMAGE_SAFETY":case"RECITATION":case"SAFETY":case"BLOCKLIST":case"PROHIBITED_CONTENT":case"SPII":return"content-filter";case"MALFORMED_FUNCTION_CALL":return"error";default:return"other"}}var io=["HARM_CATEGORY_HATE_SPEECH","HARM_CATEGORY_DANGEROUS_CONTENT","HARM_CATEGORY_HARASSMENT","HARM_CATEGORY_SEXUALLY_EXPLICIT"],so=/(^|[/.])gemini-2\.5(?:[.-]|$)/i,ao={"image/png":[/^gs:\/\/.*$/],"image/jpeg":[/^gs:\/\/.*$/],"image/webp":[/^gs:\/\/.*$/],"application/pdf":[/^gs:\/\/.*$/],"text/plain":[/^gs:\/\/.*$/]},Ke=class i{static[H](c){return te({modelId:c.modelId,config:c.config})}static[Q](c){return new i(c.modelId,c.config)}constructor(c,g){this.specificationVersion="v4",this.modelId=c,this.config=g,this.generateId=g.generateId??C}get provider(){return this.config.provider}get supportedUrls(){return this.config.supportedUrls?.()??{}}static async prepareRequest({modelId:c,config:g,options:{prompt:h,maxOutputTokens:f,temperature:y,topP:x,topK:_,frequencyPenalty:v,presencePenalty:A,stopSequences:R,responseFormat:P,seed:B,tools:N,toolChoice:q,reasoning:V,providerOptions:K,abortSignal:L},isStreaming:k=!1}){let U=[],w=g.provider.includes("vertex")?["googleVertex","vertex"]:["google"],S;for(let _e of w)if(S=await T({provider:_e,providerOptions:K,schema:rt}),S!=null)break;if(S==null&&!w.includes("google"))S=await T({provider:"google",providerOptions:K,schema:rt});let W=g.provider.startsWith("google.vertex.");if(N?.some((_e)=>_e.type==="provider"&&_e.id==="google.vertex_rag_store")&&!W)U.push({type:"other",message:`The 'vertex_rag_store' tool is only supported with the Google Vertex provider and might not be supported or could behave unexpectedly with the current Google provider (${g.provider}).`});if(S?.streamFunctionCallArguments&&!W)U.push({type:"other",message:`'streamFunctionCallArguments' is only supported on the Vertex AI API and will be ignored with the current Google provider (${g.provider}). See https://docs.cloud.google.com/vertex-ai/generative-ai/docs/multimodal/function-calling#streaming-fc`});if(S?.serviceTier&&W)U.push({type:"other",message:"'serviceTier' is a Gemini API option and is not supported on Vertex AI. Use 'sharedRequestType' (and optionally 'requestType') instead. See https://docs.cloud.google.com/vertex-ai/generative-ai/docs/priority-paygo"});if((S?.sharedRequestType||S?.requestType)&&!W)U.push({type:"other",message:`'sharedRequestType' and 'requestType' are Vertex AI options and are ignored with the current Google provider (${g.provider}).`});let J=W&&(S?.sharedRequestType||S?.requestType)?{...S.sharedRequestType&&{"X-Vertex-AI-LLM-Shared-Request-Type":S.sharedRequestType},...S.requestType&&{"X-Vertex-AI-LLM-Request-Type":S.requestType}}:void 0,X=W?void 0:S?.serviceTier,re=S?.imageConfig;if(re!=null&&!W){let{personGeneration:_e,prominentPeople:Te,imageOutputOptions:Je,...Xe}=re,pe=Object.entries({personGeneration:_e,prominentPeople:Te,imageOutputOptions:Je}).filter(([,z])=>z!=null).map(([z])=>`'imageConfig.${z}'`);if(pe.length>0)U.push({type:"other",message:`${pe.join(", ")} ${pe.length===1?"is a Vertex AI option and is":"are Vertex AI options and are"} ignored with the current Google provider (${g.provider}).`}),re=Xe}let ye=c.toLowerCase().startsWith("gemma-"),ue=!W&&so.test(c);if(ue&&v!=null)U.push({type:"unsupported",feature:"frequencyPenalty"});if(ue&&A!=null)U.push({type:"unsupported",feature:"presencePenalty"});let{usesGemini3Features:he}=lt(c),Me=he&&g.downloadToolResultFiles?.supportsGoogleCloudStorageUrls?ao:void 0,{contents:ce,systemInstruction:be}=Vn(g.downloadToolResultFiles?await Wn(h,{abortSignal:L,maxBytes:g.downloadToolResultFiles.maxBytes,supportedUrls:Me}):h,{isGemmaModel:ye,isGemini3Model:he,onWarning:(_e)=>U.push(_e),providerOptionsNames:w,supportsFunctionResponseParts:he,includeFunctionCallIds:!W,supportedFunctionResponseUrls:Me}),{tools:se,toolConfig:we,toolWarnings:Se}=Qn({tools:N,toolChoice:q,modelId:c,isVertexProvider:W}),Re=Vt({tools:N,providerToolNames:{"google.code_execution":"code_execution"}}),ne=S?.thinkingConfig?.thinkingBudget!=null||S?.thinkingConfig?.thinkingLevel!=null?void 0:po({reasoning:V,modelId:c,warnings:U}),me=S?.thinkingConfig||ne?{...ne,...S?.thinkingConfig}:void 0,de=k&&W?S?.streamFunctionCallArguments??!1:void 0,ie=S?.threshold,Y=S?.safetySettings??(ie!=null?io.map((_e)=>({category:_e,threshold:ie})):void 0),Ie=we||de||S?.retrievalConfig?{...we,...de&&{functionCallingConfig:{...we?.functionCallingConfig,streamFunctionCallArguments:!0}},...S?.retrievalConfig&&{retrievalConfig:S.retrievalConfig}}:void 0;return{args:{generationConfig:{maxOutputTokens:f,temperature:y,topK:_,topP:x,frequencyPenalty:ue?void 0:v,presencePenalty:ue?void 0:A,stopSequences:R,seed:B,responseMimeType:P?.type==="json"?"application/json":void 0,responseJsonSchema:P?.type==="json"&&P.schema!=null&&(S?.structuredOutputs??!0)?Xt(P.schema):void 0,...S?.audioTimestamp&&{audioTimestamp:S.audioTimestamp},responseModalities:S?.responseModalities,thinkingConfig:me,...S?.mediaResolution&&{mediaResolution:S.mediaResolution},...re&&{imageConfig:re}},contents:ce,systemInstruction:ye?void 0:be,safetySettings:Y,tools:se,toolConfig:Ie,cachedContent:S?.cachedContent,labels:S?.labels,serviceTier:X,...S?.continuationToken!=null&&{continuationToken:S.continuationToken}},warnings:[...U,...Se],providerOptionsNames:w,extraHeaders:J,toolNameMapping:Re}}async getArgs(c,{isStreaming:g=!1}={}){let{responseFormat:h,tools:f,toolChoice:y}=c,x;if(h?.type==="json"&&h.schema!=null&&f?.some((_)=>_.type==="function")&&/(^|\/)gemini-/i.test(this.modelId)&&(!lt(this.modelId).usesGemini3Features||y?.type==="required"||y?.type==="tool")){let _="json";for(let v=1;f.some((A)=>A.name===_);v++)_=`json_${v}`;x={type:"function",name:_,description:h.description??"Respond with a JSON object.",inputSchema:h.schema}}return{...await i.prepareRequest({modelId:this.modelId,config:this.config,options:x==null?c:{...c,responseFormat:void 0,tools:[...f??[],x],toolChoice:y?.type==="tool"?y:y?.type==="none"?{type:"tool",toolName:x.name}:{type:"required"}},isStreaming:g}),jsonResponseToolName:x?.name}}static convertGenerateContentResponse({config:c,response:g,warnings:h,providerOptionsNames:f,toolNameMapping:y,jsonResponseToolName:x,initialPromptTokenCount:_,groundingMetadataPerRequest:v}){let A=(S)=>Object.fromEntries(f.map((W)=>[W,S])),R=g.candidates?.[0],P=g.promptFeedback?.blockReason,B=Nt(P)?P:void 0,N=R?.finishReason==null&&B!=null,q=R?.finishReason??B,V=[],K=R?.content?.parts??[],L=g.usageMetadata,k,U;for(let S of K)if("executableCode"in S&&S.executableCode?.code){let W=c.generateId();k=W,V.push({type:"tool-call",toolCallId:W,toolName:y?.toCustomToolName("code_execution")??"code_execution",input:JSON.stringify(S.executableCode),providerExecuted:!0})}else if("codeExecutionResult"in S&&S.codeExecutionResult)V.push({type:"tool-result",toolCallId:k,toolName:y?.toCustomToolName("code_execution")??"code_execution",result:{outcome:S.codeExecutionResult.outcome,output:S.codeExecutionResult.output??""}});else if("text"in S&&S.text!=null){if(x!=null&&S.thought!==!0)continue;let W=S.thoughtSignature?A({thoughtSignature:S.thoughtSignature}):void 0;if(S.text.length===0){if(W!=null&&V.length>0){let J=V[V.length-1];J.providerMetadata=W}}else V.push({type:S.thought===!0?"reasoning":"text",text:S.text,providerMetadata:W})}else if("functionCall"in S&&S.functionCall.name!=null){if(S.functionCall.name===x){V.push({type:"text",text:typeof S.functionCall.args==="string"?S.functionCall.args:JSON.stringify(S.functionCall.args??{}),...S.thoughtSignature?{providerMetadata:A({thoughtSignature:S.thoughtSignature})}:{}});continue}V.push({type:"tool-call",toolCallId:S.functionCall.id||c.generateId(),toolName:S.functionCall.name,input:JSON.stringify(S.functionCall.args??{}),providerMetadata:S.thoughtSignature?A({thoughtSignature:S.thoughtSignature}):void 0})}else if("inlineData"in S){let W=S.thought===!0,J=!!S.thoughtSignature;V.push({type:W?"reasoning-file":"file",data:{type:"data",data:S.inlineData.data},mediaType:S.inlineData.mimeType,providerMetadata:J?A({thoughtSignature:S.thoughtSignature}):void 0})}else if("toolCall"in S&&S.toolCall){let W=S.toolCall.id||c.generateId();U=W,V.push({type:"tool-call",toolCallId:W,toolName:`server:${S.toolCall.toolType}`,input:JSON.stringify(S.toolCall.args??{}),providerExecuted:!0,dynamic:!0,providerMetadata:S.thoughtSignature?A({thoughtSignature:S.thoughtSignature,serverToolCallId:W,serverToolType:S.toolCall.toolType}):A({serverToolCallId:W,serverToolType:S.toolCall.toolType})})}else if("toolResponse"in S&&S.toolResponse){let W=U||S.toolResponse.id||c.generateId();V.push({type:"tool-result",toolCallId:W,toolName:`server:${S.toolResponse.toolType}`,result:S.toolResponse.response??{},providerMetadata:S.thoughtSignature?A({thoughtSignature:S.thoughtSignature,serverToolCallId:W,serverToolType:S.toolResponse.toolType}):A({serverToolCallId:W,serverToolType:S.toolResponse.toolType})}),U=void 0}let w=Ut({groundingMetadata:R?.groundingMetadata,generateId:c.generateId})??[];for(let S of w)V.push(S);return{content:V,finishReason:{unified:N?"content-filter":jt({finishReason:q,hasToolCalls:V.some((S)=>S.type==="tool-call"&&!S.providerExecuted)}),raw:q},usage:xt(L),warnings:h,providerMetadata:A({promptFeedback:g.promptFeedback??null,groundingMetadata:R?.groundingMetadata??null,...v!=null?{groundingMetadataPerRequest:v}:{},urlContextMetadata:R?.urlContextMetadata??null,safetyRatings:R?.safetyRatings??null,usageMetadata:L??null,finishMessage:R?.finishMessage??null,serviceTier:L?.serviceTier??null,...R?.continuationToken!=null?{continuationToken:R.continuationToken}:{},..._!=null?{initialPromptTokenCount:_}:{}}),response:{id:g.responseId??void 0}}}async doGenerate(c){let{args:g,warnings:h,providerOptionsNames:f,extraHeaders:y,toolNameMapping:x,jsonResponseToolName:_}=await this.getArgs(c),v=I(this.config.headers?await M(this.config.headers):void 0,c.headers,y),A=(w)=>O({url:`${this.config.baseURL}/${He(this.modelId)}:generateContent`,headers:v,body:w,failedResponseHandler:ge,successfulResponseHandler:E(sn),abortSignal:c.abortSignal,fetch:this.config.fetch}),{responseHeaders:R,value:P,rawValue:B}=await A(g),N=[],q=[],V,K=P.usageMetadata?.promptTokenCount,L=!1;while(!0){let w=P.candidates?.[0];q.push(w?.groundingMetadata??null);let S=w?.finishReason==="CONTINUATION"?w.continuationToken:void 0;if(V=dt(V,P.usageMetadata??void 0),S==null)break;N.push(...i.convertGenerateContentResponse({config:this.config,response:P,warnings:h,providerOptionsNames:f,toolNameMapping:x,jsonResponseToolName:_}).content),L=!0,{responseHeaders:R,value:P,rawValue:B}=await A({...g,continuationToken:S})}let k=i.convertGenerateContentResponse({config:this.config,response:{...P,usageMetadata:V},warnings:h,providerOptionsNames:f,toolNameMapping:x,jsonResponseToolName:_,initialPromptTokenCount:L?K:void 0,groundingMetadataPerRequest:L?q:void 0}),U={...k,content:[...N,...k.content]};return{...U,request:{body:g},response:{...U.response,headers:R,body:B}}}async doStream(c){let{args:g,warnings:h,providerOptionsNames:f,extraHeaders:y,toolNameMapping:x,jsonResponseToolName:_}=await this.getArgs(c,{isStreaming:!0}),v=(ie)=>Object.fromEntries(f.map((Y)=>[Y,ie])),A=I(this.config.headers?await M(this.config.headers):void 0,c.headers,y),R=(ie)=>O({url:`${this.config.baseURL}/${He(this.modelId)}:streamGenerateContent?alt=sse`,headers:A,body:ie,failedResponseHandler:ge,successfulResponseHandler:ze(yo),abortSignal:c.abortSignal,fetch:this.config.fetch}),{responseHeaders:P,value:B}=await R(g),N=[],q=null,V=Nn({stream:B,getContinuationToken:(ie)=>{let Y=ie.candidates?.[0];if(Y?.groundingMetadata!=null)q=Y.groundingMetadata;return Y?.finishReason==="CONTINUATION"?Y.continuationToken??void 0:void 0},continueStream:async(ie)=>{let{value:Y}=await R({...g,continuationToken:ie});return N.push(q),q=null,Y}}),K={unified:"interrupted",raw:void 0},L=void 0,k=void 0,U=void 0,w=null,S=null,W=null,J=null,X=null,re=null,ye,ue=this.config.generateId,he=!1,Me=!1,ce=null,be=null,se=0,we=new Set,Se,Re,ne=[],me=(ie)=>{let Y=ne.pop();if(Y==null)return;let{finalJSON:Ie,closingDelta:_e}=Y.accumulator.finalize();if(_e.length>0)ie.enqueue({type:"tool-input-delta",id:Y.toolCallId,delta:_e,providerMetadata:Y.providerMetadata});ie.enqueue({type:"tool-input-end",id:Y.toolCallId,providerMetadata:Y.providerMetadata}),ie.enqueue({type:"tool-call",toolCallId:Y.toolCallId,toolName:Y.toolName,input:Ie,providerMetadata:Y.providerMetadata}),he=!0},de={stream:V.pipeThrough(new TransformStream({start(ie){ie.enqueue({type:"stream-start",warnings:h})},transform(ie,Y){if("type"in ie){K={unified:"interrupted",raw:void 0};return}if(c.includeRawChunks)Y.enqueue({type:"raw",rawValue:ie.rawValue});if(!ie.success){if(K.unified==="interrupted")K={unified:"error",raw:void 0};Y.enqueue({type:"error",error:ie.error});return}let Ie=ie.value;if(Ie.error!=null){K={unified:"error",raw:void 0};let pe=Ie.error;Y.enqueue({type:"error",error:Kt({message:pe.message,type:pe.status,code:pe.code??void 0,statusCode:pe.code??void 0,isRetryable:pe.code!=null&&(pe.code===408||pe.code===409||pe.code===429||pe.code>=500),data:pe})});return}if(!Me&&Ie.responseId!=null)Me=!0,Y.enqueue({type:"response-metadata",id:Ie.responseId});let _e=Ie.usageMetadata;if(_e!=null)L=_e;if(Ie.promptFeedback!=null&&ye==null){if(w=Ie.promptFeedback,Nt(Ie.promptFeedback.blockReason))ye=Ie.promptFeedback.blockReason,K={unified:"content-filter",raw:ye}}let Te=Ie.candidates?.[0];if(Te!=null){if(Te.groundingMetadata!=null)S=Te.groundingMetadata;if(Te.urlContextMetadata!=null)W=Te.urlContextMetadata;if(Te.safetyRatings!=null)J=Te.safetyRatings;if(Te.finishMessage!=null)X=Te.finishMessage;if(Te.continuationToken!=null)re=Te.continuationToken}if(ye!=null||Te==null)return;let Je=Te.content,Xe=Ut({groundingMetadata:Te.groundingMetadata,generateId:ue});if(Xe!=null){for(let pe of Xe)if(pe.sourceType==="url"&&!we.has(pe.url))we.add(pe.url),Y.enqueue(pe)}if(Je!=null){let pe=Je.parts??[];for(let z of pe)if("executableCode"in z&&z.executableCode?.code){let Z=ue();Se=Z,Y.enqueue({type:"tool-call",toolCallId:Z,toolName:x.toCustomToolName("code_execution"),input:JSON.stringify(z.executableCode),providerExecuted:!0})}else if("codeExecutionResult"in z&&z.codeExecutionResult){let Z=Se;if(Z)Y.enqueue({type:"tool-result",toolCallId:Z,toolName:x.toCustomToolName("code_execution"),result:{outcome:z.codeExecutionResult.outcome,output:z.codeExecutionResult.output??""}})}else if("text"in z&&z.text!=null){let Z=z.thoughtSignature?v({thoughtSignature:z.thoughtSignature}):void 0;if(z.text.length===0){if(Z!=null&&ce!==null)Y.enqueue({type:"text-delta",id:ce,delta:"",providerMetadata:Z})}else if(z.thought===!0){if(ce!==null)Y.enqueue({type:"text-end",id:ce}),ce=null;if(be===null)be=String(se++),Y.enqueue({type:"reasoning-start",id:be,providerMetadata:Z});Y.enqueue({type:"reasoning-delta",id:be,delta:z.text,providerMetadata:Z})}else{if(be!==null)Y.enqueue({type:"reasoning-end",id:be}),be=null;if(ce===null)ce=String(se++),Y.enqueue({type:"text-start",id:ce,providerMetadata:Z});Y.enqueue({type:"text-delta",id:ce,delta:z.text,providerMetadata:Z})}}else if("inlineData"in z){if(ce!==null)Y.enqueue({type:"text-end",id:ce}),ce=null;if(be!==null)Y.enqueue({type:"reasoning-end",id:be}),be=null;let Z=z.thought===!0,Ge=z.thoughtSignature?v({thoughtSignature:z.thoughtSignature}):void 0;Y.enqueue({type:Z?"reasoning-file":"file",mediaType:z.inlineData.mimeType,data:{type:"data",data:z.inlineData.data},providerMetadata:Ge})}else if("toolCall"in z&&z.toolCall){let Z=z.toolCall.id||ue();Re=Z;let Ge=v({...z.thoughtSignature?{thoughtSignature:z.thoughtSignature}:{},serverToolCallId:Z,serverToolType:z.toolCall.toolType});Y.enqueue({type:"tool-call",toolCallId:Z,toolName:`server:${z.toolCall.toolType}`,input:JSON.stringify(z.toolCall.args??{}),providerExecuted:!0,dynamic:!0,providerMetadata:Ge})}else if("toolResponse"in z&&z.toolResponse){let Z=Re||z.toolResponse.id||ue(),Ge=v({...z.thoughtSignature?{thoughtSignature:z.thoughtSignature}:{},serverToolCallId:Z,serverToolType:z.toolResponse.toolType});Y.enqueue({type:"tool-result",toolCallId:Z,toolName:`server:${z.toolResponse.toolType}`,result:z.toolResponse.response??{},providerMetadata:Ge}),Re=void 0}for(let z of pe){if(!("functionCall"in z))continue;let Z=z.thoughtSignature?v({thoughtSignature:z.thoughtSignature}):void 0,Ge=z.functionCall.partialArgs!=null||z.functionCall.name!=null&&z.functionCall.willContinue===!0,In=z.functionCall.name==null&&z.functionCall.args==null&&z.functionCall.partialArgs==null&&z.functionCall.willContinue==null,kn=z.functionCall.name!=null&&z.functionCall.args!=null&&z.functionCall.partialArgs==null,xn=z.functionCall.name!=null&&z.functionCall.args==null&&z.functionCall.partialArgs==null&&z.functionCall.willContinue!==!0;if(Ge){if(z.functionCall.name!=null){let xe=z.functionCall.id||ue(),Le=new Zn;if(ne.push({toolCallId:xe,toolName:z.functionCall.name,accumulator:Le,providerMetadata:Z}),Y.enqueue({type:"tool-input-start",id:xe,toolName:z.functionCall.name,providerMetadata:Z}),z.functionCall.partialArgs!=null){let Ne=z.functionCall.partialArgs,{textDelta:Ze}=Le.processPartialArgs(Ne);if(Ze.length>0)Y.enqueue({type:"tool-input-delta",id:xe,delta:Ze,providerMetadata:Z});if(z.functionCall.willContinue!==!0&&Ne.every((Rn)=>Rn.willContinue!==!0))me(Y)}}else if(z.functionCall.partialArgs!=null&&ne.length>0){let xe=ne[ne.length-1],Le=z.functionCall.partialArgs,{textDelta:Ne}=xe.accumulator.processPartialArgs(Le);if(Ne.length>0)Y.enqueue({type:"tool-input-delta",id:xe.toolCallId,delta:Ne,providerMetadata:Z});if(z.functionCall.willContinue!==!0&&Le.every((Ze)=>Ze.willContinue!==!0))me(Y)}}else if(In&&ne.length>0)me(Y);else if(kn){let xe=z.functionCall.id||ue(),Le=z.functionCall.name,Ne=typeof z.functionCall.args==="string"?z.functionCall.args:JSON.stringify(z.functionCall.args??{});Y.enqueue({type:"tool-input-start",id:xe,toolName:Le,providerMetadata:Z}),Y.enqueue({type:"tool-input-delta",id:xe,delta:Ne,providerMetadata:Z}),Y.enqueue({type:"tool-input-end",id:xe,providerMetadata:Z}),Y.enqueue({type:"tool-call",toolCallId:xe,toolName:Le,input:Ne,providerMetadata:Z}),he=!0}else if(xn){let xe=z.functionCall.id||ue(),Le=z.functionCall.name;Y.enqueue({type:"tool-input-start",id:xe,toolName:Le,providerMetadata:Z}),Y.enqueue({type:"tool-input-end",id:xe,providerMetadata:Z}),Y.enqueue({type:"tool-call",toolCallId:xe,toolName:Le,input:"{}",providerMetadata:Z}),he=!0}}}if(Te.finishReason==="CONTINUATION"){if(k==null)U=L?.promptTokenCount;k=dt(k,L),L=void 0}if(Te.finishReason!=null)K={unified:jt({finishReason:Te.finishReason,hasToolCalls:he}),raw:Te.finishReason}},flush(ie){if(L=dt(k,L),ce!==null)ie.enqueue({type:"text-end",id:ce});if(be!==null)ie.enqueue({type:"reasoning-end",id:be});ie.enqueue({type:"finish",finishReason:K,usage:xt(L),providerMetadata:v({promptFeedback:w,groundingMetadata:S,...N.length>0?{groundingMetadataPerRequest:[...N,q]}:{},urlContextMetadata:W,safetyRatings:J,usageMetadata:L??null,finishMessage:X,serviceTier:L?.serviceTier??null,...re!=null&&(K.raw==="MAX_TOKENS"||K.raw==="CONTINUATION")?{continuationToken:re}:{},...U!=null?{initialPromptTokenCount:U}:{}})})}})),response:{headers:P},request:{body:g}};return{...de,stream:_==null?de.stream:de.stream.pipeThrough(gp(_))}}};function lo(){return 65536}function uo(i){let c=i.toLowerCase();if(c.includes("2.5-pro")||c.includes("gemini-3-pro-image"))return 32768;return 24576}function co(i){return i.toLowerCase().includes("2.5-pro")?128:0}function po({reasoning:i,modelId:c,warnings:g}){if(!Pe(i))return;if(lt(c).usesGemini3Features&&!c.includes("gemini-3-pro-image"))return go({reasoning:i,modelId:c,warnings:g});return mo({reasoning:i,modelId:c,warnings:g})}function go({reasoning:i,modelId:c,warnings:g}){let h=ho(c),f=ut({reasoning:i,effortMap:{...h==="minimal"&&{minimal:"minimal"},low:"low",medium:"medium",high:"high"},warnings:g});if(f==null)return;return{thinkingLevel:f}}function ho(i){let c=/(?:^|[/.])(gemini-[^/]*)$/i.exec(i)?.[1].toLowerCase();if(c==="gemini-flash-latest")return"low";let g=/^gemini-(\d+)(?:\.\d+)?-pro(?:$|-)/.exec(c??"");if(Number(g?.[1])>=3)return"low";let h=/^gemini-(\d+)\.(\d+)-flash(?:$|-(?!lite(?:-|$)))/.exec(c??"");if(h==null)return"minimal";let f=Number(h[1]),y=Number(h[2]);return f>3||f===3&&y>=7?"low":"minimal"}function mo({reasoning:i,modelId:c,warnings:g}){let h=co(c);if(i==="none"&&h===0)return{thinkingBudget:0};return{thinkingBudget:nn({reasoning:i,maxOutputTokens:lo(),maxReasoningBudget:uo(c),minReasoningBudget:h,warnings:g})}}function Ut({groundingMetadata:i,generateId:c}){if(!i?.groundingChunks)return;let g=[];for(let h of i.groundingChunks)if(h.web!=null)g.push({type:"source",sourceType:"url",id:c(),url:h.web.uri,title:h.web.title??void 0});else if(h.image!=null)g.push({type:"source",sourceType:"url",id:c(),url:h.image.sourceUri,title:h.image.title??void 0});else if(h.retrievedContext!=null){let f=h.retrievedContext.uri,y=h.retrievedContext.fileSearchStore;if(f&&(f.startsWith("http://")||f.startsWith("https://")))g.push({type:"source",sourceType:"url",id:c(),url:f,title:h.retrievedContext.title??void 0});else if(f){let x=h.retrievedContext.title??"Unknown Document",_="application/octet-stream",v=void 0;if(f.endsWith(".pdf"))_="application/pdf",v=f.split("/").pop();else if(f.endsWith(".txt"))_="text/plain",v=f.split("/").pop();else if(f.endsWith(".docx"))_="application/vnd.openxmlformats-officedocument.wordprocessingml.document",v=f.split("/").pop();else if(f.endsWith(".doc"))_="application/msword",v=f.split("/").pop();else if(f.match(/\.(md|markdown)$/))_="text/markdown",v=f.split("/").pop();else v=f.split("/").pop();g.push({type:"source",sourceType:"document",id:c(),mediaType:_,title:x,filename:v})}else if(y){let x=h.retrievedContext.title??"Unknown Document";g.push({type:"source",sourceType:"document",id:c(),mediaType:"application/octet-stream",title:x,filename:y.split("/").pop()})}}else if(h.maps!=null){if(h.maps.uri)g.push({type:"source",sourceType:"url",id:c(),url:h.maps.uri,title:h.maps.title??void 0})}return g.length>0?g:void 0}var Zt=()=>t({webSearchQueries:o(e()).nullish(),imageSearchQueries:o(e()).nullish(),retrievalQueries:o(e()).nullish(),searchEntryPoint:t({renderedContent:e()}).nullish(),groundingChunks:o(t({web:t({uri:e(),title:e().nullish()}).nullish(),image:t({sourceUri:e(),imageUri:e(),title:e().nullish(),domain:e().nullish()}).nullish(),retrievedContext:t({uri:e().nullish(),title:e().nullish(),text:e().nullish(),fileSearchStore:e().nullish(),customMetadata:o(t({key:e(),stringValue:e().nullish(),numericValue:n().nullish(),stringListValue:t({values:o(e()).nullish()}).nullish()})).nullish()}).nullish(),maps:t({uri:e().nullish(),title:e().nullish(),text:e().nullish(),placeId:e().nullish()}).nullish()})).nullish(),groundingSupports:o(t({segment:t({startIndex:n().nullish(),endIndex:n().nullish(),text:e().nullish()}).nullish(),segment_text:e().nullish(),groundingChunkIndices:o(n()).nullish(),supportChunkIndices:o(n()).nullish(),confidenceScores:o(n()).nullish(),confidenceScore:o(n()).nullish()})).nullish(),retrievalMetadata:p([t({webDynamicRetrievalScore:n()}),t({})]).nullish()}),fo=()=>t({jsonPath:e(),stringValue:e().nullish(),numberValue:n().nullish(),boolValue:r().nullish(),nullValue:m().nullish(),willContinue:r().nullish()}),en=()=>t({parts:o(p([t({functionCall:t({id:e().nullish(),name:e().nullish(),args:m().nullish(),partialArgs:o(fo()).nullish(),willContinue:r().nullish()}),thoughtSignature:e().nullish()}),t({inlineData:t({mimeType:e(),data:e()}),thought:r().nullish(),thoughtSignature:e().nullish()}),t({toolCall:t({toolType:e(),args:m().nullish(),id:e()}),thoughtSignature:e().nullish()}),t({toolResponse:t({toolType:e(),response:m().nullish(),id:e()}),thoughtSignature:e().nullish()}),t({executableCode:t({language:e(),code:e()}).nullish(),codeExecutionResult:t({outcome:e(),output:e().nullish()}).nullish(),text:e().nullish(),thought:r().nullish(),thoughtSignature:e().nullish()})])).nullish()}),ct=()=>t({category:e().nullish(),probability:e().nullish(),probabilityScore:n().nullish(),severity:e().nullish(),severityScore:n().nullish(),blocked:r().nullish()}),tt=()=>o(t({modality:e(),tokenCount:n()}).loose()).nullish(),tn=()=>t({cachedContentTokenCount:n().nullish(),thoughtsTokenCount:n().nullish(),promptTokenCount:n().nullish(),candidatesTokenCount:n().nullish(),toolUsePromptTokenCount:n().nullish(),totalTokenCount:n().nullish(),trafficType:e().nullish(),serviceTier:e().nullish(),promptTokensDetails:tt(),cacheTokensDetails:tt(),candidatesTokensDetails:tt(),toolUsePromptTokensDetails:tt()}).loose(),on=()=>t({urlMetadata:o(t({retrievedUrl:e(),urlRetrievalStatus:e()})).nullish()}),sn=u(()=>l(t({responseId:e().nullish(),candidates:o(t({content:en().nullish().or(t({}).strict()),finishReason:e().nullish(),finishMessage:e().nullish(),continuationToken:e().nullish(),safetyRatings:o(ct()).nullish(),groundingMetadata:Zt().nullish(),urlContextMetadata:on().nullish()})).nullish(),usageMetadata:tn().nullish(),promptFeedback:t({blockReason:e().nullish(),safetyRatings:o(ct()).nullish()}).nullish()}))),yo=u(()=>l(t({error:zt().nullish(),responseId:e().nullish(),candidates:o(t({content:en().nullish(),finishReason:e().nullish(),finishMessage:e().nullish(),continuationToken:e().nullish(),safetyRatings:o(ct()).nullish(),groundingMetadata:Zt().nullish(),urlContextMetadata:on().nullish()})).nullish(),usageMetadata:tn().nullish(),promptFeedback:t({blockReason:e().nullish(),safetyRatings:o(ct()).nullish()}).nullish()})));function Nt(i){return i!=null&&i!==""&&i!=="BLOCK_REASON_UNSPECIFIED"&&i!=="BLOCKED_REASON_UNSPECIFIED"}var vo=()=>ae({searchTypes:t({webSearch:t({}).optional(),imageSearch:t({}).optional()}).optional(),timeRangeFilter:t({startTime:e(),endTime:e()}).optional()}),bo=G({id:"google.google_search",inputSchema:u(()=>l(t({}))),outputSchema:u(()=>l(t({})))}),an=u(()=>l(t({googleSearch:vo().optional()}))),To=2147483648,_o=20000000,Co=new Set(["text","reasoning","source","tool-call","tool-result"]);function wo(i){for(let c of i){let g=c.type;if(g!=="text"&&g!=="image")throw new b({functionality:`batch request type: ${g}`,message:`The Google Batch API does not support batch requests with type "${g}".`})}}var Ct=()=>t({code:p([n(),e()]).nullish(),message:e().nullish(),status:e().nullish()}),So=()=>t({requestCount:p([e(),n()]).nullish(),successfulRequestCount:p([e(),n()]).nullish(),failedRequestCount:p([e(),n()]).nullish(),pendingRequestCount:p([e(),n()]).nullish()}),Gt=()=>t({responsesFile:e().nullish(),inlinedResponses:t({inlinedResponses:o(t({metadata:t({key:e()}),response:m().nullish(),error:Ct().nullish()}))}).nullish()}),rn=()=>t({name:e(),metadata:t({state:e().nullish(),createTime:e().nullish(),batchStats:So().nullish(),output:Gt().nullish()}).nullish(),done:r().nullish(),error:Ct().nullish(),response:Gt().nullish()}),ht=u(()=>l(rn())),Io=u(()=>l(t({operations:o(rn()).nullish(),nextPageToken:e().nullish()}))),ko=u(()=>l(t({}))),xo=u(()=>l(t({file:t({name:e(),expirationTime:e().nullish()})}))),Ro=u(()=>l(t({key:e(),response:m().nullish(),error:Ct().nullish()}))),Oo=u(()=>l(t({candidates:o(m()).nullish(),promptFeedback:t({blockReason:e().nullish()}).nullish()}))),Mo=class{constructor(i){this.specificationVersion="v4",this.provider=i.provider,this.batchConfig=i.config,this.supportedUrls=i.supportedUrls,this.batchGenerateId=i.config.generateId??C,this.maxLineBytes=i.maxLineBytes}async doStartBatch(i){wo(i.requests);let c=jo(i.requests),g=[],h=`ai-sdk-batch-${this.batchGenerateId()}`,f=[],y={batch:{displayName:h,...i.webhookUrl!=null&&{webhookConfig:{uris:[i.webhookUrl]}},inputConfig:{requests:{requests:f}}}},x=new TextEncoder,_=x.encode(JSON.stringify(y)).byteLength,v;for(let V of i.requests){let K=V.type==="text"?await Ke.prepareRequest({modelId:V.modelId,config:this.batchConfig,options:V.options}):await this.prepareImageRequest(V),L={request:K.args,metadata:{key:V.id}};if(v==null){let k=x.encode(JSON.stringify(L)).byteLength,U=_+k+(f.length>0?1:0);if(U<_o)f.push(L),_=U;else{v=[];for(let w of f)v.push(JSON.stringify({key:w.metadata.key,request:w.request}),`
7
+ `);f.length=0,v.push(JSON.stringify({key:V.id,request:K.args}),`
8
+ `)}}else v.push(JSON.stringify({key:V.id,request:K.args}),`
9
+ `);for(let k of K.warnings)g.push({requestId:V.id,warning:k})}let A=await this.getHeaders(i.headers),R=`${this.batchConfig.baseURL}/${He(c)}:batchGenerateContent`;if(v==null){let{value:V}=await O({url:R,headers:A,body:y,failedResponseHandler:ge,successfulResponseHandler:E(ht),abortSignal:i.abortSignal,fetch:this.batchConfig.fetch});return{batchId:V.name,...Ve(V),warnings:g}}let P=new Blob(v,{type:"application/jsonl"});if(v.length=0,P.size>To)throw new F({argument:"requests",message:"Google batch input files must not exceed 2 GB."});let{value:B}=await O({url:`${this.getBaseOrigin()}/upload/v1beta/files`,headers:I(A,{"X-Goog-Upload-Protocol":"resumable","X-Goog-Upload-Command":"start","X-Goog-Upload-Header-Content-Length":String(P.size),"X-Goog-Upload-Header-Content-Type":"application/jsonl"}),body:{file:{display_name:`${h}-input`}},failedResponseHandler:ge,successfulResponseHandler:Lo,abortSignal:i.abortSignal,fetch:this.batchConfig.fetch}),{value:N}=await Br({url:B,headers:{"X-Goog-Upload-Offset":"0","X-Goog-Upload-Command":"upload, finalize","Content-Type":"application/jsonl"},body:{content:P,values:{byteLength:P.size,mediaType:"application/jsonl"}},failedResponseHandler:ge,successfulResponseHandler:E(xo),abortSignal:i.abortSignal,fetch:this.batchConfig.fetch}),{value:q}=await O({url:R,headers:A,body:{batch:{displayName:h,...i.webhookUrl!=null&&{webhookConfig:{uris:[i.webhookUrl]}},inputConfig:{fileName:N.file.name}}},failedResponseHandler:ge,successfulResponseHandler:E(ht),abortSignal:i.abortSignal,fetch:this.batchConfig.fetch});return{batchId:q.name,...Ve(q),providerMetadata:{google:{inputFileId:N.file.name,...N.file.expirationTime!=null?{inputFileExpiresAt:N.file.expirationTime}:{}}},warnings:g}}async doGetBatchStatus(i){return Ve(await this.retrieveBatch(i))}async doCancelBatch(i){return await O({url:`${this.batchConfig.baseURL}/${i.batchId}:cancel`,headers:await this.getHeaders(i.headers),body:{},failedResponseHandler:ge,successfulResponseHandler:E(ko),abortSignal:i.abortSignal,fetch:this.batchConfig.fetch}),{}}async doListBatches(i){let c=new URL(`${this.batchConfig.baseURL}/batches`);if(i.limit!=null)c.searchParams.set("pageSize",String(i.limit));if(i.cursor!=null)c.searchParams.set("pageToken",i.cursor);let{value:g}=await Ce({url:c.toString(),headers:await this.getHeaders(i.headers),failedResponseHandler:ge,successfulResponseHandler:E(Io),abortSignal:i.abortSignal,fetch:this.batchConfig.fetch,validateUrl:!1});return{batches:(g.operations??[]).map((h)=>({batchId:h.name,...Ve(h)})),...g.nextPageToken!=null?{nextCursor:g.nextPageToken}:{}}}async doGetBatchResults(i){let c=await this.retrieveBatch(i),g=Ve(c);if(g.status==="pending")throw new F({argument:"batchId",message:`Google batch "${i.batchId}" is not complete.`});let h=c.metadata?.output?.inlinedResponses?.inlinedResponses??c.response?.inlinedResponses?.inlinedResponses;if(h!=null)return na(this.iterateBatchResults(h.map((_)=>({key:_.metadata.key,response:_.response,error:_.error}))));let f=c.metadata?.output?.responsesFile??c.response?.responsesFile;if(f==null){if(g.status==="completed")throw new ve({data:c,message:`Google batch "${i.batchId}" completed without batch output.`});return new ReadableStream({start(_){_.close()}})}let y=f.split("/").map((_)=>encodeURIComponent(_)).join("/"),{value:x}=await Ce({url:`${this.getBaseOrigin()}/download/v1beta/${y}:download?alt=media`,headers:await this.getHeaders(i.headers),failedResponseHandler:ge,successfulResponseHandler:Fr(Ro,{maxLineBytes:this.maxLineBytes}),abortSignal:i.abortSignal,fetch:this.batchConfig.fetch,validateUrl:!1});return na(this.iterateBatchResults(x))}async retrieveBatch(i){let{value:c}=await Ce({url:`${this.batchConfig.baseURL}/${i.batchId}`,headers:await this.getHeaders(i.headers),failedResponseHandler:ge,successfulResponseHandler:E(ht),abortSignal:i.abortSignal,fetch:this.batchConfig.fetch,validateUrl:!1});return c}async*iterateBatchResults(i){for await(let c of i){if(c.error!=null){let _=ln(c.error,"Google batch request failed."),v=c.error.status==="CANCELLED"||String(c.error.code)==="1"?"cancelled":"failed";yield{type:"text",id:c.key,status:v,error:_};continue}if(c.response==null){yield{type:"text",id:c.key,status:"failed",error:{message:"Google returned a batch result without a response or error.",code:"invalid_batch_result"}};continue}let g=await De({value:c.response,schema:Oo});if(g.success&&(g.value.candidates==null||g.value.candidates.length===0)){let _=g.value.promptFeedback??void 0,v=_?.blockReason??void 0;yield{type:"text",id:c.key,status:"failed",error:{message:v==null?"Google returned a batch response without any candidates.":`Google blocked the batch request (${v}).`,code:v==null?"invalid_response":"prompt_blocked",...v!=null?{type:v}:{}},..._!=null?{providerMetadata:{google:{promptFeedback:{blockReason:_.blockReason??null}}}}:{}};continue}let h=await De({value:c.response,schema:sn});if(!h.success){yield{type:"text",id:c.key,status:"failed",error:{message:"Google returned an invalid GenerateContent batch result.",code:"invalid_response"}};continue}let f=Ke.convertGenerateContentResponse({config:this.batchConfig,response:h.value,warnings:[],providerOptionsNames:["google"]}),y=Uo(f);if(y!=null){yield{type:"image",id:c.key,status:"succeeded",result:y};continue}let x=f.content.find((_)=>!Co.has(_.type));if(x!=null){yield{type:"text",id:c.key,status:"failed",error:{message:`Google returned a "${x.type}" content block, but that content is not supported in AI SDK text batches.`,code:"unsupported_content"}};continue}yield{type:"text",id:c.key,status:"succeeded",result:f}}}async prepareImageRequest(i){let{prompt:c,n:g,size:h,aspectRatio:f,seed:y,files:x,mask:_,providerOptions:v}=i.options,A=[];if(_!=null)throw new b({functionality:"mask-based image editing in Google batches"});if(g>1)throw new b({functionality:"multiple images per Google batch request"});if(h!=null)A.push({type:"unsupported",feature:"size",details:"This model does not support the `size` option. Use `aspectRatio` instead."});let R=[];if(c!=null)R.push({type:"text",text:c});for(let L of x??[])R.push(L.type==="url"?{type:"file",data:{type:"url",url:new URL(L.url)},mediaType:"image/*"}:{type:"file",data:{type:"data",data:L.data},mediaType:L.mediaType});let P=await T({provider:"google",providerOptions:v,schema:an}),{responseModalities:B,imageConfig:N,...q}=await T({provider:"google",providerOptions:v,schema:rt})??{},V=await T({provider:"google",providerOptions:{google:{...q,responseModalities:["IMAGE"],imageConfig:f!=null||N!=null?{...N,...f!=null?{aspectRatio:f}:{}}:void 0}},schema:rt}),K=await Ke.prepareRequest({modelId:i.modelId,config:this.batchConfig,options:{prompt:[{role:"user",content:R}],seed:y,providerOptions:{google:V??{responseModalities:["IMAGE"]}},tools:P?.googleSearch!=null?[{type:"provider",id:"google.google_search",name:"google_search",args:P.googleSearch}]:void 0}});return{...K,warnings:[...A,...K.warnings]}}async getHeaders(i){return I(this.batchConfig.headers?await M(this.batchConfig.headers):void 0,i)}getBaseOrigin(){return this.batchConfig.baseURL.replace(/\/v1beta$/,"")}};function Ve(i){let c=i.metadata?.state??void 0,g=Ao(i.metadata?.batchStats),h=i.metadata?.createTime??void 0,f=i.error!=null?ln(i.error,"Google batch failed."):void 0;return{status:Eo({rawStatus:c,done:i.done??void 0,hasError:f!=null}),...c!=null?{rawStatus:c}:{},...g!=null?{requestCounts:g}:{},...f!=null?{error:f}:{},...h!=null?{createdAt:h}:{}}}function Eo({rawStatus:i,done:c,hasError:g}){if(g)return"failed";if(i==null)return c?"completed":"pending";switch(i.replace(/^(?:BATCH|JOB)_STATE_/,"")){case"SUCCEEDED":return"completed";case"FAILED":case"CANCELLED":case"EXPIRED":return"failed";default:return"pending"}}function Ao(i){let c=ot(i?.requestCount),g=ot(i?.successfulRequestCount??0),h=ot(i?.failedRequestCount??0),f=ot(i?.pendingRequestCount??0);return Lr({total:c,pending:f,completed:g,failed:h})}function ot(i){let c=typeof i==="string"&&/^\d+$/.test(i)?Number(i):i;return typeof c==="number"&&Number.isSafeInteger(c)&&c>=0?c:void 0}function ln(i,c){return{message:i.message??c,...i.status!=null?{type:i.status}:{},...i.code!=null?{code:String(i.code)}:{}}}var Lo=async({response:i})=>{let c=i.headers.get("x-goog-upload-url");if(c==null)throw new ve({data:i.headers,message:"Google did not return a resumable upload URL."});return{value:c}};function jo(i){let c=i[0]?.modelId;if(c==null)throw new F({argument:"requests",message:"Google batches require at least one request."});for(let g of i)if(g.modelId!==c)throw new F({argument:"requests",message:"Google batches require every request to use the same model because the model is part of the batch endpoint."});return c}function Uo(i){let c=i.content.flatMap((h)=>h.type==="file"&&h.mediaType.startsWith("image/")&&h.data.type==="data"?[j(h.data.data)]:[]);if(c.length===0)return;let g=i.providerMetadata?.google??{};return{images:c,warnings:i.warnings,providerMetadata:{google:{...g,images:c.map(()=>({}))}},response:{timestamp:new Date,modelId:i.response?.modelId??"",headers:i.response?.headers},usage:{inputTokens:i.usage.inputTokens.total,outputTokens:i.usage.outputTokens.total,totalTokens:(i.usage.inputTokens.total??0)+(i.usage.outputTokens.total??0)}}}var No=G({id:"google.enterprise_web_search",inputSchema:u(()=>l(t({}))),outputSchema:u(()=>l(t({})))});u(()=>l(ae({fileSearchStoreNames:o(e()).describe("The names of the file_search_stores to retrieve from. Example: `fileSearchStores/my-file-search-store-123`"),topK:n().int().positive().describe("The number of file search retrieval chunks to retrieve.").optional(),metadataFilter:e().describe("Metadata filter to apply to the file search retrieval documents. See https://google.aip.dev/160 for the syntax of the filter expression.").optional()})));var Go=G({id:"google.file_search",inputSchema:u(()=>l(t({}))),outputSchema:u(()=>l(t({})))}),Po={googleSearch:bo,enterpriseWebSearch:No,googleMaps:G({id:"google.google_maps",inputSchema:u(()=>l(t({}))),outputSchema:u(()=>l(t({})))}),urlContext:G({id:"google.url_context",inputSchema:u(()=>l(t({}))),outputSchema:u(()=>l(t({})))}),fileSearch:Go,codeExecution:Dn,vertexRagStore:G({id:"google.vertex_rag_store",inputSchema:u(()=>l(t({}))),outputSchema:u(()=>l(t({})))})},qo=new Set(["gemini-2.5-flash-image","gemini-3-pro-image-preview","gemini-3.1-flash-image-preview","gemini-nano-banana-2.1"]),$o=class i{static[H](c){return te({modelId:c.modelId,config:c.config})}static[Q](c){return new i(c.modelId,{},c.config)}get maxImagesPerCall(){if(this.settings.maxImagesPerCall!=null)return this.settings.maxImagesPerCall;return 1}get supportsFileInputs(){return qo.has(this.modelId)?!0:void 0}get supportsMaskInputs(){return this.supportsFileInputs===!0?!1:void 0}get provider(){return this.config.provider}constructor(c,g,h){this.modelId=c,this.settings=g,this.config=h,this.specificationVersion="v4"}async doGenerate(c){if(!this.modelId.startsWith("gemini-"))throw Error("Google image models other than Gemini are no longer supported. Use a model ID that starts with `gemini-`.");let{prompt:g,size:h,aspectRatio:f,seed:y,providerOptions:x,headers:_,abortSignal:v,files:A,mask:R}=c,P=[];if(R!=null)throw Error("Gemini image models do not support mask-based image editing.");if(h!=null)P.push({type:"unsupported",feature:"size",details:"This model does not support the `size` option. Use `aspectRatio` instead."});let B=[];if(g!=null)B.push({type:"text",text:g});if(A!=null&&A.length>0)for(let J of A)if(J.type==="url")B.push({type:"file",data:{type:"url",url:new URL(J.url)},mediaType:"image/*"});else B.push({type:"file",data:{type:"data",data:typeof J.data==="string"?J.data:new Uint8Array(J.data)},mediaType:J.mediaType});let N=[{role:"user",content:B}],q=await T({provider:"google",providerOptions:x,schema:an}),{googleSearch:V,responseModalities:K,imageConfig:L,...k}=x?.google??{},U=await new Ke(this.modelId,{provider:this.config.provider,baseURL:this.config.baseURL,headers:this.config.headers??{},fetch:this.config.fetch,generateId:this.config.generateId??C}).doGenerate({prompt:N,seed:y,providerOptions:{google:{...k,responseModalities:["IMAGE"],imageConfig:f!=null||L!=null?{...L,...f!=null?{aspectRatio:f}:{}}:void 0}},tools:q?.googleSearch!=null?[{type:"provider",id:"google.google_search",name:"google_search",args:q.googleSearch}]:void 0,headers:_,abortSignal:v}),w=this.config._internal?.currentDate?.()??new Date,S=[];for(let J of U.content)if(J.type==="file"&&J.mediaType.startsWith("image/")&&J.data.type==="data")S.push(j(J.data.data));let W=U.providerMetadata?.google??{};return{images:S,...U.finishReason.unified==="content-filter"?{isRetryable:!1}:{},warnings:P,providerMetadata:{google:{...W,finishReason:U.finishReason.raw??null,images:S.map(()=>({}))}},response:{timestamp:w,modelId:this.modelId,headers:U.response?.headers},usage:U.usage?{inputTokens:U.usage.inputTokens.total,outputTokens:U.usage.outputTokens.total,totalTokens:(U.usage.inputTokens.total??0)+(U.usage.outputTokens.total??0)}:void 0}}};var Fo=class{get provider(){return this.config.provider}constructor(i){this.config=i,this.specificationVersion="v4"}async uploadFile(i){let c=await T({provider:"google",providerOptions:i.providerOptions,schema:Vo}),g=I(this.config.headers(),i.headers),h=this.config.fetch??globalThis.fetch,f=[];if(i.filename!=null)f.push({type:"unsupported",feature:"filename"});let y=aa(i.data),x=i.mediaType,_=c?.displayName,v=await h(`${this.config.baseURL.replace(/\/v1beta$/,"")}/upload/v1beta/files`,{method:"POST",headers:{...g,"X-Goog-Upload-Protocol":"resumable","X-Goog-Upload-Command":"start","X-Goog-Upload-Header-Content-Length":String(y.length),"X-Goog-Upload-Header-Content-Type":x,"Content-Type":"application/json"},body:JSON.stringify({file:{..._!=null?{display_name:_}:{}}}),signal:i.abortSignal});if(!v.ok){let V=await v.text();throw new D({name:"GOOGLE_FILES_UPLOAD_ERROR",message:`Failed to initiate resumable upload: ${v.status} ${V}`})}let A=v.headers.get("x-goog-upload-url");if(!A)throw new D({name:"GOOGLE_FILES_UPLOAD_ERROR",message:"No upload URL returned from initiation request"});let R=await h(A,{method:"POST",headers:{"X-Goog-Upload-Offset":"0","X-Goog-Upload-Command":"upload, finalize"},body:Bo(y),signal:i.abortSignal});if(!R.ok){let V=await R.text();throw new D({name:"GOOGLE_FILES_UPLOAD_ERROR",message:`Failed to upload file data: ${R.status} ${V}`})}let P=(await R.json()).file,B=c?.pollIntervalMs??2000,N=c?.pollTimeoutMs??300000,q=Date.now();while(P.state==="PROCESSING"){if(Date.now()-q>N)throw new D({name:"GOOGLE_FILES_UPLOAD_TIMEOUT",message:`File processing timed out after ${N}ms`});await Ci(B,{abortSignal:i.abortSignal});let V=/^files\/([^/]+)$/.exec(P.name),K=V!=null?`files/${ro(V[1])}`:ro(P.name),{value:L}=await Ce({url:`${this.config.baseURL}/${K}`,validateUrl:!1,headers:I(g),successfulResponseHandler:E(Ho),failedResponseHandler:ge,abortSignal:i.abortSignal,fetch:this.config.fetch});P=L}if(P.state==="FAILED")throw new D({name:"GOOGLE_FILES_UPLOAD_FAILED",message:`File processing failed for ${P.name}`});return{warnings:f,providerReference:{google:P.uri},mediaType:P.mimeType??i.mediaType,providerMetadata:{google:{name:P.name,displayName:P.displayName,mimeType:P.mimeType,sizeBytes:P.sizeBytes,state:P.state,uri:P.uri,...P.createTime!=null?{createTime:P.createTime}:{},...P.updateTime!=null?{updateTime:P.updateTime}:{},...P.expirationTime!=null?{expirationTime:P.expirationTime}:{},...P.sha256Hash!=null?{sha256Hash:P.sha256Hash}:{}}}}}};function Bo(i){if(i.buffer instanceof ArrayBuffer)return i;return new Uint8Array(i)}var Ho=u(()=>l(t({name:e(),displayName:e().nullish(),mimeType:e(),sizeBytes:e().nullish(),createTime:e().nullish(),updateTime:e().nullish(),expirationTime:e().nullish(),sha256Hash:e().nullish(),uri:e(),state:e()}))),Vo=u(()=>l(ae({displayName:e().nullish(),pollIntervalMs:n().positive().nullish(),pollTimeoutMs:n().positive().nullish()}))),Ko=u(()=>l(ae({pollIntervalMs:n().positive().nullish(),pollTimeoutMs:n().positive().nullish(),personGeneration:s(["dont_allow","allow_adult","allow_all"]).nullish(),negativePrompt:e().nullish(),referenceImages:o(t({bytesBase64Encoded:e().nullish(),gcsUri:e().nullish()})).nullish()})));function zo(i){return i.frameImages?.find((c)=>c.frameType==="first_frame")?.image}function Jo(i){return zo(i)??i.image}function Yo(i){return i.frameImages?.find((c)=>c.frameType==="last_frame")?.image}function Xo(i){if(i.frameImages!=null&&i.frameImages.length>0)return;return i.inputReferences!=null&&i.inputReferences.length>0?i.inputReferences:void 0}function ft(i,c){if(i.type==="url"){if(i.url.startsWith("gs://"))return{gcsUri:i.url,mimeType:"image/png"};c.push({type:"unsupported",feature:"URL-based image input",details:"Google Generative AI video models require base64-encoded images or GCS URIs. URL will be ignored."});return}return{bytesBase64Encoded:typeof i.data==="string"?i.data:it(i.data),mimeType:i.mediaType||"image/png"}}function Qo(i){if(i.bytesBase64Encoded)return{image:{bytesBase64Encoded:i.bytesBase64Encoded,mimeType:"image/png"},referenceType:"asset"};if(i.gcsUri)return{image:{gcsUri:i.gcsUri,mimeType:"image/png"},referenceType:"asset"};return i}function Zo(i,c){let g=ft(i,c);return g!=null?{image:g,referenceType:"asset"}:void 0}var ei=class{get provider(){return this.config.provider}get maxVideosPerCall(){return 4}constructor(i,c){this.modelId=i,this.config=c,this.specificationVersion="v4"}async buildRequest(i){let c=[],g=await T({provider:"google",providerOptions:i.providerOptions,schema:Ko}),h=[{}],f=h[0];if(i.prompt!=null)f.prompt=i.prompt;let y=Jo(i);if(y!=null){let A=ft(y,c);if(A!=null)f.image=A}let x=Yo(i);if(x!=null){let A=ft(x,c);if(A!=null)f.lastFrame=A}let _=Xo(i);if(_!=null)f.referenceImages=_.flatMap((A)=>{let R=Zo(A,c);return R!=null?[R]:[]});else if(g?.referenceImages!=null)f.referenceImages=g.referenceImages.map((A)=>Qo(A));let v={sampleCount:i.n};if(i.aspectRatio)v.aspectRatio=i.aspectRatio;if(i.resolution)v.resolution={"1280x720":"720p","1920x1080":"1080p","3840x2160":"4k"}[i.resolution]||i.resolution;if(i.duration)v.durationSeconds=i.duration;if(i.seed)v.seed=i.seed;if(g!=null){let A=g;if(A.personGeneration!==void 0&&A.personGeneration!==null)v.personGeneration=A.personGeneration;if(A.negativePrompt!==void 0&&A.negativePrompt!==null)v.negativePrompt=A.negativePrompt;for(let[R,P]of Object.entries(A))if(!["pollIntervalMs","pollTimeoutMs","personGeneration","negativePrompt","referenceImages"].includes(R))v[R]=P}return{instances:h,parameters:v,warnings:c,googleOptions:g}}async buildCompletedResult(i,c,g,h){let f=i.response;if(!f?.generateVideoResponse?.generatedSamples||f.generateVideoResponse.generatedSamples.length===0)throw new D({name:"GOOGLE_VIDEO_GENERATION_ERROR",message:`No videos in response. Response: ${JSON.stringify(i)}`});let y=[],x=[],_=(await M(this.config.headers))?.["x-goog-api-key"];for(let v of f.generateVideoResponse.generatedSamples)if(v.video?.uri){let A=_&&_l(v.video.uri,this.config.baseURL)?`${v.video.uri}${v.video.uri.includes("?")?"&":"?"}key=${_}`:v.video.uri;y.push({type:"url",url:A,mediaType:"video/mp4"}),x.push({uri:v.video.uri})}if(y.length===0)throw new D({name:"GOOGLE_VIDEO_GENERATION_ERROR",message:"No valid videos in response"});return{status:"completed",videos:y,warnings:g,response:{timestamp:h,modelId:this.modelId,headers:c},providerMetadata:{google:{videos:x}}}}async doStart(i){let c=this.config._internal?.currentDate?.()??new Date,{instances:g,parameters:h,warnings:f}=await this.buildRequest(i),{value:y,responseHeaders:x}=await O({url:`${this.config.baseURL}/models/${this.modelId}:predictLongRunning`,headers:I(await M(this.config.headers),i.headers),body:{instances:g,parameters:h},successfulResponseHandler:E(Dt),failedResponseHandler:ge,abortSignal:i.abortSignal,fetch:this.config.fetch}),_=y.name;if(!_)throw new D({name:"GOOGLE_VIDEO_GENERATION_ERROR",message:"No operation name returned from API"});return{operation:{operationName:_},warnings:f,response:{timestamp:c,modelId:this.modelId,headers:x}}}async doStatus(i){let c=this.config._internal?.currentDate?.()??new Date,{operationName:g}=i.operation,{value:h,responseHeaders:f}=await Ce({url:`${this.config.baseURL}/${g}`,validateUrl:!1,headers:I(await M(this.config.headers),i.headers),successfulResponseHandler:E(Dt),failedResponseHandler:ge,abortSignal:i.abortSignal,fetch:this.config.fetch});if(!h.done)return{status:"pending",response:{timestamp:c,modelId:this.modelId,headers:f}};if(h.error)return{status:"error",error:`Video generation failed: ${h.error.message}`,response:{timestamp:c,modelId:this.modelId,headers:f}};return this.buildCompletedResult(h,f,[],c)}},Dt=u(()=>l(t({name:e().nullish(),done:r().nullish(),error:t({code:n().nullish(),message:e(),status:e().nullish()}).nullish(),response:t({generateVideoResponse:t({generatedSamples:o(t({video:t({uri:e().nullish()}).nullish()})).nullish()}).nullish()}).nullish()}))),ti=u(()=>l(t({candidates:o(t({content:t({parts:o(t({inlineData:t({mimeType:e().nullish(),data:e().nullish()}).nullish()})).nullish()}).nullish()})).nullish(),usageMetadata:d(e(),Fe()).nullish()})));function ni({text:i,voice:c,providerOptions:g}){let h=g?.google,f=h!=null&&typeof h==="object"?h:void 0,y=f&&"turns"in f?f.turns:void 0,x=[];if(Array.isArray(y)&&y.length>0){for(let A of y){if(A==null||typeof A!=="object"||!("text"in A)||typeof A.text!=="string")break;x.push(A.text)}if(x.length===y.length)i=x.join("")}let _=f&&"multiSpeakerVoiceConfig"in f?f.multiSpeakerVoiceConfig:void 0,v=_!=null&&typeof _==="object"&&"speakerVoiceConfigs"in _&&Array.isArray(_.speakerVoiceConfigs)?_.speakerVoiceConfigs:[];return{text:i,usesCustomVoice:c?.startsWith("voice_")===!0||c?.startsWith("voicekey_")===!0||v.some((A)=>A!=null&&typeof A==="object"&&("voiceConfig"in A)&&A.voiceConfig!=null&&typeof A.voiceConfig==="object"&&("voice"in A.voiceConfig))}}var oi=()=>t({voiceName:e()}),ii=()=>t({prebuiltVoiceConfig:oi(),voice:le().optional()}),Pt=()=>t({speaker:e().min(1).optional(),style:e().optional()}),qt=u(()=>l(t({speechMetadata:Pt().optional(),turns:o(t({text:e(),speechMetadata:Pt().optional()})).min(1).optional(),multiSpeakerVoiceConfig:t({speakerVoiceConfigs:o(t({speaker:e(),voiceConfig:ii()}))}).optional()}))),si="Kore",ai=24000,ri=class i{static[H](c){return te({modelId:c.modelId,config:c.config})}static[Q](c){return new i(c.modelId,c.config)}get provider(){return this.config.provider}constructor(c,g){this.modelId=c,this.config=g,this.specificationVersion="v4"}async getArgs({text:c,voice:g=si,outputFormat:h,instructions:f,speed:y,language:x,providerOptions:_}){let v=[],A=this.config.provider.includes("vertex")?["googleVertex","vertex"]:["google"],R;for(let U of A)if(R=await T({provider:U,providerOptions:_,schema:qt}),R!=null)break;if(R==null&&!A.includes("google"))R=await T({provider:"google",providerOptions:_,schema:qt});let P=!this.modelId.startsWith("gemini-2.5-")&&!this.modelId.startsWith("gemini-3.1-"),B=ni({text:c,voice:g,providerOptions:{google:R}});if(B.usesCustomVoice)throw new F({argument:"voice",message:"Custom voices are not supported. Use a prebuilt voice instead."});let N=R?.multiSpeakerVoiceConfig,q=N?{multiSpeakerVoiceConfig:N}:{voiceConfig:{prebuiltVoiceConfig:{voiceName:g}}},V=c;if(f!=null&&!P)if(N)v.push({type:"unsupported",feature:"instructions",details:"Google Gemini TTS ignores `instructions` when `multiSpeakerVoiceConfig` is set, because prepending them would break multi-speaker transcript parsing."});else V=`${f}: ${c}`;let K=[{text:V}];if(P){if(R?.turns&&R.speechMetadata)throw new F({argument:"providerOptions",message:"Set speechMetadata on each turn when using turns."});if(R?.turns&&c!=="")v.push({type:"unsupported",feature:"text",details:"Google TTS turns replace the top-level text."});K=(R?.turns??[{text:c,speechMetadata:R?.speechMetadata}]).map((U)=>{let w=U.speechMetadata?.style??f,S=U.speechMetadata?.speaker;if(N&&!N.speakerVoiceConfigs.some((W)=>W.speaker===S))throw new F({argument:"speechMetadata.speaker",message:"Every multi-speaker turn must specify a speechMetadata.speaker matching a configured speaker."});return{text:U.text,...w!=null||S!=null?{speechMetadata:{style:w,speaker:S}}:{}}})}else if(R?.turns||R?.speechMetadata)throw new F({argument:"providerOptions",message:"Structured speech metadata and turns require Gemini 3.8 TTS."});if(B.text.length===0)throw new F({argument:"text",message:"Speech input must contain a non-empty transcript."});if(y!=null)v.push({type:"unsupported",feature:"speed",details:"Google Gemini TTS models do not support the `speed` option. It was ignored."});if(x!=null)v.push({type:"unsupported",feature:"language",details:"Google Gemini TTS models do not support the `language` option. Language is detected automatically from the input text."});let L=P?{wav:"AUDIO_WAV","audio/wav":"AUDIO_WAV",pcm:"AUDIO_L16","audio/l16":"AUDIO_L16",mulaw:"AUDIO_MULAW","audio/mulaw":"AUDIO_MULAW",alaw:"AUDIO_ALAW","audio/alaw":"AUDIO_ALAW"}:{wav:"AUDIO_WAV",pcm:"AUDIO_L16"},k="wav";if(h!=null&&Object.prototype.hasOwnProperty.call(L,h))k=h;else if(h!=null)v.push({type:"unsupported",feature:"outputFormat",details:`Unsupported output format: ${h}. Using wav instead.`});return{requestBody:{contents:[{role:"user",parts:K}],generationConfig:{responseModalities:["AUDIO"],speechConfig:q,...P&&h!=null?{responseFormat:{audio:{mimeType:L[k]}}}:{}}},warnings:v,outputFormat:L[k],usesStructuredSpeech:P}}async doGenerate(c){let g=this.config._internal?.currentDate?.()??new Date,{requestBody:h,warnings:f,outputFormat:y,usesStructuredSpeech:x}=await this.getArgs(c),{value:_,responseHeaders:v,rawValue:A}=await O({url:`${this.config.baseURL}/models/${this.modelId}:generateContent`,headers:I(this.config.headers?await M(this.config.headers):void 0,c.headers),body:h,failedResponseHandler:ge,successfulResponseHandler:E(ti),abortSignal:c.abortSignal,fetch:this.config.fetch}),R,P;for(let K of _.candidates??[]){for(let L of K.content?.parts??[])if(L.inlineData?.data){R=L.inlineData.data,P=L.inlineData.mimeType??void 0;break}if(R!=null)break}let B=li(P)??ai,N=R!=null?ke(R):new Uint8Array(0),q=/^audio\/(?:l16|pcm)(?:;|$)/i.test(P??"")||P==null&&!x,V=y==="AUDIO_WAV"&&q&&N.length>0?ui(N,B):N;if(y==="AUDIO_L16"&&N.length>0&&!x)f.push({type:"unsupported",feature:"outputFormat",details:`Returning raw PCM audio (signed 16-bit little-endian, mono, ${B} Hz). These bytes have no container header and are not directly playable; see providerMetadata.google for the sample rate and mime type.`});return{audio:V,warnings:f,..._.usageMetadata!=null&&{usage:_.usageMetadata},request:{body:JSON.stringify(h)},response:{timestamp:g,modelId:this.modelId,headers:v,body:A},providerMetadata:{google:{sampleRate:B,mimeType:P??null}}}}};function li(i){if(i==null)return;let c=/rate=(\d+)/.exec(i);return c?Number.parseInt(c[1],10):void 0}function ui(i,c){let y=c*2,x=i.length,_=new ArrayBuffer(44+x),v=new DataView(_);st(v,0,"RIFF"),v.setUint32(4,36+x,!0),st(v,8,"WAVE"),st(v,12,"fmt "),v.setUint32(16,16,!0),v.setUint16(20,1,!0),v.setUint16(22,1,!0),v.setUint32(24,c,!0),v.setUint32(28,y,!0),v.setUint16(32,2,!0),v.setUint16(34,16,!0),st(v,36,"data"),v.setUint32(40,x,!0);let A=new Uint8Array(_);return A.set(i,44),A}function st(i,c,g){for(let h=0;h<g.length;h++)i.setUint8(c+h,g.charCodeAt(h))}function wt(i){if(i==null)return At();let c=i.total_input_tokens??0,g=i.total_output_tokens??0,h=i.total_thought_tokens??0,f=i.total_cached_tokens??0;return{inputTokens:{total:i.total_input_tokens??void 0,noCache:i.total_input_tokens==null?void 0:c-f,cacheRead:i.total_cached_tokens??void 0,cacheWrite:void 0},outputTokens:{total:i.total_output_tokens==null&&i.total_thought_tokens==null?void 0:g+h,text:i.total_output_tokens??void 0,reasoning:i.total_thought_tokens??void 0},raw:i}}function un(i){let c=i?.output_tokens_by_modality;if(c==null)return;let g={};for(let h of c)if(h?.modality!=null&&h.tokens!=null)g[h.modality]=h.tokens;return Object.keys(g).length>0?g:void 0}var ci={pdf:"application/pdf",txt:"text/plain",md:"text/markdown",markdown:"text/markdown",doc:"application/msword",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document"};function cn(i){let c=i.toLowerCase();for(let[g,h]of Object.entries(ci))if(c.endsWith(`.${g}`))return h;return"application/octet-stream"}function dn(i){let c=i.split("/"),g=c[c.length-1];return g&&g.length>0?g:void 0}function di({annotation:i,generateId:c}){switch(i.type){case"url_citation":{let g=i;if(g.url==null||g.url.length===0)return;return{type:"source",sourceType:"url",id:c(),url:g.url,...g.title!=null?{title:g.title}:{}}}case"file_citation":{let g=i,h=g.url??g.document_uri??g.file_name;if(h==null||h.length===0)return;if(h.startsWith("http://")||h.startsWith("https://"))return{type:"source",sourceType:"url",id:c(),url:h,...g.file_name!=null?{title:g.file_name}:{}};let f=g.file_name??dn(h),y=cn(h);return{type:"source",sourceType:"document",id:c(),mediaType:y,title:g.file_name??f??h,...f!=null?{filename:f}:{}}}case"place_citation":{let g=i;if(g.url==null||g.url.length===0)return;return{type:"source",sourceType:"url",id:c(),url:g.url,...g.name!=null?{title:g.name}:{}}}default:return}}function pn({block:i,generateId:c}){let g=[];switch(i.type){case"url_context_result":{let h=i.result??[];for(let f of h){if(f?.url==null||f.url.length===0)continue;if(f.status!=null&&f.status!=="success")continue;g.push({type:"source",sourceType:"url",id:c(),url:f.url})}break}case"google_search_result":{let h=i.result??[];for(let f of h){let y=f?.url;if(y==null||y.length===0)continue;g.push({type:"source",sourceType:"url",id:c(),url:y,...f.title!=null?{title:f.title}:{}})}break}case"google_maps_result":{let h=i.result??[];for(let f of h)for(let y of f.places??[]){if(y.url==null||y.url.length===0)continue;g.push({type:"source",sourceType:"url",id:c(),url:y.url,...y.name!=null?{title:y.name}:{}})}break}case"file_search_result":{let h=i.result??[];for(let f of h){if(f==null||typeof f!=="object")continue;let y=f,x=y.url??y.document_uri??y.file_name;if(x==null||x.length===0)continue;if(x.startsWith("http://")||x.startsWith("https://")){g.push({type:"source",sourceType:"url",id:c(),url:x,...y.title!=null?{title:y.title}:{}});continue}let _=y.file_name??dn(x),v=cn(x);g.push({type:"source",sourceType:"document",id:c(),mediaType:v,title:y.title??y.file_name??_??x,..._!=null?{filename:_}:{}})}break}}return g}function vt({annotations:i,generateId:c}){if(i==null)return[];let g=new Set,h=[];for(let f of i){let y=di({annotation:f,generateId:c});if(y==null)continue;let x=y.sourceType==="url"?`url:${y.url}`:`doc:${y.filename??y.title}`;if(g.has(x))continue;g.add(x),h.push(y)}return h}function St({status:i,hasFunctionCall:c}){switch(i){case"completed":return c?"tool-calls":"stop";case"requires_action":return"tool-calls";case"failed":return"error";case"incomplete":return"length";case"cancelled":return"other";default:return"other"}}var pi=new Set(["google_search_call","code_execution_call","url_context_call","file_search_call","google_maps_call","mcp_server_tool_call"]),gi=new Set(["google_search_result","code_execution_result","url_context_result","file_search_result","google_maps_result","mcp_server_tool_result"]);function hi(i){return i.replace(/_call$/,"")}function mi(i){return i.replace(/_result$/,"")}function $t({warnings:i,generateId:c,includeRawChunks:g,serviceTier:h}){let f,y,x=h,_,v=!1,A=!1,R=new Map,P=new Set;function B(N){return N.sourceType==="url"?`url:${N.url}`:`doc:${N.filename??N.title}`}return new TransformStream({start(N){N.enqueue({type:"stream-start",warnings:i})},transform(N,q){if(g)q.enqueue({type:"raw",rawValue:N.rawValue});if(!N.success){_="failed",q.enqueue({type:"error",error:N.error});return}let V=N.value,K=V.event_type;switch(K){case"interaction.created":{let L=V.interaction;f=L?.id!=null&&L.id.length>0?L.id:void 0;let k=L?.created,U;if(typeof k==="string"){let w=new Date(k);if(!Number.isNaN(w.getTime()))U=w}q.enqueue({type:"response-metadata",...f!=null?{id:f}:{},modelId:L?.model,...U?{timestamp:U}:{}});break}case"step.start":{let L=V,{step:k,index:U}=L,w=`${f??"interaction"}:${U}`,S=k?.type;if(S==="model_output"){let W=k?.content?.[0];if(W?.type==="text"){R.set(U,{kind:"text",id:w,emittedSourceKeys:new Set}),q.enqueue({type:"text-start",id:w});let J=vt({annotations:W.annotations,generateId:c});for(let X of J){let re=B(X);if(P.has(re))continue;P.add(re),q.enqueue(X)}}else if(W?.type==="image")R.set(U,{kind:"image",id:w,...W.data!=null?{data:W.data}:{},...W.mime_type!=null?{mimeType:W.mime_type}:{},...W.uri!=null?{uri:W.uri}:{}});else R.set(U,{kind:"pending_model_output",id:w})}else if(S==="thought"){let W=k?.signature;if(R.set(U,{kind:"reasoning",id:w,...W!=null?{signature:W}:{}}),q.enqueue({type:"reasoning-start",id:w}),Array.isArray(k?.summary)){for(let J of k.summary)if(J?.type==="text"&&typeof J.text==="string")q.enqueue({type:"reasoning-delta",id:w,delta:J.text})}}else if(S==="processing_call"||S==="processing_result"){let W={};if(k?.signature!=null)W.signature=k.signature;if(f!=null)W.interactionId=f;if(S==="processing_call")W.processingId=k?.id||w;else W.processingCallId=k?.call_id||w;R.set(U,{kind:"custom",id:w,customKind:`google.${S}`,google:W})}else if(S==="function_call"){let W=k?.id||w,J=k?.name??"unknown";v=!0;let X={kind:"function_call",id:w,toolCallId:W,toolName:J,argumentsAccum:"",...k?.signature!=null?{signature:k.signature}:{}};R.set(U,X),q.enqueue({type:"tool-input-start",id:W,toolName:J})}else if(S!=null&&pi.has(S)){let W=S==="mcp_server_tool_call"?k?.name??"mcp_server_tool":hi(S),J={kind:"builtin_tool_call",id:w,blockType:S,toolCallId:k?.id||w,toolName:W,arguments:k?.arguments??{},callEmitted:!1};R.set(U,J)}else if(S!=null&&gi.has(S)){let W=S==="mcp_server_tool_result"?k?.name??"mcp_server_tool":mi(S),J={kind:"builtin_tool_result",id:w,blockType:S,callId:k?.call_id||w,toolName:W,result:k?.result??null,...k?.is_error!=null?{isError:k.is_error}:{},resultEmitted:!1};R.set(U,J)}else R.set(U,{kind:"unknown",id:w});break}case"step.delta":{let L=V,k=R.get(L.index);if(k==null)break;let U=L.delta?.type;if(k.kind==="pending_model_output"){if(U==="text"||U==="text_annotation"||U==="text_annotation_delta"){let S={kind:"text",id:k.id,emittedSourceKeys:new Set};R.set(L.index,S),k=S,q.enqueue({type:"text-start",id:S.id})}}if(U==="image"&&(k.kind==="pending_model_output"||k.kind==="text"||k.kind==="image")){let S=L.delta,W={};if(f!=null)W.interactionId=f;let J=Object.keys(W).length>0?{google:W}:void 0;if(S?.data!=null&&S.data.length>0)q.enqueue({type:"file",mediaType:S.mime_type??"image/png",data:{type:"data",data:S.data},...J?{providerMetadata:J}:{}});else if(S?.uri!=null&&S.uri.length>0)q.enqueue({type:"file",mediaType:S.mime_type??"image/png",data:{type:"url",url:new URL(S.uri)},...J?{providerMetadata:J}:{}});if(k.kind==="image")k.data=void 0,k.uri=void 0;break}if(U==="video"&&(k.kind==="pending_model_output"||k.kind==="text")){let S=L.delta,W={};if(f!=null)W.interactionId=f;let J=Object.keys(W).length>0?{google:W}:void 0;if(S?.data!=null&&S.data.length>0)q.enqueue({type:"file",mediaType:S.mime_type??"video/mp4",data:{type:"data",data:S.data},...J?{providerMetadata:J}:{}});else if(S?.uri!=null&&S.uri.length>0)q.enqueue({type:"file",mediaType:S.mime_type??"video/mp4",data:{type:"url",url:new URL(S.uri)},...J?{providerMetadata:J}:{}});break}let w=L.delta;if(k.kind==="custom"&&(w?.type==="processing_call"||w?.type==="processing_result")){if(w.signature!=null)k.google.signature=w.signature;if(w.type==="processing_call"&&w.id!=null&&w.id.length>0)k.google.processingId=w.id;if(w.type==="processing_result"&&w.call_id!=null&&w.call_id.length>0)k.google.processingCallId=w.call_id}else if(k.kind==="text"&&w?.type==="text"){let S=w.text??"";if(S.length>0)q.enqueue({type:"text-delta",id:k.id,delta:S})}else if(k.kind==="text"&&(w?.type==="text_annotation"||w?.type==="text_annotation_delta")){let S=vt({annotations:w.annotations,generateId:c});for(let W of S){let J=B(W);if(P.has(J))continue;P.add(J),k.emittedSourceKeys.add(J),q.enqueue(W)}}else if(k.kind==="image"&&w?.type==="image"){if(w.data!=null)k.data=w.data;if(w.mime_type!=null)k.mimeType=w.mime_type;if(w.uri!=null)k.uri=w.uri}else if(k.kind==="reasoning"){if(w?.type==="thought_summary"){let S=w.content;if(S?.type==="text"&&typeof S.text==="string")q.enqueue({type:"reasoning-delta",id:k.id,delta:S.text})}else if(w?.type==="thought_signature"){let S=w.signature;if(S!=null)k.signature=S}}else if(k.kind==="function_call"&&w?.type==="arguments_delta"){let S=typeof w.arguments==="string"?w.arguments:"";if(S.length>0)k.argumentsAccum+=S,q.enqueue({type:"tool-input-delta",id:k.toolCallId,delta:S});if(w.id!=null&&w.id.length>0)k.toolCallId=w.id;if(w.signature!=null)k.signature=w.signature;v=!0}else if(k.kind==="builtin_tool_call"&&w?.type===k.blockType){if(w.id!=null&&w.id.length>0)k.toolCallId=w.id;if(w.arguments!=null&&typeof w.arguments==="object")k.arguments=w.arguments;if(w.name!=null&&k.blockType==="mcp_server_tool_call")k.toolName=w.name}else if(k.kind==="builtin_tool_result"&&w?.type===k.blockType){if(w.call_id!=null&&w.call_id.length>0)k.callId=w.call_id;if(w.result!==void 0)k.result=w.result;if(w.is_error!=null)k.isError=w.is_error;if(w.name!=null&&k.blockType==="mcp_server_tool_result")k.toolName=w.name}break}case"step.stop":{let L=V,k=R.get(L.index);if(k==null)break;if(k.kind==="text"){let U=f!=null?{google:{interactionId:f}}:void 0;q.enqueue({type:"text-end",id:k.id,...U?{providerMetadata:U}:{}})}else if(k.kind==="reasoning"){let U={};if(k.signature!=null)U.signature=k.signature;if(f!=null)U.interactionId=f;let w=Object.keys(U).length>0?{google:U}:void 0;q.enqueue({type:"reasoning-end",id:k.id,...w?{providerMetadata:w}:{}})}else if(k.kind==="image"){let U={};if(f!=null)U.interactionId=f;let w=Object.keys(U).length>0?{google:U}:void 0;if(k.data!=null&&k.data.length>0)q.enqueue({type:"file",mediaType:k.mimeType??"image/png",data:{type:"data",data:k.data},...w?{providerMetadata:w}:{}});else if(k.uri!=null&&k.uri.length>0)q.enqueue({type:"file",mediaType:k.mimeType??"image/png",data:{type:"url",url:new URL(k.uri)},...w?{providerMetadata:w}:{}})}else if(k.kind==="function_call"){let U=k.argumentsAccum.length>0?k.argumentsAccum:"{}";q.enqueue({type:"tool-input-end",id:k.toolCallId});let w={};if(k.signature!=null)w.signature=k.signature;if(f!=null)w.interactionId=f;let S=Object.keys(w).length>0?{google:w}:void 0;q.enqueue({type:"tool-call",toolCallId:k.toolCallId,toolName:k.toolName,input:U,...S?{providerMetadata:S}:{}})}else if(k.kind==="custom")q.enqueue({type:"custom",kind:k.customKind,providerMetadata:{google:k.google}});else if(k.kind==="builtin_tool_call"&&!k.callEmitted)q.enqueue({type:"tool-call",toolCallId:k.toolCallId,toolName:k.toolName,input:JSON.stringify(k.arguments??{}),providerExecuted:!0}),k.callEmitted=!0;else if(k.kind==="builtin_tool_result"&&!k.resultEmitted){q.enqueue({type:"tool-result",toolCallId:k.callId,toolName:k.toolName,result:k.result??null}),k.resultEmitted=!0;let U=pn({block:{type:k.blockType,call_id:k.callId,result:k.result},generateId:c});for(let w of U){let S=B(w);if(P.has(S))continue;P.add(S),q.enqueue(w)}}R.delete(L.index);break}case"interaction.status_update":case"interaction.in_progress":case"interaction.requires_action":{let L=V;if(L.status!=null)_=L.status;else if(K==="interaction.requires_action")_="requires_action";else _="in_progress";break}case"interaction.completed":{A=!0;let L=V.interaction;if(L?.id!=null&&L.id.length>0)f=L.id;if(L?.status!=null)_=L.status;if(L?.usage!=null)y=L.usage;if(L?.service_tier!=null)x=L.service_tier;break}case"error":{let L=V;_="failed",q.enqueue({type:"error",error:Kt({message:L.error?.message??"Unknown interaction error",type:L.event_type,code:L.error?.code??void 0,data:L})});break}}},flush(N){let q=!A&&(_==null||_==="in_progress"),V={unified:q?"interrupted":St({status:_,hasFunctionCall:v}),raw:q?void 0:_},K=un(y),L={google:{...f!=null?{interactionId:f}:{},...x!=null?{serviceTier:x}:{},...K!=null?{outputTokensByModality:K}:{}}};N.enqueue({type:"finish",finishReason:V,usage:wt(y),providerMetadata:L})}})}function fi({prompt:i,previousInteractionId:c,store:g,mediaResolution:h}){let f=[],y=c!=null&&g===!1,x=c!=null&&g!==!1;if(y)f.push({type:"other",message:"google.interactions: providerOptions.google.previousInteractionId was set together with store: false. These are incoherent (the prior interaction cannot be referenced when nothing was stored on the server); the full history will be sent and previous_interaction_id will still be emitted."});let _=x?vi({prompt:i,previousInteractionId:c}):i,v=[],A=[];for(let R of _)switch(R.role){case"system":v.push(R.content);break;case"user":{let P=[];for(let N of R.content)if(N.type==="text")P.push({type:"text",text:N.text});else if(N.type==="file"){let q=Ft({part:N,warnings:f,mediaResolution:h});if(q!=null)P.push(q)}let B=wi(P);if(B.length>0)A.push({type:"user_input",content:B});break}case"assistant":{let P=[],B=()=>{if(P.length>0)A.push({type:"model_output",content:P}),P=[]};for(let N of R.content)if(N.type==="text")P.push({type:"text",text:N.text});else if(N.type==="reasoning"){B();let q=N.providerOptions?.google?.signature;A.push({type:"thought",...q!=null?{signature:q}:{},summary:N.text.length>0?[{type:"text",text:N.text}]:void 0})}else if(N.type==="file"){let q=Ft({part:N,warnings:f,mediaResolution:h});if(q!=null)P.push(q)}else if(N.type==="custom"){B();let q=N.providerOptions?.google,V=typeof q?.signature==="string"?q.signature:void 0;if(N.kind==="google.processing_call"&&typeof q?.processingId==="string")A.push({type:"processing_call",id:q.processingId,...V!=null?{signature:V}:{}});else if(N.kind==="google.processing_result"&&typeof q?.processingCallId==="string")A.push({type:"processing_result",call_id:q.processingCallId,...V!=null?{signature:V}:{}});else f.push({type:"other",message:`google.interactions: unsupported or invalid custom assistant content part "${N.kind}"; part dropped.`})}else if(N.type==="tool-call"){B();let q=N.providerOptions?.google?.signature,V=typeof N.input==="string"?bi(N.input):N.input??{};A.push({type:"function_call",id:N.toolCallId,name:N.toolName,arguments:V,...q!=null?{signature:q}:{}})}else f.push({type:"other",message:`google.interactions: unsupported assistant content part type "${N.type}"; part dropped.`});B();break}case"tool":{let P=[];for(let B of R.content){if(B.type!=="tool-result"){f.push({type:"other",message:`google.interactions: unsupported tool message part type "${B.type}"; part dropped.`});continue}let N=Ti({toolCallId:B.toolCallId,toolName:B.toolName,output:B.output,signature:B.providerOptions?.google?.signature,warnings:f});P.push(N)}if(P.length>0)A.push({type:"user_input",content:P});break}}return{input:A,systemInstruction:v.length>0?v.join(`
10
+
11
+ `):void 0,warnings:f}}function Ft({part:i,warnings:c,mediaResolution:g}){if(i.data.type==="text")return{type:"text",text:i.data.text};let h=fe(i.mediaType),f;switch(h){case"image":f="image";break;case"audio":f="audio";break;case"video":f="video";break;case"application":case"text":f="document";break;default:f=void 0}if(f==null){c.push({type:"other",message:`google.interactions: unsupported file media type "${i.mediaType}"; part dropped.`});return}let y=g!=null&&(f==="image"||f==="video")?{resolution:g}:{},x=f==="video"?yi({part:i,warnings:c}):{};switch(i.data.type){case"data":{let _=ee({part:i});return{type:f,data:j(i.data.data),mime_type:_,...y,...x}}case"url":return{type:f,uri:i.data.url.toString(),...Ae(i.mediaType)?{mime_type:i.mediaType}:{},...y,...x};case"reference":{let _=qe({reference:i.data.reference,provider:"google"});return{type:f,uri:_,...Ae(i.mediaType)?{mime_type:i.mediaType}:{},...y,...x}}}}function yi({part:i,warnings:c}){let g=i.providerOptions?.google?.processing;if(g==null)return{};if(g==="agentic"||g==="static")return{processing:g};if(typeof g==="object"&&!Array.isArray(g)&&g.type==="static"){let h=g;return{processing:{type:"static",...typeof h.startOffset==="number"?{start_offset:`${h.startOffset}s`}:{},...typeof h.endOffset==="number"?{end_offset:`${h.endOffset}s`}:{},...typeof h.fps==="number"?{fps:h.fps}:{}}}}return c.push({type:"other",message:'google.interactions: invalid providerOptions.google.processing on video file part; expected "agentic", "static", or a static processing configuration. Option dropped.'}),{}}function vi({prompt:i,previousInteractionId:c}){let g=[],h=new Set;for(let f of i){if(f.role==="assistant"){if(f.content.some((y)=>y.providerOptions?.google?.interactionId===c)){for(let y of f.content)if(y.type==="tool-call")h.add(y.toolCallId);continue}g.push(f);continue}if(f.role==="tool"){let y=f.content.filter((x)=>{if(x.type!=="tool-result")return!0;return!h.has(x.toolCallId)});if(y.length===0)continue;g.push({...f,content:y});continue}g.push(f)}return g}function bi(i){try{let c=Qe(i);if(c!=null&&typeof c==="object"&&!Array.isArray(c))return c;return{value:c}}catch{return{value:i}}}function Ti({toolCallId:i,toolName:c,output:g,signature:h,warnings:f}){let y={type:"function_result",call_id:i,name:c,...h!=null?{signature:h}:{}};switch(g.type){case"text":return{...y,result:g.value};case"json":return{...y,result:JSON.stringify(g.value)};case"error-text":return{...y,is_error:!0,result:g.value};case"error-json":return{...y,is_error:!0,result:JSON.stringify(g.value)};case"execution-denied":return{...y,is_error:!0,result:g.reason??"Tool execution denied by user."};case"content":{let x=[];for(let _ of g.value)if(_.type==="text")x.push({type:"text",text:_.text});else if(_.type==="file"){if(fe(_.mediaType)!=="image"){f.push({type:"other",message:`google.interactions: tool-result file with mediaType "${_.mediaType}" is not supported (Interactions \`function_result.result\` accepts only text and image content); part dropped.`});continue}let v=_i({part:_,warnings:f});if(v!=null)x.push(v)}else f.push({type:"other",message:`google.interactions: tool-result content part type "${_.type}" is not supported; part dropped.`});return{...y,result:x}}}}function _i({part:i,warnings:c}){switch(i.data.type){case"data":{let g=Ae(i.mediaType)?i.mediaType:ee({part:{type:"file",mediaType:i.mediaType,data:i.data}});return{type:"image",data:j(i.data.data),mime_type:g}}case"url":return{type:"image",uri:i.data.url.toString(),...Ae(i.mediaType)?{mime_type:i.mediaType}:{}};case"reference":return{type:"image",uri:qe({reference:i.data.reference,provider:"google"}),...Ae(i.mediaType)?{mime_type:i.mediaType}:{}};case"text":c.push({type:"other",message:'google.interactions: tool-result image part with `data.type === "text"` is not representable as an image; part dropped.'});return}}function wi(i){if(i.length<2)return i;let c=[];for(let g of i){let h=c[c.length-1];if(g.type==="text"&&h!=null&&h.type==="text"&&h.annotations==null&&g.annotations==null){let f={type:"text",text:`${h.text}
12
+
13
+ ${g.text}`};c[c.length-1]=f;continue}c.push(g)}return c}var at=()=>t({modality:e().nullish(),tokens:n().nullish()}).loose(),gn=()=>t({total_input_tokens:n().nullish(),total_output_tokens:n().nullish(),total_thought_tokens:n().nullish(),total_cached_tokens:n().nullish(),total_tool_use_tokens:n().nullish(),total_tokens:n().nullish(),input_tokens_by_modality:o(at()).nullish(),output_tokens_by_modality:o(at()).nullish(),cached_tokens_by_modality:o(at()).nullish(),tool_use_tokens_by_modality:o(at()).nullish(),grounding_tool_count:o(t({type:e().nullish(),count:n().nullish()}).loose()).nullish()}).loose(),hn=()=>s(["in_progress","requires_action","completed","failed","cancelled","incomplete"]),mn=()=>{let i=t({type:a("url_citation"),url:e().nullish(),title:e().nullish(),start_index:n().nullish(),end_index:n().nullish()}).loose(),c=t({type:a("file_citation"),file_name:e().nullish(),document_uri:e().nullish(),url:e().nullish(),page_number:n().nullish(),media_id:e().nullish(),start_index:n().nullish(),end_index:n().nullish(),custom_metadata:d(e(),m()).nullish()}).loose(),g=t({type:a("place_citation"),name:e().nullish(),url:e().nullish(),place_id:e().nullish(),start_index:n().nullish(),end_index:n().nullish()}).loose();return p([i,c,g,t({type:e()}).loose()])},fn=()=>t({type:e(),text:e().nullish(),data:e().nullish(),mime_type:e().nullish()}).loose(),Bt=()=>{let i=t({type:a("text"),text:e(),annotations:o(mn()).nullish()}).loose(),c=t({type:a("image"),data:e().nullish(),mime_type:e().nullish(),resolution:s(["low","medium","high","ultra_high"]).nullish(),uri:e().nullish()}).loose(),g=t({type:a("video"),data:e().nullish(),mime_type:e().nullish(),uri:e().nullish()}).loose();return p([i,c,g,t({type:e()}).loose()])},yn=["google_search_call","code_execution_call","url_context_call","file_search_call","google_maps_call","mcp_server_tool_call"],bn=["google_search_result","code_execution_result","url_context_result","file_search_result","google_maps_result","mcp_server_tool_result"],Tn=()=>{let i=t({type:a("user_input"),content:o(Bt()).nullish()}).loose(),c=t({type:a("model_output"),content:o(Bt()).nullish()}).loose(),g=t({type:a("function_call"),id:e(),name:e(),arguments:d(e(),m()).nullish(),signature:e().nullish()}).loose(),h=t({type:a("thought"),signature:e().nullish(),summary:o(fn()).nullish()}).loose(),f=t({type:a("processing_call"),id:e(),signature:e().nullish()}).loose(),y=t({type:a("processing_result"),call_id:e(),signature:e().nullish()}).loose(),x=t({type:s(yn),id:e(),arguments:d(e(),m()).nullish(),name:e().nullish(),server_name:e().nullish(),search_type:e().nullish(),signature:e().nullish()}).loose(),_=t({type:s(bn),call_id:e(),result:m().nullish(),is_error:r().nullish(),name:e().nullish(),server_name:e().nullish(),signature:e().nullish()}).loose();return p([i,c,g,h,f,y,x,_,t({type:e()}).loose()])},bt=u(()=>l(t({id:e().nullish(),created:e().nullish(),updated:e().nullish(),status:hn(),model:e().nullish(),agent:e().nullish(),steps:o(Tn()).nullish(),usage:gn().nullish(),service_tier:e().nullish(),previous_interaction_id:e().nullish(),response_modalities:o(e()).nullish()}).loose())),_n=u(()=>l((()=>{let i=hn(),c=mn(),g=fn(),h=t({event_type:a("interaction.created"),event_id:e().nullish(),interaction:t({id:e().nullish(),created:e().nullish(),model:e().nullish(),agent:e().nullish(),status:i.nullish()}).loose()}).loose(),f=t({event_type:a("step.start"),event_id:e().nullish(),index:n(),step:Tn()}).loose(),y=t({type:a("text"),text:e()}).loose(),x=t({type:a("thought_summary"),content:g.nullish()}).loose(),_=t({type:a("thought_signature"),signature:e().nullish()}).loose(),v=t({type:a("arguments_delta"),arguments:e().nullish(),id:e().nullish(),signature:e().nullish()}).loose(),A=t({type:s(["text_annotation_delta","text_annotation"]),annotations:o(c).nullish()}).loose(),R=t({type:a("image"),data:e().nullish(),mime_type:e().nullish(),resolution:s(["low","medium","high","ultra_high"]).nullish(),uri:e().nullish()}).loose(),P=t({type:a("video"),data:e().nullish(),mime_type:e().nullish(),uri:e().nullish()}).loose(),B=t({type:s(yn),id:e().nullish(),arguments:d(e(),m()).nullish(),name:e().nullish(),server_name:e().nullish(),search_type:e().nullish(),signature:e().nullish()}).loose(),N=t({type:s(bn),call_id:e().nullish(),result:m().nullish(),is_error:r().nullish(),name:e().nullish(),server_name:e().nullish(),signature:e().nullish()}).loose(),q=t({type:e()}).loose(),V=p([y,R,P,x,_,v,A,B,N,q]),K=t({event_type:a("step.delta"),event_id:e().nullish(),index:n(),delta:V}).loose(),L=t({event_type:a("step.stop"),event_id:e().nullish(),index:n()}).loose(),k=t({event_type:a("interaction.status_update"),event_id:e().nullish(),interaction_id:e().nullish(),status:i.nullish()}).loose(),U=t({event_type:a("interaction.in_progress"),event_id:e().nullish(),interaction_id:e().nullish(),status:i.nullish()}).loose(),w=t({event_type:a("interaction.requires_action"),event_id:e().nullish(),interaction_id:e().nullish(),status:i.nullish()}).loose(),S=t({event_type:a("interaction.completed"),event_id:e().nullish(),interaction:t({id:e().nullish(),status:i.nullish(),usage:gn().nullish(),service_tier:e().nullish()}).loose()}).loose(),W=t({event_type:a("error"),event_id:e().nullish(),error:t({code:e().nullish(),message:e().nullish()}).loose().nullish()}).loose(),J=t({event_type:e()}).loose();return p([h,f,K,L,k,U,w,S,W,J])})())),Si=u(()=>l(t({previousInteractionId:e().nullish(),store:r().nullish(),agent:e().nullish(),agentConfig:p([t({type:a("dynamic")}).loose(),t({type:a("deep-research"),thinkingSummaries:s(["auto","none"]).nullish(),visualization:s(["off","auto"]).nullish(),collaborativePlanning:r().nullish()})]).nullish(),thinkingLevel:s(["minimal","low","medium","high"]).nullish(),thinkingSummaries:s(["auto","none"]).nullish(),responseFormat:o(p([t({type:a("text"),mimeType:e().nullish(),schema:m().nullish()}).loose(),t({type:a("image"),mimeType:e().nullish(),aspectRatio:s(["1:1","2:3","3:2","3:4","4:3","4:5","5:4","9:16","16:9","21:9","1:8","8:1","1:4","4:1"]).nullish(),imageSize:s(["1K","2K","4K","512"]).nullish()}).loose(),t({type:a("audio"),mimeType:e().nullish()}).loose(),t({type:a("video"),aspectRatio:s(["16:9","9:16"]).nullish(),resolution:s(["360p","720p","1080p","4k"]).nullish(),duration:e().nullish(),delivery:s(["inline","uri"]).nullish(),gcsUri:e().nullish()}).loose()])).nullish(),imageConfig:t({aspectRatio:s(["1:1","2:3","3:2","3:4","4:3","4:5","5:4","9:16","16:9","21:9","1:8","8:1","1:4","4:1"]).nullish(),imageSize:s(["1K","2K","4K","512"]).nullish()}).nullish(),mediaResolution:s(["low","medium","high","ultra_high"]).nullish(),responseModalities:o(s(["text","image","audio","video","document"])).nullish(),serviceTier:s(["flex","standard","priority"]).nullish(),systemInstruction:e().nullish(),signature:e().nullish(),interactionId:e().nullish(),pollingTimeoutMs:n().int().positive().nullish(),background:r().nullish(),environment:p([e(),t({type:a("remote"),sources:o(p([t({type:a("gcs"),source:e(),target:e().nullish()}),t({type:a("repository"),source:e(),target:e().nullish()}),t({type:a("inline"),content:e(),target:e()})])).nullish(),network:p([a("disabled"),t({allowlist:o(t({domain:e(),transform:o(d(e(),e())).nullish()}))})]).nullish()})]).nullish()})));function Ue({signature:i,interactionId:c,processingId:g,processingCallId:h}){let f={};if(i!=null)f.signature=i;if(c!=null)f.interactionId=c;if(g!=null)f.processingId=g;if(h!=null)f.processingCallId=h;return Object.keys(f).length>0?{providerMetadata:{google:f}}:{}}var Ii=new Set(["google_search_call","code_execution_call","url_context_call","file_search_call","google_maps_call","mcp_server_tool_call"]),ki=new Set(["google_search_result","code_execution_result","url_context_result","file_search_result","google_maps_result","mcp_server_tool_result"]);function xi(i){return i.replace(/_call$/,"")}function Ri(i){return i.replace(/_result$/,"")}function Cn({steps:i,generateId:c,interactionId:g}){let h=[],f=!1;if(i==null)return{content:h,hasFunctionCall:f};for(let y of i){if(y==null||typeof y!=="object")continue;let x=y.type;if(typeof x!=="string")continue;switch(x){case"user_input":break;case"model_output":{let _=y.content??[];for(let v of _){if(v==null||typeof v!=="object")continue;let A=v.type;if(A==="text"){let R=v.text??"",P=v.annotations;h.push({type:"text",text:R,...Ue({interactionId:g})});let B=vt({annotations:P,generateId:c});for(let N of B)h.push(N)}else if(A==="image"){let R=v;if(R.data!=null&&R.data.length>0)h.push({type:"file",mediaType:R.mime_type??"image/png",data:{type:"data",data:R.data},...Ue({interactionId:g})});else if(R.uri!=null&&R.uri.length>0)h.push({type:"file",mediaType:R.mime_type??"image/png",data:{type:"url",url:new URL(R.uri)},...Ue({interactionId:g})})}else if(A==="video"){let R=v;if(R.data!=null&&R.data.length>0)h.push({type:"file",mediaType:R.mime_type??"video/mp4",data:{type:"data",data:R.data},...Ue({interactionId:g})});else if(R.uri!=null&&R.uri.length>0)h.push({type:"file",mediaType:R.mime_type??"video/mp4",data:{type:"url",url:new URL(R.uri)},...Ue({interactionId:g})})}}break}case"thought":{let _=y,v=(Array.isArray(_.summary)?_.summary:[]).filter((A)=>A?.type==="text"&&typeof A.text==="string").map((A)=>A.text).join(`
14
+ `);h.push({type:"reasoning",text:v,...Ue({signature:_.signature,interactionId:g})});break}case"processing_call":{let _=y,v=_.id||c();h.push({type:"custom",kind:"google.processing_call",...Ue({signature:_.signature,interactionId:g,processingId:v})});break}case"processing_result":{let _=y,v=_.call_id||c();h.push({type:"custom",kind:"google.processing_result",...Ue({signature:_.signature,interactionId:g,processingCallId:v})});break}case"function_call":{f=!0;let _=y;h.push({type:"tool-call",toolCallId:_.id,toolName:_.name,input:JSON.stringify(_.arguments??{}),...Ue({signature:_.signature,interactionId:g})});break}default:if(Ii.has(x)){let _=y,v=x==="mcp_server_tool_call"?_.name??"mcp_server_tool":xi(x),A=JSON.stringify(_.arguments??{});h.push({type:"tool-call",toolCallId:_.id||c(),toolName:v,input:A,providerExecuted:!0})}else if(ki.has(x)){let _=y,v=x==="mcp_server_tool_result"?_.name??"mcp_server_tool":Ri(x);h.push({type:"tool-result",toolCallId:_.call_id||c(),toolName:v,result:_.result??null});let A=pn({block:y,generateId:c});for(let R of A)h.push(R)}}}return{content:h,hasFunctionCall:f}}var Oi=()=>globalThis.fetch;async function wn({baseURL:i,interactionId:c,headers:g,fetch:h=Oi()}){if(c==null||c.length===0)return;let f=`${i}/interactions/${encodeURIComponent(c)}/cancel`;try{let y=await h(f,{method:"POST",headers:Ee(I({"Content-Type":"application/json"},g),Pi()),body:"{}"});try{await y.text()}catch{}}catch{}}var Mi=new Set(["completed","failed","cancelled","incomplete"]);function Tt(i){return i!=null&&Mi.has(i)}var Ei=1000,Ai=1e4,Li=1800000;async function ji({baseURL:i,interactionId:c,headers:g,fetch:h,abortSignal:f,initialDelayMs:y=Ei,maxDelayMs:x=Ai,timeoutMs:_=Li}){if(c==null||c.length===0)throw Error("google.interactions: cannot poll a background interaction without an id. The POST response did not include an interaction id.");let v=Date.now(),A=y,R=`${i}/interactions/${encodeURIComponent(c)}`,P=()=>wn({baseURL:i,interactionId:c,headers:g,fetch:h});try{while(!0){if(f?.aborted)throw await P(),new DOMException("Polling was aborted","AbortError");if(Date.now()-v>_)throw Error(`google.interactions: timed out polling interaction ${c} after ${_}ms.`);await Ci(A,{abortSignal:f});let{value:B,rawValue:N,responseHeaders:q}=await Ce({url:R,validateUrl:!1,headers:g,failedResponseHandler:ge,successfulResponseHandler:E(bt),abortSignal:f,fetch:h});if(Tt(B.status))return{response:B,rawResponse:N,responseHeaders:q};A=Math.min(A*2,x)}}catch(B){if(We(B))await P();throw B}}function Ui({tools:i,toolChoice:c}){let g=[],h=i?.length?i:void 0;if(h==null)return{tools:void 0,toolChoice:void 0,toolWarnings:g};let f=[];for(let _ of h){if(_.type==="function"){f.push({type:"function",name:_.name,description:_.description??"",parameters:_.inputSchema});continue}if(_.type==="provider"){let v=_.args??{};switch(_.id){case"google.google_search":{let A=v.searchTypes,R;if(A!=null&&typeof A==="object"){let P=[];if(A.webSearch!=null)P.push("web_search");if(A.imageSearch!=null)P.push("image_search");if(P.length>0)R=P}f.push({type:"google_search",...R!=null?{search_types:R}:{}});break}case"google.code_execution":f.push({type:"code_execution"});break;case"google.url_context":f.push({type:"url_context"});break;case"google.file_search":f.push({type:"file_search",...v.fileSearchStoreNames!=null?{file_search_store_names:v.fileSearchStoreNames}:{},...v.topK!=null?{top_k:v.topK}:{},...v.metadataFilter!=null?{metadata_filter:v.metadataFilter}:{}});break;case"google.google_maps":f.push({type:"google_maps",...v.latitude!=null?{latitude:v.latitude}:{},...v.longitude!=null?{longitude:v.longitude}:{},...v.enableWidget!=null?{enable_widget:v.enableWidget}:{}});break;case"google.computer_use":f.push({type:"computer_use",environment:v.environment??"browser",...v.excludedPredefinedFunctions!=null?{excludedPredefinedFunctions:v.excludedPredefinedFunctions}:{}});break;case"google.mcp_server":f.push({type:"mcp_server",...v.name!=null?{name:v.name}:{},...v.url!=null?{url:v.url}:{},...v.headers!=null?{headers:v.headers}:{},...v.allowedTools!=null?{allowed_tools:v.allowedTools}:{}});break;case"google.retrieval":{let A=v.vertexAiSearchConfig??void 0;f.push({type:"retrieval",...v.retrievalTypes!=null?{retrieval_types:v.retrievalTypes}:{retrieval_types:["vertex_ai_search"]},...A!=null?{vertex_ai_search_config:A}:{}});break}default:g.push({type:"unsupported",feature:`provider-defined tool ${_.id}`,details:`provider-defined tool ${_.id} is not supported by google.interactions; tool dropped.`})}continue}g.push({type:"unsupported",feature:`tool of type ${_.type}`,details:"Only function tools and google.* provider-defined tools are supported by google.interactions; tool dropped."})}let y=f.some((_)=>_.type==="function"),x;if(c!=null&&y)switch(c.type){case"auto":x="auto";break;case"required":x="any";break;case"none":x="none";break;case"tool":x={allowed_tools:{mode:"validated",tools:[c.toolName]}}}return{tools:f.length>0?f:void 0,toolChoice:x,toolWarnings:g}}var Ni=3,Gi=500;function Di({baseURL:i,interactionId:c,headers:g,fetch:h,abortSignal:f,maxRetries:y=Ni,retryDelayMs:x=Gi}){if(c.length===0)throw Error("google.interactions: cannot stream a background interaction without an id.");let _={...g,accept:"text/event-stream"},v,A=!1,R=0,P=!1,B,N=new AbortController,q=()=>N.abort();if(f!=null)if(f.aborted)N.abort();else f.addEventListener("abort",q,{once:!0});let V=N.signal;function K(){let k=`${i}/interactions/${encodeURIComponent(c)}`,U=new URLSearchParams({stream:"true"});if(v!=null)U.set("last_event_id",v);return`${k}?${U.toString()}`}async function L(){let{value:k}=await Ce({url:K(),validateUrl:!1,headers:_,failedResponseHandler:ge,successfulResponseHandler:ze(_n),abortSignal:V,fetch:h});return k.getReader()}return new ReadableStream({async start(k){try{while(!A&&!V.aborted){if(B==null)try{B=await L(),P=!1}catch(U){if(We(U)||V.aborted){k.error(U);return}if(R++,R>=y){k.error(U);return}await Ci(x*R,{abortSignal:V});continue}try{let{done:U,value:w}=await B.read();if(U){if(B=void 0,A)break;if(!P){if(R++,R>=y){k.error(Error("google.interactions: SSE stream closed without producing any events."));return}await Ci(x*R,{abortSignal:V})}else R=0;continue}if(P=!0,w.success){let S=w.value;if(typeof S.event_id==="string"&&S.event_id.length>0)v=S.event_id;if(S.event_type==="interaction.completed"||S.event_type==="error")A=!0}k.enqueue(w)}catch(U){if(We(U)||V.aborted){k.error(U);return}if(B=void 0,R++,R>=y){k.error(U);return}await Ci(x*R,{abortSignal:V})}}k.close()}catch(U){k.error(U)}finally{if(f!=null)f.removeEventListener("abort",q);if(B?.cancel().catch(()=>{}),B=void 0,V.aborted&&!A)await wn({baseURL:i,interactionId:c,headers:g,fetch:h})}},cancel(){N.abort(),B?.cancel().catch(()=>{}),B=void 0}})}function qi({response:i,warnings:c,generateId:g,includeRawChunks:h,headerServiceTier:f}){return new ReadableStream({start(y){y.enqueue({type:"stream-start",warnings:c});let x=typeof i.id==="string"&&i.id.length>0?i.id:void 0,_,v=i.created;if(typeof v==="string"){let K=new Date(v);if(!Number.isNaN(K.getTime()))_=K}if(y.enqueue({type:"response-metadata",...x!=null?{id:x}:{},modelId:i.model??void 0,..._?{timestamp:_}:{}}),h)y.enqueue({type:"raw",rawValue:i});let{content:A,hasFunctionCall:R}=Cn({steps:i.steps??null,generateId:g,interactionId:x}),P=0,B=()=>`${x??"agent"}:${P++}`;for(let K of A)switch(K.type){case"text":{let L=B(),k=K.providerMetadata;if(y.enqueue({type:"text-start",id:L}),K.text.length>0)y.enqueue({type:"text-delta",id:L,delta:K.text});y.enqueue({type:"text-end",id:L,...k?{providerMetadata:k}:{}});break}case"reasoning":{let L=B(),k=K.providerMetadata;if(y.enqueue({type:"reasoning-start",id:L}),K.text.length>0)y.enqueue({type:"reasoning-delta",id:L,delta:K.text});y.enqueue({type:"reasoning-end",id:L,...k?{providerMetadata:k}:{}});break}case"tool-call":{let L=K.providerMetadata;y.enqueue({type:"tool-input-start",id:K.toolCallId,toolName:K.toolName,...K.providerExecuted?{providerExecuted:K.providerExecuted}:{}}),y.enqueue({type:"tool-input-delta",id:K.toolCallId,delta:K.input}),y.enqueue({type:"tool-input-end",id:K.toolCallId}),y.enqueue({type:"tool-call",toolCallId:K.toolCallId,toolName:K.toolName,input:K.input,...K.providerExecuted?{providerExecuted:K.providerExecuted}:{},...L?{providerMetadata:L}:{}});break}case"tool-result":y.enqueue({type:"tool-result",toolCallId:K.toolCallId,toolName:K.toolName,result:K.result});break;case"source":case"file":y.enqueue(K)}let N=i.service_tier??f,q={unified:St({status:i.status,hasFunctionCall:R}),raw:i.status},V={google:{...x!=null?{interactionId:x}:{},...N!=null?{serviceTier:N}:{}}};y.enqueue({type:"finish",finishReason:q,usage:wt(i.usage),providerMetadata:V}),y.close()}})}var $i=class i{static[H](c){return{...te({modelId:c.modelId,config:c.config}),agent:c.agent}}static[Q](c){return new i(c.agent!=null?{agent:c.agent}:c.modelId,c.config)}constructor(c,g){if(this.specificationVersion="v4",typeof c==="string")this.modelId=c,this.agent=void 0;else if("managedAgent"in c)this.modelId=c.managedAgent,this.agent=c.managedAgent;else this.modelId=c.agent,this.agent=c.agent;this.config=g}get provider(){return this.config.provider}get supportedUrls(){if(this.config.supportedUrls)return this.config.supportedUrls();return{"image/*":[/^https?:\/\/.+/],"application/pdf":[/^https?:\/\/.+/],"audio/*":[/^https?:\/\/.+/],"video/*":[/^https?:\/\/(www\.)?youtube\.com\/watch\?v=.+/,/^https?:\/\/youtu\.be\/.+/,/^gs:\/\/.+/]}}async getArgs(c){let g=[],h=await T({provider:"google",providerOptions:c.providerOptions,schema:Si}),f=this.agent!=null;if(!f){if(c.frequencyPenalty!=null)g.push({type:"unsupported",feature:"frequencyPenalty"});if(c.presencePenalty!=null)g.push({type:"unsupported",feature:"presencePenalty"})}let y=c.tools!=null&&c.tools.length>0,x,_;if(y){let L=Ui({tools:c.tools,toolChoice:c.toolChoice});x=L.tools,_=L.toolChoice,g.push(...L.toolWarnings)}let v=[];if(c.responseFormat?.type==="json")if(f)g.push({type:"other",message:"google.interactions: structured output (responseFormat) is not supported when an agent is set; responseFormat will be ignored."});else{let L={type:"text",mime_type:"application/json",...c.responseFormat.schema!=null?{schema:c.responseFormat.schema}:{}};v.push(L)}if(h?.responseFormat!=null){for(let L of h.responseFormat)if(L.type==="text")v.push(je({type:"text",mime_type:L.mimeType??void 0,schema:L.schema??void 0}));else if(L.type==="image")v.push(je({type:"image",mime_type:L.mimeType??void 0,aspect_ratio:L.aspectRatio??void 0,image_size:L.imageSize??void 0}));else if(L.type==="audio")v.push(je({type:"audio",mime_type:L.mimeType??void 0}));else if(L.type==="video")v.push(je({type:"video",aspect_ratio:L.aspectRatio??void 0,resolution:L.resolution??void 0,duration:L.duration??void 0,delivery:L.delivery??void 0,gcs_uri:L.gcsUri??void 0}))}let{input:A,systemInstruction:R,warnings:P}=fi({prompt:c.prompt,previousInteractionId:h?.previousInteractionId??void 0,store:h?.store??void 0,mediaResolution:h?.mediaResolution??void 0});g.push(...P);let B=R,N=h?.systemInstruction??void 0;if(B!=null&&N!=null)g.push({type:"other",message:"google.interactions: both AI SDK system message and providerOptions.google.systemInstruction were set; using the AI SDK system message."});else if(B==null&&N!=null)B=N;let q;if(f){let L=[];if(c.temperature!=null)L.push("temperature");if(c.topP!=null)L.push("topP");if(c.topK!=null)L.push("topK");if(c.frequencyPenalty!=null)L.push("frequencyPenalty");if(c.presencePenalty!=null)L.push("presencePenalty");if(c.seed!=null)L.push("seed");if(c.stopSequences!=null&&c.stopSequences.length>0)L.push("stopSequences");if(c.maxOutputTokens!=null)L.push("maxOutputTokens");if(h?.thinkingLevel!=null)L.push("thinkingLevel");if(h?.thinkingSummaries!=null)L.push("thinkingSummaries");if(h?.imageConfig!=null)L.push("imageConfig");if(L.length>0)g.push({type:"other",message:`google.interactions: ${L.join(", ")} ${L.length===1?"is":"are"} not supported when an agent is set; use providerOptions.google.agentConfig instead. Dropped from the request body.`});q=void 0}else if(q=je({temperature:c.temperature??void 0,top_p:c.topP??void 0,top_k:c.topK??void 0,seed:c.seed??void 0,stop_sequences:c.stopSequences!=null&&c.stopSequences.length>0?c.stopSequences:void 0,max_output_tokens:c.maxOutputTokens??void 0,thinking_level:h?.thinkingLevel??void 0,thinking_summaries:h?.thinkingSummaries??void 0,tool_choice:_}),h?.imageConfig!=null){let L=v.some((k)=>k.type==="image");if(g.push({type:"other",message:L?"google.interactions: providerOptions.google.imageConfig is deprecated and was ignored because providerOptions.google.responseFormat already supplies an image entry. Use responseFormat exclusively.":'google.interactions: providerOptions.google.imageConfig is deprecated. Use providerOptions.google.responseFormat with a { type: "image", ... } entry instead.'}),!L)v.push({type:"image",mime_type:"image/png",...h.imageConfig.aspectRatio!=null?{aspect_ratio:h.imageConfig.aspectRatio}:{},...h.imageConfig.imageSize!=null?{image_size:h.imageConfig.imageSize}:{}})}let V;if(f&&h?.agentConfig!=null){let L=h.agentConfig;if(L.type==="deep-research")V=je({type:"deep-research",thinking_summaries:L.thinkingSummaries??void 0,visualization:L.visualization??void 0,collaborative_planning:L.collaborativePlanning??void 0});else if(L.type==="dynamic")V={type:"dynamic"}}let K;if(h?.environment!=null)if(!f)g.push({type:"other",message:"google.interactions: environment is only supported when an agent is set; environment will be omitted from the request body."});else if(typeof h.environment==="string")K=h.environment;else{let L=h.environment,k=L.sources?.map((w)=>{if(w.type==="inline")return{type:"inline",content:w.content,target:w.target};return je({type:w.type,source:w.source,target:w.target??void 0})}),U;if(L.network==="disabled")U="disabled";else if(L.network!=null)U={allowlist:L.network.allowlist.map((w)=>je({domain:w.domain,transform:w.transform??void 0}))};K=je({type:"remote",sources:k!=null&&k.length>0?k:void 0,network:U})}return{args:je({...f?{agent:this.agent}:{model:this.modelId},input:A,system_instruction:B,tools:x,response_format:v.length>0?v:void 0,response_modalities:h?.responseModalities!=null?h.responseModalities:void 0,previous_interaction_id:h?.previousInteractionId??void 0,service_tier:h?.serviceTier??void 0,store:h?.store??void 0,generation_config:q!=null&&Object.keys(q).length>0?q:void 0,agent_config:V,environment:K,background:h?.background??void 0}),warnings:g,isAgent:f,isBackground:h?.background===!0,pollingTimeoutMs:h?.pollingTimeoutMs??void 0}}async doGenerate(c){let{args:g,warnings:h,isAgent:f,isBackground:y,pollingTimeoutMs:x}=await this.getArgs(c),_=`${this.config.baseURL}/interactions`,v=I(this.config.headers?await M(this.config.headers):void 0,c.headers),{responseHeaders:A,value:R,rawValue:P}=await O({url:_,headers:v,body:g,failedResponseHandler:ge,successfulResponseHandler:E(bt),abortSignal:c.abortSignal,fetch:this.config.fetch});if((f||y)&&!Tt(R.status)){let w=await ji({baseURL:this.config.baseURL,interactionId:R.id,headers:v,fetch:this.config.fetch,abortSignal:c.abortSignal,timeoutMs:x});R=w.response,P=w.rawResponse,A=w.responseHeaders??A}let B=typeof R.id==="string"&&R.id.length>0?R.id:void 0,{content:N,hasFunctionCall:q}=Cn({steps:R.steps??null,generateId:this.config.generateId??C,interactionId:B}),V={unified:St({status:R.status,hasFunctionCall:q}),raw:R.status},K=R.service_tier??A?.["x-gemini-service-tier"]??void 0,L=un(R.usage),k={google:{...B!=null?{interactionId:B}:{},...K!=null?{serviceTier:K}:{},...L!=null?{outputTokensByModality:L}:{}}},U;if(typeof R.created==="string"){let w=new Date(R.created);if(!Number.isNaN(w.getTime()))U=w}return{content:N,finishReason:V,usage:wt(R.usage),warnings:h,providerMetadata:k,request:{body:g},response:{headers:A,body:P,...B!=null?{id:B}:{},...U?{timestamp:U}:{},modelId:R.model??void 0}}}async doStream(c){let{args:g,warnings:h,isBackground:f,pollingTimeoutMs:y}=await this.getArgs(c),x=`${this.config.baseURL}/interactions`,_=I(this.config.headers?await M(this.config.headers):void 0,c.headers);if(f)return this.doStreamBackground({args:g,warnings:h,url:x,mergedHeaders:_,options:c,pollingTimeoutMs:y});let v={...g,stream:!0},{responseHeaders:A,value:R}=await O({url:x,headers:_,body:v,failedResponseHandler:ge,successfulResponseHandler:ze(_n),abortSignal:c.abortSignal,fetch:this.config.fetch}),P=A?.["x-gemini-service-tier"],B=$t({warnings:h,generateId:this.config.generateId??C,includeRawChunks:c.includeRawChunks,serviceTier:P});return{stream:R.pipeThrough(B),request:{body:v},response:{headers:A}}}async doStreamBackground({args:c,warnings:g,url:h,mergedHeaders:f,options:y,pollingTimeoutMs:x}){let{responseHeaders:_,value:v}=await O({url:h,headers:f,body:c,failedResponseHandler:ge,successfulResponseHandler:E(bt),abortSignal:y.abortSignal,fetch:this.config.fetch}),A=v.id;if(A==null||A.length===0)throw Error("google.interactions: background POST response did not include an interaction id; cannot stream the result.");let R=_?.["x-gemini-service-tier"];if(Tt(v.status))return{stream:qi({response:v,warnings:g,generateId:this.config.generateId??C,includeRawChunks:y.includeRawChunks,headerServiceTier:R}),request:{body:c},response:{headers:_}};let P=Di({baseURL:this.config.baseURL,interactionId:A,headers:f,fetch:this.config.fetch,abortSignal:y.abortSignal}),B=$t({warnings:g,generateId:this.config.generateId??C,includeRawChunks:y.includeRawChunks,serviceTier:R});return{stream:P.pipeThrough(B),request:{body:c},response:{headers:_}}}};function je(i){let c={};for(let[g,h]of Object.entries(i)){if(h===void 0)continue;c[g]=h}return c}function Sn(i){let c=new URL(i),g=c.pathname.split("/"),h=g.at(-1);if(h==="v1beta"||h==="v1alpha")g.pop(),c.pathname=g.join("/")||"/";return c}function It(i,c){let g=Sn(i);return g.protocol=g.protocol==="https:"?"wss:":"ws:",g.pathname=`${g.pathname.replace(/\/$/,"")}/ws/${c}`,g}var Fi=class{constructor(){this.turnCounter=0,this.inputTranscriptionCounter=0,this.inputTranscriptionBuffer="",this.inputTranscriptionBoundary="none",this.preserveInputTranscriptionAcrossTurnComplete=!1,this.hasAudio=!1,this.hasText=!1,this.hasTranscript=!1,this.turnClosed=!1,this.inputAudioRate=16000}get responseId(){return`google-resp-${this.turnCounter}`}get itemId(){return`google-item-${this.turnCounter}`}beginTurnIfClosed(){if(!this.turnClosed)return;this.turnCounter++,this.hasAudio=!1,this.hasText=!1,this.hasTranscript=!1,this.turnClosed=!1,this.preserveInputTranscriptionAcrossTurnComplete=!1}accumulateInputTranscription({text:i,finished:c}){if(!i){if(c===!0)this.finishInputTranscription();return}let g=c!=null;if(this.inputTranscriptionBuffer!==""&&(this.inputTranscriptionBoundary==="interrupted"||this.inputTranscriptionBoundary==="turn-complete"&&!g))this.finishInputTranscription();this.inputTranscriptionBoundary="none",this.inputTranscriptionBuffer+=i;let h={itemId:`google-input-${this.inputTranscriptionCounter}`,transcript:this.inputTranscriptionBuffer};if(c===!0)this.finishInputTranscription();return h}finishInputTranscription(){if(this.inputTranscriptionBuffer==="")return;this.inputTranscriptionCounter++,this.inputTranscriptionBuffer=""}parseServerEvent(i){let c=i;if(c.setupComplete!=null)return{type:"session-created",raw:i};if(c.toolCall!=null)return this.beginTurnIfClosed(),(c.toolCall.functionCalls??[]).flatMap((g)=>{let h=JSON.stringify(g.args??{});return[{type:"function-call-arguments-delta",responseId:this.responseId,itemId:this.itemId,callId:g.id,delta:h,raw:i},{type:"function-call-arguments-done",responseId:this.responseId,itemId:this.itemId,callId:g.id,name:g.name,arguments:h,raw:i}]});if(c.toolCallCancellation!=null)return{type:"custom",rawType:"toolCallCancellation",raw:i};if(c.goAway!=null)return{type:"custom",rawType:"goAway",raw:i};if(c.sessionResumptionUpdate!=null)return{type:"custom",rawType:"sessionResumptionUpdate",raw:i};if(c.serverContent!=null)return this.parseServerContent(c.serverContent,i);if(c.inputTranscription!=null){let g=this.accumulateInputTranscription(c.inputTranscription);if(g!=null)return{type:"input-transcription-completed",...g,raw:i}}return{type:"custom",rawType:String(Object.keys(c)[0]),raw:i}}parseServerContent(i,c){let g=[];if(i.interrupted)this.inputTranscriptionBoundary="interrupted",this.preserveInputTranscriptionAcrossTurnComplete=!0,this.turnClosed=!0,g.push({type:"speech-started",raw:c});if(i.modelTurn?.parts){this.beginTurnIfClosed();for(let h of i.modelTurn.parts){if(h.inlineData?.data)this.hasAudio=!0,g.push({type:"audio-delta",responseId:this.responseId,itemId:this.itemId,delta:h.inlineData.data,raw:c});if(h.text)this.hasText=!0,g.push({type:"text-delta",responseId:this.responseId,itemId:this.itemId,delta:h.text,raw:c})}}if(i.outputTranscription?.text)this.hasTranscript=!0,g.push({type:"audio-transcript-delta",responseId:this.responseId,itemId:this.itemId,delta:i.outputTranscription.text,raw:c});if(i.inputTranscription!=null){let h=this.accumulateInputTranscription(i.inputTranscription);if(h!=null)g.push({type:"input-transcription-completed",...h,raw:c})}if(i.generationComplete)g.push({type:"custom",rawType:"generationComplete",raw:c});if(i.interactionStatus!=null)g.push({type:"custom",rawType:"interactionStatus",raw:c});if(i.waitingForInput)g.push({type:"custom",rawType:"waitingForInput",raw:c});if(i.turnComplete){if(this.hasAudio)g.push({type:"audio-done",responseId:this.responseId,itemId:this.itemId,raw:c});if(this.hasText)g.push({type:"text-done",responseId:this.responseId,itemId:this.itemId,raw:c});if(this.hasTranscript)g.push({type:"audio-transcript-done",responseId:this.responseId,itemId:this.itemId,raw:c});if(g.push({type:"response-done",responseId:this.responseId,status:"completed",raw:c}),this.turnClosed=!0,this.preserveInputTranscriptionAcrossTurnComplete)this.preserveInputTranscriptionAcrossTurnComplete=!1;else if(this.inputTranscriptionBoundary!=="interrupted")this.inputTranscriptionBoundary="turn-complete"}if(g.length===0)return{type:"custom",rawType:"serverContent",raw:c};return g.length===1?g[0]:g}serializeClientEvent(i,c){switch(i.type){case"session-update":if(i.config.inputAudioFormat?.rate!=null)this.inputAudioRate=i.config.inputAudioFormat.rate;return{setup:_t(i.config,c)};case"input-audio-append":return{realtimeInput:{audio:{data:i.audio,mimeType:`audio/pcm;rate=${this.inputAudioRate}`}}};case"input-audio-commit":return{realtimeInput:{audioStreamEnd:!0}};case"input-audio-clear":case"response-create":case"response-cancel":case"conversation-item-truncate":return null;case"conversation-item-create":{let g=i.item;switch(g.type){case"text-message":return{realtimeInput:{text:g.text}};case"function-call-output":return Hi(g);case"audio-message":return null}break}}return null}};function Bi(i){return typeof i==="object"&&i!==null&&!Array.isArray(i)?i:{output:i}}async function Hi(i){let c=await yt({text:i.output}),g=c.success?Bi(c.value):{output:i.output};return{toolResponse:{functionResponses:[{id:i.callId,name:i.name,response:g}]}}}function Vi(i){let c=i.split("/").at(-1)?.toLowerCase()??"";return/^gemini-\d+\.\d+-live\b.*thinking/.test(c)}function _t(i,c){let g={model:He(c)},{google:h,...f}=i?.providerOptions??{},y=Oe(h)?h:void 0,x={};if(i?.outputModalities!=null)x.responseModalities=i.outputModalities.map((P)=>P.toUpperCase());else x.responseModalities=["AUDIO"];if(i?.voice!=null)x.speechConfig={voiceConfig:{prebuiltVoiceConfig:{voiceName:i.voice}}};if(g.generationConfig=x,i?.instructions!=null)g.systemInstruction={parts:[{text:i.instructions}]};if(i?.tools!=null&&i.tools.length>0)g.tools=[{functionDeclarations:i.tools.map((P)=>({name:P.name,description:P.description,parametersJsonSchema:P.parameters,...y?.defaultToolBehavior!=null?{behavior:y.defaultToolBehavior}:{}}))}];if(i?.inputAudioTranscription!=null)g.inputAudioTranscription={};if(i?.outputAudioTranscription!=null)g.outputAudioTranscription={};let _=f.generationConfig,v=y?.thinkingConfig??(Oe(_)&&Oe(_.thinkingConfig)?_.thinkingConfig:void 0),A=Vi(c)&&v?.thinkingLevel==null&&v?.thinkingBudget==null?{...v,thinkingLevel:"low"}:y?.thinkingConfig,R=()=>{if(A==null)return;let P=Oe(g.generationConfig)?g.generationConfig:x;g.generationConfig={...P,thinkingConfig:A}};if(i?.providerOptions==null)return R(),g;if(Object.assign(g,f),y?.translationConfig!=null)g.generationConfig={...Oe(g.generationConfig)?g.generationConfig:x,translationConfig:y.translationConfig};return R(),g}var Wi="google.ai.generativelanguage.v1alpha.GenerativeService.BidiGenerateContentConstrained";function Ki(i){let c=Sn(i);return c.pathname=`${c.pathname.replace(/\/$/,"")}/v1alpha/auth_tokens`,c.toString()}function zi(i){return It(i,Wi).toString()}var Ji=class{constructor(i,c){this.specificationVersion="v4",this.mapper=new Fi,this.modelId=i,this.provider=c.provider,this.config=c}async doCreateClientSecret(i){let c=this.config.fetch??fetch,g=this.config.headers()["x-goog-api-key"];if(!g)throw Error("Google Generative AI API key is required for realtime token creation.");let h=Date.now(),f=(i.expiresAfterSeconds??60)*1000,y=new Date(h+f).toISOString(),x=new Date(h+f+1800000).toISOString(),_=_t(i.sessionConfig,this.modelId),v=await c(`${Ki(this.config.baseURL)}?key=${encodeURIComponent(g)}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({uses:0,expireTime:x,newSessionExpireTime:y,bidiGenerateContentSetup:_})});if(!v.ok){let R=await v.text();throw Error(`Google realtime auth token request failed: ${v.status} ${R}`)}let A=await v.json();return{token:A.name,url:zi(this.config.baseURL),expiresAt:A.expireTime?Math.floor(new Date(A.expireTime).getTime()/1000):void 0}}getWebSocketConfig(i){return{url:`${i.url}?access_token=${encodeURIComponent(i.token)}`}}parseServerEvent(i){return this.mapper.parseServerEvent(i)}serializeClientEvent(i){return this.mapper.serializeClientEvent(i,this.modelId)}buildSessionConfig(i){return _t(i,this.modelId)}},Yi=u(()=>l(t({languageCodes:o(e()).optional(),customVocabulary:o(e()).optional(),wordTimestamp:r().optional(),diarization:r().optional(),mode:s(["SMART","VERBATIM"]).optional()}))),Xi="google.ai.generativelanguage.v1beta.GenerativeService.BidiGenerateContent",Qi=3000;function Zi(i,c){let g=It(i,Xi);return g.searchParams.set("key",c),g}function Ht(i){return i.includes("-live")}var es=class i{static[H](c){return te({modelId:c.modelId,config:c.config})}static[Q](c){return new i(c.modelId,c.config)}get provider(){return this.config.provider}constructor(c,g){this.modelId=c,this.config=g,this.specificationVersion="v4"}async parseOptions(c){return T({provider:"google",providerOptions:c,schema:Yi})}async doGenerate(c){if(Ht(this.modelId))throw new F({argument:"modelId",message:`Model '${this.modelId}' only supports streaming transcription. Use experimental_streamTranscribe, or a unary model such as 'gemini-3.5-transcribe'.`});let g=this.config._internal?.currentDate?.()??new Date,h=[],f=os(await this.parseOptions(c.providerOptions)),y={model:this.modelId,input:[{type:"audio",data:j(c.audio),mime_type:c.mediaType}],...f!=null?{generation_config:{transcription_config:f}}:{}},{value:x,responseHeaders:_,rawValue:v}=await O({url:`${this.config.baseURL}/interactions`,headers:I(this.config.headers?await M(this.config.headers):void 0,c.headers),body:y,failedResponseHandler:ge,successfulResponseHandler:E(as),abortSignal:c.abortSignal,fetch:this.config.fetch}),A="",R=[];for(let P of x.steps??[])for(let B of P.content??[]){if(B.type!=="text"||B.text==null)continue;A+=B.text;for(let N of B.annotations??[]){if(N.type!=="word_info")continue;let q=Wt(N.start_offset),V=Wt(N.end_offset);if(N.text==null||q==null||V==null)continue;R.push({text:N.text,startSecond:q,endSecond:V})}}return{text:A,segments:R,language:void 0,durationInSeconds:void 0,warnings:h,...x.usage!=null&&{usage:x.usage},response:{timestamp:g,modelId:this.modelId,headers:_,body:v},...x.usage!=null?{providerMetadata:{google:{usage:x.usage}}}:{}}}async doStream(c){if(!Ht(this.modelId))throw new F({argument:"modelId",message:`Model '${this.modelId}' does not support streaming transcription. Use a live model such as 'gemini-3.5-transcribe-live'.`});let g=this.config._internal?.currentDate?.()??new Date,h=[],f=await this.parseOptions(c.providerOptions);is(c.inputAudioFormat);let y=I(this.config.headers?await M(this.config.headers):void 0,c.headers),x;for(let[A,R]of Object.entries(y))if(A.toLowerCase()==="x-goog-api-key"&&R!=null)x=R;if(x==null)throw Error("Google Generative AI API key is required for streaming transcription.");let _=Object.fromEntries(Object.entries(y).filter(([A])=>A.toLowerCase()!=="x-goog-api-key")),v={model:He(this.modelId),inputAudioTranscription:ns(f)??{}};return{request:{body:v},response:{timestamp:g,modelId:this.modelId},stream:ts({webSocket:this.config.webSocket,url:Zi(this.config.baseURL,x),headers:_,setup:v,inputAudioRate:c.inputAudioFormat.rate??16000,finishGraceMs:this.config._internal?.finishGraceMs??Qi,warnings:h,audio:c.audio,abortSignal:c.abortSignal,includeRawChunks:c.includeRawChunks})}}};function ts({webSocket:i,url:c,headers:g,setup:h,inputAudioRate:f,finishGraceMs:y,warnings:x,audio:_,abortSignal:v,includeRawChunks:A}){let R=!1,P=()=>{};return new ReadableStream({start:(B)=>{let N,q,V,K=new Promise((se)=>{V=se}),L=0,k="",U="",w="",S,W=!1,J,X,re=()=>`google-segment-${L}`,ye=()=>{if(X!=null)clearTimeout(X),X=void 0},ue=()=>{if(R||!W)return;ye(),X=setTimeout(()=>{X=void 0,ce()},y)};P=(se)=>{if(ye(),N!=null)N.cancel().catch(()=>{});else _.cancel().catch(()=>{});q?.close(se)};let he=(se)=>{if(R)return;R=!0,P(),B.error(se)},Me=()=>{if(k===""){if(w==="")return;k=w}w="",B.enqueue({type:"transcript-final",id:re(),text:k}),U+=U===""?k:` ${k}`,k="",L++},ce=()=>{if(R)return;Me(),R=!0,B.enqueue({type:"finish",text:U,segments:[],language:S,durationInSeconds:void 0,usage:J,...J!=null?{providerMetadata:{google:{usageMetadata:J}}}:{}}),B.close(),P(1000)},be=async(se)=>{N=_.getReader();try{while(!0){let{done:we,value:Se}=await N.read();if(we||R)break;se.send(JSON.stringify({realtimeInput:{audio:{data:j(Se),mimeType:`audio/pcm;rate=${f}`}}})),await vn(se)}}finally{N.releaseLock(),N=void 0}if(!R)se.send(JSON.stringify({realtimeInput:{audioStreamEnd:!0}})),W=!0,ue()};q=ia({url:c,headers:g,webSocket:i,abortSignal:v,onAbort:he,onProcessingError:he,onOpen:(se)=>{B.enqueue({type:"stream-start",warnings:x}),se.send(JSON.stringify({setup:h})),K.then(()=>R?void 0:be(se)).catch(he)},onMessageText:async(se)=>{if(R)return;let we=await yt({text:se});if(!we.success)return;let Se=we.value;if(A)B.enqueue({type:"raw",rawValue:Se});if(Se.setupComplete!=null)V();if(Se.usageMetadata!=null)J=Se.usageMetadata;if(Se.error!=null){he(Error(Se.error.message??"Google Live API error"));return}let Re=Se.serverContent,ne=Re?.interimInputTranscription;if(ne?.text)ue(),w=ne.text,B.enqueue({type:"transcript-partial",id:re(),text:ne.text});let me=Re?.inputTranscription??Se.inputTranscription;if(me!=null){if(me.languageCode!=null)S=me.languageCode;if(me.text)ue(),w="",k+=me.text,B.enqueue({type:"transcript-delta",id:re(),delta:me.text});if(me.finished===!0)Me()}if(Re?.turnComplete)Me();let de=Re?.interactionStatus;if(W&&(de==="IDLE"||de==="REQUIRES_ACTION"||Re?.turnComplete===!0&&de==null))ce()},onSocketError:()=>{he(Error("Google Live transcription error"))},onClose:({code:se,reason:we})=>{if(R)return;if(W){ce();return}he(Error(`Google Live transcription WebSocket closed unexpectedly before finishing (code ${se??"unknown"}${we?`, reason: ${we}`:""}).`))}})},cancel:()=>{if(R)return;R=!0,P()}})}function ns(i){if(i==null)return;let c={};if(i.languageCodes!=null)c.languageCodes=i.languageCodes;if(i.customVocabulary!=null)c.customVocabulary=i.customVocabulary;if(i.wordTimestamp!=null)c.wordTimestamp=i.wordTimestamp;if(i.diarization!=null)c.diarization=i.diarization;if(i.mode!=null)c.mode=i.mode;return Object.keys(c).length>0?c:void 0}function os(i){if(i==null)return;let c={};if(i.languageCodes!=null)c.language_codes=i.languageCodes;if(i.customVocabulary!=null)c.custom_vocabulary=i.customVocabulary;if(i.mode!=null||i.diarization===!0||i.wordTimestamp===!0)c.mode={type:(i.mode??"VERBATIM").toLowerCase(),...i.diarization===!0?{diarization_mode:"speaker"}:{},...i.wordTimestamp===!0?{timestamp_granularities:["word"]}:{}};return Object.keys(c).length>0?c:void 0}function Wt(i){if(i==null)return;let c=Number.parseFloat(i);return Number.isFinite(c)?c:void 0}function is(i){if(i.type!=="audio/pcm"||i.rate!=null&&i.rate!==16000)throw new F({argument:"inputAudioFormat",message:"The Gemini Live transcription API only supports 16kHz 16-bit PCM input audio."})}var ss=()=>t({type:e().nullish(),text:e().nullish(),speaker:e().nullish(),start_offset:e().nullish(),end_offset:e().nullish()}),as=u(()=>l(t({status:e().nullish(),steps:o(t({type:e().nullish(),content:o(t({type:e().nullish(),text:e().nullish(),annotations:o(ss()).nullish()})).nullish()})).nullish(),usage:d(e(),Fe()).nullish()}))),rs=u(()=>l(t({echoTargetLanguage:r().optional()}))),ls="google.ai.generativelanguage.v1beta.GenerativeService.BidiGenerateContent",us=1000,cs=24000,ds=128;function ps(i,c){let g=It(i,ls);return g.searchParams.set("key",c),g}var gs=class i{static[H](c){return te({modelId:c.modelId,config:c.config})}static[Q](c){return new i(c.modelId,c.config)}get provider(){return this.config.provider}constructor(c,g){this.specificationVersion="v4",this.modelId=c,this.config=g}async doStream(c){if(c.targetLanguage==null)throw new F({argument:"targetLanguage",message:`targetLanguage is required for translation model '${this.modelId}'.`});let g=this.config._internal?.currentDate?.()??new Date,h=await T({provider:"google",providerOptions:c.providerOptions,schema:rs}),f=[];if(vs(c.inputAudioFormat),c.sourceLanguage!=null)f.push({type:"unsupported",feature:"sourceLanguage",details:"The Gemini Live translation API auto-detects the source language and does not accept a source language."});if(c.outputAudioFormat!=null)f.push({type:"unsupported",feature:"outputAudioFormat",details:"The Gemini Live API always outputs 24kHz 16-bit PCM audio and does not accept an output audio format."});let y=I(this.config.headers(),c.headers),x;for(let[A,R]of Object.entries(y))if(A.toLowerCase()==="x-goog-api-key"&&R!=null)x=R;if(x==null)throw Error("Google Generative AI API key is required for streaming translation.");let _=Object.fromEntries(Object.entries(y).filter(([A])=>A.toLowerCase()!=="x-goog-api-key")),v=ys({modelId:this.modelId,targetLanguage:c.targetLanguage,providerOptions:h});return{request:{body:v},response:{timestamp:g,modelId:this.modelId},stream:hs({webSocket:this.config.webSocket,url:ps(this.config.baseURL,x),headers:_,setup:v,inputAudioRate:c.inputAudioFormat.rate??16000,finishGraceMs:this.config._internal?.finishGraceMs??us,warnings:f,audio:c.audio,abortSignal:c.abortSignal,includeRawChunks:c.includeRawChunks})}}};function hs({webSocket:i,url:c,headers:g,setup:h,inputAudioRate:f,finishGraceMs:y,warnings:x,audio:_,abortSignal:v,includeRawChunks:A}){let R=!1,P=()=>{};return new ReadableStream({start:(B)=>{let N,q,V,K=new Promise((ne)=>{V=ne}),L=0,k="",U="",w="",S="",W=!1,J,X=!1,re=!1,ye=0,ue,he=()=>`google-item-${L}`,Me=()=>{if(ue!=null)clearTimeout(ue),ue=void 0},ce=()=>{if(R||ue!=null)return;ue=setTimeout(()=>{ue=void 0,we()},y)},be=()=>{X=!0,ye=0,Me()};P=(ne)=>{if(Me(),N!=null)N.cancel().catch(()=>{});else _.cancel().catch(()=>{});q?.close(ne)};let se=(ne)=>{if(R)return;R=!0,P(),B.error(ne)},we=()=>{if(R)return;if(U!==""||S!=="")Se();R=!0,B.enqueue({type:"finish",sourceText:k,outputText:w,usage:J}),B.close(),P(1000)},Se=()=>{if(U!=="")B.enqueue({type:"source-transcript-final",id:he(),text:U}),k+=U,U="";if(S!=="")B.enqueue({type:"output-text-final",id:he(),text:S}),w+=S,S="";L++},Re=async(ne)=>{N=_.getReader();try{while(!0){let{done:me,value:de}=await N.read();if(me||R)break;ne.send(JSON.stringify({realtimeInput:{audio:{data:j(de),mimeType:`audio/pcm;rate=${f}`}}})),await vn(ne)}}finally{N.releaseLock(),N=void 0}if(!R){if(ne.send(JSON.stringify({realtimeInput:{audioStreamEnd:!0}})),W=!0,re&&!X)ce()}};q=ia({url:c,headers:g,webSocket:i,abortSignal:v,onAbort:se,onProcessingError:se,onOpen:(ne)=>{B.enqueue({type:"stream-start",warnings:x}),ne.send(JSON.stringify({setup:h})),K.then(()=>R?void 0:Re(ne)).catch(se)},onMessageText:async(ne)=>{if(R)return;let me=await yt({text:ne});if(!me.success)return;let de=me.value;if(A)B.enqueue({type:"raw",rawValue:de});if(de.setupComplete!=null)V();if(de.usageMetadata!=null)J=ms(J,de.usageMetadata);if(de.error!=null){se(Error(de.error.message??"Google Live API error"));return}let ie=de.serverContent?.inputTranscription?.text??de.inputTranscription?.text;if(ie)be(),U+=ie,B.enqueue({type:"source-transcript-delta",id:he(),delta:ie});let Y=de.serverContent;if(Y==null)return;for(let Ie of Y.modelTurn?.parts??[])if(Ie.inlineData?.data){B.enqueue({type:"audio",id:he(),audio:Ie.inlineData.data});let _e=fs(Ie.inlineData.data);if(W&&_e!=null){if(ye+=_e,ye>=y){we();return}}else be()}if(Y.outputTranscription?.text)be(),S+=Y.outputTranscription.text,B.enqueue({type:"output-text-delta",id:he(),delta:Y.outputTranscription.text});if(Y.turnComplete){if(Se(),X=!1,re=!0,W)ce()}},onSocketError:()=>{se(Error("Google Live translation error"))},onClose:({code:ne,reason:me})=>{if(R)return;if(ue!=null){we();return}se(Error(`Google Live translation WebSocket closed unexpectedly before finishing (code ${ne??"unknown"}${me?`, reason: ${me}`:""}).`))}})},cancel:()=>{if(R)return;R=!0,P()}})}function ms(i,c){let g=i?.inputAudioTokens,h=i?.outputAudioTokens;for(let f of c.promptTokensDetails??[])if(f.modality==="AUDIO"&&f.tokenCount!=null)g=(g??0)+f.tokenCount;for(let f of c.responseTokensDetails??[])if(f.modality==="AUDIO"&&f.tokenCount!=null)h=(h??0)+f.tokenCount;if(g==null&&h==null)return i;return{...i,...g!=null?{inputAudioTokens:g}:{},...h!=null?{outputAudioTokens:h}:{}}}function fs(i){let c;try{c=ke(i)}catch{return}if(c.byteLength<2)return;let g=new DataView(c.buffer,c.byteOffset,c.byteLength),h=Math.floor(c.byteLength/2);for(let f=0;f<h;f++)if(Math.abs(g.getInt16(f*2,!0))>ds)return;return h/cs*1000}function ys({modelId:i,targetLanguage:c,providerOptions:g}){return{model:He(i),generationConfig:{responseModalities:["AUDIO"],translationConfig:{targetLanguageCode:c,...g?.echoTargetLanguage!=null?{echoTargetLanguage:g.echoTargetLanguage}:{}}},inputAudioTranscription:{},outputAudioTranscription:{}}}function vs(i){if(i.type!=="audio/pcm"||i.rate!=null&&i.rate!==16000)throw new F({argument:"inputAudioFormat",message:"The Gemini Live translation API only supports 16kHz 16-bit PCM input audio."})}var bs="https://generativelanguage.googleapis.com/v1beta",Ts=/^https:\/\/generativelanguage\.googleapis\.com\/v1beta\/files\/.*$/,_s=["text/html","text/css","text/plain","text/xml","text/csv","text/rtf","text/javascript","application/json","application/pdf","image/bmp","image/jpeg","image/png","image/webp","video/mp4","video/mpeg","video/quicktime","video/avi","video/x-flv","video/mpg","video/webm","video/wmv","video/3gpp"],Cs=/^https:\/\/.*$/;function ws(i){return/(^|\/)gemini-/.test(i)&&!/(^|\/)gemini-2\.0/.test(i)}function bl(i={}){let c=Ye(i.baseURL)??bs,g=i.name??"google.generative-ai",h=()=>Ee({"x-goog-api-key":Wo({apiKey:i.apiKey,environmentVariableName:"GOOGLE_GENERATIVE_AI_API_KEY",description:"Google Generative AI"}),...i.headers},`ai-sdk-google/${On}`),f=(U,w=U==null||ws(U))=>({"*":[Ts,new RegExp(`^${c}/files/.*$`),new RegExp("^https://(?:www\\.)?youtube\\.com/watch\\?v=[\\w-]+(?:&[\\w=&.-]*)?$"),new RegExp("^https://youtu\\.be/[\\w-]+(?:\\?[\\w=&.-]*)?$")],...w?Object.fromEntries(_s.map((S)=>[S,[Cs]])):{}}),y={provider:g,baseURL:c,headers:h,generateId:i.generateId??C,fetch:i.fetch},x=(U)=>new Ke(U,{...y,supportedUrls:()=>f(U)}),_=()=>new Mo({provider:`${g.replace(/\.generative-ai$/,"")}.batch`,maxLineBytes:i.batchResultDownloads?.maxLineBytes,config:y,supportedUrls:f(void 0,!1)}),v=(U)=>new Ln(U,{provider:g,baseURL:c,headers:h,fetch:i.fetch}),A=(U,w={})=>new $o(U,w,{provider:g,baseURL:c,headers:h,fetch:i.fetch}),R=()=>new Fo({provider:g,baseURL:c,headers:h,fetch:i.fetch}),P=(U)=>new ei(U,{provider:g,baseURL:c,headers:h,fetch:i.fetch,generateId:i.generateId??C}),B=(U)=>new Ji(U,{provider:`${g}.realtime`,baseURL:c,headers:h,fetch:i.fetch}),N=(U)=>new gs(U,{provider:`${g}.speech-translation`,baseURL:c,headers:h,webSocket:i.webSocket}),q=(U)=>new ri(U,{provider:`${g}.speech`,baseURL:c,headers:h,fetch:i.fetch}),V=(U)=>new es(U,{provider:`${g}.transcription`,baseURL:c,headers:h,fetch:i.fetch,webSocket:i.webSocket}),K=Object.assign((U)=>B(U),{getToken:async(U)=>{let w=await B(U.model).doCreateClientSecret({sessionConfig:U.sessionConfig,expiresAfterSeconds:U.expiresAfterSeconds});return{token:w.token,url:w.url,expiresAt:w.expiresAt}}}),L=(U)=>new $i(U,{provider:`${g}.interactions`,baseURL:c,headers:h,generateId:i.generateId??C,fetch:i.fetch}),k=function(U){if(new.target)throw Error("The Google Generative AI model function cannot be called with the new keyword.");return x(U)};return k.specificationVersion="v4",k.languageModel=x,k.chat=x,k.generativeAI=x,k.decisionModel=(U)=>new mp({model:x(U),provider:`${g.replace(/\.generative-ai$/,"")}.decision`}),k.evaluationModel=k.decisionModel,k.experimental_batch=_,k.embedding=v,k.embeddingModel=v,k.textEmbedding=v,k.textEmbeddingModel=v,k.image=A,k.imageModel=A,k.video=P,k.videoModel=P,k.experimental_realtime=K,k.files=R,k.speech=q,k.speechModel=q,k.transcription=V,k.transcriptionModel=V,k.translation=N,k.speechTranslationModel=N,k.interactions=L,k.tools=Po,k}var Os=bl();
15
+ export{bl};
@@ -0,0 +1,9 @@
1
+ import{Ct}from"./index-ge184xvn.js";import{i,c}from"./index-edf1hmcw.js";var T=i(function(u){var Q=u&&u.__createBinding||(Object.create?function(e,t,r,n){if(n===void 0)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||("get"in o?!t.__esModule:o.writable||o.configurable))o={enumerable:!0,get:function(){return t[r]}};Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===void 0)n=r;e[n]=t[r]}),V=u&&u.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),B=u&&u.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null){for(var r in e)if(r!=="default"&&Object.prototype.hasOwnProperty.call(e,r))Q(t,e,r)}return V(t,e),t};Object.defineProperty(u,"__esModule",{value:!0});u.req=u.json=u.toBuffer=void 0;var X=B(c("http")),Y=B(c("https"));async function D(e){let t=0,r=[];for await(let n of e)t+=n.length,r.push(n);return Buffer.concat(r,t)}u.toBuffer=D;async function Z(e){let r=(await D(e)).toString("utf8");try{return JSON.parse(r)}catch(n){let o=n;throw o.message+=` (input: ${r})`,o}}u.json=Z;function ee(e,t={}){let n=((typeof e==="string"?e:e.href).startsWith("https:")?Y:X).request(e,t),o=new Promise((f,s)=>{n.once("response",f).once("error",s).end()});return n.then=o.then.bind(o),n}u.req=ee});var ef=i(function(a){var I=a&&a.__createBinding||(Object.create?function(e,t,r,n){if(n===void 0)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||("get"in o?!t.__esModule:o.writable||o.configurable))o={enumerable:!0,get:function(){return t[r]}};Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===void 0)n=r;e[n]=t[r]}),te=a&&a.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),L=a&&a.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null){for(var r in e)if(r!=="default"&&Object.prototype.hasOwnProperty.call(e,r))I(t,e,r)}return te(t,e),t},re=a&&a.__exportStar||function(e,t){for(var r in e)if(r!=="default"&&!Object.prototype.hasOwnProperty.call(t,r))I(t,e,r)};Object.defineProperty(a,"__esModule",{value:!0});a.Agent=void 0;var ne=L(c("net")),H=L(c("http")),oe=c("https");re(T(),a);var p=Symbol("AgentBaseInternalState");class R extends H.Agent{constructor(e){super(e);this[p]={}}isSecureEndpoint(e){if(e){if(typeof e.secureEndpoint==="boolean")return e.secureEndpoint;if(typeof e.protocol==="string")return e.protocol==="https:"}let{stack:t}=Error();if(typeof t!=="string")return!1;return t.split(`
2
+ `).some((r)=>r.indexOf("(https.js:")!==-1||r.indexOf("node:https:")!==-1)}incrementSockets(e){if(this.maxSockets===1/0&&this.maxTotalSockets===1/0)return null;if(!this.sockets[e])this.sockets[e]=[];let t=new ne.Socket({writable:!1});return this.sockets[e].push(t),this.totalSocketCount++,t}decrementSockets(e,t){if(!this.sockets[e]||t===null)return;let r=this.sockets[e],n=r.indexOf(t);if(n!==-1){if(r.splice(n,1),this.totalSocketCount--,r.length===0)delete this.sockets[e]}}getName(e){if(this.isSecureEndpoint(e))return oe.Agent.prototype.getName.call(this,e);return super.getName(e)}createSocket(e,t,r){let n={...t,secureEndpoint:this.isSecureEndpoint(t)},o=this.getName(n),f=this.incrementSockets(o);Promise.resolve().then(()=>this.connect(e,n)).then((s)=>{if(this.decrementSockets(o,f),s instanceof H.Agent)try{return s.addRequest(e,n)}catch(_){return r(_)}this[p].currentSocket=s,super.createSocket(e,t,r)},(s)=>{this.decrementSockets(o,f),r(s)})}createConnection(){let e=this[p].currentSocket;if(this[p].currentSocket=void 0,!e)throw Error("No socket was returned in the `connect()` function");return e}get defaultPort(){return this[p].defaultPort??(this.protocol==="https:"?443:80)}set defaultPort(e){if(this[p])this[p].defaultPort=e}get protocol(){return this[p].protocol??(this.isSecureEndpoint()?"https:":"http:")}set protocol(e){if(this[p])this[p].protocol=e}}a.Agent=R});var k=i(function(g){var se=g&&g.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(g,"__esModule",{value:!0});g.parseProxyResponse=void 0;var ie=se(Ct()),S=(0,ie.default)("https-proxy-agent:parse-proxy-response");function ce(e){return new Promise((t,r)=>{let n=0,o=[];function f(){let d=e.read();if(d)j(d);else e.once("readable",f)}function s(){e.removeListener("end",_),e.removeListener("error",y),e.removeListener("readable",f)}function _(){s(),S("onend"),r(Error("Proxy connection ended before receiving CONNECT response"))}function y(d){s(),S("onerror %o",d),r(d)}function j(d){o.push(d),n+=d.length;let l=Buffer.concat(o,n),M=l.indexOf(`\r
3
+ \r
4
+ `);if(M===-1){S("have not received end of HTTP headers yet..."),f();return}let q=l.slice(0,M).toString("ascii").split(`\r
5
+ `),C=q.shift();if(!C)return e.destroy(),r(Error("No header received from proxy CONNECT response"));let A=C.split(" "),W=+A[1],G=A.slice(2).join(" "),b={};for(let v of q){if(!v)continue;let E=v.indexOf(":");if(E===-1)return e.destroy(),r(Error(`Invalid header from proxy CONNECT response: "${v}"`));let m=v.slice(0,E).toLowerCase(),x=v.slice(E+1).trimStart(),P=b[m];if(typeof P==="string")b[m]=[P,x];else if(Array.isArray(P))P.push(x);else b[m]=x}S("got proxy server response: %o %o",C,b),s(),t({connect:{statusCode:W,statusText:G,headers:b},buffered:l})}e.on("error",y),e.on("end",_),f()})}g.parseProxyResponse=ce});var Xo=i(function(h){var ue=h&&h.__createBinding||(Object.create?function(e,t,r,n){if(n===void 0)n=r;var o=Object.getOwnPropertyDescriptor(t,r);if(!o||("get"in o?!t.__esModule:o.writable||o.configurable))o={enumerable:!0,get:function(){return t[r]}};Object.defineProperty(e,n,o)}:function(e,t,r,n){if(n===void 0)n=r;e[n]=t[r]}),ae=h&&h.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),J=h&&h.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null){for(var r in e)if(r!=="default"&&Object.prototype.hasOwnProperty.call(e,r))ue(t,e,r)}return ae(t,e),t},K=h&&h.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(h,"__esModule",{value:!0});h.HttpsProxyAgent=void 0;var w=J(c("net")),U=J(c("tls")),fe=K(c("assert")),le=K(Ct()),he=ef(),de=c("url"),pe=k(),O=(0,le.default)("https-proxy-agent"),z=(e)=>{if(e.servername===void 0&&e.host&&!w.isIP(e.host))return{...e,servername:e.host};return e};class N extends he.Agent{constructor(e,t){super(t);this.options={path:void 0},this.proxy=typeof e==="string"?new de.URL(e):e,this.proxyHeaders=t?.headers??{},O("Creating new HttpsProxyAgent instance: %o",this.proxy.href);let r=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,""),n=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol==="https:"?443:80;this.connectOpts={ALPNProtocols:["http/1.1"],...t?F(t,"headers"):null,host:r,port:n}}async connect(e,t){let{proxy:r}=this;if(!t.host)throw TypeError('No "host" provided');let n;if(r.protocol==="https:")O("Creating `tls.Socket`: %o",this.connectOpts),n=U.connect(z(this.connectOpts));else O("Creating `net.Socket`: %o",this.connectOpts),n=w.connect(this.connectOpts);let o=typeof this.proxyHeaders==="function"?this.proxyHeaders():{...this.proxyHeaders},f=w.isIPv6(t.host)?`[${t.host}]`:t.host,s=`CONNECT ${f}:${t.port} HTTP/1.1\r
6
+ `;if(r.username||r.password){let l=`${decodeURIComponent(r.username)}:${decodeURIComponent(r.password)}`;o["Proxy-Authorization"]=`Basic ${Buffer.from(l).toString("base64")}`}if(o.Host=`${f}:${t.port}`,!o["Proxy-Connection"])o["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close";for(let l of Object.keys(o))s+=`${l}: ${o[l]}\r
7
+ `;let _=pe.parseProxyResponse(n);n.write(`${s}\r
8
+ `);let{connect:y,buffered:j}=await _;if(e.emit("proxyConnect",y),this.emit("proxyConnect",y,e),y.statusCode===200){if(e.once("socket",_e),t.secureEndpoint)return O("Upgrading socket connection to TLS"),U.connect({...F(z(t),"host","path","port"),socket:n});return n}n.destroy();let d=new w.Socket({writable:!1});return d.readable=!0,e.once("socket",(l)=>{O("Replaying proxy buffer for failed request"),(0,fe.default)(l.listenerCount("data")>0),l.push(j),l.push(null)}),d}}N.protocols=["http","https"];h.HttpsProxyAgent=N;function _e(e){e.resume()}function F(e,...t){let r={},n;for(n in e)if(!t.includes(n))r[n]=e[n];return r}});
9
+ export{ef,Xo};
@@ -0,0 +1 @@
1
+ import{se,pa,qo,nu,ud}from"./index-g2y6ptdc.js";import{v}from"./index-edf1hmcw.js";var _=v(se(),1);class l{rawResponse;_data;constructor(e){this.rawResponse=e,this._data=e.data}getRequestId(){return _.pickValueIgnoreCase(this.rawResponse.headers,"x-aicore-request-id")}getTokenUsage(){return this._data.usage}getFinishReason(e=0){return this.findChoiceByIndex(e)?.finish_reason}getContent(e=0){return this.findChoiceByIndex(e)?.message?.content}getToolCalls(e=0){return this.findChoiceByIndex(e)?.message?.tool_calls}getRefusal(e=0){return this.findChoiceByIndex(e)?.message?.refusal}getAssistantMessage(e=0){return this.findChoiceByIndex(e)?.message}findChoiceByIndex(e){return this.getChoices().find((t)=>t.index===e)}getChoices(){return this._data.choices}}var u=v(se(),1);function x(e){return typeof e.id==="string"&&typeof e.function.name==="string"&&typeof e.function.arguments==="string"}function w(e,t){let o=t?{...t}:{type:"function",function:{}};if(e.id)o.id=e.id;for(let s of Object.keys(e))if(!["index","id","type","function"].includes(s))o[s]=e[s];if(e.function){if(e.function.name)o.function.name=e.function.name;if(e.function.arguments)o.function.arguments=(o.function.arguments||"")+e.function.arguments;for(let s of Object.keys(e.function))if(!["name","arguments"].includes(s))o.function[s]=e.function[s]}return o}var I=u.createLogger({package:"foundation-models",messageContext:"azure-openai-chat-completion-stream-response"});class p{_usage;_finishReasons=new Map;_toolCallsAccumulators=new Map;_toolCalls=new Map;_stream;_rawResponse;constructor(e){if(!e){I.warn("Constructing AzureOpenAiChatCompletionStreamResponse without raw HTTP response is deprecated and can lead to runtime errors when accessing `rawResponse`.");return}this._rawResponse=e}get rawResponse(){if(!this._rawResponse)throw Error("The raw response is not available. Please provide the raw response when constructing `AzureOpenAiChatCompletionStreamResponse`.");return this._rawResponse}getRequestId(){return u.pickValueIgnoreCase(this._rawResponse?.headers,"x-aicore-request-id")}getTokenUsage(){return this._usage}_setTokenUsage(e){this._usage=e}getFinishReason(e=0){return this._finishReasons.get(e)}_getFinishReasons(){return this._finishReasons}_setFinishReasons(e){this._finishReasons=e}getToolCalls(e=0){return this._toolCalls.get(e)}_setToolCalls(e,t){this._toolCalls.set(e,t)}_getToolCallsAccumulators(){return this._toolCallsAccumulators}get stream(){if(!this._stream)throw Error("Response stream is undefined.");return this._stream}set stream(e){this._stream=e}}var y=v(se(),1);class m{_data;constructor(e){this._data=e}getTokenUsage(){return this._data.usage}getFinishReason(e=0){return this.findChoiceByIndex(e)?.finish_reason}getDeltaContent(e=0){return this.findChoiceByIndex(e)?.delta.content}getDeltaToolCalls(e=0){return this.findChoiceByIndex(e)?.delta.tool_calls}findChoiceByIndex(e){return this.getChoices()?.find((t)=>t.index===e)}getChoices(){return this._data.choices}}var c=y.createLogger({package:"foundation-models",messageContext:"azure-openai-chat-completion-stream"});class r extends qo{static _create(e,t){let o=qo.transformToSseStream(e,t);return new r(o.iterator,t)}static async*_processChunk(e){for await(let t of e)yield new m(t)}static async*_processToolCalls(e,t){if(!t)throw Error("Response is required to process tool calls.");for await(let o of e)o._data.choices.forEach((s)=>{let n=s.index,i=o.getDeltaToolCalls(n);if(i){let a=t._getToolCallsAccumulators().get(n);if(!a)a=new Map,t._getToolCallsAccumulators().set(n,a);i.forEach((g)=>{let C=g.index,T=w(g,a.get(C));a.set(C,T)})}}),yield o;for(let[o,s]of t._getToolCallsAccumulators()){let n=[];for(let[i,a]of s.entries())if(x(a))n.push(a);else c.error(`Error while parsing tool calls for choice index ${o}: Tool call with id ${i} was incomplete.`);t._setToolCalls(o,n)}}static async*_processFinishReason(e,t){for await(let o of e)o._data.choices.forEach((s)=>{let n=s.index;if(n>=0){let i=o.getFinishReason(n);if(i){if(t)t._getFinishReasons().set(n,i);switch(i){case"content_filter":c.error(`Choice ${n}: Stream finished with content filter hit.`);break;case"length":c.error(`Choice ${n}: Stream finished with token length exceeded.`);break;case"stop":case"tool_calls":case"function_call":c.debug(`Choice ${n}: Stream finished.`);break;default:c.error(`Choice ${n}: Stream finished with unknown reason '${String(i)}'.`)}}}}),yield o}static async*_processTokenUsage(e,t){for await(let o of e){let s=o.getTokenUsage();if(s){if(t)t._setTokenUsage(s);c.debug(`Token usage: ${JSON.stringify(s)}`)}yield o}}static async*_processContentStream(e,t=0){for await(let o of e){let s=o.getDeltaContent(t);if(!s)continue;yield s}}constructor(e,t){super(e,t)}_pipe(e,t){if(t)return new r(()=>e(this,t),this.controller);return new r(()=>e(this),this.controller)}toContentStream(e){return new r(()=>r._processContentStream(this,e),this.controller)}}var h="2024-10-21";class R{modelDeployment;destination;constructor(e,t){this.modelDeployment=e,this.destination=t}async run(e,t){let o=await this.executeRequest(e,t);return new l(o)}async stream(e,t,o){let s=new AbortController;if(t)t.addEventListener("abort",()=>{s.abort()});return this.createStreamResponse(e,s,o)}async executeRequest(e,t){let o=await ud(this.modelDeployment,"azure-openai",this.destination),s=nu(this.modelDeployment);return pa({url:`/inference/deployments/${o}/chat/completions`,apiVersion:h,resourceGroup:s},e,t,this.destination)}async createStreamResponse(e,t,o){let s=await this.executeRequest({...e,stream:!0,stream_options:{include_usage:!0}},{...o,responseType:"stream",signal:t.signal}),n=new p(s);return n.stream=r._create(s,t)._pipe(r._processChunk)._pipe(r._processToolCalls,n)._pipe(r._processFinishReason,n)._pipe(r._processTokenUsage,n),n}}var f=v(se(),1),k=f.createLogger({package:"foundation-models",messageContext:"azure-openai-embedding-response"});class d{rawResponse;_data;constructor(e){this.rawResponse=e,this._data=e.data}getRequestId(){return f.pickValueIgnoreCase(this.rawResponse.headers,"x-aicore-request-id")}getEmbedding(e=0){return this.logInvalidDataIndex(e),this._data.data[e]?.embedding}getEmbeddings(){return this._data.data.map(({embedding:e})=>e)}logInvalidDataIndex(e){if(e<0||e>=this._data.data.length)k.error(`Data index ${e} is out of bounds.`)}}class A{modelDeployment;destination;constructor(e,t){this.modelDeployment=e,this.destination=t}async run(e,t){let o=await ud(this.modelDeployment,"azure-openai",this.destination),s=nu(this.modelDeployment),n=await pa({url:`/inference/deployments/${o}/embeddings`,apiVersion:h,resourceGroup:s},e,t,this.destination);return new d(n)}}export{R as AzureOpenAiChatClient,A as AzureOpenAiEmbeddingClient};
@@ -0,0 +1,9 @@
1
+ import{e,n,r,L,m,o,t,p,d,s,a}from"./index-edf1hmcw.js";var Ne="vercel.ai.error",At=Symbol.for(Ne),ce,pe,S=class i extends(pe=Error,ce=At,pe){constructor({name:u,message:l,cause:c}){super(l);this[ce]=!0,this.name=u,this.cause=c}static isInstance(u){return i.hasMarker(u,Ne)}static hasMarker(u,l){let c=Symbol.for(l);return u!=null&&typeof u==="object"&&c in u&&typeof u[c]==="boolean"&&u[c]===!0}},Ue="AI_APICallError",je=`vercel.ai.error.${Ue}`,_t=Symbol.for(je),de,fe,A=class extends(fe=S,de=_t,fe){constructor({message:i,url:u,requestBodyValues:l,statusCode:c,responseHeaders:f,responseBody:h,cause:g,isRetryable:y=c!=null&&(c===408||c===409||c===429||c>=500),data:v}){super({name:Ue,message:i,cause:g});this[de]=!0,this.url=u,this.requestBodyValues=l,this.statusCode=c,this.responseHeaders=f,this.responseBody=h,this.isRetryable=y,this.data=v}static isInstance(i){return S.hasMarker(i,je)}},We="AI_EmptyResponseBodyError",Je=`vercel.ai.error.${We}`,qt=Symbol.for(Je),me,he,Ur=class extends(he=S,me=qt,he){constructor({message:i="Empty response body"}={}){super({name:We,message:i});this[me]=!0}static isInstance(i){return S.hasMarker(i,Je)}};function Be(i){if(i==null)return"unknown error";if(typeof i==="string")return i;if(i instanceof Error)return i.message;return JSON.stringify(i)}var Le="AI_InvalidArgumentError",ze=`vercel.ai.error.${Le}`,Ft=Symbol.for(ze),ge,ye,re=class extends(ye=S,ge=Ft,ye){constructor({message:i,cause:u,argument:l}){super({name:Le,message:i,cause:u});this[ge]=!0,this.argument=l}static isInstance(i){return S.hasMarker(i,ze)}},Ke="AI_InvalidPromptError",Ve=`vercel.ai.error.${Ke}`,Nt=Symbol.for(Ve),ve,be,jr=class extends(be=S,ve=Nt,be){constructor({prompt:i,message:u,cause:l}){super({name:Ke,message:`Invalid prompt: ${u}`,cause:l});this[ve]=!0,this.prompt=i}static isInstance(i){return S.hasMarker(i,Ve)}},He="AI_InvalidResponseDataError",Ge=`vercel.ai.error.${He}`,Ut=Symbol.for(Ge),Ie,we,Wr=class extends(we=S,Ie=Ut,we){constructor({data:i,message:u=`Invalid response data: ${JSON.stringify(i)}.`}){super({name:He,message:u});this[Ie]=!0,this.data=i}static isInstance(i){return S.hasMarker(i,Ge)}},Qe="AI_JSONParseError",Ye=`vercel.ai.error.${Qe}`,jt=Symbol.for(Ye),Se,xe,Jr=class extends(xe=S,Se=jt,xe){constructor({text:i,cause:u}){super({name:Qe,message:`JSON parsing failed: Text: ${i}.
2
+ Error message: ${Be(u)}`,cause:u});this[Se]=!0,this.text=i}static isInstance(i){return S.hasMarker(i,Ye)}},Ze="AI_LoadAPIKeyError",Xe=`vercel.ai.error.${Ze}`,Wt=Symbol.for(Xe),Te,ke,ne=class extends(ke=S,Te=Wt,ke){constructor({message:i}){super({name:Ze,message:i});this[Te]=!0}static isInstance(i){return S.hasMarker(i,Xe)}},et="AI_LoadSettingError",tt=`vercel.ai.error.${et}`,Jt=Symbol.for(tt),Ee,Ce,Br=class extends(Ce=S,Ee=Jt,Ce){constructor({message:i}){super({name:et,message:i});this[Ee]=!0}static isInstance(i){return S.hasMarker(i,tt)}},rt="AI_NoContentGeneratedError",nt=`vercel.ai.error.${rt}`,Bt=Symbol.for(nt),Pe,$e,Lr=class extends($e=S,Pe=Bt,$e){constructor({message:i="No content generated."}={}){super({name:rt,message:i});this[Pe]=!0}static isInstance(i){return S.hasMarker(i,nt)}},st="AI_NoSuchModelError",ot=`vercel.ai.error.${st}`,Lt=Symbol.for(ot),Oe,Re,se=class extends(Re=S,Oe=Lt,Re){constructor({errorName:i=st,modelId:u,modelType:l,message:c=`No such ${l}: ${u}`}){super({name:i,message:c});this[Oe]=!0,this.modelId=u,this.modelType=l}static isInstance(i){return S.hasMarker(i,ot)}},it="AI_TooManyEmbeddingValuesForCallError",at=`vercel.ai.error.${it}`,zt=Symbol.for(at),Me,De,zr=class extends(De=S,Me=zt,De){constructor(i){super({name:it,message:`Too many values for a single embedding call. The ${i.provider} model "${i.modelId}" can only embed up to ${i.maxEmbeddingsPerCall} values per call, but ${i.values.length} values were provided.`});this[Me]=!0,this.provider=i.provider,this.modelId=i.modelId,this.maxEmbeddingsPerCall=i.maxEmbeddingsPerCall,this.values=i.values}static isInstance(i){return S.hasMarker(i,at)}},ut="AI_TypeValidationError",lt=`vercel.ai.error.${ut}`,Kt=Symbol.for(lt),Ae,_e,Kr=class i extends(_e=S,Ae=Kt,_e){constructor({value:u,cause:l,context:c}){let f="Type validation failed";if(c==null?void 0:c.field)f+=` for ${c.field}`;if((c==null?void 0:c.entityName)||(c==null?void 0:c.entityId)){f+=" (";let h=[];if(c.entityName)h.push(c.entityName);if(c.entityId)h.push(`id: "${c.entityId}"`);f+=h.join(", "),f+=")"}super({name:ut,message:`${f}: Value: ${JSON.stringify(u)}.
3
+ Error message: ${Be(l)}`,cause:l});this[Ae]=!0,this.value=u,this.context=c}static isInstance(u){return S.hasMarker(u,lt)}static wrap({value:u,cause:l,context:c}){var f,h,g;if(i.isInstance(l)&&l.value===u&&((f=l.context)==null?void 0:f.field)===(c==null?void 0:c.field)&&((h=l.context)==null?void 0:h.entityName)===(c==null?void 0:c.entityName)&&((g=l.context)==null?void 0:g.entityId)===(c==null?void 0:c.entityId))return l;return new i({value:u,cause:l,context:c})}},ct="AI_UnsupportedFunctionalityError",pt=`vercel.ai.error.${ct}`,Vt=Symbol.for(pt),qe,Fe,Vr=class extends(Fe=S,qe=Vt,Fe){constructor({functionality:i,message:u=`'${i}' functionality not supported.`}){super({name:ct,message:u});this[qe]=!0,this.functionality=i}static isInstance(i){return S.hasMarker(i,pt)}};function dt(i,u){let l=[],c=[],f,h=u?.logger;for(let g of i)switch(g.role){case"system":if(f)f+=`
4
+
5
+ `+g.content;else f=g.content;break;case"user":for(let y of g.content){let v=Ht(y,c,h);if(v)l.push(v)}break;case"assistant":{let y=Qt(g.content,c,h);l.push(...y);break}case"tool":{let y=Yt(g.content,c,h,u?.includeToolApprovalResponsesAsContext??!1);l.push(...y);break}}if(u?.mode?.type==="object-json"){let g=Zt(u.mode.schema);l.push({type:"text",text:g})}return{parts:l,systemPrompt:f,warnings:c}}function Ht(i,u,l){switch(i.type){case"text":return{type:"text",text:i.text};case"file":return Gt(i,u,l);default:{let f=`Unknown user message part type: ${i.type}`;if(u.push(f),l)l.warn(f);return null}}}function Gt(i,u,l){let{data:c,mediaType:f,filename:h}=i;if(typeof c==="string"){if(c.startsWith("data:"))return{type:"file",mime:f,filename:h,url:c};if(c.startsWith("http://")||c.startsWith("https://")){let y=`Remote URLs are not supported for file input: ${c.substring(0,50)}...`;if(u.push(y),l)l.warn(y);return null}return{type:"file",mime:f,filename:h,url:`data:${f};base64,${Xt(c)}`}}if(c instanceof Uint8Array){let y=er(c);return{type:"file",mime:f,filename:h,url:`data:${f};base64,${y}`}}if(c instanceof URL){let y=c.toString();if(y.startsWith("data:"))return{type:"file",mime:f,filename:h,url:y};let v=`Remote URLs are not supported for file input: ${y.substring(0,50)}...`;if(u.push(v),l)l.warn(v);return null}let g=`Unsupported file data type: ${typeof c}`;if(u.push(g),l)l.warn(g);return null}function Qt(i,u,l){let c=[];for(let f of i)switch(f.type){case"text":c.push({type:"text",text:`[Assistant]: ${f.text}`,synthetic:!0});break;case"reasoning":c.push({type:"text",text:`[Reasoning]: ${f.text}`,synthetic:!0});break;case"tool-call":c.push({type:"text",text:`[Tool Call: ${f.toolName}]: ${JSON.stringify(f.input)}`,synthetic:!0});break;case"tool-result":{let h=It(f);c.push({type:"text",text:`[Tool Result: ${f.toolName}]: ${h}`,synthetic:!0});break}case"file":{if(u.push("File parts in assistant messages are not yet supported"),l)l.warn("File parts in assistant messages are not yet supported");break}}return c}function Yt(i,u,l,c=!1){let f=[],h="Tool results in prompts are included as context only. OpenCode executes tools server-side and cannot use client-provided results.";if(i.some((y)=>y.type==="tool-result")&&!u.includes("Tool results in prompts are included as context only. OpenCode executes tools server-side and cannot use client-provided results.")){if(u.push("Tool results in prompts are included as context only. OpenCode executes tools server-side and cannot use client-provided results."),l)l.warn("Tool results in prompts are included as context only. OpenCode executes tools server-side and cannot use client-provided results.")}for(let y of i){if(y.type==="tool-result"){let v=It(y);f.push({type:"text",text:`[Tool Result: ${y.toolName}]: ${v}`,synthetic:!0});continue}if(y.type==="tool-approval-response"&&c){let v=y.reason?` (${y.reason})`:"";f.push({type:"text",text:`[Tool Approval: ${y.approvalId}]: ${y.approved?"approved":"denied"}${v}`,synthetic:!0});continue}}return f}function It(i){let u=i.output;switch(u.type){case"text":return u.value;case"json":return JSON.stringify(u.value,null,2);case"error-text":return`Error: ${u.value}`;case"error-json":return`Error: ${JSON.stringify(u.value)}`;case"content":return u.value.map((l)=>{if(l.type==="text")return l.text;if(l.type==="file-data")return`[File: ${l.mediaType}]`;if(l.type==="file-url")return`[File URL: ${l.url}]`;if(l.type==="file-id")return"[File ID]";if(l.type==="image-data")return`[Image: ${l.mediaType}]`;if(l.type==="image-url")return`[Image URL: ${l.url}]`;if(l.type==="image-file-id")return"[Image File ID]";return"[Content]"}).join(`
6
+ `);case"execution-denied":return u.reason?`Execution denied: ${u.reason}`:"Execution denied";default:return JSON.stringify(u)}}function Zt(i){let u="IMPORTANT: You must respond with valid JSON only. Do not include any text before or after the JSON. Do not include markdown code blocks.";if(i)u+=`
7
+
8
+ The JSON must conform to this schema:
9
+ `+JSON.stringify(i,null,2);return u}function Xt(i){return i.replace(/\s/g,"")}function er(i){if(typeof Buffer<"u")return Buffer.from(i).toString("base64");let u="";for(let l=0;l<i.length;l++)u+=String.fromCharCode(i[l]);return btoa(u)}function wt(i){if(!i||typeof i!=="object")return!1;let u=i;if(typeof u.name==="string"&&u.name==="ProviderAuthError")return!0;if(typeof u.statusCode==="number"&&(u.statusCode===401||u.statusCode===403))return!0;if(typeof u.message==="string"){let l=u.message.toLowerCase();return l.includes("unauthorized")||l.includes("authentication")||l.includes("api key")||l.includes("invalid key")||l.includes("auth failed")}return!1}function St(i){if(!i||typeof i!=="object")return!1;let u=i;if(typeof u.name==="string"){if(u.name.toLowerCase().includes("timeout"))return!0}if(typeof u.code==="string"){let l=u.code.toUpperCase();if(l==="ETIMEDOUT"||l==="ESOCKETTIMEDOUT")return!0}if(typeof u.message==="string"){let l=u.message.toLowerCase();return l.includes("timeout")||l.includes("timed out")}return!1}function H(i){if(!i||typeof i!=="object")return!1;let u=i;if(typeof u.name==="string"&&u.name==="AbortError")return!0;if(typeof u.code==="string"&&u.code.toUpperCase()==="ABORT_ERR")return!0;if(typeof u.name==="string"&&u.name==="MessageAbortedError")return!0;return!1}function tr(i){let u=E(i),l=sr(i);return new ne({message:l?`OpenCode authentication error (${l}): ${u}`:`OpenCode authentication error: ${u}`})}function xt(i,u){let l=E(i),c=Y(i),f=u?.isRetryable??or(i);return new A({message:l,url:"opencode://session",requestBodyValues:{},statusCode:c,isRetryable:f,data:{errorType:u?.errorType??nr(i),sessionId:u?.sessionId,messageId:u?.messageId,modelId:u?.modelId}})}function rr(i,u){let l=u?.modelId?` for model "${u.modelId}"`:"",c=E(i);return new A({message:`OpenCode returned an empty JSON response${l}. This usually means the OpenCode server rejected the request before returning response data, often because the configured provider/model is unavailable or invalid. Check the model ID and OpenCode provider configuration. Original error: ${c}`,url:"opencode://session",requestBodyValues:{},statusCode:u?.statusCode??Y(i),isRetryable:!1,data:{errorType:"EmptyJSONResponse",sessionId:u?.sessionId,messageId:u?.messageId,modelId:u?.modelId}})}function ft(i,u){let l=u?.modelId?` for model "${u.modelId}"`:"",c=i?` Original error: ${E(i)}`:"";return new A({message:`OpenCode returned no response data${l}. This usually means the configured provider/model ID is invalid or unavailable. Run \`opencode models\` to list available model IDs and check the OpenCode provider configuration.`+c,url:"opencode://session",requestBodyValues:{},statusCode:u?.statusCode??Y(i),isRetryable:!1,data:{errorType:"EmptyResponseData",sessionId:u?.sessionId,messageId:u?.messageId,modelId:u?.modelId}})}function Tt(i,u){let l=u?` during ${u}`:"";return new A({message:`OpenCode request timed out after ${i}ms${l}`,url:"opencode://session",requestBodyValues:{},isRetryable:!0})}function E(i){if(!i)return"Unknown error";if(typeof i==="string")return i;if(i instanceof Error)return i.message;if(typeof i==="object"){let u=i;if(typeof u.message==="string")return u.message;if(typeof u.error==="string")return u.error;if(typeof u.data==="object"&&u.data!==null){let l=u.data;if(typeof l.message==="string")return l.message}}return"Unknown error"}function Y(i){if(!i||typeof i!=="object")return;let u=i;if(typeof u.statusCode==="number")return u.statusCode;if(typeof u.status==="number")return u.status;return}function nr(i){if(!i||typeof i!=="object")return;let u=i;if(typeof u.name==="string")return u.name;if(typeof u.type==="string")return u.type;return}function sr(i){if(!i||typeof i!=="object")return;let u=i;if(typeof u.data==="object"&&u.data!==null){let l=u.data;if(typeof l.providerID==="string")return l.providerID}return}function or(i){if(H(i))return!1;if(St(i))return!0;if(wt(i))return!1;let u=Y(i);if(u!==void 0){if(u>=500&&u<600)return!0;if(u===429)return!0;if(u>=400&&u<500)return!1}return!1}function oe(i,u){if(A.isInstance(i)||ne.isInstance(i))return i;if(wt(i))return tr(i);if(St(i)){let l=u?.timeoutMs??ur(i)??ir;return Tt(l,"request")}if(ar(i))return rr(i,u);return xt(i,u)}var ir=5000;function ar(i){if(!i||typeof i!=="object")return!1;let u=i;return(i instanceof SyntaxError?"SyntaxError":typeof u.name==="string"?u.name:void 0)==="SyntaxError"&&typeof u.message==="string"&&u.message==="Unexpected end of JSON input"}function ur(i){if(!i||typeof i!=="object")return;let u=i,l=typeof u.timeoutMs==="number"?u.timeoutMs:typeof u.timeout==="number"?u.timeout:void 0;if(l===void 0||!Number.isFinite(l))return;return l>0?l:void 0}function mt(i){if(!i)return{unified:"other",raw:void 0};if(i.error)return lr(i.error);if(i.finish)return cr(i.finish);return{unified:"stop",raw:void 0}}function lr(i){let{name:u}=i;switch(u){case"MessageAbortedError":return{unified:"stop",raw:u};case"MessageOutputLengthError":return{unified:"length",raw:u};case"ContextOverflowError":return{unified:"length",raw:u};case"StructuredOutputError":return{unified:"error",raw:u};case"ProviderAuthError":case"APIError":case"UnknownError":return{unified:"error",raw:u};default:return{unified:"error",raw:u}}}function cr(i){let u=i.toLowerCase();if(u==="end_turn"||u==="stop"||u==="end")return{unified:"stop",raw:i};if(u==="max_tokens"||u==="length")return{unified:"length",raw:i};if(u==="tool_use"||u==="tool_calls"||u==="tool-calls")return{unified:"tool-calls",raw:i};if(u==="content_filter"||u==="content-filter"||u==="safety")return{unified:"content-filter",raw:i};if(u==="error")return{unified:"error",raw:i};return{unified:"other",raw:i}}function kt(i,u){if(u&&(i.unified==="tool-calls"||i.unified==="other"))return{unified:"stop",raw:i.raw};return i}function D(i,u){try{return JSON.stringify(i)??"{}"}catch(l){let c=l instanceof Error?l.message:String(l);return u?.(c),"{}"}}function pr(i){if(!i.startsWith("data:"))return null;let u=i.indexOf(",");if(u===-1)return null;let l=i.slice(5,u),c=i.slice(u+1),f=l.split(";"),h=f[0]?.trim(),g=h&&h.length>0?h:"application/octet-stream";if(f.slice(1).some((b)=>b.trim().toLowerCase()==="base64"))return{mediaType:g,data:c.replace(/\s+/g,"")};let v;try{v=decodeURIComponent(c)}catch{return null}return{mediaType:g,data:Buffer.from(v,"utf8").toString("base64")}}function Et(i){if(!i.url||!i.mime)return{error:"missing-metadata"};let u=i.source,l,c=!1;if(i.url.startsWith("data:")){let h=pr(i.url);if(!h)return{error:"invalid-data-url"};l={type:"file",mediaType:h.mediaType,data:h.data}}else if(i.url.startsWith("http://")||i.url.startsWith("https://"))l={type:"source-url",id:i.id??i.url,url:i.url,...i.filename?{title:i.filename}:{}};else{let h=i.filename??i.url.split("/").pop()??"file";l={type:"source-document",id:i.id??i.url,mediaType:i.mime,title:h,...h?{filename:h}:{}},c=!0}let f;if(i.source&&!c){let h=i.source.type;if(h==="file"||h==="symbol"||h==="resource"){let g=typeof i.source.path==="string"?i.source.path:typeof i.source.uri==="string"?i.source.uri:"source";f={id:`${i.id??"source"}-source`,mediaType:i.mime,title:g,...typeof i.source.path==="string"?{filename:i.source.path}:{}}}}return{plan:{sourceMetadata:u,primary:l,...f?{secondaryDocumentSource:f}:{}}}}var W="StructuredOutput";function dr(){return{textPartId:void 0,textStarted:!1,reasoningPartId:void 0,reasoningStarted:!1,toolStates:new Map,usage:{inputTokens:0,outputTokens:0,reasoningTokens:0,cachedInputTokens:0,cachedWriteTokens:0,totalCost:0},lastTextContent:"",lastReasoningContent:"",messageRoles:new Map,permissionRequests:new Set,questionRequests:new Set,pendingApprovals:new Map,structuredOutputCompleted:!1}}function G(i,u,l,c,f){if(!c.inputStarted)f.push({type:"tool-input-start",id:i,toolName:u,providerExecuted:!0,dynamic:!0}),c.inputStarted=!0;if(!c.inputClosed)f.push({type:"tool-input-end",id:i}),c.inputClosed=!0;if(!c.callEmitted)f.push({type:"tool-call",toolCallId:i,toolName:u,input:l,providerExecuted:!0,dynamic:!0}),c.callEmitted=!0}function j(i,u,l){let c=u.pendingApprovals.get(i);if(!c)return;if(u.pendingApprovals.delete(i),u.permissionRequests.has(c.approvalId))return;u.permissionRequests.add(c.approvalId),l.push({type:"tool-approval-request",approvalId:c.approvalId,toolCallId:c.toolCallId,providerMetadata:{opencode:{sessionId:c.sessionId,permission:c.permission,patterns:c.patterns}}})}function fr(i,u){if("properties"in i&&typeof i.properties==="object"&&i.properties!==null){let l=i.properties;if("part"in l&&typeof l.part==="object"&&l.part!==null)return l.part.sessionID===u;if("info"in l&&typeof l.info==="object"&&l.info!==null)return l.info.sessionID===u;if("sessionID"in l)return l.sessionID===u}return!1}function mr(i,u){if(i.type==="session.status"){let l=i;return l.properties.sessionID===u&&l.properties.status.type==="idle"}if(i.type==="session.idle")return i.properties.sessionID===u;return!1}function hr(i,u,l){let c=[];switch(i.type){case"message.part.updated":{let h=gr(i,u,l);c.push(...h);break}case"message.part.delta":{let h=yr(i,u);c.push(...h);break}case"message.updated":{let h=i.properties.info;u.messageRoles.set(h.id,h.role);break}case"permission.asked":{let f=i,h=f.properties.id,g=f.properties.tool?.callID;if(u.permissionRequests.has(h))break;let y=g?u.toolStates.get(g):void 0,v=g??h,b={approvalId:h,toolCallId:g??h,toolName:y?.toolName??"",providerExecuted:!0,permission:f.properties.permission,patterns:f.properties.patterns,sessionId:f.properties.sessionID};if(u.pendingApprovals.set(v,b),!g){j(v,u,c);break}if(y?.callEmitted)j(g,u,c);else if(y&&y.lastInput!==void 0)G(g,y.toolName,y.lastInput,y,c),j(g,u,c);break}case"question.asked":{let h=i.properties.id;if(!u.questionRequests.has(h)){u.questionRequests.add(h);let g="OpenCode question.asked events are not yet mapped to AI SDK responses. The provider cannot answer interactive questions automatically.";if(l)l.warn(g);c.push({type:"error",error:Error(`${g} Question ID: ${h}. If this blocks generation, answer/reject the question in OpenCode directly.`)})}break}case"session.status":case"session.idle":case"session.diff":case"question.replied":case"question.rejected":case"project.updated":case"server.instance.disposed":case"global.disposed":case"worktree.ready":case"worktree.failed":case"mcp.tools.changed":break;default:if(l&&l.debug)l.debug(`Unknown event type: ${i.type}`)}return c}function gr(i,u,l){let{part:c,delta:f}=i.properties,h=[];if(u.messageRoles.get(c.messageID)==="user")return h;switch(c.type){case"text":{let y=c;if(y.synthetic||y.ignored)break;h.push(...vr(y,f,u));break}case"reasoning":{let y=c;h.push(...br(y,f,u));break}case"tool":{let y=c;h.push(...Ir(y,u,l));break}case"step-finish":{Sr(c,u);break}case"step-start":case"subtask":case"snapshot":case"patch":case"agent":case"retry":case"compaction":break;case"file":{let y=c;h.push(...Ct(y));break}default:if(l&&l.debug)l.debug(`Unknown part type: ${c.type}`)}return h}function yr(i,u){let l=[],{partID:c,messageID:f,field:h,delta:g}=i.properties;if(!g)return l;if(u.messageRoles.get(f)==="user")return l;if(h==="reasoning"||u.reasoningPartId===c){if(!u.reasoningStarted||u.reasoningPartId!==c){if(u.reasoningStarted&&u.reasoningPartId&&u.reasoningPartId!==c)l.push({type:"reasoning-end",id:u.reasoningPartId});l.push({type:"reasoning-start",id:c}),u.reasoningStarted=!0,u.reasoningPartId=c,u.lastReasoningContent=""}l.push({type:"reasoning-delta",id:c,delta:g}),u.lastReasoningContent+=g}else{if(!u.textStarted||u.textPartId!==c){if(u.textStarted&&u.textPartId&&u.textPartId!==c)l.push({type:"text-end",id:u.textPartId});l.push({type:"text-start",id:c}),u.textStarted=!0,u.textPartId=c,u.lastTextContent=""}l.push({type:"text-delta",id:c,delta:g}),u.lastTextContent+=g}return l}function vr(i,u,l){let c=[],f=i.id;if(!l.textStarted||l.textPartId!==f){if(l.textStarted&&l.textPartId&&l.textPartId!==f)c.push({type:"text-end",id:l.textPartId});c.push({type:"text-start",id:f}),l.textStarted=!0,l.textPartId=f,l.lastTextContent=""}if(u)c.push({type:"text-delta",id:f,delta:u}),l.lastTextContent+=u;else if(i.text&&i.text!==l.lastTextContent){let h=i.text.slice(l.lastTextContent.length);if(h)c.push({type:"text-delta",id:f,delta:h}),l.lastTextContent=i.text}return c}function br(i,u,l){let c=[],f=i.id;if(!l.reasoningStarted||l.reasoningPartId!==f){if(l.reasoningStarted&&l.reasoningPartId&&l.reasoningPartId!==f)c.push({type:"reasoning-end",id:l.reasoningPartId});c.push({type:"reasoning-start",id:f}),l.reasoningStarted=!0,l.reasoningPartId=f,l.lastReasoningContent=""}if(u)c.push({type:"reasoning-delta",id:f,delta:u}),l.lastReasoningContent+=u;else if(i.text&&i.text!==l.lastReasoningContent){let h=i.text.slice(l.lastReasoningContent.length);if(h)c.push({type:"reasoning-delta",id:f,delta:h}),l.lastReasoningContent=i.text}return c}function Ir(i,u,l){let c=[],{callID:f,tool:h,state:g}=i;if(h===W)return wr(f,g,u,l);let y=u.toolStates.get(f);if(!y)y={callId:f,toolName:h,inputStarted:!1,inputClosed:!1,callEmitted:!1,resultEmitted:!1,emittedAttachmentIds:new Set},u.toolStates.set(f,y);switch(g.status){case"pending":if(!y.inputStarted)c.push({type:"tool-input-start",id:f,toolName:h,providerExecuted:!0,dynamic:!0}),y.inputStarted=!0;break;case"running":{if(!y.inputStarted)c.push({type:"tool-input-start",id:f,toolName:h,providerExecuted:!0,dynamic:!0,...g.title?{title:g.title}:{}}),y.inputStarted=!0;let v=D(g.input,(b)=>{if(l)l.warn(`Failed to serialize tool input for ${f}: ${b}`)});if(y.callEmitted){if(v!==y.lastInput&&l)l.warn(`Ignoring tool input change for ${f} after the tool call was registered; the input exposed for approval is immutable.`);break}if(!y.lastInput){if(v)c.push({type:"tool-input-delta",id:f,delta:v})}else if(v.startsWith(y.lastInput)){let b=v.slice(y.lastInput.length);if(b)c.push({type:"tool-input-delta",id:f,delta:b})}else if(v)c.push({type:"tool-input-delta",id:f,delta:v});if(y.lastInput=v,u.pendingApprovals.has(f)&&!y.callEmitted)G(f,h,v,y,c),j(f,u,c);break}case"completed":{let v=D(g.input,(b)=>{if(l)l.warn(`Failed to serialize tool input for ${f}: ${b}`)});if(G(f,h,v,y,c),j(f,u,c),!y.resultEmitted)c.push({type:"tool-result",toolCallId:f,toolName:h,result:g.output??"",isError:!1,dynamic:!0}),y.resultEmitted=!0;if(Array.isArray(g.attachments))for(let b of g.attachments){let w=b.id??`${b.url}|${b.mime}|${b.filename??""}`;if(y.emittedAttachmentIds.has(w))continue;c.push(...Ct(b)),y.emittedAttachmentIds.add(w)}break}case"error":{let v=D(g.input,(b)=>{if(l)l.warn(`Failed to serialize tool input for ${f}: ${b}`)});if(G(f,h,v,y,c),u.pendingApprovals.delete(f),!y.resultEmitted){if(c.push({type:"tool-result",toolCallId:f,toolName:h,result:g.error??"Unknown error",isError:!0,dynamic:!0}),y.resultEmitted=!0,l)l.warn(`Tool ${h} failed: ${g.error}`)}break}}return c}function wr(i,u,l,c){let f=[],h=`structured-output-${i}`,g=l.toolStates.get(i);if(!g)g={callId:i,toolName:W,inputStarted:!1,inputClosed:!1,callEmitted:!1,resultEmitted:!1,emittedAttachmentIds:new Set},l.toolStates.set(i,g);let y=(v,b)=>{let w=D(b,(T)=>{if(c)c.warn(`Failed to serialize StructuredOutput input for ${i}: ${T}`)});if(c)c.debug?.(`[StructuredOutput stream] callID=${i} status=${v} raw input=${JSON.stringify(b)} serialized=${w} lastInput=${g.lastInput??"(none)"}`);if(w==="{}"&&v!=="completed")return;if(!l.textStarted||l.textPartId!==h){if(l.textStarted&&l.textPartId&&l.textPartId!==h)f.push({type:"text-end",id:l.textPartId});f.push({type:"text-start",id:h}),l.textStarted=!0,l.textPartId=h,l.lastTextContent=""}if(!g.lastInput){if(w)f.push({type:"text-delta",id:h,delta:w})}else if(w.startsWith(g.lastInput)){let T=w.slice(g.lastInput.length);if(T)f.push({type:"text-delta",id:h,delta:T})}else if(w){if(c)c.debug?.(`[StructuredOutput stream] callID=${i} non-prefix change detected, emitting full input. prev=${g.lastInput} new=${w}`);f.push({type:"text-delta",id:h,delta:w})}g.lastInput=w,l.lastTextContent=w};switch(u.status){case"pending":y("pending",u.input);break;case"running":y("running",u.input);break;case"completed":if(y("completed",u.input),l.structuredOutputCompleted=!0,l.textStarted&&l.textPartId===h)f.push({type:"text-end",id:h}),l.textStarted=!1,l.textPartId=void 0;break;case"error":if(l.textStarted&&l.textPartId===h)f.push({type:"text-end",id:h}),l.textStarted=!1,l.textPartId=void 0;break}return f}function Sr(i,u){u.usage.inputTokens+=i.tokens.input,u.usage.outputTokens+=i.tokens.output,u.usage.reasoningTokens+=i.tokens.reasoning,u.usage.cachedInputTokens+=i.tokens.cache.read,u.usage.cachedWriteTokens+=i.tokens.cache.write,u.usage.totalCost+=i.cost}function Ct(i){let u=[],{plan:l}=Et(i);if(!l)return u;if(l.primary.type==="file")u.push({type:"file",mediaType:l.primary.mediaType,data:l.primary.data,...l.sourceMetadata?{providerMetadata:{opencode:{source:l.sourceMetadata}}}:{}});else if(l.primary.type==="source-url")u.push({type:"source",sourceType:"url",id:l.primary.id,url:l.primary.url,...l.primary.title?{title:l.primary.title}:{}});else u.push({type:"source",sourceType:"document",id:l.primary.id,mediaType:l.primary.mediaType,title:l.primary.title,...l.primary.filename?{filename:l.primary.filename}:{},...l.sourceMetadata?{providerMetadata:{opencode:{source:l.sourceMetadata}}}:{}});if(l.secondaryDocumentSource)u.push({type:"source",sourceType:"document",id:l.secondaryDocumentSource.id,mediaType:l.secondaryDocumentSource.mediaType,title:l.secondaryDocumentSource.title,...l.secondaryDocumentSource.filename?{filename:l.secondaryDocumentSource.filename}:{},...l.sourceMetadata?{providerMetadata:{opencode:{source:l.sourceMetadata}}}:{}});return u}function xr(i,u,l,c){let f=[],g={inputTokens:{total:i.usage.inputTokens+i.usage.cachedInputTokens+i.usage.cachedWriteTokens,noCache:i.usage.inputTokens,cacheRead:i.usage.cachedInputTokens,cacheWrite:i.usage.cachedWriteTokens},outputTokens:{total:i.usage.outputTokens,text:void 0,reasoning:i.usage.reasoningTokens},raw:{input_tokens:i.usage.inputTokens,output_tokens:i.usage.outputTokens,reasoning_tokens:i.usage.reasoningTokens,cache_read_input_tokens:i.usage.cachedInputTokens,cache_write_input_tokens:i.usage.cachedWriteTokens,total_cost:i.usage.totalCost}};if(i.textStarted&&i.textPartId)f.push({type:"text-end",id:i.textPartId});if(i.reasoningStarted&&i.reasoningPartId)f.push({type:"reasoning-end",id:i.reasoningPartId});return f.push({type:"finish",usage:g,finishReason:kt(u,i.structuredOutputCompleted),providerMetadata:{opencode:{sessionId:l,...c?{messageId:c}:{},cost:i.usage.totalCost}}}),f}function Tr(i){return i.some((u)=>u.type==="tool"&&u.tool===W&&u.state?.status==="completed")}function ht(i){return{type:"stream-start",warnings:i.map((l)=>({type:"other",message:l}))}}var gt={warn:(i)=>{console.warn(`[opencode-provider] ${i}`)},error:(i)=>{console.error(`[opencode-provider] ${i}`)},debug:(i)=>{console.debug(`[opencode-provider] ${i}`)}},kr={warn:()=>{},error:()=>{},debug:()=>{}};function Q(i,u){if(i===!1)return kr;if(i){if(u&&!i.debug)return{...i,debug:(l)=>i.warn(`[DEBUG] ${l}`)};return i}if(!u)return{...gt,debug:()=>{}};return gt}function yt(i,u){let l=[],c=[{name:"temperature",value:u.temperature},{name:"topP",value:u.topP},{name:"topK",value:u.topK},{name:"frequencyPenalty",value:u.frequencyPenalty},{name:"presencePenalty",value:u.presencePenalty},{name:"stopSequences",value:u.stopSequences},{name:"seed",value:u.seed},{name:"maxTokens",value:u.maxTokens}];for(let f of c)if(f.value!==void 0){let h=`Parameter '${f.name}' is not supported by OpenCode`;i.warn(h),l.push(h)}return l}var Er=t({warn:L().refine((i)=>typeof i==="function",{message:"warn must be a function"}),error:L().refine((i)=>typeof i==="function",{message:"error must be a function"}),debug:L().refine((i)=>i===void 0||typeof i==="function",{message:"debug must be a function"}).optional()}),Cr=t({permission:e(),pattern:e(),action:s(["allow","deny","ask"])}),Pt=t({sessionId:e().optional(),createNewSession:r().optional(),sessionTitle:e().optional(),agent:e().optional(),systemPrompt:e().optional(),tools:d(e(),r()).optional(),permission:o(Cr).optional(),variant:e().optional(),cwd:e().optional(),directory:e().optional(),outputFormatRetryCount:n().int().nonnegative().optional(),logger:p([Er,a(!1)]).optional(),verbose:r().optional()}),Pr=t({hostname:e().optional(),port:n().int().positive().optional(),baseUrl:e().url().optional(),autoStartServer:r().optional(),serverTimeout:n().int().positive().optional(),clientOptions:d(e(),m()).optional(),client:t({}).passthrough().optional(),clientManager:t({}).passthrough().optional(),defaultSettings:Pt.optional()});function $r(i,u){let l=[];if(!i)return{value:{},warnings:l};let c=Pt.safeParse(i);if(!c.success){let f=c.error.issues.map((h)=>`${h.path.join(".")}: ${h.message}`);l.push(`Settings validation warnings: ${f.join("; ")}`)}if(i.sessionId&&!Mr(i.sessionId))l.push(`Invalid session ID format: ${i.sessionId}`);if(i.outputFormatRetryCount!==void 0&&i.outputFormatRetryCount>10)l.push(`outputFormatRetryCount ${i.outputFormatRetryCount} is high; consider a value between 0 and 5`);if(u&&l.length>0)for(let f of l)u.warn(f);return{value:i,warnings:l}}function Or(i,u){let l=[];if(!i)return{value:{},warnings:l};let c=Pr.safeParse(i);if(!c.success){let f=c.error.issues.map((h)=>`${h.path.join(".")}: ${h.message}`);l.push(`Provider settings validation warnings: ${f.join("; ")}`)}if(i.port!==void 0&&(i.port<1||i.port>65535))l.push(`Port ${i.port} is outside valid range (1-65535)`);if(i.serverTimeout!==void 0&&i.serverTimeout<1000)l.push(`Server timeout ${i.serverTimeout}ms is very short, consider at least 5000ms`);if(i.clientManager&&i.client)l.push("Both clientManager and client were provided; clientManager will be used and client will be ignored.");if(i.client&&i.clientOptions)l.push("Both client and clientOptions were provided; clientOptions will be ignored because client takes precedence");if(i.clientOptions){let f=i.clientOptions;if(f.baseUrl!==void 0)l.push("clientOptions.baseUrl is ignored; use provider baseUrl or hostname/port instead");if(f.directory!==void 0)l.push("clientOptions.directory is ignored; use defaultSettings.directory or per-model directory instead")}if(u&&l.length>0)for(let f of l)u.warn(f);return{value:i,warnings:l}}function Rr(i,u){if(!i||typeof i!=="string"||i.trim().length===0){if(u)u.error("Model ID is required and must be a non-empty string");return null}let l=i.trim();if(l.includes("/")){let c=l.split("/");if(c.length===2&&c[0]&&c[1])return{providerID:c[0],modelID:c[1]};if(u)u.warn(`Model ID "${i}" contains multiple slashes, using first segment as provider`);let f=c[0],h=c.slice(1).join("/");return{providerID:f||"default",modelID:h||l}}return{providerID:"",modelID:l}}function Mr(i){if(!i||typeof i!=="string")return!1;return/^[a-zA-Z0-9_-]+$/.test(i)&&i.length>0&&i.length<=128}function Dr(i,u){if(!i&&!u)return{};if(!i)return{...u};if(!u)return{...i};return{...i,...u,tools:i.tools||u.tools?{...i.tools,...u.tools}:void 0,permission:u.permission??i.permission}}function Ar(i){return{inputTokens:{total:i.inputTokens+i.cachedInputTokens+i.cachedWriteTokens,noCache:i.inputTokens,cacheRead:i.cachedInputTokens,cacheWrite:i.cachedWriteTokens},outputTokens:{total:i.outputTokens,text:void 0,reasoning:i.reasoningTokens},raw:{input_tokens:i.inputTokens,output_tokens:i.outputTokens,reasoning_tokens:i.reasoningTokens,cache_read_input_tokens:i.cachedInputTokens,cache_write_input_tokens:i.cachedWriteTokens,total_cost:i.totalCost}}}function V(i){if(i&&typeof i==="object"&&(("data"in i)||("error"in i)))return i;return{data:i}}function vt(i){let u=i.providerOptions?.opencode?.messageID;if(u==null)return;if(typeof u!=="string")throw new re({argument:"providerOptions.opencode.messageID",message:"providerOptions.opencode.messageID must be a string"});if(!u.startsWith("msg_"))throw new re({argument:"providerOptions.opencode.messageID",message:"providerOptions.opencode.messageID must start with 'msg_'"});return u}function bt(i){let u=[];for(let l of i){if(l.role!=="tool")continue;for(let c of l.content){if(c.type!=="tool-approval-response")continue;let f=c;u.push({approvalId:f.approvalId,approved:f.approved,reason:f.reason})}}return u}var _r=class{specificationVersion="v3";modelId;provider="opencode";supportedUrls={};settings;logger;clientManager;sessionId;sessionInitPromise=null;repliedApprovalIdsBySession=new Map;parsedModelId;constructor(i){this.modelId=i.modelId,this.settings=i.settings,this.clientManager=i.clientManager,this.logger=Q(i.settings.logger,i.settings.verbose);let u=Rr(this.modelId,this.logger);if(!u)throw Error(`Invalid model ID: ${this.modelId}`);if(this.parsedModelId=u,$r(this.settings,this.logger),this.settings.sessionId)this.sessionId=this.settings.sessionId}async doGenerate(i){let u=[],l=yt(this.logger,{temperature:i.temperature,topP:i.topP,topK:i.topK,frequencyPenalty:i.frequencyPenalty,presencePenalty:i.presencePenalty,stopSequences:i.stopSequences,seed:i.seed,maxTokens:i.maxOutputTokens});for(let v of l)u.push({type:"other",message:v});if(i.tools&&i.tools.length>0)this.logger.warn("Custom tool definitions are ignored. OpenCode executes tools server-side."),u.push({type:"other",message:"Custom tool definitions are ignored. OpenCode executes tools server-side."});let c=bt(i.prompt),{parts:f,systemPrompt:h,warnings:g}=dt(i.prompt,{logger:this.logger,mode:{type:"regular"},includeToolApprovalResponsesAsContext:!1});for(let v of g)u.push({type:"other",message:v});let y=vt(i);try{if(i.abortSignal?.aborted){let I=Error("Request aborted");throw I.name="AbortError",I}let v=await this.getOrCreateSession(),b=await this.clientManager.getClient();if(c.length>0){let I=await this.replyToPendingApprovals(b,v,c);for(let F of I)u.push({type:"other",message:F})}let w=this.buildPromptRequestBody(v,f,h,i,y),T=i.abortSignal,O=async()=>{let I=this.getRequestDirectory();try{await b.session.abort({sessionID:v,...I?{directory:I}:{}})}catch{}},Z;try{Z=T?await b.session.prompt(w,{signal:T}):await b.session.prompt(w)}catch(I){if(H(I)||T?.aborted)await O();throw I}let{data:k,error:_}=V(Z);if(!k){if(T?.aborted){await O();let I=Error("Request aborted");throw I.name="AbortError",I}throw ft(_,{sessionId:v,modelId:this.modelId})}let P=k;this.logger.debug?.(`[doGenerate] raw parts from OpenCode: ${JSON.stringify(P.parts?.map((I)=>({type:I.type,...I.type==="text"?{text:I.text?.slice(0,200)}:{},...I.type==="tool"?{tool:I.tool,callID:I.callID,status:I.state?.status,input:I.state?.input}:{}})))}`);let C=this.extractContentFromParts(P.parts??[]);this.logger.debug?.(`[doGenerate] extracted content: ${JSON.stringify(C.map((I)=>({type:I.type,...I.type==="text"?{text:I.text?.slice(0,200)}:{},...I.type==="tool-call"?{toolName:I.toolName}:{}})))}`);let J=this.extractUsageFromParts(P.parts??[]),q=kt(mt(P.info),Tr(P.parts??[]));return{content:C,finishReason:q,usage:Ar(J),providerMetadata:{opencode:{sessionId:v,messageId:P.info?.id,cost:J.totalCost}},request:{body:w},warnings:u}}catch(v){if(H(v))throw v;throw oe(v,{sessionId:this.sessionId,modelId:this.modelId})}}async doStream(i){let u=[],l=yt(this.logger,{temperature:i.temperature,topP:i.topP,topK:i.topK,frequencyPenalty:i.frequencyPenalty,presencePenalty:i.presencePenalty,stopSequences:i.stopSequences,seed:i.seed,maxTokens:i.maxOutputTokens});if(u.push(...l),i.tools&&i.tools.length>0)this.logger.warn("Custom tool definitions are ignored. OpenCode executes tools server-side."),u.push("Custom tool definitions are ignored. OpenCode executes tools server-side.");let c=bt(i.prompt),{parts:f,systemPrompt:h,warnings:g}=dt(i.prompt,{logger:this.logger,mode:{type:"regular"},includeToolApprovalResponsesAsContext:!1});u.push(...g);let y=vt(i),v=await this.getOrCreateSession(),b=await this.clientManager.getClient(),w=this.buildPromptRequestBody(v,f,h,i,y),T=this.getRequestDirectory(),O=this.logger;return{stream:new ReadableStream({start:async(k)=>{let _=[...u],P=!1,C=new AbortController,J=this.clientManager.registerEventSubscription(C);try{let I=(await b.event.subscribe(T?{directory:T}:void 0,{signal:C.signal})).stream;if(!I)throw Error("Failed to subscribe to events");if(c.length>0){let x=await this.replyToPendingApprovals(b,v,c);_.push(...x)}k.enqueue(ht(_)),P=!0;let F,$t=new Promise((x)=>{F=x}),ie,Ot=new Promise((x)=>{ie=x}),ae=()=>{},B=i.abortSignal;if(B){let x=()=>ie?.();if(B.aborted)x();else B.addEventListener("abort",x,{once:!0}),ae=()=>B.removeEventListener("abort",x)}let z=!1,ue=(x)=>{if(z){F?.();return}z=!0;let R=oe(x,{sessionId:v,modelId:this.modelId});O.error(`Prompt error: ${E(R)}`);try{k.enqueue({type:"error",error:R})}catch(N){O.debug?.(`Failed to enqueue prompt error after stream closed: ${E(N)}`)}F?.()};b.session.prompt(w,{signal:C.signal}).then((x)=>{if(C.signal.aborted)return;let{data:R,error:N}=V(x);if(!R)ue(ft(N,{sessionId:v,modelId:this.modelId}))},(x)=>{if(C.signal.aborted)return;ue(x)});let le=dr(),X,ee=I[Symbol.asyncIterator](),te=!1,K=async()=>{if(te)return;if(te=!0,C.abort(),typeof ee.return==="function")try{await ee.return(void 0)}catch(x){O.debug?.(`Failed to close event stream iterator: ${E(x)}`)}};try{while(!0){let x=ee.next(),R=await Promise.race([x.then((M)=>({type:"event",value:M})),$t.then(()=>({type:"prompt-failed"})),Ot.then(()=>({type:"aborted"}))]);if(R.type==="prompt-failed"){await K();break}if(R.type==="aborted"){try{await b.session.abort({sessionID:v,...T?{directory:T}:{}},{signal:C.signal})}catch{}await K();break}let{done:N,value:U}=R.value;if(N){if(te=!0,!i.abortSignal?.aborted&&!z)z=!0,k.enqueue({type:"error",error:xt(Error("OpenCode event stream ended before the session finished; the response may be incomplete."),{sessionId:v,modelId:this.modelId,isRetryable:!1})});break}if(!fr(U,v))continue;let Rt=hr(U,le,O);for(let M of Rt)k.enqueue(M);if(U.type==="message.updated"){let M=U;if(M.properties.info.role==="assistant")X=M.properties.info}if(mr(U,v)){let M=mt(X),Mt=xr(le,M,v,X?.id);for(let Dt of Mt)k.enqueue(Dt);await K();break}}}finally{ae(),await K()}}catch(q){if(!P)k.enqueue(ht(_));if(!H(q)){let I=oe(q,{sessionId:v,modelId:this.modelId});O.error(`Stream error: ${E(I)}`),k.enqueue({type:"error",error:I})}}finally{C.abort(),J(),k.close()}}}),request:{body:w}}}getRequestDirectory(){return this.settings.directory??this.settings.cwd}getResponseFormat(i){if(i.responseFormat?.type!=="json")return;return{type:"json_schema",schema:i.responseFormat.schema??{type:"object",additionalProperties:!0},...this.settings.outputFormatRetryCount!==void 0?{retryCount:this.settings.outputFormatRetryCount}:{}}}buildPromptRequestBody(i,u,l,c,f){let h=this.getResponseFormat(c),g=this.getRequestDirectory();return{sessionID:i,...g?{directory:g}:{},...this.parsedModelId.providerID?{model:{providerID:this.parsedModelId.providerID,modelID:this.parsedModelId.modelID}}:{},...this.settings.agent?{agent:this.settings.agent}:{},...this.settings.tools?{tools:this.settings.tools}:{},...h?{format:h}:{},...l??this.settings.systemPrompt?{system:l??this.settings.systemPrompt}:{},...this.settings.variant?{variant:this.settings.variant}:{},...f?{messageID:f}:{},parts:u}}async replyToPendingApprovals(i,u,l){let c=i.permission;if(typeof c?.reply!=="function")return["OpenCode permission.reply is unavailable; tool approval responses were ignored."];let f=[],h=this.getRequestDirectory(),g=this.getRepliedApprovalIdsForSession(u),y=this.getPendingApprovalResponses(l,g);for(let v of y)try{let b=await c.reply({requestID:v.approvalId,reply:v.approved?"once":"reject",...v.reason?{message:v.reason}:{},...h?{directory:h}:{}}),{error:w}=V(b);if(w){let T=`Failed to apply tool approval response for ${v.approvalId}: ${E(w)}`;this.logger.warn(T),f.push(T);continue}g.add(v.approvalId)}catch(b){let w=`Failed to apply tool approval response for ${v.approvalId}: ${E(b)}`;this.logger.warn(w),f.push(w)}return f}getPendingApprovalResponses(i,u){let l=new Set,c=[];for(let f of i){if(l.has(f.approvalId))continue;if(l.add(f.approvalId),u.has(f.approvalId))continue;c.push(f)}return c}getRepliedApprovalIdsForSession(i){let u=this.repliedApprovalIdsBySession.get(i);if(u)return u;let l=new Set;return this.repliedApprovalIdsBySession.set(i,l),l}async getOrCreateSession(){if(this.sessionId&&!this.settings.createNewSession)return this.sessionId;if(!this.settings.createNewSession&&this.sessionInitPromise)return this.sessionInitPromise;let i=async()=>{let l=await this.clientManager.getClient(),c=this.getRequestDirectory(),f=await l.session.create({...c?{directory:c}:{},title:this.settings.sessionTitle??"AI SDK Session",...this.settings.permission?{permission:this.settings.permission}:{}}),{data:h,error:g}=V(f),y=h;if(!y?.id)throw Error(`Failed to create session: ${JSON.stringify(g??h)}`);return this.sessionId=y.id,this.logger.debug?.(`Created session: ${this.sessionId}`),this.sessionId};if(this.settings.createNewSession)return i();let u=i();this.sessionInitPromise=u;try{return await u}finally{if(this.sessionInitPromise===u)this.sessionInitPromise=null}}extractContentFromParts(i){let u=[];for(let l of i){if(l.type==="text"&&typeof l.text==="string"){if(!l.synthetic&&!l.ignored)u.push({type:"text",text:l.text});continue}if(l.type==="reasoning"&&typeof l.text==="string"){u.push({type:"reasoning",text:l.text});continue}if(l.type==="tool"){let c=this.extractToolParts(l);u.push(...c);continue}if(l.type==="file")u.push(...this.convertFilePartToContent(l))}return u}extractToolParts(i){let u=[],l=i;if(l.state.status==="completed"){if(l.tool===W){let f=D(l.state.input,(h)=>{this.logger.warn(`Failed to serialize StructuredOutput input for ${l.callID}: ${h}`)});return this.logger.debug?.(`[StructuredOutput doGenerate] callID=${l.callID} status=${l.state.status} raw input=${JSON.stringify(l.state.input)} serialized=${f}`),u.push({type:"text",text:f}),u}u.push({type:"tool-call",toolCallId:l.callID,toolName:l.tool,input:D(l.state.input,(f)=>{this.logger.warn(`Failed to serialize tool input for ${l.callID}: ${f}`)}),providerExecuted:!0,dynamic:!0}),u.push({type:"tool-result",toolCallId:l.callID,toolName:l.tool,result:l.state.output??"",dynamic:!0});let c=l.state.attachments??[];for(let f of c)if(f.type==="file")u.push(...this.convertFilePartToContent(f))}else if(l.state.status==="error"){if(l.tool===W)return u;u.push({type:"tool-call",toolCallId:l.callID,toolName:l.tool,input:D(l.state.input,(c)=>{this.logger.warn(`Failed to serialize tool input for ${l.callID}: ${c}`)}),providerExecuted:!0,dynamic:!0}),u.push({type:"tool-result",toolCallId:l.callID,toolName:l.tool,result:l.state.error??"Unknown error",isError:!0,dynamic:!0})}return u}convertFilePartToContent(i){let u=i;if(!u.url||!u.mime)return this.logger.debug?.(`Skipping file part with missing metadata: url=${String(u.url)} mime=${String(u.mime)}`),[];let{plan:l,error:c}=Et(u);if(!l){if(c==="invalid-data-url")this.logger.debug?.(`Skipping file part with invalid data URL: ${u.url.slice(0,80)}`);return[]}let f=[];if(l.primary.type==="file")f.push({type:"file",mediaType:l.primary.mediaType,data:l.primary.data,...l.sourceMetadata?{providerMetadata:{opencode:{source:l.sourceMetadata}}}:{}});else if(l.primary.type==="source-url")f.push({type:"source",sourceType:"url",id:l.primary.id,url:l.primary.url,...l.primary.title?{title:l.primary.title}:{}});else f.push({type:"source",sourceType:"document",id:l.primary.id,mediaType:l.primary.mediaType,title:l.primary.title,...l.primary.filename?{filename:l.primary.filename}:{},...l.sourceMetadata?{providerMetadata:{opencode:{source:l.sourceMetadata}}}:{}});if(l.secondaryDocumentSource)f.push({type:"source",sourceType:"document",id:l.secondaryDocumentSource.id,mediaType:l.secondaryDocumentSource.mediaType,title:l.secondaryDocumentSource.title,...l.secondaryDocumentSource.filename?{filename:l.secondaryDocumentSource.filename}:{},...l.sourceMetadata?{providerMetadata:{opencode:{source:l.sourceMetadata}}}:{}});return f}extractUsageFromParts(i){let u={inputTokens:0,outputTokens:0,reasoningTokens:0,cachedInputTokens:0,cachedWriteTokens:0,totalCost:0};for(let l of i)if(l.type==="step-finish"){let c=l;u.inputTokens+=c.tokens.input,u.outputTokens+=c.tokens.output,u.reasoningTokens+=c.tokens.reasoning,u.cachedInputTokens+=c.tokens.cache.read,u.cachedWriteTokens+=c.tokens.cache.write,u.totalCost+=c.cost}return u}getSessionId(){return this.sessionId}},qr=class i{static instance=null;client=null;server=null;options;logger;initPromise=null;isDisposed=!1;activeEventSubscriptions=new Set;exitHandler=null;startupAbort=null;constructor(u){let l=Object.fromEntries(Object.entries(u).filter(([c,f])=>f!==void 0));this.options={hostname:"127.0.0.1",port:4096,autoStartServer:!0,serverTimeout:1e4,...l},this.logger=Q(u.logger)}static getInstance(u){if(!i.instance)i.instance=new i(u??{});else if(u)i.instance.updateOptions(u);return i.instance}static createInstance(u){return new i(u)}static resetInstance(){if(i.instance)i.instance.dispose().catch(()=>{}),i.instance=null}updateOptions(u){if(!this.client&&!this.initPromise){let c=Object.fromEntries(Object.entries(u).filter(([f,h])=>h!==void 0));this.options={...this.options,...c},this.logger=Q(u.logger??this.options.logger);return}let l=Object.fromEntries(Object.entries(u).filter(([c,f])=>f!==void 0));if(Object.keys(l).length===0)return;if(l.client&&this.client&&l.client!==this.client){this.logger.warn("Client manager already initialized; provided preconfigured client was ignored because a client is already active — requests will keep flowing through the existing client. To use this client, pass an isolated manager via createOpencode({ clientManager: OpencodeClientManager.createInstance({ client }) }), or call OpencodeClientManager.resetInstance() before creating the provider.");return}this.logger.warn("Client manager already initialized; new options from createOpencode() were ignored. Use OpencodeClientManager.createInstance() with the clientManager provider setting for isolated configuration, or call OpencodeClientManager.resetInstance() first.")}async getClient(){if(this.isDisposed)throw Error("Client manager has been disposed");if(this.client)return this.client;if(this.initPromise)return this.initPromise;this.initPromise=this.initializeClient();try{return this.client=await this.initPromise,this.client}finally{this.initPromise=null}}async initializeClient(){if(this.options.client){if(this.options.clientOptions)this.logger.warn("Both client and clientOptions were provided; clientOptions will be ignored because client takes precedence.");return this.logger.debug?.("Using preconfigured OpenCode client"),this.options.client}let{createOpencodeClient:u,createOpencodeServer:l}=await import("./index-cxfnnrmh.js");if(this.options.baseUrl)return this.logger.debug?.(`Connecting to external OpenCode server at ${this.options.baseUrl}`),u(this.createManagedClientOptions(this.options.baseUrl));let c=`http://${this.options.hostname}:${this.options.port}`,f=await this.isServerRunning(c);if(this.isDisposed)throw Error("Client manager has been disposed");if(f)return this.logger.debug?.(`Connected to existing OpenCode server at ${c}`),u(this.createManagedClientOptions(c));if(this.options.autoStartServer){this.logger.debug?.(`Starting OpenCode server at ${c}`);let h=new AbortController;this.startupAbort=h;let g;try{g=await l({hostname:this.options.hostname,port:this.options.port,timeout:this.options.serverTimeout,signal:h.signal})}catch(y){if(this.isDisposed)throw Error("Client manager has been disposed");let v=E(y);if(v.includes("Timeout"))throw Tt(this.options.serverTimeout??1e4,"server startup");throw Error(`Failed to start OpenCode server: ${v}`)}finally{if(this.startupAbort===h)this.startupAbort=null}if(this.isDisposed){try{g.close()}catch{}throw Error("Client manager has been disposed")}return this.server=g,this.logger.debug?.(`OpenCode server started at ${g.url}`),this.registerExitHandler(),u(this.createManagedClientOptions(g.url))}throw Error(`No OpenCode server running at ${c} and autoStartServer is disabled`)}async isServerRunning(u){try{return(await fetch(`${u}/health`,{method:"GET",signal:AbortSignal.timeout(2000)})).ok}catch{try{return(await fetch(`${u}/config`,{method:"GET",signal:AbortSignal.timeout(2000)})).ok}catch{return!1}}}createManagedClientOptions(u){let l=this.options.clientOptions??{},c=l;if(c.baseUrl!==void 0)this.logger.warn("Ignoring clientOptions.baseUrl because provider baseUrl/hostname/port controls server routing.");if(c.directory!==void 0)this.logger.warn("Ignoring clientOptions.directory because directory is managed by model settings/defaultSettings.");if(c.responseStyle==="data")this.logger.warn('Ignoring clientOptions.responseStyle "data" because the provider requires fields-style SDK results.');return{...l,baseUrl:u,directory:this.options.cwd,responseStyle:"fields"}}getServerUrl(){if(this.server)return this.server.url;if(this.options.baseUrl)return this.options.baseUrl;return`http://${this.options.hostname}:${this.options.port}`}isServerManaged(){return this.server!==null}registerEventSubscription(u){return this.activeEventSubscriptions.add(u),()=>{this.activeEventSubscriptions.delete(u)}}async dispose(){if(this.isDisposed)return;this.isDisposed=!0,this.startupAbort?.abort(),this.startupAbort=null,this.unregisterExitHandler();for(let u of this.activeEventSubscriptions)u.abort();if(this.activeEventSubscriptions.clear(),i.instance===this)i.instance=null;if(this.server){this.logger.debug?.("Stopping managed OpenCode server");try{this.server.close()}catch(u){this.logger.warn(`Error stopping server: ${E(u)}`)}this.server=null}this.client=null,this.initPromise=null}registerExitHandler(){if(this.exitHandler)return;let u=()=>{let l=this.server;if(!l)return;this.server=null;try{l.close()}catch{}};this.exitHandler=u,process.once("exit",u)}unregisterExitHandler(){if(!this.exitHandler)return;process.removeListener("exit",this.exitHandler),this.exitHandler=null}};function Fr(i,u){return qr.getInstance({hostname:i.hostname,port:i.port,baseUrl:i.baseUrl,autoStartServer:i.autoStartServer,serverTimeout:i.serverTimeout,clientOptions:i.clientOptions,client:i.client,cwd:i.defaultSettings?.directory??i.defaultSettings?.cwd,logger:u})}function Nr(i){let u=Q(i?.defaultSettings?.logger);Or(i,u);let l=i?.clientManager??Fr(i??{},u),c=(h,g)=>{let y=Dr(i?.defaultSettings,g);return new _r({modelId:h,settings:y,clientManager:l})};return Object.assign((h,g)=>c(h,g),{languageModel:(h,g)=>c(h,g),chat:(h,g)=>c(h,g),provider:"opencode",specificationVersion:"v3",embeddingModel:(h)=>{throw new se({modelId:h,modelType:"embeddingModel"})},imageModel:(h)=>{throw new se({modelId:h,modelType:"imageModel"})},getClientManager:()=>l,dispose:async()=>{await l.dispose()}})}var pn=Nr();export{Nr as createOpencode};