@fifthrevision/axle 0.19.0 → 0.20.0
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/dist/index.d.ts +263 -183
- package/dist/index.js +22 -1
- package/dist/models-CuB4qD0E.js +1 -0
- package/dist/providers/models.js +1 -1
- package/package.json +9 -29
- package/README.md +0 -621
- package/dist/ProceduralMemory-CNxHj5B2.js +0 -45
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +0 -6
- package/dist/models-Bp_jVWHN.js +0 -1
- package/dist/models-C7fdWvZ6.js +0 -1
package/dist/index.js
CHANGED
|
@@ -1 +1,22 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{t as e}from"./accumulator-vmmD3pxt.js";import{d as t,i as n,o as r,p as i,r as a,t as o,u as s}from"./models-CuB4qD0E.js";import*as c from"zod";import l from"zod";import{Client as u}from"@modelcontextprotocol/sdk/client/index.js";import{StdioClientTransport as d}from"@modelcontextprotocol/sdk/client/stdio.js";import{StreamableHTTPClientTransport as f}from"@modelcontextprotocol/sdk/client/streamableHttp.js";import p from"@anthropic-ai/sdk";import"glob";import m from"mime";import{access as h,readFile as g,stat as _}from"node:fs/promises";import{extname as v,resolve as y}from"node:path";import{FinishReason as b,FunctionCallingConfigMode as x,GoogleGenAI as S}from"@google/genai";import C from"openai";import w from"chalk";import{marked as T}from"marked";var E=class e extends Error{code;id;details;constructor(t,n){super(t,{cause:n?.cause}),this.name=this.constructor.name,this.code=n?.code||`AXLE_ERROR`,this.id=n?.id,this.details=n?.details,Object.setPrototypeOf(this,e.prototype)}toJSON(){return{name:this.name,message:this.message,code:this.code,...this.id?{id:this.id}:{},...this.details?{details:this.details}:{},...this.cause?{cause:D(this.cause)}:{}}}};function D(e){return e instanceof Error?{name:e.name,message:e.message,...e.stack?{stack:e.stack}:{},...`cause`in e&&e.cause?{cause:D(e.cause)}:{}}:e}var O=class e extends E{reason;messages;partial;usage;constructor(t=`Operation aborted`,n){super(t,{code:`ABORTED`,details:{reason:n?.reason,usage:n?.usage}}),this.name=`AbortError`,this.reason=n?.reason,this.messages=n?.messages,this.partial=n?.partial,this.usage=n?.usage,Object.setPrototypeOf(this,e.prototype)}toJSON(){return{...super.toJSON(),reason:this.reason,...this.messages?{messages:this.messages}:{},...this.partial?{partial:this.partial}:{},...this.usage?{usage:this.usage}:{}}}},k=class e extends O{turn;constructor(t=`Agent send aborted`,n){super(t,n),this.turn=n?.turn,Object.setPrototypeOf(this,e.prototype)}toJSON(){return{...super.toJSON(),...this.turn?{turn:this.turn}:{}}}},A=class e extends E{toolName;messages;partial;usage;constructor(t=`Fatal tool error`,n){super(t,{code:`TOOL_FATAL_ERROR`,details:{toolName:n?.toolName,usage:n?.usage},cause:n?.cause}),this.toolName=n?.toolName,this.messages=n?.messages,this.partial=n?.partial,this.usage=n?.usage,Object.setPrototypeOf(this,e.prototype)}toJSON(){return{...super.toJSON(),...this.toolName?{toolName:this.toolName}:{},...this.messages?{messages:this.messages}:{},...this.partial?{partial:this.partial}:{},...this.usage?{usage:this.usage}:{}}}};function j(e){let t=B(e.system??``),n=I(e.tools),r=I(e.mcpTools),i=L(e.providerTools),a=e.messages.reduce((e,t)=>e+ee(t),0),o=t+n+r+i+a;return{total:o,system:t,tools:n,mcpTools:r,providerTools:i,messages:a,...e.limit===void 0?{}:{limit:e.limit,free:Math.max(0,e.limit-o)}}}function ee(e){switch(e.role){case`user`:return M(e.content);case`assistant`:return M(e.content);case`tool`:return e.content.reduce((e,t)=>e+P(t),0)}}function M(e){return typeof e==`string`?B(e):e.reduce((e,t)=>e+N(t),0)}function N(e){switch(e.type){case`text`:return B(e.text);case`thinking`:return B(e.summary??e.text);case`tool-call`:return B(e.name)+z(e.parameters);case`provider-tool`:return B(e.name)+z(e.input)+z(e.output);case`file`:return z(e.file)}}function P(e){return B(e.name)+F(e.content)}function F(e){return typeof e==`string`?B(e):e.reduce((e,t)=>t.type===`text`?e+B(t.text):e+z(t.file),0)}function I(e){let t=e?.map(R)??[];return t.length===0?0:z({tools:t})}function L(e){return!e||e.length===0?0:z({providerTools:e})}function R(e){try{return{name:e.name,description:e.description,parameters:l.toJSONSchema(e.schema)}}catch{return{name:e.name,description:e.description}}}function z(e){return e==null?0:B(JSON.stringify(e))}function B(e){return e?Math.ceil(e.length/3):0}function V(e){let{text:t,files:n}=e,r=[];if(t&&r.push({type:`text`,text:t}),n)for(let e of n)r.push({type:`file`,file:e});return r}function H(e){return e.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
2
|
+
|
|
3
|
+
`)}function te(e){return e.filter(e=>e.type===`tool-call`)}function U(e){if(e instanceof c.ZodString)return[`string`,`Your answer`];if(e instanceof c.ZodNumber)return[`number`,42];if(e instanceof c.ZodBoolean)return[`boolean`,!0];if(e instanceof c.ZodEnum){let t=e.options;return[t.map(re).join(` | `),t[0]]}if(e instanceof c.ZodLiteral){let t=e.value;return[re(t),t]}if(e instanceof c.ZodArray){let t=e.element;if(t instanceof c.ZodString)return[`string array`,[`answer 1`,`answer 2`,`third answer`]];if(t instanceof c.ZodNumber)return[`number array`,[42,59,3.14]];if(t instanceof c.ZodBoolean)return[`boolean array`,[!0,!1,!1]];if(t instanceof c.ZodObject){let[,e]=U(t);return[`object array`,[e,e]]}else if(t instanceof c.ZodEnum||t instanceof c.ZodLiteral){let[e,n]=U(t);return[`${e} array`,[n]]}return[`array`,[]]}if(e instanceof c.ZodObject){let t=e.shape,n={};for(let[e,r]of Object.entries(t)){let[,t]=U(r);n[e]=t}return[`JSON object`,n]}if(e instanceof c.ZodOptional){let[t,n]=U(e.unwrap());return[`${t} | undefined`,n]}throw Error(`Unsupported Zod schema: ${e.constructor.name}`)}function ne(e){if(e instanceof c.ZodObject)return Object.entries(e.shape).map(([e,t])=>{let[n]=U(t);return[e,n]});let[t]=U(e);return[[`response`,t]]}function re(e){return typeof e==`string`?JSON.stringify(e):String(e)}function ie(e,t){if(!t)return e;let n=ae(e);try{return t.parse(n)}catch(e){if(e&&typeof e==`object`&&`issues`in e){let t=e.issues.map(e=>`${e.path.join(`.`)}: ${e.message}`).join(`, `);throw Error(`Validation failed: ${t}`)}throw e}}function ae(e){let t=e.trim(),n=t.match(/^```(?:json)?\s*([\s\S]*?)\s*```$/i),r=n?n[1].trim():t;try{return JSON.parse(r)}catch(e){throw Error(`Cannot parse response as JSON: ${e.message}`)}}function W(e){if(typeof e==`string`)return{message:{role:`user`,id:crypto.randomUUID(),content:[{type:`text`,text:e}]},parse:e=>oe(e,void 0)};let t=e.render(),n=e.files,r=e.schema;return{message:{role:`user`,id:crypto.randomUUID(),content:V({text:t,files:n})},parse:e=>oe(e,r)}}function oe(e,t){return e?ie(H(e.content),t):null}function G(){return{in:0,out:0}}function se(e,t){t&&(e.in+=t.in??0,e.out+=t.out??0,le(e,`cachedIn`,t.cachedIn),le(e,`cacheWriteIn`,t.cacheWriteIn),le(e,`reasoningOut`,t.reasoningOut))}function K(e,t){return{...e,...ue(`cachedIn`,t.cachedIn),...ue(`cacheWriteIn`,t.cacheWriteIn),...ue(`reasoningOut`,t.reasoningOut)}}function ce(e){if(e)return{inputTokens:e.in,outputTokens:e.out,...e.cachedIn===void 0?{}:{cachedInputTokens:e.cachedIn},...e.cacheWriteIn===void 0?{}:{cacheWriteInputTokens:e.cacheWriteIn},...e.reasoningOut===void 0?{}:{reasoningOutputTokens:e.reasoningOut}}}function le(e,t,n){n!==void 0&&(e[t]=(e[t]??0)+n)}function ue(e,t){return typeof t==`number`?{[e]:t}:{}}var de=class{tools=new Map;mcpTools=new Map;providerTools=new Map;constructor(e){e?.tools&&this.add(e.tools),e?.providerTools&&this.addProvider(e.providerTools)}add(e){let t=Array.isArray(e)?e:[e];for(let e of t){if(this.has(e.name))throw new E(`Tool already registered: ${e.name}`,{code:`TOOL_REGISTRY_DUPLICATE`,details:{name:e.name}});this.tools.set(e.name,e)}}addMcp(e){let t=Array.isArray(e)?e:[e];for(let e of t){if(this.has(e.name))throw new E(`Tool already registered: ${e.name}`,{code:`TOOL_REGISTRY_DUPLICATE`,details:{name:e.name}});this.mcpTools.set(e.name,e)}}addProvider(e){let t=Array.isArray(e)?e:[e];for(let e of t){if(this.has(e.name))throw new E(`Tool already registered: ${e.name}`,{code:`TOOL_REGISTRY_DUPLICATE`,details:{name:e.name}});this.providerTools.set(e.name,e)}}remove(e){let t=this.tools.delete(e),n=this.mcpTools.delete(e),r=this.providerTools.delete(e);return t||n||r}has(e){return this.tools.has(e)||this.mcpTools.has(e)||this.providerTools.has(e)}get(e){return this.tools.get(e)??this.mcpTools.get(e)}getProvider(e){return this.providerTools.get(e)}executable(){return[...this.tools.values(),...this.mcpTools.values()]}local(){return[...this.tools.values()]}mcp(){return[...this.mcpTools.values()]}provider(){return[...this.providerTools.values()]}get size(){return this.tools.size+this.mcpTools.size+this.providerTools.size}};function fe(e,t){se(e,t.usage)}function pe(e){return JSON.stringify({error:e})}function me(e){let t=e.tools!==void 0||e.providerTools!==void 0;if(e.registry&&t)throw new E("Cannot specify both `registry` and `tools` / `providerTools`. Use one or the other.",{code:`TOOL_OPTIONS_CONFLICT`});return e.registry?e.registry:new de({tools:e.tools,providerTools:e.providerTools})}async function he(e,t=async()=>null,n,r,i){let a=[],o=()=>{throw new O(`Operation aborted`,{reason:n.reason})};for(let s of e){n.aborted&&o();let e=i?.startSpan(s.name,{type:`tool`}),c={signal:n,tracer:e,registry:r,emit:()=>{}},l;try{l=await t(s.name,s.parameters,c),n.aborted&&(e?.end(`ok`),o())}catch(t){if(t instanceof A)throw e?.setResult({kind:`tool`,name:s.name,input:s.parameters,output:{type:`fatal`,message:t.message}}),e?.end(`error`),t;(n.aborted||t instanceof O||t instanceof Error&&t.name===`AbortError`)&&(e?.end(`ok`),o()),l={type:`error`,error:{type:`exception`,message:t instanceof Error?t.message:String(t)}}}if(l==null){let t=r.get(s.name);if(t)try{let n=await t.execute(s.parameters,c);e?.setResult({kind:`tool`,name:s.name,input:s.parameters,output:n}),e?.end(`ok`),a.push({id:s.id,name:s.name,content:n});continue}catch(t){if(t instanceof A)throw e?.setResult({kind:`tool`,name:s.name,input:s.parameters,output:{type:`fatal`,message:t.message}}),e?.end(`error`),t;(n.aborted||t instanceof O||t instanceof Error&&t.name===`AbortError`)&&(e?.end(`ok`),o()),l={type:`error`,error:{type:`execution`,message:t instanceof Error?t.message:String(t)}}}}if(l==null){let t=`Tool not found: ${s.name}`;e?.setResult({kind:`tool`,name:s.name,input:s.parameters,output:{type:`not-found`,message:t}}),e?.end(`error`),a.push({id:s.id,name:s.name,content:pe({type:`not-found`,message:t}),isError:!0});continue}l.type===`success`?(e?.setResult({kind:`tool`,name:s.name,input:s.parameters,output:l.content}),e?.end(`ok`),a.push({id:s.id,name:s.name,content:l.content})):(e?.setResult({kind:`tool`,name:s.name,input:s.parameters,output:l.error}),e?.end(`error`),a.push({id:s.id,name:s.name,content:pe(l.error),isError:!0}))}return{results:a}}let ge=function(e){return e.Stop=`stop`,e.Length=`length`,e.FunctionCall=`function_call`,e.Error=`error`,e.Custom=`custom`,e.Cancelled=`cancelled`,e}({});function q(e,t){for(let n of e)n(t)}function _e(e){return{type:`error`,error:{type:`not-found`,message:`Tool not found: ${e}`}}}function ve(e){return{name:e.name,description:e.description,schema:e.schema}}function ye(e){let t=[],n,r;if(`instruct`in e){let{instruct:t,messages:i,...a}=e,o=W(t);r=o.parse,n={...a,messages:[...i??[],o.message]}}else n=e;let i=new AbortController,a=n.signal?AbortSignal.any([i.signal,n.signal]):i.signal,{promise:o,resolve:s,reject:c}=Promise.withResolvers();return Promise.resolve().then(()=>be(n,a,t).then(e=>{if(r&&e.ok){try{s({...e,response:r(e.final)})}catch(t){s({ok:!1,messages:e.messages,final:e.final,usage:e.usage,error:{kind:`parse`,error:t,message:t instanceof Error?t.message:String(t)}})}return}s(e)},c)),{on(e){t.push(e)},cancel(e){i.abort(e)},get final(){return o}}}async function be(e,t,n){let{provider:r,model:i,messages:a,system:o,onToolCall:s,maxIterations:c,tracer:l,fileResolver:u,reasoning:d,maxOutputTokens:f,temperature:p,topP:m,stop:h,toolChoice:g,parallelToolCalls:_,providerOptions:v}=e,y=me(e),b=[...a],x=[],S=G(),C=0,w=0,T=e=>{b.push(e),x.push(e)},E=e=>{e.ok||q(n,{type:`error`,error:e.error});let t=e.ok?e.final.content:null,r=e.ok?e.final.finishReason:void 0;return l?.setResult({kind:`llm`,model:i,request:{messages:a},response:{content:t??null},usage:ce(e.usage),finishReason:r}),l?.end(e.ok?`ok`:`error`),e},D=(e,n,r,i)=>{i();let a=e.length?{role:`assistant`,id:n,model:r,content:e,finishReason:`cancelled`}:void 0;throw a&&T(a),l?.end(`ok`),new O(`Stream aborted`,{reason:t.reason,messages:x,partial:a,usage:S})};for(;;){if(t.aborted&&D([],``,``,()=>{}),c!==void 0&&w>=c)return E({ok:!1,messages:x,error:{kind:`model`,error:{type:`error`,error:{type:`MaxIterations`,message:`Exceeded max iterations (${c})`}}},usage:S});w+=1;let e=l?.startSpan(`turn-${w}`,{type:`llm`}),a=y?.executable()??[],k=a.length>0?a.map(ve):void 0,j=y?.provider()??[],ee=r.createStreamingRequest(i,{messages:b,system:o,tools:k,providerTools:j.length>0?j:void 0,runtime:{tracer:e,fileResolver:u},signal:t,reasoning:d,maxOutputTokens:f,temperature:p,topP:m,stop:h,toolChoice:g,parallelToolCalls:_,providerOptions:v}),M=[],N=``,P=``,F=null,I=G(),L=-1,R=null,z=``,B=new Map,V=-1,H=()=>{R!==null&&L>=0&&(q(n,{type:R===`text`?`text:end`:`thinking:end`,index:L,final:z}),R=null,z=``,L=-1)};for await(let r of ee){switch(r.type){case`start`:N=r.id,P=r.data.model,q(n,{type:`turn:start`,id:N,model:P});break;case`text-start`:H(),M.push({type:`text`,text:``}),V=M.length-1,L=C++,R=`text`,z=``,q(n,{type:`text:start`,index:L});break;case`text-delta`:{let e=M[V];e.text+=r.data.text,z=e.text,q(n,{type:`text:delta`,index:L,delta:r.data.text,accumulated:z});break}case`text-complete`:H();break;case`thinking-start`:H(),M.push({type:`thinking`,text:``}),V=M.length-1,L=C++,R=`thinking`,z=``,q(n,{type:`thinking:start`,index:L});break;case`thinking-delta`:{let e=M[V];e.text+=r.data.text,z=e.text,q(n,{type:`thinking:delta`,index:L,delta:r.data.text,accumulated:z});break}case`thinking-summary-delta`:{let e=M[V];e.text+=r.data.text,z=e.text,q(n,{type:`thinking:delta`,index:L,delta:r.data.text,accumulated:z});break}case`thinking-complete`:H();break;case`tool-call-start`:{H();let e=C++;M.push({type:`tool-call`,id:r.data.id,name:r.data.name,parameters:{}}),V=M.length-1,B.set(r.data.id,e),q(n,{type:`tool:request`,index:e,id:r.data.id,name:r.data.name});break}case`tool-call-args-delta`:q(n,{type:`tool:args-delta`,index:B.get(r.data.id)??-1,id:r.data.id,name:r.data.name,delta:r.data.delta,accumulated:r.data.accumulated});break;case`tool-call-complete`:{let e=M[V];r.data.id&&(e.id=r.data.id),r.data.name&&(e.name=r.data.name),e.parameters=r.data.arguments,r.data.providerMetadata&&(e.providerMetadata=r.data.providerMetadata);break}case`provider-tool-start`:{H();let e=C++;M.push({type:`provider-tool`,id:r.data.id,name:r.data.name}),V=M.length-1,q(n,{type:`provider-tool:start`,index:e,id:r.data.id,name:r.data.name});break}case`provider-tool-complete`:{let e=M[V];r.data.output!=null&&(e.output=r.data.output),q(n,{type:`provider-tool:complete`,index:r.data.index,id:r.data.id,name:r.data.name,output:r.data.output});break}case`complete`:H(),F=r.data.finishReason,I=r.data.usage;break;case`error`:return H(),se(S,r.data.usage),e?.end(`error`),E({ok:!1,messages:x,error:{kind:`model`,error:{type:`error`,error:{type:r.data.type,message:r.data.message}}},usage:S});default:console.warn(`[WARN] Unhandled chunk type. Should never happen`)}if(t.aborted)break}if(t.aborted&&(e?.end(`ok`),D(M,N,P,H)),F===null)return H(),e?.end(`error`),E({ok:!1,messages:x,error:{kind:`model`,error:{type:`error`,error:{type:`IncompleteStream`,message:`Stream ended without a completion signal`}}},usage:S});se(S,I);let te={kind:`llm`,model:P,request:{messages:b},response:{content:M},usage:ce(I),finishReason:F};e?.setResult(te),e?.end();let U={role:`assistant`,id:N,model:P,content:M,finishReason:F};if(T(U),q(n,{type:`turn:complete`,message:U,usage:I}),F!==`function_call`)return E({ok:!0,response:U,messages:x,final:U,usage:S});let ne=M.filter(e=>e.type===`tool-call`);if(ne.length===0)return E({ok:!0,response:U,messages:x,final:U,usage:S});if(t.aborted)throw l?.end(`ok`),new O(`Stream aborted`,{reason:t.reason,messages:x,usage:S});let re=crypto.randomUUID();q(n,{type:`tool-results:start`,id:re});let ie=0,ae=async(e,t,r)=>{let i=ne[ie++],a=B.get(i.id)??-1;q(n,{type:`tool:exec-start`,index:a,id:i.id,name:e,parameters:t});let o={...r,emit:t=>{q(n,{type:`tool:exec-delta`,index:a,id:i.id,name:e,chunk:t})}},c=y.get(e),l=(s?await s(e,t,o):c?{type:`success`,content:await c.execute(t,o)}:null)??_e(e);return q(n,{type:`tool:exec-complete`,index:a,id:i.id,name:e,result:l}),l},W;try{({results:W}=await he(ne,ae,t,y,l))}catch(e){throw e instanceof A?(l?.end(`error`),new A(e.message,{toolName:e.toolName,messages:e.messages??x,partial:e.partial??U,usage:e.usage??S,cause:e.cause})):e instanceof O?(l?.end(`ok`),new O(`Stream aborted`,{reason:e.reason,messages:e.messages??x,partial:e.partial,usage:e.usage??S})):e}if(W.length>0){let e={role:`tool`,id:re,content:W};T(e),q(n,{type:`tool-results:complete`,message:e})}}}function J(e=new Date){return{start:e.toISOString()}}function Y(e,t=new Date){let n=t.toISOString();return e?{...e,end:n}:{start:n,end:n}}var xe=class{currentTurnId=null;currentTurnTiming;currentTextPart=null;currentThinkingPart=null;toolIdMap=new Map;accumulatedUsage=G();createUserTurn(e){let t=e.id??crypto.randomUUID(),n=[],r=new Date,i=Y(J(r),r),a=()=>({...i});if(typeof e.content==`string`)n.push({id:crypto.randomUUID(),type:`text`,text:e.content,timing:a()});else for(let t of e.content)t.type===`text`?n.push({id:crypto.randomUUID(),type:`text`,text:t.text,timing:a()}):t.type===`file`&&n.push({id:crypto.randomUUID(),type:`file`,file:t.file,timing:a()});return[{type:`turn:user`,turn:{id:t,owner:`user`,parts:n,status:`complete`,timing:i}}]}startAgentTurn(){let e=crypto.randomUUID();return this.currentTurnId=e,this.currentTurnTiming=J(),this.currentTextPart=null,this.currentThinkingPart=null,this.toolIdMap.clear(),this.accumulatedUsage=G(),{type:`turn:start`,turnId:e,timing:this.currentTurnTiming}}handleStreamEvent(e){let t=this.currentTurnId;if(!t)return[];let n=[];switch(e.type){case`turn:start`:break;case`text:start`:{this.closeOpenParts(n);let e=crypto.randomUUID(),r={id:e,type:`text`,text:``,timing:J()};this.currentTextPart={id:e,timing:r.timing},n.push({type:`part:start`,turnId:t,part:r});break}case`text:delta`:this.currentTextPart&&n.push({type:`text:delta`,turnId:t,partId:this.currentTextPart.id,delta:e.delta});break;case`text:end`:if(this.currentTextPart){let e=Y(this.currentTextPart.timing);n.push({type:`part:end`,turnId:t,partId:this.currentTextPart.id,timing:e}),this.currentTextPart=null}break;case`thinking:start`:{this.closeOpenParts(n);let e=crypto.randomUUID(),r={id:e,type:`thinking`,text:``,timing:J()};this.currentThinkingPart={id:e,timing:r.timing},n.push({type:`part:start`,turnId:t,part:r});break}case`thinking:delta`:this.currentThinkingPart&&n.push({type:`thinking:delta`,turnId:t,partId:this.currentThinkingPart.id,delta:e.delta});break;case`thinking:end`:if(this.currentThinkingPart){let e=Y(this.currentThinkingPart.timing);n.push({type:`part:end`,turnId:t,partId:this.currentThinkingPart.id,timing:e}),this.currentThinkingPart=null}break;case`tool:request`:{this.closeOpenParts(n);let r=crypto.randomUUID(),i=J(),a={id:r,type:`action`,kind:`tool`,status:`pending`,timing:i,detail:{name:e.name,parameters:{}}};this.toolIdMap.set(e.id,{partId:r,turnId:t,timing:i}),n.push({type:`part:start`,turnId:t,part:a});break}case`tool:args-delta`:{let r=this.toolIdMap.get(e.id);r&&n.push({type:`action:args-delta`,turnId:t,partId:r.partId,delta:e.delta,accumulated:e.accumulated});break}case`tool:exec-start`:{let r=this.toolIdMap.get(e.id);r&&n.push({type:`action:running`,turnId:t,partId:r.partId,parameters:e.parameters});break}case`tool:exec-delta`:{let r=this.toolIdMap.get(e.id);r&&n.push({type:`action:progress`,turnId:t,partId:r.partId,chunk:e.chunk});break}case`tool:exec-complete`:{let r=this.toolIdMap.get(e.id);if(r){let i=Y(r.timing);r.timing=i,e.result.type===`success`?n.push({type:`action:complete`,turnId:t,partId:r.partId,result:{type:`success`,content:e.result.content},timing:i}):n.push({type:`action:error`,turnId:t,partId:r.partId,error:e.result.error,timing:i})}break}case`provider-tool:start`:{this.closeOpenParts(n);let r=crypto.randomUUID(),i=J(),a={id:r,type:`action`,kind:`provider-tool`,status:`running`,timing:i,detail:{name:e.name}};this.toolIdMap.set(e.id,{partId:r,turnId:t,timing:i}),n.push({type:`part:start`,turnId:t,part:a}),n.push({type:`action:running`,turnId:t,partId:r});break}case`provider-tool:complete`:{let r=this.toolIdMap.get(e.id);if(r){let i=Y(r.timing);r.timing=i,n.push({type:`action:complete`,turnId:t,partId:r.partId,result:{type:`success`,content:e.output},timing:i})}break}case`turn:complete`:this.closeOpenParts(n),se(this.accumulatedUsage,e.usage);break;case`tool-results:start`:case`tool-results:complete`:break;case`error`:{let t=e.error,r=t.kind===`model`?t.error.error.message:t.kind===`tool`?`Tool error (${t.error.name}): ${t.error.message}`:`Parse error: ${t.message}`;n.push({type:`error`,error:{type:t.kind,message:r}});break}}return n}finalizeTurn(e=`complete`){let t=this.currentTurnId;if(!t)return[];let n=[];this.closeOpenParts(n);let r=Y(this.currentTurnTiming);return n.push({type:`turn:end`,turnId:t,status:e,usage:{...this.accumulatedUsage},timing:r}),this.currentTurnId=null,this.currentTurnTiming=void 0,n}closeOpenParts(e){let t=this.currentTurnId;t&&(this.currentTextPart&&=(e.push({type:`part:end`,turnId:t,partId:this.currentTextPart.id,timing:Y(this.currentTextPart.timing)}),null),this.currentThinkingPart&&=(e.push({type:`part:end`,turnId:t,partId:this.currentThinkingPart.id,timing:Y(this.currentThinkingPart.timing)}),null))}};function Se(e){return Array.isArray(e)?e:[e]}function Ce(e){return e.then(()=>{},()=>{})}function we(e,t,n){let r=new AbortController,i=n?AbortSignal.any([n,r.signal]):r.signal,a=e.then(()=>t(i));return{handle:{cancel:e=>r.abort(e),get final(){return a}},settled:Ce(a)}}var Te=class{_turns=[];_log=[];_sessionAnnotations=[];constructor(e){e?.turns&&(this._turns=[...e.turns]),e?.log&&(this._log=[...e.log]),e?.sessionAnnotations&&(this._sessionAnnotations=[...e.sessionAnnotations])}get turns(){return[...this._turns]}get log(){return[...this._log]}get sessionAnnotations(){return[...this._sessionAnnotations]}addTurn(e){this._turns.push(e)}replaceTurns(e){this._turns=[...e]}replaceLog(e){this._log=[...e]}replaceSessionAnnotations(e=[]){this._sessionAnnotations=[...e]}appendToLog(e){Array.isArray(e)?this._log.push(...e):this._log.push(e)}latestTurn(){return this._turns[this._turns.length-1]}toString(){return JSON.stringify({turns:this._turns,sessionAnnotations:this._sessionAnnotations})}};function Ee(e,t){return{...e,...t,providerOptions:e?.providerOptions||t?.providerOptions?{...e?.providerOptions,...t?.providerOptions}:void 0}}var De=class{provider;model;history;tracer;name;fileResolver;requestOptions;registry;sessionId;system;mcps=[];resolvedMcps=new WeakSet;memory;eventCallbacks=[];sendQueue=Promise.resolve();constructor(e){if(this.provider=e.provider,this.model=e.model,this.sessionId=e.sessionId??crypto.randomUUID(),this.history=new Te,this.tracer=e.tracer,this.system=e.system,this.name=e.name,this.fileResolver=e.fileResolver,this.requestOptions={reasoning:e.reasoning,maxOutputTokens:e.maxOutputTokens,temperature:e.temperature,topP:e.topP,stop:e.stop,toolChoice:e.toolChoice,parallelToolCalls:e.parallelToolCalls,providerOptions:e.providerOptions},this.registry=new de({tools:e.tools,providerTools:e.providerTools}),e.mcps&&(this.mcps=[...e.mcps]),e.memory){this.memory=e.memory;let t=e.memory.tools?.();t&&this.registry.add(t)}}addMcp(e){this.mcps.push(e)}addMcps(e){this.mcps.push(...e)}hasTools(){return this.registry.size>0||this.mcps.length>0}on(e){this.eventCallbacks.push(e)}context(){return j({system:this.system,messages:this.history.log,tools:this.toToolDefinitions(this.registry.local()),providerTools:this.registry.provider(),mcpTools:this.toToolDefinitions(this.registry.mcp())})}snapshot(){let e=this.history.sessionAnnotations;return{version:1,sessionId:this.sessionId,messages:this.history.log,turns:this.history.turns,sessionAnnotations:e.length>0?e:void 0}}restore(e){if(e.version!==1)throw new E(`Unsupported agent session version: ${e.version}`);this.sessionId=e.sessionId,this.history.replaceLog(e.messages),this.history.replaceTurns(e.turns??[]),this.history.replaceSessionAnnotations(e.sessionAnnotations??[])}send(e,t){let n=W(e),r=Ee(this.requestOptions,t),{handle:i,settled:a}=we(this.sendQueue,e=>this.run(n,e,t?.fileResolver,r),t?.signal);return this.sendQueue=a,i}async resolveMcpTools(e){for(let t of this.mcps){if(this.resolvedMcps.has(t))continue;let n=await t.listTools({prefix:t.name,tracer:this.tracer,signal:e});this.registry.addMcp(n),this.resolvedMcps.add(t)}}emitEvent(e){for(let t of this.eventCallbacks)t(e)}toToolDefinitions(e){return e.map(e=>({name:e.name,description:e.description,schema:e.schema}))}async run(t,n,r,i){let a=new xe,o=new e({turns:this.history.turns,sessionAnnotations:this.history.sessionAnnotations}),s,c=e=>{let t=o.apply(e);t.handled&&(this.history.replaceTurns(t.state.turns),this.history.replaceSessionAnnotations(t.state.sessionAnnotations??[])),this.emitEvent(e)},l=()=>s?o.state.turns.find(e=>e.id===s):void 0,u=G();if(n.aborted)throw new k(`Agent send aborted`,{reason:n.reason,usage:u});try{await this.resolveMcpTools(n)}catch(e){throw n.aborted||e instanceof O||e instanceof Error&&e.name===`AbortError`?new k(`Agent send aborted`,{reason:e instanceof O?e.reason:n.reason,usage:u}):e}let d=this.system,f=[...this.history.log,t.message];if(this.memory){let e=await this.memory.recall({agentName:this.name,sessionId:this.sessionId,system:this.system,messages:f,tracer:this.tracer});e.systemSuffix&&(d=(d??``)+`
|
|
4
|
+
|
|
5
|
+
`+e.systemSuffix)}if(n.aborted)throw new k(`Agent send aborted`,{reason:n.reason,usage:u});this.history.appendToLog(t.message);for(let e of a.createUserTurn(t.message))c(e);let p=a.startAgentTurn();s=p.turnId,c(p);let{signal:m,...h}=i??{},g=ye({provider:this.provider,model:this.model,messages:f,system:d,registry:this.registry,tracer:this.tracer,fileResolver:r??this.fileResolver,...h,signal:n,onToolCall:async(e,t,n)=>{let r=this.registry.get(e);if(!r)return null;try{return{type:`success`,content:await r.execute(t,n)}}catch(e){if(e instanceof A)throw e;return{type:`error`,error:{type:`execution`,message:e instanceof Error?e.message:String(e)}}}}});g.on(e=>{let t=a.handleStreamEvent(e);for(let e of t)c(e)});let _;try{_=await g.final}catch(e){if(e instanceof A){e.messages&&e.messages.length>0&&this.history.appendToLog(e.messages);let t=a.finalizeTurn(`error`);for(let e of t)c(e);throw new A(e.message,{toolName:e.toolName,messages:e.messages,partial:e.partial,usage:e.usage??u,cause:e.cause})}if(e instanceof O){e.messages&&e.messages.length>0&&this.history.appendToLog(e.messages);let t=a.finalizeTurn(`cancelled`);for(let e of t)c(e);throw new k(`Agent send aborted`,{reason:e.reason,messages:e.messages,partial:e.partial,turn:l(),usage:e.usage??u})}throw e}let v=_.ok?`complete`:`error`;_.messages.length>0&&this.history.appendToLog(_.messages);let y=a.finalizeTurn(v);for(let e of y)c(e);let b=_.usage??u,x=l();if(!_.ok)return{ok:!1,error:_.error,turn:x,usage:b};let S;try{S=t.parse(_.final)}catch(e){return{ok:!1,error:{kind:`parse`,error:e,message:e instanceof Error?e.message:String(e)},turn:x,usage:b}}if(!x)throw new E(`Agent turn missing after send`);if(this.memory)try{await this.memory.record({agentName:this.name,sessionId:this.sessionId,system:this.system,messages:this.history.log,newMessages:_.messages,tracer:this.tracer})}catch(e){this.tracer?.warn(`memory record failed`,{error:e instanceof Error?e.message:String(e)})}return{ok:!0,response:S,turn:x,usage:b}}};function Oe(e){try{let t=l.fromJSONSchema(e);return t instanceof l.ZodObject?t.strict():l.object({}).passthrough()}catch{return l.object({}).passthrough()}}function ke(e,t,n){return e.map(e=>je(e,t,n))}function Ae(e,t){return e.map(e=>{let n=t?`${t}_${e.name}`:e.name,r=Oe(e.inputSchema);return{name:n,description:e.description??``,schema:r}})}function je(e,t,n){let r=n?`${n}_${e.name}`:e.name,i=Oe(e.inputSchema);return{name:r,description:e.description??``,schema:i,async execute(n,i){let a;try{a=await t.callTool({name:e.name,arguments:n},void 0,{signal:i.signal})}catch(t){throw i.signal.aborted||t instanceof Error&&t.name===`AbortError`?t:new A(`MCP tool call failed: ${e.name}`,{toolName:r,cause:t})}if(`isError`in a&&a.isError)throw Error(Ne(a.content));return Me(a.content)}}}function Me(e){return e.some(e=>e.type===`image`)?e.filter(e=>e.type===`text`||e.type===`image`).map(e=>{if(e.type===`text`)return{type:`text`,text:e.text};let t=e;return{type:`file`,file:{kind:`image`,mimeType:t.mimeType,name:`mcp-image`,source:{type:`base64`,data:t.data}}}}):e.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
6
|
+
`)}function Ne(e){return e.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
7
|
+
`)||`MCP tool execution error`}var Pe=class{config;client;transport;cachedMcpTools;_connected=!1;constructor(e){this.config=e}get name(){return this.config.name??this.client?.getServerVersion()?.name}get connected(){return this._connected}async connect(e){if(this._connected)return;let t=e?.tracer?.startSpan(`mcp:connect`,{type:`internal`});this.client=new u({name:`axle`,version:`1.0.0`}),this.config.transport===`stdio`?this.transport=new d({command:this.config.command,args:this.config.args,env:this.config.env}):this.transport=new f(new URL(this.config.url),{requestInit:this.config.headers?{headers:this.config.headers}:void 0});try{await this.client.connect(this.transport,{signal:e?.signal}),this._connected=!0,t?.end(`ok`)}catch(e){throw t?.end(`error`),e}}async listTools(e){let t=this.assertConnected();return ke(await this.fetchTools(t,e?.tracer,e?.signal),t,e?.prefix)}async listToolDefinitions(e){let t=this.assertConnected();return Ae(await this.fetchTools(t,e?.tracer,e?.signal),e?.prefix)}async refreshTools(){return this.assertConnected(),this.cachedMcpTools=void 0,this.listTools()}async close(e){this._connected&&(e?.tracer?.debug(`mcp:close`),await this.client?.close(),this._connected=!1,this.client=void 0,this.transport=void 0,this.cachedMcpTools=void 0)}async fetchTools(e,t,n){if(this.cachedMcpTools)return this.cachedMcpTools;t?.debug(`mcp:listTools`);let r=await e.listTools(void 0,{signal:n});return this.cachedMcpTools=r.tools.map(e=>({name:e.name,description:e.description,inputSchema:e.inputSchema})),this.cachedMcpTools}assertConnected(){if(!this._connected||!this.client)throw Error(`MCP not connected. Call connect() first.`);return this.client}};function Fe(e){return e?.map(e=>({type:`provider`,name:e.name,config:e.config}))}async function Ie(e,t){if(e.version!==1)throw new E(`Unsupported agent definition version: ${e.version}`);let n=await t(e),r=e.model??n.model;if(!r)throw new E(`AgentDefinition requires a model or model resolver`);if(e.tools?.length&&!n.tools)throw new E(`AgentDefinition includes tools but resolver did not return tools`);return{provider:n.provider,model:r,system:e.system,name:e.name,tools:n.tools,providerTools:n.providerTools??Fe(e.providerTools),mcps:n.mcps??e.mcps?.map(e=>new Pe(e)),reasoning:e.request?.reasoning,maxOutputTokens:e.request?.maxOutputTokens,temperature:e.request?.temperature,topP:e.request?.topP,stop:e.request?.stop,toolChoice:e.request?.toolChoice,parallelToolCalls:e.request?.parallelToolCalls,providerOptions:e.request?.providerOptions}}var Le=class e extends E{missingVariables;constructor(t){super(Re(t),{code:`INSTRUCT_VARIABLE_ERROR`,details:{missingVariables:t}}),this.missingVariables=t,Object.setPrototypeOf(this,e.prototype)}toJSON(){return{...super.toJSON(),missingVariables:this.missingVariables}}};function Re(e){return`Missing variable${e.length>1?`s`:``}: ${e.join(`, `)}`}var ze=class e extends Error{missingVariables;constructor(t){super(Ve(t)),this.name=`MissingVariablesError`,this.missingVariables=t,Object.setPrototypeOf(this,e.prototype)}};function Be(e,t,n={}){let{placeholderStyle:r=`{{}}`,strict:i=!0}=n,a=r===`{{}}`?/\{\{(.*?)\}\}/g:/\{(.*?)\}/g,o=[];if(e=e.replace(a,(e,n)=>{if(n=n.trim(),Object.prototype.hasOwnProperty.call(t,n)){let e=t[n];return e==null?``:String(e)}return o.push(n),e}),o.length>0){let e=[...new Set(o)];if(i)throw new ze(e)}return e}function Ve(e){return`Missing variable${e.length>1?`s`:``}: ${e.join(`, `)}`}var He=class e{prompt;inputs={};files=[];textReferences=[];vars;schema;constructor(e){this.prompt=e.prompt,this.schema=e.schema,this.vars=e.vars??`required`}clone(){let t=new e({prompt:this.prompt,schema:this.schema,vars:this.vars});return t.inputs={...this.inputs},t.files=[...this.files],t.textReferences=this.textReferences.map(e=>({...e})),t}withInputs(e){let t=this.clone();return t.inputs={...t.inputs,...e},t}withInput(e,t){return this.withInputs({[e]:t})}setInputs(e){this.inputs={...e}}addInput(e,t){this.inputs[e]=t}addFile(e,t){if(typeof e==`string`){this.textReferences.push({content:e,name:t?.name});return}if(e.kind===`text`&&e.source.type===`text`){this.textReferences.push({content:e.source.content,name:t?.name??e.name});return}this.files.push(t?.name?{...e,name:t.name}:e)}hasFiles(){return this.files.length>0}render(e={}){let t;try{t=Be(this.prompt,this.inputs,{strict:(e.vars??this.vars)===`required`})}catch(e){throw e instanceof ze?new Le(e.missingVariables):e}if(this.textReferences.length>0)for(let[e,n]of this.textReferences.entries()){let r=n.name?`: ${n.name}`:``;t+=`\n\n## Reference ${e+1}${r}\n\n\`\`\`${n.content}'''`}if(!this.schema)return t;let n=`# Output Format Instructions
|
|
8
|
+
|
|
9
|
+
Return only valid JSON matching this schema. Do not wrap it in markdown. Do not include prose before or after the JSON.
|
|
10
|
+
`,[,r]=U(this.schema);for(let[e,t]of ne(this.schema))n+=`\n- ${e}: ${t}`;return n+=`\n\nExample:\n${JSON.stringify(r,null,2)}\n\n`,n+t}},Ue=class e extends E{constructor(t,n){super(t,{code:`TASK_ERROR`,id:n?.id,details:{taskType:n?.taskType,taskIndex:n?.taskIndex,...n?.details},cause:n?.cause}),Object.setPrototypeOf(this,e.prototype)}};function X(e,t=`Operation aborted`){if(e?.aborted)throw new O(t,{reason:e.reason})}function We(e,t,n=`Operation aborted`){return t?t.aborted?Promise.reject(new O(n,{reason:t.reason})):new Promise((r,i)=>{let a=()=>{t.removeEventListener(`abort`,a),i(new O(n,{reason:t.reason}))};t.addEventListener(`abort`,a,{once:!0}),e.then(e=>{t.removeEventListener(`abort`,a),r(e)},e=>{t.removeEventListener(`abort`,a),i(e)})}):e}function Ge(e,t,n=`[redacted]`){return Ke(e,null,t,n)}function Ke(e,t,n,r){if(typeof e!=`object`||!e)return typeof e==`string`&&t&&n.has(t)?r:e;if(Array.isArray(e))return e.map(e=>Ke(e,t,n,r));let i={};for(let[t,a]of Object.entries(e))i[t]=Ke(a,t,n,r);return i}const qe=new Set([`data`,`file_data`,`file_url`,`image_url`,`url`,`uri`,`fileUri`]);function Z(e){return Ge(e,qe,`[redacted-file-value]`)}function Je(e){if(e==null)return{type:`error`,error:{type:`Undetermined`,message:`Unknown error occurred`},usage:{in:0,out:0},raw:e};if(e instanceof Error)return{type:`error`,error:{type:e.name||`Error`,message:e.message||`Unexpected error`},usage:{in:0,out:0},raw:e};if(typeof e==`object`){let t=e,n=t?.error?.error?.type||t?.error?.type||t?.type||t?.code||t?.status||`Undetermined`,r=t?.error?.error?.message||t?.error?.message||t?.message||t?.error||`Unexpected error`;return{type:`error`,error:{type:String(n),message:String(r)},usage:{in:0,out:0},raw:e}}return{type:`error`,error:{type:`Undetermined`,message:String(e)},usage:{in:0,out:0},raw:e}}const Ye=20*1024*1024;async function Q(e,t){if(t.signal?.aborted)throw new DOMException(`File resolution aborted`,`AbortError`);let{source:n}=e;if(n.type===`base64`)return Xe({type:`base64`,data:n.data},e,t);if(n.type===`text`)return Xe({type:`text`,content:n.content},e,t);if(n.type===`url`)return Xe({type:`url`,url:n.url},e,t);if(!t.resolver)throw Error(`No fileResolver configured for deferred file: ${e.name}`);return Xe(await t.resolver({file:e,ref:n.ref,provider:t.provider,model:t.model,accepted:t.accepted,signal:t.signal}),e,t)}function Xe(e,t,n){if(n.accepted.includes(e.type))return{...e,mimeType:e.mimeType??t.mimeType,name:e.name??t.name};throw Error(`File source '${e.type}' is not supported for ${n.provider} ${t.kind} file '${t.name}'. Accepted: ${n.accepted.join(`, `)}`)}const Ze=new Set([`application/json`,`application/xml`,`application/yaml`,`application/x-yaml`,`application/toml`]);function Qe(e){return e.startsWith(`text/`)||Ze.has(e)}function $e(e){let t=m.getType(e);if(!t){let t=v(e).toLowerCase();throw Error(`Unsupported file type: ${t||`(no extension)`}`)}if(t.startsWith(`image/`))return{kind:`image`,mimeType:t};if(t===`application/pdf`)return{kind:`document`,mimeType:t};if(Qe(t))return{kind:`text`,mimeType:t};{let n=v(e).toLowerCase();throw Error(`Unsupported file type: ${n} (${t})`)}}async function et(e,t){let n=y(e);try{await h(n)}catch{throw Error(`File not found: ${e}`)}let r=await _(n);if(r.size>Ye)throw Error(`File too large: ${r.size} bytes. Maximum allowed: ${Ye} bytes`);let i=n.split(`/`).pop()||``,a=$e(n);if((t||(a.kind===`text`?`utf-8`:`base64`))===`utf-8`){if(a.kind!==`text`)throw Error(`Cannot read ${a.kind} file as text: ${e}`);let t=await g(n,`utf-8`);return{kind:`text`,mimeType:a.mimeType,size:r.size,name:i,source:{type:`text`,content:t}}}else{if(a.kind===`text`)throw Error(`Cannot read text file as binary: ${e}`);let t=(await g(n)).toString(`base64`);return{kind:a.kind,mimeType:a.mimeType,size:r.size,name:i,source:{type:`base64`,data:t}}}}async function tt(e,t={model:``}){return Promise.all(e.map(e=>nt(e,t)))}async function nt(e,t){if(e.role===`assistant`){let t=[];for(let n of e.content)n.type===`text`?t.push({type:`text`,text:n.text}):n.type===`thinking`?n.redacted?t.push({type:`redacted_thinking`,data:n.text}):n.signature&&t.push({type:`thinking`,thinking:n.text,signature:n.signature}):n.type===`tool-call`?t.push({type:`tool_use`,id:n.id,name:n.name,input:n.parameters}):n.type===`provider-tool`&&(t.push({type:`server_tool_use`,id:n.id,name:n.name,input:n.input??{}}),n.output!=null&&t.push({type:`web_search_tool_result`,tool_use_id:n.id,content:n.output}));return{role:`assistant`,content:t}}if(e.role===`tool`)return{role:`user`,content:await Promise.all(e.content.map(async e=>({type:`tool_result`,tool_use_id:e.id,content:typeof e.content==`string`?e.content:await ht(e.content,t),...e.isError?{is_error:!0}:{}})))};if(typeof e.content==`string`)return{role:`user`,content:e.content};{let n=[];for(let r of e.content)r.type===`text`?n.push({type:`text`,text:r.text}):r.type===`file`&&n.push(await rt(r.file,t,`user-message`));return{role:`user`,content:n}}}async function rt(e,t,n){if(e.kind===`image`)return{type:`image`,source:at(await Q(e,{provider:`anthropic`,model:t.model,accepted:[`url`,`base64`],purpose:n,resolver:t.fileResolver,signal:t.signal}),e)};if(e.kind===`document`){if(e.mimeType!==`application/pdf`)throw Error(`Anthropic only supports PDF document files. Received ${e.mimeType}`);let r=await Q(e,{provider:`anthropic`,model:t.model,accepted:[`url`,`base64`],purpose:n,resolver:t.fileResolver,signal:t.signal});return{type:`document`,source:ot(r),title:r.name??e.name}}let r=await Q(e,{provider:`anthropic`,model:t.model,accepted:[`text`],purpose:n,resolver:t.fileResolver,signal:t.signal});if(r.type!==`text`)throw Error(`Unsupported Anthropic text source: ${r.type}`);return n===`tool-result`?{type:`text`,text:r.content}:{type:`document`,source:{type:`text`,media_type:`text/plain`,data:r.content},title:r.name??e.name}}function it(e){if(e===`image/jpeg`||e===`image/png`||e===`image/gif`||e===`image/webp`)return e;throw Error(`Anthropic does not support image MIME type: ${e}. Supported types: image/jpeg, image/png, image/gif, image/webp.`)}function at(e,t){if(e.type===`url`)return{type:`url`,url:e.url};if(e.type===`base64`)return{type:`base64`,media_type:it(e.mimeType??t.mimeType),data:e.data};throw Error(`Unsupported Anthropic image source: ${e.type}`)}function ot(e){if(e.type===`url`)return{type:`url`,url:e.url};if(e.type===`base64`)return{type:`base64`,media_type:`application/pdf`,data:e.data};throw Error(`Unsupported Anthropic PDF source: ${e.type}`)}function st(e){return e===!0?{thinking:{type:`enabled`,budget_tokens:8192}}:{}}function ct(e){return e.map(e=>{let t=l.toJSONSchema(e.schema);if(!mt(t))throw Error(`Schema for tool ${e.name} must be an object type`);return{name:e.name,description:e.description,input_schema:t}})}const lt={web_search:`web_search_20250305`};function ut(e){return(e??[]).map(e=>({type:lt[e.name]??e.name,name:e.name,...e.config}))}function dt(e,t,n,r){if(e===void 0&&t!==!1)return{};let i=t===!1?{disable_parallel_tool_use:!0}:{};if(e===void 0||e===`auto`)return{tool_choice:{type:`auto`,...i}};if(e===`required`)return{tool_choice:{type:`any`,...i}};if(e===`none`)return{tool_choice:{type:`none`}};if(!(n?.some(t=>t.name===e.name)||r?.some(t=>t.name===e.name)))throw Error(`Tool choice references an unavailable tool: ${e.name}`);return{tool_choice:{type:`tool`,name:e.name,...i}}}function ft(e){let t=[];for(let n of e)if(n.type===`text`)t.push({type:`text`,text:n.text});else if(n.type===`thinking`)t.push({type:`thinking`,text:n.text||``,redacted:!1});else if(n.type===`redacted_thinking`)t.push({type:`thinking`,text:n.text||``,redacted:!0});else if(n.type===`tool_use`){if(typeof n.input!=`object`||n.input===null||Array.isArray(n.input))throw Error(`Invalid tool call input for ${n.name}: expected object, got ${typeof n.input}`);t.push({type:`tool-call`,id:n.id,name:n.name,parameters:n.input})}return t}function pt(e){switch(e){case`max_tokens`:return`length`;case`end_turn`:return`stop`;case`stop_sequence`:return`stop`;case`tool_use`:return`function_call`;default:return`error`}}function mt(e){return e&&typeof e==`object`&&e.type===`object`}async function ht(e,t){return Promise.all(e.map(async e=>e.type===`text`?{type:`text`,text:e.text}:rt(e.file,t,`tool-result`)))}async function gt(e){let{client:t,model:n,messages:r,system:i,tools:a,providerTools:o,runtime:s,reasoning:c,maxOutputTokens:l,temperature:u,topP:d,stop:f,toolChoice:p,parallelToolCalls:m,providerOptions:h,signal:g}=e,_=s?.tracer,v;try{X(g,`Generate aborted`);let e=await tt(r,{model:n,fileResolver:s?.fileResolver,signal:g}),y={model:n,max_tokens:l??16e3,messages:e,...i&&{system:i},...f&&{stop_sequences:Se(f)},...(a||o)&&{tools:[...a?ct(a):[],...ut(o)]},...st(c),...u===void 0?{}:{temperature:u},...d===void 0?{}:{top_p:d},...dt(p,m,a,o),...h};_?.debug(`Anthropic request`,{request:Z(y)});let b=await We(t.messages.create(y,...g?[{signal:g}]:[]),g,`Generate aborted`);X(g,`Generate aborted`),v=_t(b)}catch(e){X(g,`Generate aborted`),v=Je(e)}return _?.debug(`Anthropic response`,{result:v}),v}function _t(e){let t=pt(e.stop_reason);if(t===`error`)return{type:`error`,error:{type:`Uncaught error`,message:`Stop reason is not recognized or unhandled: ${e.stop_reason}`},usage:yt(e.usage),raw:e};if(t===`function_call`){let t=ft(e.content);return{type:`success`,id:e.id,model:e.model,role:e.role,finishReason:`function_call`,content:t,text:H(t),usage:yt(e.usage),raw:e}}if(e.type==`message`){let n=ft(e.content);return{type:`success`,id:e.id,model:e.model,role:`assistant`,finishReason:t,content:n,text:H(n),usage:yt(e.usage),raw:e}}return{type:`error`,error:{type:`InvalidResponse`,message:`Unsupported completion type: ${e.type}`},usage:yt(e.usage),raw:e}}function vt(e){return e.input_tokens+(e.cache_creation_input_tokens??0)+(e.cache_read_input_tokens??0)}function yt(e){return K({in:vt(e),out:e.output_tokens},{cachedIn:e.cache_read_input_tokens??void 0,cacheWriteIn:e.cache_creation_input_tokens??void 0})}function bt(){let e=new Map,t=new Map,n=0,r=0,i=0,a=0,o=new Map;function s(s){let c=[];switch(s.type){case`message_start`:n=(s.message.usage?.input_tokens??0)+(s.message.usage?.cache_creation_input_tokens??0)+(s.message.usage?.cache_read_input_tokens??0),a=s.message.usage?.cache_creation_input_tokens??0,i=s.message.usage?.cache_read_input_tokens??0,c.push({type:`start`,id:s.message.id,data:{model:s.message.model,timestamp:Date.now()}});break;case`message_delta`:s.usage&&(r=s.usage.output_tokens??r,s.usage.input_tokens!=null&&(n=s.usage.input_tokens+(s.usage.cache_creation_input_tokens??a)+(s.usage.cache_read_input_tokens??i)),a=s.usage.cache_creation_input_tokens??a,i=s.usage.cache_read_input_tokens??i),s.delta.stop_reason&&c.push({type:`complete`,data:{finishReason:pt(s.delta.stop_reason),usage:K({in:n,out:r},{cachedIn:i,cacheWriteIn:a})}});case`message_stop`:break;case`content_block_start`:if(s.content_block.type===`text`)e.set(s.index,`text`),c.push({type:`text-start`,data:{index:s.index}});else if(s.content_block.type===`tool_use`){e.set(s.index,`tool`);let t=s.content_block;o.set(s.index,{id:t.id,name:t.name,argumentsBuffer:``}),c.push({type:`tool-call-start`,data:{index:s.index,id:t.id,name:t.name}})}else if(s.content_block.type===`thinking`)e.set(s.index,`thinking`),c.push({type:`thinking-start`,data:{index:s.index,redacted:!1}});else if(s.content_block.type===`redacted_thinking`)e.set(s.index,`thinking`),c.push({type:`thinking-start`,data:{index:s.index,redacted:!0}});else if(s.content_block.type===`server_tool_use`){e.set(s.index,`provider-tool`);let n=s.content_block;t.set(n.id,{index:s.index,name:n.name}),c.push({type:`provider-tool-start`,data:{index:s.index,id:n.id,name:n.name}})}else if(s.content_block.type===`web_search_tool_result`){let e=s.content_block,n=t.get(e.tool_use_id);n&&(c.push({type:`provider-tool-complete`,data:{index:n.index,id:e.tool_use_id,name:n.name,output:e.content}}),t.delete(e.tool_use_id))}break;case`content_block_delta`:if(s.delta.type===`text_delta`)c.push({type:`text-delta`,data:{text:s.delta.text,index:s.index}});else if(s.delta.type===`input_json_delta`){let e=o.get(s.index);e&&(e.argumentsBuffer+=s.delta.partial_json,c.push({type:`tool-call-args-delta`,data:{index:s.index,id:e.id,name:e.name,delta:s.delta.partial_json,accumulated:e.argumentsBuffer}}))}else s.delta.type===`thinking_delta`?c.push({type:`thinking-delta`,data:{text:s.delta.thinking,index:s.index}}):s.delta.type===`signature_delta`||s.delta.type;break;case`content_block_stop`:{let t=e.get(s.index);if(t===`text`)c.push({type:`text-complete`,data:{index:s.index}});else if(t===`thinking`)c.push({type:`thinking-complete`,data:{index:s.index}});else if(t!==`provider-tool`&&t===`tool`){let e=o.get(s.index);if(e){try{let t=e.argumentsBuffer?JSON.parse(e.argumentsBuffer):{};c.push({type:`tool-call-complete`,data:{index:s.index,id:e.id,name:e.name,arguments:t}})}catch(t){throw Error(`Failed to parse tool call arguments for ${e.name}: ${t instanceof Error?t.message:String(t)}\nRaw buffer: ${e.argumentsBuffer}`)}o.delete(s.index)}}e.delete(s.index);break}}return c}return{handleEvent:s}}async function*xt(e){let{client:t,model:n,messages:r,system:i,tools:a,providerTools:o,runtime:s,signal:c,reasoning:l,maxOutputTokens:u,temperature:d,topP:f,stop:p,toolChoice:m,parallelToolCalls:h,providerOptions:g}=e,_=s?.tracer,v=[...a?ct(a):[],...ut(o)],y=bt();try{let e=await tt(r,{model:n,fileResolver:s?.fileResolver,signal:c}),b={model:n,max_tokens:u??St(n),messages:e,...i&&{system:i},...p&&{stop_sequences:Se(p)},...v.length>0&&{tools:v},...st(l),...d===void 0?{}:{temperature:d},...f===void 0?{}:{top_p:f},...dt(m,h,a,o),...g};_?.debug(`Anthropic streaming request`,{request:Z(b)});let x=await t.messages.create({...b,stream:!0},{signal:c});for await(let e of x){let t=y.handleEvent(e);for(let e of t)yield e}}catch(e){if(c?.aborted)return;yield{type:`error`,data:{type:`STREAMING_ERROR`,message:e instanceof Error?e.message:String(e),raw:e}}}}function St(e){return e in t?t[e]:e.includes(`opus`)?e.match(/opus-4-[6-9]|opus-[5-9]/)?128e3:64e3:e.includes(`sonnet`)||e.includes(`haiku`)?e.match(/claude-3-[0-5]-/)?8192:64e3:16384}function Ct(e){let t=new p({apiKey:e});return{name:`anthropic`,async createGenerationRequest(e,n){return await gt({client:t,model:e,...n})},createStreamingRequest(e,n){return xt({client:t,model:e,...n})}}}const wt={Models:i,DefaultModel:s};async function Tt(e,t,n={model:``}){let r=(await Promise.all(e.map(e=>jt(e,n)))).flat(1);return t?[{role:`system`,content:t},...r]:r}function Et(e){return e===!0?{reasoning_effort:`high`}:e===!1?{reasoning_effort:`none`}:{}}function Dt(e){return K({in:e?.prompt_tokens||0,out:e?.completion_tokens||0},{cachedIn:e?.prompt_tokens_details?.cached_tokens??e?.input_tokens_details?.cached_tokens,cacheWriteIn:e?.prompt_tokens_details?.cache_write_tokens??e?.prompt_tokens_details?.cache_creation_tokens??e?.input_tokens_details?.cache_write_tokens??e?.input_tokens_details?.cache_creation_tokens,reasoningOut:e?.completion_tokens_details?.reasoning_tokens??e?.output_tokens_details?.reasoning_tokens})}function Ot(e){if(e&&e.length>0)return e.map(e=>({type:`function`,function:{name:e.name,description:e.description,parameters:l.toJSONSchema(e.schema)}}))}function kt(e,t,n){if(e===void 0)return{};if(e===`auto`||e===`none`||e===`required`)return{tool_choice:e};if(t?.some(t=>t.name===e.name))return{tool_choice:{type:`function`,function:{name:e.name}}};throw n?.some(t=>t.name===e.name)?Error(`ChatCompletions does not support provider tool choice: ${e.name}`):Error(`Tool choice references an unavailable tool: ${e.name}`)}function At(e){switch(e){case`stop`:return`stop`;case`length`:return`length`;case`tool_calls`:case`function_call`:return`function_call`;case`content_filter`:return`error`;default:return`stop`}}async function jt(e,t){switch(e.role){case`tool`:return Mt(e,t);case`assistant`:return Nt(e);default:return Pt(e,t)}}async function Mt(e,t){return Promise.all(e.content.map(async e=>({role:`tool`,content:typeof e.content==`string`?e.content:await It(e.content,t),tool_call_id:e.id})))}function Nt(e){let t=e.content.filter(e=>e.type===`tool-call`),n=e.content.filter(e=>e.type===`text`),r=t.length>0?t.map(e=>({type:`function`,id:e.id,function:{name:e.name,arguments:JSON.stringify(e.parameters)}})):void 0;return{role:`assistant`,content:n.map(e=>e.text).join(``),...r&&{tool_calls:r}}}async function Pt(e,t){if(typeof e.content==`string`)return{role:`user`,content:e.content};let n=(await Promise.all(e.content.map(e=>Ft(e,t)))).filter(e=>e!==null);return n.every(e=>e.type===`text`)?{role:`user`,content:n.map(e=>e.text).join(``)}:{role:`user`,content:n}}async function Ft(e,t){return e.type===`text`?{type:`text`,text:e.text}:e.type===`file`?Lt(e.file,t,`user-message`):null}async function It(e,t){let n=[];for(let r of e){if(r.type===`text`){n.push(r.text);continue}if(r.file.kind===`text`){let e=await Q(r.file,{provider:`chatcompletions`,model:t.model,accepted:[`text`],purpose:`tool-result`,resolver:t.fileResolver,signal:t.signal});if(e.type!==`text`)throw Error(`Unsupported ChatCompletions text source: ${e.type}`);n.push(Bt(r.file,e.content,e.name,e.mimeType));continue}throw Error(`ChatCompletions tool results do not support file parts other than text`)}return n.join(`
|
|
11
|
+
`)}async function Lt(e,t,n){if(e.kind===`text`){let r=await Q(e,{provider:`chatcompletions`,model:t.model,accepted:[`text`],purpose:n,resolver:t.fileResolver,signal:t.signal});if(r.type!==`text`)throw Error(`Unsupported ChatCompletions text source: ${r.type}`);return{type:`text`,text:Bt(e,r.content,r.name,r.mimeType)}}if(e.kind===`document`){if(e.mimeType!==`application/pdf`)throw Error(`ChatCompletions document file inputs currently support PDF only. Received ${e.mimeType}`);let r=await Q(e,{provider:`chatcompletions`,model:t.model,accepted:[`url`,`base64`],purpose:n,resolver:t.fileResolver,signal:t.signal});return{type:`file`,file:{filename:r.name??e.name,file_data:zt(r,e)}}}return{type:`image_url`,image_url:{url:Rt(await Q(e,{provider:`chatcompletions`,model:t.model,accepted:[`url`,`base64`],purpose:n,resolver:t.fileResolver,signal:t.signal}),e)}}}function Rt(e,t){if(e.type===`url`)return e.url;if(e.type===`base64`)return`data:${e.mimeType??t.mimeType};base64,${e.data}`;throw Error(`Unsupported ChatCompletions image source: ${e.type}`)}function zt(e,t){if(e.type===`url`)return e.url;if(e.type===`base64`)return`data:${e.mimeType??t.mimeType};base64,${e.data}`;throw Error(`Unsupported ChatCompletions file source: ${e.type}`)}function Bt(e,t,n,r){return`File: ${n??e.name}\nMIME type: ${r??e.mimeType}\n\n${t}`}async function Vt(e){let{baseUrl:t,model:n,messages:r,system:i,tools:a,providerTools:o,runtime:s,apiKey:c,reasoning:l,maxOutputTokens:u,temperature:d,topP:f,stop:p,toolChoice:m,parallelToolCalls:h,providerOptions:g,signal:_}=e,v=s?.tracer,y;try{X(_,`Generate aborted`);let e=await Tt(r,i,{model:n,fileResolver:s?.fileResolver,signal:_}),b=Ot(a);o&&o.length>0&&v?.warn(`providerTools not supported by ChatCompletions provider`);let x={model:n,messages:e,...b&&{tools:b},...Et(l),...u===void 0?{}:{max_tokens:u},...d===void 0?{}:{temperature:d},...f===void 0?{}:{top_p:f},...p===void 0?{}:{stop:p},...kt(m,a,o),...h===void 0?{}:{parallel_tool_calls:h},...g};v?.debug(`ChatCompletions request`,{request:Z(x)});let S={"Content-Type":`application/json`};c&&(S.Authorization=`Bearer ${c}`);let C=await We(fetch(`${t}/chat/completions`,{method:`POST`,headers:S,body:JSON.stringify(x),signal:_}),_,`Generate aborted`);if(!C.ok){let e=await C.text().catch(()=>``);throw Error(`HTTP error! status: ${C.status}${e?` - ${e}`:``}`)}let w=await We(C.json(),_,`Generate aborted`);X(_,`Generate aborted`),y=Ht(w)}catch(e){X(_,`Generate aborted`),v?.error(`Error fetching ChatCompletions response`,{error:e instanceof Error?e.message:String(e)}),y=Je(e)}return v?.debug(`ChatCompletions response`,{result:y}),y}function Ht(e){let t=e.choices?.[0];if(!t)return{type:`error`,error:{type:`ChatCompletionsError`,message:`No choices in response`},usage:{in:0,out:0},raw:e};let n=[],r=t.message.reasoning_content??t.message.reasoning;if(r&&n.push({type:`thinking`,text:r}),t.message.content&&n.push({type:`text`,text:t.message.content}),t.message.tool_calls)for(let e of t.message.tool_calls){let t;try{t=JSON.parse(e.function.arguments)}catch(t){throw Error(`Invalid tool call arguments for ${e.function.name}: ${t instanceof Error?t.message:String(t)}`)}if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`Invalid tool call arguments for ${e.function.name}: expected object, got ${typeof t}`);n.push({type:`tool-call`,id:e.id,name:e.function.name,parameters:t})}let i=n.some(e=>e.type===`tool-call`)?At(`tool_calls`):At(t.finish_reason);return{type:`success`,id:e.id,model:e.model,role:`assistant`,finishReason:i,content:n,text:H(n),usage:Dt(e.usage),raw:e}}function Ut(){let e=new Map,t=0,n=-1,r=``,i=``,a=null,o,s;function c(e){n<0||(a===`text`?e.push({type:`text-complete`,data:{index:n}}):a===`thinking`&&e.push({type:`thinking-complete`,data:{index:n}}),a=null,n=-1)}function l(l){let u=[];l.usage&&(s=Dt(l.usage));let d=l.choices?.[0];if(!d)return u;r||(r=l.id,i=l.model,u.push({type:`start`,id:r,data:{model:i,timestamp:Date.now()}}));let f=d.delta,p=f.reasoning_content??f.reasoning;if(p&&(a!==`thinking`&&(c(u),n=t++,a=`thinking`,u.push({type:`thinking-start`,data:{index:n}})),u.push({type:`thinking-delta`,data:{index:n,text:p}})),f.content&&(a!==`text`&&(c(u),n=t++,a=`text`,u.push({type:`text-start`,data:{index:n}})),u.push({type:`text-delta`,data:{text:f.content,index:n}})),f.tool_calls){c(u);for(let n of f.tool_calls){let r=n.index;if(!e.has(r)){let i=t++,a=n.id||`tool-${i}`;e.set(r,{id:a,name:n.function?.name||``,argumentsBuffer:``,partIdx:i}),u.push({type:`tool-call-start`,data:{index:i,id:a,name:n.function?.name||``}})}let i=e.get(r);n.id&&(i.id=n.id),n.function?.name&&(i.name=n.function.name),n.function?.arguments&&(i.argumentsBuffer+=n.function.arguments,u.push({type:`tool-call-args-delta`,data:{index:i.partIdx,id:i.id,name:i.name,delta:n.function.arguments,accumulated:i.argumentsBuffer}}))}}if(d.finish_reason){c(u);for(let[,t]of e)try{let e=t.argumentsBuffer?JSON.parse(t.argumentsBuffer):{};u.push({type:`tool-call-complete`,data:{index:t.partIdx,id:t.id,name:t.name,arguments:e}})}catch(e){throw Error(`Failed to parse tool call arguments for ${t.name}: ${e instanceof Error?e.message:String(e)}\nRaw buffer: ${t.argumentsBuffer}`)}o=At(d.finish_reason)}return u}function u(){return o===void 0?[]:[{type:`complete`,data:{finishReason:o,usage:s??{in:0,out:0}}}]}return{handleChunk:l,finalize:u}}async function*Wt(e){let{baseUrl:t,model:n,messages:r,system:i,tools:a,providerTools:o,runtime:s,signal:c,apiKey:l,reasoning:u,maxOutputTokens:d,temperature:f,topP:p,stop:m,toolChoice:h,parallelToolCalls:g,providerOptions:_}=e,v=s?.tracer;o&&o.length>0&&v?.warn(`providerTools not supported by ChatCompletions provider`);let y=Ut();try{let e=await Tt(r,i,{model:n,fileResolver:s?.fileResolver,signal:c}),b=Ot(a),x={model:n,messages:e,stream:!0,stream_options:{include_usage:!0},...b&&{tools:b},...Et(u),...d===void 0?{}:{max_tokens:d},...f===void 0?{}:{temperature:f},...p===void 0?{}:{top_p:p},...m===void 0?{}:{stop:m},...kt(h,a,o),...g===void 0?{}:{parallel_tool_calls:g},..._};v?.debug(`ChatCompletions streaming request`,{request:Z(x)});let S={"Content-Type":`application/json`};l&&(S.Authorization=`Bearer ${l}`);let C=await fetch(`${t}/chat/completions`,{method:`POST`,headers:S,body:JSON.stringify(x),signal:c});if(!C.ok){let e=await C.text().catch(()=>``);throw Error(`HTTP error! status: ${C.status}${e?` - ${e}`:``}`)}if(!C.body)throw Error(`Response body is null`);let w=C.body.getReader(),T=new TextDecoder,E=``;for(;;){let{done:e,value:t}=await w.read();if(e)break;E+=T.decode(t,{stream:!0});let n=E.split(`
|
|
12
|
+
`);E=n.pop()||``;for(let e of n){let t=e.trim();if(!t||t.startsWith(`:`)||!t.startsWith(`data: `))continue;let n=t.slice(6);if(n!==`[DONE]`)try{let e=JSON.parse(n),t=y.handleChunk(e);for(let e of t)yield e}catch(e){v?.error(`Error parsing ChatCompletions stream chunk`,{error:e instanceof Error?e.message:String(e),line:t})}}}for(let e of y.finalize())yield e}catch(e){if(c?.aborted)return;v?.error(`Error in ChatCompletions streaming request`,{error:e instanceof Error?e.message:String(e)}),yield{type:`error`,data:{type:`STREAMING_ERROR`,message:e instanceof Error?e.message:String(e),raw:e}}}}function Gt(e,t){return{name:`ChatCompletions`,async createGenerationRequest(n,r){return await Vt({baseUrl:e,model:n,apiKey:t,...r})},createStreamingRequest(n,r){return Wt({baseUrl:e,model:n,apiKey:t,...r})}}}function Kt(e,t,n){let r={};return t&&(r.systemInstruction=t),e&&e.length>0&&(r.tools=e.map(e=>({functionDeclarations:[{name:e.name,description:e.description,parametersJsonSchema:l.toJSONSchema(e.schema)}]}))),n&&Object.assign(r,n),r}const qt={web_search:`googleSearch`,code_execution:`codeExecution`};function Jt(e,t){if(!(!t||t.length===0)){e.tools||=[];for(let n of t){let t=qt[n.name]??n.name;e.tools.push({[t]:n.config??{}})}}}function Yt(e,t,n,r){if(t===!1)throw Error(`Gemini does not support disabling parallel tool calls`);if(e===void 0)return{};if(e===`auto`)return{toolConfig:{functionCallingConfig:{mode:x.AUTO}}};if(e===`none`)return{toolConfig:{functionCallingConfig:{mode:x.NONE}}};if(e===`required`){if(!n||n.length===0)throw Error(`Gemini requires function tools for required tool choice`);return{toolConfig:{functionCallingConfig:{mode:x.ANY}}}}if(n?.some(t=>t.name===e.name))return{toolConfig:{functionCallingConfig:{mode:x.ANY,allowedFunctionNames:[e.name]}}};throw r?.some(t=>t.name===e.name)?Error(`Gemini does not support provider tool choice: ${e.name}`):Error(`Tool choice references an unavailable tool: ${e.name}`)}function Xt(e){return e===!0?{thinkingConfig:{thinkingBudget:8192,includeThoughts:!0}}:e===!1?{thinkingConfig:{thinkingBudget:0}}:{}}async function Zt(e,t={model:``}){return(await Promise.all(e.map(e=>Qt(e,t)))).filter(e=>e!==void 0)}async function Qt(e,t){switch(e.role){case`tool`:return $t(e,t);case`assistant`:return en(e);case`user`:return tn(e,t)}}async function $t(e,t){return{role:`user`,parts:(await Promise.all(e.content.map(async e=>{let n=typeof e.content==`string`?e.content:e.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
13
|
+
`),r={functionResponse:{id:e.id??void 0,name:e.name,response:{output:n}}};return typeof e.content==`string`?[r]:[r,...await Promise.all(e.content.filter(e=>e.type===`file`).map(e=>rn(e.file,t,`tool-result`)))]}))).flat(1)}}function en(e){let t=[],n=e.content.filter(e=>e.type===`text`);if(n.length>0){let e=n.map(e=>e.text).join(``);e&&t.push({text:e})}let r=e.content.filter(e=>e.type===`tool-call`);return r.length>0&&t.push(...r.map(e=>{let t={functionCall:{id:e.id??void 0,name:e.name,args:e.parameters}};return e.providerMetadata?.thoughtSignature&&(t.thoughtSignature=e.providerMetadata.thoughtSignature),t})),{role:`model`,parts:t}}async function tn(e,t){return typeof e.content==`string`?{role:`user`,parts:[{text:e.content}]}:{role:`user`,parts:(await Promise.all(e.content.map(e=>nn(e,t)))).filter(e=>e!==null)}}async function nn(e,t){return e.type===`text`?{text:e.text}:e.type===`file`?rn(e.file,t,`user-message`):null}async function rn(e,t,n){if(e.kind===`text`){let r=await Q(e,{provider:`gemini`,model:t.model,accepted:[`text`],purpose:n,resolver:t.fileResolver,signal:t.signal});if(r.type!==`text`)throw Error(`Unsupported Gemini text source: ${r.type}`);return{text:on(e,r.content,r.name,r.mimeType)}}if(e.kind===`document`&&e.mimeType!==`application/pdf`)throw Error(`Gemini document file support is limited to PDFs. Received ${e.mimeType}`);return an(await Q(e,{provider:`gemini`,model:t.model,accepted:[`gemini-file-uri`,`url`,`base64`],purpose:n,resolver:t.fileResolver,signal:t.signal}),e)}function an(e,t){if(e.type===`base64`)return{inlineData:{mimeType:e.mimeType??t.mimeType,data:e.data}};if(e.type===`url`)return{fileData:{mimeType:e.mimeType??t.mimeType,fileUri:e.url}};if(e.type===`gemini-file-uri`)return{fileData:{mimeType:e.mimeType??t.mimeType,fileUri:e.uri}};throw Error(`Unsupported Gemini file source: ${e.type}`)}function on(e,t,n,r){return`File: ${n??e.name}\nMIME type: ${r??e.mimeType}\n\n${t}`}function sn(e){switch(e){case b.STOP:return[!0,`stop`];case b.MAX_TOKENS:return[!0,`length`];case b.FINISH_REASON_UNSPECIFIED:case b.SAFETY:case b.RECITATION:case b.LANGUAGE:case b.OTHER:case b.BLOCKLIST:case b.PROHIBITED_CONTENT:case b.SPII:case b.MALFORMED_FUNCTION_CALL:case b.IMAGE_SAFETY:return[!1,`error`]}return[!1,`error`]}async function cn(e){let{client:t,model:n,messages:r,system:i,tools:a,providerTools:o,runtime:s,reasoning:c,maxOutputTokens:l,temperature:u,topP:d,stop:f,toolChoice:p,parallelToolCalls:m,providerOptions:h,signal:g}=e,_=s?.tracer,v={...Xt(c),...l===void 0?{}:{maxOutputTokens:l},...u===void 0?{}:{temperature:u},...d===void 0?{}:{topP:d},...f===void 0?{}:{stopSequences:Array.isArray(f)?f:[f]},...Yt(p,m,a,o),...h},y;try{X(g,`Generate aborted`);let e=await Zt(r,{model:n,fileResolver:s?.fileResolver,signal:g}),c=Kt(a,i,v);p!==`none`&&Jt(c,o);let l={contents:e,config:c};_?.debug(`Gemini request`,{request:Z(l)});let u=await We(t.models.generateContent({model:n,...l}),g,`Generate aborted`);X(g,`Generate aborted`),y=ln(u,{tracer:_})}catch(e){X(g,`Generate aborted`),_?.error(e instanceof Error?e.message:String(e)),y=Je(e)}return _?.debug(`Gemini response`,{result:y}),y}function ln(e,t){let{tracer:n}=t,r=e.usageMetadata?.promptTokenCount??0,i=K({in:r,out:(e.usageMetadata?.totalTokenCount??r)-r},{cachedIn:e.usageMetadata?.cachedContentTokenCount,reasoningOut:e.usageMetadata?.thoughtsTokenCount});if(!e)return{type:`error`,error:{type:`InvalidResponse`,message:`Invalid or empty response from Google AI`},usage:{in:0,out:0},raw:e};if(e.promptFeedback&&e.promptFeedback.blockReason)return{type:`error`,error:{type:`Blocked`,message:`Response blocked by Google AI: ${e.promptFeedback.blockReason}, ${e.promptFeedback.blockReasonMessage}`},usage:i,raw:e};if(!e.candidates||e.candidates.length===0)return{type:`error`,error:{type:`InvalidResponse`,message:`Invalid or empty response from Google AI`},usage:{in:0,out:0},raw:e};e.candidates.length>1&&n?.warn(`We received ${e.candidates.length} response candidates`);let a=e.candidates[0],o=a.content?.parts||[],s=o.map(e=>e.text).filter(e=>e!==void 0).join(``),[c,l]=sn(a.finishReason);if(c){let t=[];s&&t.push({type:`text`,text:s});let n=o.filter(e=>e.functionCall),r=n.length>0?n.map(e=>({call:e.functionCall,thoughtSignature:e.thoughtSignature})):(e.functionCalls??[]).map(e=>({call:e,thoughtSignature:void 0}));if(r.length>0)for(let{call:e,thoughtSignature:n}of r)if(e.args==null)t.push({type:`tool-call`,id:e.id??``,name:e.name??``,parameters:{},...n?{providerMetadata:{thoughtSignature:n}}:{}});else if(typeof e.args!=`object`||Array.isArray(e.args))throw Error(`Invalid tool call arguments for ${e.name}: expected object, got ${typeof e.args}`);else t.push({type:`tool-call`,id:e.id??``,name:e.name??``,parameters:e.args,...n?{providerMetadata:{thoughtSignature:n}}:{}});return{type:`success`,id:e.responseId??``,model:e.modelVersion??``,role:`assistant`,finishReason:r.length>0?`function_call`:l,content:t,text:H(t),usage:i,raw:e}}else return{type:`error`,error:{type:`Undetermined`,message:`Unexpected stop reason: ${l}`},usage:i,raw:e}}function un(){let e=0,t=-1,n=!1,r=``,i=``,a=0,o=0,s=0,c=0,l=null;function u(e){t<0||(l===`text`?e.push({type:`text-complete`,data:{index:t}}):l===`thinking`&&e.push({type:`thinking-complete`,data:{index:t}}),l=null,t=-1)}function d(d){let f=[];r||(r=d.responseId||`gemini-${Date.now()}`,i=d.modelVersion||`gemini`,f.push({type:`start`,id:r,data:{model:i,timestamp:Date.now()}})),d.usageMetadata&&(a=d.usageMetadata.promptTokenCount||0,o=(d.usageMetadata.totalTokenCount||0)-a,s=d.usageMetadata.cachedContentTokenCount||0,c=d.usageMetadata.thoughtsTokenCount||0);let p=d.candidates?.[0];if(!p)return f;let m=p.content?.parts||[];for(let r of m){let i=`thought`in r&&r.thought===!0,a=Object.keys(r),o=a.length===1&&`text`in r&&!r.text;if(!(`thoughtSignature`in r&&!r.text&&!r.functionCall||a.length===2&&`text`in r&&`thoughtSignature`in r&&!r.text||o)&&(i&&r.text?(l!==`thinking`&&(u(f),t=e++,l=`thinking`,f.push({type:`thinking-start`,data:{index:t}})),f.push({type:`thinking-delta`,data:{index:t,text:r.text}})):r.text&&!i?(l!==`text`&&(u(f),t=e++,l=`text`,f.push({type:`text-start`,data:{index:t}})),f.push({type:`text-delta`,data:{text:r.text,index:t}})):r.functionCall||console.log(`[gemini] unhandled part type: ${JSON.stringify(Object.keys(r))}`),r.functionCall)){u(f),n=!0;let t=e++,i=r.functionCall.id||`tool-${t}`,a=r.functionCall.name??``;f.push({type:`tool-call-start`,data:{index:t,id:i,name:a}});let o=r.functionCall.args??{},s=JSON.stringify(o);f.push({type:`tool-call-args-delta`,data:{index:t,id:i,name:a,delta:s,accumulated:s}});let c={index:t,id:i,name:a,arguments:o},l=r;l.thoughtSignature&&(c.providerMetadata={thoughtSignature:l.thoughtSignature}),f.push({type:`tool-call-complete`,data:c})}}if(p.finishReason&&p.finishReason!==b.FINISH_REASON_UNSPECIFIED){u(f);let[e,t]=sn(p.finishReason),r=n?`function_call`:t;!e&&!n?f.push({type:`error`,data:{type:`FinishReasonError`,message:`Unexpected finish reason: ${p.finishReason}`,usage:K({in:a,out:o},{cachedIn:s,reasoningOut:c}),raw:d}}):f.push({type:`complete`,data:{finishReason:r,usage:K({in:a,out:o},{cachedIn:s,reasoningOut:c})}})}return f}return{handleChunk:d}}async function*dn(e){let{client:t,model:n,messages:r,system:i,tools:a,providerTools:o,runtime:s,signal:c,reasoning:l,maxOutputTokens:u,temperature:d,topP:f,stop:p,toolChoice:m,parallelToolCalls:h,providerOptions:g}=e,_=s?.tracer,v=Kt(a,i,{...Xt(l),...u===void 0?{}:{maxOutputTokens:u},...d===void 0?{}:{temperature:d},...f===void 0?{}:{topP:f},...p===void 0?{}:{stopSequences:Array.isArray(p)?p:[p]},...Yt(m,h,a,o),...g});m!==`none`&&Jt(v,o);let y=un();try{let e={contents:await Zt(r,{model:n,fileResolver:s?.fileResolver,signal:c}),config:v};_?.debug(`Gemini streaming request`,{request:Z(e)});let i=await t.models.generateContentStream({model:n,...e});for await(let e of i){let t=y.handleChunk(e);for(let e of t)yield e}}catch(e){if(c?.aborted)return;_?.error(e instanceof Error?e.message:String(e)),yield{type:`error`,data:{type:`STREAMING_ERROR`,message:e instanceof Error?e.message:String(e),raw:e}}}}function fn(e){let t=new S({apiKey:e});return{name:`Gemini`,async createGenerationRequest(e,n){return await cn({client:t,model:e,...n})},createStreamingRequest(e,n){return dn({client:t,model:e,...n})}}}const pn={Models:r,DefaultModel:n};async function mn(e){let{provider:t,model:n,messages:r,system:i,tools:a,providerTools:o,tracer:s,fileResolver:c,...l}=e;return t.createGenerationRequest(n,{messages:r,system:i,tools:a,providerTools:o,runtime:{tracer:s,fileResolver:c},...l})}async function hn(e){if(`instruct`in e){let{instruct:t,messages:n,...r}=e,i=W(t),a=await gn({...r,messages:[...n??[],i.message]});if(!a.ok)return a;try{return{...a,response:i.parse(a.final)}}catch(e){return{ok:!1,messages:a.messages,final:a.final,usage:a.usage,error:{kind:`parse`,error:e,message:e instanceof Error?e.message:String(e)}}}}return gn(e)}async function gn(e){let{provider:t,model:n,messages:r,system:i,onToolCall:a,maxIterations:o,tracer:s,fileResolver:c,reasoning:l,maxOutputTokens:u,temperature:d,topP:f,stop:p,toolChoice:m,parallelToolCalls:h,providerOptions:g,signal:_=new AbortController().signal}=e,v=me(e),y=[...r],b=[],x=G(),S=0,C,w=e=>{y.push(e),b.push(e)},T=e=>(s?.setResult({kind:`llm`,model:n,request:{messages:r},response:{content:e.ok?e.final.content:null},usage:ce(e.usage),finishReason:e.ok?e.final.finishReason:void 0}),s?.end(e.ok?`ok`:`error`),e),E=(e,t)=>{if(!e||t.type===`error`){e?.end(`error`);return}e.setResult({kind:`llm`,model:t.model??n,request:{messages:y},response:{content:t.content},usage:ce(t.usage),finishReason:t.finishReason}),e.end()};try{for(;;){if(X(_,`Generate aborted`),o!==void 0&&S>=o)return T({ok:!1,messages:b,error:{kind:`model`,error:{type:`error`,error:{type:`MaxIterations`,message:`Exceeded max iterations (${o})`}}},usage:x});S+=1;let e=s?.startSpan(`turn-${S}`,{type:`llm`}),r=v.executable(),D=r.length>0?r.map(e=>({name:e.name,description:e.description,schema:e.schema})):void 0,O=v.provider(),k;try{k=await mn({provider:t,model:n,messages:y,system:i,tools:D,providerTools:O.length>0?O:void 0,tracer:e,fileResolver:c,reasoning:l,maxOutputTokens:u,temperature:d,topP:f,stop:p,toolChoice:m,parallelToolCalls:h,providerOptions:g,signal:_}),X(_,`Generate aborted`)}catch(t){throw t instanceof Error&&t.name===`AbortError`&&e?.end(`ok`),t}if(fe(x,k),E(e,k),k.type===`error`)return T({ok:!1,messages:b,error:{kind:`model`,error:k},usage:x});let A={role:`assistant`,id:k.id,model:k.model,content:k.content,finishReason:k.finishReason};if(w(A),C=A,k.finishReason!==`function_call`)return T({ok:!0,response:C,messages:b,final:C,usage:x});let j=te(k.content);if(j.length===0)return T({ok:!0,response:C,messages:b,final:C,usage:x});let{results:ee}=await he(j,a,_,v,s);X(_,`Generate aborted`),ee.length>0&&w({role:`tool`,id:crypto.randomUUID(),content:ee})}}catch(e){throw e instanceof A?(s?.end(`error`),new A(e.message,{toolName:e.toolName,messages:e.messages??b,partial:e.partial??C,usage:e.usage??x,cause:e.cause})):e instanceof O?(s?.end(`ok`),new O(`Generate aborted`,{reason:e.reason,messages:e.messages??b,partial:e.partial,usage:e.usage??x})):e instanceof Error&&e.name===`AbortError`?(s?.end(`ok`),new O(`Generate aborted`,{reason:_.reason,messages:b,usage:x})):e}}function _n(e){if(e&&e.length>0)return e.map(e=>({type:`function`,strict:!0,name:e.name,description:e.description,parameters:l.toJSONSchema(e.schema)}))}const vn={web_search:`web_search_preview`,code_execution:`code_interpreter`};function yn(e){return e?.map(e=>({type:vn[e.name]??e.name,...e.config}))}function bn(e,t,n){if(e===void 0)return{};if(e===`auto`||e===`none`||e===`required`)return{tool_choice:e};if(t?.some(t=>t.name===e.name))return{tool_choice:{type:`function`,name:e.name}};let r=n?.find(t=>t.name===e.name);if(r)return{tool_choice:{type:vn[r.name]??r.name}};throw Error(`Tool choice references an unavailable tool: ${e.name}`)}function xn(e){return e===!0?{reasoning:{effort:`high`}}:e===!1?{reasoning:{effort:`none`}}:{}}async function Sn(e,t={model:``}){return(await Promise.all(e.map(e=>Cn(e,t)))).flat(1)}async function Cn(e,t){switch(e.role){case`tool`:return wn(e,t);case`assistant`:return Tn(e);default:return En(e,t)}}async function wn(e,t){return Promise.all(e.content.map(async e=>({type:`function_call_output`,call_id:e.id,output:typeof e.content==`string`?e.content:await Promise.all(e.content.map(e=>e.type===`text`?Promise.resolve({type:`input_text`,text:e.text}):On(e.file,t,`tool-result`)))})))}function Tn(e){let t=[],n=H(e.content);n&&t.push({role:e.role,content:n});let r=e.content.filter(e=>e.type===`tool-call`);for(let e of r)t.push({type:`function_call`,call_id:e.id,name:e.name,arguments:JSON.stringify(e.parameters)});let i=e.content.filter(e=>e.type===`provider-tool`);for(let e of i)e.output!=null&&t.push(e.output);return t}async function En(e,t){if(typeof e.content==`string`)return{role:e.role,content:e.content};{let n=(await Promise.all(e.content.map(e=>Dn(e,t)))).filter(e=>e!==null);return{role:e.role,content:n}}}async function Dn(e,t){return e.type===`text`?{type:`input_text`,text:e.text}:e.type===`file`?On(e.file,t,`user-message`):(e.type,null)}async function On(e,t,n){if(e.kind===`image`)return{type:`input_image`,image_url:kn(await Q(e,{provider:`openai`,model:t.model,accepted:[`url`,`base64`],purpose:n,resolver:t.fileResolver,signal:t.signal}),e),detail:`auto`};if(e.kind===`document`){if(e.mimeType!==`application/pdf`)throw Error(`OpenAI file inputs currently support PDF documents. Received ${e.mimeType}`);return An(await Q(e,{provider:`openai`,model:t.model,accepted:[`url`,`base64`],purpose:n,resolver:t.fileResolver,signal:t.signal}),e)}let r=await Q(e,{provider:`openai`,model:t.model,accepted:[`text`,`url`,`base64`],purpose:n,resolver:t.fileResolver,signal:t.signal});return r.type===`text`?{type:`input_text`,text:r.content}:An(r,e)}function kn(e,t){if(e.type===`url`)return e.url;if(e.type===`base64`)return`data:${e.mimeType??t.mimeType};base64,${e.data}`;throw Error(`Unsupported OpenAI image source: ${e.type}`)}function An(e,t){if(e.type===`url`)return{type:`input_file`,filename:e.name??t.name,file_url:e.url};if(e.type===`base64`)return{type:`input_file`,filename:e.name??t.name,file_data:`data:${e.mimeType??t.mimeType};base64,${e.data}`};throw Error(`Unsupported OpenAI file source: ${e.type}`)}async function jn(e){let{client:t,model:n,messages:r,system:i,tools:a,providerTools:o,runtime:s,reasoning:c,maxOutputTokens:l,temperature:u,topP:d,stop:f,toolChoice:p,parallelToolCalls:m,providerOptions:h,signal:g}=e,_=s?.tracer,v;try{if(X(g,`Generate aborted`),f!==void 0)throw Error(`OpenAI Responses does not support normalized stop sequences`);let e=[..._n(a)??[],...yn(o)??[]],y={model:n,input:await Sn(r,{model:n,fileResolver:s?.fileResolver,signal:g}),...i&&{instructions:i},...e.length>0?{tools:e}:{},...xn(c),...l===void 0?{}:{max_output_tokens:l},...u===void 0?{}:{temperature:u},...d===void 0?{}:{top_p:d},...bn(p,a,o),...m===void 0?{}:{parallel_tool_calls:m},...h};_?.debug(`OpenAI ResponsesAPI request`,{request:Z(y)});let b=await We(t.responses.create(y,...g?[{signal:g}]:[]),g,`Generate aborted`);X(g,`Generate aborted`),v=Mn(b)}catch(e){X(g,`Generate aborted`),_?.error(e instanceof Error?e.message:String(e)),v=Je(e)}return _?.debug(`OpenAI ResponsesAPI response`,{result:v}),v}function Mn(e){if(e.error)return{type:`error`,error:{type:e.error.code||`undetermined`,message:e.error.message||`Response generation failed`},usage:Nn(e.usage),raw:e};let t=e.output?.filter(e=>e.type===`reasoning`)?.map(e=>e),n=[];if(t&&t.length>0)for(let e of t){let t=e.summary?.[0]?.text||e.content?.[0]?.text||``;(t||e.encrypted_content)&&n.push({type:`thinking`,text:t,...e.encrypted_content&&{encrypted:e.encrypted_content}})}e.output_text&&n.push({type:`text`,text:e.output_text});let r=e.output?.filter(e=>e.type===`function_call`);if(r&&r.length>0)for(let e of r){let t=e;try{n.push({type:`tool-call`,id:t.call_id||t.id||``,name:t.name||``,parameters:t.arguments?JSON.parse(t.arguments):{}})}catch(e){throw Error(`Failed to parse tool call arguments for ${t.name}: ${e instanceof Error?e.message:String(e)}\nRaw value: ${t.arguments}`)}}return{type:`success`,id:e.id,model:e.model||``,role:`assistant`,finishReason:e.incomplete_details?`error`:r&&r.length>0?`function_call`:`stop`,content:n,text:H(n),usage:Nn(e.usage),raw:e}}function Nn(e){return K({in:e?.input_tokens??0,out:e?.output_tokens??0},{cachedIn:e?.input_tokens_details?.cached_tokens,reasoningOut:e?.output_tokens_details?.reasoning_tokens})}function Pn(){let e=``,t=``,n=0,r=-1,i=!1,a=new Map,o=new Map,s=new Set([`web_search_call`,`file_search_call`,`code_interpreter_call`]),c=new Map;function l(l){let u=[];switch(l.type){case`response.created`:e=l.response.id||`openai-${Date.now()}`,t=l.response.model,u.push({type:`start`,id:e,data:{model:t,timestamp:Date.now()}});break;case`response.output_text.delta`:r===-1&&(r=n++,u.push({type:`text-start`,data:{index:r}})),u.push({type:`text-delta`,data:{text:l.delta,index:r}});break;case`response.output_text.done`:r>=0&&(u.push({type:`text-complete`,data:{index:r}}),r=-1);break;case`response.function_call_arguments.delta`:{let e=l.item_id;if(!c.has(e)){let t=a.get(e),r=t?.name||``,i=t?.callId||e,o=n++;c.set(e,{id:e,callId:i,name:r,argumentsBuffer:``,partIdx:o}),u.push({type:`tool-call-start`,data:{index:o,id:i,name:r}})}let t=c.get(e);t.argumentsBuffer+=l.delta,u.push({type:`tool-call-args-delta`,data:{index:t.partIdx,id:t.callId,name:t.name,delta:l.delta,accumulated:t.argumentsBuffer}});break}case`response.function_call_arguments.done`:{i=!0;let e=l.item_id,t=c.get(e),n=l.name||t?.name||``;if(t){try{let e=l.arguments?JSON.parse(l.arguments):{};u.push({type:`tool-call-complete`,data:{index:t.partIdx,id:t.callId,name:n,arguments:e}})}catch(e){throw Error(`Failed to parse function call arguments for ${n}: ${e instanceof Error?e.message:String(e)}\nRaw value: ${l.arguments}`)}c.delete(e)}break}case`response.completed`:{let e=l.response.usage;u.push({type:`complete`,data:{finishReason:l.response.incomplete_details?`error`:i?`function_call`:`stop`,usage:K({in:e?.input_tokens||0,out:e?.output_tokens||0},{cachedIn:e?.input_tokens_details?.cached_tokens,reasoningOut:e?.output_tokens_details?.reasoning_tokens})}});break}case`response.failed`:u.push({type:`error`,data:{type:`RESPONSES_API_ERROR`,message:`Response failed: ${l.response.status}`,raw:l}});break;case`response.output_item.added`:if(l.item?.type===`reasoning`)r=n++,u.push({type:`thinking-start`,data:{index:r}});else if(l.item?.type===`function_call`){let e=l.item,t=e.id||e.call_id;t&&a.set(t,{name:e.name||``,callId:e.call_id||t})}else if(l.item&&s.has(l.item.type)){let e=l.item,t=n++;o.set(e.id,t),u.push({type:`provider-tool-start`,data:{index:t,id:e.id,name:e.type}})}break;case`response.output_item.done`:if(l.item?.type===`reasoning`&&r>=0)u.push({type:`thinking-complete`,data:{index:r}}),r=-1;else if(l.item&&s.has(l.item.type)){let e=l.item,t=o.get(e.id);t!==void 0&&(u.push({type:`provider-tool-complete`,data:{index:t,id:e.id,name:e.type,output:l.item}}),o.delete(e.id))}break;case`response.reasoning_text.delta`:l.delta&&u.push({type:`thinking-delta`,data:{index:r,text:l.delta}});break;case`response.reasoning_summary_text.delta`:l.delta&&u.push({type:`thinking-summary-delta`,data:{index:r,text:l.delta}});break;case`response.in_progress`:case`response.content_part.added`:case`response.content_part.done`:case`response.reasoning_summary_part.added`:case`response.reasoning_summary_part.done`:case`response.reasoning_summary_text.done`:case`response.reasoning_text.done`:case`response.web_search_call.in_progress`:case`response.web_search_call.searching`:case`response.web_search_call.completed`:break;default:console.log(`[OpenAI] unhandled stream event: ${l.type}`)}return u}return{handleEvent:l}}async function*Fn(e){let{client:t,model:n,messages:r,system:i,tools:a,providerTools:o,runtime:s,signal:c,reasoning:l,maxOutputTokens:u,temperature:d,topP:f,stop:p,toolChoice:m,parallelToolCalls:h,providerOptions:g}=e,_=s?.tracer;if(p!==void 0)throw Error(`OpenAI Responses does not support normalized stop sequences`);let v=[..._n(a)??[],...yn(o)??[]],y=Pn();try{let e={model:n,input:await Sn(r,{model:n,fileResolver:s?.fileResolver,signal:c}),...i&&{instructions:i},stream:!0,...v.length>0?{tools:v}:{},...xn(l),...u===void 0?{}:{max_output_tokens:u},...d===void 0?{}:{temperature:d},...f===void 0?{}:{top_p:f},...bn(m,a,o),...h===void 0?{}:{parallel_tool_calls:h},...g};_?.debug(`OpenAI ResponsesAPI streaming request`,{request:Z(e)});let p=t.responses.stream(e,...c?[{signal:c}]:[]);for await(let e of p){let t=y.handleEvent(e);for(let e of t)yield e}}catch(e){if(c?.aborted)return;_?.error(e instanceof Error?e.message:String(e)),yield{type:`error`,data:{type:`STREAMING_ERROR`,message:e instanceof Error?e.message:String(e),raw:e}}}}function In(e){let t=new C({apiKey:e});return{name:`OpenAI`,async createGenerationRequest(e,n){return await jn({client:t,model:e,...n})},createStreamingRequest(e,n){return Fn({client:t,model:e,...n})}}}const Ln={Models:a,DefaultModel:o},Rn={debug:0,info:1,warn:2,error:3};var zn=class{writers=[];_minLevel=`info`;get minLevel(){return this._minLevel}set minLevel(e){this._minLevel=e}addWriter(e){this.writers.includes(e)||this.writers.push(e)}removeWriter(e){let t=this.writers.indexOf(e);t!==-1&&this.writers.splice(t,1)}startSpan(e,t){let n={traceId:crypto.randomUUID(),spanId:crypto.randomUUID(),name:e,type:t?.type,startTime:performance.now(),status:`ok`,attributes:{},events:[]};return this.writers.forEach(e=>e.onSpanStart(n)),new Bn(n,this)}async flush(){for(let e of this.writers)e.flush&&await e.flush()}_notifySpanEnd(e){this.writers.forEach(t=>t.onSpanEnd(e))}_notifySpanUpdate(e){this.writers.forEach(t=>t.onSpanUpdate?.(e))}_notifyEvent(e,t){this.writers.forEach(n=>n.onEvent?.(e,t))}_notifySpanStart(e){this.writers.forEach(t=>t.onSpanStart(e))}_shouldLog(e){return Rn[e]>=Rn[this._minLevel]}},Bn=class e{data;tracer;ended=!1;constructor(e,t){this.data=e,this.tracer=t}startSpan(t,n){let r={traceId:this.data.traceId,spanId:crypto.randomUUID(),parentSpanId:this.data.spanId,name:t,type:n?.type,startTime:performance.now(),status:`ok`,attributes:{},events:[]};return this.tracer._notifySpanStart(r),new e(r,this.tracer)}end(e=`ok`){this.ended||(this.ended=!0,this.data.endTime=performance.now(),this.data.status=e,this.tracer._notifySpanEnd(this.data))}addEvent(e,t,n){if(this.ended||!this.tracer._shouldLog(t))return;let r={name:e,timestamp:performance.now(),level:t,attributes:n};this.data.events.push(r),this.tracer._notifyEvent(this.data,r)}debug(e,t){this.addEvent(e,`debug`,t)}info(e,t){this.addEvent(e,`info`,t)}warn(e,t){this.addEvent(e,`warn`,t)}error(e,t){this.addEvent(e,`error`,t)}setAttribute(e,t){this.ended||(this.data.attributes[e]=t,this.tracer._notifySpanUpdate(this.data))}setAttributes(e){this.ended||(Object.assign(this.data.attributes,e),this.tracer._notifySpanUpdate(this.data))}setResult(e){this.ended||(this.data.result=e,this.tracer._notifySpanUpdate(this.data))}};const Vn={debug:0,info:1,warn:2,error:3};var Hn=class{minLevel;showInternal;showTimestamp;showDuration;markdown;output;spans=new Map;visibleDepths=new Map;constructor(e={}){this.minLevel=e.minLevel??`info`,this.showInternal=e.showInternal??!1,this.showTimestamp=e.showTimestamp??!0,this.showDuration=e.showDuration??!0,this.markdown=e.markdown??!1,this.output=e.output??console.log}shouldShowEvent(e){return Vn[e]>=Vn[this.minLevel]}isSpanVisible(e){return!(e.type===`internal`&&!this.showInternal)}findVisibleAncestor(e){let t=e.parentSpanId;for(;t;){let e=this.spans.get(t);if(!e)break;if(this.isSpanVisible(e))return e;t=e.parentSpanId}return null}calculateVisibleDepth(e){if(!this.isSpanVisible(e))return-1;let t=this.findVisibleAncestor(e);return t?(this.visibleDepths.get(t.spanId)??0)+1:0}formatTimestamp(){if(!this.showTimestamp)return``;let e=new Date;return`[${e.toTimeString().slice(0,8)}.${e.getMilliseconds().toString().padStart(3,`0`)}] `}formatDuration(e){if(!this.showDuration||!e.endTime)return``;let t=e.endTime-e.startTime;return t<1e3?` (${Math.round(t)}ms)`:` (${(t/1e3).toFixed(2)}s)`}formatIndent(e){return` `.repeat(e)}formatSpanName(e){return e.type?`[${e.type}] ${e.name}`:e.name}renderMarkdown(e){return Un(e).trimEnd()}onSpanStart(e){if(this.spans.set(e.spanId,e),!this.isSpanVisible(e))return;let t=this.calculateVisibleDepth(e);this.visibleDepths.set(e.spanId,t);let n=this.formatIndent(t),r=this.formatTimestamp(),i=this.formatSpanName(e);this.output(`${r}${n}START ${i}`)}onSpanEnd(e){if(this.spans.set(e.spanId,e),!this.isSpanVisible(e))return;let t=this.visibleDepths.get(e.spanId)??0,n=this.formatIndent(t),r=this.formatTimestamp(),i=this.formatDuration(e),a=this.formatSpanName(e),o=e.status===`error`?` [ERROR]`:``;if(this.output(`${r}${n}END ${a}${i}${o}`),e.result?.kind===`llm`){let t=e.result,i=[`model=${t.model}`];if(t.finishReason&&i.push(`finishReason=${t.finishReason}`),t.usage&&(t.usage.inputTokens!==void 0&&i.push(`inputTokens=${t.usage.inputTokens}`),t.usage.outputTokens!==void 0&&i.push(`outputTokens=${t.usage.outputTokens}`),t.usage.cachedInputTokens!==void 0&&i.push(`cachedInputTokens=${t.usage.cachedInputTokens}`),t.usage.cacheWriteInputTokens!==void 0&&i.push(`cacheWriteInputTokens=${t.usage.cacheWriteInputTokens}`),t.usage.reasoningOutputTokens!==void 0&&i.push(`reasoningOutputTokens=${t.usage.reasoningOutputTokens}`)),this.output(`${r}${n} INFO LLM complete ${i.join(` `)}`),this.shouldShowEvent(`debug`)&&t.response.content){let e=(typeof t.response.content==`string`?t.response.content:JSON.stringify(t.response.content,null,2)).split(`
|
|
14
|
+
`);for(let t of e)this.output(`${r}${n} DEBUG ${t}`)}}}onSpanUpdate(e){this.spans.set(e.spanId,e)}onEvent(e,t){if(!this.shouldShowEvent(t.level))return;this.spans.set(e.spanId,e);let n;if(this.isSpanVisible(e))n=this.visibleDepths.get(e.spanId)??0;else{let t=this.findVisibleAncestor(e);n=t?this.visibleDepths.get(t.spanId)??0:0}let r=this.formatIndent(n+1),i=this.formatTimestamp(),a=t.level.toUpperCase().padEnd(5),o=this.markdown&&t.attributes?.markdown===!0,s=t.attributes?Object.entries(t.attributes).filter(([e])=>e!==`markdown`):[],c=t.name;o&&(c=this.renderMarkdown(c));let l=`${i}${r}${a} ${c}`;if(s.length>0){let e=s.map(([e,t])=>`${e}=${JSON.stringify(t)}`).join(` `);l+=` ${e}`}this.output(l)}};function Un(e){return Wn(T.lexer(e))}function Wn(e=[]){return e.map(e=>Gn(e)).filter(e=>e.length>0).join(`
|
|
15
|
+
`)}function Gn(e){switch(e.type){case`space`:return``;case`heading`:return w.bold($(e.tokens));case`paragraph`:return $(e.tokens);case`blockquote`:return Zn(Wn(e.tokens),`> `);case`code`:return(e.lang?w.dim(`${e.lang}\n`):``)+w.yellow(e.text);case`list`:return qn(e)?Yn(e):e.raw;case`hr`:return w.dim(`-`.repeat(40));case`table`:return Jn(e)?Xn(e):e.raw;case`html`:return e.text;case`text`:return e.tokens?$(e.tokens):$n(e.text);default:return`tokens`in e&&e.tokens?$(e.tokens):e.raw}}function $(e=[]){return e.map(e=>Kn(e)).join(``)}function Kn(e){switch(e.type){case`text`:case`escape`:return $n(e.text);case`strong`:return w.bold($(e.tokens));case`em`:return w.italic($(e.tokens));case`codespan`:return w.yellow(e.text);case`del`:return w.strikethrough($(e.tokens));case`link`:{let t=$(e.tokens);return e.href&&e.href!==e.text?`${w.blue.underline(t)} ${w.dim(`(${e.href})`)}`:w.blue.underline(t)}case`image`:return e.text?`${e.text} (${e.href})`:e.href;case`br`:return`
|
|
16
|
+
`;case`html`:return e.text;default:return`tokens`in e&&e.tokens?$(e.tokens):e.raw}}function qn(e){return e.type===`list`&&`items`in e&&Array.isArray(e.items)}function Jn(e){return e.type===`table`&&`header`in e&&`rows`in e}function Yn(e){return e.items.map((t,n)=>{let r=e.ordered?`${Number(e.start||1)+n}. `:`- `,i=t.task?`[${t.checked?`x`:` `}] `:``,a=Wn(t.tokens).trimEnd();return r+i+Qn(a,r.length+i.length)}).join(`
|
|
17
|
+
`)}function Xn(e){let t=e.header.map(e=>$(e.tokens)).join(` | `),n=e.rows.map(e=>e.map(e=>$(e.tokens)).join(` | `));return[w.bold(t),...n].join(`
|
|
18
|
+
`)}function Zn(e,t){return e.split(`
|
|
19
|
+
`).map(e=>t+e).join(`
|
|
20
|
+
`)}function Qn(e,t){let[n=``,...r]=e.split(`
|
|
21
|
+
`);if(r.length===0)return n;let i=` `.repeat(t);return[n,...r.map(e=>i+e)].join(`
|
|
22
|
+
`)}function $n(e){return e.replace(/"/g,`"`).replace(/'/g,`'`).replace(/</g,`<`).replace(/>/g,`>`).replace(/&/g,`&`)}export{De as Agent,wt as Anthropic,O as AxleAbortError,k as AxleAgentAbortError,E as AxleError,ge as AxleStopReason,A as AxleToolFatalError,pn as Gemini,Te as History,He as Instruct,Le as InstructVariableError,Pe as MCP,Ln as OpenAI,Hn as SimpleWriter,Ue as TaskError,de as ToolRegistry,zn as Tracer,e as TurnAccumulator,xe as TurnEventBuilder,se as addStats,Ct as anthropic,Gt as chatCompletions,Ie as createAgentConfig,we as createHandle,G as createStats,j as estimateContextUsage,fn as gemini,hn as generate,mn as generateTurn,et as loadFileContent,In as openai,ie as parseResponse,ye as stream};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e={CLAUDE_OPUS_4_7:`claude-opus-4-7`,CLAUDE_SONNET_4_6:`claude-sonnet-4-6`,CLAUDE_OPUS_4_6:`claude-opus-4-6`,CLAUDE_OPUS_4_5_20251101:`claude-opus-4-5-20251101`,CLAUDE_OPUS_4_5:`claude-opus-4-5-20251101`,CLAUDE_SONNET_4_5_20250929:`claude-sonnet-4-5-20250929`,CLAUDE_SONNET_4_5:`claude-sonnet-4-5-20250929`,CLAUDE_HAIKU_4_5_20251001:`claude-haiku-4-5-20251001`,CLAUDE_HAIKU_4_5:`claude-haiku-4-5-20251001`,CLAUDE_OPUS_4_1_20250805:`claude-opus-4-1-20250805`,CLAUDE_OPUS_4_1:`claude-opus-4-1-20250805`,CLAUDE_OPUS_4_20250514:`claude-opus-4-20250514`,CLAUDE_OPUS_4:`claude-opus-4-20250514`,CLAUDE_SONNET_4_20250514:`claude-sonnet-4-20250514`,CLAUDE_SONNET_4:`claude-sonnet-4-20250514`},t=[e.CLAUDE_OPUS_4_7,e.CLAUDE_SONNET_4_6,e.CLAUDE_OPUS_4_6,e.CLAUDE_OPUS_4_5,e.CLAUDE_SONNET_4_5,e.CLAUDE_HAIKU_4_5,e.CLAUDE_OPUS_4_1,e.CLAUDE_OPUS_4,e.CLAUDE_SONNET_4],n={[e.CLAUDE_OPUS_4_7]:128e3,[e.CLAUDE_OPUS_4_6]:128e3,[e.CLAUDE_SONNET_4_6]:64e3,[e.CLAUDE_OPUS_4_5]:64e3,[e.CLAUDE_SONNET_4_5]:64e3,[e.CLAUDE_HAIKU_4_5]:64e3,[e.CLAUDE_SONNET_4]:64e3,[e.CLAUDE_OPUS_4_1]:32e3,[e.CLAUDE_OPUS_4]:32e3},r=e.CLAUDE_HAIKU_4_5,i={QWEN_3_6_35B_A3B:`qwen/qwen3.6-35b-a3b`,QWEN_3_6_PLUS:`qwen/qwen3.6-plus`,GEMMA_4_26B_A4B_IT:`google/gemma-4-26b-a4b-it`,MINISTRAL_3_8B:`mistralai/ministral-8b-2512`,MISTRAL_SMALL_4:`mistralai/mistral-small-2603`,DEEPSEEK_V4_FLASH:`deepseek/deepseek-v4-flash`,MINIMAX_M2:`minimax/minimax-m2`},a=[i.QWEN_3_6_35B_A3B,i.GEMMA_4_26B_A4B_IT,i.MINISTRAL_3_8B,i.MISTRAL_SMALL_4,i.DEEPSEEK_V4_FLASH,i.MINIMAX_M2],o=i.QWEN_3_6_35B_A3B,s={GEMINI_3_1_PRO_PREVIEW:`gemini-3.1-pro-preview`,GEMINI_3_1_PRO:`gemini-3.1-pro-preview`,GEMINI_3_1_PRO_PREVIEW_CUSTOMTOOLS:`gemini-3.1-pro-preview-customtools`,GEMINI_3_1_FLASH_LITE_PREVIEW:`gemini-3.1-flash-lite-preview`,GEMINI_3_1_FLASH_LITE:`gemini-3.1-flash-lite-preview`,GEMINI_3_PRO_PREVIEW:`gemini-3-pro-preview`,GEMINI_3_PRO:`gemini-3-pro-preview`,GEMINI_3_FLASH_PREVIEW:`gemini-3-flash-preview`,GEMINI_3_FLASH:`gemini-3-flash-preview`,GEMINI_3_5_FLASH:`gemini-3.5-flash`,GEMINI_2_5_PRO:`gemini-2.5-pro`,GEMINI_2_5_FLASH:`gemini-2.5-flash`,GEMINI_2_5_FLASH_LITE:`gemini-2.5-flash-lite`,GEMINI_2_0_FLASH:`gemini-2.0-flash`,GEMINI_2_0_FLASH_001:`gemini-2.0-flash-001`,GEMINI_2_0_FLASH_LITE:`gemini-2.0-flash-lite`,GEMINI_2_0_FLASH_LITE_001:`gemini-2.0-flash-lite-001`,GEMINI_FLASH_LATEST:`gemini-flash-latest`,GEMINI_FLASH_LITE_LATEST:`gemini-flash-lite-latest`,GEMINI_PRO_LATEST:`gemini-pro-latest`},c=[s.GEMINI_3_1_PRO,s.GEMINI_3_1_PRO_PREVIEW_CUSTOMTOOLS,s.GEMINI_3_1_FLASH_LITE,s.GEMINI_3_PRO,s.GEMINI_3_FLASH,s.GEMINI_3_5_FLASH,s.GEMINI_2_5_PRO,s.GEMINI_2_5_FLASH,s.GEMINI_2_5_FLASH_LITE,s.GEMINI_2_0_FLASH,s.GEMINI_2_0_FLASH_LITE,s.GEMINI_FLASH_LATEST,s.GEMINI_FLASH_LITE_LATEST,s.GEMINI_PRO_LATEST],l=s.GEMINI_3_1_FLASH_LITE,u={GPT_5_5_2026_04_23:`gpt-5.5-2026-04-23`,GPT_5_5:`gpt-5.5`,GPT_5_5_PRO_2026_04_23:`gpt-5.5-pro-2026-04-23`,GPT_5_5_PRO:`gpt-5.5-pro`,GPT_5_4_2026_03_05:`gpt-5.4-2026-03-05`,GPT_5_4:`gpt-5.4`,GPT_5_4_PRO_2026_03_05:`gpt-5.4-pro-2026-03-05`,GPT_5_4_PRO:`gpt-5.4-pro`,GPT_5_4_MINI_2026_03_17:`gpt-5.4-mini-2026-03-17`,GPT_5_4_MINI:`gpt-5.4-mini`,GPT_5_4_NANO_2026_03_17:`gpt-5.4-nano-2026-03-17`,GPT_5_4_NANO:`gpt-5.4-nano`,GPT_5_3_CHAT_LATEST:`gpt-5.3-chat-latest`,GPT_5_2_2025_12_11:`gpt-5.2-2025-12-11`,GPT_5_2:`gpt-5.2`,GPT_5_2_CHAT_LATEST:`gpt-5.2-chat-latest`,GPT_5_2_PRO_2025_12_11:`gpt-5.2-pro-2025-12-11`,GPT_5_2_PRO:`gpt-5.2-pro`,GPT_5_1_2025_11_13:`gpt-5.1-2025-11-13`,GPT_5_1:`gpt-5.1`,GPT_5_1_CHAT_LATEST:`gpt-5.1-chat-latest`,GPT_5_2025_08_07:`gpt-5-2025-08-07`,GPT_5:`gpt-5`,GPT_5_CHAT_LATEST:`gpt-5-chat-latest`,GPT_5_PRO_2025_10_06:`gpt-5-pro-2025-10-06`,GPT_5_PRO:`gpt-5-pro`,GPT_5_MINI_2025_08_07:`gpt-5-mini-2025-08-07`,GPT_5_MINI:`gpt-5-mini`,GPT_5_NANO_2025_08_07:`gpt-5-nano-2025-08-07`,GPT_5_NANO:`gpt-5-nano`,GPT_4_1_2025_04_14:`gpt-4.1-2025-04-14`,GPT_4_1:`gpt-4.1`,GPT_4_1_MINI_2025_04_14:`gpt-4.1-mini-2025-04-14`,GPT_4_1_MINI:`gpt-4.1-mini`,GPT_4_1_NANO_2025_04_14:`gpt-4.1-nano-2025-04-14`,GPT_4_1_NANO:`gpt-4.1-nano`,GPT_4O_2024_11_20:`gpt-4o-2024-11-20`,GPT_4O:`gpt-4o`,GPT_4O_MINI_2024_07_18:`gpt-4o-mini-2024-07-18`,GPT_4O_MINI:`gpt-4o-mini`,O4_MINI_2025_04_16:`o4-mini-2025-04-16`,O4_MINI:`o4-mini`,O3_2025_04_16:`o3-2025-04-16`,O3:`o3`,O3_PRO_2025_06_10:`o3-pro-2025-06-10`,O3_PRO:`o3-pro`,O3_MINI_2025_01_31:`o3-mini-2025-01-31`,O3_MINI:`o3-mini`},d=[u.GPT_5_5,u.GPT_5_5_PRO,u.GPT_5_4,u.GPT_5_4_PRO,u.GPT_5_4_MINI,u.GPT_5_4_NANO,u.GPT_5_3_CHAT_LATEST,u.GPT_5_2,u.GPT_5_2_CHAT_LATEST,u.GPT_5_2_PRO,u.GPT_5_1,u.GPT_5_1_CHAT_LATEST,u.GPT_5,u.GPT_5_CHAT_LATEST,u.GPT_5_PRO,u.GPT_5_MINI,u.GPT_5_NANO,u.GPT_4_1,u.GPT_4_1_MINI,u.GPT_4_1_NANO,u.GPT_4O,u.GPT_4O_MINI,u.O4_MINI,u.O3,u.O3_PRO,u.O3_MINI],f=u.GPT_5_4_MINI;export{c as a,i as c,n as d,t as f,l as i,a as l,d as n,s as o,e as p,u as r,o as s,f as t,r as u};
|
package/dist/providers/models.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,
|
|
1
|
+
import{a as e,c as t,f as n,i as r,l as i,n as a,o,p as s,r as c,s as l,t as u,u as d}from"../models-CuB4qD0E.js";export{d as ANTHROPIC_DEFAULT_MODEL,n as ANTHROPIC_MULTIMODAL_MODELS,s as AnthropicModels,l as CHAT_COMPLETIONS_DEFAULT_MODEL,i as CHAT_COMPLETIONS_SMALL_OPEN_WEIGHT_MODELS,t as ChatCompletionsModels,r as GEMINI_DEFAULT_MODEL,e as GEMINI_MULTIMODAL_MODELS,o as GeminiModels,u as OPENAI_DEFAULT_MODEL,a as OPENAI_MULTIMODAL_MODELS,c as OpenAIModels};
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fifthrevision/axle",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/johncch/axle.git"
|
|
7
7
|
},
|
|
8
|
-
"description": "
|
|
8
|
+
"description": "Axle core runtime for building agentic LLM applications.",
|
|
9
9
|
"type": "module",
|
|
10
10
|
"exports": {
|
|
11
11
|
".": {
|
|
@@ -21,51 +21,31 @@
|
|
|
21
21
|
"import": "./dist/providers/models.js"
|
|
22
22
|
}
|
|
23
23
|
},
|
|
24
|
-
"bin": {
|
|
25
|
-
"axle": "dist/cli.js"
|
|
26
|
-
},
|
|
27
24
|
"files": [
|
|
28
25
|
"dist"
|
|
29
26
|
],
|
|
30
|
-
"scripts": {
|
|
31
|
-
"prepare": "pnpm run build",
|
|
32
|
-
"start": "tsx ./src/cli.ts",
|
|
33
|
-
"build": "tsdown --clean --minify",
|
|
34
|
-
"build:watch": "tsdown --watch",
|
|
35
|
-
"build-dev": "tsdown",
|
|
36
|
-
"test": "vitest run",
|
|
37
|
-
"changelog": "pnpm start -j ./jobs/changelog.job.yml --args",
|
|
38
|
-
"update-models": "pnpm start -j ./jobs/bootstrap-models.job.yml",
|
|
39
|
-
"release": "pnpm test && pnpm run build && npm version",
|
|
40
|
-
"cut-release": "node scripts/cut-release.mjs",
|
|
41
|
-
"smoke-test": "pnpm exec tsx checks/baseline/run.ts"
|
|
42
|
-
},
|
|
43
27
|
"author": "Chong Han Chua",
|
|
44
28
|
"license": "ISC",
|
|
45
29
|
"dependencies": {
|
|
46
30
|
"@anthropic-ai/sdk": "^0.98.0",
|
|
47
|
-
"@commander-js/extra-typings": "^14.0.0",
|
|
48
31
|
"@google/genai": "^2.6.0",
|
|
49
32
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
50
33
|
"chalk": "^5.6.2",
|
|
51
|
-
"commander": "^14.0.3",
|
|
52
34
|
"glob": "^13.0.6",
|
|
53
35
|
"marked": "^18.0.4",
|
|
54
36
|
"mime": "^4.1.0",
|
|
55
37
|
"openai": "^6.39.0",
|
|
56
|
-
"serialize-error": "^13.0.1",
|
|
57
|
-
"yaml": "^2.9.0",
|
|
58
38
|
"zod": "^4.4.3"
|
|
59
39
|
},
|
|
60
40
|
"devDependencies": {
|
|
61
41
|
"@arethetypeswrong/core": "^0.18.2",
|
|
62
|
-
"dotenv": "^17.4.2",
|
|
63
|
-
"prettier": "^3.8.3",
|
|
64
|
-
"prettier-plugin-organize-imports": "^4.3.0",
|
|
65
42
|
"publint": "^0.3.21",
|
|
66
43
|
"tsdown": "^0.22.0",
|
|
67
|
-
"
|
|
68
|
-
|
|
69
|
-
|
|
44
|
+
"typescript": "^6.0.3"
|
|
45
|
+
},
|
|
46
|
+
"scripts": {
|
|
47
|
+
"build": "tsdown --clean --minify",
|
|
48
|
+
"build:watch": "tsdown --watch",
|
|
49
|
+
"build-dev": "tsdown"
|
|
70
50
|
}
|
|
71
|
-
}
|
|
51
|
+
}
|