@ax-llm/ax 23.0.10 → 23.0.12
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.
- package/index.cjs +2 -2
- package/index.cjs.map +1 -1
- package/index.global.js +2 -2
- package/index.global.js.map +1 -1
- package/index.js +19 -19
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/skills/ax-agent-context.md +1 -1
- package/skills/ax-agent-memory-skills.md +1 -1
- package/skills/ax-agent-observability.md +1 -1
- package/skills/ax-agent-optimize.md +1 -1
- package/skills/ax-agent-rlm.md +1 -1
- package/skills/ax-agent.md +1 -1
- package/skills/ax-ai.md +11 -1
- package/skills/ax-audio.md +1 -1
- package/skills/ax-flow.md +1 -1
- package/skills/ax-gen.md +5 -1
- package/skills/ax-gepa.md +1 -1
- package/skills/ax-llm.md +1 -1
- package/skills/ax-mcp.md +1 -1
- package/skills/ax-playbook.md +1 -1
- package/skills/ax-refine.md +1 -1
- package/skills/ax-signature.md +1 -1
package/index.cjs
CHANGED
|
@@ -365,7 +365,7 @@ Body:`,JSON.stringify(e,null,2),`
|
|
|
365
365
|
`),!h.body)throw new ln("Response body is null",d.href,e,{metrics:o},s);let y,A=0;if(typeof window<"u"&&typeof EventSource<"u")return new ReadableStream({start(F){let k=h.body.getReader(),O=new TextDecoder,$="",N=I=>{if(!I.trim())return!1;let _=I.split(`
|
|
366
366
|
`),S="",H="message";for(let L of _)L.startsWith("data: ")?S=L.slice(6):L.startsWith("event: ")&&(H=L.slice(7));if(!S)return!1;if(S==="[DONE]")return F.close(),!0;try{let L=JSON.parse(S);y=L,A++,o.streamChunks=A,o.lastChunkTime=Date.now(),F.enqueue(L),r.span?.addEvent("stream.chunk",{"stream.chunks":A,"stream.duration":Date.now()-o.startTime,"response.retries":o.retryCount,"sse.event.type":H})}catch(L){i&&console.warn("Skipping non-JSON SSE data:",S,L)}return!1};async function V(){try{for(;;){let{done:I,value:_}=await k.read();if(I){let H=!1;$.length>0&&(H=N($),$=""),H||F.close();break}$+=O.decode(_,{stream:!0});let S=$.split(`
|
|
367
367
|
|
|
368
|
-
`);$=S.pop()||"";for(let H of S)if(N(H))return}}catch(I){let _=I,S={...o,streamDuration:Date.now()-o.startTime};_.name==="AbortError"||_.message?.includes("aborted")?F.error(new wt(d.href,e,y,{streamMetrics:S},s)):F.error(new tt(_,d.href,e,"[ReadableStream - consumed during streaming]",{streamMetrics:S},s))}finally{k.releaseLock()}}V()}});let w=new TransformStream({transform(F,k){y=F,A++,o.streamChunks=A,o.lastChunkTime=Date.now(),k.enqueue(F),r.span?.addEvent("stream.chunk",{"stream.chunks":A,"stream.duration":Date.now()-o.startTime,"response.retries":o.retryCount})}}),v=!1;return new ReadableStream({start(F){let k=h.body.pipeThrough(new tw).pipeThrough(new va).pipeThrough(w).getReader();async function O(){try{for(;;){let{done:$,value:N}=await k.read();if($){v||(v=!0,F.close());break}if(v)break;F.enqueue(N)}}catch($){let N=$,V={...o,streamDuration:Date.now()-o.startTime};
|
|
368
|
+
`);$=S.pop()||"";for(let H of S)if(N(H))return}}catch(I){let _=I,S={...o,streamDuration:Date.now()-o.startTime};_.name==="AbortError"||_.message?.includes("aborted")?F.error(r.abortSignal?.aborted?new _e(d.href,r.abortSignal.reason,e,{streamMetrics:S},s):new wt(d.href,e,y,{streamMetrics:S},s)):F.error(new tt(_,d.href,e,"[ReadableStream - consumed during streaming]",{streamMetrics:S},s))}finally{k.releaseLock()}}V()}});let w=new TransformStream({transform(F,k){y=F,A++,o.streamChunks=A,o.lastChunkTime=Date.now(),k.enqueue(F),r.span?.addEvent("stream.chunk",{"stream.chunks":A,"stream.duration":Date.now()-o.startTime,"response.retries":o.retryCount})}}),v=!1;return new ReadableStream({start(F){let k=h.body.pipeThrough(new tw).pipeThrough(new va).pipeThrough(w).getReader();async function O(){try{for(;;){let{done:$,value:N}=await k.read();if($){v||(v=!0,F.close());break}if(v)break;F.enqueue(N)}}catch($){let N=$,V={...o,streamDuration:Date.now()-o.startTime};N.name==="AbortError"||N.message?.includes("aborted")?F.error(r.abortSignal?.aborted?new _e(d.href,r.abortSignal.reason,e,{streamMetrics:V},s):new wt(d.href,e,y,{streamMetrics:V},s)):N instanceof TypeError&&N.message.includes("cancelled")?F.error(new wt(d.href,e,y,{streamMetrics:V,cancelReason:"Stream cancelled by client"},s)):F.error(new tt(N,d.href,e,"[ReadableStream - consumed during streaming]",{streamMetrics:V},s))}finally{c&&clearTimeout(c),k.releaseLock()}}O()},cancel(){v=!0}})}catch(h){if(h instanceof Error&&h.name==="AbortError")throw r.abortSignal?.aborted?new _e(d.href,r.abortSignal.reason,e,{metrics:o},s):new ht(d.href,n||0,e,{metrics:o},s);let x=h;if(!(h instanceof ct)&&h instanceof Error&&(x=new tt(h,d.href,e,void 0,{metrics:o},s)),r.span?.isRecording()&&(r.span.recordException(x),r.span.setAttributes({"error.time":Date.now()-o.startTime,"error.retries":o.retryCount})),x instanceof tt&&Tf(x,void 0,m,t)){let f=kf(m,t);m++,If(o),r.span?.addEvent("retry",{attempt:m,delay:f,error:x.message,"metrics.startTime":o.startTime,"metrics.retryCount":o.retryCount,"metrics.lastRetryTime":o.lastRetryTime}),await new Promise(y=>setTimeout(y,f));continue}throw x instanceof ct&&(x.context.metrics=o),x}finally{c!==void 0&&clearTimeout(c)}}};var Hn=class extends Error{constructor({message:e}){super(e),this.name="AxAssertionError"}getFixingInstructions=()=>{let e=this.message.trim();return[{name:"error",title:"Follow these instructions",description:e+(e.endsWith(".")?"":".")}]};toString(){return`${this.name}: ${this.message}`}[Symbol.for("nodejs.util.inspect.custom")](e,t){return this.toString()}},un=class extends Error{constructor({message:e}){super(e),this.name="AxStreamingAssertionError"}getFixingInstructions=()=>{let e=this.message.trim();return[{name:"error",title:"Follow these instructions",description:e+(e.endsWith(".")?"":".")}]};toString(){return`${this.name}: ${this.message}`}[Symbol.for("nodejs.util.inspect.custom")](e,t){return this.toString()}},po=async(r,e)=>{for(let t of r){let{fn:n,message:o}=t,i=await n(e);if(!(i===void 0||i===!0))throw typeof i=="string"?new Hn({message:i}):o?new Hn({message:o}):new Error("Assertion failed without message")}},Ia=async(r,e,t,n=!1)=>{if(!e.currField||e.s===-1||r.length===0)return;let o=r.filter(s=>s.fieldName===e.currField?.name);if(o.length===0)return;let i=t.substring(e.s);for(let s of o){let{message:a,fn:c}=s,l=await c(i,n);if(!(l===void 0||l===!0))throw typeof l=="string"?new un({message:l}):new un({message:a??`Streaming assertion failed for field '${s.fieldName}'. Output was stopped.`})}};var ow=r=>typeof r=="object"&&r!==null,iw=r=>ow(r)&&(typeof r.data=="string"||typeof r.id=="string"),sw=r=>r.getOutputFields().filter(e=>e.type?.name==="audio"&&e.type?.isArray!==!0);async function ji(r,e,t,n){let o=sw(e);if(o.length===0)return t;let i=n?.speech,s;for(let a of o){let c=t[a.name];if(c==null||iw(c)||typeof c!="string")continue;let l={...i?.speak??{},...i?.fields?.[a.name]??{},text:c},u=await r.speak(l,n);s??={...t},s[a.name]={...u,transcript:u.transcript??c}}return s??t}var Pf=new WeakMap;function*Gu(r,e,t,n,o,i){let{name:s,isInternal:a}=e,{isArray:c,name:l}=e.type??{};if(a||c||l&&l!=="string"&&l!=="code")return;let u=o.streamedIndex[s]??0,d=u===0,p=(t<0?0:t)+u,m=r.substring(p,n);if(m.length===0)return;let g=m.replace(/\s+$/,"");o.currField?.type?.name==="code"&&(g=g.replace(/\s*```\s*$/,""));let h=d?g.trimStart():g;o.currField?.type?.name==="code"&&(h=h.replace(/^[ ]*```[a-zA-Z0-9]*\n\s*/,"")),h.length>0&&(yield{index:i,delta:{[s]:h}},o.streamedIndex[s]=u+g.length)}function*Gi(r,e,t,n,o){for(let s of n.prevFields??[]){let{field:a,s:c,e:l}=s;yield*Gu(e,a,c,l,n,o)}if(n.prevFields=void 0,n.inAssumedField&&!(r.getOutputFields().filter(c=>!c.isInternal).length===1)||!n.currField||n.currField.isInternal)return;yield*Gu(e,n.currField,n.s,e.length,n,o);let i=aw(r);for(let s of Object.keys(t)){let a=i.get(s);if(!a||a.isInternal)continue;let c=t[s];if(Array.isArray(c)){let u=n.streamedIndex?.[s]??0,d=c.slice(u);d&&d.length>0&&(yield{index:o,delta:{[s]:d}},n.streamedIndex[s]=u+d.length);continue}let l=typeof c=="string"?c:void 0;if(!n.streamedIndex[s])yield{index:o,delta:{[s]:c}},n.streamedIndex[s]=l?l.length:1;else if(l){let u=n.streamedIndex[s];if(l.length>u){let d=l.substring(u);yield{index:o,delta:{[s]:d}},n.streamedIndex[s]=l.length}}}}function aw(r){let e=r.hash(),t=Pf.get(r);if(t?.hash===e)return t.fieldMap;let n=new Map(r.getOutputFields().map(o=>[o.name,o]));return Pf.set(r,{hash:e,fieldMap:n}),n}function Kn(r,e){if(typeof r!="string")throw pu(e,String(r),"URL must be a string");try{new URL(r)}catch{throw pu(e,r,"Invalid URL format. Expected a valid URL like https://example.com")}}function Qt(r,e){if(typeof r!="string")return;let t=e.type;if(t){if(t.minLength!==void 0&&r.length<t.minLength)throw Yr(e,r,"minLength",t.minLength);if(t.maxLength!==void 0&&r.length>t.maxLength)throw Yr(e,r,"maxLength",t.maxLength);if(t.pattern!==void 0&&!new RegExp(t.pattern).test(r))throw Yr(e,r,"pattern",t.pattern);if(t.format==="email"&&!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(r))throw Yr(e,r,"format","valid email address");if(t.format==="uri"||t.format==="url")try{new URL(r)}catch{throw Yr(e,r,"format","valid URL")}}}function Xt(r,e){if(typeof r!="number")return;let t=e.type;if(t){if(t.minimum!==void 0&&r<t.minimum)throw mu(e,r,"minimum",t.minimum);if(t.maximum!==void 0&&r>t.maximum)throw mu(e,r,"maximum",t.maximum)}}var Mf=(r,e,t=!1)=>{switch(r.type?.name){case"code":return Ta(String(e));case"string":return typeof e=="string"?e:String(e);case"number":{let n=Number(e);if(Number.isNaN(n)){if(r.isOptional&&!t)return;throw new Error("Invalid number")}return n}case"boolean":{if(typeof e=="boolean")return e;let n=String(e).toLowerCase();if(n==="true")return!0;if(n==="false")return!1;if(r.isOptional&&!t)return;throw new Error("Invalid boolean")}case"date":return Wg(r,String(e),t);case"dateRange":return Zg(r,e,t);case"datetime":return ef(r,String(e),t);case"datetimeRange":return nf(r,e,t);case"class":{let n=String(e);if(r.type.options&&!r.type.options.includes(n)){if(r.isOptional)return;throw new Error(`Invalid class '${e}', expected one of the following: ${r.type.options.join(", ")}`)}return n}default:return e}};function mo(r,e){if(!e||e===""||/^(null|undefined)\s*$/i.test(e)){if(r.isOptional)return;throw Ti(r)}let t;if(r.type?.name==="json"&&!r.type?.isArray)try{let o=Ta(e);return t=JSON.parse(o),t}catch(o){if(r.schema)return Mi(r.schema,r.name,e);throw na(r,o.message)}if(r.type?.isArray)try{try{t=JSON.parse(e)}catch{t=Pg(e)}if(!Array.isArray(t))throw new Error("Expected an array")}catch(o){let i=o.message;if(i.includes("no valid list items found")||i==="Expected an array")t=[e];else throw hg(r,i)}try{if(Array.isArray(t)){for(let[o,i]of t.entries())if(i!==void 0){let s=typeof i=="string"?i.trim():i;if(typeof s=="string"&&(r.type?.name==="object"||r.type?.name==="json"))try{let a=Ta(s);s=JSON.parse(a)}catch{}t[o]=Mf(r,s,!0)}}else t=Mf(r,e)}catch(o){throw xg(r,e,o.message)}if(typeof t=="string"&&t==="")return;let n=r.type;if(n&&t!==void 0&&(n.name==="url"&&!n.isArray&&Kn(t,r),(n.name==="string"||n.name==="code")&&Qt(t,r),n.name==="number"&&Xt(t,r),n.isArray&&Array.isArray(t)))for(let o of t)o!==void 0&&(n.name==="url"?Kn(o,r):n.name==="string"||n.name==="code"?Qt(o,r):n.name==="number"&&Xt(o,r));return r.schema&&t!==void 0&&(t=Mi(r.schema,r.name,t)),t}var Ta=r=>{let t=/```([A-Za-z]*)\s*([\s\S]*?)\s*```/g.exec(r);return t?t.length===3?t[2]:t.length===2?t[1]:r:r};var Bi=(r,e,t,n)=>{let o=n?.strictMode??!1,i=n?.treatAllFieldsOptional??!1,s=n?.treatAllFieldsOptional??!1,a={extractedFields:[],streamedIndex:{},s:-1};Pa(r,e,a,t,{strictMode:o,skipEarlyFail:s,treatAllFieldsOptional:i}),Ma(r,e,a,t,{strictMode:o,treatAllFieldsOptional:i,forceFinalize:!0});for(let c of r.getOutputFields())c.isInternal&&delete e[c.name]},Bu=(r,e,t)=>{let n=[];for(let o of t)o&&!o.isOptional&&e[o.name]===void 0&&n.push(o);if(n.length>0)throw fg(n)},Pa=(r,e,t,n,{strictMode:o,skipEarlyFail:i}={})=>{let s=r.getOutputFields(),a;for(;;){let c=new Set;t.currFieldIndex!==void 0&&!t.inAssumedField&&c.add(t.currFieldIndex);let l=s.map((g,h)=>({field:g,index:h})).filter(({index:g})=>!c.has(g)),u,d,p=-1,m=0;for(let{index:g,field:h}of l){let f=`${(t.extractedFields.length===0?"":`
|
|
369
369
|
`)+h.title}:`,y=Mg(n,f,t.s);if(y===-2||y===-3||y===-4)return!0;y>=0&&(p===-1||y<p)&&(p=y,m=f.length,u=g,d=h)}if(p===-1){if(i)return;if(!o&&t.currField===void 0&&t.extractedFields.length===0&&s.length===1){t.inAssumedField=!0,t.currField=s[0],t.currFieldIndex=0,t.s=0,t.extractedFields.includes(s[0])||t.extractedFields.push(s[0]),t.streamedIndex[s[0].name]===void 0&&(t.streamedIndex[s[0].name]=0);return}if(o&&t.currField===void 0&&t.extractedFields.length===0){let g=s.find(h=>!h.isOptional);if(g)throw ta(g)}break}if(a&&d&&a.name!==d.name)throw ta(a);if(t.currField!==void 0&&t.inAssumedField&&(t.inAssumedField=!1,t.streamedIndex[t.currField.name]=0,t.currField=void 0),t.currField){let g=n.substring(t.s,p).trim(),h=mo(t.currField,g);h!==void 0&&(e[t.currField.name]=h),t.prevFields?t.prevFields?.push({field:t.currField,s:t.s,e:p}):t.prevFields=[{field:t.currField,s:t.s,e:p}]}t.s=p+m,d!==void 0&&u!==void 0&&(t.currField=d,t.currFieldIndex=u),d&&!t.extractedFields.includes(d)&&t.extractedFields.push(d),d&&t.streamedIndex[d.name]===void 0&&(t.streamedIndex[d.name]=0)}},Ma=(r,e,t,n,o)=>{let i=o?.strictMode??!1,s=o?.treatAllFieldsOptional??!1,a=o?.deferRequiredCheckForStreaming??!1,c=o?.forceFinalize??!1;if(t.currField){let l=n.length,u=r.getOutputFields();for(let m of u){if(m.name===t.currField.name)continue;let g=`
|
|
370
370
|
${m.title}:`,h=n.indexOf(g,t.s);h!==-1&&h<l&&(l=h)}let d=n.substring(t.s,l).trim(),p=mo(t.currField,d);p!==void 0&&(e[t.currField.name]=p)}if(i&&!t.currField&&t.extractedFields.length===0&&n.trim()){let u=r.getOutputFields().find(d=>!d.isOptional);if(u)throw ta(u)}if(cw(r,e,n),!s){let l=t.currField!==void 0||(t.extractedFields?.length??0)>0;i||c?Bu(t,e,r.getOutputFields()):l||Bu(t,e,r.getOutputFields())}},cw=(r,e,t)=>{let n=r.getOutputFields();if(n.length===1){let i=n[0];if(i){let s=`${i.title}:`,a=t.indexOf(s);if(a!==-1){let c=a+s.length,l=`
|
|
371
371
|
${i.title}:`,u=t.indexOf(l,c),d=t.substring(c,u===-1?t.length:u).trim();if(d)try{let p=mo(i,d);if(p!==void 0){e[i.name]=p;return}}catch{}}}}let o=t.split(`
|
|
@@ -1250,7 +1250,7 @@ ${e}
|
|
|
1250
1250
|
`,i.description&&(o+=` ${i.description}
|
|
1251
1251
|
`)}),o+=`${e}
|
|
1252
1252
|
`;break}default:o=JSON.stringify(n,null,2)}r(o)}};var Te={LLM_SYSTEM:"gen_ai.system",LLM_OPERATION_NAME:"gen_ai.operation.name",LLM_REQUEST_MODEL:"gen_ai.request.model",LLM_REQUEST_MAX_TOKENS:"gen_ai.request.max_tokens",LLM_REQUEST_TEMPERATURE:"gen_ai.request.temperature",LLM_REQUEST_TOP_K:"gen_ai.request.top_k",LLM_REQUEST_FREQUENCY_PENALTY:"gen_ai.request.frequency_penalty",LLM_REQUEST_PRESENCE_PENALTY:"gen_ai.request.presence_penalty",LLM_REQUEST_STOP_SEQUENCES:"gen_ai.request.stop_sequences",LLM_REQUEST_LLM_IS_STREAMING:"gen_ai.request.llm_is_streaming",LLM_REQUEST_TOP_P:"gen_ai.request.top_p",LLM_RESPONSE_ID:"gen_ai.response.id",LLM_RESPONSE_MODEL:"gen_ai.response.model",LLM_CONVERSATION_ID:"gen_ai.conversation.id",LLM_USAGE_INPUT_TOKENS:"gen_ai.usage.input_tokens",LLM_USAGE_OUTPUT_TOKENS:"gen_ai.usage.output_tokens",LLM_USAGE_TOTAL_TOKENS:"gen_ai.usage.total_tokens",LLM_USAGE_THOUGHTS_TOKENS:"gen_ai.usage.thoughts_tokens",AX_SESSION_ID:"ax.session.id",AX_PROVIDER_REQUEST_ID:"ax.provider.request_id",AX_PROVIDER_SESSION_ID:"ax.provider.session_id"},nn={GEN_AI_USER_MESSAGE:"gen_ai.user.message",GEN_AI_SYSTEM_MESSAGE:"gen_ai.system.message",GEN_AI_ASSISTANT_MESSAGE:"gen_ai.assistant.message",GEN_AI_TOOL_MESSAGE:"gen_ai.tool.message",GEN_AI_CHOICE:"gen_ai.choice",GEN_AI_USAGE:"gen_ai.usage"};Pn();var Ip=class{buffer;doneCallback;transformFn;constructor(e,t){this.transformFn=e,this.doneCallback=t,this.buffer=t?[]:void 0}async transform(e,t){let n=this.transformFn(e);n&&(t.enqueue(n),this.buffer?.push(n))}async flush(e){await this.doneCallback?.(this.buffer??[]),e.terminate()}},Fc=class extends TransformStream{constructor(e,t){super(new Ip(e,t))}};var bs=new Map;function CI(r){return`${r.providerName}:${r.model}:${r.contentHash}`}function WA(r,e){if(!r?.name||!r.expiresAt)return;let t=Date.parse(r.expiresAt);return Number.isFinite(t)&&t>e?t:void 0}function bI(r){if(!(r instanceof Qe)||r.status!==400&&r.status!==404)return!1;let e=(JSON.stringify(r.responseBody)??"").toLowerCase(),t=e.includes("cachedcontent")||e.includes("cached content")||e.includes("cachedcontents/"),n=e.includes("cache")&&(e.includes("expired")||e.includes("not found")||e.includes("does not exist")||e.includes("invalid"));return t||n}function Pp(r){return Array.isArray(r)?r.map(e=>Pp(e)):r&&typeof r=="object"?Object.fromEntries(Object.entries(r).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,Pp(t)])):r}var RI=["x-request-id","request-id","x-requestid","x-ms-request-id","x-goog-request-id","x-amzn-requestid","x-amz-request-id"],wI=["openai-session-id","anthropic-session-id","x-session-id"];function JA(r,e){for(let t of e){let n=r.get(t);if(n)return n}}function _c(r,e){if(!r&&!e)return;let t={};for(let n of[r,e])if(n)for(let[o,i]of Object.entries(n))t[o]={...t[o]??{},...i};return t}function YA(r,e){let t=JA(r,RI),n=JA(r,wI),o=t||n?{[e]:{...t?{requestId:t}:{},...n?{sessionId:n}:{}}}:void 0;return{...t?{remoteRequestId:t}:{},...n?{remoteSessionId:n}:{},...o?{providerMetadata:o}:{}}}function QA(r,e){return{remoteRequestId:e.remoteRequestId??r.remoteRequestId,remoteSessionId:e.remoteSessionId??r.remoteSessionId,providerMetadata:_c(r.providerMetadata,e.providerMetadata)}}function Tp(r,e,t){r.sessionId=e,t.remoteRequestId&&!r.remoteRequestId&&(r.remoteRequestId=t.remoteRequestId),t.remoteSessionId&&(r.remoteSessionId??=t.remoteSessionId),r.providerMetadata=_c(r.providerMetadata,t.providerMetadata)}function No(r,e){if(!r?.isRecording())return;let t=e instanceof Error?e:new Error(String(e));r.recordException(t),r.setStatus({code:er.SpanStatusCode.ERROR,message:t.message})}function ZA(r,e){let t={},n=r.remoteSessionId??r.sessionId;r.remoteId&&(t[Te.LLM_RESPONSE_ID]=r.remoteId),r.modelUsage?.model&&(t[Te.LLM_RESPONSE_MODEL]=r.modelUsage.model),n&&(t[Te.LLM_CONVERSATION_ID]=n),r.sessionId&&(t[Te.AX_SESSION_ID]=r.sessionId),r.remoteRequestId&&(t[Te.AX_PROVIDER_REQUEST_ID]=r.remoteRequestId),r.remoteSessionId&&(t[Te.AX_PROVIDER_SESSION_ID]=r.remoteSessionId),Object.keys(t).length>0&&e.setAttributes(t)}function Mp(r){return JSON.stringify(Pp(r))}function eC(r){return typeof r=="string"?r:Mp(r)}function vI(r){return r.functions?.some(e=>e.cache)??!1}function SI(r){if(vI(r))return{functions:r.functions?.map(({cache:e,...t})=>t),functionCall:r.functionCall}}function kI(r,e){e.type==="text"?r.update(`text:${e.text}`):e.type==="image"?r.update(`image:${e.mimeType}:${e.image.slice(0,100)}`):e.type==="audio"?r.update(`audio:${e.format}:${e.data.slice(0,100)}`):e.type==="file"&&("fileUri"in e?r.update(`file:${e.mimeType}:${e.fileUri}`):r.update(`file:${e.mimeType}:${e.data.slice(0,100)}`))}function II(r,e){let t=Tt("sha256"),{chatPrompt:n}=r,o=-1;for(let i=n.length-1;i>=0;i--){let s=n[i];if("cache"in s&&s.cache){o=i;break}}for(let i=0;i<n.length;i++){let s=n[i];if(s.role==="system"){t.update(`system:${s.content}`);continue}if(o>=0&&i<=o)if(s.role==="user"){if(typeof s.content=="string")t.update(`user:${s.content}`);else if(Array.isArray(s.content))for(let a of s.content)kI(t,a)}else if(s.role==="assistant"){if(s.content&&t.update(`assistant:${s.content}`),s.functionCalls)for(let a of s.functionCalls)t.update(`assistant_function:${a.function.name}:${eC(a.function.params)}`)}else s.role==="function"&&t.update(`function:${s.functionId}:${s.result}`)}return e&&t.update(`tools:${Mp(e)}`),t.digest("hex")}var Ue=()=>structuredClone({temperature:0}),kt=()=>structuredClone({temperature:.4,frequencyPenalty:.2}),TI=()=>{let r={};return e=>{let t={},n=!1;for(let[o,i]of Object.entries(e)){if(typeof i!="number")continue;let s=r[o]??0,a=Math.max(0,i-s);i>s&&(r[o]=i),a>0&&(t[o]=a,n=!0)}return n?t:void 0}},St=class{constructor(e,{name:t,apiURL:n,headers:o,modelInfo:i,defaults:s,options:a={},supportFor:c,models:l}){this.aiImpl=e;this.name=t,this.apiURL=n||"",this.headers=o,this.supportFor=c,this.modelInfo=i,this.models=l,this.id=qe();let u=this.getModel(s.model)??s.model,d=this.getEmbedModel(s.embedModel)??s.embedModel;if(this.defaults={model:u,embedModel:d},!s.model||typeof s.model!="string"||s.model==="")throw new Error("No model defined");this.setOptions(a),l&&MI(l)}#t;#e=!1;rt;fetch;tracer;meter;timeout;excludeContentFromTrace;models;abortSignal;logger;corsProxy;retry;customLabels;usageContext;contextCache;beta;includeRequestBodyInErrors;modelInfo;modelUsage;embedModelUsage;defaults;lastUsedModelConfig;lastUsedChatModel;lastUsedEmbedModel;apiURL;name;id;headers;supportFor;metrics={latency:{chat:{mean:0,p95:0,p99:0,samples:[]},embed:{mean:0,p95:0,p99:0,samples:[]}},errors:{chat:{count:0,rate:0,total:0},embed:{count:0,rate:0,total:0}}};getEffectiveDebug(e){return e?.debug??this.#t??fe.debug??!1}getEffectiveTracer(e){return e?.tracer??this.tracer??fe.tracer}getEffectiveMeter(e){return e?.meter??this.meter??fe.meter}getEffectiveLogger(e){return e?.logger??this.logger??fe.logger??HA}getEffectiveAbortSignal(e){return Ye(e?.abortSignal,Ye(this.abortSignal,fe.abortSignal))}getMetricsInstruments(e){return Gm(this.getEffectiveMeter(e))}setName(e){this.name=e}getId(){return this.id}setAPIURL(e){this.apiURL=e}setHeaders(e){this.headers=e}get debug(){return this.getEffectiveDebug()}setOptions(e){this.#t=e.debug,this.#e=e.verbose??!1,this.rt=e.rateLimiter,this.fetch=e.fetch,this.timeout=e.timeout,this.tracer=e.tracer,this.meter=e.meter,this.excludeContentFromTrace=e.excludeContentFromTrace,this.abortSignal=e.abortSignal,this.logger=e.logger,this.corsProxy=e.corsProxy,this.retry=e.retry,this.customLabels=e.customLabels,this.usageContext=e.usageContext?{...e.usageContext,...e.usageContext.attributes?{attributes:{...e.usageContext.attributes}}:{}}:void 0,this.contextCache=e.contextCache,this.beta=e.beta,this.includeRequestBodyInErrors=e.includeRequestBodyInErrors}getOptions(){return{debug:this.getEffectiveDebug(),verbose:this.#e,rateLimiter:this.rt,fetch:this.fetch,tracer:this.getEffectiveTracer(),meter:this.getEffectiveMeter(),timeout:this.timeout,excludeContentFromTrace:this.excludeContentFromTrace,abortSignal:this.getEffectiveAbortSignal(),logger:this.getEffectiveLogger(),corsProxy:this.corsProxy,retry:this.retry,customLabels:this.getMergedCustomLabels(),usageContext:this.usageContext?{...this.usageContext,...this.usageContext.attributes?{attributes:{...this.usageContext.attributes}}:{}}:void 0,contextCache:this.contextCache,beta:this.beta,includeRequestBodyInErrors:this.includeRequestBodyInErrors}}getLogger(){return this.getEffectiveLogger()}getMergedCustomLabels(e){return ur(fe.customLabels,this.customLabels,e)}getMergedUsageContext(e){return ao(this.usageContext,e?.usageContext)}getModelList(){let e=[];for(let t of this.models??[])t.isInternal||("model"in t&&t.model&&e.push({key:t.key,description:t.description,model:t.model}),"embedModel"in t&&t.embedModel&&e.push({key:t.key,description:t.description,embedModel:t.embedModel}));return e}getName(){return this.name}getFeatures(e){return typeof this.supportFor=="function"?this.supportFor(e??this.defaults.model):this.supportFor}getLastUsedChatModel(){return this.lastUsedChatModel}getLastUsedEmbedModel(){return this.lastUsedEmbedModel}getLastUsedModelConfig(){return this.lastUsedModelConfig}async transcribe(e,t){let n=this.aiImpl;if(n.transcribe)return await n.transcribe(e,{...this.getOptions(),...t??{}});throw new xt("Audio transcription",this.name,!1)}async speak(e,t){let n=this.aiImpl;if(n.speak)return await n.speak(e,{...this.getOptions(),...t??{}});throw new xt("Audio speech",this.name,!1)}calculatePercentile(e,t){if(e.length===0)return 0;let n=[...e].sort((i,s)=>i-s),o=Math.ceil(t/100*n.length)-1;return n[o]??0}updateLatencyMetrics(e,t,n){let o=this.metrics.latency[e];o.samples.push(t),o.samples.length>1e3&&o.samples.shift(),o.mean=o.samples.reduce((s,a)=>s+a,0)/o.samples.length,o.p95=this.calculatePercentile(o.samples,95),o.p99=this.calculatePercentile(o.samples,99);let i=this.getMetricsInstruments(n);if(i){let s=e==="chat"?this.lastUsedChatModel:this.lastUsedEmbedModel,a=this.getMergedCustomLabels(n?.customLabels);Bm(i,e,t,this.name,s,a),zm(i,e,o.mean,o.p95,o.p99,this.name,s,a)}}updateErrorMetrics(e,t,n){let o=this.metrics.errors[e];o.total++,t&&o.count++,o.rate=o.count/o.total;let i=this.getMetricsInstruments(n);if(i){let s=e==="chat"?this.lastUsedChatModel:this.lastUsedEmbedModel,a=this.getMergedCustomLabels(n?.customLabels);Hm(i,e,this.name,s,a),t&&qm(i,e,this.name,s,a),Vm(i,e,o.rate,this.name,s,a)}}recordEstimatedCost(e,t,n,o){if(t<=0)return;let i=this.getMetricsInstruments(o);if(!i)return;let s=this.getMergedCustomLabels(o?.customLabels);Ym(i,e,t,this.name,n,s)}recordTokenUsage(e,t,n){let o=this.getMetricsInstruments(n);if(!o||!t)return;let{promptTokens:i,completionTokens:s,totalTokens:a,thoughtsTokens:c,cacheReadTokens:l,cacheCreationTokens:u}=t,d=this.getMergedCustomLabels(n?.customLabels);i&&ki(o,"input",i,this.name,e,d),s&&ki(o,"output",s,this.name,e,d),a&&ki(o,"total",a,this.name,e,d),c&&ki(o,"thoughts",c,this.name,e,d),l&&cu(o,"read",l,this.name,e,d),u&&cu(o,"write",u,this.name,e,d)}calculateRequestSize(e){try{return new TextEncoder().encode(JSON.stringify(e)).length}catch{return 0}}calculateResponseSize(e){try{return new TextEncoder().encode(JSON.stringify(e)).length}catch{return 0}}detectMultimodalContent(e){let t=!1,n=!1;if(e.chatPrompt&&Array.isArray(e.chatPrompt)){for(let o of e.chatPrompt)if(o.role==="user"&&Array.isArray(o.content))for(let i of o.content)i.type==="image"?t=!0:i.type==="audio"&&(n=!0)}return{hasImages:t,hasAudio:n}}calculateContextWindowUsage(e,t){if(!t?.tokens?.promptTokens)return 0;let n=ut({model:e,modelInfo:this.modelInfo});return n?.contextWindow?t.tokens.promptTokens/n.contextWindow:0}estimateCostByName(e,t){if(!t?.tokens)return 0;let n=ut({model:e,modelInfo:this.modelInfo});if(!n||!n.promptTokenCostPer1M&&!n.completionTokenCostPer1M)return 0;let{promptTokens:o=0,completionTokens:i=0,thoughtsTokens:s=0,cacheReadTokens:a=0,cacheCreationTokens:c=0,speed:l}=t.tokens,u=o+a+c,d=n.longContextThreshold!==void 0&&u>n.longContextThreshold,p=l==="fast",m=p?n.fastPromptTokenCostPer1M??n.promptTokenCostPer1M??0:d?n.longContextPromptTokenCostPer1M??n.promptTokenCostPer1M??0:n.promptTokenCostPer1M??0,g=p?n.fastCompletionTokenCostPer1M??n.completionTokenCostPer1M??0:d?n.longContextCompletionTokenCostPer1M??n.completionTokenCostPer1M??0:n.completionTokenCostPer1M??0,h=p?n.fastCacheReadTokenCostPer1M??n.cacheReadTokenCostPer1M??m:d?n.longContextCacheReadTokenCostPer1M??n.cacheReadTokenCostPer1M??m:n.cacheReadTokenCostPer1M??m,x=p?n.fastCacheWriteTokenCostPer1M??n.cacheWriteTokenCostPer1M??m:n.cacheWriteTokenCostPer1M??m,f=i+s;return o*m/1e6+f*g/1e6+a*h/1e6+c*x/1e6}recordFunctionCallMetrics(e,t,n){let o=this.getMetricsInstruments(n);if(!(!o||!e))for(let i of e)i&&typeof i=="object"&&"function"in i&&i.function&&typeof i.function=="object"&&"name"in i.function&&Wm(o,i.function.name,void 0,this.name,t,this.getMergedCustomLabels(n?.customLabels))}recordTimeoutMetric(e,t){let n=this.getMetricsInstruments(t);if(n){let o=e==="chat"?this.lastUsedChatModel:this.lastUsedEmbedModel;Zm(n,e,this.name,o,this.getMergedCustomLabels(t?.customLabels))}}recordAbortMetric(e,t){let n=this.getMetricsInstruments(t);if(n){let o=e==="chat"?this.lastUsedChatModel:this.lastUsedEmbedModel;eg(n,e,this.name,o,this.getMergedCustomLabels(t?.customLabels))}}recordChatMetrics(e,t,n){let o=this.getMetricsInstruments(t);if(!o)return;let i=this.lastUsedChatModel,s=this.lastUsedModelConfig,a=this.getMergedCustomLabels(t?.customLabels),c=s?.stream??!1;Km(o,"chat",c,this.name,i,a);let{hasImages:l,hasAudio:u}=this.detectMultimodalContent(e);ng(o,l,u,this.name,i,a);let d=Je(e.chatPrompt);Qm(o,d,this.name,i,a),Jm(o,s?.temperature,s?.maxTokens,this.name,i,a),t?.thinkingTokenBudget&&this.modelUsage?.tokens?.thoughtsTokens&&tg(o,this.modelUsage.tokens.thoughtsTokens,this.name,i,a);let p=this.calculateRequestSize(e);if(su(o,"chat",p,this.name,i,a),n&&!c){let m=n,g=this.calculateResponseSize(m);if(au(o,"chat",g,this.name,i,a),m.results)for(let x of m.results)x.functionCalls&&this.recordFunctionCallMetrics(x.functionCalls,this.lastUsedChatModel,t);let h=this.calculateContextWindowUsage(this.lastUsedChatModel,m.modelUsage);h>0&&Xm(o,h,this.name,i,a)}}recordEmbedMetrics(e,t,n){let o=this.getMetricsInstruments(n);if(!o)return;let i=this.lastUsedEmbedModel,s=this.getMergedCustomLabels(n?.customLabels),a=this.calculateRequestSize(e);su(o,"embed",a,this.name,i,s);let c=this.calculateResponseSize(t);au(o,"embed",c,this.name,i,s)}getMetrics(){return structuredClone(this.metrics)}getEstimatedCost(e){return e?this.estimateCostByName(e.model,e):0}async chat(e,t){let n=performance.now(),o=!1,i,s=this.getModelByKey(e.model),a=s?s.thinkingTokenBudget:void 0,c={...this.beta!==void 0?{beta:this.beta}:void 0,...s?{thinkingTokenBudget:a,showThoughts:s.showThoughts,stream:s.stream,debug:s.debug,useExpensiveModel:s.useExpensiveModel,beta:s.beta}:void 0,...Object.fromEntries(Object.entries(t??{}).filter(([,l])=>l!==void 0))};try{return i=await this._chat1(e,c),i}catch(l){throw o=!0,l instanceof Error&&(l.message.includes("timeout")||l.name==="TimeoutError"?this.recordTimeoutMetric("chat",c):(l.message.includes("abort")||l.name==="AbortError")&&this.recordAbortMetric("chat",c)),l}finally{let l=performance.now()-n;this.updateLatencyMetrics("chat",l,c),this.updateErrorMetrics("chat",o,c),o||this.recordChatMetrics(e,c,i)}}async _chat1(e,t){let n=this.getModel(e.model)??e.model??this.defaults.model;if(Array.isArray(e.chatPrompt))for(let l of e.chatPrompt)uo(l);let o=this.getModelByKey(e.model),i={...this.aiImpl.getModelConfig(),...o?o.modelConfig:void 0,...e.modelConfig},s=ut({model:n,modelInfo:this.modelInfo});if(s?.notSupported?.temperature&&"temperature"in i&&delete i.temperature,s?.notSupported?.topP&&"topP"in i&&delete i.topP,s?.isExpensive&&t?.useExpensiveModel!=="yes")throw new Error(`Model ${n} is marked as expensive and requires explicit confirmation. Set useExpensiveModel: "yes" to proceed.`);i.stream=(t?.stream!==void 0?t.stream:i.stream)??!0,this.getFeatures(n).streaming||(i.stream=!1);let c=this.getEffectiveTracer(t);return c?await c.startActiveSpan("AI Chat Request",{kind:er.SpanKind.SERVER,attributes:{[Te.LLM_SYSTEM]:this.name,[Te.LLM_OPERATION_NAME]:"chat",[Te.LLM_REQUEST_MODEL]:n,[Te.LLM_REQUEST_MAX_TOKENS]:i.maxTokens??"Not set",[Te.LLM_REQUEST_TEMPERATURE]:i.temperature,[Te.LLM_REQUEST_TOP_P]:i.topP??"Not set",[Te.LLM_REQUEST_TOP_K]:i.topK??"Not set",[Te.LLM_REQUEST_FREQUENCY_PENALTY]:i.frequencyPenalty??"Not set",[Te.LLM_REQUEST_PRESENCE_PENALTY]:i.presencePenalty??"Not set",[Te.LLM_REQUEST_STOP_SEQUENCES]:i.stopSequences?.join(", ")??"Not set",[Te.LLM_REQUEST_LLM_IS_STREAMING]:i.stream??"Not set",...t?.sessionId?{[Te.LLM_CONVERSATION_ID]:t.sessionId,[Te.AX_SESSION_ID]:t.sessionId}:{}}},t?.traceContext??er.context.active(),async l=>await this._chat2(n,i,e,t,l)):await this._chat2(n,i,e,t)}cleanupFunctionSchema(e){let t={...e};if(t.parameters){let n={...t.parameters};Array.isArray(n.required)&&n.required.length===0&&delete n.required,n.properties&&Object.keys(n.properties).length===0&&delete n.properties,Object.keys(n).length===0||Object.keys(n).length===1&&n.type==="object"?delete t.parameters:t.parameters=n}return t}async retryTransientStreamStart(e,t,n){let o={...ju,...n},i=this.aiImpl.classifyStreamErrorStatus,s=e,a=0;for(;;){let c=s.getReader(),l=await c.read();if(!l.done){let d=i?.(l.value);if(d!==void 0&&o.retryableStatusCodes.includes(d)&&a<o.maxRetries){await c.cancel().catch(()=>{}),a++;let p=Math.min(o.initialDelayMs*o.backoffFactor**(a-1),o.maxDelayMs);await new Promise(g=>setTimeout(g,p));let m=await t();if(!(m instanceof ReadableStream))return m;s=m;continue}}let u=!1;return new ReadableStream({async pull(d){if(!u){if(u=!0,l.done){d.close();return}d.enqueue(l.value);return}try{let{done:p,value:m}=await c.read();if(p){d.close();return}d.enqueue(m)}catch(p){d.error(p)}},cancel(d){return c.cancel(d)}})}}async _chat2(e,t,n,o,i){if(!this.aiImpl.createChatReq)throw new Error("createChatReq not implemented");let s=this.getEffectiveDebug(o),a=o?.verbose??this.#e,c=this.getEffectiveLogger(o),l=this.getEffectiveAbortSignal(o),u=o?.excludeContentFromTrace??this.excludeContentFromTrace,d;n.functions&&n.functions.length>0&&(d=n.functions.map($=>this.cleanupFunctionSchema($)));let p={...n,model:e,functions:d,modelConfig:t};this.lastUsedChatModel=e,this.lastUsedModelConfig=t,s&&Em(p.chatPrompt,o?.stepIndex??0,c,o?.debugHideSystemPrompt);let m=this.getFeatures(e).functions,g=o?.functionCallMode??"auto",x=g==="prompt"||g==="auto"&&!m?{...p,chatPrompt:p.chatPrompt.map($=>{if($.role==="assistant"){let{content:N,name:V,cache:I}=$;return{role:"assistant",content:N,name:V,cache:I}}return $.role==="function"?{role:"user",content:$.result}:$}),functions:[]}:p,f=await this.handleContextCaching(e,x,o,i),y={},A=$=>{y=QA(y,YA($.headers,this.name))},b=async($,N)=>ka({name:$.name,url:$.url??this.apiURL,method:$.method,put:$.put,localCall:$.localCall,headers:await this.buildHeaders($.headers),stream:t.stream,timeout:this.timeout,verbose:a,fetch:this.fetch,span:i,abortSignal:l,corsProxy:this.corsProxy,onResponseMetadata:A,retry:o?.retry??this.retry,includeRequestBodyInErrors:o?.includeRequestBodyInErrors??this.includeRequestBodyInErrors},N),w=async()=>{let[$,N]=await this.aiImpl.createChatReq(x,o);return b($,N)},v=async()=>{if(i?.isRecording()&&PI(n,i,u),!f?.preparedRequest)return w();let{apiConfig:$,request:N}=f.preparedRequest;try{return await b($,N)}catch(V){if(!f.managedCache||!bI(V))throw V;return await this.invalidateManagedContextCache(f.managedCache,"provider_rejected",i,V.status),i?.addEvent("context_cache.fallback",{reason:"provider_rejected",mode:"uncached",status:V.status}),w()}},F=o?.rateLimiter??this.rt,k=()=>F?F(v,{modelUsage:this.modelUsage}):v(),O;try{O=await k(),t.stream&&O instanceof ReadableStream&&this.aiImpl.classifyStreamErrorStatus&&(O=await this.retryTransientStreamStart(O,k,o?.retry??this.retry))}catch($){throw No(i,$),i?.isRecording()&&i.end(),$}if(t.stream){if(!this.aiImpl.createChatStreamResp)throw new Error("createChatStreamResp not implemented");let $=this.aiImpl.createChatStreamResp.bind(this),N=TI(),V=0,I,_,S,H,L=C=>T=>{try{let E=$(T,C);if(E.remoteId?I=E.remoteId:I&&(E.remoteId=I),E.remoteRequestId?_=E.remoteRequestId:_&&(E.remoteRequestId=_),E.remoteSessionId?S=E.remoteSessionId:S&&(E.remoteSessionId=S),H=_c(H,E.providerMetadata),H&&(E.providerMetadata=H),Tp(E,o?.sessionId,y),E.remoteRequestId&&(_=E.remoteRequestId),E.remoteSessionId&&(S=E.remoteSessionId),H=_c(H,E.providerMetadata),!E.modelUsage){let D=this.aiImpl.getTokenUsage();D&&(E.modelUsage={ai:this.name,model:e,tokens:D})}if(this.modelUsage=E.modelUsage,E.modelUsage?.tokens){let D=N(E.modelUsage.tokens);if(D){this.recordTokenUsage(E.modelUsage.model,D,o);let j=this.estimateCostByName(E.modelUsage.model,E.modelUsage),J=Math.max(0,j-V);j>V&&(V=j),this.recordEstimatedCost("chat",J,E.modelUsage.model,o)}}return i?.isRecording()&&XA(E,i,u),E}catch(E){throw No(i,E),i?.isRecording()&&i.end(),E}},W=async C=>{for(let T=C.length-1;T>=0;T--){let E=C[T];if(E?.modelUsage?.tokens){co("chat",E,this.getMergedUsageContext(o),!0);break}}i?.isRecording()&&i.end(),s&&Fm(C,c)};if(typeof window<"u"){let C=O,T={},E=[];return new ReadableStream({start:D=>{let j=C.getReader(),J=()=>{try{j.cancel().catch(()=>{})}catch{}try{this.recordAbortMetric("chat",o)}catch{}try{i?.isRecording()&&i.end()}catch{}try{D.error(new DOMException("Aborted","AbortError"))}catch{D.error(new Error("Aborted"))}};if(l){if(l.aborted){J();return}l.addEventListener("abort",J,{once:!0})}async function z(){try{for(;;){let{done:B,value:K}=await j.read();if(B){W&&await W(E),D.close();break}let ie=L(T)(K);ie&&(E.push(ie),D.enqueue(ie))}}catch(B){if(No(i,B),D.error(B),i?.isRecording())try{i.end()}catch{}}finally{if(j.releaseLock(),l)try{l.removeEventListener("abort",J)}catch{}}}z()}})}return O.pipeThrough(new Fc(L({}),W))}if(!this.aiImpl.createChatResp)throw new Error("createChatResp not implemented");try{let $=this.aiImpl.createChatResp(O);if(Tp($,o?.sessionId,y),!$.modelUsage){let N=this.aiImpl.getTokenUsage();N&&($.modelUsage={ai:this.name,model:e,tokens:N})}return $.modelUsage&&(this.modelUsage=$.modelUsage,this.recordTokenUsage($.modelUsage.model,$.modelUsage.tokens,o),this.recordEstimatedCost("chat",this.estimateCostByName($.modelUsage.model,$.modelUsage),$.modelUsage.model,o)),co("chat",$,this.getMergedUsageContext(o),!1),i?.isRecording()&&(XA($,i,u),i.end()),s&&Om($,c),$}catch($){throw No(i,$),i?.isRecording()&&i.end(),$}}async embed(e,t){let n=performance.now(),o=!1,i,s=this.getModelByKey(e.embedModel),a={...this.beta!==void 0?{beta:this.beta}:void 0,...s?{thinkingTokenBudget:s.thinkingTokenBudget,showThoughts:s.showThoughts,stream:s.stream,debug:s.debug,useExpensiveModel:s.useExpensiveModel,beta:s.beta}:void 0,...t};try{return i=await this._embed1(e,a),i}catch(c){throw o=!0,c instanceof Error&&(c.message.includes("timeout")||c.name==="TimeoutError"?this.recordTimeoutMetric("embed",a):(c.message.includes("abort")||c.name==="AbortError")&&this.recordAbortMetric("embed",a)),c}finally{let c=performance.now()-n;this.updateLatencyMetrics("embed",c,a),this.updateErrorMetrics("embed",o,a),!o&&i&&this.recordEmbedMetrics(e,i,a)}}async _embed1(e,t){let n=this.getEmbedModel(e.embedModel)??e.embedModel??this.defaults.embedModel;if(!n)throw new Error("No embed model defined");let o=this.getEffectiveTracer(t);return o?await o.startActiveSpan("AI Embed Request",{kind:er.SpanKind.SERVER,attributes:{[Te.LLM_SYSTEM]:this.name,[Te.LLM_OPERATION_NAME]:"embeddings",[Te.LLM_REQUEST_MODEL]:n,...t?.sessionId?{[Te.LLM_CONVERSATION_ID]:t.sessionId,[Te.AX_SESSION_ID]:t.sessionId}:{}}},t?.traceContext??er.context.active(),async i=>await this._embed2(n,e,t,i)):await this._embed2(n,e,t)}async _embed2(e,t,n,o){if(!this.aiImpl.createEmbedReq)throw new Error("createEmbedReq not implemented");if(!this.aiImpl.createEmbedResp)throw new Error("createEmbedResp not implemented");let i=this.aiImpl.createEmbedReq.bind(this.aiImpl),s=this.getEffectiveDebug(n),a=n?.verbose??this.#e,c=this.getEffectiveLogger(n),l=this.getEffectiveAbortSignal(n),u={...t,embedModel:e};this.lastUsedEmbedModel=e,s&&$m(u.texts??[],e,c);let d={},p=f=>{d=QA(d,YA(f.headers,this.name))},m=async()=>{let[f,y]=await i(u,n);return await ka({name:f.name,url:f.url??this.apiURL,method:f.method,put:f.put,localCall:f.localCall,headers:await this.buildHeaders(f.headers),verbose:a,fetch:this.fetch,timeout:this.timeout,span:o,abortSignal:l,corsProxy:this.corsProxy,onResponseMetadata:p,retry:n?.retry??this.retry,includeRequestBodyInErrors:n?.includeRequestBodyInErrors??this.includeRequestBodyInErrors},y)},g=n?.rateLimiter??this.rt,h;try{h=g?await g(m,{modelUsage:this.embedModelUsage}):await m()}catch(f){throw No(o,f),o?.isRecording()&&o.end(),f}let x;try{x=this.aiImpl.createEmbedResp(h),Tp(x,n?.sessionId,d)}catch(f){throw No(o,f),o?.isRecording()&&o.end(),f}if(!x.modelUsage){let f=this.aiImpl.getTokenUsage();f&&(x.modelUsage={ai:this.name,model:e,tokens:f})}return this.embedModelUsage=x.modelUsage,x.modelUsage&&(this.recordTokenUsage(x.modelUsage.model,x.modelUsage.tokens,n),this.recordEstimatedCost("embed",this.estimateCostByName(x.modelUsage.model,x.modelUsage),x.modelUsage.model,n)),co("embed",x,this.getMergedUsageContext(n),!1),o?.isRecording()&&(ZA(x,o),x.modelUsage?.tokens&&o.addEvent(nn.GEN_AI_USAGE,{[Te.LLM_USAGE_INPUT_TOKENS]:x.modelUsage.tokens.promptTokens,[Te.LLM_USAGE_OUTPUT_TOKENS]:x.modelUsage.tokens.completionTokens??0,[Te.LLM_USAGE_TOTAL_TOKENS]:x.modelUsage.tokens.totalTokens})),s&&Um(x.embeddings,c),o?.end(),x}async buildHeaders(e={}){return{...await this.headers(),...e}}getModelByKey(e){return e?this.models?.find(n=>n.key===e):void 0}getModel(e){let t=this.getModelByKey(e);return t&&"model"in t?t.model:void 0}getEmbedModel(e){let t=this.getModelByKey(e);return t&&"embedModel"in t?t.embedModel:void 0}async handleContextCaching(e,t,n,o){let i=n?.contextCache;if(!i)return null;let s=this.aiImpl.supportsContextCache?.(e)??!1,a=this.aiImpl.supportsImplicitCaching?.(e)??!1;if(!s&&!a)throw new Error(`Context caching is not supported by this provider/model (${this.getName()}/${e}). Remove the contextCache option or use a provider that supports caching.`);if(!s)return null;let c=i.ttlSeconds??3600,l=i.refreshWindowSeconds??300,u=i.minTokens??2048;if(i.name)return this.useCacheByName(e,t,i.name,n,o);let d=this.getContextCacheToolState(t,i),p=II(t,d);if(!p||p===Tt("sha256").digest("hex"))return null;let m={providerName:this.getName(),model:String(e),contentHash:p},g=CI(m),h=Date.now(),x=i.registry,f=v=>({key:g,cacheName:v,registry:x}),y=!1,A=x?await x.get(g):bs.get(g);if(A&&A.expiresAt>h)if(A.expiresAt-h<l*1e3&&this.aiImpl.buildCacheUpdateTTLOp){let F;try{let O=this.aiImpl.buildCacheUpdateTTLOp(A.cacheName,c);F=await this.executeCacheOperation(O,n,o)}catch(O){o?.addEvent("context_cache.error",{type:"update",error:O instanceof Error?O.message:String(O)})}let k=WA(F,h);if(F&&k!==void 0){let O={cacheName:F.name,expiresAt:k,tokenCount:F.tokenCount??A.tokenCount};return x?await x.set(g,O):bs.set(g,{...O,contentHash:p,lastTouchedAt:h}),this.useCacheByName(e,t,F.name,n,o,f(F.name))}await this.invalidateManagedContextCache(f(A.cacheName),"refresh_failed",o),y=!0}else return this.useCacheByName(e,t,A.cacheName,n,o,f(A.cacheName));if(this.estimateCacheableTokens(t,d)<u)return y&&o?.addEvent("context_cache.fallback",{reason:"refresh_failed",mode:"uncached"}),null;let w;try{w=this.aiImpl.buildCacheCreateOp?.(t,n)}catch(v){o?.addEvent("context_cache.error",{type:"create",error:v instanceof Error?v.message:String(v)})}if(w){let v=await this.executeCacheOperation(w,n,o),F=WA(v,h);if(v&&F!==void 0){let k={cacheName:v.name,expiresAt:F,tokenCount:v.tokenCount};return x?await x.set(g,k):bs.set(g,{...k,contentHash:p,lastTouchedAt:h}),y&&o?.addEvent("context_cache.fallback",{reason:"refresh_failed",mode:"recreate"}),this.useCacheByName(e,t,v.name,n,o,f(v.name))}}return y&&o?.addEvent("context_cache.fallback",{reason:"refresh_failed",mode:"uncached"}),null}async useCacheByName(e,t,n,o,i,s){if(this.aiImpl.prepareCachedChatReq){let a=await this.aiImpl.prepareCachedChatReq(t,o??{},n);return{preparedRequest:{apiConfig:a.apiConfig,request:a.request},managedCache:s}}return null}async invalidateManagedContextCache(e,t,n,o){try{let i=!1;if(e.registry){let s=await e.registry.get(e.key);s?.cacheName===e.cacheName&&(await e.registry.set(e.key,{...s,expiresAt:0}),i=!0)}else bs.get(e.key)?.cacheName===e.cacheName&&(i=bs.delete(e.key));n?.addEvent("context_cache.invalidated",{reason:t,cacheName:e.cacheName,invalidated:i,...o!==void 0?{status:o}:{}})}catch(i){n?.addEvent("context_cache.error",{type:"invalidate",reason:t,error:i instanceof Error?i.message:String(i)})}}getContextCacheToolState(e,t){if(t)return this.aiImpl.getContextCacheToolState?.(e,{contextCache:t})??SI(e)}async executeCacheOperation(e,t,n){let o=t?.verbose??this.#e,i=this.getEffectiveAbortSignal(t);try{n?.addEvent("context_cache.operation",{type:e.type,endpoint:e.apiConfig.name});let s=await ka({name:e.apiConfig.name,url:e.apiConfig.url??this.apiURL,method:e.apiConfig.method,put:e.apiConfig.put,localCall:e.apiConfig.localCall,headers:await this.buildHeaders(e.apiConfig.headers),stream:!1,timeout:this.timeout,verbose:o,fetch:this.fetch,span:n,abortSignal:i,corsProxy:this.corsProxy,retry:t?.retry??this.retry,includeRequestBodyInErrors:t?.includeRequestBodyInErrors??this.includeRequestBodyInErrors},e.request);return e.parseResponse(s)}catch(s){n?.addEvent("context_cache.error",{type:e.type,error:s instanceof Error?s.message:String(s)});return}}estimateCacheableTokens(e,t){let{chatPrompt:n}=e,o=0;for(let i of n){if(i.role==="system"){o+=i.content.length;continue}if("cache"in i&&i.cache)if(i.role==="user"){if(typeof i.content=="string")o+=i.content.length;else if(Array.isArray(i.content))for(let s of i.content)"cache"in s&&s.cache&&(s.type==="text"?o+=s.text.length:s.type==="image"?o+=1e3:s.type==="audio"?o+=2e3:s.type==="file"&&(o+=500))}else if(i.role==="assistant"){if(i.content&&(o+=i.content.length),i.functionCalls)for(let s of i.functionCalls)o+=s.function.name.length,o+=eC(s.function.params).length}else i.role==="function"&&(o+=i.functionId.length,o+=i.result.length)}return t&&(o+=Mp(t).length),Math.ceil(o/4)}};function PI(r,e,t){let n=[];if(r.chatPrompt&&Array.isArray(r.chatPrompt)&&r.chatPrompt.length>0)for(let i of r.chatPrompt)switch(i.role){case"system":if(i.content){let s={};t||(s.content=i.content),e.addEvent(nn.GEN_AI_SYSTEM_MESSAGE,s)}break;case"user":if(typeof i.content=="string")n.push(i.content);else if(Array.isArray(i.content))for(let s of i.content)s.type==="text"&&n.push(s.text);break;case"assistant":{let s=i.functionCalls?.map(a=>({id:a.id,type:a.type,function:a.function.name,arguments:a.function.params}));if(s&&s.length>0){let a={function_calls:JSON.stringify(s,null,2)};!t&&i.content&&(a.content=i.content),e.addEvent(nn.GEN_AI_ASSISTANT_MESSAGE,a)}else if(i.content){let a={};t||(a.content=i.content),e.addEvent(nn.GEN_AI_ASSISTANT_MESSAGE,a)}break}case"function":{let s={id:i.functionId};t||(s.content=i.result),e.addEvent(nn.GEN_AI_TOOL_MESSAGE,s);break}}let o={};t||(o.content=n.join(`
|
|
1253
|
-
`)),e.addEvent(nn.GEN_AI_USER_MESSAGE,o)}function XA(r,e,t){if(ZA(r,e),r.modelUsage?.tokens){let n=r.modelUsage.tokens.thoughtsTokens?{[Te.LLM_USAGE_THOUGHTS_TOKENS]:r.modelUsage.tokens.thoughtsTokens}:{};e.addEvent(nn.GEN_AI_USAGE,{[Te.LLM_USAGE_INPUT_TOKENS]:r.modelUsage.tokens.promptTokens,[Te.LLM_USAGE_OUTPUT_TOKENS]:r.modelUsage.tokens.completionTokens??0,[Te.LLM_USAGE_TOTAL_TOKENS]:r.modelUsage.tokens.totalTokens,...n})}if(r.results)for(let n=0;n<r.results.length;n++){let o=r.results[n];if(!o||!o.content&&!o.thought&&!o.functionCalls?.length&&!o.finishReason)continue;let i=o.functionCalls?.map(a=>({id:a.id,type:a.type,function:a.function.name,arguments:a.function.params})),s={};i&&i.length>0?(t||(s.content=o.content),s.tool_calls=i):t||(s.content=o.content??""),e.addEvent(nn.GEN_AI_CHOICE,{finish_reason:o.finishReason,index:n,message:JSON.stringify(s,null,2)})}}function MI(r){let e=new Set;for(let t of r){if(e.has(t.key))throw new Error(`Duplicate model key detected: "${t.key}". Each model key must be unique.`);e.add(t.key)}}var EI=new Set(["us","eu"]),Rs=r=>r==="global"?"aiplatform.googleapis.com":EI.has(r)?`aiplatform.${r}.rep.googleapis.com`:`${r}-aiplatform.googleapis.com`;var Lo=(A=>(A.Claude5Sonnet="claude-sonnet-5",A.Claude48Opus="claude-opus-4-8",A.Claude47Opus="claude-opus-4-7",A.Claude46Opus="claude-opus-4-6",A.Claude46Sonnet="claude-sonnet-4-6",A.Claude45Opus="claude-opus-4-5-20251101",A.Claude41Opus="claude-opus-4-1-20250805",A.Claude4Opus="claude-opus-4-20250514",A.Claude4Sonnet="claude-sonnet-4-20250514",A.Claude45Sonnet="claude-sonnet-4-5-20250929",A.Claude45Haiku="claude-haiku-4-5",A.Claude37Sonnet="claude-3-7-sonnet-latest",A.Claude35Sonnet="claude-3-5-sonnet-latest",A.Claude35Haiku="claude-3-5-haiku-latest",A.Claude3Opus="claude-3-opus-latest",A.Claude3Sonnet="claude-3-sonnet-20240229",A.Claude3Haiku="claude-3-haiku-20240307",A.Claude21="claude-2.1",A.ClaudeInstant12="claude-instant-1.2",A))(Lo||{}),ws=(f=>(f.Claude5Sonnet="claude-sonnet-5",f.Claude48Opus="claude-opus-4-8",f.Claude47Opus="claude-opus-4-7",f.Claude46Opus="claude-opus-4-6",f.Claude46Sonnet="claude-sonnet-4-6",f.Claude45Opus="claude-opus-4-5@20251101",f.Claude41Opus="claude-opus-4-1@20250805",f.Claude4Opus="claude-opus-4@20250514",f.Claude45Sonnet="claude-sonnet-4-5@20250929",f.Claude4Sonnet="claude-sonnet-4@20250514",f.Claude37Sonnet="claude-3-7-sonnet@20250219",f.Claude35SonnetV2="claude-3-5-sonnet-v2@20241022",f.Claude45Haiku="claude-haiku-4-5@20251001",f.Claude35Haiku="claude-3-5-haiku@20241022",f.Claude35Sonnet="claude-3-5-sonnet@20240620",f.Claude3Opus="claude-3-opus@20240229",f.Claude3Haiku="claude-3-haiku@20240307",f))(ws||{});var Pr=[{name:"claude-sonnet-5",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:128e3,contextWindow:1e6,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-5",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:128e3,contextWindow:1e6,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-8",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,fastPromptTokenCostPer1M:10,fastCompletionTokenCostPer1M:50,fastCacheReadTokenCostPer1M:1,fastCacheWriteTokenCostPer1M:12.5,maxTokens:128e3,contextWindow:1e6,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-8",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,maxTokens:128e3,contextWindow:1e6,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-7",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,fastPromptTokenCostPer1M:30,fastCompletionTokenCostPer1M:150,fastCacheReadTokenCostPer1M:3,fastCacheWriteTokenCostPer1M:37.5,maxTokens:128e3,contextWindow:1e6,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-7",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,maxTokens:128e3,contextWindow:1e6,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-6",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,fastPromptTokenCostPer1M:30,fastCompletionTokenCostPer1M:150,fastCacheReadTokenCostPer1M:3,fastCacheWriteTokenCostPer1M:37.5,maxTokens:128e3,contextWindow:1e6,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-6",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,maxTokens:128e3,contextWindow:1e6,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-6",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-6",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-5-20251101",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-5@20251101",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-5-20250929",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:2e5,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-5@20250929",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:2e5,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-haiku-4-5",currency:"usd",promptTokenCostPer1M:1,completionTokenCostPer1M:5,cacheReadTokenCostPer1M:.1,cacheWriteTokenCostPer1M:1.25,maxTokens:2e5,supported:{thinkingBudget:!0,showThoughts:!0}},{name:"claude-haiku-4-5@20251001",currency:"usd",promptTokenCostPer1M:1,completionTokenCostPer1M:5,cacheReadTokenCostPer1M:.1,cacheWriteTokenCostPer1M:1.25,maxTokens:2e5,supported:{thinkingBudget:!0,showThoughts:!0}},{name:"claude-opus-4-1-20250805",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,cacheReadTokenCostPer1M:1.5,cacheWriteTokenCostPer1M:18.75,maxTokens:32e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-1@20250805",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,cacheReadTokenCostPer1M:1.5,cacheWriteTokenCostPer1M:18.75,maxTokens:32e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-20250514",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,cacheReadTokenCostPer1M:1.5,cacheWriteTokenCostPer1M:18.75,maxTokens:32e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4@20250514",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,cacheReadTokenCostPer1M:1.5,cacheWriteTokenCostPer1M:18.75,maxTokens:32e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-20250514",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4@20250514",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-3-7-sonnet-latest",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-3-7-sonnet@20250219",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-3-5-sonnet-latest",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:8192,supported:{structuredOutputs:!0}},{name:"claude-3-5-sonnet@20240620",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:8192,supported:{structuredOutputs:!0}},{name:"claude-3-5-sonnet-v2@20241022",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:8192,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-3-5-haiku-latest",currency:"usd",promptTokenCostPer1M:.8,completionTokenCostPer1M:4,cacheReadTokenCostPer1M:.08,cacheWriteTokenCostPer1M:1,maxTokens:8192},{name:"claude-3-5-haiku@20241022",currency:"usd",promptTokenCostPer1M:1,completionTokenCostPer1M:5,cacheReadTokenCostPer1M:.1,cacheWriteTokenCostPer1M:1.25,maxTokens:8192},{name:"claude-3-opus-latest",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,cacheReadTokenCostPer1M:1.5,cacheWriteTokenCostPer1M:18.75,maxTokens:4096,supported:{structuredOutputs:!0}},{name:"claude-3-opus@20240229",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,cacheReadTokenCostPer1M:1.5,cacheWriteTokenCostPer1M:18.75,maxTokens:4096,supported:{structuredOutputs:!0}},{name:"claude-3-sonnet-20240229",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:4096,supported:{structuredOutputs:!0}},{name:"claude-3-haiku-20240307",currency:"usd",promptTokenCostPer1M:.25,completionTokenCostPer1M:1.25,cacheReadTokenCostPer1M:.03,cacheWriteTokenCostPer1M:.3,maxTokens:4096},{name:"claude-3-haiku@20240307",currency:"usd",promptTokenCostPer1M:.25,completionTokenCostPer1M:1.25,cacheReadTokenCostPer1M:.03,cacheWriteTokenCostPer1M:.3,maxTokens:4096},{name:"claude-2.1",currency:"usd",promptTokenCostPer1M:8,completionTokenCostPer1M:25,maxTokens:4096},{name:"claude-instant-1.2",currency:"usd",promptTokenCostPer1M:.8,completionTokenCostPer1M:2.24,maxTokens:4096}];var OI=["structured-outputs-2025-11-13","web-search-2025-03-05"],FI="fast-mode-2026-02-01",_I="task-budgets-2026-03-13",oC=(r=[])=>[...new Set([...OI,...r])].join(", ");function iC(r){switch(r){case"overloaded_error":return 529;case"api_error":return 500;case"rate_limit_error":return 429;case"invalid_request_error":return 400;case"permission_error":return 403;case"not_found_error":return 404;case"request_too_large":return 413;default:return}}function tC(r){if(r.type==="authentication_error")return new vt("",void 0,r);let e=iC(r.type);return e!==void 0?new Qe(e,r.type,"",void 0,r):new Ke(r.message)}var NI=r=>r.includes("claude-opus-4-7")||r.includes("claude-opus-4-8"),LI=r=>r.includes("claude-opus-4-8"),$I=r=>r.includes("claude-sonnet-5"),nC=r=>r.includes("claude-opus-4-6")||NI(r)||$I(r),tr=r=>{if(!r||typeof r!="object")return r;let e={...r},t=Array.isArray(e.type)?e.type:[e.type],n=Array.isArray(e.type)&&e.type.length===2&&e.type.includes("null");if(Array.isArray(e.type)&&e.type.length>1&&!n)return e.type="object",e.additionalProperties=!0,delete e.properties,delete e.required,delete e.items,e;if(e.type==="object"||n&&t.includes("object")){if(!e.properties||Object.keys(e.properties).length===0)return e;e.additionalProperties===void 0&&(e.additionalProperties=!1)}return delete e.optional,(t.includes("number")||t.includes("integer"))&&(delete e.minimum,delete e.maximum,delete e.exclusiveMinimum,delete e.exclusiveMaximum,delete e.multipleOf),t.includes("string")&&(delete e.minLength,delete e.maxLength,delete e.pattern,delete e.format),t.includes("array")&&(delete e.minItems,delete e.maxItems,delete e.uniqueItems),e.properties&&typeof e.properties=="object"&&(e.properties=Object.fromEntries(Object.entries(e.properties).map(([i,s])=>[i,tr(s)]))),e.items&&(e.items=tr(e.items)),Array.isArray(e.anyOf)&&(e.anyOf=e.anyOf.map(i=>tr(i))),Array.isArray(e.allOf)&&(e.allOf=e.allOf.map(i=>tr(i))),Array.isArray(e.oneOf)&&(e.oneOf=e.oneOf.map(i=>tr(i))),e},Op=()=>structuredClone({model:"claude-3-7-sonnet-latest",maxTokens:4e4,thinkingTokenBudgetLevels:{minimal:1024,low:5e3,medium:1e4,high:2e4,highest:32e3},effortLevelMapping:{minimal:"low",low:"low",medium:"medium",high:"high",highest:"max"},...Ue()}),sC=()=>structuredClone({model:"claude-3-7-sonnet@20250219",maxTokens:4e4,thinkingTokenBudgetLevels:{minimal:1024,low:5e3,medium:1e4,high:2e4,highest:32e3},effortLevelMapping:{minimal:"low",low:"low",medium:"medium",high:"high",highest:"max"},...Ue()}),Ep=class{constructor(e,t){this.config=e;this.isVertex=t}tokensUsed;currentPromptConfig;usedStructuredOutput=!1;getTokenUsage(){return this.tokensUsed}getModelConfig(){let{config:e}=this;return{maxTokens:e.maxTokens??4096,temperature:e.temperature,topP:e.topP,topK:e.topK,stream:e.stream,stopSequences:e.stopSequences,endSequences:e.endSequences,presencePenalty:e.presencePenalty,frequencyPenalty:e.frequencyPenalty,n:e.n,effort:e.effort,speed:e.speed,taskBudget:e.taskBudget}}createChatReq=async(e,t)=>{this.currentPromptConfig=t;let n=e.model,o=n,i=e.modelConfig?.stream??this.config.stream,s;this.isVertex?s={name:i?`/models/${n}:streamRawPredict?alt=sse`:`/models/${n}:rawPredict`}:s={name:"/messages"};let a;if(e.functionCall&&e.functions&&e.functions.length>0)if(typeof e.functionCall=="string")switch(e.functionCall){case"auto":a={tool_choice:{type:"auto"}};break;case"required":a={tool_choice:{type:"any"}};break;case"none":throw new Error("functionCall none not supported")}else if("function"in e.functionCall)a={tool_choice:{type:"tool",name:e.functionCall.function.name}};else throw new Error("Invalid function call type, must be string or object");let c=e.chatPrompt.some(C=>"cache"in C&&C.cache)||e.functions?.some(C=>C.cache),l=!this.isVertex&&LI(o),u=e.chatPrompt.findIndex(C=>C.role!=="system"),d=u===-1?e.chatPrompt.length:u,p=(l?e.chatPrompt.slice(0,d):e.chatPrompt).filter(C=>C.role==="system"),m=p.map((C,T)=>({type:"text",text:C.content,...C.cache||c&&T===p.length-1?{cache_control:{type:"ephemeral"}}:{}})),g=l?e.chatPrompt.slice(d):e.chatPrompt.filter(C=>C.role!=="system"),h=e.functions?.map((C,T,E)=>{let D={type:"object",properties:{dummy:{type:"string",description:"An optional dummy parameter, do not use"}},required:[]},j=C.parameters?tr(C.parameters):void 0;return j===void 0||j&&typeof j=="object"&&Object.keys(j).length===0?j={...D}:j&&typeof j=="object"&&j.type==="object"&&(!("properties"in j)||!j.properties||Object.keys(j.properties).length===0)&&(j={...j,properties:{dummy:{type:"string",description:"An optional dummy parameter, do not use"}},required:[]}),{name:C.name,description:C.description,input_schema:j,...C.cache||c&&T===E.length-1?{cache_control:{type:"ephemeral"}}:{}}}),f=(this.config.tools??[]).map(C=>C&&typeof C=="object"&&"type"in C?C:{name:C.name,description:C.description,input_schema:C.input_schema?tr(C.input_schema):void 0,...C.cache_control?{cache_control:C.cache_control}:{}}),y=[...h??[],...f];y.length===0&&(y=void 0);let A=e.modelConfig?.maxTokens??this.config.maxTokens,b=e.modelConfig?.stopSequences??this.config.stopSequences,w=e.modelConfig?.temperature,v=e.modelConfig?.topP,F=e.modelConfig?.topK??this.config.topK,k=e.modelConfig?.n??this.config.n,O=e.modelConfig?.effort??this.config.effort,$=e.modelConfig?.speed??this.config.speed,N=e.modelConfig?.taskBudget??this.config.taskBudget;if(k&&k>1)throw new Error("Anthropic does not support sampling (n > 1)");let V=C=>C.includes("claude-opus-4-5"),I=nC(o),_,S;if(t?.thinkingTokenBudget){let C=this.config.thinkingTokenBudgetLevels,T=this.config.effortLevelMapping;if(t.thinkingTokenBudget==="none")_=void 0,S=void 0;else{let E=t.thinkingTokenBudget;if(nC(o))_={type:"adaptive",display:t?.showThoughts===!1?"omitted":"summarized"},S={effort:T?.[E]??"medium"};else if(V(o)){_={type:"enabled",budget_tokens:C?.[E]??1e4};let j=T?.[E]??"medium";j==="max"&&(j="high"),S={effort:j}}else _={type:"enabled",budget_tokens:C?.[E]??1e4}}}if(O){let C=V(o)&&(O==="max"||O==="xhigh")?"high":O;S={...S,effort:C}}if(N){if(N.total<2e4)throw new Error("Anthropic taskBudget.total must be at least 20000 tokens");if(this.isVertex)throw new Error("Anthropic task budgets are only supported on the first-party Anthropic API");S={...S,task_budget:N}}let H=[];if($==="fast"){if(this.isVertex)throw new Error("Anthropic fast mode is only supported on the first-party Anthropic API");H.push(FI)}N&&H.push(_I),!this.isVertex&&H.length>0&&(s.headers={"anthropic-beta":oC(H)});let W=DI(g,!!_);if(W.some(C=>C.role==="assistant"&&Array.isArray(C.content)&&C.content.length>0&&C.content[0]?.type==="tool_use")&&(_=void 0,S)){let C={};O&&S.effort&&(C.effort=S.effort),S.task_budget&&(C.task_budget=S.task_budget),S=Object.keys(C).length>0?C:void 0}if(this.usedStructuredOutput=!1,e.responseFormat&&e.responseFormat.type==="json_schema"&&e.responseFormat.schema){let C=e.responseFormat.schema.schema||e.responseFormat.schema;S={...S,format:{type:"json_schema",schema:tr(C)}},this.usedStructuredOutput=!0}let Y={...this.isVertex?{anthropic_version:"vertex-2023-10-16"}:{model:n},...A?{max_tokens:A}:{},...b&&b.length>0?{stop_sequences:b}:{},...w!==void 0&&!_&&!I?{temperature:w}:{},...v!==void 0&&!I&&(!_||v>=.95)?{top_p:v}:{},...F&&!_&&!I?{top_k:F}:{},...a,...y?{tools:y}:{},...i?{stream:!0}:{},...m.length>0?{system:m}:{},..._?{thinking:_}:{},...S?{output_config:S}:{},...$==="fast"?{speed:"fast"}:{},messages:W};return[s,Y]};createChatResp=e=>{if(e.type==="error")throw tC(e.error);if(e.stop_reason==="refusal"){let u=e.content.filter(m=>m.type==="text").map(m=>"text"in m?m.text:"").join(""),d=e.stop_details??void 0,p=d?.explanation??(u.length>0?u:"Anthropic refused to fulfill this request");throw new Ke(p,e.model,e.id,d?.category,d?.explanation)}let t=rC(e.stop_reason),n=this.currentPromptConfig?.thinkingTokenBudget!=="none"&&this.currentPromptConfig?.showThoughts!==!1,o="",i=[],s=[],a=[];for(let u of e.content)switch(u.type){case"text":if(o+=u.text??"",Array.isArray(u.citations))for(let d of u.citations)d?.url&&a.push({url:String(d.url),title:typeof d.title=="string"?d.title:void 0,snippet:typeof d.cited_text=="string"?d.cited_text:void 0});break;case"thinking":if(n){let d=u.thinking??"",p=u.signature;s.push({data:d,encrypted:!1,...typeof p=="string"?{signature:p}:{}})}break;case"redacted_thinking":if(n){let d=u.data??"",p=u.signature;s.push({data:d,encrypted:!0,...typeof p=="string"?{signature:p}:{}})}break;case"tool_use":i.push({id:u.id,type:"function",function:{name:u.name,params:u.input}});break}let c={index:0,id:e.id,finishReason:t};o&&(c.content=o),s.length>0&&(c.thoughtBlocks=s,c.thought=s.map(u=>u.data).join("")),i.length>0&&(c.functionCalls=i),a.length>0&&(c.citations=a);let l=[c];return this.tokensUsed={promptTokens:e.usage.input_tokens,completionTokens:e.usage.output_tokens,totalTokens:e.usage.input_tokens+e.usage.output_tokens+(e.usage.cache_creation_input_tokens||0)+(e.usage.cache_read_input_tokens||0),cacheCreationTokens:e.usage.cache_creation_input_tokens,cacheReadTokens:e.usage.cache_read_input_tokens,speed:e.usage.speed},{results:l,remoteId:e.id}};classifyStreamErrorStatus=e=>e.type==="error"?iC(e.error.type):void 0;createChatStreamResp=(e,t)=>{if(!("type"in e))throw new Error("Invalid Anthropic streaming event");let n=t;if(n.indexIdMap||(n.indexIdMap={}),e.type==="error"){let{error:i}=e;throw tC(i)}let o=0;if(e.type==="message_start"){let{message:i}=e,s=[{index:o,content:"",id:i.id}];return n.remoteId=i.id,this.tokensUsed={promptTokens:i.usage?.input_tokens??0,completionTokens:i.usage?.output_tokens??0,totalTokens:(i.usage?.input_tokens??0)+(i.usage?.output_tokens??0)+(i.usage?.cache_creation_input_tokens??0)+(i.usage?.cache_read_input_tokens??0),cacheCreationTokens:i.usage?.cache_creation_input_tokens,cacheReadTokens:i.usage?.cache_read_input_tokens,speed:i.usage?.speed},{results:s,remoteId:i.id}}if(e.type==="content_block_start"){let{content_block:i}=e;if(i.type==="text"){let s=[];if(Array.isArray(i.citations))for(let a of i.citations)a?.url&&s.push({url:String(a.url),title:typeof a.title=="string"?a.title:void 0,snippet:typeof a.cited_text=="string"?a.cited_text:void 0});return{results:[{index:o,content:i.text,...s.length?{citations:s}:{}}],remoteId:n.remoteId}}if(i.type==="thinking")return this.currentPromptConfig?.thinkingTokenBudget!=="none"&&this.currentPromptConfig?.showThoughts!==!1?{results:[{index:o,thought:i.thinking,thoughtBlocks:[{data:i.thinking,encrypted:!1}]}]}:{results:[{index:o,content:""}]};if(i.type==="tool_use"&&typeof i.id=="string"&&typeof e.index=="number"&&!n.indexIdMap[e.index]){n.indexIdMap[e.index]=i.id;let s=[{id:i.id,type:"function",function:{name:i.name,params:""}}];return{results:[{index:o,functionCalls:s}]}}if(i.type==="web_search_tool_result"||i.type==="server_tool_use")return{results:[{index:o,content:""}]}}if(e.type==="content_block_delta"){let{delta:i}=e;if(i.type==="citations_delta"){let s=i.citation;if(s&&typeof s.url=="string"&&s.url.length>0){let a=[{url:String(s.url),title:typeof s.title=="string"?s.title:void 0,snippet:typeof s.cited_text=="string"?s.cited_text:void 0}];return{results:[{index:o,content:"",citations:a}],remoteId:n.remoteId}}return{results:[{index:o,content:""}],remoteId:n.remoteId}}if(i.type==="text_delta"){let s=[];if(Array.isArray(i.citations))for(let a of i.citations)a?.url&&s.push({url:String(a.url),title:typeof a.title=="string"?a.title:void 0,snippet:typeof a.cited_text=="string"?a.cited_text:void 0});return{results:[{index:o,content:i.text,...s.length?{citations:s}:{}}]}}if(i.type==="thinking_delta")return this.currentPromptConfig?.thinkingTokenBudget!=="none"&&this.currentPromptConfig?.showThoughts!==!1?{results:[{index:o,thought:i.thinking,thoughtBlocks:[{data:i.thinking,encrypted:!1}]}]}:{results:[{index:o,content:""}]};if(i.type==="signature_delta")return{results:[{index:o,thoughtBlocks:[{data:"",encrypted:!1,signature:i.signature}]}]};if(i.type==="input_json_delta"){let s=n.indexIdMap[e.index];if(!s)return{results:[{index:o,content:""}]};let a=[{id:s,type:"function",function:{name:"",params:i.partial_json}}];return{results:[{index:o,functionCalls:a}]}}}if(e.type==="message_delta"){let{delta:i,usage:s}=e;if(this.tokensUsed={promptTokens:this.tokensUsed?.promptTokens??0,completionTokens:s.output_tokens,totalTokens:(this.tokensUsed?.promptTokens??0)+s.output_tokens+(this.tokensUsed?.cacheCreationTokens??0)+(this.tokensUsed?.cacheReadTokens??0),cacheCreationTokens:this.tokensUsed?.cacheCreationTokens,cacheReadTokens:this.tokensUsed?.cacheReadTokens,speed:s.speed??this.tokensUsed?.speed},i.stop_reason==="refusal"){let c=i.stop_details??void 0;throw new Ke(c?.explanation??"Anthropic refused to fulfill this request",void 0,n.remoteId,c?.category,c?.explanation)}return{results:[{index:o,content:"",finishReason:rC(i.stop_reason)}]}}return{results:[{index:o,content:""}]}};supportsImplicitCaching=()=>!0},$o=class r extends St{static create(e){return new r(e)}constructor({apiKey:e,projectId:t,region:n,config:o,options:i,models:s}){let a=t!==void 0&&n!==void 0,c,l;if(t!==void 0&&n!==void 0){if(!e)throw new Error("Anthropic Vertex API key not set");if(typeof e!="function")throw new Error("Anthropic Vertex API key must be a function for token-based authentication");c=`https://${Rs(n)}/v1/projects/${t}/locations/${n}/publishers/anthropic/`,l=async()=>({Authorization:`Bearer ${await e()}`,"anthropic-beta":"web-search-2025-03-05"})}else{if(!e)throw new Error("Anthropic API key not set");c="https://api.anthropic.com/v1",l=async()=>({"anthropic-version":"2023-06-01","anthropic-beta":oC(),"x-api-key":typeof e=="function"?await e():e})}let u={...Op(),...o},d=new Ep(u,a),p=g=>{let h=ut({model:g,modelInfo:Pr,models:s});return{functions:!0,streaming:!0,hasThinkingBudget:h?.supported?.thinkingBudget??!1,hasShowThoughts:h?.supported?.showThoughts??!1,structuredOutputs:h?.supported?.structuredOutputs??!1,functionCot:!0,media:{images:{supported:!0,formats:["image/jpeg","image/png","image/gif","image/webp"],maxSize:5*1024*1024,detailLevels:["high","low","auto"]},audio:{supported:!1,formats:[],maxDuration:0},files:{supported:!1,formats:[],maxSize:0,uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!0,types:["ephemeral"],cacheBreakpoints:!1},thinking:h?.supported?.thinkingBudget??!1,multiTurn:!0}},m=s?.map(g=>{let h=g,x=h?.config;if(!x)return g;let f={};x.maxTokens!==void 0&&(f.maxTokens=x.maxTokens),x.temperature!==void 0&&(f.temperature=x.temperature),x.topP!==void 0&&(f.topP=x.topP),x.topK!==void 0&&(f.topK=x.topK),x.presencePenalty!==void 0&&(f.presencePenalty=x.presencePenalty),x.frequencyPenalty!==void 0&&(f.frequencyPenalty=x.frequencyPenalty),x.stopSequences!==void 0&&(f.stopSequences=x.stopSequences),x.endSequences!==void 0&&(f.endSequences=x.endSequences),x.stream!==void 0&&(f.stream=x.stream),x.n!==void 0&&(f.n=x.n),x.effort!==void 0&&(f.effort=x.effort),x.speed!==void 0&&(f.speed=x.speed),x.taskBudget!==void 0&&(f.taskBudget=x.taskBudget);let y={...h};Object.keys(f).length>0&&(y.modelConfig={...h.modelConfig??{},...f});let A=x.thinking?.thinkingTokenBudget;if(typeof A=="number"){let b=u.thinkingTokenBudgetLevels,w=[["minimal",b?.minimal??1024],["low",b?.low??5e3],["medium",b?.medium??1e4],["high",b?.high??2e4],["highest",b?.highest??32e3]],v="minimal",F=Number.POSITIVE_INFINITY;for(let[k,O]of w){let $=Math.abs(A-O);$<F&&(F=$,v=k)}y.thinkingTokenBudget=v}return x.thinking?.includeThoughts!==void 0&&(y.showThoughts=!!x.thinking.includeThoughts),y});super(d,{name:"Anthropic",apiURL:c,headers:l,modelInfo:Pr,defaults:{model:u.model},options:i,supportFor:p,models:m??s})}};function UI(r){return r.content?.length?r.content.map(e=>e.type==="text"?{type:"text",text:e.text}:e.type==="image"?{type:"image",source:{type:"base64",media_type:e.mimeType,data:e.image}}:e.type==="audio"?{type:"text",text:e.transcription??`[MCP audio result: ${e.mimeType??"application/octet-stream"}]`}:e.type==="url"?{type:"text",text:e.cachedContent??[e.title,e.description,e.url].filter(Boolean).join(`
|
|
1253
|
+
`)),e.addEvent(nn.GEN_AI_USER_MESSAGE,o)}function XA(r,e,t){if(ZA(r,e),r.modelUsage?.tokens){let n=r.modelUsage.tokens.thoughtsTokens?{[Te.LLM_USAGE_THOUGHTS_TOKENS]:r.modelUsage.tokens.thoughtsTokens}:{};e.addEvent(nn.GEN_AI_USAGE,{[Te.LLM_USAGE_INPUT_TOKENS]:r.modelUsage.tokens.promptTokens,[Te.LLM_USAGE_OUTPUT_TOKENS]:r.modelUsage.tokens.completionTokens??0,[Te.LLM_USAGE_TOTAL_TOKENS]:r.modelUsage.tokens.totalTokens,...n})}if(r.results)for(let n=0;n<r.results.length;n++){let o=r.results[n];if(!o||!o.content&&!o.thought&&!o.functionCalls?.length&&!o.finishReason)continue;let i=o.functionCalls?.map(a=>({id:a.id,type:a.type,function:a.function.name,arguments:a.function.params})),s={};i&&i.length>0?(t||(s.content=o.content),s.tool_calls=i):t||(s.content=o.content??""),e.addEvent(nn.GEN_AI_CHOICE,{finish_reason:o.finishReason,index:n,message:JSON.stringify(s,null,2)})}}function MI(r){let e=new Set;for(let t of r){if(e.has(t.key))throw new Error(`Duplicate model key detected: "${t.key}". Each model key must be unique.`);e.add(t.key)}}var EI=new Set(["us","eu"]),Rs=r=>r==="global"?"aiplatform.googleapis.com":EI.has(r)?`aiplatform.${r}.rep.googleapis.com`:`${r}-aiplatform.googleapis.com`;var Lo=(A=>(A.Claude5Sonnet="claude-sonnet-5",A.Claude48Opus="claude-opus-4-8",A.Claude47Opus="claude-opus-4-7",A.Claude46Opus="claude-opus-4-6",A.Claude46Sonnet="claude-sonnet-4-6",A.Claude45Opus="claude-opus-4-5-20251101",A.Claude41Opus="claude-opus-4-1-20250805",A.Claude4Opus="claude-opus-4-20250514",A.Claude4Sonnet="claude-sonnet-4-20250514",A.Claude45Sonnet="claude-sonnet-4-5-20250929",A.Claude45Haiku="claude-haiku-4-5",A.Claude37Sonnet="claude-3-7-sonnet-latest",A.Claude35Sonnet="claude-3-5-sonnet-latest",A.Claude35Haiku="claude-3-5-haiku-latest",A.Claude3Opus="claude-3-opus-latest",A.Claude3Sonnet="claude-3-sonnet-20240229",A.Claude3Haiku="claude-3-haiku-20240307",A.Claude21="claude-2.1",A.ClaudeInstant12="claude-instant-1.2",A))(Lo||{}),ws=(f=>(f.Claude5Sonnet="claude-sonnet-5",f.Claude48Opus="claude-opus-4-8",f.Claude47Opus="claude-opus-4-7",f.Claude46Opus="claude-opus-4-6",f.Claude46Sonnet="claude-sonnet-4-6",f.Claude45Opus="claude-opus-4-5@20251101",f.Claude41Opus="claude-opus-4-1@20250805",f.Claude4Opus="claude-opus-4@20250514",f.Claude45Sonnet="claude-sonnet-4-5@20250929",f.Claude4Sonnet="claude-sonnet-4@20250514",f.Claude37Sonnet="claude-3-7-sonnet@20250219",f.Claude35SonnetV2="claude-3-5-sonnet-v2@20241022",f.Claude45Haiku="claude-haiku-4-5@20251001",f.Claude35Haiku="claude-3-5-haiku@20241022",f.Claude35Sonnet="claude-3-5-sonnet@20240620",f.Claude3Opus="claude-3-opus@20240229",f.Claude3Haiku="claude-3-haiku@20240307",f))(ws||{});var Pr=[{name:"claude-sonnet-5",currency:"usd",promptTokenCostPer1M:2,completionTokenCostPer1M:10,cacheReadTokenCostPer1M:.2,cacheWriteTokenCostPer1M:2.5,maxTokens:128e3,contextWindow:1e6,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-5",currency:"usd",promptTokenCostPer1M:2,completionTokenCostPer1M:10,cacheReadTokenCostPer1M:.2,cacheWriteTokenCostPer1M:2.5,maxTokens:128e3,contextWindow:1e6,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-8",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,fastPromptTokenCostPer1M:10,fastCompletionTokenCostPer1M:50,fastCacheReadTokenCostPer1M:1,fastCacheWriteTokenCostPer1M:12.5,maxTokens:128e3,contextWindow:1e6,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-8",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,maxTokens:128e3,contextWindow:1e6,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-7",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,fastPromptTokenCostPer1M:30,fastCompletionTokenCostPer1M:150,fastCacheReadTokenCostPer1M:3,fastCacheWriteTokenCostPer1M:37.5,maxTokens:128e3,contextWindow:1e6,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-7",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,maxTokens:128e3,contextWindow:1e6,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-6",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,fastPromptTokenCostPer1M:30,fastCompletionTokenCostPer1M:150,fastCacheReadTokenCostPer1M:3,fastCacheWriteTokenCostPer1M:37.5,maxTokens:128e3,contextWindow:1e6,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-6",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,maxTokens:128e3,contextWindow:1e6,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-6",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-6",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-5-20251101",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-5@20251101",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:25,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-5-20250929",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:2e5,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-5@20250929",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:2e5,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-haiku-4-5",currency:"usd",promptTokenCostPer1M:1,completionTokenCostPer1M:5,cacheReadTokenCostPer1M:.1,cacheWriteTokenCostPer1M:1.25,maxTokens:2e5,supported:{thinkingBudget:!0,showThoughts:!0}},{name:"claude-haiku-4-5@20251001",currency:"usd",promptTokenCostPer1M:1,completionTokenCostPer1M:5,cacheReadTokenCostPer1M:.1,cacheWriteTokenCostPer1M:1.25,maxTokens:2e5,supported:{thinkingBudget:!0,showThoughts:!0}},{name:"claude-opus-4-1-20250805",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,cacheReadTokenCostPer1M:1.5,cacheWriteTokenCostPer1M:18.75,maxTokens:32e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-1@20250805",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,cacheReadTokenCostPer1M:1.5,cacheWriteTokenCostPer1M:18.75,maxTokens:32e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4-20250514",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,cacheReadTokenCostPer1M:1.5,cacheWriteTokenCostPer1M:18.75,maxTokens:32e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-opus-4@20250514",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,cacheReadTokenCostPer1M:1.5,cacheWriteTokenCostPer1M:18.75,maxTokens:32e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4-20250514",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-sonnet-4@20250514",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-3-7-sonnet-latest",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-3-7-sonnet@20250219",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:64e3,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-3-5-sonnet-latest",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:8192,supported:{structuredOutputs:!0}},{name:"claude-3-5-sonnet@20240620",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:8192,supported:{structuredOutputs:!0}},{name:"claude-3-5-sonnet-v2@20241022",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:8192,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"claude-3-5-haiku-latest",currency:"usd",promptTokenCostPer1M:.8,completionTokenCostPer1M:4,cacheReadTokenCostPer1M:.08,cacheWriteTokenCostPer1M:1,maxTokens:8192},{name:"claude-3-5-haiku@20241022",currency:"usd",promptTokenCostPer1M:1,completionTokenCostPer1M:5,cacheReadTokenCostPer1M:.1,cacheWriteTokenCostPer1M:1.25,maxTokens:8192},{name:"claude-3-opus-latest",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,cacheReadTokenCostPer1M:1.5,cacheWriteTokenCostPer1M:18.75,maxTokens:4096,supported:{structuredOutputs:!0}},{name:"claude-3-opus@20240229",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:75,cacheReadTokenCostPer1M:1.5,cacheWriteTokenCostPer1M:18.75,maxTokens:4096,supported:{structuredOutputs:!0}},{name:"claude-3-sonnet-20240229",currency:"usd",promptTokenCostPer1M:3,completionTokenCostPer1M:15,cacheReadTokenCostPer1M:.3,cacheWriteTokenCostPer1M:3.75,maxTokens:4096,supported:{structuredOutputs:!0}},{name:"claude-3-haiku-20240307",currency:"usd",promptTokenCostPer1M:.25,completionTokenCostPer1M:1.25,cacheReadTokenCostPer1M:.03,cacheWriteTokenCostPer1M:.3,maxTokens:4096},{name:"claude-3-haiku@20240307",currency:"usd",promptTokenCostPer1M:.25,completionTokenCostPer1M:1.25,cacheReadTokenCostPer1M:.03,cacheWriteTokenCostPer1M:.3,maxTokens:4096},{name:"claude-2.1",currency:"usd",promptTokenCostPer1M:8,completionTokenCostPer1M:25,maxTokens:4096},{name:"claude-instant-1.2",currency:"usd",promptTokenCostPer1M:.8,completionTokenCostPer1M:2.24,maxTokens:4096}];var OI=["structured-outputs-2025-11-13","web-search-2025-03-05"],FI="fast-mode-2026-02-01",_I="task-budgets-2026-03-13",oC=(r=[])=>[...new Set([...OI,...r])].join(", ");function iC(r){switch(r){case"overloaded_error":return 529;case"api_error":return 500;case"rate_limit_error":return 429;case"invalid_request_error":return 400;case"permission_error":return 403;case"not_found_error":return 404;case"request_too_large":return 413;default:return}}function tC(r){if(r.type==="authentication_error")return new vt("",void 0,r);let e=iC(r.type);return e!==void 0?new Qe(e,r.type,"",void 0,r):new Ke(r.message)}var NI=r=>r.includes("claude-opus-4-7")||r.includes("claude-opus-4-8"),LI=r=>r.includes("claude-opus-4-8"),$I=r=>r.includes("claude-sonnet-5"),nC=r=>r.includes("claude-opus-4-6")||NI(r)||$I(r),tr=r=>{if(!r||typeof r!="object")return r;let e={...r},t=Array.isArray(e.type)?e.type:[e.type],n=Array.isArray(e.type)&&e.type.length===2&&e.type.includes("null");if(Array.isArray(e.type)&&e.type.length>1&&!n)return e.type="object",e.additionalProperties=!0,delete e.properties,delete e.required,delete e.items,e;if(e.type==="object"||n&&t.includes("object")){if(!e.properties||Object.keys(e.properties).length===0)return e;e.additionalProperties===void 0&&(e.additionalProperties=!1)}return delete e.optional,(t.includes("number")||t.includes("integer"))&&(delete e.minimum,delete e.maximum,delete e.exclusiveMinimum,delete e.exclusiveMaximum,delete e.multipleOf),t.includes("string")&&(delete e.minLength,delete e.maxLength,delete e.pattern,delete e.format),t.includes("array")&&(delete e.minItems,delete e.maxItems,delete e.uniqueItems),e.properties&&typeof e.properties=="object"&&(e.properties=Object.fromEntries(Object.entries(e.properties).map(([i,s])=>[i,tr(s)]))),e.items&&(e.items=tr(e.items)),Array.isArray(e.anyOf)&&(e.anyOf=e.anyOf.map(i=>tr(i))),Array.isArray(e.allOf)&&(e.allOf=e.allOf.map(i=>tr(i))),Array.isArray(e.oneOf)&&(e.oneOf=e.oneOf.map(i=>tr(i))),e},Op=()=>structuredClone({model:"claude-3-7-sonnet-latest",maxTokens:4e4,thinkingTokenBudgetLevels:{minimal:1024,low:5e3,medium:1e4,high:2e4,highest:32e3},effortLevelMapping:{minimal:"low",low:"low",medium:"medium",high:"high",highest:"max"},...Ue()}),sC=()=>structuredClone({model:"claude-3-7-sonnet@20250219",maxTokens:4e4,thinkingTokenBudgetLevels:{minimal:1024,low:5e3,medium:1e4,high:2e4,highest:32e3},effortLevelMapping:{minimal:"low",low:"low",medium:"medium",high:"high",highest:"max"},...Ue()}),Ep=class{constructor(e,t){this.config=e;this.isVertex=t}tokensUsed;currentPromptConfig;usedStructuredOutput=!1;getTokenUsage(){return this.tokensUsed}getModelConfig(){let{config:e}=this;return{maxTokens:e.maxTokens??4096,temperature:e.temperature,topP:e.topP,topK:e.topK,stream:e.stream,stopSequences:e.stopSequences,endSequences:e.endSequences,presencePenalty:e.presencePenalty,frequencyPenalty:e.frequencyPenalty,n:e.n,effort:e.effort,speed:e.speed,taskBudget:e.taskBudget}}createChatReq=async(e,t)=>{this.currentPromptConfig=t;let n=e.model,o=n,i=e.modelConfig?.stream??this.config.stream,s;this.isVertex?s={name:i?`/models/${n}:streamRawPredict?alt=sse`:`/models/${n}:rawPredict`}:s={name:"/messages"};let a;if(e.functionCall&&e.functions&&e.functions.length>0)if(typeof e.functionCall=="string")switch(e.functionCall){case"auto":a={tool_choice:{type:"auto"}};break;case"required":a={tool_choice:{type:"any"}};break;case"none":throw new Error("functionCall none not supported")}else if("function"in e.functionCall)a={tool_choice:{type:"tool",name:e.functionCall.function.name}};else throw new Error("Invalid function call type, must be string or object");let c=e.chatPrompt.some(C=>"cache"in C&&C.cache)||e.functions?.some(C=>C.cache),l=!this.isVertex&&LI(o),u=e.chatPrompt.findIndex(C=>C.role!=="system"),d=u===-1?e.chatPrompt.length:u,p=(l?e.chatPrompt.slice(0,d):e.chatPrompt).filter(C=>C.role==="system"),m=p.map((C,T)=>({type:"text",text:C.content,...C.cache||c&&T===p.length-1?{cache_control:{type:"ephemeral"}}:{}})),g=l?e.chatPrompt.slice(d):e.chatPrompt.filter(C=>C.role!=="system"),h=e.functions?.map((C,T,E)=>{let D={type:"object",properties:{dummy:{type:"string",description:"An optional dummy parameter, do not use"}},required:[]},j=C.parameters?tr(C.parameters):void 0;return j===void 0||j&&typeof j=="object"&&Object.keys(j).length===0?j={...D}:j&&typeof j=="object"&&j.type==="object"&&(!("properties"in j)||!j.properties||Object.keys(j.properties).length===0)&&(j={...j,properties:{dummy:{type:"string",description:"An optional dummy parameter, do not use"}},required:[]}),{name:C.name,description:C.description,input_schema:j,...C.cache||c&&T===E.length-1?{cache_control:{type:"ephemeral"}}:{}}}),f=(this.config.tools??[]).map(C=>C&&typeof C=="object"&&"type"in C?C:{name:C.name,description:C.description,input_schema:C.input_schema?tr(C.input_schema):void 0,...C.cache_control?{cache_control:C.cache_control}:{}}),y=[...h??[],...f];y.length===0&&(y=void 0);let A=e.modelConfig?.maxTokens??this.config.maxTokens,b=e.modelConfig?.stopSequences??this.config.stopSequences,w=e.modelConfig?.temperature,v=e.modelConfig?.topP,F=e.modelConfig?.topK??this.config.topK,k=e.modelConfig?.n??this.config.n,O=e.modelConfig?.effort??this.config.effort,$=e.modelConfig?.speed??this.config.speed,N=e.modelConfig?.taskBudget??this.config.taskBudget;if(k&&k>1)throw new Error("Anthropic does not support sampling (n > 1)");let V=C=>C.includes("claude-opus-4-5"),I=nC(o),_,S;if(t?.thinkingTokenBudget){let C=this.config.thinkingTokenBudgetLevels,T=this.config.effortLevelMapping;if(t.thinkingTokenBudget==="none")_=void 0,S=void 0;else{let E=t.thinkingTokenBudget;if(nC(o))_={type:"adaptive",display:t?.showThoughts===!1?"omitted":"summarized"},S={effort:T?.[E]??"medium"};else if(V(o)){_={type:"enabled",budget_tokens:C?.[E]??1e4};let j=T?.[E]??"medium";j==="max"&&(j="high"),S={effort:j}}else _={type:"enabled",budget_tokens:C?.[E]??1e4}}}if(O){let C=V(o)&&(O==="max"||O==="xhigh")?"high":O;S={...S,effort:C}}if(N){if(N.total<2e4)throw new Error("Anthropic taskBudget.total must be at least 20000 tokens");if(this.isVertex)throw new Error("Anthropic task budgets are only supported on the first-party Anthropic API");S={...S,task_budget:N}}let H=[];if($==="fast"){if(this.isVertex)throw new Error("Anthropic fast mode is only supported on the first-party Anthropic API");H.push(FI)}N&&H.push(_I),!this.isVertex&&H.length>0&&(s.headers={"anthropic-beta":oC(H)});let W=DI(g,!!_);if(W.some(C=>C.role==="assistant"&&Array.isArray(C.content)&&C.content.length>0&&C.content[0]?.type==="tool_use")&&(_=void 0,S)){let C={};O&&S.effort&&(C.effort=S.effort),S.task_budget&&(C.task_budget=S.task_budget),S=Object.keys(C).length>0?C:void 0}if(this.usedStructuredOutput=!1,e.responseFormat&&e.responseFormat.type==="json_schema"&&e.responseFormat.schema){let C=e.responseFormat.schema.schema||e.responseFormat.schema;S={...S,format:{type:"json_schema",schema:tr(C)}},this.usedStructuredOutput=!0}let Y={...this.isVertex?{anthropic_version:"vertex-2023-10-16"}:{model:n},...A?{max_tokens:A}:{},...b&&b.length>0?{stop_sequences:b}:{},...w!==void 0&&!_&&!I?{temperature:w}:{},...v!==void 0&&!I&&(!_||v>=.95)?{top_p:v}:{},...F&&!_&&!I?{top_k:F}:{},...a,...y?{tools:y}:{},...i?{stream:!0}:{},...m.length>0?{system:m}:{},..._?{thinking:_}:{},...S?{output_config:S}:{},...$==="fast"?{speed:"fast"}:{},messages:W};return[s,Y]};createChatResp=e=>{if(e.type==="error")throw tC(e.error);if(e.stop_reason==="refusal"){let u=e.content.filter(m=>m.type==="text").map(m=>"text"in m?m.text:"").join(""),d=e.stop_details??void 0,p=d?.explanation??(u.length>0?u:"Anthropic refused to fulfill this request");throw new Ke(p,e.model,e.id,d?.category,d?.explanation)}let t=rC(e.stop_reason),n=this.currentPromptConfig?.thinkingTokenBudget!=="none"&&this.currentPromptConfig?.showThoughts!==!1,o="",i=[],s=[],a=[];for(let u of e.content)switch(u.type){case"text":if(o+=u.text??"",Array.isArray(u.citations))for(let d of u.citations)d?.url&&a.push({url:String(d.url),title:typeof d.title=="string"?d.title:void 0,snippet:typeof d.cited_text=="string"?d.cited_text:void 0});break;case"thinking":if(n){let d=u.thinking??"",p=u.signature;s.push({data:d,encrypted:!1,...typeof p=="string"?{signature:p}:{}})}break;case"redacted_thinking":if(n){let d=u.data??"",p=u.signature;s.push({data:d,encrypted:!0,...typeof p=="string"?{signature:p}:{}})}break;case"tool_use":i.push({id:u.id,type:"function",function:{name:u.name,params:u.input}});break}let c={index:0,id:e.id,finishReason:t};o&&(c.content=o),s.length>0&&(c.thoughtBlocks=s,c.thought=s.map(u=>u.data).join("")),i.length>0&&(c.functionCalls=i),a.length>0&&(c.citations=a);let l=[c];return this.tokensUsed={promptTokens:e.usage.input_tokens,completionTokens:e.usage.output_tokens,totalTokens:e.usage.input_tokens+e.usage.output_tokens+(e.usage.cache_creation_input_tokens||0)+(e.usage.cache_read_input_tokens||0),cacheCreationTokens:e.usage.cache_creation_input_tokens,cacheReadTokens:e.usage.cache_read_input_tokens,speed:e.usage.speed},{results:l,remoteId:e.id}};classifyStreamErrorStatus=e=>e.type==="error"?iC(e.error.type):void 0;createChatStreamResp=(e,t)=>{if(!("type"in e))throw new Error("Invalid Anthropic streaming event");let n=t;if(n.indexIdMap||(n.indexIdMap={}),e.type==="error"){let{error:i}=e;throw tC(i)}let o=0;if(e.type==="message_start"){let{message:i}=e,s=[{index:o,content:"",id:i.id}];return n.remoteId=i.id,this.tokensUsed={promptTokens:i.usage?.input_tokens??0,completionTokens:i.usage?.output_tokens??0,totalTokens:(i.usage?.input_tokens??0)+(i.usage?.output_tokens??0)+(i.usage?.cache_creation_input_tokens??0)+(i.usage?.cache_read_input_tokens??0),cacheCreationTokens:i.usage?.cache_creation_input_tokens,cacheReadTokens:i.usage?.cache_read_input_tokens,speed:i.usage?.speed},{results:s,remoteId:i.id}}if(e.type==="content_block_start"){let{content_block:i}=e;if(i.type==="text"){let s=[];if(Array.isArray(i.citations))for(let a of i.citations)a?.url&&s.push({url:String(a.url),title:typeof a.title=="string"?a.title:void 0,snippet:typeof a.cited_text=="string"?a.cited_text:void 0});return{results:[{index:o,content:i.text,...s.length?{citations:s}:{}}],remoteId:n.remoteId}}if(i.type==="thinking")return this.currentPromptConfig?.thinkingTokenBudget!=="none"&&this.currentPromptConfig?.showThoughts!==!1?{results:[{index:o,thought:i.thinking,thoughtBlocks:[{data:i.thinking,encrypted:!1}]}]}:{results:[{index:o,content:""}]};if(i.type==="tool_use"&&typeof i.id=="string"&&typeof e.index=="number"&&!n.indexIdMap[e.index]){n.indexIdMap[e.index]=i.id;let s=[{id:i.id,type:"function",function:{name:i.name,params:""}}];return{results:[{index:o,functionCalls:s}]}}if(i.type==="web_search_tool_result"||i.type==="server_tool_use")return{results:[{index:o,content:""}]}}if(e.type==="content_block_delta"){let{delta:i}=e;if(i.type==="citations_delta"){let s=i.citation;if(s&&typeof s.url=="string"&&s.url.length>0){let a=[{url:String(s.url),title:typeof s.title=="string"?s.title:void 0,snippet:typeof s.cited_text=="string"?s.cited_text:void 0}];return{results:[{index:o,content:"",citations:a}],remoteId:n.remoteId}}return{results:[{index:o,content:""}],remoteId:n.remoteId}}if(i.type==="text_delta"){let s=[];if(Array.isArray(i.citations))for(let a of i.citations)a?.url&&s.push({url:String(a.url),title:typeof a.title=="string"?a.title:void 0,snippet:typeof a.cited_text=="string"?a.cited_text:void 0});return{results:[{index:o,content:i.text,...s.length?{citations:s}:{}}]}}if(i.type==="thinking_delta")return this.currentPromptConfig?.thinkingTokenBudget!=="none"&&this.currentPromptConfig?.showThoughts!==!1?{results:[{index:o,thought:i.thinking,thoughtBlocks:[{data:i.thinking,encrypted:!1}]}]}:{results:[{index:o,content:""}]};if(i.type==="signature_delta")return{results:[{index:o,thoughtBlocks:[{data:"",encrypted:!1,signature:i.signature}]}]};if(i.type==="input_json_delta"){let s=n.indexIdMap[e.index];if(!s)return{results:[{index:o,content:""}]};let a=[{id:s,type:"function",function:{name:"",params:i.partial_json}}];return{results:[{index:o,functionCalls:a}]}}}if(e.type==="message_delta"){let{delta:i,usage:s}=e;if(this.tokensUsed={promptTokens:this.tokensUsed?.promptTokens??0,completionTokens:s.output_tokens,totalTokens:(this.tokensUsed?.promptTokens??0)+s.output_tokens+(this.tokensUsed?.cacheCreationTokens??0)+(this.tokensUsed?.cacheReadTokens??0),cacheCreationTokens:this.tokensUsed?.cacheCreationTokens,cacheReadTokens:this.tokensUsed?.cacheReadTokens,speed:s.speed??this.tokensUsed?.speed},i.stop_reason==="refusal"){let c=i.stop_details??void 0;throw new Ke(c?.explanation??"Anthropic refused to fulfill this request",void 0,n.remoteId,c?.category,c?.explanation)}return{results:[{index:o,content:"",finishReason:rC(i.stop_reason)}]}}return{results:[{index:o,content:""}]}};supportsImplicitCaching=()=>!0},$o=class r extends St{static create(e){return new r(e)}constructor({apiKey:e,projectId:t,region:n,config:o,options:i,models:s}){let a=t!==void 0&&n!==void 0,c,l;if(t!==void 0&&n!==void 0){if(!e)throw new Error("Anthropic Vertex API key not set");if(typeof e!="function")throw new Error("Anthropic Vertex API key must be a function for token-based authentication");c=`https://${Rs(n)}/v1/projects/${t}/locations/${n}/publishers/anthropic/`,l=async()=>({Authorization:`Bearer ${await e()}`,"anthropic-beta":"web-search-2025-03-05"})}else{if(!e)throw new Error("Anthropic API key not set");c="https://api.anthropic.com/v1",l=async()=>({"anthropic-version":"2023-06-01","anthropic-beta":oC(),"x-api-key":typeof e=="function"?await e():e})}let u={...Op(),...o},d=new Ep(u,a),p=g=>{let h=ut({model:g,modelInfo:Pr,models:s});return{functions:!0,streaming:!0,hasThinkingBudget:h?.supported?.thinkingBudget??!1,hasShowThoughts:h?.supported?.showThoughts??!1,structuredOutputs:h?.supported?.structuredOutputs??!1,functionCot:!0,media:{images:{supported:!0,formats:["image/jpeg","image/png","image/gif","image/webp"],maxSize:5*1024*1024,detailLevels:["high","low","auto"]},audio:{supported:!1,formats:[],maxDuration:0},files:{supported:!1,formats:[],maxSize:0,uploadMethod:"none"},urls:{supported:!1,webSearch:!1,contextFetching:!1}},caching:{supported:!0,types:["ephemeral"],cacheBreakpoints:!1},thinking:h?.supported?.thinkingBudget??!1,multiTurn:!0}},m=s?.map(g=>{let h=g,x=h?.config;if(!x)return g;let f={};x.maxTokens!==void 0&&(f.maxTokens=x.maxTokens),x.temperature!==void 0&&(f.temperature=x.temperature),x.topP!==void 0&&(f.topP=x.topP),x.topK!==void 0&&(f.topK=x.topK),x.presencePenalty!==void 0&&(f.presencePenalty=x.presencePenalty),x.frequencyPenalty!==void 0&&(f.frequencyPenalty=x.frequencyPenalty),x.stopSequences!==void 0&&(f.stopSequences=x.stopSequences),x.endSequences!==void 0&&(f.endSequences=x.endSequences),x.stream!==void 0&&(f.stream=x.stream),x.n!==void 0&&(f.n=x.n),x.effort!==void 0&&(f.effort=x.effort),x.speed!==void 0&&(f.speed=x.speed),x.taskBudget!==void 0&&(f.taskBudget=x.taskBudget);let y={...h};Object.keys(f).length>0&&(y.modelConfig={...h.modelConfig??{},...f});let A=x.thinking?.thinkingTokenBudget;if(typeof A=="number"){let b=u.thinkingTokenBudgetLevels,w=[["minimal",b?.minimal??1024],["low",b?.low??5e3],["medium",b?.medium??1e4],["high",b?.high??2e4],["highest",b?.highest??32e3]],v="minimal",F=Number.POSITIVE_INFINITY;for(let[k,O]of w){let $=Math.abs(A-O);$<F&&(F=$,v=k)}y.thinkingTokenBudget=v}return x.thinking?.includeThoughts!==void 0&&(y.showThoughts=!!x.thinking.includeThoughts),y});super(d,{name:"Anthropic",apiURL:c,headers:l,modelInfo:Pr,defaults:{model:u.model},options:i,supportFor:p,models:m??s})}};function UI(r){return r.content?.length?r.content.map(e=>e.type==="text"?{type:"text",text:e.text}:e.type==="image"?{type:"image",source:{type:"base64",media_type:e.mimeType,data:e.image}}:e.type==="audio"?{type:"text",text:e.transcription??`[MCP audio result: ${e.mimeType??"application/octet-stream"}]`}:e.type==="url"?{type:"text",text:e.cachedContent??[e.title,e.description,e.url].filter(Boolean).join(`
|
|
1254
1254
|
`)}:{type:"text",text:e.extractedText??`[MCP file result: ${e.filename??"file"} (${e.mimeType})]`}):r.result}function DI(r,e){let t=r.map(o=>{switch(o.role){case"system":return{role:"system",content:o.cache?[{type:"text",text:o.content,cache_control:{type:"ephemeral"}}]:o.content};case"function":return{role:"user",content:[{type:"tool_result",content:UI(o),tool_use_id:o.functionId,...o.isError?{is_error:!0}:{},...o.cache?{cache_control:{type:"ephemeral"}}:{}}]};case"user":{if(typeof o.content=="string")return{role:"user",content:o.cache?[{type:"text",text:o.content,cache_control:{type:"ephemeral"}}]:o.content};let i=o.content.map(s=>{switch(s.type){case"text":return{type:"text",text:s.text,...s.cache?{cache_control:{type:"ephemeral"}}:{}};case"image":return{type:"image",source:{type:"base64",media_type:s.mimeType,data:s.image},...s.cache?{cache_control:{type:"ephemeral"}}:{}};default:throw new Error("Invalid content type")}});if(o.cache&&i.length>0){let s=i.length-1,a=i[s];a&&(a.type==="text"||a.type==="image")&&(i[s]={...a,cache_control:{type:"ephemeral"}})}return{role:"user",content:i}}case"assistant":{let i="",s=[],a=o.thoughtBlocks;if(Array.isArray(a)&&a.length>0)for(let c of a)c.encrypted?s.push(c.signature?{type:"redacted_thinking",data:c.data,signature:c.signature}:{type:"redacted_thinking",data:c.data}):s.push(c.signature?{type:"thinking",thinking:c.data,signature:c.signature}:{type:"thinking",thinking:c.data});if(typeof o.content=="string"&&(s.length>0?i=[...s,{type:"text",text:o.content}]:i=o.content),typeof o.functionCalls<"u"&&(i=o.functionCalls.map(c=>{let l={};if(typeof c.function.params=="string"){let u=c.function.params;if(u.trim().length===0)l={};else try{l=JSON.parse(u)}catch{throw new Error(`Failed to parse function params JSON: ${u}`)}}else typeof c.function.params=="object"&&(l=c.function.params);return{type:"tool_use",id:c.id,name:c.function.name,input:l,...o.cache?{cache_control:{type:"ephemeral"}}:{}}}),Array.isArray(i)&&s.length>0&&(i=[...s,...i])),o.cache){if(typeof i=="string")i=[{type:"text",text:i,cache_control:{type:"ephemeral"}}];else if(Array.isArray(i)&&i.length>0){let c=i.length-1,l=i[c];l&&l.type==="text"&&(i[c]={...l,cache_control:{type:"ephemeral"}})}}return{role:"assistant",content:i}}default:throw new Error("Invalid role")}}),n=jI(t);return GI(n)}function jI(r){let e=[];for(let[t,n]of r.entries()){if(n.role!=="assistant"){e.push(n);continue}if(t>0&&r.at(t-1)?.role==="assistant"){let o=e.pop();e.push({...o||{},...n})}else e.push(n)}return e}function GI(r){return r.map(e=>e.role==="assistant"&&typeof e.content=="string"?{...e,content:e.content.replace(/\s+$/,"")}:e)}function rC(r){if(r)switch(r){case"stop_sequence":return"stop";case"max_tokens":case"model_context_window_exceeded":return"length";case"tool_use":return"function_call";case"refusal":return"content_filter";case"end_turn":case"pause_turn":return"stop";default:return"stop"}}var $t=(r,e,t="audio/mpeg")=>{switch(r){case"wav":return"audio/wav";case"mp3":return"audio/mpeg";case"flac":return"audio/flac";case"opus":return"audio/opus";case"aac":return"audio/aac";case"pcm":case"pcm16":case"raw":return e?`audio/pcm;rate=${e}`:"audio/pcm";case"mulaw":case"ulaw":return e?`audio/basic;rate=${e}`:"audio/basic";case"alaw":return e?`audio/alaw;rate=${e}`:"audio/alaw";case"ogg":return"audio/ogg";default:return t}},Ct=r=>{let e=r?.toLowerCase();if(e){if(e.includes("wav"))return"wav";if(e.includes("mpeg")||e.includes("mp3"))return"mp3";if(e.includes("flac"))return"flac";if(e.includes("opus"))return"opus";if(e.includes("aac"))return"aac";if(e.includes("ogg"))return"ogg";if(e.includes("mulaw"))return"mulaw";if(e.includes("ulaw")||e.includes("basic"))return"ulaw";if(e.includes("alaw"))return"alaw";if(e.includes("pcm16"))return"pcm16";if(e.includes("pcm"))return"pcm"}},BI=r=>{let e=globalThis;if(e.Buffer)return new Uint8Array(e.Buffer.from(r,"base64"));let t=atob(r),n=new Uint8Array(t.length);for(let o=0;o<t.length;o++)n[o]=t.charCodeAt(o);return n},zI=r=>{let e=globalThis;if(e.Buffer)return e.Buffer.from(r).toString("base64");let t="";for(let n of r)t+=String.fromCharCode(n);return btoa(t)},Mr=r=>{if(r.length===0)return"";if(r.length===1)return r[0]??"";let e=r.map(i=>BI(i)),t=e.reduce((i,s)=>i+s.length,0),n=new Uint8Array(t),o=0;for(let i of e)n.set(i,o),o+=i.length;return zI(n)};var qI=r=>{let e=globalThis,t=r.includes(",")?r.slice(r.indexOf(",")+1):r;if(e.Buffer)return new Uint8Array(e.Buffer.from(t,"base64"));let n=atob(t),o=new Uint8Array(n.length);for(let i=0;i<n.length;i++)o[i]=n.charCodeAt(i);return o},VI=r=>{let e=globalThis;if(e.Buffer)return e.Buffer.from(r).toString("base64");let t="";for(let n of r)t+=String.fromCharCode(n);return btoa(t)},HI=async r=>{try{return(r.headers.get("content-type")??"").includes("application/json")?await r.json():await r.text()}catch{return}},aC=async(r,e,t)=>{if(r.ok)return;let n=await HI(r);throw r.status===401||r.status===403?new vt(e,t,n):new Qe(r.status,r.statusText,e,t,n)},cC=async(r,e,t,n)=>{try{return await r(e,t)}catch(o){throw new tt(o instanceof Error?o:new Error(String(o)),e,n,void 0)}},Fp=(r,e="wav")=>{let t=r.format??Ct(r.mimeType)??e,n=r.mimeType??$t(t,r.sampleRate);return new Blob([qI(r.data)],{type:n})},_p=(r,e="wav")=>{if(r.filename)return r.filename;let t=r.format??Ct(r.mimeType)??e;return`audio.${t==="pcm16"?"pcm":t}`},Np=r=>{if(typeof r=="string")return{text:r};let e=r,t=Array.isArray(e?.segments)?e.segments.map(o=>({id:o.id,text:String(o.text??""),start:typeof o.start=="number"?o.start:void 0,end:typeof o.end=="number"?o.end:void 0,speaker:o.speaker??o.speaker_id})):void 0,n=Array.isArray(e?.words)?e.words.map(o=>({id:o.id,text:String(o.text??o.word??""),start:typeof o.start=="number"?o.start:void 0,end:typeof o.end=="number"?o.end:void 0,speaker:o.speaker??o.speaker_id})):void 0;return{text:String(e?.text??""),language:typeof e?.language=="string"?e.language:void 0,duration:typeof e?.duration=="number"?e.duration:void 0,segments:t,words:n}},Uo=async({url:r,headers:e,audio:t,fields:n,fetch:o,abortSignal:i})=>{let s=new FormData;for(let[l,u]of Object.entries(n))u!==void 0&&s.append(l,String(u));s.append("file",Fp(t),_p(t));let a=await cC(o??globalThis.fetch,r,{method:"POST",headers:e,body:s,signal:i},n);return await aC(a,r,n),(a.headers.get("content-type")??"").includes("text/plain")?{text:await a.text()}:Np(await a.json())},fn=async({url:r,headers:e,body:t,format:n,transcript:o,fetch:i,abortSignal:s})=>{let a=await cC(i??globalThis.fetch,r,{method:"POST",headers:{"Content-Type":"application/json",...e},body:JSON.stringify(t),signal:s},t);await aC(a,r,t);let c=a.headers.get("content-type")??"";if(c.includes("application/json")){let d=await a.json(),p=d.audio_data??d.audioData??d.data??d.audio?.data??d.output?.audio?.data??d.candidates?.[0]?.content?.parts?.find(g=>g.inlineData?.data||g.inline_data?.data)?.inlineData?.data??d.candidates?.[0]?.content?.parts?.find(g=>g.inline_data?.data)?.inline_data?.data;if(typeof p!="string")throw new Error("Speech response JSON did not include audio data");let m=typeof d.mimeType=="string"?d.mimeType:typeof d.mime_type=="string"?d.mime_type:d.candidates?.[0]?.content?.parts?.find(g=>g.inlineData?.mimeType)?.inlineData?.mimeType??d.candidates?.[0]?.content?.parts?.find(g=>g.inline_data?.mime_type)?.inline_data?.mime_type??$t(n);return{data:p,format:n??Ct(m),mimeType:m,transcript:o}}let l=new Uint8Array(await a.arrayBuffer()),u=c||$t(n);return{data:VI(l),format:n??Ct(u),mimeType:u,transcript:o}};var Er=()=>({output:{enabled:!0,voice:"alloy",format:"wav",includeTranscript:!0}}),vs=()=>({input:{format:"pcm16",mimeType:"audio/pcm;rate=16000",sampleRate:16e3,channels:1},output:{enabled:!0,voice:"Kore",format:"pcm16",mimeType:"audio/pcm;rate=24000",sampleRate:24e3,channels:1,includeTranscript:!0},live:{turnTimeoutMs:3e4}}),bt=(r,e)=>{if(!(!r&&!e))return{input:r?.input||e?.input?{...r?.input,...e?.input}:void 0,output:r?.output||e?.output?{...r?.output,...e?.output}:void 0,live:r?.live||e?.live?{...r?.live,...e?.live}:void 0}},qt=r=>r?.output?.enabled===!0;var KI=/^gpt-5\.6($|-)/;function hn(r){return KI.test(typeof r=="string"?r:"")}var lC={mode:"explicit"},uC=(r,e,t)=>!t||!hn(r.model)?!1:e?.contextCache!==void 0||r.chatPrompt.some(n=>"cache"in n&&n.cache)||(r.functions?.some(n=>n.cache)??!1),dC=(r,e)=>r?.promptCacheKey??e?.promptCacheKey??r?.sessionId??e?.sessionId,WI=r=>{let e=new Set;for(let t=0;t<r.length;t++){let n=r[t];(t<r.length-1||n&&"cache"in n&&n.cache)&&e.add(t)}return e},JI=r=>{let e=r.content;if(typeof e=="string")return e.length===0?r:{...r,content:[{type:"text",text:e,prompt_cache_breakpoint:lC}]};if(Array.isArray(e)&&e.length>0){let t=e,n=t[t.length-1];return{...r,content:[...t.slice(0,-1),{...n,prompt_cache_breakpoint:lC}]}}return r},pC=(r,e)=>{let t=WI(e),n=0;return{messages:r.map((i,s)=>{if(!t.has(s))return i;let a=JI(i);return a!==i&&n++,a}),markerCount:n}};var nr=(Z=>(Z.GPT4="gpt-4",Z.GPT41="gpt-4.1",Z.GPT41Mini="gpt-4.1-mini",Z.GPT41Nano="gpt-4.1-nano",Z.GPT4O="gpt-4o",Z.GPT4OMini="gpt-4o-mini",Z.GPTAudio="gpt-audio",Z.GPTAudioMini="gpt-audio-mini",Z.GPTAudio15="gpt-audio-1.5",Z.GPTRealtime15="gpt-realtime-1.5",Z.GPTRealtime2="gpt-realtime-2",Z.GPTRealtimeWhisper="gpt-realtime-whisper",Z.GPTRealtimeTranslate="gpt-realtime-translate",Z.GPT4ChatGPT4O="chatgpt-4o-latest",Z.GPT4Turbo="gpt-4-turbo",Z.GPT35Turbo="gpt-3.5-turbo",Z.GPT35TurboInstruct="gpt-3.5-turbo-instruct",Z.GPT35TextDavinci002="text-davinci-002",Z.GPT3TextBabbage002="text-babbage-002",Z.GPT3TextAda001="text-ada-001",Z.GPT5="gpt-5",Z.GPT5Nano="gpt-5-nano",Z.GPT5Mini="gpt-5-mini",Z.GPT5Chat="gpt-5-chat",Z.GPT5ChatLatest="gpt-5-chat-latest",Z.GPT5Codex="gpt-5-codex",Z.GPT5Pro="gpt-5-pro",Z.GPT51="gpt-5.1",Z.GPT51ChatLatest="gpt-5.1-chat-latest",Z.GPT51Codex="gpt-5.1-codex",Z.GPT51CodexMini="gpt-5.1-codex-mini",Z.GPT51CodexMax="gpt-5.1-codex-max",Z.GPT52="gpt-5.2",Z.GPT52ChatLatest="gpt-5.2-chat-latest",Z.GPT52Codex="gpt-5.2-codex",Z.GPT52Pro="gpt-5.2-pro",Z.GPT54="gpt-5.4",Z.GPT54Mini="gpt-5.4-mini",Z.GPT54Nano="gpt-5.4-nano",Z.GPT55="gpt-5.5",Z.GPT55Pro="gpt-5.5-pro",Z.GPT56="gpt-5.6",Z.GPT56Sol="gpt-5.6-sol",Z.GPT56Terra="gpt-5.6-terra",Z.GPT56Luna="gpt-5.6-luna",Z.O1="o1",Z.O1Mini="o1-mini",Z.O3="o3",Z.O3Mini="o3-mini",Z.O4Mini="o4-mini",Z))(nr||{}),$n=(n=>(n.TextEmbeddingAda002="text-embedding-ada-002",n.TextEmbedding3Small="text-embedding-3-small",n.TextEmbedding3Large="text-embedding-3-large",n))($n||{});var Lp=()=>structuredClone({...Ue(),model:"gpt-audio-mini",embedModel:"text-embedding-3-small",audio:Er(),stream:!1}),Nc=r=>r==="gpt-audio"||r==="gpt-audio-mini"||r.startsWith("gpt-audio-"),$p=(r,e)=>{let t=bt(r,e);return qt(t)?bt(Er(),t):t},YI=r=>{let e=r.format??Ct(r.mimeType);if(e==="wav"||e==="mp3")return e;throw new Error(`OpenAI audio chat input supports only wav and mp3 audio, received ${e??r.mimeType??"unknown format"}`)},QI=r=>{let e=r??"wav";switch(e){case"wav":return"wav";case"mp3":return"mp3";case"flac":return"flac";case"opus":return"opus";case"aac":return"aac";case"pcm16":return"pcm16";case"pcm":return"pcm16";case"ogg":throw new Error("OpenAI audio chat output does not support ogg format");case"raw":case"mulaw":case"ulaw":case"alaw":throw new Error(`OpenAI audio chat output does not support ${e} format`)}},Lc=(r,e)=>{let t=r.format??Ct(r.mimeType);return e?.allowPcm16&&(t==="pcm16"||t==="pcm")?{type:"input_audio",input_audio:{data:r.data,format:"pcm16",mimeType:r.mimeType,sampleRate:r.sampleRate,channels:r.channels}}:{type:"input_audio",input_audio:{data:r.data,format:YI(r),mimeType:r.mimeType,sampleRate:r.sampleRate,channels:r.channels}}},$c=(r,e,t)=>{let n=$p(t,e.modelConfig?.audio);if(!qt(n))return r;if(e.responseFormat||r.response_format)throw new Error("OpenAI audio chat models do not support structured response formats with audio output");let o=n?.output,i=QI(o?.format);return{...r,modalities:["text","audio"],audio:{voice:o?.voice??"alloy",format:i}}},Uc=r=>{if(r?.data)return{id:r.id,data:r.data,transcript:r.transcript,expiresAt:r.expires_at}},Dc=r=>{if(!r)return;let e=r.data??r.delta;if(e)return{id:r.id,data:e,transcript:r.transcript,expiresAt:r.expires_at,isDelta:!0}};var mC={minimal:"low",low:"low",medium:"medium",high:"high",highest:"xhigh"},XI={...mC,highest:"max"},gC={minimal:"minimal",low:"medium",medium:"high",high:"high",highest:"xhigh"};function fC(r){return hn(r)?"none":void 0}function hC(r,e){return e==="none"?fC(r):hn(r)?mC[e]:gC[e]}function xC(r,e){return e==="none"?fC(r):hn(r)?XI[e]:gC[e]}var Or=(K=>(K.GPT4="gpt-4",K.GPT41="gpt-4.1",K.GPT41Mini="gpt-4.1-mini",K.GPT41Nano="gpt-4.1-nano",K.GPT4O="gpt-4o",K.GPT4OMini="gpt-4o-mini",K.GPT4ChatGPT4O="chatgpt-4o-latest",K.GPT4Turbo="gpt-4-turbo",K.GPT35Turbo="gpt-3.5-turbo",K.GPT35TurboInstruct="gpt-3.5-turbo-instruct",K.GPT35TextDavinci002="text-davinci-002",K.GPT3TextBabbage002="text-babbage-002",K.GPT3TextAda001="text-ada-001",K.GPT5="gpt-5",K.GPT5Nano="gpt-5-nano",K.GPT5Mini="gpt-5-mini",K.GPT5Chat="gpt-5-chat",K.GPT5ChatLatest="gpt-5-chat-latest",K.GPT5Codex="gpt-5-codex",K.GPT5Pro="gpt-5-pro",K.GPT51="gpt-5.1",K.GPT51ChatLatest="gpt-5.1-chat-latest",K.GPT51Codex="gpt-5.1-codex",K.GPT51CodexMini="gpt-5.1-codex-mini",K.GPT51CodexMax="gpt-5.1-codex-max",K.GPT52="gpt-5.2",K.GPT52ChatLatest="gpt-5.2-chat-latest",K.GPT52Codex="gpt-5.2-codex",K.GPT52Pro="gpt-5.2-pro",K.GPT54="gpt-5.4",K.GPT54Mini="gpt-5.4-mini",K.GPT54Nano="gpt-5.4-nano",K.GPT55="gpt-5.5",K.GPT55Pro="gpt-5.5-pro",K.GPT56="gpt-5.6",K.GPT56Sol="gpt-5.6-sol",K.GPT56Terra="gpt-5.6-terra",K.GPT56Luna="gpt-5.6-luna",K.O1Pro="o1-pro",K.O1="o1",K.O1Mini="o1-mini",K.O3Pro="o3-pro",K.O3="o3",K.O3Mini="o3-mini",K.O4Mini="o4-mini",K))(Or||{});var rr=[{name:"gpt-4",currency:"usd",promptTokenCostPer1M:30,completionTokenCostPer1M:60},{name:"gpt-4.1",currency:"usd",promptTokenCostPer1M:2,completionTokenCostPer1M:8,supported:{structuredOutputs:!0}},{name:"gpt-4.1-mini",currency:"usd",promptTokenCostPer1M:.4,completionTokenCostPer1M:1.6,supported:{structuredOutputs:!0}},{name:"gpt-4.1-nano",currency:"usd",promptTokenCostPer1M:.1,completionTokenCostPer1M:.4,supported:{structuredOutputs:!0}},{name:"gpt-4o",currency:"usd",promptTokenCostPer1M:2.5,completionTokenCostPer1M:10,supported:{structuredOutputs:!0}},{name:"gpt-4o-mini",currency:"usd",promptTokenCostPer1M:.15,completionTokenCostPer1M:.6,supported:{structuredOutputs:!0}},{name:"gpt-audio",audio:{input:!0,output:!0}},{name:"gpt-audio-mini",audio:{input:!0,output:!0}},{name:"gpt-audio-1.5",audio:{input:!0,output:!0}},{name:"gpt-realtime-1.5",audio:{input:!0,output:!0}},{name:"gpt-realtime-2",audio:{input:!0,output:!0},supported:{thinkingBudget:!0}},{name:"gpt-realtime-whisper",audio:{input:!0,output:!1}},{name:"gpt-realtime-translate",audio:{input:!0,output:!0}},{name:"chatgpt-4o-latest",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:15,supported:{structuredOutputs:!0}},{name:"gpt-4-turbo",currency:"usd",promptTokenCostPer1M:10,completionTokenCostPer1M:30,supported:{structuredOutputs:!0}},{name:"gpt-3.5-turbo",currency:"usd",promptTokenCostPer1M:.5,completionTokenCostPer1M:1.5},{name:"gpt-5-nano",currency:"usd",promptTokenCostPer1M:.05,completionTokenCostPer1M:.4,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5-mini",currency:"usd",promptTokenCostPer1M:.25,completionTokenCostPer1M:2,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5-chat",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5-chat-latest",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5-pro",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:120,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5-codex",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.1",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.1-chat-latest",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.1-codex",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.1-codex-mini",currency:"usd",promptTokenCostPer1M:.25,completionTokenCostPer1M:2,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.1-codex-max",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.2",currency:"usd",promptTokenCostPer1M:1.75,completionTokenCostPer1M:14,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.2-chat-latest",currency:"usd",promptTokenCostPer1M:1.75,completionTokenCostPer1M:14,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.2-codex",currency:"usd",promptTokenCostPer1M:1.75,completionTokenCostPer1M:14,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.2-pro",currency:"usd",promptTokenCostPer1M:21,completionTokenCostPer1M:168,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.4",currency:"usd",promptTokenCostPer1M:2.5,completionTokenCostPer1M:15,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.4-mini",currency:"usd",promptTokenCostPer1M:.75,completionTokenCostPer1M:4.5,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.4-nano",currency:"usd",promptTokenCostPer1M:.2,completionTokenCostPer1M:1.25,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0}},{name:"gpt-5.5",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:30,cacheReadTokenCostPer1M:.5,longContextThreshold:272e3,longContextPromptTokenCostPer1M:10,longContextCompletionTokenCostPer1M:45,longContextCacheReadTokenCostPer1M:1,contextWindow:1e6,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0,thinkingBudget:!0}},{name:"gpt-5.5-pro",currency:"usd",promptTokenCostPer1M:30,completionTokenCostPer1M:180,longContextThreshold:272e3,longContextPromptTokenCostPer1M:60,longContextCompletionTokenCostPer1M:270,contextWindow:1e6,isExpensive:!0,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0,thinkingBudget:!0}},{name:"gpt-5.6-sol",aliases:["gpt-5.6"],currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:30,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,longContextThreshold:272e3,longContextPromptTokenCostPer1M:10,longContextCompletionTokenCostPer1M:45,longContextCacheReadTokenCostPer1M:1,contextWindow:105e4,maxTokens:128e3,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0,thinkingBudget:!0}},{name:"gpt-5.6-terra",currency:"usd",promptTokenCostPer1M:2,completionTokenCostPer1M:12,cacheReadTokenCostPer1M:.2,cacheWriteTokenCostPer1M:2.5,longContextThreshold:272e3,longContextPromptTokenCostPer1M:4,longContextCompletionTokenCostPer1M:18,longContextCacheReadTokenCostPer1M:.4,contextWindow:105e4,maxTokens:128e3,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0,thinkingBudget:!0}},{name:"gpt-5.6-luna",currency:"usd",promptTokenCostPer1M:.2,completionTokenCostPer1M:1.2,cacheReadTokenCostPer1M:.02,cacheWriteTokenCostPer1M:.25,longContextThreshold:272e3,longContextPromptTokenCostPer1M:.4,longContextCompletionTokenCostPer1M:1.8,longContextCacheReadTokenCostPer1M:.04,contextWindow:105e4,maxTokens:128e3,notSupported:{temperature:!0,topP:!0},supported:{structuredOutputs:!0,thinkingBudget:!0}},{name:"o1",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:60,supported:{structuredOutputs:!0}},{name:"o1-mini",currency:"usd",promptTokenCostPer1M:1.1,completionTokenCostPer1M:4.4,supported:{structuredOutputs:!0}},{name:"o3",currency:"usd",promptTokenCostPer1M:2,completionTokenCostPer1M:8,supported:{structuredOutputs:!0}},{name:"o4-mini",currency:"usd",promptTokenCostPer1M:1.1,completionTokenCostPer1M:4.4,supported:{structuredOutputs:!0}},{name:"text-embedding-ada-002",currency:"usd",promptTokenCostPer1M:.1,completionTokenCostPer1M:.1},{name:"text-embedding-3-small",currency:"usd",promptTokenCostPer1M:.02,completionTokenCostPer1M:.02},{name:"text-embedding-3-large",currency:"usd",promptTokenCostPer1M:.13,completionTokenCostPer1M:.13}],Do=[{name:"gpt-4",currency:"usd",promptTokenCostPer1M:30,completionTokenCostPer1M:60},{name:"gpt-4.1",currency:"usd",promptTokenCostPer1M:2,completionTokenCostPer1M:8,supported:{structuredOutputs:!0}},{name:"gpt-4.1-mini",currency:"usd",promptTokenCostPer1M:.4,completionTokenCostPer1M:1.6,supported:{structuredOutputs:!0}},{name:"gpt-4.1-nano",currency:"usd",promptTokenCostPer1M:.1,completionTokenCostPer1M:.4,supported:{structuredOutputs:!0}},{name:"gpt-4o",currency:"usd",promptTokenCostPer1M:2.5,completionTokenCostPer1M:10,supported:{structuredOutputs:!0}},{name:"gpt-4o-mini",currency:"usd",promptTokenCostPer1M:.15,completionTokenCostPer1M:.6,supported:{structuredOutputs:!0}},{name:"chatgpt-4o-latest",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:15,supported:{structuredOutputs:!0}},{name:"gpt-4-turbo",currency:"usd",promptTokenCostPer1M:10,completionTokenCostPer1M:30,supported:{structuredOutputs:!0}},{name:"gpt-3.5-turbo",currency:"usd",promptTokenCostPer1M:.5,completionTokenCostPer1M:1.5},{name:"gpt-5-nano",currency:"usd",promptTokenCostPer1M:.05,completionTokenCostPer1M:.4,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5-mini",currency:"usd",promptTokenCostPer1M:.25,completionTokenCostPer1M:2,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5-chat",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5-chat-latest",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5-pro",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:120,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5-codex",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.1",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.1-chat-latest",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.1-codex",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.1-codex-mini",currency:"usd",promptTokenCostPer1M:.25,completionTokenCostPer1M:2,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.1-codex-max",currency:"usd",promptTokenCostPer1M:1.25,completionTokenCostPer1M:10,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.2",currency:"usd",promptTokenCostPer1M:1.75,completionTokenCostPer1M:14,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.2-chat-latest",currency:"usd",promptTokenCostPer1M:1.75,completionTokenCostPer1M:14,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.2-codex",currency:"usd",promptTokenCostPer1M:1.75,completionTokenCostPer1M:14,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.2-pro",currency:"usd",promptTokenCostPer1M:21,completionTokenCostPer1M:168,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.4",currency:"usd",promptTokenCostPer1M:2.5,completionTokenCostPer1M:15,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.4-mini",currency:"usd",promptTokenCostPer1M:.75,completionTokenCostPer1M:4.5,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.4-nano",currency:"usd",promptTokenCostPer1M:.2,completionTokenCostPer1M:1.25,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.5",currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:30,cacheReadTokenCostPer1M:.5,longContextThreshold:272e3,longContextPromptTokenCostPer1M:10,longContextCompletionTokenCostPer1M:45,longContextCacheReadTokenCostPer1M:1,contextWindow:1e6,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.5-pro",currency:"usd",promptTokenCostPer1M:30,completionTokenCostPer1M:180,longContextThreshold:272e3,longContextPromptTokenCostPer1M:60,longContextCompletionTokenCostPer1M:270,contextWindow:1e6,isExpensive:!0,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.6-sol",aliases:["gpt-5.6"],currency:"usd",promptTokenCostPer1M:5,completionTokenCostPer1M:30,cacheReadTokenCostPer1M:.5,cacheWriteTokenCostPer1M:6.25,longContextThreshold:272e3,longContextPromptTokenCostPer1M:10,longContextCompletionTokenCostPer1M:45,longContextCacheReadTokenCostPer1M:1,contextWindow:105e4,maxTokens:128e3,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.6-terra",currency:"usd",promptTokenCostPer1M:2,completionTokenCostPer1M:12,cacheReadTokenCostPer1M:.2,cacheWriteTokenCostPer1M:2.5,longContextThreshold:272e3,longContextPromptTokenCostPer1M:4,longContextCompletionTokenCostPer1M:18,longContextCacheReadTokenCostPer1M:.4,contextWindow:105e4,maxTokens:128e3,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"gpt-5.6-luna",currency:"usd",promptTokenCostPer1M:.2,completionTokenCostPer1M:1.2,cacheReadTokenCostPer1M:.02,cacheWriteTokenCostPer1M:.25,longContextThreshold:272e3,longContextPromptTokenCostPer1M:.4,longContextCompletionTokenCostPer1M:1.8,longContextCacheReadTokenCostPer1M:.04,contextWindow:105e4,maxTokens:128e3,notSupported:{temperature:!0,topP:!0},supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"o1-pro",currency:"usd",promptTokenCostPer1M:150,completionTokenCostPer1M:600,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0},isExpensive:!0},{name:"o1",currency:"usd",promptTokenCostPer1M:15,completionTokenCostPer1M:60,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"o3-pro",currency:"usd",promptTokenCostPer1M:20,completionTokenCostPer1M:80,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0},isExpensive:!0},{name:"o3",currency:"usd",promptTokenCostPer1M:2,completionTokenCostPer1M:8,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"o3-mini",currency:"usd",promptTokenCostPer1M:1.1,completionTokenCostPer1M:4.4,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}},{name:"o4-mini",currency:"usd",promptTokenCostPer1M:1.1,completionTokenCostPer1M:4.4,supported:{thinkingBudget:!0,showThoughts:!0,structuredOutputs:!0}}];var Gc=()=>structuredClone({...Ue(),model:"gpt-realtime-2",embedModel:"text-embedding-3-small",audio:bt(Er(),{output:{enabled:!0,voice:"marin",format:"pcm16",includeTranscript:!0},input:{format:"pcm16",mimeType:"audio/pcm",sampleRate:24e3,channels:1},live:{turnTimeoutMs:3e4}}),stream:!1}),Up=()=>structuredClone({...Ue(),model:"gpt-realtime-whisper",embedModel:"text-embedding-3-small",audio:{input:{format:"pcm16",mimeType:"audio/pcm",sampleRate:24e3,channels:1},live:{turnTimeoutMs:3e4}},stream:!1}),Is=r=>r==="gpt-realtime-2"||r==="gpt-realtime"||r==="gpt-realtime-1.5"||r==="gpt-realtime-mini"||r.startsWith("gpt-realtime-"),Un=r=>r==="gpt-realtime-whisper",Ts=(r,e)=>bt(bt(Gc().audio,r),e),Bc=(r,e,t)=>Un(r)?!0:Is(r)&&qt(Ts(e,t)),jo=r=>({name:r.apiName??"openai-realtime-audio",localCall:async(e,t)=>t?cT(r):await yC(r)}),ZI=r=>`wss://api.openai.com/v1/${Un(r)?"realtime/transcription_sessions":"realtime"}?model=${encodeURIComponent(r)}`,eT=({model:r,wsURL:e})=>e?e(String(r)):ZI(String(r)),Ss=r=>r.providerName??"OpenAI Realtime",jc=(r,e,t)=>{if(r.addEventListener){r.addEventListener(e,t);return}if(r.on){r.on(e,t);return}r[`on${e}`]=t},tT=r=>{let e=r?.data??r;return typeof e=="string"?JSON.parse(e):e instanceof Uint8Array?JSON.parse(new TextDecoder().decode(e)):e?.toString?JSON.parse(e.toString()):e},nT=r=>{let{apiKey:e,webSocket:t}=r,n=t??globalThis.WebSocket;if(!n)throw new Error(`${Ss(r)} requires a WebSocket constructor. In Node, pass the ws constructor through options.webSocket.`);return new n(eT(r),{headers:{Authorization:`Bearer ${e}`}})},rT=r=>r.messages.flatMap(e=>e.role!=="user"||!Array.isArray(e.content)?[]:e.content.filter(t=>t.type==="input_audio").map(t=>t.input_audio)),oT=r=>{if(!(!("content"in r)||!r.content))return typeof r.content=="string"?r.content:Array.isArray(r.content)?r.content.map(e=>"text"in e?e.text:void 0).filter(e=>!!e).join(`
|
|
1255
1255
|
`):"text"in r.content?r.content.text:void 0},iT=({model:r,request:e,audio:t})=>{let n=e.messages.filter(s=>s.role==="system").map(s=>s.content).join(`
|
|
1256
1256
|
`),o=t.output,i=t.input;return Un(String(r))?{type:"transcription_session.update",session:{type:"transcription",audio:{input:{format:{type:"audio/pcm",rate:i?.sampleRate??24e3},turn_detection:null,transcription:{model:String(r)}}}}}:{type:"session.update",session:{type:"realtime",model:String(r),output_modalities:["audio"],...n?{instructions:n}:{},audio:{input:{format:{type:"audio/pcm",rate:i?.sampleRate??24e3}},output:{format:{type:"audio/pcm",rate:24e3},voice:typeof o?.voice=="object"?o.voice.id:o?.voice??"marin"}}}}},sT=(r,e)=>{let{model:t,request:n}=e,o=rT(n);for(let i of o){let s=i.format??Ct(i.mimeType);if(s!=="pcm16"&&s!=="pcm")throw new Error(`OpenAI Realtime audio input requires pcm16 audio, received ${s??i.mimeType??"unknown format"}`);r.send(JSON.stringify({type:"input_audio_buffer.append",audio:i.data}))}if(o.length>0&&r.send(JSON.stringify({type:"input_audio_buffer.commit"})),!Un(String(t))){for(let i of n.messages){if(i.role!=="user")continue;let s=oT(i);s&&r.send(JSON.stringify({type:"conversation.item.create",item:{type:"message",role:"user",content:[{type:"input_text",text:s}]}}))}r.send(JSON.stringify({type:"response.create",response:{output_modalities:["audio"]}}))}},aT=({model:r,collected:e,isDelta:t})=>{let n=e.transcriptChunks.join("")||e.inputTranscriptChunks.join(""),o=e.textChunks.join("")||n,i=Mr(e.audioChunks);return{id:e.responseId??"realtime",object:"chat.completion",created:Math.floor(Date.now()/1e3),model:String(r),choices:[{index:0,message:{role:"assistant",content:o||null,refusal:null,audio:i?{id:e.responseId??"realtime-audio",data:i,transcript:n||void 0}:null},finish_reason:"stop"}],usage:e.usage??{prompt_tokens:0,completion_tokens:0,total_tokens:0},system_fingerprint:"",...t?{__isDelta:!0}:{}}},ks=({model:r,collected:e,finishReason:t})=>({id:e.responseId??"realtime",object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:String(r),choices:[{index:0,delta:{role:"assistant",content:e.textChunks.join("")||e.inputTranscriptChunks.join("")||e.transcriptChunks.join("")||null,audio:e.audioChunks.length>0?{id:e.responseId??"realtime-audio",data:Mr(e.audioChunks),transcript:e.transcriptChunks.join("")||void 0}:null},finish_reason:t??null}],system_fingerprint:"",...e.usage?{usage:e.usage}:{}}),yC=async(r,e)=>{let t=nT(r),n=r.audio.live?.turnTimeoutMs??3e4,o={audioChunks:[],textChunks:[],transcriptChunks:[],inputTranscriptChunks:[]},i=s=>{r.debug&&console.log(`[${Ss(r).toLowerCase()}] ${s}`)};return await new Promise((s,a)=>{let c=!1,l=!1,u,d=()=>o.audioChunks.length>0||o.textChunks.length>0||o.transcriptChunks.length>0||o.inputTranscriptChunks.length>0,p=()=>{u&&(clearTimeout(u),u=void 0)},m=()=>{p(),u=setTimeout(()=>{i("finishing after output idle"),g()},1500)},g=()=>{if(!c){c=!0,clearTimeout(x),p();try{t.close()}catch{}s(aT({model:r.model,collected:o}))}},h=f=>{if(!c){c=!0,clearTimeout(x),p();try{t.close()}catch{}a(f instanceof Error?f:new Error(String(f)))}},x=setTimeout(()=>{h(new Error(`${Ss(r)} turn timed out after ${n}ms`))},n);jc(t,"open",()=>{i("socket open; sending session update"),t.send(JSON.stringify(r.createSessionUpdate?r.createSessionUpdate(r):iT(r)))}),jc(t,"error",f=>{h(f?.error??f?.message??"OpenAI Realtime WebSocket error")}),jc(t,"close",f=>{if(i(`socket close${f?.code?` code=${f.code}`:""}${f?.reason?` reason=${f.reason}`:""}`),!c){if(d()){g();return}h(`${Ss(r)} WebSocket closed before completion${f?.code?` (code ${f.code})`:""}${f?.reason?`: ${f.reason}`:""}`)}}),jc(t,"message",f=>{try{let y=tT(f);if(i(`event ${y.type??"(unknown)"}`),y.type==="error"){h(y.error?.message??`${Ss(r)} error`);return}if(y.type==="session.created"||y.type==="session.updated"||y.type==="transcription_session.updated"||y.type==="transcription_session.created"){l||(l=!0,i("session ready; sending input"),sT(t,r));return}if(typeof y.response_id=="string"&&(o.responseId=y.response_id),typeof y.response?.id=="string"&&(o.responseId=y.response.id),(y.response?.usage||y.usage)&&(o.usage=y.response?.usage??y.usage),y.type==="response.output_audio.delta"||y.type==="response.audio.delta"){let A={audioChunks:[y.delta],textChunks:[],transcriptChunks:[],inputTranscriptChunks:[],responseId:o.responseId};o.audioChunks.push(y.delta),m(),e?.(ks({model:r.model,collected:A}));return}if(y.type==="response.output_text.delta"||y.type==="response.text.delta"){let A={audioChunks:[],textChunks:[y.delta],transcriptChunks:[],inputTranscriptChunks:[],responseId:o.responseId};o.textChunks.push(y.delta),m(),e?.(ks({model:r.model,collected:A}));return}if(y.type==="response.output_audio_transcript.delta"||y.type==="response.audio_transcript.delta"){let A={audioChunks:[],textChunks:[],transcriptChunks:[y.delta],inputTranscriptChunks:[],responseId:o.responseId};o.transcriptChunks.push(y.delta),m(),e?.(ks({model:r.model,collected:A}));return}if(y.type==="conversation.item.input_audio_transcription.delta"){let A={audioChunks:[],textChunks:[],transcriptChunks:[],inputTranscriptChunks:[y.delta],responseId:o.responseId};o.inputTranscriptChunks.push(y.delta),m(),e?.(ks({model:r.model,collected:A}));return}if(y.type==="response.output_audio_transcript.done"||y.type==="response.audio_transcript.done"){typeof y.transcript=="string"&&(o.transcriptChunks=[y.transcript]);return}if(y.type==="response.output_audio.done"||y.type==="response.audio.done"){m();return}if(y.type==="conversation.item.input_audio_transcription.completed"){typeof y.transcript=="string"&&(o.inputTranscriptChunks=[y.transcript]),Un(String(r.model))&&g();return}if(y.type==="response.done"){g();return}if(y.type==="response.output_item.done"||y.type==="response.content_part.done"){m();return}y.type==="response.completed"&&g()}catch(y){h(y)}})})},cT=r=>new ReadableStream({start(e){yC(r,t=>e.enqueue(t)).then(t=>{e.enqueue(ks({model:r.model,collected:{audioChunks:[],textChunks:[],transcriptChunks:[],inputTranscriptChunks:[],usage:t.usage},finishReason:"stop"})),e.close()}).catch(t=>e.error(t))}});var Dn=r=>{if(!r)return;let e=r.prompt_tokens??r.input_tokens??0,t=r.completion_tokens??r.output_tokens??0,n=r.prompt_tokens_details?.cached_tokens??r.input_tokens_details?.cached_tokens??0,o=r.prompt_tokens_details?.cache_write_tokens??r.input_tokens_details?.cache_write_tokens??0,i=r.completion_tokens_details?.reasoning_tokens??r.output_tokens_details?.reasoning_tokens;return{promptTokens:Math.max(0,e-n-o),completionTokens:t,totalTokens:r.total_tokens??e+t,...i!==void 0?{reasoningTokens:i}:{},...n>0?{cacheReadTokens:n}:{},...o>0?{cacheCreationTokens:o}:{}}};var lT=r=>{let e=["o1","o1-mini","o3","o3-mini","o4-mini","o1-pro","o3-pro"];return e.includes(r)||e.includes(r)},Fr=()=>structuredClone({model:"gpt-5-mini",embedModel:"text-embedding-3-small",...Ue()}),zc=()=>structuredClone({...Fr(),model:"gpt-5"}),qc=()=>structuredClone({model:"gpt-5-mini",embedModel:"text-embedding-3-small",...kt()}),Vc=()=>({...Fr(),model:"gpt-5-nano"}),Dp=class{constructor(e,t,n,o,i,s,a,c,l=!1){this.config=e;this.apiKey=t;this.streamingUsage=n;this.options=o;this.chatReqUpdater=i;this.chatRespProcessor=s;this.chatStreamRespProcessor=a;this.realtime=c;this.promptCaching=l}tokensUsed;supportsImplicitCaching=e=>this.promptCaching&&hn(e);getTokenUsage(){return this.tokensUsed}getModelConfig(){let{config:e}=this;return{maxTokens:e.maxTokens,temperature:e.temperature,presencePenalty:e.presencePenalty,frequencyPenalty:e.frequencyPenalty,stopSequences:e.stopSequences,endSequences:e.endSequences,topP:e.topP,n:e.n,stream:e.stream}}createChatReq=(e,t)=>{let n=e.model,o=(this.realtime?.resolveAudioConfig??Ts)(this.config.audio,e.modelConfig?.audio),i=(this.realtime?.shouldUse??Bc)(n,this.config.audio,e.modelConfig?.audio);if(!e.chatPrompt||e.chatPrompt.length===0)throw new Error("Chat prompt is empty");let s={name:"/chat/completions"},a=e.functions?.map(y=>({type:"function",function:{name:y.name,description:y.description,parameters:y.parameters}})),c=!e.functionCall&&e.functions&&e.functions.length>0?"auto":e.functionCall,l=uT(e,i),u=uC(e,t,this.promptCaching),d,p=0;if(u){let y=pC(l,e.chatPrompt);l=y.messages,p=y.markerCount,d=dC(t,this.options),d||(t.logger??this.options?.logger)?.({name:"Notification",id:"openai-prompt-cache-key-missing",value:"OpenAI prompt caching is enabled but neither promptCacheKey nor sessionId is set. GPT-5.6+ needs a key that is stable per conversation for reliable cache matching."})}let m=e.modelConfig?.frequencyPenalty??this.config.frequencyPenalty,g=e.modelConfig?.stream??this.config.stream,h=this.config.store,x=lT(n),f={model:n,messages:l,...e.responseFormat?{response_format:e.responseFormat.type==="json_schema"?{type:"json_schema",json_schema:e.responseFormat.schema}:e.responseFormat}:this.config?.responseFormat?{response_format:{type:this.config.responseFormat}}:{},...a?{tools:a}:{},...c?{tool_choice:c}:{},...x?{}:{...(e.modelConfig?.maxTokens??this.config.maxTokens)!==void 0?{max_completion_tokens:e.modelConfig?.maxTokens??this.config.maxTokens}:{},...e.modelConfig?.temperature!==void 0?{temperature:e.modelConfig.temperature}:{},...e.modelConfig?.topP!==void 0?{top_p:e.modelConfig.topP}:{},...(e.modelConfig?.n??this.config.n)!==void 0?{n:e.modelConfig?.n??this.config.n}:{},...(e.modelConfig?.presencePenalty??this.config.presencePenalty)!==void 0?{presence_penalty:e.modelConfig?.presencePenalty??this.config.presencePenalty}:{},...m!==void 0?{frequency_penalty:m}:{}},...(e.modelConfig?.stopSequences??this.config.stop)&&(e.modelConfig?.stopSequences??this.config.stop).length>0?{stop:e.modelConfig?.stopSequences??this.config.stop}:{},...this.config.logitBias!==void 0?{logit_bias:this.config.logitBias}:{},...g&&this.streamingUsage?{stream:!0,stream_options:{include_usage:!0}}:{},...p>0?{prompt_cache_options:{mode:"explicit"}}:{},...d?{prompt_cache_key:d}:{},...h?{store:h}:{},...this.config.serviceTier?{service_tier:this.config.serviceTier}:{},...this.config.user?{user:this.config.user}:{}};if(i){if(e.responseFormat||f.response_format)throw new Error(`${this.realtime?.apiName??"OpenAI Realtime"} models do not support structured response formats with audio output or transcription`);let y=(this.realtime?.createApi??jo)({model:n,request:f,apiKey:this.apiKey,audio:o,webSocket:t.webSocket??this.options?.webSocket,debug:t.debug??this.options?.debug});s.name=y.name,s.localCall=y.localCall}else f=$c(f,e,this.config.audio);return this.config.reasoningEffort&&(f.reasoning_effort=this.config.reasoningEffort),this.config.webSearchOptions&&(f.web_search_options={...this.config.webSearchOptions.searchContextSize&&{search_context_size:this.config.webSearchOptions.searchContextSize},...this.config.webSearchOptions.userLocation&&{user_location:{approximate:{type:"approximate",...this.config.webSearchOptions.userLocation.approximate.city&&{city:this.config.webSearchOptions.userLocation.approximate.city},...this.config.webSearchOptions.userLocation.approximate.country&&{country:this.config.webSearchOptions.userLocation.approximate.country},...this.config.webSearchOptions.userLocation.approximate.region&&{region:this.config.webSearchOptions.userLocation.approximate.region},...this.config.webSearchOptions.userLocation.approximate.timezone&&{timezone:this.config.webSearchOptions.userLocation.approximate.timezone}}}}}),t?.thinkingTokenBudget&&(f.reasoning_effort=hC(n,t.thinkingTokenBudget)),this.chatReqUpdater&&(f=this.chatReqUpdater(f,t)),[s,f]};createEmbedReq=e=>{let t=e.embedModel;if(!t)throw new Error("Embed model not set");if(!e.texts||e.texts.length===0)throw new Error("Embed texts is empty");let n={name:"/embeddings"},o={model:t,input:e.texts,dimensions:this.config.dimensions};return[n,o]};createChatResp(e){let{id:t,usage:n,choices:o,error:i}=e;if(i)throw i;this.tokensUsed=Dn(n);let a={results:o.map(c=>{if(c.message.refusal)throw new Ke(c.message.refusal,e.model,e.id);let l=AC(c.finish_reason),u=c.message.tool_calls?.map(({id:p,function:{arguments:m,name:g}})=>({id:p,type:"function",function:{name:g,params:m}})),d=Uc(c.message.audio);return{index:c.index,id:`${c.index}`,content:c.message.content??d?.transcript??void 0,audio:d,thought:c.message.reasoning_content,citations:c.message.annotations?.filter(p=>p?.type==="url_citation"&&p.url_citation).map(p=>({url:p.url_citation?.url,title:p.url_citation?.title,description:p.url_citation?.description})),functionCalls:u,finishReason:l}}),remoteId:t};return this.chatRespProcessor?this.chatRespProcessor(a):a}createChatStreamResp=(e,t)=>{let{id:n,usage:o,choices:i}=e;this.tokensUsed=Dn(o);let s=t;s.indexIdMap||(s.indexIdMap={});let c={results:i.map(({index:l,delta:{content:u,role:d,refusal:p,audio:m,tool_calls:g,reasoning_content:h,annotations:x},finish_reason:f})=>{if(p)throw new Ke(p,void 0,n);let y=AC(f),A=g?.map(({id:w,index:v,function:{name:F,arguments:k}})=>{typeof w=="string"&&typeof v=="number"&&!s.indexIdMap[v]&&(s.indexIdMap[v]=w);let O=s.indexIdMap[v];return O?{id:O,type:"function",function:{name:F,params:k}}:null}).filter(w=>w!==null),b=Dc(m);return{index:l,content:u??b?.transcript??void 0,role:d,audio:b,thought:h,citations:x?.filter(w=>w?.type==="url_citation"&&w.url_citation).map(w=>({url:w.url_citation?.url,title:w.url_citation?.title,description:w.url_citation?.description})),functionCalls:A,finishReason:y,id:n}}),remoteId:n};return this.chatStreamRespProcessor?this.chatStreamRespProcessor(c,t):c};createEmbedResp(e){let{data:t,usage:n}=e;return this.tokensUsed=Dn(n),{embeddings:t.map(o=>o.embedding)}}},AC=r=>{switch(r){case"stop":return"stop";case"length":return"length";case"content_filter":return"error";case"tool_calls":return"function_call"}};function uT(r,e=!1){return r.chatPrompt.map(n=>{switch(n.role){case"system":return{role:"system",content:n.content};case"user":{let o=Array.isArray(n.content)?n.content.map(i=>{switch(i.type){case"text":return{type:"text",text:i.text};case"image":return{type:"image_url",image_url:{url:`data:${i.mimeType};base64,${i.image}`,details:i.details??"auto"}};case"audio":return Lc(i,{allowPcm16:e});default:throw new Error("Invalid content type")}}):n.content;return{role:"user",...n.name?{name:n.name}:{},content:o}}case"assistant":{let o=n.functionCalls?.map(i=>({id:i.id,type:"function",function:{name:i.function.name,arguments:typeof i.function.params=="object"?JSON.stringify(i.function.params):i.function.params}}));if(o&&o.length>0)return{role:"assistant",...n.content?{content:n.content}:{},name:n.name,tool_calls:o};if(n.content===void 0&&!n.audio)throw new Error("Assistant content is required when no tool calls are provided");return{role:"assistant",...n.content!==void 0?{content:n.content}:{},...n.audio?{audio:{id:n.audio.id}}:{},...n.name?{name:n.name}:{}}}case"function":return{role:"tool",content:n.content?.map(o=>o.type==="text"?o.text:o.type==="image"?o.altText??`[MCP image result: ${o.mimeType}]`:o.type==="audio"?o.transcription??`[MCP audio result: ${o.mimeType??"application/octet-stream"}]`:o.type==="url"?o.cachedContent??[o.title,o.description,o.url].filter(Boolean).join(`
|