@fifthrevision/axle 0.8.1 → 0.10.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.js DELETED
@@ -1 +0,0 @@
1
- var E=Object.defineProperty;var r=(n,a)=>E(n,"name",{value:a,configurable:!0});import{D as I,M as L,a as $,b as w,c as F,A as x,g as O,e as q,d as U,f as S}from"./simple-Cn_DeT3l.js";import{h as ae,H as ie,I as le,i as ce,S as ue,T as me,j as pe,k as de,l as ge,m as fe,n as Me,o as he,p as Te,q as Re,r as ye,s as De}from"./simple-Cn_DeT3l.js";import"@anthropic-ai/sdk";import"zod";import"@google/genai";import"openai";import"glob";import"mime";import"node:fs/promises";import"node:path";import"node:child_process";import"node:util";import"@modelcontextprotocol/sdk/client/index.js";import"@modelcontextprotocol/sdk/client/stdio.js";import"@modelcontextprotocol/sdk/client/streamableHttp.js";import"marked";import"marked-terminal";const _={Models:L,DefaultModel:I},b={Models:w,DefaultModel:$};async function A(n){const{provider:a,model:i,messages:u,system:p,tools:d,tracer:g,options:l}=n;return a.createGenerationRequest(i,{messages:u,system:p,tools:d,context:{tracer:g},options:l})}r(A,"generateTurn");async function G(n){const{provider:a,model:i,messages:u,system:p,tools:d,onToolCall:g,maxIterations:l,tracer:m,options:C}=n,f=[...u],o=[],t={in:0,out:0};let M=0,h;const T=r(e=>{f.push(e),o.push(e)},"addMessage"),c=r(e=>(m?.setResult({kind:"llm",model:i,request:{messages:u},response:{content:e.result==="success"?e.final?.content:null},usage:e.usage?{inputTokens:e.usage.in,outputTokens:e.usage.out}:void 0,finishReason:e.result==="success"?e.final?.finishReason:void 0}),m?.end(e.result==="error"?"error":"ok"),e),"endWithResult"),v=r((e,s)=>{if(!e||s.type==="error"){e?.end("error");return}e.setResult({kind:"llm",model:s.model??i,request:{messages:f},response:{content:s.content},usage:s.usage?{inputTokens:s.usage.in,outputTokens:s.usage.out}:void 0,finishReason:s.finishReason}),e.end()},"setTurnResult");for(;;){if(l!==void 0&&M>=l)return c({result:"error",messages:o,error:{type:"model",error:{type:"error",error:{type:"MaxIterations",message:`Exceeded max iterations (${l})`}}},usage:t});M+=1;const e=m?.startSpan(`turn-${M}`,{type:"llm"}),s=await A({provider:a,model:i,messages:f,system:p,tools:d,tracer:e,options:C});if(F(t,s),v(e,s),s.type==="error")return c({result:"error",messages:o,error:{type:"model",error:s},usage:t});const R={role:"assistant",id:s.id,model:s.model,content:s.content,finishReason:s.finishReason};if(T(R),h=R,s.finishReason!==x.FunctionCall)return c({result:"success",messages:o,final:h,usage:t});const y=O(s.content);if(y.length===0)return c({result:"success",messages:o,final:h,usage:t});const{results:D,missingTool:k}=await q(y,g,m);if(D.length>0&&T({role:"tool",content:D}),k)return c({result:"error",messages:o,error:{type:"tool",error:k},usage:t})}}r(G,"generate");const H={Models:S,DefaultModel:U};export{ae as Agent,_ as Anthropic,x as AxleStopReason,b as Gemini,ie as History,le as Instruct,ce as MCP,H as OpenAI,ue as SimpleWriter,me as Tracer,pe as anthropic,de as braveSearchTool,ge as calculatorTool,fe as chatCompletions,Me as compileInstruct,he as gemini,G as generate,A as generateTurn,Te as loadFileContent,Re as openai,ye as parseResponse,De as stream};
@@ -1,36 +0,0 @@
1
- var je=Object.defineProperty;var i=(t,e)=>je(t,"name",{value:e,configurable:!0});import*as O from"zod";import F,{z as $}from"zod";import"glob";import Be from"mime";import{readFile as J,access as qe,stat as He,writeFile as ie,mkdir as Je}from"node:fs/promises";import{resolve as Q,extname as ce,dirname as We}from"node:path";import ze from"@anthropic-ai/sdk";import{FinishReason as R,GoogleGenAI as Ke}from"@google/genai";import Ve from"openai";import{exec as Xe}from"node:child_process";import{promisify as Ze}from"node:util";import{Client as Ye}from"@modelcontextprotocol/sdk/client/index.js";import{StdioClientTransport as Qe}from"@modelcontextprotocol/sdk/client/stdio.js";import{StreamableHTTPClientTransport as et}from"@modelcontextprotocol/sdk/client/streamableHttp.js";import{marked as le}from"marked";import{markedTerminal as tt}from"marked-terminal";class V extends Error{static{i(this,"AxleError")}code;id;details;constructor(e,n){super(e,{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,V.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:ue(this.cause)}}}}function ue(t){return t instanceof Error?{name:t.name,message:t.message,...t.stack&&{stack:t.stack},..."cause"in t&&t.cause&&{cause:ue(t.cause)}}:t}i(ue,"serializeError");var T=(t=>(t.Stop="stop",t.Length="length",t.FunctionCall="function_call",t.Error="error",t.Custom="custom",t.Cancelled="cancelled",t))(T||{});class pe{static{i(this,"History")}system;_messages=[];constructor(e){e&&(this._messages=e)}get messages(){return[...this._messages]}addSystem(e){this.system=e}addUser(e){typeof e=="string"?this._messages.push({role:"user",content:[{type:"text",text:e}]}):this._messages.push({role:"user",content:e})}addAssistant(e){if(typeof e=="string"){const n=e;this._messages.push({role:"assistant",id:crypto.randomUUID(),content:[{type:"text",text:n}],model:"user",finishReason:T.Custom})}else this._messages.push({role:"assistant",...e})}addToolResults(e){this._messages.push({role:"tool",content:e})}add(e){Array.isArray(e)?this._messages.push(...e):this._messages.push(e)}latest(){return this._messages[this._messages.length-1]}toString(){return JSON.stringify({system:this.system,messages:this._messages})}}function nt(t){const{text:e,files:n}=t,s=[];if(e&&s.push({type:"text",text:e}),n)for(const r of n)s.push({type:"file",file:r});return s}i(nt,"toContentParts");function H(t){return typeof t=="string"?t:t.filter(e=>e.type==="text").map(e=>e.text).join(`
2
-
3
- `)}i(H,"getTextContent");function st(t){return t.filter(e=>e.type==="tool-call")}i(st,"getToolCalls");function rt(t,e){const n=e.usage??{in:0,out:0};t.in+=n.in??0,t.out+=n.out??0}i(rt,"appendUsage");function de(t){return JSON.stringify({error:t})}i(de,"serializeToolError");async function me(t,e,n){const s=[];let r;for(const o of t){const a=n?.startSpan(o.name,{type:"tool"});let l;try{l=await e(o.name,o.parameters)}catch(p){l={type:"error",error:{type:"exception",message:p instanceof Error?p.message:String(p)}}}if(l==null){r={name:o.name,message:`Tool not found: ${o.name}`},a?.setResult({kind:"tool",name:o.name,input:o.parameters,output:null}),a?.end("error"),s.push({id:o.id,name:o.name,content:de({type:"not-found",message:r.message}),isError:!0});break}l.type==="success"?(a?.setResult({kind:"tool",name:o.name,input:o.parameters,output:l.content}),a?.end("ok"),s.push({id:o.id,name:o.name,content:l.content})):(a?.setResult({kind:"tool",name:o.name,input:o.parameters,output:l.error}),a?.end("error"),s.push({id:o.id,name:o.name,content:de(l.error),isError:!0}))}return{results:s,missingTool:r}}i(me,"executeToolCalls");function C(t,e){for(const n of t)n(e)}i(C,"emit");function fe(t){const e=[],n=new AbortController;let s=!1,r,o;const a=new Promise((l,p)=>{r=i(d=>{s=!0,l(d)},"resolveResult"),o=i(d=>{s=!0,p(d)},"rejectResult")});return Promise.resolve().then(()=>ot(t,n.signal,e).then(r,o)),{on(l){e.push(l)},cancel(){s||n.abort()},get final(){return a}}}i(fe,"stream");async function ot(t,e,n){const{provider:s,model:r,messages:o,system:a,tools:l,serverTools:p,onToolCall:d,maxIterations:m,tracer:u,options:c}=t,_=[...o],h=[],f={in:0,out:0};let g=0,x=0;const S=i(E=>{_.push(E),h.push(E)},"addMessage"),k=i(E=>{E.result==="error"&&C(n,{type:"error",error:E.error});const G=E.result==="success"?E.final?.content:E.result==="cancelled"?E.partial?.content:null,D=E.result==="success"?E.final?.finishReason:E.result==="cancelled"?T.Cancelled:void 0;return u?.setResult({kind:"llm",model:r,request:{messages:o},response:{content:G??null},usage:E.usage?{inputTokens:E.usage.in,outputTokens:E.usage.out}:void 0,finishReason:D}),u?.end(E.result==="error"?"error":"ok"),E},"endWithResult"),L=i((E,G,D,I)=>{I();const M=E.length>0?{role:"assistant",id:G,model:D,content:E,finishReason:T.Cancelled}:void 0;return M&&S(M),u?.end("ok"),{result:"cancelled",messages:h,partial:M,usage:f}},"buildCancelledResult");for(;;){if(e.aborted)return L([],"","",()=>{});if(m!==void 0&&x>=m)return k({result:"error",messages:h,error:{type:"model",error:{type:"error",error:{type:"MaxIterations",message:`Exceeded max iterations (${m})`}}},usage:f});x+=1;const E=u?.startSpan(`turn-${x}`,{type:"llm"});E?.startLLMStream();const G=p?{...c,serverTools:p}:c,D=s.createStreamingRequest?.(r,{messages:_,system:a,tools:l,context:{tracer:E},signal:e,options:G});if(!D)throw E?.end("error"),new Error("Provider does not support streaming. Use generate() instead.");const I=[];let j="",M="",B=null,q={in:0,out:0},P=-1,W=null,v="";const ne=new Map;let U=-1;const N=i(()=>{W!==null&&P>=0&&(C(n,{type:W==="text"?"text:end":"thinking:end",index:P,final:v}),W=null,v="",P=-1)},"closePart");for await(const y of D){switch(y.type){case"start":j=y.id,M=y.data.model;break;case"text-start":{N(),I.push({type:"text",text:""}),U=I.length-1,P=g++,W="text",v="",C(n,{type:"text:start",index:P});break}case"text-delta":{const w=I[U];w.text+=y.data.text,v=w.text,E?.appendLLMStream(y.data.text),C(n,{type:"text:delta",index:P,delta:y.data.text,accumulated:v});break}case"text-complete":{N();break}case"thinking-start":{N(),I.push({type:"thinking",text:""}),U=I.length-1,P=g++,W="thinking",v="",C(n,{type:"thinking:start",index:P});break}case"thinking-delta":{const w=I[U];w.text+=y.data.text,v=w.text,C(n,{type:"thinking:delta",index:P,delta:y.data.text,accumulated:v});break}case"thinking-summary-delta":{const w=I[U];w.text+=y.data.text,v=w.text,C(n,{type:"thinking:delta",index:P,delta:y.data.text,accumulated:v});break}case"thinking-complete":{N();break}case"tool-call-start":{N();const w=g++;I.push({type:"tool-call",id:y.data.id,name:y.data.name,parameters:{}}),U=I.length-1,ne.set(y.data.id,w),C(n,{type:"tool:start",index:w,id:y.data.id,name:y.data.name});break}case"tool-call-complete":{const w=I[U];y.data.id&&(w.id=y.data.id),y.data.name&&(w.name=y.data.name),w.parameters=y.data.arguments,y.data.providerMetadata&&(w.providerMetadata=y.data.providerMetadata);break}case"internal-tool-start":{N();const w=g++;I.push({type:"internal-tool",id:y.data.id,name:y.data.name}),U=I.length-1,C(n,{type:"internal-tool:start",index:w,id:y.data.id,name:y.data.name});break}case"internal-tool-complete":{const w=I[U];y.data.output!=null&&(w.output=y.data.output),C(n,{type:"internal-tool:complete",index:y.data.index,id:y.data.id,name:y.data.name,output:y.data.output});break}case"complete":{N(),B=y.data.finishReason,q=y.data.usage;break}case"error":{N();const w=y.data.usage??{in:0,out:0};return f.in+=w.in??0,f.out+=w.out??0,E?.end("error"),k({result:"error",messages:h,error:{type:"model",error:{type:"error",error:{type:y.data.type,message:y.data.message}}},usage:f})}default:console.warn("[WARN] Unhandled chunk type. Should never happen")}if(e.aborted)break}if(e.aborted)return E?.end("ok"),L(I,j,M,N);if(B===null)return N(),E?.end("error"),k({result:"error",messages:h,error:{type:"model",error:{type:"error",error:{type:"IncompleteStream",message:"Stream ended without a completion signal"}}},usage:f});f.in+=q.in??0,f.out+=q.out??0;const Ue={kind:"llm",model:M,request:{messages:_},response:{content:I},usage:{inputTokens:q.in,outputTokens:q.out},finishReason:B};E?.endLLMStream(Ue),E?.end();const X={role:"assistant",id:j,model:M,content:I,finishReason:B};if(S(X),B!==T.FunctionCall)return k({result:"success",messages:h,final:X,usage:f});const Z=I.filter(y=>y.type==="tool-call");if(Z.length===0)return k({result:"success",messages:h,final:X,usage:f});if(e.aborted)return u?.end("ok"),{result:"cancelled",messages:h,usage:f};const Ge=d?async(y,w)=>d(y,w):async()=>null;let De=0;const Fe=i(async(y,w)=>{const Y=Z[De++],oe=ne.get(Y.id)??-1;C(n,{type:"tool:execute",index:oe,id:Y.id,name:y,parameters:w});const ae=await Ge(y,w);return C(n,{type:"tool:complete",index:oe,id:Y.id,name:y,result:ae??null}),ae},"emittingToolCall"),{results:se,missingTool:re}=await me(Z,Fe,u);if(se.length>0&&S({role:"tool",content:se}),re)return k({result:"error",messages:h,error:{type:"tool",error:re},usage:f})}}i(ot,"run");function at(t,e,n="{{}}"){const s=n==="{{}}"?/\{\{(.*?)\}\}/g:/\{(.*?)\}/g;return t=t.replace(s,(r,o)=>{if(o=o.trim(),Object.prototype.hasOwnProperty.call(e,o)){const a=e[o];return a==null?"":String(a)}return r}),t}i(at,"replaceVariables");function z(t){if(t instanceof O.ZodString)return["string","Your answer"];if(t instanceof O.ZodNumber)return["number",42];if(t instanceof O.ZodBoolean)return["boolean",!0];if(t instanceof O.ZodArray){const e=t.element;if(e instanceof O.ZodString)return["string array",["answer 1","answer 2","third answer"]];if(e instanceof O.ZodNumber)return["number array",[42,59,3.14]];if(e instanceof O.ZodBoolean)return["boolean array",[!0,!1,!1]];if(e instanceof O.ZodObject){const[n,s]=z(e);return["object array",[s,s]]}return["array",[]]}if(t instanceof O.ZodObject){const e=t.shape,n={};for(const[s,r]of Object.entries(e)){const[o,a]=z(r);n[s]=a}return["JSON object",n]}if(t instanceof O.ZodOptional){const e=t.unwrap(),[n,s]=z(e);return[`${n} | undefined`,s]}}i(z,"zodToExample");function he(t,e){if(!e)return t;if(Object.keys(e).length===0){if(t.trim()==="{}"||t.trim()==="")return{};throw new Error("Schema is empty, but rawValue is not an empty object representation or empty string.")}const s=it(t),r={};for(const[o,a]of Object.entries(e)){const l=s.tags[o];if(l!==void 0)r[o]=_e(a,l);else if(a.def.type!=="optional")throw new Error(`Expected results with tag ${o} but it does not exist`)}try{const o={};for(const[a,l]of Object.entries(e))a in r&&(o[a]=l.parse(r[a]));return o}catch(o){if(o&&typeof o=="object"&&"issues"in o){const a=o.issues.map(l=>`${l.path.join(".")}: ${l.message}`).join(", ");throw new Error(`Validation failed: ${a}`)}throw o}}i(he,"parseResponse");function _e(t,e){switch(e=e.trim(),t.def.type){case"string":try{return JSON.parse(e)}catch{if(typeof e=="string")return e;throw new Error(`Cannot parse '${e}' as string. Ensure it is a valid JSON string or a plain string.`)}case"number":{const n=parseFloat(e);if(isNaN(n))throw new Error(`Cannot parse '${e}' as number`);return n}case"boolean":{const n=e.toLowerCase();if(n==="true")return!0;if(n==="false")return!1;throw new Error(`Cannot parse '${e}' as boolean. Expected 'true' or 'false'`)}case"array":{if(e==="")return[];try{const n=JSON.parse(e);if(Array.isArray(n))return n}catch{}if(e.includes(","))return e.split(",").map(n=>{const s=n.trim();try{return JSON.parse(s)}catch{return s}}).filter(n=>n!=="")}case"object":{e.includes("```json")&&(e=e.replace(/```json/g,"").replace(/```/g,""));try{return JSON.parse(e)}catch(n){throw new Error(`Cannot parse object as JSON: ${n.message}`)}}case"optional":{const n=t.def.innerType;return _e(n,e)}default:return e}}i(_e,"preprocessValue");function it(t){t.trim().startsWith("```json")&&t.trim().endsWith("```")&&(t=t.trim().slice(7,-3).trim());const e=/<(\w+)>(.*?)<\/\1>/gs,n={};let s=t;s=s.replace(e,(o,a,l)=>(n[a]=l,""));const r=/<(\w+)>(.*?)(?:<\/?\w+>|$)/gs;return s=s.replace(r,(o,a,l)=>(n[a]=l,"")),{tags:n,remaining:s.trim()}}i(it,"parseTaggedSections");function ge(t,e={}){const n={...e,...t.inputs};let s=at(t.prompt,n);if(t.textReferences.length>0)for(const[a,l]of t.textReferences.entries()){const p=l.name?`: ${l.name}`:"";s+=`
4
-
5
- ## Reference ${a+1}${p}
6
-
7
- \`\`\`${l.content}'''`}let r=`# Instructions
8
-
9
- `;if((t.schema?Object.keys(t.schema):[]).length>0){r+=`## Output Format Instructions
10
- `,r+=`
11
- Here is how you should format your output. Follow the instructions strictly.
12
- `;for(const[a,l]of Object.entries(t.schema)){const[p,d]=z(l);r+=`
13
- - Use <${a}></${a}> tags to indicate the answer for ${a}. The answer must be a ${p}.
14
- Example: <${a}>${JSON.stringify(d)}</${a}>
15
- `}}if(t.instructions.length>0){r+=`
16
- ## Additional Instructions
17
-
18
- `;for(const a of t.instructions)r+=`- ${a}
19
- `}return r+s}i(ge,"compileInstruct");function ct(t){return t.type==="server"}i(ct,"isServerTool");class lt{static{i(this,"Agent")}provider;model;history;tracer;system;tools={};serverTools=[];mcps=[];mcpToolsResolved=!1;eventCallbacks=[];constructor(e){this.provider=e.provider,this.model=e.model,this.history=new pe,this.tracer=e.tracer,this.system=e.system,e.tools&&this.addTools(e.tools),e.mcps&&(this.mcps=[...e.mcps])}addTool(e){ct(e)?this.serverTools.push(e):this.tools[e.name]=e}addTools(e){for(const n of e)this.addTool(n)}addMcp(e){this.mcps.push(e),this.mcpToolsResolved=!1}addMcps(e){this.mcps.push(...e),this.mcpToolsResolved=!1}hasTools(){return Object.keys(this.tools).length>0||this.serverTools.length>0||this.mcps.length>0}on(e){this.eventCallbacks.push(e)}send(e,n){let s;if(typeof e=="string")this.history.addUser(e);else{const r=ge(e,n),o=e.files;this.history.addUser(nt({text:r,files:o})),s=e.schema}return this.execute(s)}async resolveMcpTools(){if(!this.mcpToolsResolved){this.tracer?.debug("resolving MCP tools",{count:this.mcps.length});for(const e of this.mcps){const n=await e.listTools({prefix:e.name,tracer:this.tracer});this.addTools(n)}this.mcpToolsResolved=!0}}execute(e){let n=!1,s;const r=(async()=>{if(await this.resolveMcpTools(),n)return{response:null,messages:[],final:void 0,usage:{in:0,out:0}};const o=this.tools,a=Object.values(o).map(u=>({name:u.name,description:u.description,schema:u.schema}));s=fe({provider:this.provider,model:this.model,messages:this.history.messages,system:this.system,tools:a.length>0?a:void 0,serverTools:this.serverTools.length>0?this.serverTools:void 0,tracer:this.tracer,onToolCall:i(async(u,c)=>{const _=o[u];if(!_)return null;try{return{type:"success",content:await _.execute(c)}}catch(h){return{type:"error",error:{type:"execution",message:h instanceof Error?h.message:String(h)}}}},"onToolCall")});for(const u of this.eventCallbacks)s.on(u);const l=await s.final;l.messages.length>0&&this.history.add(l.messages);let p=null,d;if(l.result==="error")throw new V(ut(l.error),{code:l.error.type==="model"?"MODEL_ERROR":"TOOL_ERROR",details:{error:l.error}});if(l.result==="success"){if(d=l.final,d){const u=H(d.content);p=he(u,e)}}else l.result==="cancelled"&&(d=l.partial);const m=l.usage??{in:0,out:0};return{response:p,messages:l.messages,final:d,usage:m}})();return{cancel:i(()=>{n=!0,s?.cancel()},"cancel"),get final(){return r}}}}function ut(t){return t.type==="model"?`Model error: ${t.error.error.message}`:`Tool error (${t.error.name}): ${t.error.message}`}i(ut,"formatGenerateError");async function pt(t,e){const{defaults:n,tag:s}=e;let r=null,o="";if(t)try{o=Q(t),r=await J(o,{encoding:"utf-8"})}catch{throw new Error(`${s} not found, see --help for details`)}else{for(const a of n.formats)try{o=Q(n.name+"."+a),r=await J(o,{encoding:"utf-8"});break}catch{continue}if(r===null)throw new Error(`${s} not found, see --help for details`)}return{content:r,format:o.split(".").pop()??""}}i(pt,"searchAndLoadFile");const ye=20*1024*1024;function dt(t){return t.type==="text"}i(dt,"isTextFileInfo");function mt(t){return t.type==="image"||t.type==="document"}i(mt,"isBase64FileInfo");const ft=new Set(["application/json","application/xml","application/yaml","application/x-yaml","application/toml"]);function ht(t){return t.startsWith("text/")||ft.has(t)}i(ht,"isTextLikeMimeType");function _t(t){const e=Be.getType(t);if(!e){const n=ce(t).toLowerCase();throw new Error(`Unsupported file type: ${n||"(no extension)"}`)}if(e.startsWith("image/"))return{type:"image",mimeType:e};if(e==="application/pdf")return{type:"document",mimeType:e};if(ht(e))return{type:"text",mimeType:e};{const n=ce(t).toLowerCase();throw new Error(`Unsupported file type: ${n} (${e})`)}}i(_t,"getFileCategory");async function gt(t,e){const n=Q(t);try{await qe(n)}catch{throw new Error(`File not found: ${t}`)}const s=await He(n);if(s.size>ye)throw new Error(`File too large: ${s.size} bytes. Maximum allowed: ${ye} bytes`);const r=n.split("/").pop()||"",o=_t(n);if((e||(o.type==="text"?"utf-8":"base64"))==="utf-8"){if(o.type!=="text")throw new Error(`Cannot read ${o.type} file as text: ${t}`);const l=await J(n,"utf-8");return{path:n,content:l,mimeType:o.mimeType,size:s.size,name:r,type:"text"}}else{if(o.type==="text")throw new Error(`Cannot read text file as binary: ${t}`);const p=(await J(n)).toString("base64");return{path:n,base64:p,mimeType:o.mimeType,size:s.size,name:r,type:o.type}}}i(gt,"loadFileContent");class yt{static{i(this,"Instruct")}prompt;inputs={};files=[];textReferences=[];instructions=[];schema;constructor(e,n){this.prompt=e,this.schema=n}setInputs(e){this.inputs=e}addInput(e,n){this.inputs[e]=n}addFile(e,n){if(typeof e=="string"){this.textReferences.push({content:e,name:n?.name});return}mt(e)?this.files.push(e):dt(e)&&this.textReferences.push({content:e.content,name:n?.name??e.name})}addInstructions(e){if(typeof e!="string"||e.trim()==="")throw new Error("Instruction must be a non-empty string");this.instructions.push(e)}hasFiles(){return this.files.length>0}}const A={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_HAIKU_4_5_20251001:"claude-haiku-4-5-20251001",CLAUDE_HAIKU_4_5:"claude-haiku-4-5-20251001",CLAUDE_SONNET_4_5_20250929:"claude-sonnet-4-5-20250929",CLAUDE_SONNET_4_5:"claude-sonnet-4-5-20250929",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",CLAUDE_3_HAIKU_20240307:"claude-3-haiku-20240307",CLAUDE_3_HAIKU:"claude-3-haiku-20240307"};A.CLAUDE_SONNET_4_6,A.CLAUDE_OPUS_4_6,A.CLAUDE_OPUS_4_5_20251101,A.CLAUDE_HAIKU_4_5_20251001,A.CLAUDE_SONNET_4_5_20250929,A.CLAUDE_OPUS_4_1_20250805,A.CLAUDE_OPUS_4_20250514,A.CLAUDE_SONNET_4_20250514,A.CLAUDE_3_HAIKU_20240307;const xt=A.CLAUDE_HAIKU_4_5;function xe(t){return Array.isArray(t)?t:[t]}i(xe,"arrayify");function Et(t){return new Promise(e=>setTimeout(e,t))}i(Et,"delay");function K(t){if(t==null)return{type:"error",error:{type:"Undetermined",message:"Unknown error occurred"},usage:{in:0,out:0},raw:t};if(t instanceof Error)return{type:"error",error:{type:t.name||"Error",message:t.message||"Unexpected error"},usage:{in:0,out:0},raw:t};if(typeof t=="object"){const e=t,n=e?.error?.error?.type||e?.error?.type||e?.type||e?.code||e?.status||"Undetermined",s=e?.error?.error?.message||e?.error?.message||e?.message||e?.error||"Unexpected error";return{type:"error",error:{type:String(n),message:String(s)},usage:{in:0,out:0},raw:t}}return{type:"error",error:{type:"Undetermined",message:String(t)},usage:{in:0,out:0},raw:t}}i(K,"getUndefinedError");function Ee(t){return t.map(e=>{if(e.role==="assistant"){const n=[];for(const s of e.content)s.type==="text"?n.push({type:"text",text:s.text}):s.type==="thinking"?s.redacted?n.push({type:"redacted_thinking",data:s.text}):n.push({type:"thinking",thinking:s.text,signature:s.signature}):s.type==="tool-call"?n.push({type:"tool_use",id:s.id,name:s.name,input:s.parameters}):s.type==="internal-tool"&&(n.push({type:"server_tool_use",id:s.id,name:s.name,input:s.input??{}}),s.output!=null&&n.push({type:"web_search_tool_result",tool_use_id:s.id,content:s.output}));return{role:"assistant",content:n}}if(e.role==="tool")return{role:"user",content:e.content.map(n=>({type:"tool_result",tool_use_id:n.id,content:typeof n.content=="string"?n.content:wt(n.content),...n.isError?{is_error:!0}:{}}))};if(typeof e.content=="string")return{role:"user",content:e.content};{const n=[];for(const s of e.content)s.type==="text"?n.push({type:"text",text:s.text}):s.type==="file"&&(s.file.type==="image"?n.push({type:"image",source:{type:"base64",media_type:s.file.mimeType,data:s.file.base64}}):s.file.type==="document"&&s.file.mimeType==="application/pdf"&&n.push({type:"document",source:{type:"base64",media_type:"application/pdf",data:s.file.base64}}));return{role:"user",content:n}}})}i(Ee,"convertToProviderMessages");function Te(t){return t.map(e=>{const n=F.toJSONSchema(e.schema);if(!Tt(n))throw new Error(`Schema for tool ${e.name} must be an object type`);return{name:e.name,description:e.description,input_schema:n}})}i(Te,"convertToProviderTools");function we(t){const e=[];for(const n of t)if(n.type==="text")e.push({type:"text",text:n.text});else if(n.type==="thinking")e.push({type:"thinking",text:n.text||"",redacted:!1});else if(n.type==="redacted_thinking")e.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 new Error(`Invalid tool call input for ${n.name}: expected object, got ${typeof n.input}`);e.push({type:"tool-call",id:n.id,name:n.name,parameters:n.input})}return e}i(we,"convertToAxleContentParts");function Se(t){switch(t){case"max_tokens":return T.Length;case"end_turn":return T.Stop;case"stop_sequence":return T.Stop;case"tool_use":return T.FunctionCall;case"pause_turn":case"refusal":default:return T.Error}}i(Se,"convertStopReason$1");function Tt(t){return t&&typeof t=="object"&&t.type==="object"}i(Tt,"isObjectSchema");function wt(t){return t.map(e=>e.type==="text"?{type:"text",text:e.text}:{type:"image",source:{type:"base64",media_type:e.mimeType,data:e.data}})}i(wt,"convertToolResultParts");async function St(t){const{client:e,model:n,messages:s,system:r,tools:o,context:a,options:l}=t,p=a?.tracer,{stop:d,max_tokens:m,...u}=l??{},c={model:n,max_tokens:m??16e3,messages:Ee(s),...r&&{system:r},...d&&{stop_sequences:xe(d)},...o&&{tools:Te(o)},...u};p?.debug("Anthropic request",{request:c});let _;try{const h=await e.messages.create(c);_=It(h)}catch(h){_=K(h)}return p?.debug("Anthropic response",{result:_}),_}i(St,"createGenerationRequest$3");function It(t){const e=Se(t.stop_reason);if(e===T.Error)return{type:"error",error:{type:"Uncaught error",message:`Stop reason is not recognized or unhandled: ${t.stop_reason}`},usage:{in:t.usage.input_tokens,out:t.usage.output_tokens},raw:t};if(e===T.FunctionCall){const n=we(t.content);return{type:"success",id:t.id,model:t.model,role:t.role,finishReason:T.FunctionCall,content:n,text:H(n)??"",usage:{in:t.usage.input_tokens,out:t.usage.output_tokens},raw:t}}if(t.type=="message"){const n=we(t.content);return{type:"success",id:t.id,model:t.model,role:"assistant",finishReason:e,content:n,text:H(n)??"",usage:{in:t.usage.input_tokens,out:t.usage.output_tokens},raw:t}}}i(It,"convertToAIResponse");function bt(){const t=new Map,e=new Map,n=new Map;function s(r){const o=[];switch(r.type){case"message_start":o.push({type:"start",id:r.message.id,data:{model:r.message.model,timestamp:Date.now()}});break;case"message_delta":r.delta.stop_reason&&o.push({type:"complete",data:{finishReason:Se(r.delta.stop_reason),usage:r.usage?{in:r.usage.input_tokens||0,out:r.usage.output_tokens||0}:void 0}});case"message_stop":break;case"content_block_start":if(r.content_block.type==="text")t.set(r.index,"text"),o.push({type:"text-start",data:{index:r.index}});else if(r.content_block.type==="tool_use"){t.set(r.index,"tool");const a=r.content_block;n.set(r.index,{id:a.id,name:a.name,argumentsBuffer:""}),o.push({type:"tool-call-start",data:{index:r.index,id:a.id,name:a.name}})}else if(r.content_block.type==="thinking")t.set(r.index,"thinking"),o.push({type:"thinking-start",data:{index:r.index,redacted:!1}});else if(r.content_block.type==="redacted_thinking")t.set(r.index,"thinking"),o.push({type:"thinking-start",data:{index:r.index,redacted:!0}});else if(r.content_block.type==="server_tool_use"){t.set(r.index,"internal-tool");const a=r.content_block;e.set(a.id,{index:r.index,name:a.name}),o.push({type:"internal-tool-start",data:{index:r.index,id:a.id,name:a.name}})}else if(r.content_block.type==="web_search_tool_result"){const a=r.content_block,l=e.get(a.tool_use_id);l&&(o.push({type:"internal-tool-complete",data:{index:l.index,id:a.tool_use_id,name:l.name,output:a.content}}),e.delete(a.tool_use_id))}break;case"content_block_delta":if(r.delta.type==="text_delta")o.push({type:"text-delta",data:{text:r.delta.text,index:r.index}});else if(r.delta.type==="input_json_delta"){const a=n.get(r.index);a&&(a.argumentsBuffer+=r.delta.partial_json)}else r.delta.type==="thinking_delta"?o.push({type:"thinking-delta",data:{text:r.delta.thinking,index:r.index}}):r.delta.type==="signature_delta"||r.delta.type;break;case"content_block_stop":{const a=t.get(r.index);if(a==="text")o.push({type:"text-complete",data:{index:r.index}});else if(a==="thinking")o.push({type:"thinking-complete",data:{index:r.index}});else if(a!=="internal-tool"){if(a==="tool"){const l=n.get(r.index);if(l){try{const p=l.argumentsBuffer?JSON.parse(l.argumentsBuffer):{};o.push({type:"tool-call-complete",data:{index:r.index,id:l.id,name:l.name,arguments:p}})}catch(p){throw new Error(`Failed to parse tool call arguments for ${l.name}: ${p instanceof Error?p.message:String(p)}
20
- Raw buffer: ${l.argumentsBuffer}`)}n.delete(r.index)}}}t.delete(r.index);break}}return o}return i(s,"handleEvent"),{handleEvent:s}}i(bt,"createAnthropicStreamingAdapter");async function*kt(t){const{client:e,model:n,messages:s,system:r,tools:o,runtime:a,signal:l,options:p}=t,d=a?.tracer,{stop:m,max_tokens:u,serverTools:c,..._}=p??{},h=o?Te(o):[];if(c){const x={web_search:"web_search_20250305"};for(const S of c){const k=x[S.name]??S.name;h.push({type:k,name:S.name,...S.config})}}const f={model:n,max_tokens:u??At(n),messages:Ee(s),...r&&{system:r},...m&&{stop_sequences:xe(m)},...h.length>0&&{tools:h},..._};d?.debug("Anthropic streaming request",{request:f});const g=bt();try{const x=await e.messages.create({...f,stream:!0},{signal:l});for await(const S of x){const k=g.handleEvent(S);for(const L of k)yield L}}catch(x){if(l?.aborted)return;yield{type:"error",data:{type:"STREAMING_ERROR",message:x instanceof Error?x.message:String(x),raw:x}}}}i(kt,"createStreamingRequest$3");const Ie={[A.CLAUDE_OPUS_4_6]:128e3,[A.CLAUDE_OPUS_4_5_20251101]:64e3,[A.CLAUDE_HAIKU_4_5_20251001]:64e3,[A.CLAUDE_SONNET_4_5_20250929]:64e3,[A.CLAUDE_SONNET_4_20250514]:64e3,[A.CLAUDE_OPUS_4_1_20250805]:32e3,[A.CLAUDE_OPUS_4_20250514]:32e3,[A.CLAUDE_3_HAIKU_20240307]:4096};function At(t){return t in Ie?Ie[t]:t.includes("opus")?t.match(/opus-4-[6-9]|opus-[5-9]/)?128e3:64e3:t.includes("sonnet")||t.includes("haiku")?t.match(/claude-3-[0-5]-/)?8192:64e3:16384}i(At,"getMaxTokens");const $t="anthropic";function Mt(t){const e=new ze({apiKey:t});return{name:$t,async createGenerationRequest(n,s){return await St({client:e,model:n,...s})},createStreamingRequest(n,s){const{messages:r,system:o,tools:a,context:l,signal:p,options:d}=s;return kt({client:e,model:n,messages:r,system:o,tools:a,runtime:l,signal:p,options:d})}}}i(Mt,"anthropic");function be(t,e){const n=t.map(Ot).flat(1);return e?[{role:"system",content:e},...n]:n}i(be,"convertAxleMessages");function ke(t){if(t&&t.length>0)return t.map(e=>({type:"function",function:{name:e.name,description:e.description,parameters:F.toJSONSchema(e.schema)}}))}i(ke,"convertTools");function ee(t){switch(t){case"stop":return T.Stop;case"length":return T.Length;case"tool_calls":case"function_call":return T.FunctionCall;case"content_filter":return T.Error;default:return T.Stop}}i(ee,"convertFinishReason");function Ot(t){switch(t.role){case"tool":return Rt(t);case"assistant":return Ct(t);default:return Lt(t)}}i(Ot,"convertMessage$2");function Rt(t){return t.content.map(e=>({role:"tool",content:typeof e.content=="string"?e.content:e.content.filter(n=>n.type==="text").map(n=>n.text).join(`
21
- `),tool_call_id:e.id}))}i(Rt,"convertToolMessage$2");function Ct(t){const e=t.content.filter(r=>r.type==="tool-call"),n=t.content.filter(r=>r.type==="text"),s=e.length>0?e.map(r=>({type:"function",id:r.id,function:{name:r.name,arguments:JSON.stringify(r.parameters)}})):void 0;return{role:"assistant",content:n.map(r=>r.text).join(""),...s&&{tool_calls:s}}}i(Ct,"convertAssistantMessage$2");function Lt(t){if(typeof t.content=="string")return{role:"user",content:t.content};const e=t.content.map(Pt).filter(n=>n!==null);return e.every(n=>n.type==="text")?{role:"user",content:e.map(n=>n.text).join("")}:{role:"user",content:e}}i(Lt,"convertUserMessage$2");function Pt(t){return t.type==="text"?{type:"text",text:t.text}:t.type==="file"&&t.file.type==="image"?{type:"image_url",image_url:{url:`data:${t.file.mimeType};base64,${t.file.base64}`}}:null}i(Pt,"convertContentPart$2");async function vt(t){const{baseUrl:e,model:n,messages:s,system:r,tools:o,context:a,apiKey:l,options:p}=t,d=a?.tracer,m=be(s,r),u=ke(o),c={model:n,messages:m,...u&&{tools:u}};p&&(p.temperature!==void 0&&(c.temperature=p.temperature),p.top_p!==void 0&&(c.top_p=p.top_p),p.max_tokens!==void 0&&(c.max_tokens=p.max_tokens),p.frequency_penalty!==void 0&&(c.frequency_penalty=p.frequency_penalty),p.presence_penalty!==void 0&&(c.presence_penalty=p.presence_penalty),p.stop!==void 0&&(c.stop=p.stop)),d?.debug("ChatCompletions request",{request:c});let _;try{const h={"Content-Type":"application/json"};l&&(h.Authorization=`Bearer ${l}`);const f=await fetch(`${e}/chat/completions`,{method:"POST",headers:h,body:JSON.stringify(c)});if(!f.ok){const x=await f.text().catch(()=>"");throw new Error(`HTTP error! status: ${f.status}${x?` - ${x}`:""}`)}const g=await f.json();_=Nt(g)}catch(h){d?.error("Error fetching ChatCompletions response",{error:h instanceof Error?h.message:String(h)}),_=K(h)}return d?.debug("ChatCompletions response",{result:_}),_}i(vt,"createGenerationRequest$2");function Nt(t){const e=t.choices?.[0];if(!e)return{type:"error",error:{type:"ChatCompletionsError",message:"No choices in response"},usage:{in:0,out:0},raw:t};const n=[];if(e.message.reasoning_content&&n.push({type:"thinking",text:e.message.reasoning_content}),e.message.content&&n.push({type:"text",text:e.message.content}),e.message.tool_calls)for(const o of e.message.tool_calls){let a;try{a=JSON.parse(o.function.arguments)}catch(l){throw new Error(`Invalid tool call arguments for ${o.function.name}: ${l instanceof Error?l.message:String(l)}`)}if(typeof a!="object"||a===null||Array.isArray(a))throw new Error(`Invalid tool call arguments for ${o.function.name}: expected object, got ${typeof a}`);n.push({type:"tool-call",id:o.id,name:o.function.name,parameters:a})}const s=n.some(o=>o.type==="tool-call"),r=ee(s?"tool_calls":e.finish_reason);return{type:"success",id:t.id,model:t.model,role:"assistant",finishReason:r,content:n,text:H(n)??"",usage:{in:t.usage?.prompt_tokens||0,out:t.usage?.completion_tokens||0},raw:t}}i(Nt,"fromModelResponse$2");function Ut(){const t=new Map;let e=0,n=-1,s="",r="",o=null,a,l;function p(u){n<0||(o==="text"?u.push({type:"text-complete",data:{index:n}}):o==="thinking"&&u.push({type:"thinking-complete",data:{index:n}}),o=null,n=-1)}i(p,"closeActivePart");function d(u){const c=[];u.usage&&(l={in:u.usage.prompt_tokens,out:u.usage.completion_tokens});const _=u.choices?.[0];if(!_)return c;s||(s=u.id,r=u.model,c.push({type:"start",id:s,data:{model:r,timestamp:Date.now()}}));const h=_.delta;if(h.reasoning_content&&(o!=="thinking"&&(p(c),n=e++,o="thinking",c.push({type:"thinking-start",data:{index:n}})),c.push({type:"thinking-delta",data:{index:n,text:h.reasoning_content}})),h.content&&(o!=="text"&&(p(c),n=e++,o="text",c.push({type:"text-start",data:{index:n}})),c.push({type:"text-delta",data:{text:h.content,index:n}})),h.tool_calls){p(c);for(const f of h.tool_calls){const g=f.index;if(!t.has(g)){const S=e++,k=f.id||`tool-${S}`;t.set(g,{id:k,name:f.function?.name||"",argumentsBuffer:"",partIdx:S}),c.push({type:"tool-call-start",data:{index:S,id:k,name:f.function?.name||""}})}const x=t.get(g);f.id&&(x.id=f.id),f.function?.name&&(x.name=f.function.name),f.function?.arguments&&(x.argumentsBuffer+=f.function.arguments)}}if(_.finish_reason){p(c);for(const[,f]of t)try{const g=f.argumentsBuffer?JSON.parse(f.argumentsBuffer):{};c.push({type:"tool-call-complete",data:{index:f.partIdx,id:f.id,name:f.name,arguments:g}})}catch(g){throw new Error(`Failed to parse tool call arguments for ${f.name}: ${g instanceof Error?g.message:String(g)}
22
- Raw buffer: ${f.argumentsBuffer}`)}a=ee(_.finish_reason)}return c}i(d,"handleChunk");function m(){return a===void 0?[]:[{type:"complete",data:{finishReason:a,usage:l??{in:0,out:0}}}]}return i(m,"finalize"),{handleChunk:d,finalize:m}}i(Ut,"createStreamingAdapter$1");async function*Gt(t){const{baseUrl:e,model:n,messages:s,system:r,tools:o,context:a,signal:l,apiKey:p,options:d}=t,m=a?.tracer;d?.serverTools&&m?.warn("serverTools not supported by ChatCompletions provider");const u=be(s,r),c=ke(o),_={model:n,messages:u,stream:!0,stream_options:{include_usage:!0},...c&&{tools:c}};d&&(d.temperature!==void 0&&(_.temperature=d.temperature),d.top_p!==void 0&&(_.top_p=d.top_p),d.max_tokens!==void 0&&(_.max_tokens=d.max_tokens),d.frequency_penalty!==void 0&&(_.frequency_penalty=d.frequency_penalty),d.presence_penalty!==void 0&&(_.presence_penalty=d.presence_penalty),d.stop!==void 0&&(_.stop=d.stop)),m?.debug("ChatCompletions streaming request",{request:_});const h=Ut();try{const f={"Content-Type":"application/json"};p&&(f.Authorization=`Bearer ${p}`);const g=await fetch(`${e}/chat/completions`,{method:"POST",headers:f,body:JSON.stringify(_),signal:l});if(!g.ok){const L=await g.text().catch(()=>"");throw new Error(`HTTP error! status: ${g.status}${L?` - ${L}`:""}`)}if(!g.body)throw new Error("Response body is null");const x=g.body.getReader(),S=new TextDecoder;let k="";for(;;){const{done:L,value:E}=await x.read();if(L)break;k+=S.decode(E,{stream:!0});const G=k.split(`
23
- `);k=G.pop()||"";for(const D of G){const I=D.trim();if(!I||I.startsWith(":")||!I.startsWith("data: "))continue;const j=I.slice(6);if(j!=="[DONE]")try{const M=JSON.parse(j),B=h.handleChunk(M);for(const q of B)yield q}catch(M){m?.error("Error parsing ChatCompletions stream chunk",{error:M instanceof Error?M.message:String(M),line:I})}}}for(const L of h.finalize())yield L}catch(f){if(l?.aborted)return;m?.error("Error in ChatCompletions streaming request",{error:f instanceof Error?f.message:String(f)}),yield{type:"error",data:{type:"STREAMING_ERROR",message:f instanceof Error?f.message:String(f),raw:f}}}}i(Gt,"createStreamingRequest$2");function Dt(t,e){return{name:"ChatCompletions",async createGenerationRequest(n,s){return await vt({baseUrl:t,model:n,apiKey:e,...s})},createStreamingRequest(n,s){return Gt({baseUrl:t,model:n,apiKey:e,...s})}}}i(Dt,"chatCompletions");const b={GEMINI_3_1_PRO_PREVIEW:"gemini-3.1-pro-preview",GEMINI_3_1_PRO_PREVIEW_CUSTOMTOOLS:"gemini-3.1-pro-preview-customtools",GEMINI_3_PRO_PREVIEW:"gemini-3-pro-preview",GEMINI_3_FLASH_PREVIEW:"gemini-3-flash-preview",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_5_FLASH_LITE_PREVIEW_09_2025:"gemini-2.5-flash-lite-preview-09-2025",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",GEMMA_3_27B_IT:"gemma-3-27b-it",GEMMA_3_12B_IT:"gemma-3-12b-it",GEMMA_3_4B_IT:"gemma-3-4b-it",GEMMA_3_1B_IT:"gemma-3-1b-it",GEMMA_3N_E4B_IT:"gemma-3n-e4b-it",GEMMA_3N_E2B_IT:"gemma-3n-e2b-it"};b.GEMINI_3_1_PRO_PREVIEW,b.GEMINI_3_1_PRO_PREVIEW_CUSTOMTOOLS,b.GEMINI_3_PRO_PREVIEW,b.GEMINI_3_FLASH_PREVIEW,b.GEMINI_2_5_PRO,b.GEMINI_2_5_FLASH,b.GEMINI_2_5_FLASH_LITE,b.GEMINI_2_5_FLASH_LITE_PREVIEW_09_2025,b.GEMINI_2_0_FLASH,b.GEMINI_2_0_FLASH_001,b.GEMINI_2_0_FLASH_LITE,b.GEMINI_2_0_FLASH_LITE_001,b.GEMINI_FLASH_LATEST,b.GEMINI_FLASH_LITE_LATEST,b.GEMINI_PRO_LATEST,b.GEMMA_3_27B_IT,b.GEMMA_3_12B_IT,b.GEMMA_3_4B_IT,b.GEMMA_3_1B_IT,b.GEMMA_3N_E4B_IT,b.GEMMA_3N_E2B_IT;const Ft=b.GEMINI_3_FLASH_PREVIEW;function Ae(t,e,n){const s={};return e&&(s.systemInstruction=e),t&&t.length>0&&(s.tools=t.map(r=>({functionDeclarations:[{name:r.name,description:r.description,parametersJsonSchema:F.toJSONSchema(r.schema)}]}))),n&&Object.assign(s,n),s}i(Ae,"prepareConfig");function $e(t){return t.map(jt).filter(e=>e!==void 0)}i($e,"convertAxleMessagesToGemini");function jt(t){switch(t.role){case"tool":return Bt(t);case"assistant":return qt(t);case"user":return Ht(t)}}i(jt,"convertMessage$1");function Bt(t){return{role:"user",parts:t.content.flatMap(e=>{const n={functionResponse:{id:e.id??void 0,name:e.name,response:{output:typeof e.content=="string"?e.content:e.content.filter(r=>r.type==="text").map(r=>r.text).join(`
24
- `)}}};if(typeof e.content=="string")return[n];const s=e.content.filter(r=>r.type==="image").map(r=>({inlineData:{mimeType:r.mimeType,data:r.data}}));return[n,...s]})}}i(Bt,"convertToolMessage$1");function qt(t){const e=[],n=t.content.filter(r=>r.type==="text");if(n.length>0){const r=n.map(o=>o.text).join("");r&&e.push({text:r})}const s=t.content.filter(r=>r.type==="tool-call");return s.length>0&&e.push(...s.map(r=>{const o={functionCall:{id:r.id??void 0,name:r.name,args:r.parameters}};return r.providerMetadata?.thoughtSignature&&(o.thoughtSignature=r.providerMetadata.thoughtSignature),o})),{role:"model",parts:e}}i(qt,"convertAssistantMessage$1");function Ht(t){return typeof t.content=="string"?{role:"user",parts:[{text:t.content}]}:{role:"user",parts:t.content.map(Jt).filter(n=>n!==null)}}i(Ht,"convertUserMessage$1");function Jt(t){return t.type==="text"?{text:t.text}:t.type==="file"&&(t.file.type==="image"||t.file.type==="document")?{inlineData:{mimeType:t.file.mimeType,data:t.file.base64}}:null}i(Jt,"convertContentPart$1");function Me(t){switch(t){case R.STOP:return[!0,T.Stop];case R.MAX_TOKENS:return[!0,T.Length];case R.FINISH_REASON_UNSPECIFIED:case R.SAFETY:case R.RECITATION:case R.LANGUAGE:case R.OTHER:case R.BLOCKLIST:case R.PROHIBITED_CONTENT:case R.SPII:case R.MALFORMED_FUNCTION_CALL:case R.IMAGE_SAFETY:return[!1,T.Error]}}i(Me,"convertStopReason");async function Wt(t){const{client:e,model:n,messages:s,system:r,tools:o,context:a,options:l}=t,p=a?.tracer,d=l?{...l}:{};d.max_tokens&&(d.maxOutputTokens=d.max_tokens,delete d.max_tokens),d.stop&&(d.stopSequences=Array.isArray(d.stop)?d.stop:[d.stop],delete d.stop),d.top_p!==void 0&&(d.topP=d.top_p,delete d.top_p);const m={contents:$e(s),config:Ae(o,r,d)};p?.debug("Gemini request",{request:m});let u;try{const c=await e.models.generateContent({model:n,...m});u=zt(c,{tracer:p})}catch(c){p?.error(c instanceof Error?c.message:String(c)),u=K(c)}return p?.debug("Gemini response",{result:u}),u}i(Wt,"createGenerationRequest$1");function zt(t,e){const{tracer:n}=e,s=t.usageMetadata.promptTokenCount,r=t.usageMetadata.totalTokenCount-s,o={in:s,out:r};if(!t)return{type:"error",error:{type:"InvalidResponse",message:"Invalid or empty response from Google AI"},usage:{in:0,out:0},raw:t};if(t.promptFeedback&&t.promptFeedback.blockReason)return{type:"error",error:{type:"Blocked",message:`Response blocked by Google AI: ${t.promptFeedback.blockReason}, ${t.promptFeedback.blockReasonMessage}`},usage:o,raw:t};if(!t.candidates||t.candidates.length===0)return{type:"error",error:{type:"InvalidResponse",message:"Invalid or empty response from Google AI"},usage:{in:0,out:0},raw:t};t.candidates.length>1&&n?.warn(`We received ${t.candidates.length} response candidates`);const a=t.candidates[0],p=(a.content?.parts||[]).map(u=>u.text).filter(u=>u!==void 0).join(""),[d,m]=Me(a.finishReason);if(d){const u=[];if(p&&u.push({type:"text",text:p}),t.functionCalls)for(const c of t.functionCalls)if(c.args==null)u.push({type:"tool-call",id:c.id,name:c.name,parameters:{}});else{if(typeof c.args!="object"||Array.isArray(c.args))throw new Error(`Invalid tool call arguments for ${c.name}: expected object, got ${typeof c.args}`);u.push({type:"tool-call",id:c.id,name:c.name,parameters:c.args})}return{type:"success",id:t.responseId,model:t.modelVersion,role:"assistant",finishReason:t.functionCalls?T.FunctionCall:m,content:u,text:H(u)??"",usage:o,raw:t}}else return{type:"error",error:{type:"Undetermined",message:`Unexpected stop reason: ${m}`},usage:o,raw:t}}i(zt,"fromModelResponse$1");function Kt(){let t=0,e=-1,n=!1,s="",r="",o=0,a=0,l=null;function p(m){e<0||(l==="text"?m.push({type:"text-complete",data:{index:e}}):l==="thinking"&&m.push({type:"thinking-complete",data:{index:e}}),l=null,e=-1)}i(p,"closeActivePart");function d(m){const u=[];s||(s=m.responseId||`gemini-${Date.now()}`,r=m.modelVersion||"gemini",u.push({type:"start",id:s,data:{model:r,timestamp:Date.now()}})),m.usageMetadata&&(o=m.usageMetadata.promptTokenCount||0,a=(m.usageMetadata.totalTokenCount||0)-o);const c=m.candidates?.[0];if(!c)return u;const _=c.content?.parts||[];for(const h of _){const f="thought"in h&&h.thought===!0;if(f&&h.text?(l!=="thinking"&&(p(u),e=t++,l="thinking",u.push({type:"thinking-start",data:{index:e}})),u.push({type:"thinking-delta",data:{index:e,text:h.text}})):h.text&&!f?(l!=="text"&&(p(u),e=t++,l="text",u.push({type:"text-start",data:{index:e}})),u.push({type:"text-delta",data:{text:h.text,index:e}})):h.functionCall||console.log(`[gemini] unhandled part type: ${JSON.stringify(Object.keys(h))}`),h.functionCall){p(u),n=!0;const g=t++,x=h.functionCall.id||`tool-${g}`;u.push({type:"tool-call-start",data:{index:g,id:x,name:h.functionCall.name}});const S={index:g,id:x,name:h.functionCall.name,arguments:h.functionCall.args??{}},k=h;k.thoughtSignature&&(S.providerMetadata={thoughtSignature:k.thoughtSignature}),u.push({type:"tool-call-complete",data:S})}}if(c.finishReason&&c.finishReason!==R.FINISH_REASON_UNSPECIFIED){p(u);const[h,f]=Me(c.finishReason),g=n?T.FunctionCall:f;!h&&!n?u.push({type:"error",data:{type:"FinishReasonError",message:`Unexpected finish reason: ${c.finishReason}`,usage:{in:o,out:a},raw:m}}):u.push({type:"complete",data:{finishReason:g,usage:{in:o,out:a}}})}return u}return i(d,"handleChunk"),{handleChunk:d}}i(Kt,"createGeminiStreamingAdapter");async function*Vt(t){const{client:e,model:n,messages:s,system:r,tools:o,runtime:a,signal:l,options:p}=t,d=a?.tracer,{serverTools:m,...u}=p??{},c=u?{...u}:{};c.max_tokens&&(c.maxOutputTokens=c.max_tokens,delete c.max_tokens),c.stop&&(c.stopSequences=Array.isArray(c.stop)?c.stop:[c.stop],delete c.stop),c.top_p!==void 0&&(c.topP=c.top_p,delete c.top_p);const _=Ae(o,r,c);if(m){const g={web_search:"googleSearch",code_execution:"codeExecution"};_.tools||(_.tools=[]);for(const x of m){const S=g[x.name]??x.name;_.tools.push({[S]:x.config??{}})}}const h={contents:$e(s),config:_};d?.debug("Gemini streaming request",{request:h});const f=Kt();try{const g=await e.models.generateContentStream({model:n,...h});for await(const x of g){const S=f.handleChunk(x);for(const k of S)yield k}}catch(g){if(l?.aborted)return;d?.error(g instanceof Error?g.message:String(g)),yield{type:"error",data:{type:"STREAMING_ERROR",message:g instanceof Error?g.message:String(g),raw:g}}}}i(Vt,"createStreamingRequest$1");const Xt="Gemini";function Zt(t){const e=new Ke({apiKey:t});return{name:Xt,async createGenerationRequest(n,s){return await Wt({client:e,model:n,...s})},createStreamingRequest(n,s){const{messages:r,system:o,tools:a,context:l,signal:p,options:d}=s;return Vt({client:e,model:n,messages:r,system:o,tools:a,runtime:l,signal:p,options:d})}}}i(Zt,"gemini");const Oe={GPT_5_2:"gpt-5.2",GPT_5_2_2025_12_11:"gpt-5.2-2025-12-11",GPT_5_2_CHAT_LATEST:"gpt-5.2-chat-latest",GPT_5_2_PRO:"gpt-5.2-pro",GPT_5_2_PRO_2025_12_11:"gpt-5.2-pro-2025-12-11",GPT_5_2_CODEX:"gpt-5.2-codex",GPT_5_1:"gpt-5.1",GPT_5_1_2025_11_13:"gpt-5.1-2025-11-13",GPT_5_1_CHAT_LATEST:"gpt-5.1-chat-latest",GPT_5_1_CODEX:"gpt-5.1-codex",GPT_5_1_CODEX_MAX:"gpt-5.1-codex-max",GPT_5_1_CODEX_MINI:"gpt-5.1-codex-mini",GPT_5:"gpt-5",GPT_5_2025_08_07:"gpt-5-2025-08-07",GPT_5_CHAT_LATEST:"gpt-5-chat-latest",GPT_5_CODEX:"gpt-5-codex",GPT_5_MINI:"gpt-5-mini",GPT_5_MINI_2025_08_07:"gpt-5-mini-2025-08-07",GPT_5_NANO:"gpt-5-nano",GPT_5_NANO_2025_08_07:"gpt-5-nano-2025-08-07",GPT_5_PRO:"gpt-5-pro",GPT_5_PRO_2025_10_06:"gpt-5-pro-2025-10-06",GPT_5_SEARCH_API:"gpt-5-search-api",GPT_5_SEARCH_API_2025_10_14:"gpt-5-search-api-2025-10-14",GPT_4_1:"gpt-4.1",GPT_4_1_2025_04_14:"gpt-4.1-2025-04-14",GPT_4_1_MINI:"gpt-4.1-mini",GPT_4_1_MINI_2025_04_14:"gpt-4.1-mini-2025-04-14",GPT_4_1_NANO:"gpt-4.1-nano",GPT_4_1_NANO_2025_04_14:"gpt-4.1-nano-2025-04-14",GPT_4O:"gpt-4o",GPT_4O_2024_11_20:"gpt-4o-2024-11-20",GPT_4O_2024_08_06:"gpt-4o-2024-08-06",GPT_4O_2024_05_13:"gpt-4o-2024-05-13",GPT_4O_MINI:"gpt-4o-mini",GPT_4O_MINI_2024_07_18:"gpt-4o-mini-2024-07-18",GPT_4O_SEARCH_PREVIEW:"gpt-4o-search-preview",GPT_4O_SEARCH_PREVIEW_2025_03_11:"gpt-4o-search-preview-2025-03-11",GPT_4O_MINI_SEARCH_PREVIEW:"gpt-4o-mini-search-preview",GPT_4O_MINI_SEARCH_PREVIEW_2025_03_11:"gpt-4o-mini-search-preview-2025-03-11",GPT_4_TURBO:"gpt-4-turbo",GPT_4_TURBO_2024_04_09:"gpt-4-turbo-2024-04-09",O4_MINI:"o4-mini",O4_MINI_2025_04_16:"o4-mini-2025-04-16",O3:"o3",O3_2025_04_16:"o3-2025-04-16",O3_PRO:"o3-pro",O3_PRO_2025_06_10:"o3-pro-2025-06-10",O3_MINI:"o3-mini",O3_MINI_2025_01_31:"o3-mini-2025-01-31",O1:"o1",O1_2024_12_17:"o1-2024-12-17",O1_PRO:"o1-pro",O1_PRO_2025_03_19:"o1-pro-2025-03-19"},Yt=Oe.GPT_5_MINI;function Re(t){if(t&&t.length>0)return t.map(e=>({type:"function",strict:!0,name:e.name,description:e.description,parameters:F.toJSONSchema(e.schema)}))}i(Re,"prepareTools");function Ce(t){return t.map(Qt).flat(1)}i(Ce,"convertAxleMessageToResponseInput");function Qt(t){switch(t.role){case"tool":return en(t);case"assistant":return tn(t);default:return nn(t)}}i(Qt,"convertMessage");function en(t){return t.content.map(e=>({type:"function_call_output",call_id:e.id,output:typeof e.content=="string"?e.content:e.content.map(n=>n.type==="text"?{type:"input_text",text:n.text}:{type:"input_image",image_url:`data:${n.mimeType};base64,${n.data}`})}))}i(en,"convertToolMessage");function tn(t){const e=[],n=H(t.content);n&&e.push({role:t.role,content:n});const s=t.content.filter(o=>o.type==="tool-call");for(const o of s)e.push({type:"function_call",call_id:o.id,name:o.name,arguments:JSON.stringify(o.parameters)});const r=t.content.filter(o=>o.type==="internal-tool");for(const o of r)o.output!=null&&e.push(o.output);return e}i(tn,"convertAssistantMessage");function nn(t){if(typeof t.content=="string")return{role:t.role,content:t.content};{const e=t.content.map(sn).filter(n=>n!==null);return{role:t.role,content:e}}}i(nn,"convertUserMessage");function sn(t){if(t.type==="text")return{type:"input_text",text:t.text};if(t.type==="file"){if(t.file.type==="image")return{type:"input_image",image_url:`data:${t.file.mimeType};base64,${t.file.base64}`,detail:"auto"};if(t.file.type==="document")return{type:"input_file",filename:t.file.path,file_data:`data:${t.file.mimeType};base64,${t.file.base64}`}}return t.type==="thinking",null}i(sn,"convertContentPart");async function rn(t){const{client:e,model:n,messages:s,system:r,tools:o,context:a,options:l}=t,p=a?.tracer,d=Re(o),m={model:n,input:Ce(s),...r&&{instructions:r},...d?{tools:d}:{},...l};p?.debug("OpenAI ResponsesAPI request",{request:m});let u;try{const c=await e.responses.create(m);u=on(c)}catch(c){p?.error(c instanceof Error?c.message:String(c)),u=K(c)}return p?.debug("OpenAI ResponsesAPI response",{result:u}),u}i(rn,"createGenerationRequest");function on(t){if(t.error)return{type:"error",error:{type:t.error.code||"undetermined",message:t.error.message||"Response generation failed"},usage:{in:t.usage?.input_tokens??0,out:t.usage?.output_tokens??0},raw:t};const e=t.output?.filter(r=>r.type==="reasoning")?.map(r=>r),n=[];if(e&&e.length>0)for(const r of e){const o=r.summary?.[0]?.text||r.content?.[0]?.text||"";(o||r.encrypted_content)&&n.push({type:"thinking",text:o,...r.encrypted_content&&{encrypted:r.encrypted_content}})}t.output_text&&n.push({type:"text",text:t.output_text});const s=t.output?.filter(r=>r.type==="function_call");if(s&&s.length>0)for(const r of s){const o=r;try{n.push({type:"tool-call",id:o.id||"",name:o.name||"",parameters:o.arguments?JSON.parse(o.arguments):{}})}catch(a){throw new Error(`Failed to parse tool call arguments for ${o.name}: ${a instanceof Error?a.message:String(a)}
25
- Raw value: ${o.arguments}`)}}return{type:"success",id:t.id,model:t.model||"",role:"assistant",finishReason:t.incomplete_details?T.Error:T.Stop,content:n,text:H(n)??"",usage:{in:t.usage?.input_tokens??0,out:t.usage?.output_tokens??0},raw:t}}i(on,"fromModelResponse");function an(){let t="",e="",n=0,s=-1,r=!1;const o=new Map,a=new Map,l=new Set(["web_search_call","file_search_call","code_interpreter_call"]),p=new Map;function d(m){const u=[];switch(m.type){case"response.created":{t=m.response.id||`openai-${Date.now()}`,e=m.response.model,u.push({type:"start",id:t,data:{model:e,timestamp:Date.now()}});break}case"response.output_text.delta":{s===-1&&(s=n++,u.push({type:"text-start",data:{index:s}})),u.push({type:"text-delta",data:{text:m.delta,index:s}});break}case"response.output_text.done":{s>=0&&(u.push({type:"text-complete",data:{index:s}}),s=-1);break}case"response.function_call_arguments.delta":{const c=m.item_id;if(!p.has(c)){const h=o.get(c),f=h?.name||"",g=h?.callId||c,x=n++;p.set(c,{id:c,callId:g,name:f,argumentsBuffer:"",partIdx:x}),u.push({type:"tool-call-start",data:{index:x,id:g,name:f}})}const _=p.get(c);_.argumentsBuffer+=m.delta;break}case"response.function_call_arguments.done":{r=!0;const c=m.item_id,_=p.get(c),h=m.name||_?.name||"";if(_){try{const f=m.arguments?JSON.parse(m.arguments):{};u.push({type:"tool-call-complete",data:{index:_.partIdx,id:_.callId,name:h,arguments:f}})}catch(f){throw new Error(`Failed to parse function call arguments for ${h}: ${f instanceof Error?f.message:String(f)}
26
- Raw value: ${m.arguments}`)}p.delete(c)}break}case"response.completed":{const c=m.response.usage;u.push({type:"complete",data:{finishReason:m.response.incomplete_details?T.Error:r?T.FunctionCall:T.Stop,usage:{in:c?.input_tokens||0,out:c?.output_tokens||0}}});break}case"response.failed":{u.push({type:"error",data:{type:"RESPONSES_API_ERROR",message:`Response failed: ${m.response.status}`,raw:m}});break}case"response.output_item.added":{if(m.item?.type==="reasoning")s=n++,u.push({type:"thinking-start",data:{index:s}});else if(m.item?.type==="function_call"){const c=m.item,_=c.id||c.call_id;_&&o.set(_,{name:c.name||"",callId:c.call_id||_})}else if(m.item&&l.has(m.item.type)){const c=m.item,_=n++;a.set(c.id,_),u.push({type:"internal-tool-start",data:{index:_,id:c.id,name:c.type}})}break}case"response.output_item.done":{if(m.item?.type==="reasoning"&&s>=0)u.push({type:"thinking-complete",data:{index:s}}),s=-1;else if(m.item&&l.has(m.item.type)){const c=m.item,_=a.get(c.id);_!==void 0&&(u.push({type:"internal-tool-complete",data:{index:_,id:c.id,name:c.type,output:m.item}}),a.delete(c.id))}break}case"response.reasoning_text.delta":{m.delta&&u.push({type:"thinking-delta",data:{index:s,text:m.delta}});break}case"response.reasoning_summary_text.delta":{m.delta&&u.push({type:"thinking-summary-delta",data:{index:s,text:m.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: ${m.type}`)}return u}return i(d,"handleEvent"),{handleEvent:d}}i(an,"createStreamingAdapter");async function*cn(t){const{client:e,model:n,messages:s,system:r,tools:o,runtime:a,signal:l,options:p}=t,d=a?.tracer,{serverTools:m,...u}=p??{},c=Re(o)??[];if(m){const f={web_search:"web_search_preview",code_execution:"code_interpreter"};for(const g of m){const x=f[g.name]??g.name;c.push({type:x,...g.config})}}const _={model:n,input:Ce(s),...r&&{instructions:r},stream:!0,...c.length>0?{tools:c}:{},...u};d?.debug("OpenAI ResponsesAPI streaming request",{request:_});const h=an();try{const f=e.responses.stream(_,...l?[{signal:l}]:[]);for await(const g of f){const x=h.handleEvent(g);for(const S of x)yield S}}catch(f){if(l?.aborted)return;d?.error(f instanceof Error?f.message:String(f)),yield{type:"error",data:{type:"STREAMING_ERROR",message:f instanceof Error?f.message:String(f),raw:f}}}}i(cn,"createStreamingRequest");const ln="OpenAI";function un(t){const e=new Ve({apiKey:t});return{name:ln,async createGenerationRequest(n,s){return await rn({client:e,model:n,...s})},createStreamingRequest(n,s){const{messages:r,system:o,tools:a,context:l,signal:p,options:d}=s;return cn({client:e,model:n,messages:r,system:o,tools:a,runtime:l,signal:p,options:d})}}}i(un,"openai");const pn=O.object({searchTerm:O.string().describe("The search term to query")});class dn{static{i(this,"BraveSearchTool")}name="brave";description="Perform a search using the Brave search engine";schema=pn;apiKey;throttle;lastExecTime=0;constructor(e){e&&this.configure(e)}configure(e){const{rateLimit:n}=e;this.apiKey=e["api-key"],this.throttle=n?1100/n:void 0}async execute(e){const{searchTerm:n}=e;if(this.throttle){for(;Date.now()-this.lastExecTime<this.throttle;)await Et(this.throttle-(Date.now()-this.lastExecTime));this.lastExecTime=Date.now()}try{const s=this.apiKey,r="https://api.search.brave.com/res/v1/web/search",o=new URL(r);o.searchParams.append("q",n),o.searchParams.append("format","json");const a=await fetch(o.toString(),{method:"GET",headers:{Accept:"application/json","X-Subscription-Token":s}});if(!a.ok)throw new Error(`[Brave] HTTP error ${a.status}: ${a.statusText}`);const l=await a.json();return JSON.stringify(l)}catch(s){throw s instanceof Error?new Error(`[Brave] Error fetching search results: ${s.message}`):s}}}const mn=new dn,fn=$.object({operation:$.enum(["add","subtract","multiply","divide"]).describe("The operation to perform (add, subtract, multiply, divide)"),a:$.number().describe("First operand"),b:$.number().describe("Second operand")}),hn={name:"calculator",description:"Performs basic arithmetic operations",schema:fn,execute:i(async({operation:t,a:e,b:n})=>{switch(t){case"add":return`${e} + ${n} = ${e+n}`;case"subtract":return`${e} - ${n} = ${e-n}`;case"multiply":return`${e} * ${n} = ${e*n}`;case"divide":if(n===0)throw new Error("Cannot divide by zero");return`${e} / ${n} = ${e/n}`;default:throw new Error(`Unknown operation: ${t}`)}},"execute")},_n=Ze(Xe),gn=3e4,yn=1024*1024;async function xn(t,e={}){const{stdout:n,stderr:s}=await _n(t,{cwd:e.cwd,timeout:e.timeout??gn,maxBuffer:e.maxBuffer??yn});return{stdout:n,stderr:s}}i(xn,"runCommand");function En(t){if(t instanceof Error){const e=t;let n=`Error executing command: ${t.message}`;return e.stdout&&(n+=`
27
- [stdout]: ${e.stdout}`),e.stderr&&(n+=`
28
- [stderr]: ${e.stderr}`),n}return`Error executing command: ${String(t)}`}i(En,"formatExecError");function Tn(t,e){return e&&e.trim()?`${t}
29
- [stderr]: ${e}`:t}i(Tn,"formatOutput");const wn=O.object({command:O.string().describe("The shell command to execute")});class Sn{static{i(this,"ExecTool")}name="exec";description="Execute a shell command and return the output.";schema=wn;timeout=3e4;maxBuffer=1024*1024;cwd;constructor(e){e&&this.configure(e)}configure(e){this.timeout=e.timeout??3e4,this.maxBuffer=e.maxBuffer??1024*1024,this.cwd=e.cwd}summarize(e){return e.command}async execute(e){const{command:n}=e;try{const s=await xn(n,{timeout:this.timeout,maxBuffer:this.maxBuffer,cwd:this.cwd});return Tn(s.stdout,s.stderr)}catch(s){return En(s)}}}const In=new Sn,bn=$.object({path:$.string().describe("The file path to patch"),old_string:$.string().describe("The exact text to find and replace"),new_string:$.string().describe("The replacement text"),start_line:$.number().int().positive().describe("1-indexed start line of the region to match within"),end_line:$.number().int().positive().describe("1-indexed end line (inclusive) of the region to match within")}),kn={name:"patch-file",description:"Patch a file by replacing an exact string match within a specified line range",schema:bn,summarize:i(({path:t,start_line:e,end_line:n})=>`${t}:${e}:${n}`,"summarize"),execute:i(async({path:t,old_string:e,new_string:n,start_line:s,end_line:r})=>{if(r<s)throw new Error(`end_line (${r}) must be >= start_line (${s})`);let o;try{o=await J(t,"utf-8")}catch(h){throw h instanceof Error?new Error(`Failed to read file "${t}": ${h.message}`):h}const a=o.split(`
30
- `);if(s>a.length)throw new Error(`start_line (${s}) exceeds file length (${a.length} lines)`);if(r>a.length)throw new Error(`end_line (${r}) exceeds file length (${a.length} lines)`);const p=a.slice(s-1,r).join(`
31
- `),d=p.indexOf(e);if(d===-1)throw new Error(`old_string not found within lines ${s}-${r} of "${t}"`);if(p.indexOf(e,d+1)!==-1)throw new Error(`old_string matches multiple times within lines ${s}-${r} of "${t}"`);const u=p.replace(e,n),_=[...a.slice(0,s-1),...u.split(`
32
- `),...a.slice(r)].join(`
33
- `);try{await ie(t,_,"utf-8")}catch(h){throw h instanceof Error?new Error(`Failed to write file "${t}": ${h.message}`):h}return`Successfully patched "${t}" (lines ${s}-${r})`},"execute")},An=$.object({path:$.string().describe("The file path to read from")}),$n={name:"read-file",description:"Read the contents of a file from disk",schema:An,summarize:i(({path:t})=>t,"summarize"),execute:i(async({path:t})=>{try{return await J(t,"utf-8")}catch(e){throw e instanceof Error?new Error(`Failed to read file "${t}": ${e.message}`):e}},"execute")},Mn=$.object({path:$.string().describe("The file path to write to"),content:$.string().describe("The content to write to the file")}),On={name:"write-file",description:"Write content to a file on disk, creating directories if needed",schema:Mn,summarize:i(({path:t})=>t,"summarize"),execute:i(async({path:t,content:e})=>{try{return await Je(We(t),{recursive:!0}),await ie(t,e,"utf-8"),`Successfully wrote ${e.length} characters to "${t}"`}catch(n){throw n instanceof Error?new Error(`Failed to write file "${t}": ${n.message}`):n}},"execute")};function Le(t){try{const e=F.fromJSONSchema(t);return e instanceof F.ZodObject?e.strict():F.object({}).passthrough()}catch{return F.object({}).passthrough()}}i(Le,"jsonSchemaToZod");function Rn(t,e,n){return t.map(s=>Ln(s,e,n))}i(Rn,"createMcpTools");function Cn(t,e){return t.map(n=>{const s=e?`${e}_${n.name}`:n.name,r=Le(n.inputSchema);return{name:s,description:n.description??"",schema:r}})}i(Cn,"createMcpToolDefinitions");function Ln(t,e,n){const s=n?`${n}_${t.name}`:t.name,r=Le(t.inputSchema);return{name:s,description:t.description??"",schema:r,async execute(o){const a=await e.callTool({name:t.name,arguments:o});if("isError"in a&&a.isError)throw new Error(vn(a.content));return Pn(a.content)}}}i(Ln,"createMcpTool");function Pn(t){return t.some(n=>n.type==="image")?t.filter(n=>n.type==="text"||n.type==="image").map(n=>{if(n.type==="text")return{type:"text",text:n.text};const s=n;return{type:"image",data:s.data,mimeType:s.mimeType}}):t.filter(n=>n.type==="text").map(n=>n.text).join(`
34
- `)}i(Pn,"formatToolResult");function vn(t){return t.filter(e=>e.type==="text").map(e=>e.text).join(`
35
- `)||"MCP tool execution error"}i(vn,"formatErrorContent");class Nn{static{i(this,"MCP")}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;const n=e?.tracer?.startSpan("mcp:connect",{type:"internal"});this.client=new Ye({name:"axle",version:"1.0.0"}),this.config.transport==="stdio"?this.transport=new Qe({command:this.config.command,args:this.config.args,env:this.config.env}):this.transport=new et(new URL(this.config.url),{requestInit:this.config.headers?{headers:this.config.headers}:void 0});try{await this.client.connect(this.transport),this._connected=!0,n?.end("ok")}catch(s){throw n?.end("error"),s}}async listTools(e){const n=this.assertConnected(),s=await this.fetchTools(n,e?.tracer);return Rn(s,n,e?.prefix)}async listToolDefinitions(e){const n=this.assertConnected(),s=await this.fetchTools(n,e?.tracer);return Cn(s,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,n){if(this.cachedMcpTools)return this.cachedMcpTools;n?.debug("mcp:listTools");const s=await e.listTools();return this.cachedMcpTools=s.tools.map(r=>({name:r.name,description:r.description,inputSchema:r.inputSchema})),this.cachedMcpTools}assertConnected(){if(!this._connected||!this.client)throw new Error("MCP not connected. Call connect() first.");return this.client}}const Pe={debug:0,info:1,warn:2,error:3};class Un{static{i(this,"Tracer")}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){const n=this.writers.indexOf(e);n!==-1&&this.writers.splice(n,1)}startSpan(e,n){const s={traceId:crypto.randomUUID(),spanId:crypto.randomUUID(),name:e,type:n?.type,startTime:performance.now(),status:"ok",attributes:{},events:[]};return this.writers.forEach(r=>r.onSpanStart(s)),new te(s,this)}async flush(){for(const e of this.writers)e.flush&&await e.flush()}_notifySpanEnd(e){this.writers.forEach(n=>n.onSpanEnd(e))}_notifySpanUpdate(e){this.writers.forEach(n=>n.onSpanUpdate?.(e))}_notifyEvent(e,n){this.writers.forEach(s=>s.onEvent?.(e,n))}_notifySpanStart(e){this.writers.forEach(n=>n.onSpanStart(e))}_notifyLLMStreamStart(e){this.writers.forEach(n=>n.onLLMStreamStart?.(e))}_notifyLLMStreamChunk(e,n){this.writers.forEach(s=>s.onLLMStreamChunk?.(e,n))}_notifyLLMStreamEnd(e,n){this.writers.forEach(s=>s.onLLMStreamEnd?.(e,n))}_shouldLog(e){return Pe[e]>=Pe[this._minLevel]}}class te{static{i(this,"Span")}data;tracer;ended=!1;llmStreamBuffer="";llmStreamActive=!1;constructor(e,n){this.data=e,this.tracer=n}startSpan(e,n){const s={traceId:this.data.traceId,spanId:crypto.randomUUID(),parentSpanId:this.data.spanId,name:e,type:n?.type,startTime:performance.now(),status:"ok",attributes:{},events:[]};return this.tracer._notifySpanStart(s),new te(s,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,n,s){if(this.ended||!this.tracer._shouldLog(n))return;const r={name:e,timestamp:performance.now(),level:n,attributes:s};this.data.events.push(r),this.tracer._notifyEvent(this.data,r)}debug(e,n){this.addEvent(e,"debug",n)}info(e,n){this.addEvent(e,"info",n)}warn(e,n){this.addEvent(e,"warn",n)}error(e,n){this.addEvent(e,"error",n)}setAttribute(e,n){this.ended||(this.data.attributes[e]=n,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))}startLLMStream(){this.ended||(this.llmStreamActive=!0,this.llmStreamBuffer="",this.tracer._notifyLLMStreamStart(this.data))}appendLLMStream(e){this.ended||!this.llmStreamActive||(this.llmStreamBuffer+=e,this.tracer._notifyLLMStreamChunk(this.data,e))}endLLMStream(e){if(this.ended||!this.llmStreamActive)return;this.llmStreamActive=!1;const n={...e,response:{...e.response,content:e.response.content??this.llmStreamBuffer}};this.data.result=n,this.tracer._notifyLLMStreamEnd(this.data,n)}}const ve={debug:0,info:1,warn:2,error:3};let Ne=!1;function Gn(){Ne||(le.use(tt()),Ne=!0)}i(Gn,"ensureMarkedInit");class Dn{static{i(this,"SimpleWriter")}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 ve[e]>=ve[this.minLevel]}isSpanVisible(e){return!(e.type==="internal"&&!this.showInternal)}findVisibleAncestor(e){let n=e.parentSpanId;for(;n;){const s=this.spans.get(n);if(!s)break;if(this.isSpanVisible(s))return s;n=s.parentSpanId}return null}calculateVisibleDepth(e){if(!this.isSpanVisible(e))return-1;const n=this.findVisibleAncestor(e);return n?(this.visibleDepths.get(n.spanId)??0)+1:0}formatTimestamp(){if(!this.showTimestamp)return"";const e=new Date,n=e.toTimeString().slice(0,8),s=e.getMilliseconds().toString().padStart(3,"0");return`[${n}.${s}] `}formatDuration(e){if(!this.showDuration||!e.endTime)return"";const n=e.endTime-e.startTime;return n<1e3?` (${Math.round(n)}ms)`:` (${(n/1e3).toFixed(2)}s)`}formatIndent(e){return" ".repeat(e)}formatSpanName(e){return e.type?`[${e.type}] ${e.name}`:e.name}renderMarkdown(e){return Gn(),le.parse(e).trimEnd()}onSpanStart(e){if(this.spans.set(e.spanId,e),!this.isSpanVisible(e))return;const s=this.calculateVisibleDepth(e);this.visibleDepths.set(e.spanId,s);const r=this.formatIndent(s),o=this.formatTimestamp(),a=this.formatSpanName(e);this.output(`${o}${r}START ${a}`)}onSpanEnd(e){if(this.spans.set(e.spanId,e),!this.isSpanVisible(e))return;const s=this.visibleDepths.get(e.spanId)??0,r=this.formatIndent(s),o=this.formatTimestamp(),a=this.formatDuration(e),l=this.formatSpanName(e),p=e.status==="error"?" [ERROR]":"";this.output(`${o}${r}END ${l}${a}${p}`)}onSpanUpdate(e){this.spans.set(e.spanId,e)}onEvent(e,n){if(!this.shouldShowEvent(n.level))return;this.spans.set(e.spanId,e);let s;if(this.isSpanVisible(e))s=this.visibleDepths.get(e.spanId)??0;else{const u=this.findVisibleAncestor(e);u?s=this.visibleDepths.get(u.spanId)??0:s=0}const r=this.formatIndent(s+1),o=this.formatTimestamp(),a=n.level.toUpperCase().padEnd(5),l=this.markdown&&n.attributes?.markdown===!0,p=n.attributes?Object.entries(n.attributes).filter(([u])=>u!=="markdown"):[];let d=n.name;l&&(d=this.renderMarkdown(d));let m=`${o}${r}${a} ${d}`;if(p.length>0){const u=p.map(([c,_])=>`${c}=${JSON.stringify(_)}`).join(" ");m+=` ${u}`}this.output(m)}onLLMStreamStart(e){if(this.spans.set(e.spanId,e),!this.isSpanVisible(e))return;const n=this.visibleDepths.get(e.spanId)??0,s=this.formatIndent(n+1),r=this.formatTimestamp();this.output(`${r}${s}INFO LLM streaming started`)}onLLMStreamChunk(e,n){}onLLMStreamEnd(e,n){if(this.spans.set(e.spanId,e),!this.isSpanVisible(e))return;const s=this.visibleDepths.get(e.spanId)??0,r=this.formatIndent(s+1),o=this.formatTimestamp(),a=[`model=${n.model}`];if(n.finishReason&&a.push(`finishReason=${n.finishReason}`),n.usage&&(n.usage.inputTokens!==void 0&&a.push(`inputTokens=${n.usage.inputTokens}`),n.usage.outputTokens!==void 0&&a.push(`outputTokens=${n.usage.outputTokens}`)),this.output(`${o}${r}INFO LLM complete ${a.join(" ")}`),this.shouldShowEvent("debug")&&n.response.content){const p=(typeof n.response.content=="string"?n.response.content:JSON.stringify(n.response.content,null,2)).split(`
36
- `);for(const d of p)this.output(`${o}${r}DEBUG ${d}`)}}}export{T as A,xt as D,pe as H,yt as I,A as M,Dn as S,Un as T,Ft as a,b,rt as c,Yt as d,me as e,Oe as f,st as g,lt as h,Nn as i,Mt as j,mn as k,hn as l,Dt as m,ge as n,Zt as o,gt as p,un as q,he as r,fe as s,V as t,pt as u,$n as v,On as w,kn as x,In as y};