ai-sdk-react-model-picker
Version:
A flexible, theme-aware React component library for selecting and managing AI models. Built for seamless integration with Vercel's AI SDK v5, with special support for VSCode extensions and JetBrains IDEs.
17 lines (13 loc) • 35.5 kB
JavaScript
Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./schemas-BGkscPQb.cjs");var lt=Object.defineProperty,ut=Object.defineProperties,ct=Object.getOwnPropertyDescriptors,de=Object.getOwnPropertySymbols,pt=Object.prototype.hasOwnProperty,dt=Object.prototype.propertyIsEnumerable,ge=(e,t,n)=>t in e?lt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,x=(e,t)=>{for(var n in t||(t={}))pt.call(t,n)&&ge(e,n,t[n]);if(de)for(var n of de(t))dt.call(t,n)&&ge(e,n,t[n]);return e},M=(e,t)=>ut(e,ct(t)),ve="vercel.ai.error",gt=Symbol.for(ve),be,mt=class ke extends Error{constructor({name:t,message:n,cause:o}){super(n),this[be]=!0,this.name=t,this.cause=o}static isInstance(t){return ke.hasMarker(t,ve)}static hasMarker(t,n){const o=Symbol.for(n);return t!=null&&typeof t=="object"&&o in t&&typeof t[o]=="boolean"&&t[o]===!0}};be=gt;var E=mt,we="AI_APICallError",Te=`vercel.ai.error.${we}`,ft=Symbol.for(Te),xe,A=class extends E{constructor({message:e,url:t,requestBodyValues:n,statusCode:o,responseHeaders:s,responseBody:l,cause:u,isRetryable:i=o!=null&&(o===408||o===409||o===429||o>=500),data:a}){super({name:we,message:e,cause:u}),this[xe]=!0,this.url=t,this.requestBodyValues=n,this.statusCode=o,this.responseHeaders=s,this.responseBody=l,this.isRetryable=i,this.data=a}static isInstance(e){return E.hasMarker(e,Te)}};xe=ft;var Ie="AI_EmptyResponseBodyError",Ee=`vercel.ai.error.${Ie}`,ht=Symbol.for(Ee),Se,_t=class extends E{constructor({message:e="Empty response body"}={}){super({name:Ie,message:e}),this[Se]=!0}static isInstance(e){return E.hasMarker(e,Ee)}};Se=ht;function Oe(e){return e==null?"unknown error":typeof e=="string"?e:e instanceof Error?e.message:JSON.stringify(e)}var Re="AI_InvalidArgumentError",je=`vercel.ai.error.${Re}`,yt=Symbol.for(je),$e,vt=class extends E{constructor({message:e,cause:t,argument:n}){super({name:Re,message:e,cause:t}),this[$e]=!0,this.argument=n}static isInstance(e){return E.hasMarker(e,je)}};$e=yt;var Ce="AI_InvalidPromptError",Ne=`vercel.ai.error.${Ce}`,bt=Symbol.for(Ne),Ae,kt=class extends E{constructor({prompt:e,message:t,cause:n}){super({name:Ce,message:`Invalid prompt: ${t}`,cause:n}),this[Ae]=!0,this.prompt=e}static isInstance(e){return E.hasMarker(e,Ne)}};Ae=bt;var Pe="AI_InvalidResponseDataError",qe=`vercel.ai.error.${Pe}`,wt=Symbol.for(qe),De,re=class extends E{constructor({data:e,message:t=`Invalid response data: ${JSON.stringify(e)}.`}){super({name:Pe,message:t}),this[De]=!0,this.data=e}static isInstance(e){return E.hasMarker(e,qe)}};De=wt;var Me="AI_JSONParseError",Ue=`vercel.ai.error.${Me}`,Tt=Symbol.for(Ue),Be,Y=class extends E{constructor({text:e,cause:t}){super({name:Me,message:`JSON parsing failed: Text: ${e}.
Error message: ${Oe(t)}`,cause:t}),this[Be]=!0,this.text=e}static isInstance(e){return E.hasMarker(e,Ue)}};Be=Tt;var He="AI_LoadAPIKeyError",Le=`vercel.ai.error.${He}`,xt=Symbol.for(Le),Ve,z=class extends E{constructor({message:e}){super({name:He,message:e}),this[Ve]=!0}static isInstance(e){return E.hasMarker(e,Le)}};Ve=xt;var Je="AI_TypeValidationError",Fe=`vercel.ai.error.${Je}`,It=Symbol.for(Fe),Ke,Et=class ae extends E{constructor({value:t,cause:n}){super({name:Je,message:`Type validation failed: Value: ${JSON.stringify(t)}.
Error message: ${Oe(n)}`,cause:n}),this[Ke]=!0,this.value=t}static isInstance(t){return E.hasMarker(t,Fe)}static wrap({value:t,cause:n}){return ae.isInstance(n)&&n.value===t?n:new ae({value:t,cause:n})}};Ke=It;var J=Et,We="AI_UnsupportedFunctionalityError",Ge=`vercel.ai.error.${We}`,St=Symbol.for(Ge),ze,q=class extends E{constructor({functionality:e,message:t=`'${e}' functionality not supported.`}){super({name:We,message:t}),this[ze]=!0,this.functionality=e}static isInstance(e){return E.hasMarker(e,Ge)}};ze=St;var me=class extends Error{constructor(e,t){super(e),this.name="ParseError",this.type=t.type,this.field=t.field,this.value=t.value,this.line=t.line}};function oe(e){}function Ot(e){if(typeof e=="function")throw new TypeError("`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?");const{onEvent:t=oe,onError:n=oe,onRetry:o=oe,onComment:s}=e;let l="",u=!0,i,a="",d="";function c(p){const v=u?p.replace(/^\xEF\xBB\xBF/,""):p,[w,y]=Rt(`${l}${v}`);for(const b of w)m(b);l=y,u=!1}function m(p){if(p===""){f();return}if(p.startsWith(":")){s&&s(p.slice(p.startsWith(": ")?2:1));return}const v=p.indexOf(":");if(v!==-1){const w=p.slice(0,v),y=p[v+1]===" "?2:1,b=p.slice(v+y);g(w,b,p);return}g(p,"",p)}function g(p,v,w){switch(p){case"event":d=v;break;case"data":a=`${a}${v}
`;break;case"id":i=v.includes("\0")?void 0:v;break;case"retry":/^\d+$/.test(v)?o(parseInt(v,10)):n(new me(`Invalid \`retry\` value: "${v}"`,{type:"invalid-retry",value:v,line:w}));break;default:n(new me(`Unknown field "${p.length>20?`${p.slice(0,20)}…`:p}"`,{type:"unknown-field",field:p,value:v,line:w}));break}}function f(){a.length>0&&t({id:i,event:d||void 0,data:a.endsWith(`
`)?a.slice(0,-1):a}),i=void 0,a="",d=""}function k(p={}){l&&p.consume&&m(l),u=!0,i=void 0,a="",d="",l=""}return{feed:c,reset:k}}function Rt(e){const t=[];let n="",o=0;for(;o<e.length;){const s=e.indexOf("\r",o),l=e.indexOf(`
`,o);let u=-1;if(s!==-1&&l!==-1?u=Math.min(s,l):s!==-1?u=s:l!==-1&&(u=l),u===-1){n=e.slice(o);break}else{const i=e.slice(o,u);t.push(i),o=u+1,e[o-1]==="\r"&&e[o]===`
`&&o++}}return[t,n]}var jt=class extends TransformStream{constructor({onError:e,onRetry:t,onComment:n}={}){let o;super({start(s){o=Ot({onEvent:l=>{s.enqueue(l)},onError(l){e==="terminate"?s.error(l):typeof e=="function"&&e(l)},onRetry:t,onComment:n})},transform(s){o.feed(s)}})}};new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function Z(...e){return e.reduce((t,n)=>x(x({},t),n??{}),{})}function te(e){return Object.fromEntries([...e.headers])}var $t=({prefix:e,size:t=16,alphabet:n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",separator:o="-"}={})=>{const s=()=>{const l=n.length,u=new Array(t);for(let i=0;i<t;i++)u[i]=n[Math.random()*l|0];return u.join("")};if(e==null)return s;if(n.includes(o))throw new vt({argument:"separator",message:`The separator "${o}" must not be part of the alphabet "${n}".`});return()=>`${e}${o}${s()}`},C=$t();function ie(e){return(e instanceof Error||e instanceof DOMException)&&(e.name==="AbortError"||e.name==="ResponseAborted"||e.name==="TimeoutError")}var Ct=["fetch failed","failed to fetch"];function Nt({error:e,url:t,requestBodyValues:n}){if(ie(e))return e;if(e instanceof TypeError&&Ct.includes(e.message.toLowerCase())){const o=e.cause;if(o!=null)return new A({message:`Cannot connect to API: ${o.message}`,cause:o,url:t,requestBodyValues:n,isRetryable:!0})}return e}function At(e){return Object.fromEntries(Object.entries(e).filter(([t,n])=>n!=null))}function Ye({apiKey:e,environmentVariableName:t,apiKeyParameterName:n="apiKey",description:o}){if(typeof e=="string")return e;if(e!=null)throw new z({message:`${o} API key must be a string.`});if(typeof process>"u")throw new z({message:`${o} API key is missing. Pass it using the '${n}' parameter. Environment variables is not supported in this environment.`});if(e=process.env[t],e==null)throw new z({message:`${o} API key is missing. Pass it using the '${n}' parameter or the ${t} environment variable.`});if(typeof e!="string")throw new z({message:`${o} API key must be a string. The value of the ${t} environment variable is not a string.`});return e}var Pt=/"__proto__"\s*:/,qt=/"constructor"\s*:/;function Dt(e){const t=JSON.parse(e);return t===null||typeof t!="object"||Pt.test(e)===!1&&qt.test(e)===!1?t:Mt(t)}function Mt(e){let t=[e];for(;t.length;){const n=t;t=[];for(const o of n){if(Object.prototype.hasOwnProperty.call(o,"__proto__"))throw new SyntaxError("Object contains forbidden prototype property");if(Object.prototype.hasOwnProperty.call(o,"constructor")&&Object.prototype.hasOwnProperty.call(o.constructor,"prototype"))throw new SyntaxError("Object contains forbidden prototype property");for(const s in o){const l=o[s];l&&typeof l=="object"&&t.push(l)}}}return e}function ue(e){const{stackTraceLimit:t}=Error;Error.stackTraceLimit=0;try{return Dt(e)}finally{Error.stackTraceLimit=t}}var le=Symbol.for("vercel.ai.validator");function Ut(e){return{[le]:!0,validate:e}}function Bt(e){return typeof e=="object"&&e!==null&&le in e&&e[le]===!0&&"validate"in e}function Ht(e){return Bt(e)?e:Lt(e)}function Lt(e){return Ut(async t=>{const n=await e["~standard"].validate(t);return n.issues==null?{success:!0,value:n.value}:{success:!1,error:new J({value:t,cause:n.issues})}})}async function Vt({value:e,schema:t}){const n=await Ze({value:e,schema:t});if(!n.success)throw J.wrap({value:e,cause:n.error});return n.value}async function Ze({value:e,schema:t}){const n=Ht(t);try{if(n.validate==null)return{success:!0,value:e,rawValue:e};const o=await n.validate(e);return o.success?{success:!0,value:o.value,rawValue:e}:{success:!1,error:J.wrap({value:e,cause:o.error}),rawValue:e}}catch(o){return{success:!1,error:J.wrap({value:e,cause:o}),rawValue:e}}}async function Jt({text:e,schema:t}){try{const n=ue(e);return t==null?n:Vt({value:n,schema:t})}catch(n){throw Y.isInstance(n)||J.isInstance(n)?n:new Y({text:e,cause:n})}}async function Qe({text:e,schema:t}){try{const n=ue(e);return t==null?{success:!0,value:n,rawValue:n}:await Ze({value:n,schema:t})}catch(n){return{success:!1,error:Y.isInstance(n)?n:new Y({text:e,cause:n}),rawValue:void 0}}}function se(e){try{return ue(e),!0}catch{return!1}}function Ft({stream:e,schema:t}){return e.pipeThrough(new TextDecoderStream).pipeThrough(new jt).pipeThrough(new TransformStream({async transform({data:n},o){n!=="[DONE]"&&o.enqueue(await Qe({text:n,schema:t}))}}))}var Kt=()=>globalThis.fetch,Q=async({url:e,headers:t,body:n,failedResponseHandler:o,successfulResponseHandler:s,abortSignal:l,fetch:u})=>Wt({url:e,headers:x({"Content-Type":"application/json"},t),body:{content:JSON.stringify(n),values:n},failedResponseHandler:o,successfulResponseHandler:s,abortSignal:l,fetch:u}),Wt=async({url:e,headers:t={},body:n,successfulResponseHandler:o,failedResponseHandler:s,abortSignal:l,fetch:u=Kt()})=>{try{const i=await u(e,{method:"POST",headers:At(t),body:n.content,signal:l}),a=te(i);if(!i.ok){let d;try{d=await s({response:i,url:e,requestBodyValues:n.values})}catch(c){throw ie(c)||A.isInstance(c)?c:new A({message:"Failed to process error response",cause:c,statusCode:i.status,url:e,responseHeaders:a,requestBodyValues:n.values})}throw d.value}try{return await o({response:i,url:e,requestBodyValues:n.values})}catch(d){throw d instanceof Error&&(ie(d)||A.isInstance(d))?d:new A({message:"Failed to process successful response",cause:d,statusCode:i.status,url:e,responseHeaders:a,requestBodyValues:n.values})}}catch(i){throw Nt({error:i,url:e,requestBodyValues:n.values})}},Gt=({errorSchema:e,errorToMessage:t,isRetryable:n})=>async({response:o,url:s,requestBodyValues:l})=>{const u=await o.text(),i=te(o);if(u.trim()==="")return{responseHeaders:i,value:new A({message:o.statusText,url:s,requestBodyValues:l,statusCode:o.status,responseHeaders:i,responseBody:u,isRetryable:n?.(o)})};try{const a=await Jt({text:u,schema:e});return{responseHeaders:i,value:new A({message:t(a),url:s,requestBodyValues:l,statusCode:o.status,responseHeaders:i,responseBody:u,data:a,isRetryable:n?.(o,a)})}}catch{return{responseHeaders:i,value:new A({message:o.statusText,url:s,requestBodyValues:l,statusCode:o.status,responseHeaders:i,responseBody:u,isRetryable:n?.(o)})}}},Xe=e=>async({response:t})=>{const n=te(t);if(t.body==null)throw new _t({});return{responseHeaders:n,value:Ft({stream:t.body,schema:e})}},et=e=>async({response:t,url:n,requestBodyValues:o})=>{const s=await t.text(),l=await Qe({text:s,schema:e}),u=te(t);if(!l.success)throw new A({message:"Invalid JSON response",cause:l.error,statusCode:t.status,responseHeaders:u,responseBody:s,url:n,requestBodyValues:o});return{responseHeaders:u,value:l.value,rawValue:l.rawValue}},{btoa:zt}=globalThis;function Yt(e){let t="";for(let n=0;n<e.length;n++)t+=String.fromCodePoint(e[n]);return zt(t)}function tt(e){return e?.replace(/\/$/,"")}var Zt=r.object({type:r.literal("reasoning.summary"),summary:r.string()}),Qt=r.object({type:r.literal("reasoning.encrypted"),data:r.string()}),Xt=r.object({type:r.literal("reasoning.text"),text:r.string().nullish(),signature:r.string().nullish()}),en=r.union([Zt,Qt,Xt]),tn=r.union([en,r.unknown().transform(()=>null)]),ce=r.array(tn).transform(e=>e.filter(t=>!!t)),pe=r.object({error:r.object({code:r.union([r.string(),r.number()]).nullable().optional().default(null),message:r.string(),type:r.string().nullable().optional().default(null),param:r.any().nullable().optional().default(null)})}),X=Gt({errorSchema:pe,errorToMessage:e=>e.error.message});function ee(e){switch(e){case"stop":return"stop";case"length":return"length";case"content_filter":return"content-filter";case"function_call":case"tool_calls":return"tool-calls";default:return"unknown"}}function nt({url:e,protocols:t}){try{const n=new URL(e);return t.has(n.protocol)}catch{return!1}}function fe({part:e,defaultMediaType:t}){var n,o;if(e.data instanceof Uint8Array){const l=Yt(e.data);return`data:${(n=e.mediaType)!=null?n:t};base64,${l}`}const s=e.data.toString();return nt({url:s,protocols:new Set(["http:","https:"])})||s.startsWith("data:")?s:`data:${(o=e.mediaType)!=null?o:t};base64,${s}`}function he(e,t){var n;const o=e.match(/^data:([^;]+)/);return o&&(n=o[1])!=null?n:t}function _e(e){const t=e.match(/^data:[^;]*;base64,(.+)$/);return t?t[1]:e}function P(e){var t,n,o;const s=e?.anthropic,l=e?.openrouter;return(o=(n=(t=l?.cacheControl)!=null?t:l?.cache_control)!=null?n:s?.cacheControl)!=null?o:s?.cache_control}function nn(e){var t,n,o;const s=[];for(const{role:l,content:u,providerOptions:i}of e)switch(l){case"system":{s.push({role:"system",content:u,cache_control:P(i)});break}case"user":{if(u.length===1&&((t=u[0])==null?void 0:t.type)==="text"){const c=(n=P(i))!=null?n:P(u[0].providerOptions),m=c?[{type:"text",text:u[0].text,cache_control:c}]:u[0].text;s.push({role:"user",content:m});break}const a=P(i),d=u.map(c=>{var m,g,f,k,p,v;const w=(m=P(c.providerOptions))!=null?m:a;switch(c.type){case"text":return{type:"text",text:c.text,cache_control:w};case"file":{if((g=c.mediaType)!=null&&g.startsWith("image/"))return{type:"image_url",image_url:{url:fe({part:c,defaultMediaType:"image/jpeg"})},cache_control:w};const y=String((v=(p=(k=(f=c.providerOptions)==null?void 0:f.openrouter)==null?void 0:k.filename)!=null?p:c.filename)!=null?v:""),b=fe({part:c,defaultMediaType:"application/pdf"});return nt({url:b,protocols:new Set(["http:","https:"])})?{type:"file",file:{filename:y,file_data:b}}:{type:"file",file:{filename:y,file_data:b},cache_control:w}}default:return{type:"text",text:"",cache_control:w}}});s.push({role:"user",content:d});break}case"assistant":{let a="",d="";const c=[],m=[];for(const g of u)switch(g.type){case"text":{a+=g.text;break}case"tool-call":{m.push({id:g.toolCallId,type:"function",function:{name:g.toolName,arguments:JSON.stringify(g.input)}});break}case"reasoning":{d+=g.text,c.push({type:"reasoning.text",text:g.text});break}}s.push({role:"assistant",content:a,tool_calls:m.length>0?m:void 0,reasoning:d||void 0,reasoning_details:c.length>0?c:void 0,cache_control:P(i)});break}case"tool":{for(const a of u){const d=rn(a);s.push({role:"tool",tool_call_id:a.toolCallId,content:d,cache_control:(o=P(i))!=null?o:P(a.providerOptions)})}break}}return s}function rn(e){return e.output.type==="text"?e.output.value:JSON.stringify(e.output.value)}r.union([r.literal("auto"),r.literal("none"),r.literal("required"),r.object({type:r.literal("function"),function:r.object({name:r.string()})})]);function on(e){switch(e.type){case"auto":case"none":case"required":return e.type;case"tool":return{type:"function",function:{name:e.toolName}};default:throw new Error(`Invalid tool choice type: ${e}`)}}var sn=r.object({type:r.literal("image_url"),image_url:r.object({url:r.string()})}),an=r.union([sn,r.unknown().transform(()=>null)]),rt=r.array(an).transform(e=>e.filter(t=>!!t)),ot=r.object({id:r.string().optional(),model:r.string().optional(),provider:r.string().optional(),usage:r.object({prompt_tokens:r.number(),prompt_tokens_details:r.object({cached_tokens:r.number()}).nullish(),completion_tokens:r.number(),completion_tokens_details:r.object({reasoning_tokens:r.number()}).nullish(),total_tokens:r.number(),cost:r.number().optional(),cost_details:r.object({upstream_inference_cost:r.number().nullish()}).nullish()}).nullish()}),ln=ot.extend({choices:r.array(r.object({message:r.object({role:r.literal("assistant"),content:r.string().nullable().optional(),reasoning:r.string().nullable().optional(),reasoning_details:ce.nullish(),images:rt.nullish(),tool_calls:r.array(r.object({id:r.string().optional().nullable(),type:r.literal("function"),function:r.object({name:r.string(),arguments:r.string()})})).optional(),annotations:r.array(r.object({type:r._enum$1(["url_citation"]),url_citation:r.object({end_index:r.number(),start_index:r.number(),title:r.string(),url:r.string(),content:r.string().optional()})})).nullish()}),index:r.number().nullish(),logprobs:r.object({content:r.array(r.object({token:r.string(),logprob:r.number(),top_logprobs:r.array(r.object({token:r.string(),logprob:r.number()}))})).nullable()}).nullable().optional(),finish_reason:r.string().optional().nullable()}))}),un=r.union([ot.extend({choices:r.array(r.object({delta:r.object({role:r._enum$1(["assistant"]).optional(),content:r.string().nullish(),reasoning:r.string().nullish().optional(),reasoning_details:ce.nullish(),images:rt.nullish(),tool_calls:r.array(r.object({index:r.number().nullish(),id:r.string().nullish(),type:r.literal("function").optional(),function:r.object({name:r.string().nullish(),arguments:r.string().nullish()})})).nullish(),annotations:r.array(r.object({type:r._enum$1(["url_citation"]),url_citation:r.object({end_index:r.number(),start_index:r.number(),title:r.string(),url:r.string(),content:r.string().optional()})})).nullish()}).nullish(),logprobs:r.object({content:r.array(r.object({token:r.string(),logprob:r.number(),top_logprobs:r.array(r.object({token:r.string(),logprob:r.number()}))})).nullable()}).nullish(),finish_reason:r.string().nullable().optional(),index:r.number().nullish()}))}),pe]),st=class{constructor(e,t,n){this.specificationVersion="v2",this.provider="openrouter",this.defaultObjectGenerationMode="tool",this.supportedUrls={"image/*":[/^data:image\/[a-zA-Z]+;base64,/,/^https?:\/\/.+\.(jpg|jpeg|png|gif|webp)$/i],"application/*":[/^data:application\//,/^https?:\/\/.+$/]},this.modelId=e,this.settings=t,this.config=n}getArgs({prompt:e,maxOutputTokens:t,temperature:n,topP:o,frequencyPenalty:s,presencePenalty:l,seed:u,stopSequences:i,responseFormat:a,topK:d,tools:c,toolChoice:m}){var g;const f=x(x({model:this.modelId,models:this.settings.models,logit_bias:this.settings.logitBias,logprobs:this.settings.logprobs===!0||typeof this.settings.logprobs=="number"?!0:void 0,top_logprobs:typeof this.settings.logprobs=="number"?this.settings.logprobs:typeof this.settings.logprobs=="boolean"&&this.settings.logprobs?0:void 0,user:this.settings.user,parallel_tool_calls:this.settings.parallelToolCalls,max_tokens:t,temperature:n,top_p:o,frequency_penalty:s,presence_penalty:l,seed:u,stop:i,response_format:a,top_k:d,messages:nn(e),include_reasoning:this.settings.includeReasoning,reasoning:this.settings.reasoning,usage:this.settings.usage,plugins:this.settings.plugins,web_search_options:this.settings.web_search_options,provider:this.settings.provider},this.config.extraBody),this.settings.extraBody);if(a?.type==="json"&&a.schema!=null)return M(x({},f),{response_format:{type:"json_schema",json_schema:x({schema:a.schema,strict:!0,name:(g=a.name)!=null?g:"response"},a.description&&{description:a.description})}});if(c&&c.length>0){const k=c.filter(p=>p.type==="function").map(p=>({type:"function",function:{name:p.name,description:p.description,parameters:p.inputSchema}}));return M(x({},f),{tools:k,tool_choice:m?on(m):void 0})}return f}async doGenerate(e){var t,n,o,s,l,u,i,a,d,c,m,g,f,k,p,v,w,y,b,S,N,U,B,H;const F=(e.providerOptions||{}).openrouter||{},L=x(x({},this.getArgs(e)),F),{value:I,responseHeaders:K}=await Q({url:this.config.url({path:"/chat/completions",modelId:this.modelId}),headers:Z(this.config.headers(),e.headers),body:L,failedResponseHandler:X,successfulResponseHandler:et(ln),abortSignal:e.abortSignal,fetch:this.config.fetch}),O=I.choices[0];if(!O)throw new Error("No choice in response");const D=I.usage?{inputTokens:(t=I.usage.prompt_tokens)!=null?t:0,outputTokens:(n=I.usage.completion_tokens)!=null?n:0,totalTokens:((o=I.usage.prompt_tokens)!=null?o:0)+((s=I.usage.completion_tokens)!=null?s:0),reasoningTokens:(u=(l=I.usage.completion_tokens_details)==null?void 0:l.reasoning_tokens)!=null?u:0,cachedInputTokens:(a=(i=I.usage.prompt_tokens_details)==null?void 0:i.cached_tokens)!=null?a:0}:{inputTokens:0,outputTokens:0,totalTokens:0,reasoningTokens:0,cachedInputTokens:0},V=(d=O.message.reasoning_details)!=null?d:[],T=V.length>0?V.map(_=>{switch(_.type){case"reasoning.text":{if(_.text)return{type:"reasoning",text:_.text};break}case"reasoning.summary":{if(_.summary)return{type:"reasoning",text:_.summary};break}case"reasoning.encrypted":{if(_.data)return{type:"reasoning",text:"[REDACTED]"};break}}return null}).filter(_=>_!==null):O.message.reasoning?[{type:"reasoning",text:O.message.reasoning}]:[],$=[];if($.push(...T),O.message.content&&$.push({type:"text",text:O.message.content}),O.message.tool_calls)for(const _ of O.message.tool_calls)$.push({type:"tool-call",toolCallId:(c=_.id)!=null?c:C(),toolName:_.function.name,input:_.function.arguments});if(O.message.images)for(const _ of O.message.images)$.push({type:"file",mediaType:he(_.image_url.url,"image/jpeg"),data:_e(_.image_url.url)});if(O.message.annotations)for(const _ of O.message.annotations)_.type==="url_citation"&&$.push({type:"source",sourceType:"url",id:_.url_citation.url,url:_.url_citation.url,title:_.url_citation.title,providerMetadata:{openrouter:{content:_.url_citation.content||""}}});return{content:$,finishReason:ee(O.finish_reason),usage:D,warnings:[],providerMetadata:{openrouter:{provider:(m=I.provider)!=null?m:"",usage:{promptTokens:(g=D.inputTokens)!=null?g:0,completionTokens:(f=D.outputTokens)!=null?f:0,totalTokens:(k=D.totalTokens)!=null?k:0,cost:(p=I.usage)==null?void 0:p.cost,promptTokensDetails:{cachedTokens:(y=(w=(v=I.usage)==null?void 0:v.prompt_tokens_details)==null?void 0:w.cached_tokens)!=null?y:0},completionTokensDetails:{reasoningTokens:(N=(S=(b=I.usage)==null?void 0:b.completion_tokens_details)==null?void 0:S.reasoning_tokens)!=null?N:0},costDetails:{upstreamInferenceCost:(H=(B=(U=I.usage)==null?void 0:U.cost_details)==null?void 0:B.upstream_inference_cost)!=null?H:0}}}},request:{body:L},response:{id:I.id,modelId:I.model,headers:K}}}async doStream(e){var t;const o=(e.providerOptions||{}).openrouter||{},s=x(x({},this.getArgs(e)),o),{value:l,responseHeaders:u}=await Q({url:this.config.url({path:"/chat/completions",modelId:this.modelId}),headers:Z(this.config.headers(),e.headers),body:M(x({},s),{stream:!0,stream_options:this.config.compatibility==="strict"?x({include_usage:!0},(t=this.settings.usage)!=null&&t.include?{include_usage:!0}:{}):void 0}),failedResponseHandler:X,successfulResponseHandler:Xe(un),abortSignal:e.abortSignal,fetch:this.config.fetch}),i=[];let a="other";const d={inputTokens:Number.NaN,outputTokens:Number.NaN,totalTokens:Number.NaN,reasoningTokens:Number.NaN,cachedInputTokens:Number.NaN},c={};let m=!1,g=!1,f,k,p,v;return{stream:l.pipeThrough(new TransformStream({transform(w,y){var b,S,N,U,B,H,ne,F,L,I,K,O,D,V;if(!w.success){a="error",y.enqueue({type:"error",error:w.error});return}const T=w.value;if("error"in T){a="error",y.enqueue({type:"error",error:T.error});return}if(T.provider&&(v=T.provider),T.id&&(p=T.id,y.enqueue({type:"response-metadata",id:T.id})),T.model&&y.enqueue({type:"response-metadata",modelId:T.model}),T.usage!=null){if(d.inputTokens=T.usage.prompt_tokens,d.outputTokens=T.usage.completion_tokens,d.totalTokens=T.usage.prompt_tokens+T.usage.completion_tokens,c.promptTokens=T.usage.prompt_tokens,T.usage.prompt_tokens_details){const h=(b=T.usage.prompt_tokens_details.cached_tokens)!=null?b:0;d.cachedInputTokens=h,c.promptTokensDetails={cachedTokens:h}}if(c.completionTokens=T.usage.completion_tokens,T.usage.completion_tokens_details){const h=(S=T.usage.completion_tokens_details.reasoning_tokens)!=null?S:0;d.reasoningTokens=h,c.completionTokensDetails={reasoningTokens:h}}c.cost=T.usage.cost,c.totalTokens=T.usage.total_tokens}const $=T.choices[0];if($?.finish_reason!=null&&(a=ee($.finish_reason)),$?.delta==null)return;const _=$.delta,W=h=>{g||(k=p||C(),y.enqueue({type:"reasoning-start",id:k}),g=!0),y.enqueue({type:"reasoning-delta",delta:h,id:k||C()})};if(_.reasoning_details&&_.reasoning_details.length>0)for(const h of _.reasoning_details)switch(h.type){case"reasoning.text":{h.text&&W(h.text);break}case"reasoning.encrypted":{h.data&&W("[REDACTED]");break}case"reasoning.summary":{h.summary&&W(h.summary);break}}else _.reasoning&&W(_.reasoning);if(_.content&&(g&&!m&&(y.enqueue({type:"reasoning-end",id:k||C()}),g=!1),m||(f=p||C(),y.enqueue({type:"text-start",id:f}),m=!0),y.enqueue({type:"text-delta",delta:_.content,id:f||C()})),_.annotations)for(const h of _.annotations)h.type==="url_citation"&&y.enqueue({type:"source",sourceType:"url",id:h.url_citation.url,url:h.url_citation.url,title:h.url_citation.title,providerMetadata:{openrouter:{content:h.url_citation.content||""}}});if(_.tool_calls!=null)for(const h of _.tool_calls){const G=(N=h.index)!=null?N:i.length-1;if(i[G]==null){if(h.type!=="function")throw new re({data:h,message:"Expected 'function' type."});if(h.id==null)throw new re({data:h,message:"Expected 'id' to be a string."});if(((U=h.function)==null?void 0:U.name)==null)throw new re({data:h,message:"Expected 'function.name' to be a string."});i[G]={id:h.id,type:"function",function:{name:h.function.name,arguments:(B=h.function.arguments)!=null?B:""},inputStarted:!1,sent:!1};const j=i[G];if(j==null)throw new Error("Tool call is missing");((H=j.function)==null?void 0:H.name)!=null&&((ne=j.function)==null?void 0:ne.arguments)!=null&&se(j.function.arguments)&&(j.inputStarted=!0,y.enqueue({type:"tool-input-start",id:j.id,toolName:j.function.name}),y.enqueue({type:"tool-input-delta",id:j.id,delta:j.function.arguments}),y.enqueue({type:"tool-input-end",id:j.id}),y.enqueue({type:"tool-call",toolCallId:j.id,toolName:j.function.name,input:j.function.arguments}),j.sent=!0);continue}const R=i[G];if(R==null)throw new Error("Tool call is missing");R.inputStarted||(R.inputStarted=!0,y.enqueue({type:"tool-input-start",id:R.id,toolName:R.function.name})),((F=h.function)==null?void 0:F.arguments)!=null&&(R.function.arguments+=(I=(L=h.function)==null?void 0:L.arguments)!=null?I:""),y.enqueue({type:"tool-input-delta",id:R.id,delta:(K=h.function.arguments)!=null?K:""}),((O=R.function)==null?void 0:O.name)!=null&&((D=R.function)==null?void 0:D.arguments)!=null&&se(R.function.arguments)&&(y.enqueue({type:"tool-call",toolCallId:(V=R.id)!=null?V:C(),toolName:R.function.name,input:R.function.arguments}),R.sent=!0)}if(_.images!=null)for(const h of _.images)y.enqueue({type:"file",mediaType:he(h.image_url.url,"image/jpeg"),data:_e(h.image_url.url)})},flush(w){var y;if(a==="tool-calls")for(const S of i)S&&!S.sent&&(w.enqueue({type:"tool-call",toolCallId:(y=S.id)!=null?y:C(),toolName:S.function.name,input:se(S.function.arguments)?S.function.arguments:"{}"}),S.sent=!0);g&&w.enqueue({type:"reasoning-end",id:k||C()}),m&&w.enqueue({type:"text-end",id:f||C()});const b={usage:c};v!==void 0&&(b.provider=v),w.enqueue({type:"finish",finishReason:a,usage:d,providerMetadata:{openrouter:b}})}})),warnings:[],request:{body:s},response:{headers:u}}}};function cn({prompt:e,inputFormat:t,user:n="user",assistant:o="assistant"}){if(e.length===1&&e[0]&&e[0].role==="user"&&e[0].content.length===1&&e[0].content[0]&&e[0].content[0].type==="text")return{prompt:e[0].content[0].text};let s="";e[0]&&e[0].role==="system"&&(s+=`${e[0].content}
`,e=e.slice(1));for(const{role:l,content:u}of e)switch(l){case"system":throw new kt({message:`Unexpected system message in prompt: ${u}`,prompt:e});case"user":{const i=u.map(a=>{switch(a.type){case"text":return a.text;case"file":throw new q({functionality:"file attachments"});default:return""}}).join("");s+=`${n}:
${i}
`;break}case"assistant":{const i=u.map(a=>{switch(a.type){case"text":return a.text;case"tool-call":throw new q({functionality:"tool-call messages"});case"tool-result":throw new q({functionality:"tool-result messages"});case"reasoning":throw new q({functionality:"reasoning messages"});case"file":throw new q({functionality:"file attachments"});default:return""}}).join("");s+=`${o}:
${i}
`;break}case"tool":throw new q({functionality:"tool messages"})}return s+=`${o}:
`,{prompt:s}}var ye=r.union([r.object({id:r.string().optional(),model:r.string().optional(),choices:r.array(r.object({text:r.string(),reasoning:r.string().nullish().optional(),reasoning_details:ce.nullish(),finish_reason:r.string().nullish(),index:r.number().nullish(),logprobs:r.object({tokens:r.array(r.string()),token_logprobs:r.array(r.number()),top_logprobs:r.array(r.record(r.string(),r.number())).nullable()}).nullable().optional()})),usage:r.object({prompt_tokens:r.number(),prompt_tokens_details:r.object({cached_tokens:r.number()}).nullish(),completion_tokens:r.number(),completion_tokens_details:r.object({reasoning_tokens:r.number()}).nullish(),total_tokens:r.number(),cost:r.number().optional()}).nullish()}),pe]),at=class{constructor(e,t,n){this.specificationVersion="v2",this.provider="openrouter",this.supportedUrls={"image/*":[/^data:image\/[a-zA-Z]+;base64,/,/^https?:\/\/.+\.(jpg|jpeg|png|gif|webp)$/i],"text/*":[/^data:text\//,/^https?:\/\/.+$/],"application/*":[/^data:application\//,/^https?:\/\/.+$/]},this.defaultObjectGenerationMode=void 0,this.modelId=e,this.settings=t,this.config=n}getArgs({prompt:e,maxOutputTokens:t,temperature:n,topP:o,frequencyPenalty:s,presencePenalty:l,seed:u,responseFormat:i,topK:a,stopSequences:d,tools:c,toolChoice:m}){const{prompt:g}=cn({prompt:e,inputFormat:"prompt"});if(c?.length)throw new q({functionality:"tools"});if(m)throw new q({functionality:"toolChoice"});return x(x({model:this.modelId,models:this.settings.models,logit_bias:this.settings.logitBias,logprobs:typeof this.settings.logprobs=="number"?this.settings.logprobs:typeof this.settings.logprobs=="boolean"&&this.settings.logprobs?0:void 0,suffix:this.settings.suffix,user:this.settings.user,max_tokens:t,temperature:n,top_p:o,frequency_penalty:s,presence_penalty:l,seed:u,stop:d,response_format:i,top_k:a,prompt:g,include_reasoning:this.settings.includeReasoning,reasoning:this.settings.reasoning},this.config.extraBody),this.settings.extraBody)}async doGenerate(e){var t,n,o,s,l,u,i,a,d,c,m,g,f,k,p;const w=(e.providerOptions||{}).openrouter||{},y=x(x({},this.getArgs(e)),w),{value:b,responseHeaders:S}=await Q({url:this.config.url({path:"/completions",modelId:this.modelId}),headers:Z(this.config.headers(),e.headers),body:y,failedResponseHandler:X,successfulResponseHandler:et(ye),abortSignal:e.abortSignal,fetch:this.config.fetch});if("error"in b)throw new Error(`${b.error.message}`);const N=b.choices[0];if(!N)throw new Error("No choice in OpenRouter completion response");return{content:[{type:"text",text:(t=N.text)!=null?t:""}],finishReason:ee(N.finish_reason),usage:{inputTokens:(o=(n=b.usage)==null?void 0:n.prompt_tokens)!=null?o:0,outputTokens:(l=(s=b.usage)==null?void 0:s.completion_tokens)!=null?l:0,totalTokens:((i=(u=b.usage)==null?void 0:u.prompt_tokens)!=null?i:0)+((d=(a=b.usage)==null?void 0:a.completion_tokens)!=null?d:0),reasoningTokens:(g=(m=(c=b.usage)==null?void 0:c.completion_tokens_details)==null?void 0:m.reasoning_tokens)!=null?g:0,cachedInputTokens:(p=(k=(f=b.usage)==null?void 0:f.prompt_tokens_details)==null?void 0:k.cached_tokens)!=null?p:0},warnings:[],response:{headers:S}}}async doStream(e){const n=(e.providerOptions||{}).openrouter||{},o=x(x({},this.getArgs(e)),n),{value:s,responseHeaders:l}=await Q({url:this.config.url({path:"/completions",modelId:this.modelId}),headers:Z(this.config.headers(),e.headers),body:M(x({},o),{stream:!0,stream_options:this.config.compatibility==="strict"?{include_usage:!0}:void 0}),failedResponseHandler:X,successfulResponseHandler:Xe(ye),abortSignal:e.abortSignal,fetch:this.config.fetch});let u="other";const i={inputTokens:Number.NaN,outputTokens:Number.NaN,totalTokens:Number.NaN,reasoningTokens:Number.NaN,cachedInputTokens:Number.NaN},a={};return{stream:s.pipeThrough(new TransformStream({transform(d,c){var m,g;if(!d.success){u="error",c.enqueue({type:"error",error:d.error});return}const f=d.value;if("error"in f){u="error",c.enqueue({type:"error",error:f.error});return}if(f.usage!=null){if(i.inputTokens=f.usage.prompt_tokens,i.outputTokens=f.usage.completion_tokens,i.totalTokens=f.usage.prompt_tokens+f.usage.completion_tokens,a.promptTokens=f.usage.prompt_tokens,f.usage.prompt_tokens_details){const p=(m=f.usage.prompt_tokens_details.cached_tokens)!=null?m:0;i.cachedInputTokens=p,a.promptTokensDetails={cachedTokens:p}}if(a.completionTokens=f.usage.completion_tokens,f.usage.completion_tokens_details){const p=(g=f.usage.completion_tokens_details.reasoning_tokens)!=null?g:0;i.reasoningTokens=p,a.completionTokensDetails={reasoningTokens:p}}a.cost=f.usage.cost,a.totalTokens=f.usage.total_tokens}const k=f.choices[0];k?.finish_reason!=null&&(u=ee(k.finish_reason)),k?.text!=null&&c.enqueue({type:"text-delta",delta:k.text,id:C()})},flush(d){d.enqueue({type:"finish",finishReason:u,usage:i,providerMetadata:{openrouter:{usage:a}}})}})),response:{headers:l}}}},pn=class{constructor(e={}){var t,n;this.baseURL=(n=tt((t=e.baseURL)!=null?t:e.baseUrl))!=null?n:"https://openrouter.ai/api/v1",this.apiKey=e.apiKey,this.headers=e.headers}get baseConfig(){return{baseURL:this.baseURL,headers:()=>x({Authorization:`Bearer ${Ye({apiKey:this.apiKey,environmentVariableName:"OPENROUTER_API_KEY",description:"OpenRouter"})}`},this.headers)}}chat(e,t={}){return new st(e,t,M(x({provider:"openrouter.chat"},this.baseConfig),{compatibility:"strict",url:({path:n})=>`${this.baseURL}${n}`}))}completion(e,t={}){return new at(e,t,M(x({provider:"openrouter.completion"},this.baseConfig),{compatibility:"strict",url:({path:n})=>`${this.baseURL}${n}`}))}};function it(e={}){var t,n,o;const s=(n=tt((t=e.baseURL)!=null?t:e.baseUrl))!=null?n:"https://openrouter.ai/api/v1",l=(o=e.compatibility)!=null?o:"compatible",u=()=>x({Authorization:`Bearer ${Ye({apiKey:e.apiKey,environmentVariableName:"OPENROUTER_API_KEY",description:"OpenRouter"})}`},e.headers),i=(m,g={})=>new st(m,g,{provider:"openrouter.chat",url:({path:f})=>`${s}${f}`,headers:u,compatibility:l,fetch:e.fetch,extraBody:e.extraBody}),a=(m,g={})=>new at(m,g,{provider:"openrouter.completion",url:({path:f})=>`${s}${f}`,headers:u,compatibility:l,fetch:e.fetch,extraBody:e.extraBody}),d=(m,g)=>{if(new.target)throw new Error("The OpenRouter model function cannot be called with the new keyword.");return m==="openai/gpt-3.5-turbo-instruct"?a(m,g):i(m,g)},c=(m,g)=>d(m,g);return c.languageModel=d,c.chat=i,c.completion=a,c}var dn=it({compatibility:"strict"});exports.OpenRouter=pn;exports.createOpenRouter=it;exports.openrouter=dn;
;