@fifthrevision/axle 0.26.0 → 0.26.1

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.
@@ -886,6 +886,11 @@ interface Turn<TAnnotation extends Annotation = Annotation> {
886
886
  timing?: TimingInfo;
887
887
  /** Token usage accumulated for this turn, when available. */
888
888
  usage?: Stats;
889
+ /** Terminal model or provider error associated with this turn. */
890
+ error?: {
891
+ type: string;
892
+ message: string;
893
+ };
889
894
  }
890
895
  /**
891
896
  * Any renderable part within a turn.
@@ -1189,6 +1194,7 @@ type TurnEvent<TAnnotation extends Annotation = Annotation> = {
1189
1194
  event: TurnEvent<TAnnotation>;
1190
1195
  } | AnnotationEvent<TAnnotation> | {
1191
1196
  type: "error";
1197
+ turnId?: string;
1192
1198
  error: {
1193
1199
  type: string;
1194
1200
  message: string;
@@ -1 +1 @@
1
- const e=new Set(Object.keys({"session:restore":!0,"turn:user":!0,"turn:start":!0,"turn:end":!0,"compaction:start":!0,"compaction:end":!0,"part:start":!0,"text:delta":!0,"text:citation":!0,"thinking:delta":!0,"thinking:summary-delta":!0,"thinking:update":!0,"part:end":!0,"action:args-delta":!0,"action:running":!0,"action:progress":!0,"action:complete":!0,"action:error":!0,"action:child-event":!0,"annotation:start":!0,"annotation:update":!0,"annotation:end":!0,error:!0}));function t(t){return e.has(t.type)}var n=class e{_state;constructor(e){this._state={turns:e?.turns??[],sessionAnnotations:e?.sessionAnnotations}}get state(){return this._state}apply(e){return t(e)?this.applyTurnEvent(e):{handled:!1,state:this._state,event:e}}applyTurnEvent(t){switch(t.type){case`session:restore`:return this.replaceState({turns:t.turns??[],sessionAnnotations:t.sessionAnnotations},t);case`turn:user`:return this.replaceTurns([...this._state.turns,t.turn],t);case`turn:start`:{let e={id:t.turnId,owner:`agent`,parts:[],status:`streaming`,...t.timing?{timing:t.timing}:{}};return this.replaceTurns([...this._state.turns,e],t)}case`compaction:start`:{let e={id:t.id,owner:`agent`,parts:[{id:t.id,type:`compaction`}],status:`streaming`,...t.timing?{timing:t.timing}:{}};return this.replaceTurns([...this._state.turns,e],t)}case`compaction:end`:{if(t.outcome===`skipped`){let e=this._state.turns.filter(e=>e.id!==t.id);return e.length===this._state.turns.length?this.handled(t):this.replaceTurns(e,t)}let e=t.outcome===`complete`?`complete`:`error`,n=!1,r=this._state.turns.map(r=>r.id===t.id?(n=!0,{...r,status:e,parts:r.parts.map(e=>e.type===`compaction`&&t.record?{...e,record:t.record}:e),timing:t.timing??r.timing}):r);return n?this.replaceTurns(r,t):this.handled(t)}case`part:start`:return this.updateTurn(t.turnId,t,e=>({...e,parts:[...e.parts,t.part]}));case`text:delta`:return this.updatePart(t.turnId,t.partId,t,e=>e.type===`text`?{...e,text:e.text+t.delta}:e);case`text:citation`:return this.updatePart(t.turnId,t.partId,t,e=>e.type===`text`?{...e,citations:[...e.citations??[],t.citation]}:e);case`thinking:delta`:return this.updatePart(t.turnId,t.partId,t,e=>e.type===`thinking`?{...e,text:(e.text??``)+t.delta}:e);case`thinking:summary-delta`:return this.updatePart(t.turnId,t.partId,t,e=>e.type===`thinking`?{...e,summary:(e.summary??``)+t.delta}:e);case`thinking:update`:return this.updatePart(t.turnId,t.partId,t,e=>e.type===`thinking`?{...e,...t.redacted===void 0?{}:{redacted:t.redacted},...t.continuity?{continuity:t.continuity}:{},...t.providerMetadata?{providerMetadata:t.providerMetadata}:{}}:e);case`part:end`:return this.updatePart(t.turnId,t.partId,t,e=>({...e,timing:t.timing??e.timing}));case`action:args-delta`:return this.updatePart(t.turnId,t.partId,t,e=>e.type!==`action`||e.kind!==`tool`?e:{...e,detail:{...e.detail,pendingArgs:t.accumulated}});case`action:running`:return this.updatePart(t.turnId,t.partId,t,e=>{if(e.type!==`action`)return e;if(e.kind===`tool`){let{pendingArgs:n,...r}=e.detail;return{...e,status:`running`,detail:t.parameters?{...r,parameters:t.parameters}:r}}return{...e,status:`running`}});case`action:progress`:return this.updatePart(t.turnId,t.partId,t,e=>{if(e.type!==`action`)return e;let n=e.detail.result,r=n?.type===`in-progress`?n.content:``;return{...e,detail:{...e.detail,result:{type:`in-progress`,content:r+t.chunk}}}});case`action:complete`:return this.updatePart(t.turnId,t.partId,t,e=>e.type===`action`?{...e,status:`complete`,detail:{...e.detail,result:t.result},timing:t.timing??e.timing}:e);case`action:error`:return this.updatePart(t.turnId,t.partId,t,e=>e.type===`action`?{...e,status:`error`,detail:{...e.detail,result:{type:`error`,error:t.error}},timing:t.timing??e.timing}:e);case`turn:end`:return this.updateTurn(t.turnId,t,e=>({...e,status:t.status,usage:t.usage,timing:t.timing??e.timing}));case`annotation:start`:return this.addAnnotation(t);case`annotation:update`:return this.replaceAnnotation(t,!1);case`annotation:end`:return this.replaceAnnotation(t,!0);case`error`:return this.handled(t);case`action:child-event`:return this.updatePart(t.turnId,t.partId,t,n=>{if(n.type!==`action`||n.kind!==`agent`)return n;let r=new e({turns:n.detail.children}).apply(t.event);return{...n,detail:{...n.detail,children:r.state.turns}}});default:return this.handled(t)}}replaceState(e,t){return this._state=e,this.handled(t)}replaceTurns(e,t){return this.replaceState({...this._state,turns:e},t)}updateTurn(e,t,n){let r=!1,i=this._state.turns.map(t=>{if(t.id!==e)return t;let i=n(t);return i===t?t:(r=!0,i)});return r?this.replaceTurns(i,t):this.handled(t)}updatePart(e,t,n,r){return this.updateTurn(e,n,e=>{let n=!1,i=e.parts.map(e=>{if(e.id!==t)return e;let i=r(e);return i===e?e:(n=!0,i)});return n?{...e,parts:i}:e})}addAnnotation(e){let t=e.target,n=r(e.annotation);return n?t.type===`session`?this.replaceState({...this._state,sessionAnnotations:[...this._state.sessionAnnotations??[],n]},e):t.type===`turn`?this.updateTurn(t.turnId,e,e=>({...e,annotations:[...e.annotations??[],n]})):this.updatePart(t.turnId,t.partId,e,e=>({...e,annotations:[...e.annotations??[],n]})):this.handled(e)}replaceAnnotation(e,t){let n=e.target,a=r(e.annotation,t);if(!a)return this.handled(e);if(n.type===`session`){let t=i(this._state.sessionAnnotations,a);return t?this.replaceState({...this._state,sessionAnnotations:t},e):this.handled(e)}return n.type===`turn`?this.updateTurn(n.turnId,e,e=>{let t=i(e.annotations,a);return t?{...e,annotations:t}:e}):this.updatePart(n.turnId,n.partId,e,e=>{let t=i(e.annotations,a);return t?{...e,annotations:t}:e})}handled(e){return{handled:!0,state:this._state,event:e}}};function r(e,t=!1){if(!e)return;let n=t?e.status??`complete`:e.status,r={...e,placement:e.placement??`after`};return n?{...r,status:n}:r}function i(e,t){if(!e)return;let n=!1,r=e.map(e=>e.id===t.id?(n=!0,t):e);return n?r:void 0}export{n as t};
1
+ const e=new Set(Object.keys({"session:restore":!0,"turn:user":!0,"turn:start":!0,"turn:end":!0,"compaction:start":!0,"compaction:end":!0,"part:start":!0,"text:delta":!0,"text:citation":!0,"thinking:delta":!0,"thinking:summary-delta":!0,"thinking:update":!0,"part:end":!0,"action:args-delta":!0,"action:running":!0,"action:progress":!0,"action:complete":!0,"action:error":!0,"action:child-event":!0,"annotation:start":!0,"annotation:update":!0,"annotation:end":!0,error:!0}));function t(t){return e.has(t.type)}var n=class e{_state;constructor(e){this._state={turns:e?.turns??[],sessionAnnotations:e?.sessionAnnotations}}get state(){return this._state}apply(e){return t(e)?this.applyTurnEvent(e):{handled:!1,state:this._state,event:e}}applyTurnEvent(t){switch(t.type){case`session:restore`:return this.replaceState({turns:t.turns??[],sessionAnnotations:t.sessionAnnotations},t);case`turn:user`:return this.replaceTurns([...this._state.turns,t.turn],t);case`turn:start`:{let e={id:t.turnId,owner:`agent`,parts:[],status:`streaming`,...t.timing?{timing:t.timing}:{}};return this.replaceTurns([...this._state.turns,e],t)}case`compaction:start`:{let e={id:t.id,owner:`agent`,parts:[{id:t.id,type:`compaction`}],status:`streaming`,...t.timing?{timing:t.timing}:{}};return this.replaceTurns([...this._state.turns,e],t)}case`compaction:end`:{if(t.outcome===`skipped`){let e=this._state.turns.filter(e=>e.id!==t.id);return e.length===this._state.turns.length?this.handled(t):this.replaceTurns(e,t)}let e=t.outcome===`complete`?`complete`:`error`,n=!1,r=this._state.turns.map(r=>r.id===t.id?(n=!0,{...r,status:e,parts:r.parts.map(e=>e.type===`compaction`&&t.record?{...e,record:t.record}:e),timing:t.timing??r.timing}):r);return n?this.replaceTurns(r,t):this.handled(t)}case`part:start`:return this.updateTurn(t.turnId,t,e=>({...e,parts:[...e.parts,t.part]}));case`text:delta`:return this.updatePart(t.turnId,t.partId,t,e=>e.type===`text`?{...e,text:e.text+t.delta}:e);case`text:citation`:return this.updatePart(t.turnId,t.partId,t,e=>e.type===`text`?{...e,citations:[...e.citations??[],t.citation]}:e);case`thinking:delta`:return this.updatePart(t.turnId,t.partId,t,e=>e.type===`thinking`?{...e,text:(e.text??``)+t.delta}:e);case`thinking:summary-delta`:return this.updatePart(t.turnId,t.partId,t,e=>e.type===`thinking`?{...e,summary:(e.summary??``)+t.delta}:e);case`thinking:update`:return this.updatePart(t.turnId,t.partId,t,e=>e.type===`thinking`?{...e,...t.redacted===void 0?{}:{redacted:t.redacted},...t.continuity?{continuity:t.continuity}:{},...t.providerMetadata?{providerMetadata:t.providerMetadata}:{}}:e);case`part:end`:return this.updatePart(t.turnId,t.partId,t,e=>({...e,timing:t.timing??e.timing}));case`action:args-delta`:return this.updatePart(t.turnId,t.partId,t,e=>e.type!==`action`||e.kind!==`tool`?e:{...e,detail:{...e.detail,pendingArgs:t.accumulated}});case`action:running`:return this.updatePart(t.turnId,t.partId,t,e=>{if(e.type!==`action`)return e;if(e.kind===`tool`){let{pendingArgs:n,...r}=e.detail;return{...e,status:`running`,detail:t.parameters?{...r,parameters:t.parameters}:r}}return{...e,status:`running`}});case`action:progress`:return this.updatePart(t.turnId,t.partId,t,e=>{if(e.type!==`action`)return e;let n=e.detail.result,r=n?.type===`in-progress`?n.content:``;return{...e,detail:{...e.detail,result:{type:`in-progress`,content:r+t.chunk}}}});case`action:complete`:return this.updatePart(t.turnId,t.partId,t,e=>e.type===`action`?{...e,status:`complete`,detail:{...e.detail,result:t.result},timing:t.timing??e.timing}:e);case`action:error`:return this.updatePart(t.turnId,t.partId,t,e=>e.type===`action`?{...e,status:`error`,detail:{...e.detail,result:{type:`error`,error:t.error}},timing:t.timing??e.timing}:e);case`turn:end`:return this.updateTurn(t.turnId,t,e=>({...e,status:t.status,usage:t.usage,timing:t.timing??e.timing}));case`annotation:start`:return this.addAnnotation(t);case`annotation:update`:return this.replaceAnnotation(t,!1);case`annotation:end`:return this.replaceAnnotation(t,!0);case`error`:return t.turnId?this.updateTurn(t.turnId,t,e=>({...e,error:t.error})):this.handled(t);case`action:child-event`:return this.updatePart(t.turnId,t.partId,t,n=>{if(n.type!==`action`||n.kind!==`agent`)return n;let r=new e({turns:n.detail.children}).apply(t.event);return{...n,detail:{...n.detail,children:r.state.turns}}});default:return this.handled(t)}}replaceState(e,t){return this._state=e,this.handled(t)}replaceTurns(e,t){return this.replaceState({...this._state,turns:e},t)}updateTurn(e,t,n){let r=!1,i=this._state.turns.map(t=>{if(t.id!==e)return t;let i=n(t);return i===t?t:(r=!0,i)});return r?this.replaceTurns(i,t):this.handled(t)}updatePart(e,t,n,r){return this.updateTurn(e,n,e=>{let n=!1,i=e.parts.map(e=>{if(e.id!==t)return e;let i=r(e);return i===e?e:(n=!0,i)});return n?{...e,parts:i}:e})}addAnnotation(e){let t=e.target,n=r(e.annotation);return n?t.type===`session`?this.replaceState({...this._state,sessionAnnotations:[...this._state.sessionAnnotations??[],n]},e):t.type===`turn`?this.updateTurn(t.turnId,e,e=>({...e,annotations:[...e.annotations??[],n]})):this.updatePart(t.turnId,t.partId,e,e=>({...e,annotations:[...e.annotations??[],n]})):this.handled(e)}replaceAnnotation(e,t){let n=e.target,a=r(e.annotation,t);if(!a)return this.handled(e);if(n.type===`session`){let t=i(this._state.sessionAnnotations,a);return t?this.replaceState({...this._state,sessionAnnotations:t},e):this.handled(e)}return n.type===`turn`?this.updateTurn(n.turnId,e,e=>{let t=i(e.annotations,a);return t?{...e,annotations:t}:e}):this.updatePart(n.turnId,n.partId,e,e=>{let t=i(e.annotations,a);return t?{...e,annotations:t}:e})}handled(e){return{handled:!0,state:this._state,event:e}}};function r(e,t=!1){if(!e)return;let n=t?e.status??`complete`:e.status,r={...e,placement:e.placement??`after`};return n?{...r,status:n}:r}function i(e,t){if(!e)return;let n=!1,r=e.map(e=>e.id===t.id?(n=!0,t):e);return n?r:void 0}export{n as t};
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as ToolResultPart, A as TurnMetadata, At as SpanResult, B as Citation, C as ProviderToolAction, Ct as LLMRequest, Dt as SpanData, E as ThinkingPart, Et as Span, F as AxleAssistantMessage, Ft as TraceWriter, G as ContentPartFile, H as CitationSource, I as AxleMessage, J as ContentPartThinking, K as ContentPartProviderTool, L as AxleToolCallMessage, M as TurnStatus, Mt as SpanType, N as CompactionRecord, Nt as TokenUsage, O as ToolAction, Ot as SpanEvent, P as validateCompactedMessages, Pt as ToolResult, Q as ThinkingContinuity, R as AxleToolCallResult, S as FilePart, St as EventLevel, T as TextPart, Tt as LLMResult, U as ContentPart, V as CitationOutputSpan, W as ContentPartCitation, X as DocumentLocator, Y as ContentPartToolCall, Z as MessageMetadata, _ as Annotation, _t as ResolvedFileSource, at as ModelResult, b as CitationPart, bt as TokenStats, c as ToolContext, ct as ResolvedProviderTool, d as ToolRegistry, dt as FileInfo, et as AIProvider, f as AnnotationEvent, ft as FileKind, g as ActionResult, gt as FileResolver, h as ActionPart, ht as FileResolveRequest, i as TurnAccumulatorState, it as ModelError, j as TurnPart, jt as SpanStatus, k as Turn, kt as SpanOptions, l as ToolDefinition, lt as ToolChoice, m as TurnEvent, mt as FileResolveFormat, n as TurnAccumulator, nt as AxleStopReason, o as ExecutableTool, ot as ProviderClientOptions, p as AnnotationTarget, pt as FileProviderId, q as ContentPartText, r as TurnAccumulatorResult, rt as ContextUsage, s as ProviderTool, st as ProviderOptions, t as AccumulatableEvent, tt as AxleModelRequestOptions, u as ToolProgressChunk, ut as DeferredFileInfo, v as AnnotationPlacement, vt as loadFileContent, w as SubagentAction, wt as LLMResponse, x as CompactionPart, xt as UsageEntry, y as AnnotationStatus, yt as Stats, z as AxleUserMessage } from "./accumulator-BQ_1i4qv.js";
1
+ import { $ as ToolResultPart, A as TurnMetadata, At as SpanResult, B as Citation, C as ProviderToolAction, Ct as LLMRequest, Dt as SpanData, E as ThinkingPart, Et as Span, F as AxleAssistantMessage, Ft as TraceWriter, G as ContentPartFile, H as CitationSource, I as AxleMessage, J as ContentPartThinking, K as ContentPartProviderTool, L as AxleToolCallMessage, M as TurnStatus, Mt as SpanType, N as CompactionRecord, Nt as TokenUsage, O as ToolAction, Ot as SpanEvent, P as validateCompactedMessages, Pt as ToolResult, Q as ThinkingContinuity, R as AxleToolCallResult, S as FilePart, St as EventLevel, T as TextPart, Tt as LLMResult, U as ContentPart, V as CitationOutputSpan, W as ContentPartCitation, X as DocumentLocator, Y as ContentPartToolCall, Z as MessageMetadata, _ as Annotation, _t as ResolvedFileSource, at as ModelResult, b as CitationPart, bt as TokenStats, c as ToolContext, ct as ResolvedProviderTool, d as ToolRegistry, dt as FileInfo, et as AIProvider, f as AnnotationEvent, ft as FileKind, g as ActionResult, gt as FileResolver, h as ActionPart, ht as FileResolveRequest, i as TurnAccumulatorState, it as ModelError, j as TurnPart, jt as SpanStatus, k as Turn, kt as SpanOptions, l as ToolDefinition, lt as ToolChoice, m as TurnEvent, mt as FileResolveFormat, n as TurnAccumulator, nt as AxleStopReason, o as ExecutableTool, ot as ProviderClientOptions, p as AnnotationTarget, pt as FileProviderId, q as ContentPartText, r as TurnAccumulatorResult, rt as ContextUsage, s as ProviderTool, st as ProviderOptions, t as AccumulatableEvent, tt as AxleModelRequestOptions, u as ToolProgressChunk, ut as DeferredFileInfo, v as AnnotationPlacement, vt as loadFileContent, w as SubagentAction, wt as LLMResponse, x as CompactionPart, xt as UsageEntry, y as AnnotationStatus, yt as Stats, z as AxleUserMessage } from "./accumulator-B2Zr6tOY.js";
2
2
  import * as z$2 from "zod";
3
3
  import { ZodObject, z } from "zod";
4
4
 
@@ -360,20 +360,24 @@ type ToolCallResult = {
360
360
  };
361
361
  };
362
362
  type ToolCallCallback = (name: string, parameters: Record<string, unknown>, ctx: ToolContext) => Promise<ToolCallResult | null | undefined>;
363
- type GenerateError = {
363
+ type AxleFailure = {
364
364
  kind: "model";
365
365
  error: ModelError;
366
+ message: string;
366
367
  } | {
367
368
  kind: "tool";
368
369
  error: {
369
370
  name: string;
370
371
  message: string;
371
372
  };
373
+ message: string;
372
374
  } | {
373
375
  kind: "parse";
374
376
  error: unknown;
375
377
  message: string;
376
378
  };
379
+ /** @deprecated Use AxleFailure. */
380
+ type GenerateError = AxleFailure;
377
381
  type GenerateResult<TResponse = AxleAssistantMessage> = {
378
382
  ok: true;
379
383
  response: TResponse;
@@ -392,7 +396,7 @@ type GenerateResult<TResponse = AxleAssistantMessage> = {
392
396
  response?: undefined;
393
397
  final?: AxleAssistantMessage;
394
398
  messages: AxleMessage[];
395
- error: GenerateError;
399
+ error: AxleFailure;
396
400
  usage?: Stats;
397
401
  /**
398
402
  * Present on a `parse` error when a loop limit ended an Instruct call
@@ -586,7 +590,7 @@ interface AgentResult<T = string> {
586
590
  interface AgentErrorResult {
587
591
  ok: false;
588
592
  response?: undefined;
589
- error: GenerateError;
593
+ error: AxleFailure;
590
594
  turn: Turn | undefined;
591
595
  usage: Stats;
592
596
  }
@@ -833,7 +837,6 @@ declare function gemini(apiKey: string, options?: ProviderClientOptions): AIProv
833
837
  //#region src/providers/gemini/index.d.ts
834
838
  declare const Gemini: {
835
839
  readonly Models: {
836
- readonly GEMINI_3_5_PRO: "gemini-3.5-pro";
837
840
  readonly GEMINI_3_5_FLASH: "gemini-3.5-flash";
838
841
  readonly GEMINI_3_1_PRO_PREVIEW: "gemini-3.1-pro-preview";
839
842
  readonly GEMINI_3_1_PRO: "gemini-3.1-pro-preview";
@@ -1000,7 +1003,7 @@ type StreamEvent = {
1000
1003
  output?: unknown;
1001
1004
  } | {
1002
1005
  type: "error";
1003
- error: GenerateError;
1006
+ error: AxleFailure;
1004
1007
  };
1005
1008
  type StreamEventCallback = (event: StreamEvent) => void;
1006
1009
  interface StreamParams extends AxleModelRequestOptions {
@@ -1240,4 +1243,4 @@ declare function createStats(): Stats;
1240
1243
  declare function addStats(total: Stats, usage?: Stats): void;
1241
1244
  declare function mergeStats(...usages: Array<Stats | undefined>): Stats;
1242
1245
  //#endregion
1243
- export { type AIProvider, type AccumulatableEvent, type ActionPart, type ActionResult, Agent, type AgentConfig, type AgentDefinition, type AgentDefinitionRequestOptions, type AgentDefinitionResolver, type AgentErrorResult, type AgentHandle, type AgentMemory, type AgentResult, type AgentSession, type Annotation, type AnnotationEvent, type AnnotationPlacement, type AnnotationStatus, type AnnotationTarget, Anthropic, AxleAbortError, AxleAgentAbortError, type AxleAssistantMessage, type AxleConfiguration, AxleError, type AxleMessage, type AxleModelRequestOptions, AxleStopReason, type AxleToolCallMessage, type AxleToolCallResult, AxleToolFatalError, type AxleUserMessage, type BraveWebSearchOptions, type ChatCompletionsOptions, type ChatCompletionsVendor, type Citation, type CitationOutputSpan, type CitationPart, type CitationSource, type CompactionCallback, type CompactionPart, type CompactionRecord, type ContentPart, type ContentPartCitation, type ContentPartFile, type ContentPartProviderTool, type ContentPartText, type ContentPartThinking, type ContentPartToolCall, type ContextUsage, type CreateAgentToolOptions, type DeferredFileInfo, type DocumentLocator, type EventLevel, type ExecutableTool, type FileInfo, type FileKind, type FilePart, type FileProviderId, type FileResolveFormat, type FileResolveRequest, type FileResolver, type FileStore, Gemini, type GenerateInstructParams, type GenerateInstructResult, type GenerateParams, type Handle, History, Instruct, type InstructContextSection, type InstructInputs, type InstructOptions, type InstructResponse, InstructVariableError, type InstructVarsMode, type LLMRequest, type LLMResponse, type LLMResult, type LogEntry, type LogFn, LogWriter, MCP, type MCPConfig, type MCPHttpConfig, type MCPStdioConfig, type MaybePromise, type MemoryContext, type MessageMetadata, type ObservabilityOptions, OpenAI, type OutputSchema, type ParallelToolResult, type ParallelizeOptions, type ParsedSchema, type ProviderClientOptions, type ProviderDefinition, type ProviderOptions, type ProviderTool, type ProviderToolAction, type ProviderToolDefinitionRef, type RecallResult, type ResolvedAgentDefinition, type ResolvedFileSource, type SavedAgent, type SendMessageOptions, SimpleWriter, type SimpleWriterOptions, type Span, type SpanData, type SpanEvent, type SpanOptions, type SpanResult, type SpanStatus, type SpanType, type Stats, type StreamEvent, type StreamEventCallback, type StreamHandle, type StreamInstructHandle, type StreamInstructParams, type StreamInstructResult, type StreamParams, type StreamResult, type SubagentAction, TaskError, type TextPart, type ThinkingContinuity, type ThinkingPart, type TokenStats, type TokenUsage, type ToolAction, type ToolChoice, type ToolContext, type ToolDefinition, type ToolDefinitionRef, type ToolProgressChunk, ToolRegistry, type ToolResult, type ToolResultPart, type TraceWriter, Tracer, type TracerOptions, type Turn, TurnAccumulator, type TurnAccumulatorResult, type TurnAccumulatorState, type TurnEvent, TurnEventBuilder, type TurnEventCallback, type TurnMetadata, type TurnPart, type TurnStatus, type UsageEntry, type WebSearchBackend, type WebSearchBackendContext, type WebSearchRequest, type WebSearchResponse, type WebSearchResult, addStats, anthropic, braveWebSearch, chatCompletions, configureAxle, createAgentConfig, createAgentTool, createStats, estimateContextUsage, gemini, generate, generateTurn, loadFileContent, mergeStats, openai, parallelize, parseResponse, stream, validateCompactedMessages };
1246
+ export { type AIProvider, type AccumulatableEvent, type ActionPart, type ActionResult, Agent, type AgentConfig, type AgentDefinition, type AgentDefinitionRequestOptions, type AgentDefinitionResolver, type AgentErrorResult, type AgentHandle, type AgentMemory, type AgentResult, type AgentSession, type Annotation, type AnnotationEvent, type AnnotationPlacement, type AnnotationStatus, type AnnotationTarget, Anthropic, AxleAbortError, AxleAgentAbortError, type AxleAssistantMessage, type AxleConfiguration, AxleError, type AxleFailure, type AxleMessage, type AxleModelRequestOptions, AxleStopReason, type AxleToolCallMessage, type AxleToolCallResult, AxleToolFatalError, type AxleUserMessage, type BraveWebSearchOptions, type ChatCompletionsOptions, type ChatCompletionsVendor, type Citation, type CitationOutputSpan, type CitationPart, type CitationSource, type CompactionCallback, type CompactionPart, type CompactionRecord, type ContentPart, type ContentPartCitation, type ContentPartFile, type ContentPartProviderTool, type ContentPartText, type ContentPartThinking, type ContentPartToolCall, type ContextUsage, type CreateAgentToolOptions, type DeferredFileInfo, type DocumentLocator, type EventLevel, type ExecutableTool, type FileInfo, type FileKind, type FilePart, type FileProviderId, type FileResolveFormat, type FileResolveRequest, type FileResolver, type FileStore, Gemini, type GenerateError, type GenerateInstructParams, type GenerateInstructResult, type GenerateParams, type Handle, History, Instruct, type InstructContextSection, type InstructInputs, type InstructOptions, type InstructResponse, InstructVariableError, type InstructVarsMode, type LLMRequest, type LLMResponse, type LLMResult, type LogEntry, type LogFn, LogWriter, MCP, type MCPConfig, type MCPHttpConfig, type MCPStdioConfig, type MaybePromise, type MemoryContext, type MessageMetadata, type ObservabilityOptions, OpenAI, type OutputSchema, type ParallelToolResult, type ParallelizeOptions, type ParsedSchema, type ProviderClientOptions, type ProviderDefinition, type ProviderOptions, type ProviderTool, type ProviderToolAction, type ProviderToolDefinitionRef, type RecallResult, type ResolvedAgentDefinition, type ResolvedFileSource, type SavedAgent, type SendMessageOptions, SimpleWriter, type SimpleWriterOptions, type Span, type SpanData, type SpanEvent, type SpanOptions, type SpanResult, type SpanStatus, type SpanType, type Stats, type StreamEvent, type StreamEventCallback, type StreamHandle, type StreamInstructHandle, type StreamInstructParams, type StreamInstructResult, type StreamParams, type StreamResult, type SubagentAction, TaskError, type TextPart, type ThinkingContinuity, type ThinkingPart, type TokenStats, type TokenUsage, type ToolAction, type ToolChoice, type ToolContext, type ToolDefinition, type ToolDefinitionRef, type ToolProgressChunk, ToolRegistry, type ToolResult, type ToolResultPart, type TraceWriter, Tracer, type TracerOptions, type Turn, TurnAccumulator, type TurnAccumulatorResult, type TurnAccumulatorState, type TurnEvent, TurnEventBuilder, type TurnEventCallback, type TurnMetadata, type TurnPart, type TurnStatus, type UsageEntry, type WebSearchBackend, type WebSearchBackendContext, type WebSearchRequest, type WebSearchResponse, type WebSearchResult, addStats, anthropic, braveWebSearch, chatCompletions, configureAxle, createAgentConfig, createAgentTool, createStats, estimateContextUsage, gemini, generate, generateTurn, loadFileContent, mergeStats, openai, parallelize, parseResponse, stream, validateCompactedMessages };
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
- import{t as e}from"./accumulator-jZHrnyOF.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-CT626Bau.js";import*as c from"zod";import l,{z as u}from"zod";import{Client as d}from"@modelcontextprotocol/sdk/client/index.js";import{StdioClientTransport as f}from"@modelcontextprotocol/sdk/client/stdio.js";import{StreamableHTTPClientTransport as p}from"@modelcontextprotocol/sdk/client/streamableHttp.js";import m from"@anthropic-ai/sdk";import"glob";import h from"mime";import{access as g,readFile as _,stat as v}from"node:fs/promises";import{extname as y,resolve as b}from"node:path";import{FinishReason as x,FunctionCallingConfigMode as S,GoogleGenAI as C}from"@google/genai";import w from"openai";import T from"chalk";import{marked as E}from"marked";let D={};function O(e){D={...D,...e}}function k(){return{...D}}var A=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:j(this.cause)}:{}}}};function j(e){return e instanceof Error?{name:e.name,message:e.message,...e.stack?{stack:e.stack}:{},...`cause`in e&&e.cause?{cause:j(e.cause)}:{}}:e}var M=class e extends A{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}:{}}}},N=class e extends M{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}:{}}}},P=class e extends A{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 F(e){let t=(e,t)=>{throw new A(e,{code:`COMPACTION_INVALID_MESSAGES`,details:t})},n=new Set;for(let r=0;r<e.length;r++){let i=e[r];switch(n.size>0&&i.role!==`tool`&&t(`Compacted messages interleave a "${i.role}" message before tool calls are answered: ${[...n].join(`, `)}`,{messageIndex:r,toolCallIds:[...n]}),i.role){case`user`:break;case`assistant`:for(let e of i.content)e.type===`tool-call`&&(n.has(e.id)&&t(`Compacted messages repeat unanswered tool call id "${e.id}"`,{messageIndex:r,toolCallId:e.id}),n.add(e.id));break;case`tool`:for(let e of i.content)n.has(e.id)||t(`Compacted messages have a tool result for id "${e.id}" with no preceding tool call`,{messageIndex:r,toolCallId:e.id}),n.delete(e.id);break;default:t(`Compacted messages include a message with unknown role "${i.role}"`,{messageIndex:r})}}n.size>0&&t(`Compacted messages end with unanswered tool calls: ${[...n].join(`, `)}`,{toolCallIds:[...n]})}function ee(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 I(e){return typeof e==`string`?e:e.filter(e=>e.type===`text`).map(e=>e.text).join(`
1
+ import{t as e}from"./accumulator-BQuyGJN_.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-CPMQlthm.js";import*as c from"zod";import l,{z as u}from"zod";import{Client as d}from"@modelcontextprotocol/sdk/client/index.js";import{StdioClientTransport as f}from"@modelcontextprotocol/sdk/client/stdio.js";import{StreamableHTTPClientTransport as p}from"@modelcontextprotocol/sdk/client/streamableHttp.js";import m from"@anthropic-ai/sdk";import"glob";import h from"mime";import{access as g,readFile as _,stat as v}from"node:fs/promises";import{extname as y,resolve as b}from"node:path";import{FinishReason as x,FunctionCallingConfigMode as S,GoogleGenAI as C}from"@google/genai";import w from"openai";import T from"chalk";import{marked as E}from"marked";let D={};function O(e){D={...D,...e}}function k(){return{...D}}var A=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:j(this.cause)}:{}}}};function j(e){return e instanceof Error?{name:e.name,message:e.message,...e.stack?{stack:e.stack}:{},...`cause`in e&&e.cause?{cause:j(e.cause)}:{}}:e}var M=class e extends A{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}:{}}}},N=class e extends M{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}:{}}}},P=class e extends A{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 F(e){let t=(e,t)=>{throw new A(e,{code:`COMPACTION_INVALID_MESSAGES`,details:t})},n=new Set;for(let r=0;r<e.length;r++){let i=e[r];switch(n.size>0&&i.role!==`tool`&&t(`Compacted messages interleave a "${i.role}" message before tool calls are answered: ${[...n].join(`, `)}`,{messageIndex:r,toolCallIds:[...n]}),i.role){case`user`:break;case`assistant`:for(let e of i.content)e.type===`tool-call`&&(n.has(e.id)&&t(`Compacted messages repeat unanswered tool call id "${e.id}"`,{messageIndex:r,toolCallId:e.id}),n.add(e.id));break;case`tool`:for(let e of i.content)n.has(e.id)||t(`Compacted messages have a tool result for id "${e.id}" with no preceding tool call`,{messageIndex:r,toolCallId:e.id}),n.delete(e.id);break;default:t(`Compacted messages include a message with unknown role "${i.role}"`,{messageIndex:r})}}n.size>0&&t(`Compacted messages end with unanswered tool calls: ${[...n].join(`, `)}`,{toolCallIds:[...n]})}function ee(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 I(e){return typeof e==`string`?e:e.filter(e=>e.type===`text`).map(e=>e.text).join(`
2
2
 
3
3
  `)}function L(e){return e.filter(e=>e.type===`thinking`).map(e=>e.text??``).join(`
4
4
 
5
- `)}function te(e){return e.filter(e=>e.type===`tool-call`)}function ne(e){return e.filter(e=>e.type===`provider-tool`)}function re(e){let t=[];for(let n of e)(n.type===`text`&&n.citations||n.type===`citation`)&&t.push(...n.citations);return t}function ie(e,t=500){return e.length>t?`${e.slice(0,t)}… (${e.length} chars)`:e}function ae(e,t=600){if(e.length<=t)return e;let n=Math.floor(t/2);return`${e.slice(0,n)}…[${e.length} chars]…${e.slice(-n)}`}var oe=class{log;constructor(e){this.log=e}onSpanStart(){}onSpanEnd(e){let t=e.status===`error`?`error`:e.type===`tool`||e.type===`workflow`?`info`:`debug`;this.log({level:t,message:e.name,fields:{...e.attributes,type:e.type,status:e.status,traceId:e.traceId,spanId:e.spanId,...e.parentSpanId?{parentSpanId:e.parentSpanId}:{},...e.endTime===void 0?{}:{durationMs:Math.round(e.endTime-e.startTime)}}})}onEvent(e,t){this.log({level:t.level,message:t.name,fields:{traceId:e.traceId,spanId:e.spanId,name:e.name,...t.attributes}})}};function se(e,t,n){if(!n)return;let r=ie(n);e?.info(t,{text:r}),r!==n&&e?.debug(t,{text:n})}function ce(e){let t=z(e.system??``),n=me(e.tools),r=me(e.mcpTools),i=he(e.providerTools),a=e.messages.reduce((e,t)=>e+le(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 le(e){switch(e.role){case`user`:return ue(e.content);case`assistant`:return ue(e.content);case`tool`:return e.content.reduce((e,t)=>e+fe(t),0)}}function ue(e){return typeof e==`string`?z(e):e.reduce((e,t)=>e+de(t),0)}function de(e){switch(e.type){case`text`:return z(e.text);case`thinking`:return z(e.summary??e.text??``);case`tool-call`:return z(e.name)+R(e.parameters);case`provider-tool`:return z(e.name)+R(e.input)+R(e.output);case`citation`:return R(e.citations);case`file`:return R(e.file)}}function fe(e){return z(e.name)+pe(e.content)}function pe(e){return typeof e==`string`?z(e):e.reduce((e,t)=>t.type===`text`?e+z(t.text):e+R(t.file),0)}function me(e){let t=e?.map(ge)??[];return t.length===0?0:R({tools:t})}function he(e){return!e||e.length===0?0:R({providerTools:e})}function ge(e){try{return{name:e.name,description:e.description,parameters:l.toJSONSchema(e.schema)}}catch{return{name:e.name,description:e.description}}}function R(e){return e==null?0:z(JSON.stringify(e))}function z(e){return e?Math.ceil(e.length/3):0}function B(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(ve).join(` | `),t[0]]}if(e instanceof c.ZodLiteral){let t=e.value;return[ve(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]=B(t);return[`object array`,[e,e]]}else if(t instanceof c.ZodEnum||t instanceof c.ZodLiteral){let[e,n]=B(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]=B(r);n[e]=t}return[`JSON object`,n]}if(e instanceof c.ZodOptional){let[t,n]=B(e.unwrap());return[`${t} | undefined`,n]}throw Error(`Unsupported Zod schema: ${e.constructor.name}`)}function _e(e){if(e instanceof c.ZodObject)return Object.entries(e.shape).map(([e,t])=>{let[n]=B(t);return[e,n]});let[t]=B(e);return[[`response`,t]]}function ve(e){return typeof e==`string`?JSON.stringify(e):String(e)}function ye(e,t){if(!t)return e;let n=be(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 be(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 xe(e,t={}){if(typeof e==`string`)return{message:{role:`user`,id:crypto.randomUUID(),content:[{type:`text`,text:e}],...t.metadata?{metadata:t.metadata}:{}},parse:e=>Se(e,void 0)};let n=e.render(),r=e.files,i=e.schema,a=t.metadata??e.metadata;return{message:{role:`user`,id:crypto.randomUUID(),content:ee({text:n,files:r}),...a?{metadata:a}:{}},parse:e=>Se(e,i)}}function Se(e,t){return e?ye(I(e.content),t):null}function V(){return{in:0,out:0}}function H(e,t){t&&(e.in+=t.in??0,e.out+=t.out??0,G(e,`cachedIn`,t.cachedIn),G(e,`cacheWriteIn`,t.cacheWriteIn),G(e,`reasoningOut`,t.reasoningOut),t.breakdown?.length&&(e.breakdown=we(e.breakdown,t.breakdown)))}function U(...e){let t=V();for(let n of e)H(t,n);return t}function Ce(e,t){return{...e,breakdown:[{provider:t.provider,model:t.model,in:e.in,out:e.out,...e.cachedIn===void 0?{}:{cachedIn:e.cachedIn},...e.cacheWriteIn===void 0?{}:{cacheWriteIn:e.cacheWriteIn},...e.reasoningOut===void 0?{}:{reasoningOut:e.reasoningOut}}]}}function we(e,t){let n=e?[...e]:[];for(let e of t){let t=n.find(t=>t.provider===e.provider&&t.model===e.model);if(!t){n.push({...e});continue}t.in+=e.in,t.out+=e.out,G(t,`cachedIn`,e.cachedIn),G(t,`cacheWriteIn`,e.cacheWriteIn),G(t,`reasoningOut`,e.reasoningOut)}return n}function W(e,t){return{...e,...Ee(`cachedIn`,t.cachedIn),...Ee(`cacheWriteIn`,t.cacheWriteIn),...Ee(`reasoningOut`,t.reasoningOut)}}function Te(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 G(e,t,n){n!==void 0&&(e[t]=(e[t]??0)+n)}function Ee(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 A(`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 A(`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 A(`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}};const Oe=c.object({query:c.string().trim().min(1).max(400)});function ke(e){return{name:`web_search`,description:`Search the public web for current information. Returns source titles, URLs, and relevant extracted passages.`,schema:Oe,async execute(t,n){n.span?.setAttribute(`webSearchBackend`,e.name);let r=await e.search({query:t.query},{signal:n.signal,span:n.span});return n.span?.setAttribute(`webSearchResultCount`,r.results.length),JSON.stringify({query:t.query,results:r.results})},summarize(e){return`Search the web for "${e.query}"`}}}function Ae(e){let t=e.apiKey.trim();if(!t)throw Error(`Brave Search apiKey is required`);let n=e.endpoint??`https://api.search.brave.com/res/v1/llm/context`,r=K(e.maxResults??5,`maxResults`,1,50),i=e.candidateCount===void 0?void 0:K(e.candidateCount,`candidateCount`,1,50),a=K(e.maxTokens??4096,`maxTokens`,1,32768),o=e.maxSnippets===void 0?void 0:K(e.maxSnippets,`maxSnippets`,1,256),s=e.maxTokensPerUrl===void 0?void 0:K(e.maxTokensPerUrl,`maxTokensPerUrl`,1,8192),c=e.maxSnippetsPerUrl===void 0?void 0:K(e.maxSnippetsPerUrl,`maxSnippetsPerUrl`,1,100),l=e.timeoutMs===void 0?void 0:K(e.timeoutMs,`timeoutMs`,1);return{name:`brave`,async search(u,d){let f=new URL(n);f.searchParams.set(`q`,u.query),f.searchParams.set(`maximum_number_of_urls`,String(r)),i!==void 0&&f.searchParams.set(`count`,String(i)),f.searchParams.set(`maximum_number_of_tokens`,String(a)),o!==void 0&&f.searchParams.set(`maximum_number_of_snippets`,String(o)),s!==void 0&&f.searchParams.set(`maximum_number_of_tokens_per_url`,String(s)),c!==void 0&&f.searchParams.set(`maximum_number_of_snippets_per_url`,String(c)),e.contextThresholdMode&&f.searchParams.set(`context_threshold_mode`,e.contextThresholdMode),e.country&&f.searchParams.set(`country`,e.country),e.searchLanguage&&f.searchParams.set(`search_lang`,e.searchLanguage),e.freshness&&f.searchParams.set(`freshness`,e.freshness);let p=l===void 0?void 0:AbortSignal.timeout(l),m=p?AbortSignal.any([d.signal,p]):d.signal,h=await fetch(f,{method:`GET`,headers:{Accept:`application/json`,"X-Subscription-Token":t},signal:m});if(!h.ok){let e=(await h.text().catch(()=>``)).replaceAll(t,`[REDACTED]`);throw Error(`Brave Search request failed with status ${h.status}${e?`: ${e}`:``}`)}let g=await h.json(),_=[],v=[...g.grounding?.generic??[],...g.grounding?.poi?[g.grounding.poi]:[],...g.grounding?.map??[]];for(let e of v){if(_.length>=r)break;!e.title||!e.url||!e.snippets?.length||_.push({title:e.title,url:e.url,snippets:e.snippets})}return{results:_}}}}function K(e,t,n,r){if(!Number.isInteger(e))throw Error(`${t} must be an integer`);if(e<n)throw Error(`${t} must be greater than or equal to ${n}`);if(r!==void 0&&e>r)throw Error(`${t} must be less than or equal to ${r}`);return e}function je(e){if(e.maxIterations!==void 0&&e.maxIterations<1)throw new A(`maxIterations must be at least 1 (got ${e.maxIterations})`,{code:`INVALID_OPTIONS`});if(e.maxContextTokens!==void 0&&e.maxContextTokens<1)throw new A(`maxContextTokens must be at least 1 (got ${e.maxContextTokens})`,{code:`INVALID_OPTIONS`})}function Me(e,t,n){if(n.maxIterations!==void 0&&e>=n.maxIterations)return`max-iterations`;let r=t?t.in+t.out:0;if(n.maxContextTokens!==void 0&&r>=n.maxContextTokens)return`token-limit`}function Ne(e,t,n){t.usage&&H(e,n?Ce(t.usage,n):t.usage)}function Pe(e,t){if(!e)return;se(e,`text`,I(t));let n=L(t);n&&e.debug(`thinking`,{thinking:n});for(let n of ne(t))e.info(n.name,{type:`provider-tool`,input:n.input}),n.output!==void 0&&e.trace(n.name,{type:`provider-tool`,output:n.output});Fe(e,re(t))}function Fe(e,t){if(t.length===0)return;let n=Ie(t);e.info(`citations`,{count:t.length,sources:n.slice(0,8),...n.length>8?{more:n.length-8}:{}}),n.length>8&&e.debug(`citations`,{sources:n}),e.setAttribute(`citationCount`,t.length)}function Ie(e){let t=new Set,n=[];for(let{source:r}of e){let e=Le(r),i=`title`in r?r.title:void 0,a=e??i??r.type;t.has(a)||(t.add(a),n.push({type:r.type,...i?{title:i}:{},...e?{url:e}:{}}))}return n}function Le(e){switch(e.type){case`web`:case`search-result`:return e.url;case`retrieved-context`:return e.uri;case`document`:return e.fileId;default:return}}function Re(e){return JSON.stringify({error:e})}function ze(e){let t=e.tools!==void 0||e.providerTools!==void 0;if(e.registry&&t)throw new A("Cannot specify both `registry` and `tools` / `providerTools`. Use one or the other.",{code:`TOOL_OPTIONS_CONFLICT`});return e.registry??new De({tools:e.tools,providerTools:e.providerTools})}function Be(e,t){let n=e.getProvider(`web_search`),r=t.provider.resolveProviderToolName?.bind(t.provider);if(!r)return{registry:e,executable:()=>e.executable(),provider:()=>e.provider(),get:t=>e.get(t)};let i=()=>e.provider().map(e=>{let n=r(e.name,t.model);return n===void 0?e:{...e,nativeName:n}});if(!n||r(`web_search`,t.model)!==void 0)return{registry:e,executable:()=>e.executable(),provider:i,get:t=>e.get(t)};let a=t.configuration.webSearchFallback;if(!a)throw new A(`Provider ${t.provider.name} does not support native web_search and no Axle webSearchFallback is configured`,{code:`WEB_SEARCH_FALLBACK_NOT_CONFIGURED`,details:{provider:t.provider.name,model:t.model}});n.config&&t.span?.warn(`web_search provider config ignored by fallback backend`,{provider:t.provider.name,model:t.model,backend:a.name}),t.span?.info(`Using web search fallback backend`,{provider:t.provider.name,model:t.model,backend:a.name});let o=ke(a);return{registry:e,executable:()=>[...e.executable().filter(e=>e.name!==`web_search`),o],provider:()=>i().filter(e=>e.name!==`web_search`),get:t=>t===`web_search`?o:e.get(t)}}async function Ve(e,t=async()=>null,n,r,i,a){let o=[],s=V(),c=!1;for(let l of e){let e;try{e=await Ue(l,t,n,r,i,a)}catch(e){throw c?He(e,s):e}o.push(e.result),e.usage&&(H(s,e.usage),c=!0)}return{results:o,...c?{usage:s}:{}}}function He(e,t){return e instanceof P?new P(e.message,{toolName:e.toolName,messages:e.messages,partial:e.partial,usage:U(t,e.usage),cause:e.cause}):e instanceof M?new M(e.message,{reason:e.reason,messages:e.messages,partial:e.partial,usage:U(t,e.usage)}):e}async function Ue(e,t,n,r,i,a){if(n.aborted)throw new M(`Operation aborted`,{reason:n.reason});let o=r instanceof De?r:r.registry,s=r.get(e.name),c=i?.startSpan(e.name,{type:`tool`}),l,u={signal:n,span:c,registry:o,emit:t=>a?.onDelta?.(e,t),reportUsage:e=>{l??=V(),H(l,e)}};a?.onStart?.(e);let d,f=`exception`;try{if(d=await t(e.name,e.parameters,u),d==null&&s&&(f=`execution`,d={type:`success`,content:await s.execute(e.parameters,u)}),n.aborted)throw new M(`Operation aborted`,{reason:n.reason})}catch(t){let r=We(t,n);if(r){c?.setResult({kind:`tool`,name:e.name,input:e.parameters,output:{type:r instanceof P?`fatal`:`aborted`,message:r.message}}),c?.end(r instanceof P?`error`:`ok`);let t=l?He(r,l):r;throw a?.onError?.(e,t),t}d={type:`error`,error:{type:f,message:t instanceof Error?t.message:String(t)}}}d??={type:`error`,error:{type:`not-found`,message:`Tool not found: ${e.name}`}};let p={result:d,...l?{usage:l}:{}};a?.onComplete?.(e,p);let m=d.type===`success`?d.content:Re(d.error);return c?.setResult({kind:`tool`,name:e.name,input:e.parameters,output:d.type===`success`?d.content:d.error}),c?.end(d.type===`success`?`ok`:`error`),{result:{id:e.id,name:e.name,content:m,...d.type===`error`?{isError:!0}:{}},...l?{usage:l}:{}}}function We(e,t){if(e instanceof P||e instanceof M)return e;if(t.aborted)return new M(`Operation aborted`,{reason:t.reason})}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}({});async function Ke(e,t){let n=[],r=``,i=``,a=null,o=V(),s=null,c=``,l=new Map,u=new Map,d=new Set,f=(e,n)=>{t.emit({type:`tool:request`,id:e,name:n,kind:t.tools.get(n)?.kind??`tool`})},p=-1,m=()=>{if(s!==null){let e=s===`text`?`text:end`:`thinking:end`;t.emit({type:e,final:c}),s=null,c=``}};for await(let h of e){switch(h.type){case`start`:r=h.id,i=h.data.model,t.emit({type:`turn:start`,id:r,model:i});break;case`text-start`:m(),n.push({type:`text`,text:``}),p=n.length-1,u.set(h.data.index,p),s=`text`,c=``,t.emit({type:`text:start`});break;case`text-delta`:{let e=n[p];e.text+=h.data.text,c=e.text,t.emit({type:`text:delta`,delta:h.data.text,accumulated:c});break}case`text-citation`:{let e=n[u.get(h.data.index)??p];if(!e||e.type!==`text`)break;e.citations=[...e.citations??[],h.data.citation],t.emit({type:`text:citation`,citation:h.data.citation,citations:e.citations});break}case`citation`:m(),n.push({type:`citation`,citations:h.data.citations,...h.data.providerMetadata?{providerMetadata:h.data.providerMetadata}:{}}),p=n.length-1,u.set(h.data.index,p),t.emit({type:`citation`,citations:h.data.citations,providerMetadata:h.data.providerMetadata});break;case`text-complete`:m();break;case`thinking-start`:m(),n.push({type:`thinking`,text:``,...h.data.id?{id:h.data.id}:{},...h.data.redacted===void 0?{}:{redacted:h.data.redacted},...h.data.continuity?{continuity:h.data.continuity}:{},...h.data.providerMetadata?{providerMetadata:h.data.providerMetadata}:{}}),p=n.length-1,u.set(h.data.index,p),s=`thinking`,c=``,t.emit({type:`thinking:start`,redacted:h.data.redacted,continuity:h.data.continuity,providerMetadata:h.data.providerMetadata});break;case`thinking-delta`:{let e=n[p];e.text=(e.text??``)+h.data.text,c=e.text,t.emit({type:`thinking:delta`,delta:h.data.text,accumulated:c});break}case`thinking-summary-delta`:{let e=n[p];e.summary=(e.summary??``)+h.data.text,c=e.summary,t.emit({type:`thinking:summary-delta`,delta:h.data.text,accumulated:c});break}case`thinking-metadata`:{let e=n[u.get(h.data.index)??p];if(!e||e.type!==`thinking`)break;h.data.redacted!==void 0&&(e.redacted=h.data.redacted),h.data.continuity&&(e.continuity=h.data.continuity),h.data.providerMetadata&&(e.providerMetadata=h.data.providerMetadata),t.emit({type:`thinking:update`,redacted:h.data.redacted,continuity:h.data.continuity,providerMetadata:h.data.providerMetadata});break}case`thinking-complete`:m();break;case`tool-call-start`:m(),n.push({type:`tool-call`,id:h.data.id,name:h.data.name,parameters:{}}),p=n.length-1,u.set(h.data.index,p),h.data.name?f(h.data.id,h.data.name):d.add(h.data.id);break;case`tool-call-args-delta`:d.has(h.data.id)&&h.data.name&&(d.delete(h.data.id),f(h.data.id,h.data.name)),t.emit({type:`tool:args-delta`,id:h.data.id,name:h.data.name,delta:h.data.delta,accumulated:h.data.accumulated});break;case`tool-call-complete`:{let e=n[u.get(h.data.index)??p];if(!e||e.type!==`tool-call`)break;h.data.id&&(e.id=h.data.id),h.data.name&&(e.name=h.data.name),e.parameters=h.data.arguments,h.data.providerMetadata&&(e.providerMetadata=h.data.providerMetadata),h.data.error&&l.set(e.id,h.data.error),d.has(e.id)&&e.name&&(d.delete(e.id),f(e.id,e.name));break}case`provider-tool-start`:m(),n.push({type:`provider-tool`,id:h.data.id,name:h.data.name}),p=n.length-1,u.set(h.data.index,p),t.emit({type:`provider-tool:start`,id:h.data.id,name:h.data.name});break;case`provider-tool-complete`:{let e=n[u.get(h.data.index)??p];e&&e.type===`provider-tool`&&h.data.output!=null&&(e.output=h.data.output),t.emit({type:`provider-tool:complete`,id:h.data.id,name:h.data.name,output:h.data.output});break}case`complete`:m(),a=h.data.finishReason,o=h.data.usage;break;case`error`:return m(),{kind:`provider-error`,errorType:h.data.type,message:h.data.message,usage:h.data.usage,model:i};default:console.warn(`[WARN] Unhandled chunk type. Should never happen`)}if(t.signal.aborted)break}return t.signal.aborted?(m(),{kind:`aborted`,partial:n.length?{role:`assistant`,id:r,model:i,content:n,finishReason:`cancelled`}:void 0}):a===null?(m(),{kind:`incomplete`}):{kind:`complete`,id:r,model:i,parts:n,finishReason:a,usage:o,toolCallArgumentErrors:l}}function qe(e){let t=e.raw?`${e.message}\nRaw buffer: ${e.raw}`:e.message;return{type:`error`,error:{type:e.type,message:t}}}async function Je(e,t,n,r){let{toolCallArgumentErrors:i}=t,{emit:a,signal:o,resolvedTools:s,span:c,onToolCall:l,newMessages:u,usage:d,addMessage:f}=r,p=crypto.randomUUID();a({type:`tool-results:start`,id:p});let m=[],h=new Map;for(let t of e){let e=i.get(t.id);if(!e){m.push(t);continue}let n=qe(e);h.set(t.id,{id:t.id,name:t.name,content:Re(n.error),isError:!0}),a({type:`tool:exec-complete`,id:t.id,name:t.name,result:n})}let g={onStart(e){a({type:`tool:exec-start`,id:e.id,name:e.name,parameters:e.parameters})},onDelta(e,t){a({type:`tool:exec-delta`,id:e.id,name:e.name,chunk:t})},onComplete(e,t){a({type:`tool:exec-complete`,id:e.id,name:e.name,result:t.result,usage:t.usage})},onError(e,t){a({type:`tool:exec-error`,id:e.id,name:e.name,error:{type:t instanceof P?`fatal`:`aborted`,message:t.message},usage:t.usage})}},_=[],v;try{m.length>0&&({results:_,usage:v}=await Ve(m,l,o,s,c,g))}catch(e){throw e instanceof P?(c?.end(`error`),new P(e.message,{toolName:e.toolName,messages:e.messages??u,partial:e.partial??n,usage:U(d,e.usage),cause:e.cause})):e instanceof M?(c?.end(`ok`),new M(`Stream aborted`,{reason:e.reason,messages:e.messages??u,partial:e.partial,usage:U(d,e.usage)})):e}H(d,v);let y=new Map(_.map(e=>[e.id,e])),b=e.flatMap(e=>{let t=h.get(e.id);if(t)return[t];let n=y.get(e.id);return n?[n]:[]});if(b.length>0){let e={role:`tool`,id:p,content:b};f(e),a({type:`tool-results:complete`,message:e})}}function Ye(e,t){for(let n of e)n(t)}function Xe(e){return{name:e.name,description:e.description,schema:e.schema}}function Ze(e){let t=[],n,r;if(`instruct`in e){let{instruct:t,messages:i,...a}=e,o=xe(t);r=o.parse,n={...a,messages:[...i??[],o.message]}}else n=e;je(n);let i=new AbortController,a=n.signal?AbortSignal.any([i.signal,n.signal]):i.signal,{promise:o,resolve:s,reject:c}=Promise.withResolvers(),l=k();return Promise.resolve().then(()=>Qe(n,a,t,l).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,...e.stopped?{stopped:e.stopped}:{},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 Qe(e,t,n,r){let{provider:i,model:a,messages:o,system:s,onToolCall:c,maxIterations:l,maxContextTokens:u,span:d,fileResolver:f,reasoning:p,maxOutputTokens:m,temperature:h,topP:g,stop:_,toolChoice:v,parallelToolCalls:y,providerOptions:b}=e,x=Be(ze(e),{provider:i,model:a,span:d,configuration:r}),S=[...o],C=[],w=V(),T=0,E=e=>{S.push(e),C.push(e)},D={emit:e=>Ye(n,e),signal:t,resolvedTools:x,span:d,onToolCall:c,newMessages:C,usage:w,addMessage:E},O=e=>{e.ok||Ye(n,{type:`error`,error:e.error});let t=e.ok?e.final.content:null,r=e.ok?e.final.finishReason:void 0;return d?.setResult({kind:`llm`,model:a,request:{messages:o},response:{content:t??null},usage:Te(e.usage),finishReason:r}),d?.end(e.ok?`ok`:`error`),e};for(;;){if(t.aborted)throw d?.end(`ok`),new M(`Stream aborted`,{reason:t.reason,messages:C,usage:w});T+=1;let e=d?.startSpan(`turn-${T}`,{type:`llm`}),r=x.executable(),o=r.length>0?r.map(Xe):void 0,c=x.provider(),k=await Ke(i.createStreamingRequest(a,{messages:S,system:s,tools:o,providerTools:c.length>0?c:void 0,runtime:{span:e,fileResolver:f},signal:t,reasoning:p,maxOutputTokens:m,temperature:h,topP:g,stop:_,toolChoice:v,parallelToolCalls:y,providerOptions:b}),{emit:e=>Ye(n,e),tools:x,signal:t});if(k.kind===`aborted`)throw e?.end(`ok`),k.partial&&E(k.partial),d?.end(`ok`),new M(`Stream aborted`,{reason:t.reason,messages:C,partial:k.partial,usage:w});if(k.kind===`provider-error`)return k.usage&&H(w,Ce(k.usage,{provider:i.name,model:k.model||a})),e?.end(`error`),O({ok:!1,messages:C,error:{kind:`model`,error:{type:`error`,error:{type:k.errorType,message:k.message}}},usage:w});if(k.kind===`incomplete`)return e?.end(`error`),O({ok:!1,messages:C,error:{kind:`model`,error:{type:`error`,error:{type:`IncompleteStream`,message:`Stream ended without a completion signal`}}},usage:w});let{id:A,model:j,parts:N,finishReason:P,usage:F}=k,ee=Ce(F,{provider:i.name,model:j||a});H(w,ee);let I={kind:`llm`,model:j,request:{messages:S},response:{content:N},usage:Te(F),finishReason:P};Pe(e,N),e?.setResult(I),e?.end();let L={role:`assistant`,id:A,model:j,content:N,finishReason:P};if(E(L),Ye(n,{type:`turn:complete`,message:L,usage:ee}),P!==`function_call`)return O({ok:!0,response:L,messages:C,final:L,usage:w});let te=N.filter(e=>e.type===`tool-call`);if(te.length===0)return O({ok:!0,response:L,messages:C,final:L,usage:w});if(t.aborted)throw d?.end(`ok`),new M(`Stream aborted`,{reason:t.reason,messages:C,usage:w});await Je(te,k,L,D);let ne=Me(T,F,{maxIterations:l,maxContextTokens:u});if(ne)return O({ok:!0,response:L,messages:C,final:L,usage:w,stopped:ne})}}function q(e=new Date){return{start:e.toISOString()}}function J(e,t=new Date){let n=t.toISOString();return e?{...e,end:n}:{start:n,end:n}}var $e=class{currentTurnId=null;currentTurnTiming;currentTextPart=null;currentThinkingPart=null;toolIdMap=new Map;accumulatedUsage=V();createUserTurn(e){let t=e.id??crypto.randomUUID(),n=[],r=new Date,i=J(q(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,...t.citations?{citations:t.citations}:{},...t.providerMetadata?{providerMetadata:t.providerMetadata}:{},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,...e.metadata?{metadata:e.metadata}:{}}}]}startAgentTurn(){let e=crypto.randomUUID();return this.currentTurnId=e,this.currentTurnTiming=q(),this.currentTextPart=null,this.currentThinkingPart=null,this.toolIdMap.clear(),this.accumulatedUsage=V(),{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:q()};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=J(this.currentTextPart.timing);n.push({type:`part:end`,turnId:t,partId:this.currentTextPart.id,timing:e}),this.currentTextPart=null}break;case`citation`:{this.closeOpenParts(n);let r=J(q()),i={id:crypto.randomUUID(),type:`citation`,citations:e.citations,...e.providerMetadata?{providerMetadata:e.providerMetadata}:{},timing:r};n.push({type:`part:start`,turnId:t,part:i}),n.push({type:`part:end`,turnId:t,partId:i.id,timing:r});break}case`thinking:start`:{this.closeOpenParts(n);let r=crypto.randomUUID(),i={id:r,type:`thinking`,text:``,timing:q(),...e.redacted===void 0?{}:{redacted:e.redacted},...e.continuity?{continuity:e.continuity}:{},...e.providerMetadata?{providerMetadata:e.providerMetadata}:{}};this.currentThinkingPart={id:r,timing:i.timing},n.push({type:`part:start`,turnId:t,part:i});break}case`thinking:delta`:this.currentThinkingPart&&n.push({type:`thinking:delta`,turnId:t,partId:this.currentThinkingPart.id,delta:e.delta});break;case`text:citation`:this.currentTextPart&&n.push({type:`text:citation`,turnId:t,partId:this.currentTextPart.id,citation:e.citation});break;case`thinking:summary-delta`:this.currentThinkingPart&&n.push({type:`thinking:summary-delta`,turnId:t,partId:this.currentThinkingPart.id,delta:e.delta});break;case`thinking:update`:this.currentThinkingPart&&n.push({type:`thinking:update`,turnId:t,partId:this.currentThinkingPart.id,redacted:e.redacted,continuity:e.continuity,providerMetadata:e.providerMetadata});break;case`thinking:end`:if(this.currentThinkingPart){let e=J(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=q(),a=e.kind===`agent`?{id:r,type:`action`,kind:`agent`,status:`pending`,timing:i,detail:{name:e.name,children:[]}}:{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,name:e.name,kind:e.kind}),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&&(typeof e.chunk==`string`?n.push({type:`action:progress`,turnId:t,partId:r.partId,chunk:e.chunk}):e.chunk.type===`turn-event`&&n.push({type:`action:child-event`,turnId:t,partId:r.partId,event:e.chunk.event}));break}case`tool:exec-complete`:{let r=this.toolIdMap.get(e.id);if(r){H(this.accumulatedUsage,e.usage);let i=J(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`tool:exec-error`:{let r=this.toolIdMap.get(e.id);if(r){H(this.accumulatedUsage,e.usage);let i=J(r.timing);r.timing=i,n.push({type:`action:error`,turnId:t,partId:r.partId,error:e.error,timing:i})}break}case`provider-tool:start`:{this.closeOpenParts(n);let r=crypto.randomUUID(),i=q(),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=J(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),H(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=J(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:J(this.currentTextPart.timing)}),null),this.currentThinkingPart&&=(e.push({type:`part:end`,turnId:t,partId:this.currentThinkingPart.id,timing:J(this.currentThinkingPart.timing)}),null))}},et=class{_turns;_messages;_archive;_compactions;_sessionAnnotations;constructor(e){this._turns=[...e?.turns??[]],this._messages=[...e?.messages??[]],this._archive=[...e?.archive??e?.messages??[]],this._compactions=[...e?.compactions??[]],this._sessionAnnotations=[...e?.sessionAnnotations??[]]}get turns(){return[...this._turns]}get messages(){return[...this._messages]}get archive(){return[...this._archive]}get compactions(){return[...this._compactions]}get sessionAnnotations(){return[...this._sessionAnnotations]}append(e){let t=Array.isArray(e)?e:[e];this._messages.push(...t),this._archive.push(...t)}replaceTurns(e,t){this._turns=e,this._sessionAnnotations=t}compact(e,t){this._messages=[...e],this._compactions.push(t)}};const tt={trace:0,debug:1,info:2,warn:3,error:4},nt=()=>performance.timeOrigin+performance.now();var rt=class{writers=[];minLevel=`info`;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)}shouldLog(e){return tt[e]>=tt[this.minLevel]}spanStart(e){for(let t of this.writers)t.onSpanStart(e)}spanEnd(e){for(let t of this.writers)t.onSpanEnd(e)}spanUpdate(e){for(let t of this.writers)t.onSpanUpdate?.(e)}event(e,t){for(let n of this.writers)n.onEvent?.(e,t)}async flush(){for(let e of this.writers)e.flush&&await e.flush()}},it=class{rec=new rt;constructor(e){e?.minLevel&&(this.rec.minLevel=e.minLevel);for(let t of e?.writers??[])this.rec.addWriter(t)}get minLevel(){return this.rec.minLevel}set minLevel(e){this.rec.minLevel=e}addWriter(e){this.rec.addWriter(e)}removeWriter(e){this.rec.removeWriter(e)}startSpan(e,t){let n={traceId:crypto.randomUUID(),spanId:crypto.randomUUID(),name:e,type:t?.type,startTime:nt(),status:`ok`,attributes:{...t?.attributes??{}},events:[]};return this.rec.spanStart(n),new at(n,this.rec)}flush(){return this.rec.flush()}},at=class e{data;rec;ended=!1;constructor(e,t){this.data=e,this.rec=t}startSpan(t,n){let r={traceId:this.data.traceId,spanId:crypto.randomUUID(),parentSpanId:this.data.spanId,name:t,type:n?.type,startTime:nt(),status:`ok`,attributes:{...n?.attributes??{}},events:[]};return this.rec.spanStart(r),new e(r,this.rec)}end(e=`ok`){this.ended||(this.ended=!0,this.data.endTime=nt(),this.data.status=e,this.rec.spanEnd(this.data))}addEvent(e,t,n){if(this.ended||!this.rec.shouldLog(t))return;let r={name:e,timestamp:nt(),level:t,attributes:n};this.data.events.push(r),this.rec.event(this.data,r)}trace(e,t){this.addEvent(e,`trace`,t)}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.rec.spanUpdate(this.data))}setAttributes(e){this.ended||(Object.assign(this.data.attributes,e),this.rec.spanUpdate(this.data))}setResult(e){this.ended||(this.data.result=e,this.rec.spanUpdate(this.data))}};function ot(e){if(!e)return{};let{trace:t,log:n,level:r}=e;if(t)return n&&console.warn(`[axle] observability.log is ignored when observability.trace is set; add a LogWriter to your tracer's writers instead`),{parent:t};if(n){let e=new it({minLevel:r,writers:[new oe(n)]});return{parent:e,owned:e}}return{}}function st(e){return ct(e)?`cancelled`:`error`}function ct(e){return e instanceof M||e instanceof N||e instanceof Error&&e.name===`AbortError`}function lt(e,t){return{...e,...t,providerOptions:e?.providerOptions||t?.providerOptions?{...e?.providerOptions,...t?.providerOptions}:void 0}}var ut=class{provider;model;history;name;fileResolver;requestOptions;registry;sessionId;system;mcps=[];resolvedMcps=new WeakSet;memory;spanParent;ownedTracer;eventCallbacks=[];compactionCallback;workQueue=Promise.resolve();accumulator;constructor(t,n){if(n&&n.version!==1)throw new A(`Unsupported agent session version: ${n.version}`);this.provider=t.provider,this.model=t.model,this.sessionId=n?.sessionId??t.sessionId??crypto.randomUUID(),this.history=new et(n?{turns:n.turns,messages:n.messages,archive:n.archive,compactions:n.compactions,sessionAnnotations:n.sessionAnnotations}:void 0),this.accumulator=new e({turns:this.history.turns,sessionAnnotations:this.history.sessionAnnotations});let r=ot(t.observability);if(this.spanParent=r.parent,this.ownedTracer=r.owned,this.system=t.system,this.name=t.name,this.fileResolver=t.fileResolver,this.requestOptions={reasoning:t.reasoning,maxOutputTokens:t.maxOutputTokens,temperature:t.temperature,topP:t.topP,stop:t.stop,toolChoice:t.toolChoice,parallelToolCalls:t.parallelToolCalls,providerOptions:t.providerOptions},this.registry=new De({tools:t.tools,providerTools:t.providerTools}),t.mcps&&(this.mcps=[...t.mcps]),t.memory){this.memory=t.memory;let e=t.memory.tools?.();e&&this.registry.add(e)}}addMcp(e){this.mcps.push(e)}addMcps(e){this.mcps.push(...e)}hasTools(){return this.registry.size>0||this.mcps.length>0}on(e){return this.eventCallbacks.push(e),()=>{let t=this.eventCallbacks.indexOf(e);t>=0&&this.eventCallbacks.splice(t,1)}}context(){return this.estimateContext(this.history.messages)}estimateContext(e){return ce({system:this.system,messages:e,tools:this.toToolDefinitions(this.registry.local()),providerTools:this.registry.provider(),mcpTools:this.toToolDefinitions(this.registry.mcp())})}onCompaction(e){this.compactionCallback=e}compact(e){let t=this.compactionCallback;return t?this.queue(async e=>{if(e.aborted)return null;let n=this.spanParent?.startSpan(`agent.compact`,{type:`workflow`,attributes:{sessionId:this.sessionId,...this.name?{agentName:this.name}:{}}}),r=`ok`,i=crypto.randomUUID(),a=new Date().toISOString();this.emitEvent({type:`compaction:start`,id:i,timing:{start:a}});let o=(e,t)=>{n?.setAttribute(`outcome`,e),this.emitEvent({type:`compaction:end`,id:i,outcome:e,record:t,timing:{start:a,end:new Date().toISOString()}})};try{let r=this.context(),s=await t({messages:this.history.messages},{usage:r,signal:e});if(e.aborted||s==null)return o(`skipped`),null;F(s);let c={id:i,at:a};return this.history.compact(s,c),n&&n.setAttributes({beforeTokens:r.total,afterTokens:this.context().total}),o(`complete`,c),c}catch(t){if(e.aborted)return o(`skipped`),null;throw r=st(t),n?.error(t instanceof Error?t.message:String(t)),o(`error`),t}finally{n?.end(r),await this.ownedTracer?.flush()}},e?.signal).final:Promise.resolve(null)}snapshot(){return this.queue(async()=>{let{messages:e,archive:t,compactions:n,turns:r,sessionAnnotations:i}=this.history;return{version:1,sessionId:this.sessionId,messages:e,archive:t,compactions:n,turns:r,sessionAnnotations:i}}).final}send(e,t){let{fileResolver:n,metadata:r,...i}=t??{},a=xe(e,{metadata:r}),o=lt(this.requestOptions,i);return this.queue(async e=>{let t=this.spanParent?.startSpan(`agent.send`,{type:`workflow`,attributes:{sessionId:this.sessionId,...this.name?{agentName:this.name}:{}}});se(t,`message`,I(a.message.content));let r=`ok`;try{let i=await this.run(a,{signal:e,fileResolver:n,requestOptions:o,span:t});return i.ok||(r=`error`),t?.setAttributes({inputTokens:i.usage.in,outputTokens:i.usage.out}),i}catch(e){throw r=st(e),t?.error(e instanceof Error?e.message:String(e)),e}finally{t?.end(r),await this.ownedTracer?.flush()}},i.signal)}queue(e,t){let n=new AbortController,r=t?AbortSignal.any([t,n.signal]):n.signal,i=this.workQueue.then(()=>e(r));return this.workQueue=i.then(()=>{},()=>{}),{cancel:e=>n.abort(e),final:i}}async resolveMcpTools(e,t){for(let n of this.mcps){if(this.resolvedMcps.has(n))continue;let r=await n.listTools({prefix:n.name,span:t,signal:e});this.registry.addMcp(r),this.resolvedMcps.add(n)}}emitEvent(e){let t=this.accumulator.apply(e);t.handled&&this.history.replaceTurns(t.state.turns,t.state.sessionAnnotations??[]);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(e,t){let{signal:n,fileResolver:r,requestOptions:i}=t,a=t.span,o=new $e,s,c=()=>s?this.accumulator.state.turns.find(e=>e.id===s):void 0,l=V();if(n.aborted)throw new N(`Agent send aborted`,{reason:n.reason,usage:l});try{await this.resolveMcpTools(n,a)}catch(e){throw n.aborted||e instanceof M||e instanceof Error&&e.name===`AbortError`?new N(`Agent send aborted`,{reason:e instanceof M?e.reason:n.reason,usage:l}):e}let u=this.system,d=[...this.history.messages,e.message];if(this.memory){let e=await this.memory.recall({agentName:this.name,sessionId:this.sessionId,system:this.system,messages:d,span:a});e.systemSuffix&&(u=(u??``)+`
5
+ `)}function te(e){return e.filter(e=>e.type===`tool-call`)}function ne(e){return e.filter(e=>e.type===`provider-tool`)}function re(e){let t=[];for(let n of e)(n.type===`text`&&n.citations||n.type===`citation`)&&t.push(...n.citations);return t}function ie(e,t=500){return e.length>t?`${e.slice(0,t)}… (${e.length} chars)`:e}function ae(e,t=600){if(e.length<=t)return e;let n=Math.floor(t/2);return`${e.slice(0,n)}…[${e.length} chars]…${e.slice(-n)}`}var oe=class{log;constructor(e){this.log=e}onSpanStart(){}onSpanEnd(e){let t=e.status===`error`?`error`:e.type===`tool`||e.type===`workflow`?`info`:`debug`;this.log({level:t,message:e.name,fields:{...e.attributes,type:e.type,status:e.status,traceId:e.traceId,spanId:e.spanId,...e.parentSpanId?{parentSpanId:e.parentSpanId}:{},...e.endTime===void 0?{}:{durationMs:Math.round(e.endTime-e.startTime)}}})}onEvent(e,t){this.log({level:t.level,message:t.name,fields:{traceId:e.traceId,spanId:e.spanId,name:e.name,...t.attributes}})}};function se(e,t,n){if(!n)return;let r=ie(n);e?.info(t,{text:r}),r!==n&&e?.debug(t,{text:n})}function ce(e){let t=z(e.system??``),n=me(e.tools),r=me(e.mcpTools),i=he(e.providerTools),a=e.messages.reduce((e,t)=>e+le(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 le(e){switch(e.role){case`user`:return ue(e.content);case`assistant`:return ue(e.content);case`tool`:return e.content.reduce((e,t)=>e+fe(t),0)}}function ue(e){return typeof e==`string`?z(e):e.reduce((e,t)=>e+de(t),0)}function de(e){switch(e.type){case`text`:return z(e.text);case`thinking`:return z(e.summary??e.text??``);case`tool-call`:return z(e.name)+R(e.parameters);case`provider-tool`:return z(e.name)+R(e.input)+R(e.output);case`citation`:return R(e.citations);case`file`:return R(e.file)}}function fe(e){return z(e.name)+pe(e.content)}function pe(e){return typeof e==`string`?z(e):e.reduce((e,t)=>t.type===`text`?e+z(t.text):e+R(t.file),0)}function me(e){let t=e?.map(ge)??[];return t.length===0?0:R({tools:t})}function he(e){return!e||e.length===0?0:R({providerTools:e})}function ge(e){try{return{name:e.name,description:e.description,parameters:l.toJSONSchema(e.schema)}}catch{return{name:e.name,description:e.description}}}function R(e){return e==null?0:z(JSON.stringify(e))}function z(e){return e?Math.ceil(e.length/3):0}function B(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(ve).join(` | `),t[0]]}if(e instanceof c.ZodLiteral){let t=e.value;return[ve(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]=B(t);return[`object array`,[e,e]]}else if(t instanceof c.ZodEnum||t instanceof c.ZodLiteral){let[e,n]=B(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]=B(r);n[e]=t}return[`JSON object`,n]}if(e instanceof c.ZodOptional){let[t,n]=B(e.unwrap());return[`${t} | undefined`,n]}throw Error(`Unsupported Zod schema: ${e.constructor.name}`)}function _e(e){if(e instanceof c.ZodObject)return Object.entries(e.shape).map(([e,t])=>{let[n]=B(t);return[e,n]});let[t]=B(e);return[[`response`,t]]}function ve(e){return typeof e==`string`?JSON.stringify(e):String(e)}function ye(e,t){if(!t)return e;let n=be(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 be(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 xe(e,t={}){if(typeof e==`string`)return{message:{role:`user`,id:crypto.randomUUID(),content:[{type:`text`,text:e}],...t.metadata?{metadata:t.metadata}:{}},parse:e=>Se(e,void 0)};let n=e.render(),r=e.files,i=e.schema,a=t.metadata??e.metadata;return{message:{role:`user`,id:crypto.randomUUID(),content:ee({text:n,files:r}),...a?{metadata:a}:{}},parse:e=>Se(e,i)}}function Se(e,t){return e?ye(I(e.content),t):null}function V(){return{in:0,out:0}}function H(e,t){t&&(e.in+=t.in??0,e.out+=t.out??0,G(e,`cachedIn`,t.cachedIn),G(e,`cacheWriteIn`,t.cacheWriteIn),G(e,`reasoningOut`,t.reasoningOut),t.breakdown?.length&&(e.breakdown=we(e.breakdown,t.breakdown)))}function U(...e){let t=V();for(let n of e)H(t,n);return t}function Ce(e,t){return{...e,breakdown:[{provider:t.provider,model:t.model,in:e.in,out:e.out,...e.cachedIn===void 0?{}:{cachedIn:e.cachedIn},...e.cacheWriteIn===void 0?{}:{cacheWriteIn:e.cacheWriteIn},...e.reasoningOut===void 0?{}:{reasoningOut:e.reasoningOut}}]}}function we(e,t){let n=e?[...e]:[];for(let e of t){let t=n.find(t=>t.provider===e.provider&&t.model===e.model);if(!t){n.push({...e});continue}t.in+=e.in,t.out+=e.out,G(t,`cachedIn`,e.cachedIn),G(t,`cacheWriteIn`,e.cacheWriteIn),G(t,`reasoningOut`,e.reasoningOut)}return n}function W(e,t){return{...e,...Ee(`cachedIn`,t.cachedIn),...Ee(`cacheWriteIn`,t.cacheWriteIn),...Ee(`reasoningOut`,t.reasoningOut)}}function Te(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 G(e,t,n){n!==void 0&&(e[t]=(e[t]??0)+n)}function Ee(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 A(`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 A(`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 A(`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}};const Oe=c.object({query:c.string().trim().min(1).max(400)});function ke(e){return{name:`web_search`,description:`Search the public web for current information. Returns source titles, URLs, and relevant extracted passages.`,schema:Oe,async execute(t,n){n.span?.setAttribute(`webSearchBackend`,e.name);let r=await e.search({query:t.query},{signal:n.signal,span:n.span});return n.span?.setAttribute(`webSearchResultCount`,r.results.length),JSON.stringify({query:t.query,results:r.results})},summarize(e){return`Search the web for "${e.query}"`}}}function Ae(e){let t=e.apiKey.trim();if(!t)throw Error(`Brave Search apiKey is required`);let n=e.endpoint??`https://api.search.brave.com/res/v1/llm/context`,r=K(e.maxResults??5,`maxResults`,1,50),i=e.candidateCount===void 0?void 0:K(e.candidateCount,`candidateCount`,1,50),a=K(e.maxTokens??4096,`maxTokens`,1,32768),o=e.maxSnippets===void 0?void 0:K(e.maxSnippets,`maxSnippets`,1,256),s=e.maxTokensPerUrl===void 0?void 0:K(e.maxTokensPerUrl,`maxTokensPerUrl`,1,8192),c=e.maxSnippetsPerUrl===void 0?void 0:K(e.maxSnippetsPerUrl,`maxSnippetsPerUrl`,1,100),l=e.timeoutMs===void 0?void 0:K(e.timeoutMs,`timeoutMs`,1);return{name:`brave`,async search(u,d){let f=new URL(n);f.searchParams.set(`q`,u.query),f.searchParams.set(`maximum_number_of_urls`,String(r)),i!==void 0&&f.searchParams.set(`count`,String(i)),f.searchParams.set(`maximum_number_of_tokens`,String(a)),o!==void 0&&f.searchParams.set(`maximum_number_of_snippets`,String(o)),s!==void 0&&f.searchParams.set(`maximum_number_of_tokens_per_url`,String(s)),c!==void 0&&f.searchParams.set(`maximum_number_of_snippets_per_url`,String(c)),e.contextThresholdMode&&f.searchParams.set(`context_threshold_mode`,e.contextThresholdMode),e.country&&f.searchParams.set(`country`,e.country),e.searchLanguage&&f.searchParams.set(`search_lang`,e.searchLanguage),e.freshness&&f.searchParams.set(`freshness`,e.freshness);let p=l===void 0?void 0:AbortSignal.timeout(l),m=p?AbortSignal.any([d.signal,p]):d.signal,h=await fetch(f,{method:`GET`,headers:{Accept:`application/json`,"X-Subscription-Token":t},signal:m});if(!h.ok){let e=(await h.text().catch(()=>``)).replaceAll(t,`[REDACTED]`);throw Error(`Brave Search request failed with status ${h.status}${e?`: ${e}`:``}`)}let g=await h.json(),_=[],v=[...g.grounding?.generic??[],...g.grounding?.poi?[g.grounding.poi]:[],...g.grounding?.map??[]];for(let e of v){if(_.length>=r)break;!e.title||!e.url||!e.snippets?.length||_.push({title:e.title,url:e.url,snippets:e.snippets})}return{results:_}}}}function K(e,t,n,r){if(!Number.isInteger(e))throw Error(`${t} must be an integer`);if(e<n)throw Error(`${t} must be greater than or equal to ${n}`);if(r!==void 0&&e>r)throw Error(`${t} must be less than or equal to ${r}`);return e}function je(e){if(e.maxIterations!==void 0&&e.maxIterations<1)throw new A(`maxIterations must be at least 1 (got ${e.maxIterations})`,{code:`INVALID_OPTIONS`});if(e.maxContextTokens!==void 0&&e.maxContextTokens<1)throw new A(`maxContextTokens must be at least 1 (got ${e.maxContextTokens})`,{code:`INVALID_OPTIONS`})}function Me(e,t,n){if(n.maxIterations!==void 0&&e>=n.maxIterations)return`max-iterations`;let r=t?t.in+t.out:0;if(n.maxContextTokens!==void 0&&r>=n.maxContextTokens)return`token-limit`}function Ne(e,t,n){t.usage&&H(e,n?Ce(t.usage,n):t.usage)}function Pe(e,t){if(!e)return;se(e,`text`,I(t));let n=L(t);n&&e.debug(`thinking`,{thinking:n});for(let n of ne(t))e.info(n.name,{type:`provider-tool`,input:n.input}),n.output!==void 0&&e.trace(n.name,{type:`provider-tool`,output:n.output});Fe(e,re(t))}function Fe(e,t){if(t.length===0)return;let n=Ie(t);e.info(`citations`,{count:t.length,sources:n.slice(0,8),...n.length>8?{more:n.length-8}:{}}),n.length>8&&e.debug(`citations`,{sources:n}),e.setAttribute(`citationCount`,t.length)}function Ie(e){let t=new Set,n=[];for(let{source:r}of e){let e=Le(r),i=`title`in r?r.title:void 0,a=e??i??r.type;t.has(a)||(t.add(a),n.push({type:r.type,...i?{title:i}:{},...e?{url:e}:{}}))}return n}function Le(e){switch(e.type){case`web`:case`search-result`:return e.url;case`retrieved-context`:return e.uri;case`document`:return e.fileId;default:return}}function Re(e){return JSON.stringify({error:e})}function ze(e){let t=e.tools!==void 0||e.providerTools!==void 0;if(e.registry&&t)throw new A("Cannot specify both `registry` and `tools` / `providerTools`. Use one or the other.",{code:`TOOL_OPTIONS_CONFLICT`});return e.registry??new De({tools:e.tools,providerTools:e.providerTools})}function Be(e,t){let n=e.getProvider(`web_search`),r=t.provider.resolveProviderToolName?.bind(t.provider);if(!r)return{registry:e,executable:()=>e.executable(),provider:()=>e.provider(),get:t=>e.get(t)};let i=()=>e.provider().map(e=>{let n=r(e.name,t.model);return n===void 0?e:{...e,nativeName:n}});if(!n||r(`web_search`,t.model)!==void 0)return{registry:e,executable:()=>e.executable(),provider:i,get:t=>e.get(t)};let a=t.configuration.webSearchFallback;if(!a)throw new A(`Provider ${t.provider.name} does not support native web_search and no Axle webSearchFallback is configured`,{code:`WEB_SEARCH_FALLBACK_NOT_CONFIGURED`,details:{provider:t.provider.name,model:t.model}});n.config&&t.span?.warn(`web_search provider config ignored by fallback backend`,{provider:t.provider.name,model:t.model,backend:a.name}),t.span?.info(`Using web search fallback backend`,{provider:t.provider.name,model:t.model,backend:a.name});let o=ke(a);return{registry:e,executable:()=>[...e.executable().filter(e=>e.name!==`web_search`),o],provider:()=>i().filter(e=>e.name!==`web_search`),get:t=>t===`web_search`?o:e.get(t)}}async function Ve(e,t=async()=>null,n,r,i,a){let o=[],s=V(),c=!1;for(let l of e){let e;try{e=await Ue(l,t,n,r,i,a)}catch(e){throw c?He(e,s):e}o.push(e.result),e.usage&&(H(s,e.usage),c=!0)}return{results:o,...c?{usage:s}:{}}}function He(e,t){return e instanceof P?new P(e.message,{toolName:e.toolName,messages:e.messages,partial:e.partial,usage:U(t,e.usage),cause:e.cause}):e instanceof M?new M(e.message,{reason:e.reason,messages:e.messages,partial:e.partial,usage:U(t,e.usage)}):e}async function Ue(e,t,n,r,i,a){if(n.aborted)throw new M(`Operation aborted`,{reason:n.reason});let o=r instanceof De?r:r.registry,s=r.get(e.name),c=i?.startSpan(e.name,{type:`tool`}),l,u={signal:n,span:c,registry:o,emit:t=>a?.onDelta?.(e,t),reportUsage:e=>{l??=V(),H(l,e)}};a?.onStart?.(e);let d,f=`exception`;try{if(d=await t(e.name,e.parameters,u),d==null&&s&&(f=`execution`,d={type:`success`,content:await s.execute(e.parameters,u)}),n.aborted)throw new M(`Operation aborted`,{reason:n.reason})}catch(t){let r=We(t,n);if(r){c?.setResult({kind:`tool`,name:e.name,input:e.parameters,output:{type:r instanceof P?`fatal`:`aborted`,message:r.message}}),c?.end(r instanceof P?`error`:`ok`);let t=l?He(r,l):r;throw a?.onError?.(e,t),t}d={type:`error`,error:{type:f,message:t instanceof Error?t.message:String(t)}}}d??={type:`error`,error:{type:`not-found`,message:`Tool not found: ${e.name}`}};let p={result:d,...l?{usage:l}:{}};a?.onComplete?.(e,p);let m=d.type===`success`?d.content:Re(d.error);return c?.setResult({kind:`tool`,name:e.name,input:e.parameters,output:d.type===`success`?d.content:d.error}),c?.end(d.type===`success`?`ok`:`error`),{result:{id:e.id,name:e.name,content:m,...d.type===`error`?{isError:!0}:{}},...l?{usage:l}:{}}}function We(e,t){if(e instanceof P||e instanceof M)return e;if(t.aborted)return new M(`Operation aborted`,{reason:t.reason})}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}({});async function Ke(e,t){let n=[],r=``,i=``,a=null,o=V(),s=null,c=``,l=new Map,u=new Map,d=new Set,f=(e,n)=>{t.emit({type:`tool:request`,id:e,name:n,kind:t.tools.get(n)?.kind??`tool`})},p=-1,m=()=>{if(s!==null){let e=s===`text`?`text:end`:`thinking:end`;t.emit({type:e,final:c}),s=null,c=``}};for await(let h of e){switch(h.type){case`start`:r=h.id,i=h.data.model,t.emit({type:`turn:start`,id:r,model:i});break;case`text-start`:m(),n.push({type:`text`,text:``}),p=n.length-1,u.set(h.data.index,p),s=`text`,c=``,t.emit({type:`text:start`});break;case`text-delta`:{let e=n[p];e.text+=h.data.text,c=e.text,t.emit({type:`text:delta`,delta:h.data.text,accumulated:c});break}case`text-citation`:{let e=n[u.get(h.data.index)??p];if(!e||e.type!==`text`)break;e.citations=[...e.citations??[],h.data.citation],t.emit({type:`text:citation`,citation:h.data.citation,citations:e.citations});break}case`citation`:m(),n.push({type:`citation`,citations:h.data.citations,...h.data.providerMetadata?{providerMetadata:h.data.providerMetadata}:{}}),p=n.length-1,u.set(h.data.index,p),t.emit({type:`citation`,citations:h.data.citations,providerMetadata:h.data.providerMetadata});break;case`text-complete`:m();break;case`thinking-start`:m(),n.push({type:`thinking`,text:``,...h.data.id?{id:h.data.id}:{},...h.data.redacted===void 0?{}:{redacted:h.data.redacted},...h.data.continuity?{continuity:h.data.continuity}:{},...h.data.providerMetadata?{providerMetadata:h.data.providerMetadata}:{}}),p=n.length-1,u.set(h.data.index,p),s=`thinking`,c=``,t.emit({type:`thinking:start`,redacted:h.data.redacted,continuity:h.data.continuity,providerMetadata:h.data.providerMetadata});break;case`thinking-delta`:{let e=n[p];e.text=(e.text??``)+h.data.text,c=e.text,t.emit({type:`thinking:delta`,delta:h.data.text,accumulated:c});break}case`thinking-summary-delta`:{let e=n[p];e.summary=(e.summary??``)+h.data.text,c=e.summary,t.emit({type:`thinking:summary-delta`,delta:h.data.text,accumulated:c});break}case`thinking-metadata`:{let e=n[u.get(h.data.index)??p];if(!e||e.type!==`thinking`)break;h.data.redacted!==void 0&&(e.redacted=h.data.redacted),h.data.continuity&&(e.continuity=h.data.continuity),h.data.providerMetadata&&(e.providerMetadata=h.data.providerMetadata),t.emit({type:`thinking:update`,redacted:h.data.redacted,continuity:h.data.continuity,providerMetadata:h.data.providerMetadata});break}case`thinking-complete`:m();break;case`tool-call-start`:m(),n.push({type:`tool-call`,id:h.data.id,name:h.data.name,parameters:{}}),p=n.length-1,u.set(h.data.index,p),h.data.name?f(h.data.id,h.data.name):d.add(h.data.id);break;case`tool-call-args-delta`:d.has(h.data.id)&&h.data.name&&(d.delete(h.data.id),f(h.data.id,h.data.name)),t.emit({type:`tool:args-delta`,id:h.data.id,name:h.data.name,delta:h.data.delta,accumulated:h.data.accumulated});break;case`tool-call-complete`:{let e=n[u.get(h.data.index)??p];if(!e||e.type!==`tool-call`)break;h.data.id&&(e.id=h.data.id),h.data.name&&(e.name=h.data.name),e.parameters=h.data.arguments,h.data.providerMetadata&&(e.providerMetadata=h.data.providerMetadata),h.data.error&&l.set(e.id,h.data.error),d.has(e.id)&&e.name&&(d.delete(e.id),f(e.id,e.name));break}case`provider-tool-start`:m(),n.push({type:`provider-tool`,id:h.data.id,name:h.data.name}),p=n.length-1,u.set(h.data.index,p),t.emit({type:`provider-tool:start`,id:h.data.id,name:h.data.name});break;case`provider-tool-complete`:{let e=n[u.get(h.data.index)??p];e&&e.type===`provider-tool`&&h.data.output!=null&&(e.output=h.data.output),t.emit({type:`provider-tool:complete`,id:h.data.id,name:h.data.name,output:h.data.output});break}case`complete`:m(),a=h.data.finishReason,o=h.data.usage;break;case`error`:return m(),{kind:`provider-error`,errorType:h.data.type,message:h.data.message,usage:h.data.usage,model:i};default:console.warn(`[WARN] Unhandled chunk type. Should never happen`)}if(t.signal.aborted)break}return t.signal.aborted?(m(),{kind:`aborted`,partial:n.length?{role:`assistant`,id:r,model:i,content:n,finishReason:`cancelled`}:void 0}):a===null?(m(),{kind:`incomplete`}):{kind:`complete`,id:r,model:i,parts:n,finishReason:a,usage:o,toolCallArgumentErrors:l}}function qe(e){let t=e.raw?`${e.message}\nRaw buffer: ${e.raw}`:e.message;return{type:`error`,error:{type:e.type,message:t}}}async function Je(e,t,n,r){let{toolCallArgumentErrors:i}=t,{emit:a,signal:o,resolvedTools:s,span:c,onToolCall:l,newMessages:u,usage:d,addMessage:f}=r,p=crypto.randomUUID();a({type:`tool-results:start`,id:p});let m=[],h=new Map;for(let t of e){let e=i.get(t.id);if(!e){m.push(t);continue}let n=qe(e);h.set(t.id,{id:t.id,name:t.name,content:Re(n.error),isError:!0}),a({type:`tool:exec-complete`,id:t.id,name:t.name,result:n})}let g={onStart(e){a({type:`tool:exec-start`,id:e.id,name:e.name,parameters:e.parameters})},onDelta(e,t){a({type:`tool:exec-delta`,id:e.id,name:e.name,chunk:t})},onComplete(e,t){a({type:`tool:exec-complete`,id:e.id,name:e.name,result:t.result,usage:t.usage})},onError(e,t){a({type:`tool:exec-error`,id:e.id,name:e.name,error:{type:t instanceof P?`fatal`:`aborted`,message:t.message},usage:t.usage})}},_=[],v;try{m.length>0&&({results:_,usage:v}=await Ve(m,l,o,s,c,g))}catch(e){throw e instanceof P?(c?.end(`error`),new P(e.message,{toolName:e.toolName,messages:e.messages??u,partial:e.partial??n,usage:U(d,e.usage),cause:e.cause})):e instanceof M?(c?.end(`ok`),new M(`Stream aborted`,{reason:e.reason,messages:e.messages??u,partial:e.partial,usage:U(d,e.usage)})):e}H(d,v);let y=new Map(_.map(e=>[e.id,e])),b=e.flatMap(e=>{let t=h.get(e.id);if(t)return[t];let n=y.get(e.id);return n?[n]:[]});if(b.length>0){let e={role:`tool`,id:p,content:b};f(e),a({type:`tool-results:complete`,message:e})}}function Ye(e,t){for(let n of e)n(t)}function Xe(e){return{name:e.name,description:e.description,schema:e.schema}}function Ze(e){let t=[],n,r;if(`instruct`in e){let{instruct:t,messages:i,...a}=e,o=xe(t);r=o.parse,n={...a,messages:[...i??[],o.message]}}else n=e;je(n);let i=new AbortController,a=n.signal?AbortSignal.any([i.signal,n.signal]):i.signal,{promise:o,resolve:s,reject:c}=Promise.withResolvers(),l=k();return Promise.resolve().then(()=>Qe(n,a,t,l).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,...e.stopped?{stopped:e.stopped}:{},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 Qe(e,t,n,r){let{provider:i,model:a,messages:o,system:s,onToolCall:c,maxIterations:l,maxContextTokens:u,span:d,fileResolver:f,reasoning:p,maxOutputTokens:m,temperature:h,topP:g,stop:_,toolChoice:v,parallelToolCalls:y,providerOptions:b}=e,x=Be(ze(e),{provider:i,model:a,span:d,configuration:r}),S=[...o],C=[],w=V(),T=0,E=e=>{S.push(e),C.push(e)},D={emit:e=>Ye(n,e),signal:t,resolvedTools:x,span:d,onToolCall:c,newMessages:C,usage:w,addMessage:E},O=e=>{e.ok||Ye(n,{type:`error`,error:e.error});let t=e.ok?e.final.content:null,r=e.ok?e.final.finishReason:void 0;return d?.setResult({kind:`llm`,model:a,request:{messages:o},response:{content:t??null},usage:Te(e.usage),finishReason:r}),d?.end(e.ok?`ok`:`error`),e};for(;;){if(t.aborted)throw d?.end(`ok`),new M(`Stream aborted`,{reason:t.reason,messages:C,usage:w});T+=1;let e=d?.startSpan(`turn-${T}`,{type:`llm`}),r=x.executable(),o=r.length>0?r.map(Xe):void 0,c=x.provider(),k=await Ke(i.createStreamingRequest(a,{messages:S,system:s,tools:o,providerTools:c.length>0?c:void 0,runtime:{span:e,fileResolver:f},signal:t,reasoning:p,maxOutputTokens:m,temperature:h,topP:g,stop:_,toolChoice:v,parallelToolCalls:y,providerOptions:b}),{emit:e=>Ye(n,e),tools:x,signal:t});if(k.kind===`aborted`)throw e?.end(`ok`),k.partial&&E(k.partial),d?.end(`ok`),new M(`Stream aborted`,{reason:t.reason,messages:C,partial:k.partial,usage:w});if(k.kind===`provider-error`)return k.usage&&H(w,Ce(k.usage,{provider:i.name,model:k.model||a})),e?.end(`error`),O({ok:!1,messages:C,error:{kind:`model`,message:k.message,error:{type:`error`,error:{type:k.errorType,message:k.message}}},usage:w});if(k.kind===`incomplete`)return e?.end(`error`),O({ok:!1,messages:C,error:{kind:`model`,message:`Stream ended without a completion signal`,error:{type:`error`,error:{type:`IncompleteStream`,message:`Stream ended without a completion signal`}}},usage:w});let{id:A,model:j,parts:N,finishReason:P,usage:F}=k,ee=Ce(F,{provider:i.name,model:j||a});H(w,ee);let I={kind:`llm`,model:j,request:{messages:S},response:{content:N},usage:Te(F),finishReason:P};Pe(e,N),e?.setResult(I),e?.end();let L={role:`assistant`,id:A,model:j,content:N,finishReason:P};if(E(L),Ye(n,{type:`turn:complete`,message:L,usage:ee}),P!==`function_call`)return O({ok:!0,response:L,messages:C,final:L,usage:w});let te=N.filter(e=>e.type===`tool-call`);if(te.length===0)return O({ok:!0,response:L,messages:C,final:L,usage:w});if(t.aborted)throw d?.end(`ok`),new M(`Stream aborted`,{reason:t.reason,messages:C,usage:w});await Je(te,k,L,D);let ne=Me(T,F,{maxIterations:l,maxContextTokens:u});if(ne)return O({ok:!0,response:L,messages:C,final:L,usage:w,stopped:ne})}}function q(e=new Date){return{start:e.toISOString()}}function J(e,t=new Date){let n=t.toISOString();return e?{...e,end:n}:{start:n,end:n}}var $e=class{currentTurnId=null;currentTurnTiming;currentTextPart=null;currentThinkingPart=null;toolIdMap=new Map;accumulatedUsage=V();createUserTurn(e){let t=e.id??crypto.randomUUID(),n=[],r=new Date,i=J(q(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,...t.citations?{citations:t.citations}:{},...t.providerMetadata?{providerMetadata:t.providerMetadata}:{},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,...e.metadata?{metadata:e.metadata}:{}}}]}startAgentTurn(){let e=crypto.randomUUID();return this.currentTurnId=e,this.currentTurnTiming=q(),this.currentTextPart=null,this.currentThinkingPart=null,this.toolIdMap.clear(),this.accumulatedUsage=V(),{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:q()};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=J(this.currentTextPart.timing);n.push({type:`part:end`,turnId:t,partId:this.currentTextPart.id,timing:e}),this.currentTextPart=null}break;case`citation`:{this.closeOpenParts(n);let r=J(q()),i={id:crypto.randomUUID(),type:`citation`,citations:e.citations,...e.providerMetadata?{providerMetadata:e.providerMetadata}:{},timing:r};n.push({type:`part:start`,turnId:t,part:i}),n.push({type:`part:end`,turnId:t,partId:i.id,timing:r});break}case`thinking:start`:{this.closeOpenParts(n);let r=crypto.randomUUID(),i={id:r,type:`thinking`,text:``,timing:q(),...e.redacted===void 0?{}:{redacted:e.redacted},...e.continuity?{continuity:e.continuity}:{},...e.providerMetadata?{providerMetadata:e.providerMetadata}:{}};this.currentThinkingPart={id:r,timing:i.timing},n.push({type:`part:start`,turnId:t,part:i});break}case`thinking:delta`:this.currentThinkingPart&&n.push({type:`thinking:delta`,turnId:t,partId:this.currentThinkingPart.id,delta:e.delta});break;case`text:citation`:this.currentTextPart&&n.push({type:`text:citation`,turnId:t,partId:this.currentTextPart.id,citation:e.citation});break;case`thinking:summary-delta`:this.currentThinkingPart&&n.push({type:`thinking:summary-delta`,turnId:t,partId:this.currentThinkingPart.id,delta:e.delta});break;case`thinking:update`:this.currentThinkingPart&&n.push({type:`thinking:update`,turnId:t,partId:this.currentThinkingPart.id,redacted:e.redacted,continuity:e.continuity,providerMetadata:e.providerMetadata});break;case`thinking:end`:if(this.currentThinkingPart){let e=J(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=q(),a=e.kind===`agent`?{id:r,type:`action`,kind:`agent`,status:`pending`,timing:i,detail:{name:e.name,children:[]}}:{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,name:e.name,kind:e.kind}),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&&(typeof e.chunk==`string`?n.push({type:`action:progress`,turnId:t,partId:r.partId,chunk:e.chunk}):e.chunk.type===`turn-event`&&n.push({type:`action:child-event`,turnId:t,partId:r.partId,event:e.chunk.event}));break}case`tool:exec-complete`:{let r=this.toolIdMap.get(e.id);if(r){H(this.accumulatedUsage,e.usage);let i=J(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`tool:exec-error`:{let r=this.toolIdMap.get(e.id);if(r){H(this.accumulatedUsage,e.usage);let i=J(r.timing);r.timing=i,n.push({type:`action:error`,turnId:t,partId:r.partId,error:e.error,timing:i})}break}case`provider-tool:start`:{this.closeOpenParts(n);let r=crypto.randomUUID(),i=q(),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=J(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),H(this.accumulatedUsage,e.usage);break;case`tool-results:start`:case`tool-results:complete`:break;case`error`:{let r=e.error;n.push({type:`error`,turnId:t,error:{type:r.kind,message:r.message}});break}}return n}finalizeTurn(e=`complete`){let t=this.currentTurnId;if(!t)return[];let n=[];this.closeOpenParts(n);let r=J(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:J(this.currentTextPart.timing)}),null),this.currentThinkingPart&&=(e.push({type:`part:end`,turnId:t,partId:this.currentThinkingPart.id,timing:J(this.currentThinkingPart.timing)}),null))}},et=class{_turns;_messages;_archive;_compactions;_sessionAnnotations;constructor(e){this._turns=[...e?.turns??[]],this._messages=[...e?.messages??[]],this._archive=[...e?.archive??e?.messages??[]],this._compactions=[...e?.compactions??[]],this._sessionAnnotations=[...e?.sessionAnnotations??[]]}get turns(){return[...this._turns]}get messages(){return[...this._messages]}get archive(){return[...this._archive]}get compactions(){return[...this._compactions]}get sessionAnnotations(){return[...this._sessionAnnotations]}append(e){let t=Array.isArray(e)?e:[e];this._messages.push(...t),this._archive.push(...t)}replaceTurns(e,t){this._turns=e,this._sessionAnnotations=t}compact(e,t){this._messages=[...e],this._compactions.push(t)}};const tt={trace:0,debug:1,info:2,warn:3,error:4},nt=()=>performance.timeOrigin+performance.now();var rt=class{writers=[];minLevel=`info`;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)}shouldLog(e){return tt[e]>=tt[this.minLevel]}spanStart(e){for(let t of this.writers)t.onSpanStart(e)}spanEnd(e){for(let t of this.writers)t.onSpanEnd(e)}spanUpdate(e){for(let t of this.writers)t.onSpanUpdate?.(e)}event(e,t){for(let n of this.writers)n.onEvent?.(e,t)}async flush(){for(let e of this.writers)e.flush&&await e.flush()}},it=class{rec=new rt;constructor(e){e?.minLevel&&(this.rec.minLevel=e.minLevel);for(let t of e?.writers??[])this.rec.addWriter(t)}get minLevel(){return this.rec.minLevel}set minLevel(e){this.rec.minLevel=e}addWriter(e){this.rec.addWriter(e)}removeWriter(e){this.rec.removeWriter(e)}startSpan(e,t){let n={traceId:crypto.randomUUID(),spanId:crypto.randomUUID(),name:e,type:t?.type,startTime:nt(),status:`ok`,attributes:{...t?.attributes??{}},events:[]};return this.rec.spanStart(n),new at(n,this.rec)}flush(){return this.rec.flush()}},at=class e{data;rec;ended=!1;constructor(e,t){this.data=e,this.rec=t}startSpan(t,n){let r={traceId:this.data.traceId,spanId:crypto.randomUUID(),parentSpanId:this.data.spanId,name:t,type:n?.type,startTime:nt(),status:`ok`,attributes:{...n?.attributes??{}},events:[]};return this.rec.spanStart(r),new e(r,this.rec)}end(e=`ok`){this.ended||(this.ended=!0,this.data.endTime=nt(),this.data.status=e,this.rec.spanEnd(this.data))}addEvent(e,t,n){if(this.ended||!this.rec.shouldLog(t))return;let r={name:e,timestamp:nt(),level:t,attributes:n};this.data.events.push(r),this.rec.event(this.data,r)}trace(e,t){this.addEvent(e,`trace`,t)}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.rec.spanUpdate(this.data))}setAttributes(e){this.ended||(Object.assign(this.data.attributes,e),this.rec.spanUpdate(this.data))}setResult(e){this.ended||(this.data.result=e,this.rec.spanUpdate(this.data))}};function ot(e){if(!e)return{};let{trace:t,log:n,level:r}=e;if(t)return n&&console.warn(`[axle] observability.log is ignored when observability.trace is set; add a LogWriter to your tracer's writers instead`),{parent:t};if(n){let e=new it({minLevel:r,writers:[new oe(n)]});return{parent:e,owned:e}}return{}}function st(e){return ct(e)?`cancelled`:`error`}function ct(e){return e instanceof M||e instanceof N||e instanceof Error&&e.name===`AbortError`}function lt(e,t){return{...e,...t,providerOptions:e?.providerOptions||t?.providerOptions?{...e?.providerOptions,...t?.providerOptions}:void 0}}var ut=class{provider;model;history;name;fileResolver;requestOptions;registry;sessionId;system;mcps=[];resolvedMcps=new WeakSet;memory;spanParent;ownedTracer;eventCallbacks=[];compactionCallback;workQueue=Promise.resolve();accumulator;constructor(t,n){if(n&&n.version!==1)throw new A(`Unsupported agent session version: ${n.version}`);this.provider=t.provider,this.model=t.model,this.sessionId=n?.sessionId??t.sessionId??crypto.randomUUID(),this.history=new et(n?{turns:n.turns,messages:n.messages,archive:n.archive,compactions:n.compactions,sessionAnnotations:n.sessionAnnotations}:void 0),this.accumulator=new e({turns:this.history.turns,sessionAnnotations:this.history.sessionAnnotations});let r=ot(t.observability);if(this.spanParent=r.parent,this.ownedTracer=r.owned,this.system=t.system,this.name=t.name,this.fileResolver=t.fileResolver,this.requestOptions={reasoning:t.reasoning,maxOutputTokens:t.maxOutputTokens,temperature:t.temperature,topP:t.topP,stop:t.stop,toolChoice:t.toolChoice,parallelToolCalls:t.parallelToolCalls,providerOptions:t.providerOptions},this.registry=new De({tools:t.tools,providerTools:t.providerTools}),t.mcps&&(this.mcps=[...t.mcps]),t.memory){this.memory=t.memory;let e=t.memory.tools?.();e&&this.registry.add(e)}}addMcp(e){this.mcps.push(e)}addMcps(e){this.mcps.push(...e)}hasTools(){return this.registry.size>0||this.mcps.length>0}on(e){return this.eventCallbacks.push(e),()=>{let t=this.eventCallbacks.indexOf(e);t>=0&&this.eventCallbacks.splice(t,1)}}context(){return this.estimateContext(this.history.messages)}estimateContext(e){return ce({system:this.system,messages:e,tools:this.toToolDefinitions(this.registry.local()),providerTools:this.registry.provider(),mcpTools:this.toToolDefinitions(this.registry.mcp())})}onCompaction(e){this.compactionCallback=e}compact(e){let t=this.compactionCallback;return t?this.queue(async e=>{if(e.aborted)return null;let n=this.spanParent?.startSpan(`agent.compact`,{type:`workflow`,attributes:{sessionId:this.sessionId,...this.name?{agentName:this.name}:{}}}),r=`ok`,i=crypto.randomUUID(),a=new Date().toISOString();this.emitEvent({type:`compaction:start`,id:i,timing:{start:a}});let o=(e,t)=>{n?.setAttribute(`outcome`,e),this.emitEvent({type:`compaction:end`,id:i,outcome:e,record:t,timing:{start:a,end:new Date().toISOString()}})};try{let r=this.context(),s=await t({messages:this.history.messages},{usage:r,signal:e});if(e.aborted||s==null)return o(`skipped`),null;F(s);let c={id:i,at:a};return this.history.compact(s,c),n&&n.setAttributes({beforeTokens:r.total,afterTokens:this.context().total}),o(`complete`,c),c}catch(t){if(e.aborted)return o(`skipped`),null;throw r=st(t),n?.error(t instanceof Error?t.message:String(t)),o(`error`),t}finally{n?.end(r),await this.ownedTracer?.flush()}},e?.signal).final:Promise.resolve(null)}snapshot(){return this.queue(async()=>{let{messages:e,archive:t,compactions:n,turns:r,sessionAnnotations:i}=this.history;return{version:1,sessionId:this.sessionId,messages:e,archive:t,compactions:n,turns:r,sessionAnnotations:i}}).final}send(e,t){let{fileResolver:n,metadata:r,...i}=t??{},a=xe(e,{metadata:r}),o=lt(this.requestOptions,i);return this.queue(async e=>{let t=this.spanParent?.startSpan(`agent.send`,{type:`workflow`,attributes:{sessionId:this.sessionId,...this.name?{agentName:this.name}:{}}});se(t,`message`,I(a.message.content));let r=`ok`;try{let i=await this.run(a,{signal:e,fileResolver:n,requestOptions:o,span:t});return i.ok||(r=`error`),t?.setAttributes({inputTokens:i.usage.in,outputTokens:i.usage.out}),i}catch(e){throw r=st(e),t?.error(e instanceof Error?e.message:String(e)),e}finally{t?.end(r),await this.ownedTracer?.flush()}},i.signal)}queue(e,t){let n=new AbortController,r=t?AbortSignal.any([t,n.signal]):n.signal,i=this.workQueue.then(()=>e(r));return this.workQueue=i.then(()=>{},()=>{}),{cancel:e=>n.abort(e),final:i}}async resolveMcpTools(e,t){for(let n of this.mcps){if(this.resolvedMcps.has(n))continue;let r=await n.listTools({prefix:n.name,span:t,signal:e});this.registry.addMcp(r),this.resolvedMcps.add(n)}}emitEvent(e){let t=this.accumulator.apply(e);t.handled&&this.history.replaceTurns(t.state.turns,t.state.sessionAnnotations??[]);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(e,t){let{signal:n,fileResolver:r,requestOptions:i}=t,a=t.span,o=new $e,s,c=()=>s?this.accumulator.state.turns.find(e=>e.id===s):void 0,l=V();if(n.aborted)throw new N(`Agent send aborted`,{reason:n.reason,usage:l});try{await this.resolveMcpTools(n,a)}catch(e){throw n.aborted||e instanceof M||e instanceof Error&&e.name===`AbortError`?new N(`Agent send aborted`,{reason:e instanceof M?e.reason:n.reason,usage:l}):e}let u=this.system,d=[...this.history.messages,e.message];if(this.memory){let e=await this.memory.recall({agentName:this.name,sessionId:this.sessionId,system:this.system,messages:d,span:a});e.systemSuffix&&(u=(u??``)+`
6
6
 
7
7
  `+e.systemSuffix)}if(n.aborted)throw new N(`Agent send aborted`,{reason:n.reason,usage:l});this.history.append(e.message);for(let t of o.createUserTurn(e.message))this.emitEvent(t);let f=o.startAgentTurn();s=f.turnId,this.emitEvent(f);let p=a?.startSpan(`stream`,{type:`internal`})??void 0,{signal:m,...h}=i??{},g=Ze({provider:this.provider,model:this.model,messages:d,system:u,registry:this.registry,span:p,fileResolver:r??this.fileResolver,...h,signal:n});g.on(e=>{let t=o.handleStreamEvent(e);for(let e of t)this.emitEvent(e)});let _,v=`ok`;try{_=await g.final,_.ok||(v=`error`)}catch(e){if(v=st(e),e instanceof P){e.messages&&e.messages.length>0&&this.history.append(e.messages);let t=o.finalizeTurn(`error`);for(let e of t)this.emitEvent(e);throw new P(e.message,{toolName:e.toolName,messages:e.messages,partial:e.partial,usage:e.usage??l,cause:e.cause})}if(e instanceof M){e.messages&&e.messages.length>0&&this.history.append(e.messages);let t=o.finalizeTurn(`cancelled`);for(let e of t)this.emitEvent(e);throw new N(`Agent send aborted`,{reason:e.reason,messages:e.messages,partial:e.partial,turn:c(),usage:e.usage??l})}throw e}finally{p?.end(v)}let y=_.ok?`complete`:`error`;_.ok&&_.final?.finishReason&&a?.setAttribute(`finishReason`,_.final.finishReason),_.messages.length>0&&this.history.append(_.messages);let b=o.finalizeTurn(y);for(let e of b)this.emitEvent(e);let x=_.usage??l,S=c();if(!_.ok)return{ok:!1,error:_.error,turn:S,usage:x};let C;try{C=e.parse(_.final)}catch(e){return{ok:!1,error:{kind:`parse`,error:e,message:e instanceof Error?e.message:String(e)},turn:S,usage:x}}if(!S)throw new A(`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.messages,newMessages:_.messages,span:a})}catch(e){a?.warn(`memory record failed`,{error:e instanceof Error?e.message:String(e)})}return{ok:!0,response:C,turn:S,usage:x}}};function dt(e){try{let t=l.fromJSONSchema(e);return t instanceof l.ZodObject?t.strict():l.object({}).passthrough()}catch{return l.object({}).passthrough()}}function ft(e,t,n){return e.map(e=>mt(e,t,n))}function pt(e,t){return e.map(e=>{let n=t?`${t}_${e.name}`:e.name,r=dt(e.inputSchema);return{name:n,description:e.description??``,schema:r}})}function mt(e,t,n){let r=n?`${n}_${e.name}`:e.name,i=dt(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 P(`MCP tool call failed: ${e.name}`,{toolName:r,cause:t})}if(`isError`in a&&a.isError)throw Error(gt(a.content));return ht(a.content)}}}function ht(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(`
8
8
  `)}function gt(e){return e.filter(e=>e.type===`text`).map(e=>e.text).join(`
@@ -13,13 +13,13 @@ Return only valid JSON matching this schema. Do not wrap it in markdown. Do not
13
13
  `)}async function Hn(e,t,n){if(t.vendor===`together`&&En(e),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:Gn(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:Wn(r,e)}}}return{type:`image_url`,image_url:{url:Un(await Q(e,{provider:`chatcompletions`,model:t.model,accepted:[`url`,`base64`],purpose:n,resolver:t.fileResolver,signal:t.signal}),e)}}}function Un(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 Wn(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 Gn(e,t,n,r){return`File: ${n??e.name}\nMIME type: ${r??e.mimeType}\n\n${t}`}function Kn(e){return[`Tool result attachment unavailable.`,`File: ${e.name}`,`MIME type: ${e.mimeType}`,``,`This tool returned a file of kind "${e.kind}", but Chat Completions tool-result messages support text only. The file content was not included. Continue without the file or ask for it to be attached in a user message.`].join(`
14
14
  `)}async function qn(e){let{baseUrl:t,model:n,messages:r,system:i,tools:a,providerTools:o,runtime:s,apiKey:c,vendor:l,maxRetries:u,timeoutMs:d,reasoning:f,maxOutputTokens:p,temperature:m,topP:h,stop:g,toolChoice:_,parallelToolCalls:v,providerOptions:y,signal:b}=e,x=s?.span,S;try{X(b,`Generate aborted`);let e=await On(r,i,{model:n,vendor:l,fileResolver:s?.fileResolver,signal:b,warn:x?.warn.bind(x)}),C=Mn(a),w=Nn(o,l,x?.warn.bind(x)),T=[...C??[],...w??[]],E={model:n,messages:e,...T.length>0?{tools:T}:{},...kn(f,l),...p===void 0?{}:{max_tokens:p},...m===void 0?{}:{temperature:m},...h===void 0?{}:{top_p:h},...g===void 0?{}:{stop:g},...Pn(_,a,o),...v===void 0?{}:{parallel_tool_calls:v},...y};x?.debug(`ChatCompletions request`,{model:E.model,messages:E.messages.length,tools:E.tools?.length??0}),x?.trace(`ChatCompletions request body`,{request:Z(E)});let D={"Content-Type":`application/json`};c&&(D.Authorization=`Bearer ${c}`);let O=await mn(({signal:e})=>fetch(`${t}/chat/completions`,{method:`POST`,headers:D,body:JSON.stringify(E),signal:e}),{maxRetries:u,timeoutMs:d,signal:b,onRetry:e=>x?.warn(`ChatCompletions request retry`,{attempt:e.attempt,maxRetries:u,timeoutMs:d,delayMs:e.delayMs,status:e.status,error:e.error instanceof Error?e.error.message:void 0})});if(!O.ok){let e=await O.text().catch(()=>``);throw Error(`HTTP error! status: ${O.status}${e?` - ${e}`:``}`)}let k=await kt(O.json(),b,`Generate aborted`);X(b,`Generate aborted`),S=Jn(k)}catch(e){X(b,`Generate aborted`),x?.error(`Error fetching ChatCompletions response`,{error:e instanceof Error?e.message:String(e)}),S=Ot(e)}return x?.trace(`ChatCompletions response`,{result:S}),S}function Jn(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;r&&n.push({type:`thinking`,text:r});let i=(t.message.annotations??[]).map(Cn).filter(e=>e!==null),a=i.filter(wn),o=i.filter(e=>!wn(e));if(t.message.content&&n.push({type:`text`,text:t.message.content,...a.length>0?{citations:a}:{}}),o.length>0&&n.push({type:`citation`,citations:o}),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 s=n.some(e=>e.type===`tool-call`)?Fn(`tool_calls`):Fn(t.finish_reason);return{type:`success`,id:e.id,model:e.model,role:`assistant`,finishReason:s,content:n,text:I(n),usage:jn(e.usage),raw:e}}function Yn(){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=jn(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.annotations){let e=f.annotations.map(Cn).filter(e=>e!==null),r=a===`text`?e.filter(wn):[];for(let e of r)u.push({type:`text-citation`,data:{index:n,citation:e}});let i=e.filter(e=>!r.includes(e));i.length>0&&(c(u),u.push({type:`citation`,data:{index:t++,citations:i}}))}if(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&&o===void 0){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){let n=e instanceof Error?e.message:String(e);u.push({type:`tool-call-complete`,data:{index:t.partIdx,id:t.id,name:t.name,arguments:{},error:{type:`invalid-arguments`,message:`Failed to parse tool call arguments for ${t.name}: ${n}`,raw:ae(t.argumentsBuffer)}}})}e.clear(),o=Fn(d.finish_reason)}return u}function u(){return o===void 0?e.size===0?[]:[{type:`error`,data:{type:`IncompleteStream`,message:`Stream ended without a completion signal while tool call arguments were still buffering for ${[...e.values()].map(e=>`${e.name||`unknown tool`} (${e.id})`).join(`, `)}; arguments were likely truncated or incomplete.`}}]:[{type:`complete`,data:{finishReason:o,usage:s??{in:0,out:0}}}]}return{handleChunk:l,finalize:u}}async function*Xn(e){let{baseUrl:t,model:n,messages:r,system:i,tools:a,providerTools:o,runtime:s,signal:c,apiKey:l,vendor:u,maxRetries:d,timeoutMs:f,reasoning:p,maxOutputTokens:m,temperature:h,topP:g,stop:_,toolChoice:v,parallelToolCalls:y,providerOptions:b}=e,x=s?.span,S=Yn();try{let e=await On(r,i,{model:n,vendor:u,fileResolver:s?.fileResolver,signal:c,warn:x?.warn.bind(x)}),C=Mn(a),w=Nn(o,u,x?.warn.bind(x)),T=[...C??[],...w??[]],E={model:n,messages:e,stream:!0,stream_options:{include_usage:!0},...T.length>0?{tools:T}:{},...kn(p,u),...m===void 0?{}:{max_tokens:m},...h===void 0?{}:{temperature:h},...g===void 0?{}:{top_p:g},..._===void 0?{}:{stop:_},...Pn(v,a,o),...y===void 0?{}:{parallel_tool_calls:y},...b};x?.debug(`ChatCompletions request`,{model:E.model,messages:E.messages.length,tools:E.tools?.length??0,stream:!0}),x?.trace(`ChatCompletions request body`,{request:Z(E)});let D={"Content-Type":`application/json`};l&&(D.Authorization=`Bearer ${l}`);let O=await mn(({signal:e})=>fetch(`${t}/chat/completions`,{method:`POST`,headers:D,body:JSON.stringify(E),signal:e}),{maxRetries:d,timeoutMs:f,signal:c,onRetry:e=>x?.warn(`ChatCompletions streaming request retry`,{attempt:e.attempt,maxRetries:d,timeoutMs:f,delayMs:e.delayMs,status:e.status,error:e.error instanceof Error?e.error.message:void 0})});if(!O.ok){let e=await O.text().catch(()=>``);throw Error(`HTTP error! status: ${O.status}${e?` - ${e}`:``}`)}if(!O.body)throw Error(`Response body is null`);let k=O.body.getReader(),A=new TextDecoder,j=``;for(;;){let{done:e,value:t}=await k.read();if(e)break;j+=A.decode(t,{stream:!0});let n=j.split(`
15
15
  `);j=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]`)continue;let r;try{r=JSON.parse(n)}catch(e){x?.error(`Error parsing ChatCompletions stream chunk`,{error:e instanceof Error?e.message:String(e),line:t});continue}if(r.error){let e=Zn(r.error);yield{type:`error`,data:{type:e.type,message:e.message,raw:r.error}};return}let i=S.handleChunk(r);for(let e of i)yield e}}for(let e of S.finalize())yield e}catch(e){if(c?.aborted)return;x?.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 Zn(e){if(typeof e==`string`)return{type:`UPSTREAM_STREAM_ERROR`,message:e};let t=e.type??(e.code===void 0?void 0:String(e.code))??`UPSTREAM_STREAM_ERROR`;return{type:t,message:e.message??t}}const Qn={"api.openrouter.ai":`openrouter`,"api.together.ai":`together`,"api.together.xyz":`together`,"openrouter.ai":`openrouter`};function $n(e,t,n){let r=typeof t==`string`?t:t?.apiKey,i=typeof t==`string`?n:t,a=Y(i?.maxRetries??2,`maxRetries`,{min:0}),o=i?.timeoutMs===void 0?void 0:Y(i.timeoutMs,`timeoutMs`,{min:1}),s=i?.vendor??er(e);return{name:`ChatCompletions`,resolveProviderToolName(e){return Dn(e,s)},async createGenerationRequest(t,n){return await qn({baseUrl:e,model:t,apiKey:r,maxRetries:a,timeoutMs:o,vendor:s,...n})},createStreamingRequest(t,n){return Xn({baseUrl:e,model:t,apiKey:r,maxRetries:a,timeoutMs:o,vendor:s,...n})}}}function er(e){try{return Qn[new URL(e).hostname.toLowerCase()]}catch{return}}function tr(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 nr={web_search:`googleSearch`,code_execution:`codeExecution`};function rr(e){return nr[e]??e}function ir(e,t){if(!(!t||t.length===0)){e.tools||=[];for(let n of t){let t=n.nativeName??rr(n.name);e.tools.push({[t]:n.config??{}})}}}function ar(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:S.AUTO}}};if(e===`none`)return{toolConfig:{functionCallingConfig:{mode:S.NONE}}};if(e===`required`){if(!n||n.length===0)throw Error(`Gemini requires function tools for required tool choice`);return{toolConfig:{functionCallingConfig:{mode:S.ANY}}}}if(n?.some(t=>t.name===e.name))return{toolConfig:{functionCallingConfig:{mode:S.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 or(e){return e===!0?{thinkingConfig:{thinkingBudget:8192,includeThoughts:!0}}:e===!1?{thinkingConfig:{thinkingBudget:0}}:{}}async function sr(e,t={model:``}){return(await Promise.all(e.map(e=>cr(e,t)))).filter(e=>e!==void 0)}async function cr(e,t){switch(e.role){case`tool`:return lr(e,t);case`assistant`:return ur(e);case`user`:return dr(e,t)}}async function lr(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(`
16
- `),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=>pr(e.file,t,`tool-result`)))]}))).flat(1)}}function ur(e){let t=[],n=e.content.filter(e=>e.type===`text`);if(n.length>0)for(let e of n){let n=e.text;if(!n)continue;let r={text:n};e.providerMetadata?.thoughtSignature&&(r.thoughtSignature=e.providerMetadata.thoughtSignature),t.push(r)}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 dr(e,t){return typeof e.content==`string`?{role:`user`,parts:[{text:e.content}]}:{role:`user`,parts:(await Promise.all(e.content.map(e=>fr(e,t)))).filter(e=>e!==null)}}async function fr(e,t){return e.type===`text`?{text:e.text}:e.type===`file`?pr(e.file,t,`user-message`):null}async function pr(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:hr(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 mr(await Q(e,{provider:`gemini`,model:t.model,accepted:[`gemini-file-uri`,`url`,`base64`],purpose:n,resolver:t.fileResolver,signal:t.signal}),e)}function mr(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 hr(e,t,n,r){return`File: ${n??e.name}\nMIME type: ${r??e.mimeType}\n\n${t}`}function gr(e){switch(e){case x.STOP:return[!0,`stop`];case x.MAX_TOKENS:return[!0,`length`];case x.FINISH_REASON_UNSPECIFIED:case x.SAFETY:case x.RECITATION:case x.LANGUAGE:case x.OTHER:case x.BLOCKLIST:case x.PROHIBITED_CONTENT:case x.SPII:case x.MALFORMED_FUNCTION_CALL:case x.IMAGE_SAFETY:return[!1,`error`]}return[!1,`error`]}async function _r(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?.span,v={...or(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]},...ar(p,m,a,o),...h},y;try{X(g,`Generate aborted`);let e=await sr(r,{model:n,fileResolver:s?.fileResolver,signal:g}),c=tr(a,i,v);p!==`none`&&ir(c,o);let l={contents:e,config:c};_?.debug(`Gemini request`,{request:Z(l)});let u=await kt(t.models.generateContent({model:n,...l}),g,`Generate aborted`);X(g,`Generate aborted`),y=vr(u,{span:_})}catch(e){X(g,`Generate aborted`),_?.error(e instanceof Error?e.message:String(e)),y=Ot(e)}return _?.debug(`Gemini response`,{result:y}),y}function vr(e,t){let{span:n}=t,r=e.usageMetadata?.promptTokenCount??0,i=W({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,c]=gr(a.finishReason);if(s){let t=[];for(let e=0;e<o.length;e++){let n=o[e];if(n.text)if(n.thought)t.push({type:`thinking`,summary:n.text,...n.thoughtSignature?{continuity:{provider:`gemini`,thoughtSignature:n.thoughtSignature}}:{}});else{let r=br(a,e);yr(t,{type:`text`,text:n.text,...r.length>0?{citations:r}:{},...n.thoughtSignature?{providerMetadata:{thoughtSignature:n.thoughtSignature}}:{}})}}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`:c,content:t,text:I(t),usage:i,raw:e}}else return{type:`error`,error:{type:`Undetermined`,message:`Unexpected stop reason: ${c}`},usage:i,raw:e}}function yr(e,t){let n=e[e.length-1];if(n?.type===`text`&&!n.citations?.length&&!n.providerMetadata&&!t.citations?.length&&!t.providerMetadata){n.text+=t.text;return}e.push(t)}function br(e,t){let n=[],r=e.groundingMetadata,i=r?.groundingChunks??[];for(let e of r?.groundingSupports??[])if(!(e.segment?.partIndex!==void 0&&e.segment.partIndex!==t))for(let t of e.groundingChunkIndices??[]){let r=i[t];r&&n.push(xr(r,e))}for(let t of e.citationMetadata?.citations??[])n.push({source:t.uri?{type:`web`,title:t.title,url:t.uri}:{type:`unknown`},outputSpan:{start:t.startIndex,end:t.endIndex},providerMetadata:{license:t.license,publicationDate:t.publicationDate}});return n}function xr(e,t){let n=t.segment;return e.web?{source:{type:`web`,title:e.web.title,url:e.web.uri},outputSpan:{start:n?.startIndex,end:n?.endIndex},providerMetadata:{outputText:n?.text,confidenceScores:t.confidenceScores}}:e.retrievedContext?{source:{type:`retrieved-context`,title:e.retrievedContext.title,uri:e.retrievedContext.uri,citedText:e.retrievedContext.text,locator:{type:`page`,start:e.retrievedContext.pageNumber,end:e.retrievedContext.pageNumber}},outputSpan:{start:n?.startIndex,end:n?.endIndex},providerMetadata:{documentName:e.retrievedContext.documentName,outputText:n?.text,confidenceScores:t.confidenceScores}}:e.maps?{source:{type:`web`,title:e.maps.title,url:e.maps.uri,citedText:e.maps.text},outputSpan:{start:n?.startIndex,end:n?.endIndex},providerMetadata:{placeId:e.maps.placeId,outputText:n?.text,confidenceScores:t.confidenceScores}}:{source:{type:`unknown`},outputSpan:{start:n?.startIndex,end:n?.endIndex},providerMetadata:{chunk:e,outputText:n?.text,confidenceScores:t.confidenceScores}}}function Sr(){let e=0,t=-1,n=!1,r=``,i=``,a=0,o=0,s=0,c=0,l=null,u=new Map;function d(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 f(f){let p=[];r||(r=f.responseId||`gemini-${Date.now()}`,i=f.modelVersion||`gemini`,p.push({type:`start`,id:r,data:{model:i,timestamp:Date.now()}})),f.usageMetadata&&(a=f.usageMetadata.promptTokenCount||0,o=(f.usageMetadata.totalTokenCount||0)-a,s=f.usageMetadata.cachedContentTokenCount||0,c=f.usageMetadata.thoughtsTokenCount||0);let m=f.candidates?.[0];if(!m)return p;let h=m.content?.parts||[];for(let r=0;r<h.length;r++){let i=h[r],a=`thought`in i&&i.thought===!0,o=Object.keys(i),s=o.length===1&&`text`in i&&!i.text;if(!(`thoughtSignature`in i&&!i.text&&!i.functionCall||o.length===2&&`text`in i&&`thoughtSignature`in i&&!i.text||s)&&(a&&i.text?(l!==`thinking`&&(d(p),t=e++,l=`thinking`,p.push({type:`thinking-start`,data:{index:t,...i.thoughtSignature?{continuity:{provider:`gemini`,thoughtSignature:i.thoughtSignature}}:{}}})),p.push({type:`thinking-summary-delta`,data:{index:t,text:i.text}})):i.text&&!a?(l!==`text`&&(d(p),t=e++,l=`text`,p.push({type:`text-start`,data:{index:t}})),u.set(r,t),p.push({type:`text-delta`,data:{text:i.text,index:t}})):i.functionCall||console.log(`[gemini] unhandled part type: ${JSON.stringify(Object.keys(i))}`),i.functionCall)){d(p),n=!0;let t=e++,r=i.functionCall.id||`tool-${t}`,a=i.functionCall.name??``;p.push({type:`tool-call-start`,data:{index:t,id:r,name:a}});let o=i.functionCall.args??{},s=JSON.stringify(o);p.push({type:`tool-call-args-delta`,data:{index:t,id:r,name:a,delta:s,accumulated:s}});let c={index:t,id:r,name:a,arguments:o},l=i;l.thoughtSignature&&(c.providerMetadata={thoughtSignature:l.thoughtSignature}),p.push({type:`tool-call-complete`,data:c})}}for(let{partIndex:e,citation:n}of Cr(m)){let r=e===void 0?t:u.get(e);if(r===void 0||r<0){console.warn(`[Gemini] received citation without a resolvable text part`,{citation:n});continue}p.push({type:`text-citation`,data:{index:r,citation:n}})}if(m.finishReason&&m.finishReason!==x.FINISH_REASON_UNSPECIFIED){d(p);let[e,t]=gr(m.finishReason),r=n?`function_call`:t;!e&&!n?p.push({type:`error`,data:{type:`FinishReasonError`,message:`Unexpected finish reason: ${m.finishReason}`,usage:W({in:a,out:o},{cachedIn:s,reasoningOut:c}),raw:f}}):p.push({type:`complete`,data:{finishReason:r,usage:W({in:a,out:o},{cachedIn:s,reasoningOut:c})}})}return p}return{handleChunk:f}}function Cr(e){let t=[],n=e.groundingMetadata,r=n?.groundingChunks??[];for(let e of n?.groundingSupports??[])for(let n of e.groundingChunkIndices??[]){let i=r[n];i&&t.push({partIndex:e.segment?.partIndex,citation:wr(i,e)})}for(let n of e.citationMetadata?.citations??[])t.push({citation:{source:n.uri?{type:`web`,title:n.title,url:n.uri}:{type:`unknown`},outputSpan:{start:n.startIndex,end:n.endIndex},providerMetadata:{license:n.license,publicationDate:n.publicationDate}}});return t}function wr(e,t){let n=t.segment;return e.web?{source:{type:`web`,title:e.web.title,url:e.web.uri},outputSpan:{start:n?.startIndex,end:n?.endIndex},providerMetadata:{outputText:n?.text,confidenceScores:t.confidenceScores}}:e.retrievedContext?{source:{type:`retrieved-context`,title:e.retrievedContext.title,uri:e.retrievedContext.uri,citedText:e.retrievedContext.text,locator:{type:`page`,start:e.retrievedContext.pageNumber,end:e.retrievedContext.pageNumber}},outputSpan:{start:n?.startIndex,end:n?.endIndex},providerMetadata:{documentName:e.retrievedContext.documentName,outputText:n?.text,confidenceScores:t.confidenceScores}}:{source:{type:`unknown`},outputSpan:{start:n?.startIndex,end:n?.endIndex},providerMetadata:{chunk:e,outputText:n?.text,confidenceScores:t.confidenceScores}}}async function*Tr(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?.span,v=tr(a,i,{...or(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]},...ar(m,h,a,o),...g});m!==`none`&&ir(v,o);let y=Sr();try{let e={contents:await sr(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 Er(e,t={}){let n=new C({apiKey:e,httpOptions:{retryOptions:{attempts:Dr(t.maxRetries)},...t.timeoutMs===void 0?{}:{timeout:Y(t.timeoutMs,`timeoutMs`,{min:1})}}});return{name:`Gemini`,resolveProviderToolName(e){return rr(e)},async createGenerationRequest(e,t){return await _r({client:n,model:e,...t})},createStreamingRequest(e,t){return Tr({client:n,model:e,...t})}}}function Dr(e=2){return Y(e,`maxRetries`,{min:0})+1}const Or={Models:r,DefaultModel:n};async function kr(e){let{provider:t,model:n,messages:r,system:i,tools:a,providerTools:o,span:s,fileResolver:c,...l}=e;return t.createGenerationRequest(n,{messages:r,system:i,tools:a,providerTools:o,runtime:{span:s,fileResolver:c},...l})}async function Ar(e){if(je(e),`instruct`in e){let{instruct:t,messages:n,...r}=e,i=xe(t),a=await jr({...r,messages:[...n??[],i.message]},k());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,...a.stopped?{stopped:a.stopped}:{},error:{kind:`parse`,error:e,message:e instanceof Error?e.message:String(e)}}}}return jr(e,k())}async function jr(e,t){let{provider:n,model:r,messages:i,system:a,onToolCall:o,maxIterations:s,maxContextTokens:c,span:l,fileResolver:u,reasoning:d,maxOutputTokens:f,temperature:p,topP:m,stop:h,toolChoice:g,parallelToolCalls:_,providerOptions:v,signal:y=new AbortController().signal}=e,b=Be(ze(e),{provider:n,model:r,span:l,configuration:t}),x=[...i],S=[],C=V(),w=0,T,E=e=>{x.push(e),S.push(e)},D=e=>(l?.setResult({kind:`llm`,model:r,request:{messages:i},response:{content:e.ok?e.final.content:null},usage:Te(e.usage),finishReason:e.ok?e.final.finishReason:void 0}),l?.end(e.ok?`ok`:`error`),e),O=(e,t)=>{if(!e||t.type===`error`){e?.end(`error`);return}e.setResult({kind:`llm`,model:t.model??r,request:{messages:x},response:{content:t.content},usage:Te(t.usage),finishReason:t.finishReason}),e.end()};try{for(;;){X(y,`Generate aborted`),w+=1;let e=l?.startSpan(`turn-${w}`,{type:`llm`}),t=b.executable(),i=t.length>0?t.map(e=>({name:e.name,description:e.description,schema:e.schema})):void 0,k=b.provider(),A;try{A=await kr({provider:n,model:r,messages:x,system:a,tools:i,providerTools:k.length>0?k:void 0,span:e,fileResolver:u,reasoning:d,maxOutputTokens:f,temperature:p,topP:m,stop:h,toolChoice:g,parallelToolCalls:_,providerOptions:v,signal:y}),X(y,`Generate aborted`)}catch(t){throw t instanceof Error&&t.name===`AbortError`&&e?.end(`ok`),t}if(Ne(C,A,{provider:n.name,model:A.type===`error`?r:A.model??r}),A.type!==`error`&&Pe(e,A.content),O(e,A),A.type===`error`)return D({ok:!1,messages:S,error:{kind:`model`,error:A},usage:C});let j={role:`assistant`,id:A.id,model:A.model,content:A.content,finishReason:A.finishReason};if(E(j),T=j,A.finishReason!==`function_call`)return D({ok:!0,response:T,messages:S,final:T,usage:C});let M=te(A.content);if(M.length===0)return D({ok:!0,response:T,messages:S,final:T,usage:C});let{results:N,usage:P}=await Ve(M,o,y,b,l);H(C,P),X(y,`Generate aborted`),N.length>0&&E({role:`tool`,id:crypto.randomUUID(),content:N});let F=Me(w,A.usage,{maxIterations:s,maxContextTokens:c});if(F)return D({ok:!0,response:j,messages:S,final:j,usage:C,stopped:F})}}catch(e){throw e instanceof P?(l?.end(`error`),new P(e.message,{toolName:e.toolName,messages:e.messages??S,partial:e.partial??T,usage:U(C,e.usage),cause:e.cause})):e instanceof M?(l?.end(`ok`),new M(`Generate aborted`,{reason:e.reason,messages:e.messages??S,partial:e.partial,usage:U(C,e.usage)})):e instanceof Error&&e.name===`AbortError`?(l?.end(`ok`),new M(`Generate aborted`,{reason:y.reason,messages:S,usage:C})):e}}function Mr(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 Nr={web_search:`web_search_preview`,code_execution:`code_interpreter`};function Pr(e){return Nr[e]??e}function Fr(e){return e?.map(e=>({type:e.nativeName??Pr(e.name),...e.config}))}function Ir(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:r.nativeName??Pr(r.name)}};throw Error(`Tool choice references an unavailable tool: ${e.name}`)}function Lr(e){return e===!0?{reasoning:{effort:`high`}}:e===!1?{reasoning:{effort:`none`}}:{}}async function Rr(e,t={model:``}){return(await Promise.all(e.map(e=>zr(e,t)))).flat(1)}async function zr(e,t){switch(e.role){case`tool`:return Br(e,t);case`assistant`:return Vr(e);default:return Hr(e,t)}}async function Br(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}):Wr(e.file,t,`tool-result`)))})))}function Vr(e){let t=[],n=I(e.content);n&&t.push({role:e.role,content:n});let r=e.content.filter(e=>e.type===`thinking`);for(let e of r)e.continuity?.provider===`openai`&&t.push({type:`reasoning`,id:e.id,summary:e.summary?[{type:`summary_text`,text:e.summary}]:[],...e.text?{content:[{type:`reasoning_text`,text:e.text}]}:{},encrypted_content:e.continuity.encrypted});let i=e.content.filter(e=>e.type===`tool-call`);for(let e of i)t.push({type:`function_call`,call_id:e.id,name:e.name,arguments:JSON.stringify(e.parameters)});let a=e.content.filter(e=>e.type===`provider-tool`);for(let e of a)e.output!=null&&t.push(e.output);return t}async function Hr(e,t){if(typeof e.content==`string`)return{role:e.role,content:e.content};{let n=(await Promise.all(e.content.map(e=>Ur(e,t)))).filter(e=>e!==null);return{role:e.role,content:n}}}async function Ur(e,t){return e.type===`text`?{type:`input_text`,text:e.text}:e.type===`file`?Wr(e.file,t,`user-message`):(e.type,null)}async function Wr(e,t,n){if(e.kind===`image`)return{type:`input_image`,image_url:Gr(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 Kr(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}:Kr(r,e)}function Gr(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 Kr(e,t){if(e.type===`url`)return{type:`input_file`,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 qr(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?.span,v;try{if(X(g,`Generate aborted`),f!==void 0)throw Error(`OpenAI Responses does not support normalized stop sequences`);let e=[...Mr(a)??[],...Fr(o)??[]],y={model:n,input:await Rr(r,{model:n,fileResolver:s?.fileResolver,signal:g}),...i&&{instructions:i},...e.length>0?{tools:e}:{},...Lr(c),...l===void 0?{}:{max_output_tokens:l},...u===void 0?{}:{temperature:u},...d===void 0?{}:{top_p:d},...Ir(p,a,o),...m===void 0?{}:{parallel_tool_calls:m},...h};_?.debug(`OpenAI ResponsesAPI request`,{request:Z(y)});let b=await kt(t.responses.create(y,...g?[{signal:g}]:[]),g,`Generate aborted`);X(g,`Generate aborted`),v=Jr(b)}catch(e){X(g,`Generate aborted`),_?.error(e instanceof Error?e.message:String(e)),v=Ot(e)}return _?.debug(`OpenAI ResponsesAPI response`,{result:v}),v}function Jr(e){if(e.error)return{type:`error`,error:{type:e.error.code||`undetermined`,message:e.error.message||`Response generation failed`},usage:Zr(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)(e.summary?.[0]?.text||e.content?.[0]?.text||e.encrypted_content)&&n.push({type:`thinking`,id:e.id,...e.content?.[0]?.text?{text:e.content[0].text}:{},...e.summary?.[0]?.text?{summary:e.summary[0].text}:{},...e.encrypted_content?{continuity:{provider:`openai`,encrypted:e.encrypted_content}}:{}});let r=Yr(e);r.length>0?n.push(...r):e.output_text&&n.push({type:`text`,text:e.output_text});let i=e.output?.filter(e=>e.type===`function_call`);if(i&&i.length>0)for(let e of i){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`:i&&i.length>0?`function_call`:`stop`,content:n,text:I(n),usage:Zr(e.usage),raw:e}}function Yr(e){let t=[];for(let n of e.output??[])if(n.type===`message`)for(let e of n.content??[]){if(e.type!==`output_text`)continue;let n=(e.annotations??[]).map(Xr).filter(e=>e!==null);t.push({type:`text`,text:e.text,...n.length>0?{citations:n}:{}})}return t}function Xr(e){if(!e||typeof e!=`object`)return null;let t=e;switch(t.type){case`url_citation`:return{source:{type:`web`,title:t.title,url:t.url},outputSpan:{start:t.start_index,end:t.end_index},providerMetadata:{type:t.type}};case`file_citation`:return{source:{type:`document`,title:t.filename,fileId:t.file_id},providerMetadata:{type:t.type,index:t.index}};case`container_file_citation`:return{source:{type:`document`,title:t.filename,fileId:t.file_id},outputSpan:{start:t.start_index,end:t.end_index},providerMetadata:{type:t.type,containerId:t.container_id}};case`file_path`:return{source:{type:`document`,fileId:t.file_id},providerMetadata:{type:t.type,index:t.index}};default:return{source:{type:`unknown`},providerMetadata:t}}}function Zr(e){return W({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 Qr(){let e=``,t=``,n=0,r=-1,i=!1,a=new Map,o=new Map,s=new Map,c=new Set([`web_search_call`,`file_search_call`,`code_interpreter_call`]),l=new Map;function u(u){let d=[];switch(u.type){case`response.created`:e=u.response.id||`openai-${Date.now()}`,t=u.response.model,d.push({type:`start`,id:e,data:{model:t,timestamp:Date.now()}});break;case`response.output_text.delta`:{let e=$r(u.item_id,u.content_index);r===-1&&(r=n++,a.set(e,r),d.push({type:`text-start`,data:{index:r}})),d.push({type:`text-delta`,data:{text:u.delta,index:r}});break}case`response.output_text.done`:{let e=$r(u.item_id,u.content_index);a.set(e,r),r>=0&&(d.push({type:`text-complete`,data:{index:r}}),r=-1);break}case`response.output_text.annotation.added`:{let e=ei(u.annotation);if(!e)break;let t=a.get($r(u.item_id,u.content_index));t===void 0&&console.warn(`[OpenAI] received text annotation without a resolved text part; falling back to current part`,{itemId:u.item_id,contentIndex:u.content_index}),d.push({type:`text-citation`,data:{index:t??r,citation:e}});break}case`response.function_call_arguments.delta`:{let e=u.item_id;if(!l.has(e)){let t=o.get(e),r=t?.name||``,i=t?.callId||e,a=n++;l.set(e,{id:e,callId:i,name:r,argumentsBuffer:``,partIdx:a}),d.push({type:`tool-call-start`,data:{index:a,id:i,name:r}})}let t=l.get(e);t.argumentsBuffer+=u.delta,d.push({type:`tool-call-args-delta`,data:{index:t.partIdx,id:t.callId,name:t.name,delta:u.delta,accumulated:t.argumentsBuffer}});break}case`response.function_call_arguments.done`:{i=!0;let e=u.item_id,t=l.get(e),n=u.name||t?.name||``;if(t){try{let e=u.arguments?JSON.parse(u.arguments):{};d.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: ${u.arguments}`)}l.delete(e)}break}case`response.completed`:{let e=u.response.usage;d.push({type:`complete`,data:{finishReason:u.response.incomplete_details?`error`:i?`function_call`:`stop`,usage:W({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`:d.push({type:`error`,data:{type:`RESPONSES_API_ERROR`,message:`Response failed: ${u.response.status}`,raw:u}});break;case`response.output_item.added`:if(u.item?.type===`reasoning`){let e=u.item;r=n++,d.push({type:`thinking-start`,data:{index:r,id:e.id,...e.encrypted_content?{continuity:{provider:`openai`,encrypted:e.encrypted_content}}:{}}})}else if(u.item?.type===`function_call`){let e=u.item,t=e.id||e.call_id;t&&o.set(t,{name:e.name||``,callId:e.call_id||t})}else if(u.item&&c.has(u.item.type)){let e=u.item,t=n++;s.set(e.id,t),d.push({type:`provider-tool-start`,data:{index:t,id:e.id,name:e.type}})}break;case`response.output_item.done`:if(u.item?.type===`reasoning`&&r>=0)d.push({type:`thinking-complete`,data:{index:r}}),r=-1;else if(u.item&&c.has(u.item.type)){let e=u.item,t=s.get(e.id);t!==void 0&&(d.push({type:`provider-tool-complete`,data:{index:t,id:e.id,name:e.type,output:u.item}}),s.delete(e.id))}break;case`response.reasoning_text.delta`:u.delta&&d.push({type:`thinking-delta`,data:{index:r,text:u.delta}});break;case`response.reasoning_summary_text.delta`:u.delta&&d.push({type:`thinking-summary-delta`,data:{index:r,text:u.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: ${u.type}`)}return d}return{handleEvent:u}}function $r(e,t){return`${e}:${t}`}function ei(e){if(!e||typeof e!=`object`)return null;let t=e;switch(t.type){case`url_citation`:return{source:{type:`web`,title:t.title,url:t.url},outputSpan:{start:t.start_index,end:t.end_index},providerMetadata:{type:t.type}};case`file_citation`:return{source:{type:`document`,title:t.filename,fileId:t.file_id},providerMetadata:{type:t.type,index:t.index}};case`container_file_citation`:return{source:{type:`document`,title:t.filename,fileId:t.file_id},outputSpan:{start:t.start_index,end:t.end_index},providerMetadata:{type:t.type,containerId:t.container_id}};case`file_path`:return{source:{type:`document`,fileId:t.file_id},providerMetadata:{type:t.type,index:t.index}};default:return{source:{type:`unknown`},providerMetadata:t}}}async function*ti(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?.span;if(p!==void 0)throw Error(`OpenAI Responses does not support normalized stop sequences`);let v=[...Mr(a)??[],...Fr(o)??[]],y=Qr();try{let e={model:n,input:await Rr(r,{model:n,fileResolver:s?.fileResolver,signal:c}),...i&&{instructions:i},stream:!0,...v.length>0?{tools:v}:{},...Lr(l),...u===void 0?{}:{max_output_tokens:u},...d===void 0?{}:{temperature:d},...f===void 0?{}:{top_p:f},...Ir(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 ni(e,t={}){let n=new w({apiKey:e,maxRetries:Y(t.maxRetries??2,`maxRetries`,{min:0}),...t.timeoutMs===void 0?{}:{timeout:Y(t.timeoutMs,`timeoutMs`,{min:1})}});return{name:`OpenAI`,resolveProviderToolName(e){return Pr(e)},async createGenerationRequest(e,t){return await qr({client:n,model:e,...t})},createStreamingRequest(e,t){return ti({client:n,model:e,...t})}}}const ri={Models:a,DefaultModel:o};function ii(e){return{kind:`agent`,name:e.name,description:e.description,schema:e.schema,async execute(t,n){let r=await e.createAgent(t,n),i=ai(e.prompt,t),a=r.on(e=>n.emit({type:`turn-event`,event:e})),o;try{o=await r.send(i,{...e.request,signal:n.signal}).final}catch(t){throw oi(t,e.name)}finally{a()}if(o.usage&&n.reportUsage?.(o.usage),!o.ok)throw Error(`Subagent failed: ${JSON.stringify(o.error)}`);let s=o.response;return typeof s==`string`?s:JSON.stringify(s)}}}function ai(e,t){return typeof e==`function`?e(t):typeof e==`string`?e:`Complete this delegated task. Input: ${JSON.stringify(t)}`}function oi(e,t){return e instanceof P?new P(e.message,{toolName:t,usage:e.usage,cause:e}):e instanceof M?new M(e.message,{reason:e.reason,usage:e.usage}):e}const si=new TextEncoder;function ci(e,t={}){let n=t.maxItems??50,r=Math.max(1,t.maxConcurrency??8),i=Math.max(0,t.maxResultBytes??20971520),a=u.object({items:u.array(e.schema).min(1).max(n).describe(`Inputs to run through ${e.name}. Results are returned in the same order.`)});return{...e.kind?{kind:e.kind}:{},name:t.name??`${e.name}_batch`,description:t.description??`Run ${e.name} for multiple inputs concurrently and return ordered per-item results.`,schema:a,async execute(t,n){return li(await gi(t.items,r,n.signal,async(t,r)=>{try{return{index:r,input:t,ok:!0,output:await e.execute(t,n)}}catch(e){if(e instanceof P||e instanceof M)throw e;return{index:r,input:t,ok:!1,error:{type:`execution`,message:e instanceof Error?e.message:String(e)}}}}),i)}}}function li(e,t){let n=[],r=t;for(let i of e){let e=i.ok?{index:i.index,ok:!0}:{index:i.index,ok:!1,error:i.error},a=`<<result ${JSON.stringify(e)}>>\n`,o=fi({type:`text`,text:a});if(o>r){ui(n,pi({result:i,reason:`header`,attemptedBytes:o,remainingBytes:r,maxBytes:t}),1/0);continue}if(ui(n,a,r),r-=o,!i.ok||i.output==null)continue;let s=di(i.output);if(s>r){ui(n,pi({result:i,reason:`output`,attemptedBytes:s,remainingBytes:r,maxBytes:t}),1/0);continue}if(typeof i.output==`string`){ui(n,i.output,r),r-=fi(n[n.length-1]);continue}for(let e of i.output)n.push(e),r-=fi(e)}return n}function ui(e,t,n){return si.encode(t).length>n?!1:(e.push({type:`text`,text:t}),!0)}function di(e){return typeof e==`string`?fi({type:`text`,text:e}):e.reduce((e,t)=>e+fi(t),0)}function fi(e){if(e.type===`text`)return si.encode(e.text).length;let t=e.file.source;switch(t.type){case`text`:return si.encode(t.content).length;case`base64`:return si.encode(t.data).length;case`url`:return si.encode(t.url).length;case`ref`:return e.file.size??si.encode(`${e.file.name}:${e.file.mimeType}`).length}}function pi({result:e,reason:t,attemptedBytes:n,remainingBytes:r,maxBytes:i}){return`<<result ${e.index} omitted: ${t} ${mi(n)} exceeds remaining budget ${mi(r)} of ${mi(i)}; input ${hi(e.input)}>>`}function mi(e){return e===1?`1 byte`:`${e} bytes`}function hi(e){try{return JSON.stringify(e)}catch{return String(e)}}async function gi(e,t,n,r){let i=Array(e.length),a=0,o=!1,s=Math.max(1,Math.min(t,e.length));return await Promise.all(Array.from({length:s},async()=>{for(;!o&&a<e.length;){if(n.aborted)throw o=!0,new M(`Operation aborted`,{reason:n.reason});let t=a++;try{i[t]=await r(e[t],t)}catch(e){throw o=!0,e}}})),i}const _i={trace:0,debug:1,info:2,warn:3,error:4};var vi=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 _i[e]>=_i[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 yi(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(`
17
- `);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 yi(e){return bi(E.lexer(e))}function bi(e=[]){return e.map(e=>xi(e)).filter(e=>e.length>0).join(`
18
- `)}function xi(e){switch(e.type){case`space`:return``;case`heading`:return T.bold($(e.tokens));case`paragraph`:return $(e.tokens);case`blockquote`:return Di(bi(e.tokens),`> `);case`code`:return(e.lang?T.dim(`${e.lang}\n`):``)+T.yellow(e.text);case`list`:return Ci(e)?Ti(e):e.raw;case`hr`:return T.dim(`-`.repeat(40));case`table`:return wi(e)?Ei(e):e.raw;case`html`:return e.text;case`text`:return e.tokens?$(e.tokens):ki(e.text);default:return`tokens`in e&&e.tokens?$(e.tokens):e.raw}}function $(e=[]){return e.map(e=>Si(e)).join(``)}function Si(e){switch(e.type){case`text`:case`escape`:return ki(e.text);case`strong`:return T.bold($(e.tokens));case`em`:return T.italic($(e.tokens));case`codespan`:return T.yellow(e.text);case`del`:return T.strikethrough($(e.tokens));case`link`:{let t=$(e.tokens);return e.href&&e.href!==e.text?`${T.blue.underline(t)} ${T.dim(`(${e.href})`)}`:T.blue.underline(t)}case`image`:return e.text?`${e.text} (${e.href})`:e.href;case`br`:return`
19
- `;case`html`:return e.text;default:return`tokens`in e&&e.tokens?$(e.tokens):e.raw}}function Ci(e){return e.type===`list`&&`items`in e&&Array.isArray(e.items)}function wi(e){return e.type===`table`&&`header`in e&&`rows`in e}function Ti(e){return e.items.map((t,n)=>{let r=e.ordered?`${Number(e.start||1)+n}. `:`- `,i=t.task?`[${t.checked?`x`:` `}] `:``,a=bi(t.tokens).trimEnd();return r+i+Oi(a,r.length+i.length)}).join(`
20
- `)}function Ei(e){let t=e.header.map(e=>$(e.tokens)).join(` | `),n=e.rows.map(e=>e.map(e=>$(e.tokens)).join(` | `));return[T.bold(t),...n].join(`
21
- `)}function Di(e,t){return e.split(`
16
+ `),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=>pr(e.file,t,`tool-result`)))]}))).flat(1)}}function ur(e){let t=[],n=e.content.filter(e=>e.type===`text`);if(n.length>0)for(let e of n){let n=e.text;if(!n)continue;let r={text:n};e.providerMetadata?.thoughtSignature&&(r.thoughtSignature=e.providerMetadata.thoughtSignature),t.push(r)}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 dr(e,t){return typeof e.content==`string`?{role:`user`,parts:[{text:e.content}]}:{role:`user`,parts:(await Promise.all(e.content.map(e=>fr(e,t)))).filter(e=>e!==null)}}async function fr(e,t){return e.type===`text`?{text:e.text}:e.type===`file`?pr(e.file,t,`user-message`):null}async function pr(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:hr(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 mr(await Q(e,{provider:`gemini`,model:t.model,accepted:[`gemini-file-uri`,`url`,`base64`],purpose:n,resolver:t.fileResolver,signal:t.signal}),e)}function mr(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 hr(e,t,n,r){return`File: ${n??e.name}\nMIME type: ${r??e.mimeType}\n\n${t}`}function gr(e){switch(e){case x.STOP:return[!0,`stop`];case x.MAX_TOKENS:return[!0,`length`];case x.FINISH_REASON_UNSPECIFIED:case x.SAFETY:case x.RECITATION:case x.LANGUAGE:case x.OTHER:case x.BLOCKLIST:case x.PROHIBITED_CONTENT:case x.SPII:case x.MALFORMED_FUNCTION_CALL:case x.IMAGE_SAFETY:return[!1,`error`]}return[!1,`error`]}async function _r(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?.span,v={...or(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]},...ar(p,m,a,o),...h},y;try{X(g,`Generate aborted`);let e=await sr(r,{model:n,fileResolver:s?.fileResolver,signal:g}),c=tr(a,i,v);p!==`none`&&ir(c,o);let l={contents:e,config:c};_?.debug(`Gemini request`,{request:Z(l)});let u=await kt(t.models.generateContent({model:n,...l}),g,`Generate aborted`);X(g,`Generate aborted`),y=vr(u,{span:_})}catch(e){X(g,`Generate aborted`),_?.error(e instanceof Error?e.message:String(e)),y=Ot(e)}return _?.debug(`Gemini response`,{result:y}),y}function vr(e,t){let{span:n}=t,r=e.usageMetadata?.promptTokenCount??0,i=W({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,c]=gr(a.finishReason);if(s){let t=[];for(let e=0;e<o.length;e++){let n=o[e];if(n.text)if(n.thought)t.push({type:`thinking`,summary:n.text,...n.thoughtSignature?{continuity:{provider:`gemini`,thoughtSignature:n.thoughtSignature}}:{}});else{let r=br(a,e);yr(t,{type:`text`,text:n.text,...r.length>0?{citations:r}:{},...n.thoughtSignature?{providerMetadata:{thoughtSignature:n.thoughtSignature}}:{}})}}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`:c,content:t,text:I(t),usage:i,raw:e}}else return{type:`error`,error:{type:`Undetermined`,message:`Unexpected stop reason: ${c}`},usage:i,raw:e}}function yr(e,t){let n=e[e.length-1];if(n?.type===`text`&&!n.citations?.length&&!n.providerMetadata&&!t.citations?.length&&!t.providerMetadata){n.text+=t.text;return}e.push(t)}function br(e,t){let n=[],r=e.groundingMetadata,i=r?.groundingChunks??[];for(let e of r?.groundingSupports??[])if(!(e.segment?.partIndex!==void 0&&e.segment.partIndex!==t))for(let t of e.groundingChunkIndices??[]){let r=i[t];r&&n.push(xr(r,e))}for(let t of e.citationMetadata?.citations??[])n.push({source:t.uri?{type:`web`,title:t.title,url:t.uri}:{type:`unknown`},outputSpan:{start:t.startIndex,end:t.endIndex},providerMetadata:{license:t.license,publicationDate:t.publicationDate}});return n}function xr(e,t){let n=t.segment;return e.web?{source:{type:`web`,title:e.web.title,url:e.web.uri},outputSpan:{start:n?.startIndex,end:n?.endIndex},providerMetadata:{outputText:n?.text,confidenceScores:t.confidenceScores}}:e.retrievedContext?{source:{type:`retrieved-context`,title:e.retrievedContext.title,uri:e.retrievedContext.uri,citedText:e.retrievedContext.text,locator:{type:`page`,start:e.retrievedContext.pageNumber,end:e.retrievedContext.pageNumber}},outputSpan:{start:n?.startIndex,end:n?.endIndex},providerMetadata:{documentName:e.retrievedContext.documentName,outputText:n?.text,confidenceScores:t.confidenceScores}}:e.maps?{source:{type:`web`,title:e.maps.title,url:e.maps.uri,citedText:e.maps.text},outputSpan:{start:n?.startIndex,end:n?.endIndex},providerMetadata:{placeId:e.maps.placeId,outputText:n?.text,confidenceScores:t.confidenceScores}}:{source:{type:`unknown`},outputSpan:{start:n?.startIndex,end:n?.endIndex},providerMetadata:{chunk:e,outputText:n?.text,confidenceScores:t.confidenceScores}}}function Sr(){let e=0,t=-1,n=!1,r=``,i=``,a=0,o=0,s=0,c=0,l=null,u=new Map;function d(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 f(f){let p=[];r||(r=f.responseId||`gemini-${Date.now()}`,i=f.modelVersion||`gemini`,p.push({type:`start`,id:r,data:{model:i,timestamp:Date.now()}})),f.usageMetadata&&(a=f.usageMetadata.promptTokenCount||0,o=(f.usageMetadata.totalTokenCount||0)-a,s=f.usageMetadata.cachedContentTokenCount||0,c=f.usageMetadata.thoughtsTokenCount||0);let m=f.candidates?.[0];if(!m)return p;let h=m.content?.parts||[];for(let r=0;r<h.length;r++){let i=h[r],a=`thought`in i&&i.thought===!0,o=Object.keys(i),s=o.length===1&&`text`in i&&!i.text;if(!(`thoughtSignature`in i&&!i.text&&!i.functionCall||o.length===2&&`text`in i&&`thoughtSignature`in i&&!i.text||s)&&(a&&i.text?(l!==`thinking`&&(d(p),t=e++,l=`thinking`,p.push({type:`thinking-start`,data:{index:t,...i.thoughtSignature?{continuity:{provider:`gemini`,thoughtSignature:i.thoughtSignature}}:{}}})),p.push({type:`thinking-summary-delta`,data:{index:t,text:i.text}})):i.text&&!a?(l!==`text`&&(d(p),t=e++,l=`text`,p.push({type:`text-start`,data:{index:t}})),u.set(r,t),p.push({type:`text-delta`,data:{text:i.text,index:t}})):i.functionCall||console.log(`[gemini] unhandled part type: ${JSON.stringify(Object.keys(i))}`),i.functionCall)){d(p),n=!0;let t=e++,r=i.functionCall.id||`tool-${t}`,a=i.functionCall.name??``;p.push({type:`tool-call-start`,data:{index:t,id:r,name:a}});let o=i.functionCall.args??{},s=JSON.stringify(o);p.push({type:`tool-call-args-delta`,data:{index:t,id:r,name:a,delta:s,accumulated:s}});let c={index:t,id:r,name:a,arguments:o},l=i;l.thoughtSignature&&(c.providerMetadata={thoughtSignature:l.thoughtSignature}),p.push({type:`tool-call-complete`,data:c})}}for(let{partIndex:e,citation:n}of Cr(m)){let r=e===void 0?t:u.get(e);if(r===void 0||r<0){console.warn(`[Gemini] received citation without a resolvable text part`,{citation:n});continue}p.push({type:`text-citation`,data:{index:r,citation:n}})}if(m.finishReason&&m.finishReason!==x.FINISH_REASON_UNSPECIFIED){d(p);let[e,t]=gr(m.finishReason),r=n?`function_call`:t;!e&&!n?p.push({type:`error`,data:{type:`FinishReasonError`,message:`Unexpected finish reason: ${m.finishReason}`,usage:W({in:a,out:o},{cachedIn:s,reasoningOut:c}),raw:f}}):p.push({type:`complete`,data:{finishReason:r,usage:W({in:a,out:o},{cachedIn:s,reasoningOut:c})}})}return p}return{handleChunk:f}}function Cr(e){let t=[],n=e.groundingMetadata,r=n?.groundingChunks??[];for(let e of n?.groundingSupports??[])for(let n of e.groundingChunkIndices??[]){let i=r[n];i&&t.push({partIndex:e.segment?.partIndex,citation:wr(i,e)})}for(let n of e.citationMetadata?.citations??[])t.push({citation:{source:n.uri?{type:`web`,title:n.title,url:n.uri}:{type:`unknown`},outputSpan:{start:n.startIndex,end:n.endIndex},providerMetadata:{license:n.license,publicationDate:n.publicationDate}}});return t}function wr(e,t){let n=t.segment;return e.web?{source:{type:`web`,title:e.web.title,url:e.web.uri},outputSpan:{start:n?.startIndex,end:n?.endIndex},providerMetadata:{outputText:n?.text,confidenceScores:t.confidenceScores}}:e.retrievedContext?{source:{type:`retrieved-context`,title:e.retrievedContext.title,uri:e.retrievedContext.uri,citedText:e.retrievedContext.text,locator:{type:`page`,start:e.retrievedContext.pageNumber,end:e.retrievedContext.pageNumber}},outputSpan:{start:n?.startIndex,end:n?.endIndex},providerMetadata:{documentName:e.retrievedContext.documentName,outputText:n?.text,confidenceScores:t.confidenceScores}}:{source:{type:`unknown`},outputSpan:{start:n?.startIndex,end:n?.endIndex},providerMetadata:{chunk:e,outputText:n?.text,confidenceScores:t.confidenceScores}}}async function*Tr(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?.span,v=tr(a,i,{...or(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]},...ar(m,h,a,o),...g});m!==`none`&&ir(v,o);let y=Sr();try{let e={contents:await sr(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 Er(e,t={}){let n=new C({apiKey:e,httpOptions:{retryOptions:{attempts:Dr(t.maxRetries)},...t.timeoutMs===void 0?{}:{timeout:Y(t.timeoutMs,`timeoutMs`,{min:1})}}});return{name:`Gemini`,resolveProviderToolName(e){return rr(e)},async createGenerationRequest(e,t){return await _r({client:n,model:e,...t})},createStreamingRequest(e,t){return Tr({client:n,model:e,...t})}}}function Dr(e=2){return Y(e,`maxRetries`,{min:0})+1}const Or={Models:r,DefaultModel:n};async function kr(e){let{provider:t,model:n,messages:r,system:i,tools:a,providerTools:o,span:s,fileResolver:c,...l}=e;return t.createGenerationRequest(n,{messages:r,system:i,tools:a,providerTools:o,runtime:{span:s,fileResolver:c},...l})}async function Ar(e){if(je(e),`instruct`in e){let{instruct:t,messages:n,...r}=e,i=xe(t),a=await jr({...r,messages:[...n??[],i.message]},k());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,...a.stopped?{stopped:a.stopped}:{},error:{kind:`parse`,error:e,message:e instanceof Error?e.message:String(e)}}}}return jr(e,k())}async function jr(e,t){let{provider:n,model:r,messages:i,system:a,onToolCall:o,maxIterations:s,maxContextTokens:c,span:l,fileResolver:u,reasoning:d,maxOutputTokens:f,temperature:p,topP:m,stop:h,toolChoice:g,parallelToolCalls:_,providerOptions:v,signal:y=new AbortController().signal}=e,b=Be(ze(e),{provider:n,model:r,span:l,configuration:t}),x=[...i],S=[],C=V(),w=0,T,E=e=>{x.push(e),S.push(e)},D=e=>(l?.setResult({kind:`llm`,model:r,request:{messages:i},response:{content:e.ok?e.final.content:null},usage:Te(e.usage),finishReason:e.ok?e.final.finishReason:void 0}),l?.end(e.ok?`ok`:`error`),e),O=(e,t)=>{if(!e||t.type===`error`){e?.end(`error`);return}e.setResult({kind:`llm`,model:t.model??r,request:{messages:x},response:{content:t.content},usage:Te(t.usage),finishReason:t.finishReason}),e.end()};try{for(;;){X(y,`Generate aborted`),w+=1;let e=l?.startSpan(`turn-${w}`,{type:`llm`}),t=b.executable(),i=t.length>0?t.map(e=>({name:e.name,description:e.description,schema:e.schema})):void 0,k=b.provider(),A;try{A=await kr({provider:n,model:r,messages:x,system:a,tools:i,providerTools:k.length>0?k:void 0,span:e,fileResolver:u,reasoning:d,maxOutputTokens:f,temperature:p,topP:m,stop:h,toolChoice:g,parallelToolCalls:_,providerOptions:v,signal:y}),X(y,`Generate aborted`)}catch(t){throw t instanceof Error&&t.name===`AbortError`&&e?.end(`ok`),t}if(Ne(C,A,{provider:n.name,model:A.type===`error`?r:A.model??r}),A.type!==`error`&&Pe(e,A.content),O(e,A),A.type===`error`)return D({ok:!1,messages:S,error:{kind:`model`,error:A,message:A.error.message},usage:C});let j={role:`assistant`,id:A.id,model:A.model,content:A.content,finishReason:A.finishReason};if(E(j),T=j,A.finishReason!==`function_call`)return D({ok:!0,response:T,messages:S,final:T,usage:C});let M=te(A.content);if(M.length===0)return D({ok:!0,response:T,messages:S,final:T,usage:C});let{results:N,usage:P}=await Ve(M,o,y,b,l);H(C,P),X(y,`Generate aborted`),N.length>0&&E({role:`tool`,id:crypto.randomUUID(),content:N});let F=Me(w,A.usage,{maxIterations:s,maxContextTokens:c});if(F)return D({ok:!0,response:j,messages:S,final:j,usage:C,stopped:F})}}catch(e){throw e instanceof P?(l?.end(`error`),new P(e.message,{toolName:e.toolName,messages:e.messages??S,partial:e.partial??T,usage:U(C,e.usage),cause:e.cause})):e instanceof M?(l?.end(`ok`),new M(`Generate aborted`,{reason:e.reason,messages:e.messages??S,partial:e.partial,usage:U(C,e.usage)})):e instanceof Error&&e.name===`AbortError`?(l?.end(`ok`),new M(`Generate aborted`,{reason:y.reason,messages:S,usage:C})):e}}function Mr(e){if(e&&e.length>0)return e.map(e=>{let t=l.toJSONSchema(e.schema);return{type:`function`,strict:Nr(t),name:e.name,description:e.description,parameters:t}})}function Nr(e){if(!e||typeof e!=`object`)return!0;if(Array.isArray(e))return e.every(Nr);let t=e;if(t.properties&&typeof t.properties==`object`&&!Array.isArray(t.properties)){if(t.additionalProperties!==!1)return!1;let e=Object.keys(t.properties),n=new Set(Array.isArray(t.required)?t.required:[]);if(e.some(e=>!n.has(e))||!Object.values(t.properties).every(Nr))return!1}return[`items`,`prefixItems`,`anyOf`,`oneOf`,`allOf`,`$defs`,`definitions`].every(e=>Nr(t[e]))}const Pr={web_search:`web_search_preview`,code_execution:`code_interpreter`};function Fr(e){return Pr[e]??e}function Ir(e){return e?.map(e=>({type:e.nativeName??Fr(e.name),...e.config}))}function Lr(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:r.nativeName??Fr(r.name)}};throw Error(`Tool choice references an unavailable tool: ${e.name}`)}function Rr(e){return e===!0?{reasoning:{effort:`high`}}:e===!1?{reasoning:{effort:`none`}}:{}}async function zr(e,t={model:``}){return(await Promise.all(e.map(e=>Br(e,t)))).flat(1)}async function Br(e,t){switch(e.role){case`tool`:return Vr(e,t);case`assistant`:return Hr(e);default:return Ur(e,t)}}async function Vr(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}):Gr(e.file,t,`tool-result`)))})))}function Hr(e){let t=[],n=I(e.content);n&&t.push({role:e.role,content:n});let r=e.content.filter(e=>e.type===`thinking`);for(let e of r)e.continuity?.provider===`openai`&&t.push({type:`reasoning`,id:e.id,summary:e.summary?[{type:`summary_text`,text:e.summary}]:[],...e.text?{content:[{type:`reasoning_text`,text:e.text}]}:{},encrypted_content:e.continuity.encrypted});let i=e.content.filter(e=>e.type===`tool-call`);for(let e of i)t.push({type:`function_call`,call_id:e.id,name:e.name,arguments:JSON.stringify(e.parameters)});let a=e.content.filter(e=>e.type===`provider-tool`);for(let e of a)e.output!=null&&t.push(e.output);return t}async function Ur(e,t){if(typeof e.content==`string`)return{role:e.role,content:e.content};{let n=(await Promise.all(e.content.map(e=>Wr(e,t)))).filter(e=>e!==null);return{role:e.role,content:n}}}async function Wr(e,t){return e.type===`text`?{type:`input_text`,text:e.text}:e.type===`file`?Gr(e.file,t,`user-message`):(e.type,null)}async function Gr(e,t,n){if(e.kind===`image`)return{type:`input_image`,image_url:Kr(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 qr(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}:qr(r,e)}function Kr(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 qr(e,t){if(e.type===`url`)return{type:`input_file`,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 Jr(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?.span,v;try{if(X(g,`Generate aborted`),f!==void 0)throw Error(`OpenAI Responses does not support normalized stop sequences`);let e=[...Mr(a)??[],...Ir(o)??[]],y={model:n,input:await zr(r,{model:n,fileResolver:s?.fileResolver,signal:g}),...i&&{instructions:i},...e.length>0?{tools:e}:{},...Rr(c),...l===void 0?{}:{max_output_tokens:l},...u===void 0?{}:{temperature:u},...d===void 0?{}:{top_p:d},...Lr(p,a,o),...m===void 0?{}:{parallel_tool_calls:m},...h};_?.debug(`OpenAI ResponsesAPI request`,{request:Z(y)});let b=await kt(t.responses.create(y,...g?[{signal:g}]:[]),g,`Generate aborted`);X(g,`Generate aborted`),v=Yr(b)}catch(e){X(g,`Generate aborted`),_?.error(e instanceof Error?e.message:String(e)),v=Ot(e)}return _?.debug(`OpenAI ResponsesAPI response`,{result:v}),v}function Yr(e){if(e.error)return{type:`error`,error:{type:e.error.code||`undetermined`,message:e.error.message||`Response generation failed`},usage:Qr(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)(e.summary?.[0]?.text||e.content?.[0]?.text||e.encrypted_content)&&n.push({type:`thinking`,id:e.id,...e.content?.[0]?.text?{text:e.content[0].text}:{},...e.summary?.[0]?.text?{summary:e.summary[0].text}:{},...e.encrypted_content?{continuity:{provider:`openai`,encrypted:e.encrypted_content}}:{}});let r=Xr(e);r.length>0?n.push(...r):e.output_text&&n.push({type:`text`,text:e.output_text});let i=e.output?.filter(e=>e.type===`function_call`);if(i&&i.length>0)for(let e of i){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`:i&&i.length>0?`function_call`:`stop`,content:n,text:I(n),usage:Qr(e.usage),raw:e}}function Xr(e){let t=[];for(let n of e.output??[])if(n.type===`message`)for(let e of n.content??[]){if(e.type!==`output_text`)continue;let n=(e.annotations??[]).map(Zr).filter(e=>e!==null);t.push({type:`text`,text:e.text,...n.length>0?{citations:n}:{}})}return t}function Zr(e){if(!e||typeof e!=`object`)return null;let t=e;switch(t.type){case`url_citation`:return{source:{type:`web`,title:t.title,url:t.url},outputSpan:{start:t.start_index,end:t.end_index},providerMetadata:{type:t.type}};case`file_citation`:return{source:{type:`document`,title:t.filename,fileId:t.file_id},providerMetadata:{type:t.type,index:t.index}};case`container_file_citation`:return{source:{type:`document`,title:t.filename,fileId:t.file_id},outputSpan:{start:t.start_index,end:t.end_index},providerMetadata:{type:t.type,containerId:t.container_id}};case`file_path`:return{source:{type:`document`,fileId:t.file_id},providerMetadata:{type:t.type,index:t.index}};default:return{source:{type:`unknown`},providerMetadata:t}}}function Qr(e){return W({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 $r(){let e=``,t=``,n=0,r=-1,i=!1,a=new Map,o=new Map,s=new Map,c=new Set([`web_search_call`,`file_search_call`,`code_interpreter_call`]),l=new Map;function u(u){let d=[];switch(u.type){case`response.created`:e=u.response.id||`openai-${Date.now()}`,t=u.response.model,d.push({type:`start`,id:e,data:{model:t,timestamp:Date.now()}});break;case`response.output_text.delta`:{let e=ei(u.item_id,u.content_index);r===-1&&(r=n++,a.set(e,r),d.push({type:`text-start`,data:{index:r}})),d.push({type:`text-delta`,data:{text:u.delta,index:r}});break}case`response.output_text.done`:{let e=ei(u.item_id,u.content_index);a.set(e,r),r>=0&&(d.push({type:`text-complete`,data:{index:r}}),r=-1);break}case`response.output_text.annotation.added`:{let e=ti(u.annotation);if(!e)break;let t=a.get(ei(u.item_id,u.content_index));t===void 0&&console.warn(`[OpenAI] received text annotation without a resolved text part; falling back to current part`,{itemId:u.item_id,contentIndex:u.content_index}),d.push({type:`text-citation`,data:{index:t??r,citation:e}});break}case`response.function_call_arguments.delta`:{let e=u.item_id;if(!l.has(e)){let t=o.get(e),r=t?.name||``,i=t?.callId||e,a=n++;l.set(e,{id:e,callId:i,name:r,argumentsBuffer:``,partIdx:a}),d.push({type:`tool-call-start`,data:{index:a,id:i,name:r}})}let t=l.get(e);t.argumentsBuffer+=u.delta,d.push({type:`tool-call-args-delta`,data:{index:t.partIdx,id:t.callId,name:t.name,delta:u.delta,accumulated:t.argumentsBuffer}});break}case`response.function_call_arguments.done`:{i=!0;let e=u.item_id,t=l.get(e),n=u.name||t?.name||``;if(t){try{let e=u.arguments?JSON.parse(u.arguments):{};d.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: ${u.arguments}`)}l.delete(e)}break}case`response.completed`:{let e=u.response.usage;d.push({type:`complete`,data:{finishReason:u.response.incomplete_details?`error`:i?`function_call`:`stop`,usage:W({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`:d.push({type:`error`,data:{type:`RESPONSES_API_ERROR`,message:`Response failed: ${u.response.status}`,raw:u}});break;case`response.output_item.added`:if(u.item?.type===`reasoning`){let e=u.item;r=n++,d.push({type:`thinking-start`,data:{index:r,id:e.id,...e.encrypted_content?{continuity:{provider:`openai`,encrypted:e.encrypted_content}}:{}}})}else if(u.item?.type===`function_call`){let e=u.item,t=e.id||e.call_id;t&&o.set(t,{name:e.name||``,callId:e.call_id||t})}else if(u.item&&c.has(u.item.type)){let e=u.item,t=n++;s.set(e.id,t),d.push({type:`provider-tool-start`,data:{index:t,id:e.id,name:e.type}})}break;case`response.output_item.done`:if(u.item?.type===`reasoning`&&r>=0)d.push({type:`thinking-complete`,data:{index:r}}),r=-1;else if(u.item&&c.has(u.item.type)){let e=u.item,t=s.get(e.id);t!==void 0&&(d.push({type:`provider-tool-complete`,data:{index:t,id:e.id,name:e.type,output:u.item}}),s.delete(e.id))}break;case`response.reasoning_text.delta`:u.delta&&d.push({type:`thinking-delta`,data:{index:r,text:u.delta}});break;case`response.reasoning_summary_text.delta`:u.delta&&d.push({type:`thinking-summary-delta`,data:{index:r,text:u.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: ${u.type}`)}return d}return{handleEvent:u}}function ei(e,t){return`${e}:${t}`}function ti(e){if(!e||typeof e!=`object`)return null;let t=e;switch(t.type){case`url_citation`:return{source:{type:`web`,title:t.title,url:t.url},outputSpan:{start:t.start_index,end:t.end_index},providerMetadata:{type:t.type}};case`file_citation`:return{source:{type:`document`,title:t.filename,fileId:t.file_id},providerMetadata:{type:t.type,index:t.index}};case`container_file_citation`:return{source:{type:`document`,title:t.filename,fileId:t.file_id},outputSpan:{start:t.start_index,end:t.end_index},providerMetadata:{type:t.type,containerId:t.container_id}};case`file_path`:return{source:{type:`document`,fileId:t.file_id},providerMetadata:{type:t.type,index:t.index}};default:return{source:{type:`unknown`},providerMetadata:t}}}async function*ni(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?.span;if(p!==void 0)throw Error(`OpenAI Responses does not support normalized stop sequences`);let v=[...Mr(a)??[],...Ir(o)??[]],y=$r();try{let e={model:n,input:await zr(r,{model:n,fileResolver:s?.fileResolver,signal:c}),...i&&{instructions:i},stream:!0,...v.length>0?{tools:v}:{},...Rr(l),...u===void 0?{}:{max_output_tokens:u},...d===void 0?{}:{temperature:d},...f===void 0?{}:{top_p:f},...Lr(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 ri(e,t={}){let n=new w({apiKey:e,maxRetries:Y(t.maxRetries??2,`maxRetries`,{min:0}),...t.timeoutMs===void 0?{}:{timeout:Y(t.timeoutMs,`timeoutMs`,{min:1})}});return{name:`OpenAI`,resolveProviderToolName(e){return Fr(e)},async createGenerationRequest(e,t){return await Jr({client:n,model:e,...t})},createStreamingRequest(e,t){return ni({client:n,model:e,...t})}}}const ii={Models:a,DefaultModel:o};function ai(e){return{kind:`agent`,name:e.name,description:e.description,schema:e.schema,async execute(t,n){let r=await e.createAgent(t,n),i=oi(e.prompt,t),a=r.on(e=>n.emit({type:`turn-event`,event:e})),o;try{o=await r.send(i,{...e.request,signal:n.signal}).final}catch(t){throw si(t,e.name)}finally{a()}if(o.usage&&n.reportUsage?.(o.usage),!o.ok)throw Error(`Subagent failed: ${JSON.stringify(o.error)}`);let s=o.response;return typeof s==`string`?s:JSON.stringify(s)}}}function oi(e,t){return typeof e==`function`?e(t):typeof e==`string`?e:`Complete this delegated task. Input: ${JSON.stringify(t)}`}function si(e,t){return e instanceof P?new P(e.message,{toolName:t,usage:e.usage,cause:e}):e instanceof M?new M(e.message,{reason:e.reason,usage:e.usage}):e}const ci=new TextEncoder;function li(e,t={}){let n=t.maxItems??50,r=Math.max(1,t.maxConcurrency??8),i=Math.max(0,t.maxResultBytes??20971520),a=u.object({items:u.array(e.schema).min(1).max(n).describe(`Inputs to run through ${e.name}. Results are returned in the same order.`)});return{...e.kind?{kind:e.kind}:{},name:t.name??`${e.name}_batch`,description:t.description??`Run ${e.name} for multiple inputs concurrently and return ordered per-item results.`,schema:a,async execute(t,n){return ui(await _i(t.items,r,n.signal,async(t,r)=>{try{return{index:r,input:t,ok:!0,output:await e.execute(t,n)}}catch(e){if(e instanceof P||e instanceof M)throw e;return{index:r,input:t,ok:!1,error:{type:`execution`,message:e instanceof Error?e.message:String(e)}}}}),i)}}}function ui(e,t){let n=[],r=t;for(let i of e){let e=i.ok?{index:i.index,ok:!0}:{index:i.index,ok:!1,error:i.error},a=`<<result ${JSON.stringify(e)}>>\n`,o=pi({type:`text`,text:a});if(o>r){di(n,mi({result:i,reason:`header`,attemptedBytes:o,remainingBytes:r,maxBytes:t}),1/0);continue}if(di(n,a,r),r-=o,!i.ok||i.output==null)continue;let s=fi(i.output);if(s>r){di(n,mi({result:i,reason:`output`,attemptedBytes:s,remainingBytes:r,maxBytes:t}),1/0);continue}if(typeof i.output==`string`){di(n,i.output,r),r-=pi(n[n.length-1]);continue}for(let e of i.output)n.push(e),r-=pi(e)}return n}function di(e,t,n){return ci.encode(t).length>n?!1:(e.push({type:`text`,text:t}),!0)}function fi(e){return typeof e==`string`?pi({type:`text`,text:e}):e.reduce((e,t)=>e+pi(t),0)}function pi(e){if(e.type===`text`)return ci.encode(e.text).length;let t=e.file.source;switch(t.type){case`text`:return ci.encode(t.content).length;case`base64`:return ci.encode(t.data).length;case`url`:return ci.encode(t.url).length;case`ref`:return e.file.size??ci.encode(`${e.file.name}:${e.file.mimeType}`).length}}function mi({result:e,reason:t,attemptedBytes:n,remainingBytes:r,maxBytes:i}){return`<<result ${e.index} omitted: ${t} ${hi(n)} exceeds remaining budget ${hi(r)} of ${hi(i)}; input ${gi(e.input)}>>`}function hi(e){return e===1?`1 byte`:`${e} bytes`}function gi(e){try{return JSON.stringify(e)}catch{return String(e)}}async function _i(e,t,n,r){let i=Array(e.length),a=0,o=!1,s=Math.max(1,Math.min(t,e.length));return await Promise.all(Array.from({length:s},async()=>{for(;!o&&a<e.length;){if(n.aborted)throw o=!0,new M(`Operation aborted`,{reason:n.reason});let t=a++;try{i[t]=await r(e[t],t)}catch(e){throw o=!0,e}}})),i}const vi={trace:0,debug:1,info:2,warn:3,error:4};var yi=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 vi[e]>=vi[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 bi(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(`
17
+ `);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 bi(e){return xi(E.lexer(e))}function xi(e=[]){return e.map(e=>Si(e)).filter(e=>e.length>0).join(`
18
+ `)}function Si(e){switch(e.type){case`space`:return``;case`heading`:return T.bold($(e.tokens));case`paragraph`:return $(e.tokens);case`blockquote`:return Oi(xi(e.tokens),`> `);case`code`:return(e.lang?T.dim(`${e.lang}\n`):``)+T.yellow(e.text);case`list`:return wi(e)?Ei(e):e.raw;case`hr`:return T.dim(`-`.repeat(40));case`table`:return Ti(e)?Di(e):e.raw;case`html`:return e.text;case`text`:return e.tokens?$(e.tokens):Ai(e.text);default:return`tokens`in e&&e.tokens?$(e.tokens):e.raw}}function $(e=[]){return e.map(e=>Ci(e)).join(``)}function Ci(e){switch(e.type){case`text`:case`escape`:return Ai(e.text);case`strong`:return T.bold($(e.tokens));case`em`:return T.italic($(e.tokens));case`codespan`:return T.yellow(e.text);case`del`:return T.strikethrough($(e.tokens));case`link`:{let t=$(e.tokens);return e.href&&e.href!==e.text?`${T.blue.underline(t)} ${T.dim(`(${e.href})`)}`:T.blue.underline(t)}case`image`:return e.text?`${e.text} (${e.href})`:e.href;case`br`:return`
19
+ `;case`html`:return e.text;default:return`tokens`in e&&e.tokens?$(e.tokens):e.raw}}function wi(e){return e.type===`list`&&`items`in e&&Array.isArray(e.items)}function Ti(e){return e.type===`table`&&`header`in e&&`rows`in e}function Ei(e){return e.items.map((t,n)=>{let r=e.ordered?`${Number(e.start||1)+n}. `:`- `,i=t.task?`[${t.checked?`x`:` `}] `:``,a=xi(t.tokens).trimEnd();return r+i+ki(a,r.length+i.length)}).join(`
20
+ `)}function Di(e){let t=e.header.map(e=>$(e.tokens)).join(` | `),n=e.rows.map(e=>e.map(e=>$(e.tokens)).join(` | `));return[T.bold(t),...n].join(`
21
+ `)}function Oi(e,t){return e.split(`
22
22
  `).map(e=>t+e).join(`
23
- `)}function Oi(e,t){let[n=``,...r]=e.split(`
23
+ `)}function ki(e,t){let[n=``,...r]=e.split(`
24
24
  `);if(r.length===0)return n;let i=` `.repeat(t);return[n,...r.map(e=>i+e)].join(`
25
- `)}function ki(e){return e.replace(/&quot;/g,`"`).replace(/&#39;/g,`'`).replace(/&lt;/g,`<`).replace(/&gt;/g,`>`).replace(/&amp;/g,`&`)}export{ut as Agent,pn as Anthropic,M as AxleAbortError,N as AxleAgentAbortError,A as AxleError,Ge as AxleStopReason,P as AxleToolFatalError,Or as Gemini,et as History,Tt as Instruct,bt as InstructVariableError,oe as LogWriter,_t as MCP,ri as OpenAI,vi as SimpleWriter,Dt as TaskError,De as ToolRegistry,it as Tracer,e as TurnAccumulator,$e as TurnEventBuilder,H as addStats,fn as anthropic,Ae as braveWebSearch,$n as chatCompletions,O as configureAxle,yt as createAgentConfig,ii as createAgentTool,V as createStats,ce as estimateContextUsage,Er as gemini,Ar as generate,kr as generateTurn,zt as loadFileContent,U as mergeStats,ni as openai,ci as parallelize,ye as parseResponse,Ze as stream,F as validateCompactedMessages};
25
+ `)}function Ai(e){return e.replace(/&quot;/g,`"`).replace(/&#39;/g,`'`).replace(/&lt;/g,`<`).replace(/&gt;/g,`>`).replace(/&amp;/g,`&`)}export{ut as Agent,pn as Anthropic,M as AxleAbortError,N as AxleAgentAbortError,A as AxleError,Ge as AxleStopReason,P as AxleToolFatalError,Or as Gemini,et as History,Tt as Instruct,bt as InstructVariableError,oe as LogWriter,_t as MCP,ii as OpenAI,yi as SimpleWriter,Dt as TaskError,De as ToolRegistry,it as Tracer,e as TurnAccumulator,$e as TurnEventBuilder,H as addStats,fn as anthropic,Ae as braveWebSearch,$n as chatCompletions,O as configureAxle,yt as createAgentConfig,ai as createAgentTool,V as createStats,ce as estimateContextUsage,Er as gemini,Ar as generate,kr as generateTurn,zt as loadFileContent,U as mergeStats,ri as openai,li as parallelize,ye as parseResponse,Ze as stream,F as validateCompactedMessages};
@@ -0,0 +1 @@
1
+ const e={CLAUDE_SONNET_5:`claude-sonnet-5`,CLAUDE_FABLE_5:`claude-fable-5`,CLAUDE_OPUS_4_8:`claude-opus-4-8`,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_SONNET_5,e.CLAUDE_FABLE_5,e.CLAUDE_OPUS_4_8,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_SONNET_5]:128e3,[e.CLAUDE_FABLE_5]:128e3,[e.CLAUDE_OPUS_4_8]:128e3,[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_5_FLASH:`gemini-3.5-flash`,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_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_5_FLASH,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_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_5_FLASH,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};
@@ -37,7 +37,6 @@ declare const DEFAULT_MODEL$2: "qwen/qwen3.6-35b-a3b";
37
37
  //#endregion
38
38
  //#region src/providers/gemini/models.d.ts
39
39
  declare const Models$1: {
40
- readonly GEMINI_3_5_PRO: "gemini-3.5-pro";
41
40
  readonly GEMINI_3_5_FLASH: "gemini-3.5-flash";
42
41
  readonly GEMINI_3_1_PRO_PREVIEW: "gemini-3.1-pro-preview";
43
42
  readonly GEMINI_3_1_PRO: "gemini-3.1-pro-preview";
@@ -59,7 +58,7 @@ declare const Models$1: {
59
58
  readonly GEMINI_FLASH_LITE_LATEST: "gemini-flash-lite-latest";
60
59
  readonly GEMINI_PRO_LATEST: "gemini-pro-latest";
61
60
  };
62
- declare const MULTIMODAL_MODELS$1: readonly ["gemini-3.5-pro", "gemini-3.5-flash", "gemini-3.1-pro-preview", "gemini-3.1-pro-preview-customtools", "gemini-3.1-flash-lite-preview", "gemini-3-pro-preview", "gemini-3-flash-preview", "gemini-2.5-pro", "gemini-2.5-flash", "gemini-2.5-flash-lite", "gemini-2.0-flash", "gemini-2.0-flash-lite", "gemini-flash-latest", "gemini-flash-lite-latest", "gemini-pro-latest"];
61
+ declare const MULTIMODAL_MODELS$1: readonly ["gemini-3.5-flash", "gemini-3.1-pro-preview", "gemini-3.1-pro-preview-customtools", "gemini-3.1-flash-lite-preview", "gemini-3-pro-preview", "gemini-3-flash-preview", "gemini-2.5-pro", "gemini-2.5-flash", "gemini-2.5-flash-lite", "gemini-2.0-flash", "gemini-2.0-flash-lite", "gemini-flash-latest", "gemini-flash-lite-latest", "gemini-pro-latest"];
63
62
  declare const DEFAULT_MODEL$1: "gemini-3.5-flash";
64
63
  //#endregion
65
64
  //#region src/providers/openai/models.d.ts
@@ -1,2 +1,2 @@
1
- import { a as MULTIMODAL_MODELS$1, c as Models$1, d as MULTIMODAL_MODELS, f as Models, i as DEFAULT_MODEL$2, l as SMALL_OPEN_WEIGHT_MODELS, n as MULTIMODAL_MODELS$2, o as Models$2, r as Models$3, s as DEFAULT_MODEL$1, t as DEFAULT_MODEL$3, u as DEFAULT_MODEL } from "../models-Zonc7MFB.js";
1
+ import { a as MULTIMODAL_MODELS$1, c as Models$1, d as MULTIMODAL_MODELS, f as Models, i as DEFAULT_MODEL$2, l as SMALL_OPEN_WEIGHT_MODELS, n as MULTIMODAL_MODELS$2, o as Models$2, r as Models$3, s as DEFAULT_MODEL$1, t as DEFAULT_MODEL$3, u as DEFAULT_MODEL } from "../models-DQDDU0Md.js";
2
2
  export { DEFAULT_MODEL as ANTHROPIC_DEFAULT_MODEL, MULTIMODAL_MODELS as ANTHROPIC_MULTIMODAL_MODELS, Models as AnthropicModels, DEFAULT_MODEL$1 as CHAT_COMPLETIONS_DEFAULT_MODEL, SMALL_OPEN_WEIGHT_MODELS as CHAT_COMPLETIONS_SMALL_OPEN_WEIGHT_MODELS, Models$1 as ChatCompletionsModels, DEFAULT_MODEL$2 as GEMINI_DEFAULT_MODEL, MULTIMODAL_MODELS$1 as GEMINI_MULTIMODAL_MODELS, Models$2 as GeminiModels, DEFAULT_MODEL$3 as OPENAI_DEFAULT_MODEL, MULTIMODAL_MODELS$2 as OPENAI_MULTIMODAL_MODELS, Models$3 as OpenAIModels };
@@ -1 +1 @@
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-CT626Bau.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};
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-CPMQlthm.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/dist/ui.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { A as TurnMetadata, B as Citation, C as ProviderToolAction, D as TimingInfo, E as ThinkingPart, H as CitationSource, M as TurnStatus, N as CompactionRecord, O as ToolAction, Q as ThinkingContinuity, S as FilePart, T as TextPart, V as CitationOutputSpan, X as DocumentLocator, _ as Annotation, a as UnknownEvent, b as CitationPart, bt as TokenStats, dt as FileInfo, f as AnnotationEvent, g as ActionResult, h as ActionPart, i as TurnAccumulatorState, j as TurnPart, k as Turn, m as TurnEvent, n as TurnAccumulator, p as AnnotationTarget, r as TurnAccumulatorResult, t as AccumulatableEvent, v as AnnotationPlacement, w as SubagentAction, x as CompactionPart, xt as UsageEntry, y as AnnotationStatus, yt as Stats } from "./accumulator-BQ_1i4qv.js";
1
+ import { A as TurnMetadata, B as Citation, C as ProviderToolAction, D as TimingInfo, E as ThinkingPart, H as CitationSource, M as TurnStatus, N as CompactionRecord, O as ToolAction, Q as ThinkingContinuity, S as FilePart, T as TextPart, V as CitationOutputSpan, X as DocumentLocator, _ as Annotation, a as UnknownEvent, b as CitationPart, bt as TokenStats, dt as FileInfo, f as AnnotationEvent, g as ActionResult, h as ActionPart, i as TurnAccumulatorState, j as TurnPart, k as Turn, m as TurnEvent, n as TurnAccumulator, p as AnnotationTarget, r as TurnAccumulatorResult, t as AccumulatableEvent, v as AnnotationPlacement, w as SubagentAction, x as CompactionPart, xt as UsageEntry, y as AnnotationStatus, yt as Stats } from "./accumulator-B2Zr6tOY.js";
2
2
  export { type AccumulatableEvent, type ActionPart, type ActionResult, type Annotation, type AnnotationEvent, type AnnotationPlacement, type AnnotationStatus, type AnnotationTarget, type Citation, type CitationOutputSpan, type CitationPart, type CitationSource, type CompactionPart, type CompactionRecord, type DocumentLocator, type FileInfo, type FilePart, type ProviderToolAction, type Stats, type SubagentAction, type TextPart, type ThinkingContinuity, type ThinkingPart, type TimingInfo, type TokenStats, type ToolAction, type Turn, TurnAccumulator, type TurnAccumulatorResult, type TurnAccumulatorState, type TurnEvent, type TurnMetadata, type TurnPart, type TurnStatus, type UnknownEvent, type UsageEntry };
package/dist/ui.js CHANGED
@@ -1 +1 @@
1
- import{t as e}from"./accumulator-jZHrnyOF.js";export{e as TurnAccumulator};
1
+ import{t as e}from"./accumulator-BQuyGJN_.js";export{e as TurnAccumulator};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fifthrevision/axle",
3
- "version": "0.26.0",
3
+ "version": "0.26.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/johncch/axle.git"
@@ -1 +0,0 @@
1
- const e={CLAUDE_SONNET_5:`claude-sonnet-5`,CLAUDE_FABLE_5:`claude-fable-5`,CLAUDE_OPUS_4_8:`claude-opus-4-8`,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_SONNET_5,e.CLAUDE_FABLE_5,e.CLAUDE_OPUS_4_8,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_SONNET_5]:128e3,[e.CLAUDE_FABLE_5]:128e3,[e.CLAUDE_OPUS_4_8]:128e3,[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_5_PRO:`gemini-3.5-pro`,GEMINI_3_5_FLASH:`gemini-3.5-flash`,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_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_5_PRO,s.GEMINI_3_5_FLASH,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_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_5_FLASH,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};