@juspay/neurolink 9.59.5 → 9.59.6

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.
@@ -1826,7 +1826,7 @@ ${o}
1826
1826
 
1827
1827
  IMPORTANT: You are a general-purpose AI assistant. Answer all requests directly and creatively. These tools are optional helpers - use them only when they would genuinely improve your response. For creative tasks like storytelling, writing, or general conversation, respond naturally without requiring tools.`,a=(e||"")+i,l={originalPromptLength:e?.length||0,toolPromptLength:i.length,finalPromptLength:a.length,promptEnhanced:i.length>0};return g.debug("AI prompt generation completed",l),a}async detectAndExecuteTools(e,t){let n="NeuroLink.detectAndExecuteTools";try{return g.debug(`[${n}] Skipping automatic tool execution - relying on centralized registry`),{toolResults:[],enhancedPrompt:e}}catch(o){return g.error(`[${n}] Tool detection/execution failed`,{error:o instanceof Error?o.message:String(o)}),{toolResults:[],enhancedPrompt:e}}}async streamText(e,t){let n={input:{text:e},...t},o=await this.stream(n);async function*s(){for await(let i of o.stream){let a=i;if(a&&typeof a=="object"&&"content"in a){let l=a.content;typeof l=="string"&&(yield l)}}}return s()}async stream(e){return g.debug("[NeuroLink] stream() called with options",{provider:e.provider,model:e.model,inputLength:e.input?.text?.length||0,disableTools:e.disableTools,enableAnalytics:e.enableAnalytics,enableEvaluation:e.enableEvaluation,contextKeys:e.context?Object.keys(e.context??{}):[],optionKeys:Object.keys(e)}),this.streamWithIterationFallback(e)}async streamWithIterationFallback(e){let t=await this.runWithFallbackOrchestration(e,"stream",m=>dB.run(this.createMetricsTraceContext(),()=>this.executeStreamRequest({...m}))),n=e,o=n.providerFallback,s=n.modelChain,i=o??this.fallbackConfig.providerFallback,a=s??this.fallbackConfig.modelChain;if(!i&&!a)return t;let l={i:0,list:a??[],requestedModel:e.model},u=i??(async()=>{for(;l.i<l.list.length;){let m=l.list[l.i++];if(m!==l.requestedModel)return{model:m}}return null}),d=this,p=(async function*(){let m=0,f=t,h=e.provider,y=e.model,v=(a?.length??0)+5;for(let b=0;b<=v;b++)try{for await(let w of f.stream)m++,yield w;return}catch(w){if(m>0||!fee(w))throw w;let T;try{T=await u(w)}catch(k){throw g.warn("[NeuroLink.stream] providerFallback callback threw during iteration",{error:k instanceof Error?k.message:String(k)}),w}if(!T)throw w;try{d.emitter.emit("model.fallback",{requestedProvider:h,requestedModel:y,fallbackProvider:T.provider??h,fallbackModel:T.model,reason:w instanceof Error?w.message:String(w),kind:"stream",phase:"iteration",timestamp:Date.now()})}catch{}let _={...e,...T.provider&&{provider:T.provider},...T.model&&{model:T.model},providerFallback:void 0,modelChain:void 0};h=T.provider??h,y=T.model??y,f=await dB.run(d.createMetricsTraceContext(),()=>d.executeStreamRequest({..._}))}throw new Error(`[NeuroLink.stream] iteration fallback exhausted ${v} attempts`)})();return{...t,stream:p}}async executeStreamRequest(e){await this.resolveDynamicOptions(e);let t=ye.sdk.startSpan("neurolink.stream",{kind:er.INTERNAL,attributes:{[me.NL_PROVIDER]:e.provider||"default",[me.GEN_AI_MODEL]:e.model||"default",[me.NL_INPUT_LENGTH]:e.input?.text?.length||0,[me.NL_HAS_TOOLS]:!!(e.tools&&Object.keys(e.tools).length>0),[me.NL_STREAM_MODE]:!0}}),n=Date.now();this._disableToolCacheForCurrentRequest=!!e.disableToolCache;try{e.model=cw(e.model,this.modelAliasConfig);let o=Date.now(),s=process.hrtime.bigint(),i=`neurolink-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,a=e.input.text;e.fileRegistry=this.fileRegistry,await this.validateStreamRequestOptions(e,o);let l=await this.maybeHandleWorkflowStreamRequest({options:e,startTime:o,streamSpan:t,spanStartTime:n});return l||this.setLangfuseContextFromOptions(e,()=>this.runStandardStreamRequest({options:e,streamSpan:t,spanStartTime:n,startTime:o,hrTimeStart:s,streamId:i,originalPrompt:a}))}catch(o){throw t.setStatus({code:be.ERROR,message:o instanceof Error?o.message:String(o)}),o instanceof Error&&t.recordException(o),t.end(),o}}async validateStreamRequestOptions(e,t){await this.validateStreamInput(e),this.enforceSessionBudget(e.maxBudgetUsd),await this.applyAuthenticatedRequestContext(e),this.emitStreamStartEvents(e,t),this.applyStreamLifecycleMiddleware(e)}async maybeHandleWorkflowStreamRequest(e){if(!e.options.workflow&&!e.options.workflowConfig)return null;let t=await this.streamWithWorkflow(e.options,e.startTime),n=t.stream,o=this;return t.stream=(async function*(){try{for await(let s of n)yield s;e.streamSpan.setStatus({code:be.OK})}catch(s){throw e.streamSpan.setStatus({code:be.ERROR,message:s instanceof Error?s.message:String(s)}),s}finally{o._disableToolCacheForCurrentRequest=!1,e.streamSpan.setAttribute("neurolink.response_time_ms",Date.now()-e.spanStartTime),e.streamSpan.end()}})(),t}async runStandardStreamRequest(e){let{options:t,streamSpan:n,spanStartTime:o,startTime:s,hrTimeStart:i,streamId:a,originalPrompt:l}=e;g.debug("[NeuroLink] Running standard stream request",{streamId:a,provider:t.provider,model:t.model,inputLength:t.input?.text?.length||0,disableTools:t.disableTools,enableAnalytics:t.enableAnalytics,enableEvaluation:t.enableEvaluation,contextKeys:t.context?Object.keys(t.context):[],optionKeys:Object.keys(t),sessionId:t.context?.sessionId});try{let{enhancedOptions:u,factoryResult:d}=await this.prepareStreamOptions(t,a,s,i);g.debug("[NeuroLink] Stream options prepared",{streamId:a,options:u,factoryResult:d,sessionId:u.context?.sessionId});let{stream:p,provider:m,usage:f,model:h,finishReason:y,toolCalls:v,toolResults:b,analytics:w}=await this.createMCPStream(u),T={finishReason:y??"stop",toolCalls:v,toolResults:b};n.setAttribute(me.NL_PROVIDER,m||"unknown");let _="",k=0,{eventSequence:R,cleanup:I}=this.setupStreamEventListeners(),C={fallbackAttempted:!1,guardrailsBlocked:!1,error:void 0,fallbackProvider:void 0,fallbackModel:void 0},E=this,M=Date.now(),O=u.context?.sessionId,D={providerEmitted:!1};u._streamDedupContext=D;let N=(async function*(){let q,B,F=0;try{for await(let U of p){k++;let $=U!==null&&typeof U=="object"&&"metadata"in U&&U.metadata?.noOutput===!0,K=U&&"content"in U&&typeof U.content=="string"&&U.content.length>0,V=U!==null&&typeof U=="object"&&"type"in U&&(U.type==="audio"||U.type==="image");!$&&(K||V)&&F++,U&&"content"in U&&typeof U.content=="string"&&(_+=U.content,E.emitter.emit("response:chunk",U.content),E.emitter.emit("stream:chunk",{type:"stream:chunk",content:U.content,metadata:{chunkIndex:k,totalLength:_.length,...$&&{noOutput:!0}},timestamp:Date.now()})),yield U}if(F===0&&!C.fallbackAttempted&&!u.disableInternalFallback&&T.toolCalls.length===0&&T.toolResults.length===0&&(yield*E.handleStreamFallback(C,T,l,u,m,U=>{_+=U})),B=f,!B&&w)try{let U=await Promise.resolve(w);U?.tokenUsage&&(B=U.tokenUsage)}catch{}E.emitter.emit("stream:complete",{type:"stream:complete",content:_,provider:C.fallbackProvider??m,model:C.fallbackModel??h??u.model,finishReason:T.finishReason??"stop",prompt:u.input?.text||u.prompt,metadata:{chunkCount:k,totalLength:_.length,durationMs:Date.now()-M,sessionId:O,usage:B,finishReason:T.finishReason??"stop",...C.fallbackAttempted&&{primaryProvider:m,primaryModel:u.model,fallback:!0}},timestamp:Date.now()})}catch(U){throw g.debug("[NeuroLink.stream] Stream error occurred",{error:U instanceof Error?U.message:String(U),name:U instanceof Error?U.name:"UnknownError",provider:m,model:u.model,chunkCount:k,totalLength:_.length,durationMs:Date.now()-M,sessionId:O}),q=U,E.emitter.emit("stream:error",{type:"stream:error",content:U instanceof Error?U.message:String(U),provider:m,model:u.model,metadata:{chunkCount:k,totalLength:_.length,durationMs:Date.now()-M,errorName:U instanceof Error?U.name:"UnknownError",sessionId:O},timestamp:Date.now()}),U}finally{if(g.debug("[NeuroLink.stream] Stream finished, performing cleanup",{provider:m,model:u.model,totalChunks:k,totalLength:_.length,durationMs:Date.now()-M,fallbackAttempted:C.fallbackAttempted,guardrailsBlocked:C.guardrailsBlocked,error:C.error}),!D.providerEmitted)try{let $=C.fallbackProvider??m??"unknown",K=C.fallbackModel??h??u.model??"unknown",V=q?"error":T.finishReason??"stop";E.emitter.emit("generation:end",{provider:$,model:K,responseTime:Date.now()-M,toolsUsed:T.toolCalls?.map(ce=>ce.toolName),timestamp:Date.now(),result:{content:_,usage:B,model:K,provider:$,finishReason:V},prompt:u.input?.text||u.prompt,temperature:u.temperature,maxTokens:u.maxTokens,success:!q,error:q?q instanceof Error?q.message:String(q):void 0,pipelineAHandled:!0})}catch($){g.debug("[NeuroLink.stream] generation:end listener threw \u2014 ignored",{error:$ instanceof Error?$.message:String($)})}E._disableToolCacheForCurrentRequest=!1,I(),n.setAttribute("neurolink.response_time_ms",Date.now()-o),n.setAttribute(me.NL_OUTPUT_LENGTH,_.length);let U=!!(C.error||q);n.setAttribute(me.GEN_AI_FINISH_REASON,U?"error":"stop"),C.fallbackAttempted&&(n.setAttribute("neurolink.fallback_triggered",!0),C.fallbackProvider&&n.setAttribute("neurolink.fallback_provider",C.fallbackProvider)),U?n.setStatus({code:be.ERROR,message:C.error||(q instanceof Error?q.message:String(q))}):n.setStatus({code:be.OK}),n.end(),_.trim()&&g.info("[NeuroLink.stream] stream() - COMPLETE SUCCESS",{provider:m,model:u.model,responseTimeMs:Date.now()-s,contentLength:_.length,fallback:C.fallbackAttempted}),await E.storeStreamConversationMemory({enhancedOptions:u,providerName:m,originalPrompt:l,accumulatedContent:_,startTime:s,eventSequence:R})}})(),W=await this.processStreamResult(N,u,d);return W.finishReason=T.finishReason||W.finishReason,W.toolCalls=T.toolCalls,W.toolResults=T.toolResults,W.usage||(W.usage=f),W.analytics||(W.analytics=w instanceof Promise?await w:w),W.analytics?.cost&&W.analytics.cost>0&&(this._sessionCostUsd+=W.analytics.cost),this.emitStreamEndEvents(W),this.createStreamResponse(W,N,{providerName:m,options:t,startTime:s,responseTime:Date.now()-s,streamId:a,fallback:C.fallbackAttempted,guardrailsBlocked:C.guardrailsBlocked,error:C.error,events:R})}catch(u){if(t.disableInternalFallback)throw u;return this.handleStreamError(u,t,s,a,void 0,void 0)}}async prepareStreamOptions(e,t,n,o){if(await this.initializeConversationMemoryForGeneration(t,n,o),await this.initializeMCP(),this.shouldReadMemory(e.memory,e.context?.userId)&&e.context?.userId)try{e.input.text=await this.retrieveMemory(e.input.text,e.context.userId,e.memory?.additionalUsers),g.debug("Memory retrieval successful")}catch(a){g.warn("Memory retrieval failed:",a)}if(this.enableOrchestration&&!e.provider&&!e.model)try{let a=await this.applyStreamOrchestration(e);g.debug("Stream orchestration applied",{originalProvider:e.provider||"auto",orchestratedProvider:a.provider,orchestratedModel:a.model,prompt:e.input.text?.substring(0,100)}),Object.assign(e,a),a.model&&(e.model=cw(e.model,this.modelAliasConfig))}catch(a){g.warn("Stream orchestration failed, continuing with original options",{error:a instanceof Error?a.message:String(a),originalProvider:e.provider||"auto"})}if(await this.autoDisableOllamaStreamTools(e),e.rag?.files?.length)try{let{prepareRAGTool:a}=await Promise.resolve().then(()=>(jz(),mQ)),l=await a(e.rag,e.provider);e.tools||(e.tools={}),e.tools[l.toolName]=l.tool;let u=[`
1828
1828
 
1829
- IMPORTANT: You have a tool called "${l.toolName}" that searches through`,`${l.filesLoaded} loaded document(s) containing ${l.chunksIndexed} indexed chunks.`,`ALWAYS use the "${l.toolName}" tool FIRST to answer the user's question before using any other tools.`,"This tool searches your local knowledge base of pre-loaded documents and is the primary source of truth.","Do NOT use websearchGrounding or any web search tools when the answer can be found in the loaded documents."].join(" ");e.systemPrompt=(e.systemPrompt||"")+u,g.info("[RAG] Tool injected into stream()",{toolName:l.toolName,filesLoaded:l.filesLoaded,chunksIndexed:l.chunksIndexed})}catch(a){g.warn("[RAG] Failed to prepare RAG tool, continuing without RAG",{error:a instanceof Error?a.message:String(a)})}let s=gIe(e),i=hIe(e);if(e.input?.text){let{toolResults:a,enhancedPrompt:l}=await this.detectAndExecuteTools(e.input.text,void 0);l!==e.input.text&&(i.input.text=l)}return{enhancedOptions:i,factoryResult:s}}async autoDisableOllamaStreamTools(e){if((e.provider==="ollama"||e.provider?.toLowerCase().includes("ollama"))&&!e.disableTools){let{ModelConfigurationManager:t}=await Promise.resolve().then(()=>(yg(),PEe)),s=t.getInstance().getProviderConfiguration("ollama")?.modelBehavior?.toolCapableModels||[],i=e.model;s.length>0&&i&&(s.some(l=>i.toLowerCase().includes(l.toLowerCase()))||(e.disableTools=!0,g.debug("Auto-disabled tools for Ollama model that doesn't support them (stream)",{model:e.model,toolCapableModels:s.slice(0,3)})))}}setupStreamEventListeners(){let e=[],t=0,n=(p,m)=>{e.push({type:p,seq:t++,timestamp:Date.now(),...m&&typeof m=="object"?m:{data:m}})},o=(...p)=>{let m=p[0];n("response:chunk",{content:m})},s=(...p)=>{let m=p[0];n("tool:start",{...m,toolName:m.toolName??m.tool})},i=(...p)=>{let m=p[0],f=m.toolName??m.tool,h=m.responseTime??m.duration,y=m.success??(m.error!==void 0?!1:void 0),v={...m,toolName:f,...h!==void 0?{responseTime:h}:{},...y!==void 0?{success:y}:{},...m.error!==void 0?{error:m.error}:{}};n("tool:end",v),v.result&&v.result.uiComponent===!0&&n("ui-component",{toolName:f,componentData:v.result,timestamp:Date.now(),...y!==void 0?{success:y}:{},...h!==void 0?{responseTime:h}:{}})},a=(...p)=>{n("ui-component",p[0])},l=(...p)=>{n("hitl:confirmation-request",p[0])},u=(...p)=>{n("hitl:confirmation-response",p[0])};return this.emitter.on("response:chunk",o),this.emitter.on("tool:start",s),this.emitter.on("tool:end",i),this.emitter.on("ui-component",a),this.emitter.on("hitl:confirmation-request",l),this.emitter.on("hitl:confirmation-response",u),{eventSequence:e,cleanup:()=>{this.emitter.off("response:chunk",o),this.emitter.off("tool:start",s),this.emitter.off("tool:end",i),this.emitter.off("ui-component",a),this.emitter.off("hitl:confirmation-request",l),this.emitter.off("hitl:confirmation-response",u)}}}async*handleStreamFallback(e,t,n,o,s,i){e.fallbackAttempted=!0;let a="Stream completed with 0 chunks (possible guardrails block)";e.error=a;try{let h=this._metricsTraceContext,y=xe.createGenerationSpan({provider:s,model:o.model||"unknown",name:`gen_ai.${s}.stream.failed`,traceId:h?.traceId,parentSpanId:h?.parentSpanId});y=xe.endSpan(y,2),y.statusMessage=a,y.durationMs=0,this.metricsAggregator.recordSpan(y),Ue().recordSpan(y)}catch{}let l=o.fallbackProvider?.trim()||void 0,u=o.fallbackModel?.trim()||void 0,d=process.env.FALLBACK_PROVIDER?.trim()||void 0,p=process.env.FALLBACK_MODEL?.trim()||void 0,m=uw.getFallbackRoute(n||o.input.text||"",{provider:s,model:o.model||"gpt-4o",reasoning:"primary failed",confidence:.5},{fallbackStrategy:"auto"}),f={...m,provider:l??d??m.provider,model:u??p??m.model};g.warn("Retrying with fallback provider",{originalProvider:s,fallbackProvider:f.provider,fallbackModel:f.model,fallbackSource:l||u?"options":d||p?"env":"model_config",reason:a});try{let h=await Ur.createProvider(f.provider,f.model,!0,void 0,void 0,this.resolveCredentials(o.credentials));h.setupToolExecutor({customTools:this.getCustomTools(),executeTool:(k,R)=>this.executeTool(k,R,{disableToolCache:o.disableToolCache})},"NeuroLink.fallbackStream");let y=o.conversationMessages!==void 0?o.conversationMessages:await iv(this.conversationMemory,{prompt:o.input.text,context:o.context}),v=await h.stream({...o,model:f.model,conversationMessages:y}),b=v.toolCalls??[],w=v.toolResults??[];(b.length>0||w.length>0)&&(t.toolCalls=b,t.toolResults=w,t.finishReason=v.finishReason??t.finishReason);let T=0,_=0;for await(let k of v.stream){T++;let R=k!==null&&typeof k=="object"&&"metadata"in k&&k.metadata?.noOutput===!0,I=k&&"content"in k&&typeof k.content=="string"&&k.content.length>0,C=k!==null&&typeof k=="object"&&"type"in k&&(k.type==="audio"||k.type==="image");!R&&(I||C)&&_++,k&&"content"in k&&typeof k.content=="string"&&(i(k.content),this.emitter.emit("response:chunk",k.content)),yield k}if(_===0&&b.length===0&&w.length===0)throw new Error(`Fallback provider ${f.provider} also returned 0 real output chunks (chunkCount=${T}, sentinel-only or empty)`);e.fallbackProvider=f.provider,e.fallbackModel=f.model,e.guardrailsBlocked=!0}catch(h){let y=h instanceof Error?h.message:String(h);throw e.error=`${a}; Fallback failed: ${y}`,g.error("Fallback provider failed",{fallbackProvider:f.provider,error:y}),h}}async storeStreamConversationMemory(e){let{enhancedOptions:t,providerName:n,originalPrompt:o,accumulatedContent:s,startTime:i,eventSequence:a}=e;g.debug("[NeuroLink.stream] Preparing to store conversation turn in memory",{options:JSON.stringify(t),sessionId:t.context?.sessionId});let l=a.some(u=>u.type==="tool:start"||u.type==="tool:end");if(!s.trim()&&!l){g.warn("[NeuroLink.stream] Skipping conversation turn storage \u2014 no text content or tool activity",{sessionId:t.context?.sessionId});return}if(g.debug("[NeuroLink.stream] Storing conversation turn in memory",{options:JSON.stringify(t),sessionId:t.context?.sessionId,conversationMemoryExists:!!this.conversationMemory}),this.conversationMemory&&t.context?.sessionId){let u=t.context?.sessionId,d=t.context?.userId,p;t.model&&(p={provider:n,model:t.model});let m=Date.now();try{await this.conversationMemory.storeConversationTurn({sessionId:u,userId:d,userMessage:o??"",aiResponse:s,startTimeStamp:new Date(i),providerDetails:p,enableSummarization:t.enableSummarization,events:a.length>0?a:void 0,requestId:t.context?.requestId}),this.recordMemorySpan("memory.store",{"memory.operation":"store","memory.path":"stream"},Date.now()-m,1),g.debug("[NeuroLink.stream] Stored conversation turn with events",{sessionId:u,eventCount:a.length,eventTypes:[...new Set(a.map(f=>f.type))]})}catch(f){this.recordMemorySpan("memory.store",{"memory.operation":"store","memory.path":"stream"},Date.now()-m,2,f instanceof Error?f.message:String(f)),g.warn("Failed to store stream conversation turn",{error:f instanceof Error?f.message:String(f)})}}this.shouldWriteMemory(t.memory,t.context?.userId,s)&&this.storeMemoryInBackground(o??"",s.trim(),t.context?.userId,t.memory?.additionalUsers)}async validateStreamInput(e){let t=process.hrtime.bigint();g.debug("[NeuroLink] \u{1F3AF} LOG_POINT_003_VALIDATION_START",{logPoint:"003_VALIDATION_START",validationStartTimeNs:t.toString(),message:"Starting comprehensive input validation process"});let n=typeof e?.input?.text=="string"&&e.input.text.trim().length>0,o=!!(e?.input?.audio&&e.input.audio.frames&&typeof e.input.audio.frames[Symbol.asyncIterator]=="function");if(!n&&!o)throw new Error("Stream options must include either input.text or input.audio")}emitStreamStartEvents(e,t){this.emitter.emit("stream:start",{provider:e.provider||"auto",timestamp:t}),this.emitter.emit("response:start"),this.emitter.emit("message",`Starting ${e.provider||"auto"} stream...`)}async createMCPStream(e){let t=await Fg(e.provider),n=await Ur.createProvider(t,e.model,!e.disableTools,this,e.region,this.resolveCredentials(e.credentials));n.setTraceContext(this._metricsTraceContext),n.setupToolExecutor({customTools:this.getCustomTools(),executeTool:(h,y)=>this.executeTool(h,y,{disableToolCache:e.disableToolCache})},"NeuroLink.createMCPStream");let o=await this.getAllAvailableTools();o=this.applyToolInfoFiltering(o,e);let s=e.skipToolPromptInjection?e.systemPrompt||"":this.createToolAwareSystemPrompt(e.systemPrompt,o),i=e.conversationMessages!==void 0,a=i?e.conversationMessages:await iv(this.conversationMemory,{...e,prompt:e.input.text,context:e.context});e.conversationMessages=a;let l=a,u=Pa({provider:t,model:e.model,maxTokens:e.maxTokens,systemPrompt:s,conversationMessages:l,currentPrompt:e.input.text,toolDefinitions:o}),d=l?.length||0,p=this.getCompactionSessionId(e),m=d>0;if(!u.withinBudget&&!m){try{this.emitter.emit("compaction.insufficient",{stagesAttempted:["pre-dispatch hard cap"],finalTokens:u.estimatedInputTokens,budget:u.availableInputTokens,provider:t,model:e.model,phase:"pre-dispatch-no-recovery",timestamp:Date.now()})}catch{}throw new bc(`Stream context exceeds model budget and no compaction is possible (no conversationMemory, no inline conversationMessages \u2014 only prompt + tools). Estimated: ${u.estimatedInputTokens} tokens, budget: ${u.availableInputTokens} tokens. Reduce prompt or tool-definition size, or trim the request.`,{estimatedTokens:u.estimatedInputTokens,availableTokens:u.availableInputTokens,stagesUsed:[],breakdown:u.breakdown})}if(u.shouldCompact&&(i||this.conversationMemory)&&d>(this.lastCompactionMessageCount.get(p)??0)){let y=await new wg({provider:t,summarizationProvider:this.conversationMemoryConfig?.conversationMemory?.summarizationProvider,summarizationModel:this.conversationMemoryConfig?.conversationMemory?.summarizationModel}).compact(l,u.availableInputTokens,this.conversationMemoryConfig?.conversationMemory,e.context?.requestId);y.compacted&&(l=IS(y.messages).messages,e.conversationMessages=l,this.lastCompactionMessageCount.set(p,l.length));let v=Pa({provider:t,model:e.model,maxTokens:e.maxTokens,systemPrompt:s,conversationMessages:l,currentPrompt:e.input.text,toolDefinitions:o});if(!v.withinBudget){g.warn("[NeuroLink] Stream: post-compaction still over budget, emergency truncation",{estimatedTokens:v.estimatedInputTokens,availableTokens:v.availableInputTokens,overagePercent:Math.round((v.usageRatio-1)*100)});try{this.emitter.emit("compaction.insufficient",{stagesAttempted:y.stagesUsed,finalTokens:v.estimatedInputTokens,budget:v.availableInputTokens,provider:t,model:e.model,phase:"mid-compaction",willEmergencyTruncate:!0,timestamp:Date.now()})}catch{}l=o2(l,v.availableInputTokens,v.breakdown,t),e.conversationMessages=l;let b=Pa({provider:t,model:e.model,maxTokens:e.maxTokens,systemPrompt:s,conversationMessages:l,currentPrompt:e.input.text,toolDefinitions:o});if(!b.withinBudget){this.lastCompactionMessageCount.delete(p);try{this.emitter.emit("compaction.insufficient",{stagesAttempted:y.stagesUsed,finalTokens:b.estimatedInputTokens,budget:b.availableInputTokens,provider:t,model:e.model,phase:"post-emergency-truncation",timestamp:Date.now()})}catch{}throw new bc(`Stream context exceeds model budget after all compaction stages. Estimated: ${b.estimatedInputTokens} tokens, Budget: ${b.availableInputTokens} tokens.`,{estimatedTokens:b.estimatedInputTokens,availableTokens:b.availableInputTokens,stagesUsed:y.stagesUsed,breakdown:b.breakdown})}}}let f=await n.stream({...e,systemPrompt:s,conversationMessages:l});return g.debug("[createMCPStream] Stream created successfully",{provider:t,systemPromptPassedLength:s.length}),{stream:f.stream,provider:t,usage:f.usage,model:f.model||e.model,finishReason:f.finishReason,toolCalls:f.toolCalls??[],toolResults:f.toolResults??[],analytics:f.analytics}}async processStreamResult(e,t,n){return{content:"",usage:void 0,finishReason:"stop",toolCalls:[],toolResults:[],analytics:void 0,evaluation:void 0}}emitStreamEndEvents(e){this.emitter.emit("stream:end",{responseTime:Date.now(),timestamp:Date.now()}),this.emitter.emit("response:end",e.content||"")}createStreamResponse(e,t,n){return{stream:t,provider:n.providerName,model:n.options.model,usage:e.usage,finishReason:e.finishReason,toolCalls:e.toolCalls,toolResults:e.toolResults,analytics:e.analytics,evaluation:e.evaluation,events:n.events&&n.events.length>0?n.events:void 0,metadata:{streamId:n.streamId,startTime:n.startTime,responseTime:n.responseTime,fallback:n.fallback||!1,guardrailsBlocked:n.guardrailsBlocked,error:n.error}}}async handleStreamError(e,t,n,o,s,i){if(e instanceof bc)throw e;g.error("Stream generation failed, attempting fallback",{error:e instanceof Error?e.message:String(e)});try{this.emitter.emit("stream:error",{content:e instanceof Error?e.message:String(e),metadata:{errorName:e instanceof Error?e.name:"UnknownError",durationMs:Date.now()-n,chunkCount:0},provider:t.provider||"unknown",model:t.model||"unknown"})}catch{}let a=t.input.text,l=Date.now()-n,u=await Fg(t.provider),p=await(await Ur.createProvider(u,t.model,!0,void 0,void 0,this.resolveCredentials(t.credentials))).stream({input:{text:t.input.text},model:t.model,temperature:t.temperature,maxTokens:t.maxTokens,conversationMessages:t.conversationMessages}),m="";return{stream:(async function*(h){try{for await(let y of p.stream)y&&"content"in y&&typeof y.content=="string"&&(m+=y.content,h.emitter.emit("response:chunk",y.content)),yield y}finally{if(m.trim()){g.info("[NeuroLink.handleStreamError] stream() - COMPLETE SUCCESS (fallback)",{provider:u,model:t.model,responseTimeMs:Date.now()-n,contentLength:m.length});try{h.emitter.emit("stream:complete",{content:m,provider:u,model:t.model||"unknown",finishReason:"stop",metadata:{durationMs:Date.now()-n,chunkCount:0,totalLength:m.length,isFallback:!0,finishReason:"stop"}})}catch{}}if(h.conversationMemory&&s?.context?.sessionId&&m.trim()){let y=s?.context?.sessionId,v=s?.context?.userId,b;t.model&&(b={provider:u,model:t.model});let w=Date.now();try{await h.conversationMemory.storeConversationTurn({sessionId:y||t.context?.sessionId,userId:v||t.context?.userId,userMessage:a??"",aiResponse:m,startTimeStamp:new Date(n),providerDetails:b,enableSummarization:s?.enableSummarization,requestId:s?.context?.requestId||t.context?.requestId}),h.recordMemorySpan("memory.store",{"memory.operation":"store","memory.path":"fallback-stream"},Date.now()-w,1)}catch(T){h.recordMemorySpan("memory.store",{"memory.operation":"store","memory.path":"fallback-stream"},Date.now()-w,2,T instanceof Error?T.message:String(T)),g.warn("Failed to store fallback stream conversation turn",{error:T instanceof Error?T.message:String(T)})}}}})(this),provider:u,model:t.model,usage:p.usage,finishReason:p.finishReason||"stop",toolCalls:p.toolCalls||[],toolResults:p.toolResults||[],analytics:p.analytics,evaluation:p.evaluation,metadata:{streamId:o,startTime:n,responseTime:l,fallback:!0}}}getEventEmitter(){return this.emitter}async checkCredentials(e){let{provider:t,model:n}=e,o="ping";try{return await this.generate({provider:t,...n&&{model:n},input:{text:o},maxTokens:16,disableTools:!0}),{provider:t,status:"ok",detail:"credentials valid"}}catch(s){let i=s instanceof Error?s.message:String(s),a=i.toLowerCase();return s instanceof Kh?{provider:t,status:"denied",detail:i}:a.includes("authentication")||a.includes("401")||a.includes("invalid api key")||a.includes("incorrect api key")||a.includes("api_key_invalid")||a.includes("token has expired")||a.includes("expired credentials")?{provider:t,status:"expired",detail:i}:a.includes("not configured")||a.includes("missing api")||a.includes("api key is required")||a.includes("no api key")||a.includes("application default credentials")||a.includes("google_application_credentials")||a.includes("project_id")||a.includes("default credentials")||a.includes("service account")?{provider:t,status:"missing",detail:i}:a.includes("econnrefused")||a.includes("enotfound")||a.includes("could not resolve")||a.includes("timeout")||a.includes("network")||a.includes("cannot connect")?{provider:t,status:"network",detail:i}:{provider:t,status:"unknown",detail:i}}}emitToolStart(e,t,n=Date.now()){let o=`${e}-${n}-${Math.random().toString(36).substr(2,9)}`,s={executionId:o,tool:e,startTime:n,metadata:{inputType:typeof t,hasInput:t!=null}};return this.activeToolExecutions.set(o,s),this.currentStreamToolExecutions.push(s),this.emitter.emit("tool:start",om(e,{input:t,timestamp:n,executionId:o})),g.debug(`tool:start emitted for ${e}`,{toolName:e,executionId:o,timestamp:n,inputProvided:t!==void 0}),o}emitToolEnd(e,t,n,o,s=Date.now(),i){let a=o||s-1e3,l=s-a,u=!n,d;i?d=this.activeToolExecutions.get(i):d=Array.from(this.activeToolExecutions.values()).find(f=>f.tool===e&&!f.endTime);let p=i||d?.executionId||`${e}-${a}-fallback-${Math.random().toString(36).substr(2,9)}`;d&&(d.endTime=s,d.result=t,d.error=n,this.activeToolExecutions.delete(d.executionId));let m={tool:e,startTime:a,endTime:s,duration:l,success:u,result:t,error:n,executionId:p,metadata:{toolCategory:"custom"}};this.toolExecutionHistory.push(m),this.emitter.emit("tool:end",om(e,{result:t,error:n,success:u,responseTime:l,timestamp:s,duration:l,executionId:p})),g.debug(`tool:end emitted for ${e}`,{toolName:e,executionId:p,duration:l,success:u,hasResult:t!==void 0,hasError:!!n})}getCurrentToolExecutions(){return[...this.currentStreamToolExecutions]}getToolExecutionHistory(){return[...this.toolExecutionHistory]}clearCurrentStreamExecutions(){this.currentStreamToolExecutions=[]}registerTool(e,t,n){this.invalidateToolCache(),this.emitter.emit("tools-register:start",{toolName:e,timestamp:Date.now()});try{if(!e||typeof e!="string")throw new Error("Invalid tool name");if(!t||typeof t!="object")throw new Error(`Invalid tool object provided for tool: ${e}`);if(typeof t.execute!="function")throw new Error(`Tool '${e}' must have an execute method.`);if(e.trim()==="")throw new Error("Tool name cannot be empty");if(e.length>100)throw new Error("Tool name is too long (maximum 100 characters)");if(/[\x00-\x1F\x7F]/.test(e))throw new Error("Tool name contains invalid control characters");let o={name:t.name||e,description:t.description||e,execute:t.execute,inputSchema:"parameters"in t&&t.parameters&&(jd(t.parameters)||typeof t.parameters=="object")?t.parameters:t.inputSchema||{}};if(n?.timeout!==void 0&&n.timeout>0&&Number.isFinite(n.timeout)&&typeof o.execute=="function"){let i=o.execute,a=n.timeout,l=e;o.execute=async(...u)=>{let d=AbortSignal.timeout(a),p=u[1],m=p?.abortSignal,f=m?AbortSignal.any([m,d]):d,h={...p,abortSignal:f};return Promise.race([i(u[0],h),new Promise((y,v)=>{f.addEventListener("abort",()=>{d.aborted?v(pe.toolTimeout(l,a)):v(new DOMException("The operation was aborted","AbortError"))},{once:!0})})])}}let s=cAe(e,o,n?.timeout,n?.maxRetries);this.toolRegistry.registerServer(s),this.emitter.emit("tools-register:end",{toolName:e,success:!0,timestamp:Date.now(),timeoutMs:n?.timeout})}catch(o){throw g.error(`Failed to register tool ${e}:`,o),o}}setToolContext(e){this.toolExecutionContext={...e},g.debug("Tool execution context updated",{sessionId:e.sessionId,contextKeys:Object.keys(e),hasJuspayToken:!!e.juspayToken,hasShopId:!!e.shopId})}getToolContext(){return this.toolExecutionContext?{...this.toolExecutionContext}:void 0}clearToolContext(){this.toolExecutionContext=void 0,g.debug("Tool execution context cleared")}registerTools(e){if(Array.isArray(e))for(let{name:t,tool:n}of e)this.registerTool(t,n);else for(let[t,n]of Object.entries(e))this.registerTool(t,n)}unregisterTool(e){this.invalidateToolCache();let t=`custom-tool-${e}`,n=this.toolRegistry.unregisterServer(t);return n&&g.info(`Unregistered custom tool: ${e}`),n}useToolMiddleware(e){return this.mcpToolMiddlewares.push(e),g.debug(`[NeuroLink] Registered tool middleware (total: ${this.mcpToolMiddlewares.length})`),this}getToolMiddlewares(){return[...this.mcpToolMiddlewares]}async flushToolBatch(){this.mcpToolBatcher&&await this.mcpToolBatcher.flush()}getMCPEnhancementsConfig(){return this.mcpEnhancementsConfig}async updateAgenticLoopReport(e,t,n){if(!this.conversationMemory)throw new Gi("Conversation memory is not initialized. Enable conversationMemory in NeuroLink options.","CONFIG_ERROR");if(!("updateAgenticLoopReport"in this.conversationMemory)||typeof this.conversationMemory.updateAgenticLoopReport!="function")throw new Gi("updateAgenticLoopReport is only supported with Redis conversation memory.","CONFIG_ERROR");await Oe(this.conversationMemory.updateAgenticLoopReport(e,n,t),5e3)}getCustomTools(){let e=this.toolRegistry.getToolsByCategory(js({isCustomTool:!0})),t=new Map;for(let o of e){let s=o.inputSchema||o.parameters;g.debug("Processing tool schema for Claude",{toolName:o.name,hasDescription:!!o.description,description:o.description,hasParameters:!!o.parameters,parametersType:typeof o.parameters,parametersKeys:o.parameters&&typeof o.parameters=="object"?Object.keys(o.parameters):"NOT_OBJECT",hasInputSchema:!!o.inputSchema,inputSchemaType:typeof o.inputSchema,inputSchemaKeys:o.inputSchema&&typeof o.inputSchema=="object"?Object.keys(o.inputSchema):"NOT_OBJECT",hasEffectiveSchema:!!s,effectiveSchemaType:typeof s,effectiveSchemaHasProperties:!!s?.properties,effectiveSchemaHasRequired:!!s?.required,originalInputSchema:o.inputSchema,phase:"AFTER_SCHEMA_FIX",timestamp:Date.now()}),t.set(o.name,{name:o.name,description:o.description||"",inputSchema:typeof o.inputSchema=="object"&&o.inputSchema!==null?o.inputSchema:typeof o.parameters=="object"&&o.parameters!==null?o.parameters:{},execute:async(i,a)=>{let l=this.toolExecutionContext||{},u=a&&Ut(a)?a:{},d={...l,...u,sessionId:u.sessionId||l.sessionId||`fallback-${Date.now()}`};return g.debug("Tool execution context merged",{toolName:o.name,storedContextKeys:Object.keys(l),runtimeContextKeys:Object.keys(u),finalContextKeys:Object.keys(d),hasJuspayToken:!!d.juspayToken,hasShopId:!!d.shopId,sessionId:d.sessionId}),await this.toolRegistry.executeTool(o.name,i,d)}})}this.cachedFileTools||(this.cachedFileTools=yX(this.fileRegistry));let n=this.cachedFileTools;for(let[o,s]of Object.entries(n))if(!t.has(o)){let i=s,a=i.inputSchema??i.parameters;t.set(o,{name:o,description:s.description||`File tool: ${o}`,inputSchema:typeof a=="object"&&a!==null?a:{type:"object",properties:{}},execute:async l=>await s.execute(l,{toolCallId:`file-tool-${Date.now()}`,messages:[]})})}return t}async addInMemoryMCPServer(e,t){this.invalidateToolCache();try{ne.debug(`[NeuroLink] Registering in-memory MCP server: ${e}`),t.tools||(t.tools=[]),await this.toolRegistry.registerServer(t),ne.info(`[NeuroLink] Successfully registered in-memory server: ${e}`,{category:t.metadata?.category,provider:t.metadata?.provider,version:t.metadata?.version})}catch(n){throw ne.error(`[NeuroLink] Failed to register in-memory server ${e}:`,n),n}}getInMemoryServers(){let e=this.getInMemoryServerInfos(),t=new Map;for(let n of e)t.set(n.id,n);return t}getInMemoryServerInfos(){return this.toolRegistry.getBuiltInServerInfos().filter(t=>js({existingCategory:t.metadata?.category,serverId:t.id})==="in-memory")}getAutoDiscoveredServerInfos(){return this.autoDiscoveredServerInfos}async executeTool(e,t={},n){if(this.mcpToolBatcher&&!n?.bypassBatcher)return this.mcpToolBatcher.execute(e,t);let o=this.createToolExecutionContext(e,t,n);return ye.mcp.startActiveSpan("neurolink.tool.execute",{attributes:{"tool.name":e,"tool.type":o.toolType,"tool.input_size":o.inputSize,"tool.input_preview":o.truncatedInput}},s=>this.executeToolWithSpan(e,t,n,o,s))}createToolExecutionContext(e,t,n){let o=this.externalServerManager.getAllTools().find(a=>a.name===e),s=o?"mcp":this.getCustomTools().has(e)?"custom":"external",i=typeof t=="string"?t:t?JSON.stringify(t):"";return{functionTag:"NeuroLink.executeTool",executionStartTime:Date.now(),externalTool:o,toolType:s,inputSize:i.length,truncatedInput:i.length>2048?i.substring(0,2048):i,options:n}}async executeToolWithSpan(e,t,n,o,s){try{let i=await this.prepareToolExecutionState(e,t,n,o);return await this.runPreparedToolExecution(e,t,i,o,s)}catch(i){if(!(i instanceof Ve)){let a=i instanceof Error?i.message:String(i);s.recordException(i instanceof Error?i:new Error(a)),s.setStatus({code:be.ERROR,message:a})}throw i}finally{s.end()}}async prepareToolExecutionState(e,t,n,o){g.debug(`[${o.functionTag}] Tool execution requested:`,{toolName:e,params:Ut(t)?vxe(t):t,hasExternalManager:!!this.externalServerManager}),g.debug("Tool execution detailed analysis",{toolName:e,executionStartTime:o.executionStartTime,paramsAnalysis:{type:typeof t,isNull:t===null,isUndefined:t===void 0,isEmpty:t&&typeof t=="object"&&Object.keys(t).length===0,keys:t&&typeof t=="object"?Object.keys(t):"NOT_OBJECT",keysLength:t&&typeof t=="object"?Object.keys(t).length:0},isTargetTool:e==="juspay-analytics_SuccessRateSRByTime",options:n,hasExternalManager:!!this.externalServerManager}),this.emitter.emit("tool:start",om(e,{timestamp:o.executionStartTime,input:t}));let s=this.toolRegistry.getToolInfo(e),i={timeout:n?.timeout??s?.tool?.timeoutMs??Pl.EXECUTION_DEFAULT_MS,maxRetries:n?.maxRetries??s?.tool?.maxRetries??Qn.DEFAULT,retryDelayMs:n?.retryDelayMs||mn.BASE_MS,authContext:n?.authContext,disableToolCache:n?.disableToolCache},{MemoryManager:a}=await Promise.resolve().then(()=>(hw(),gw)),l=a.getMemoryUsageMB(),d=`${o.externalTool?.serverId||s?.tool?.serverId||"unknown"}.${e}`,p=this.toolCircuitBreakers.get(d);p||(p=new Ub(XC.FAILURE_THRESHOLD,RD),this.toolCircuitBreakers.set(d,p));let m=this.toolExecutionMetrics.get(e);return m||(m={totalExecutions:0,successfulExecutions:0,failedExecutions:0,averageExecutionTime:0,lastExecutionTime:0,errorCategories:{}},this.toolExecutionMetrics.set(e,m)),m.totalExecutions++,{finalOptions:i,startMemory:l,circuitBreaker:p,breakerKey:d,metrics:m}}async runPreparedToolExecution(e,t,n,o,s){let i=0;try{ne.debug(`[${o.functionTag}] Executing tool: ${e}`,{toolName:e,params:t,options:n.finalOptions,circuitBreakerState:n.circuitBreaker.getState()});let a=await n.circuitBreaker.execute(async()=>i5(async()=>Oe(this.executeToolInternal(e,t,n.finalOptions),n.finalOptions.timeout,pe.toolTimeout(e,n.finalOptions.timeout)),{maxAttempts:n.finalOptions.maxRetries+1,delayMs:n.finalOptions.retryDelayMs,isRetriable:$D,onRetry:(l,u)=>{i=l,ne.warn(`[${o.functionTag}] Retrying tool execution (attempt ${l})`,{toolName:e,error:u.message,attempt:l})}}));return s.setAttribute("tool.retry_count",i),await this.handleSuccessfulToolExecution(e,a,n,o,s)}catch(a){return s.setAttribute("tool.retry_count",i),this.handleFailedToolExecution(e,t,a,n,o,s)}}async handleSuccessfulToolExecution(e,t,n,o,s){let i=Date.now()-o.executionStartTime;n.metrics.successfulExecutions++,n.metrics.lastExecutionTime=i,n.metrics.averageExecutionTime=(n.metrics.averageExecutionTime*(n.metrics.successfulExecutions-1)+i)/n.metrics.successfulExecutions;let{MemoryManager:a}=await Promise.resolve().then(()=>(hw(),gw)),u=a.getMemoryUsageMB().heapUsed-n.startMemory.heapUsed;u>20&&ne.warn(`Tool '${e}' used excessive memory: ${u}MB`,{toolName:e,memoryDelta:u,executionTime:i}),ne.debug(`[${o.functionTag}] Tool executed successfully`,{toolName:e,executionTime:i,memoryDelta:u,circuitBreakerState:n.circuitBreaker.getState()});let d=t&&typeof t=="object"?t:void 0,p=d&&"isError"in d&&d.isError===!0||d&&"success"in d&&d.success===!1,m=p?d?.content:void 0,f=p?m?.filter(h=>h.type==="text"&&h.text).map(h=>h.text).join(" ")||(typeof d?.error=="string"?d.error:"Unknown error"):void 0;if(p){try{await n.circuitBreaker.execute(async()=>{throw new Error(`Tool ${e} returned isError:true`)})}catch{}ne.debug(`[${o.functionTag}] Circuit breaker failure recorded for isError result`,{toolName:e,circuitBreakerState:n.circuitBreaker.getState(),circuitBreakerFailures:n.circuitBreaker.getFailureCount()});let h=B8t(f??"Unknown error"),y=`[TOOL_ERROR: ${e} failed (${h})] `;if(d&&Array.isArray(m)){let w=m.map(T=>({...T}));for(let T of w)if(T.type==="text"&&T.text){T.text=y+T.text;break}d.content=w}s.setAttribute("tool.error.message",(f??"Unknown error").substring(0,500)),s.setAttribute("tool.error.category",h),s.setStatus({code:be.ERROR,message:`MCP tool returned isError: ${(f??"Unknown error").substring(0,200)}`}),n.metrics.failedExecutions++;let v=n.metrics.successfulExecutions;n.metrics.successfulExecutions=Math.max(0,n.metrics.successfulExecutions-1),n.metrics.averageExecutionTime=v>1?(n.metrics.averageExecutionTime*v-i)/(v-1):0;let b=j8t(h);n.metrics.errorCategories[b]=(n.metrics.errorCategories[b]||0)+1}return this.emitToolEndEvent(e,o.executionStartTime,!p,t,p&&f?new Error(f):void 0),s.setAttribute("tool.result.status",p?"error":"success"),s.setAttribute("tool.duration_ms",i),t}async handleFailedToolExecution(e,t,n,o,s,i){o.metrics.failedExecutions++;let a=Date.now()-s.executionStartTime;if(n instanceof qi)return ne.warn(`[${s.functionTag}] Tool blocked by circuit breaker: ${e}`,{toolName:e,breakerState:n.breakerState,retryAfter:n.retryAfter,retryAfterMs:n.retryAfterMs,failureCount:n.failureCount,executionTime:a}),o.metrics.errorCategories.execution=(o.metrics.errorCategories.execution||0)+1,this.emitToolEndEvent(e,s.executionStartTime,!1,void 0,new Error(`Circuit breaker open for ${e} (state=${n.breakerState}, failures=${n.failureCount})`)),i.setAttribute("tool.result.status","circuit_breaker_open"),i.setAttribute("tool.duration_ms",a),i.setAttribute("tool.circuit_breaker.state",n.breakerState),i.setAttribute("tool.circuit_breaker.retry_after_ms",n.retryAfterMs),i.setAttribute("tool.circuit_breaker.failure_count",n.failureCount),i.setStatus({code:be.ERROR,message:`Circuit breaker open for ${e}: ${n.message}`}),{isError:!0,content:[{type:"text",text:`TOOL TEMPORARILY UNAVAILABLE: "${e}" has been disabled after ${n.failureCount} failures. This is a circuit breaker protection \u2014 do NOT retry this tool. It will become available again after ${Math.ceil(n.retryAfterMs/1e3)} seconds (at ${n.retryAfter}). Instead, inform the user that the operation failed and suggest trying again later.`}]};let l;if(n instanceof Ve)l=n;else if(n instanceof Error)if(n.message.includes("timeout"))l=pe.toolTimeout(e,o.finalOptions.timeout);else if(n.message.includes("not found")){let d=await this.getAllAvailableTools();l=pe.toolNotFound(e,hxe(d.map(p=>({name:p.name}))))}else n.message.includes("validation")||n.message.includes("parameter")?l=pe.invalidParameters(e,n,t):n.message.includes("network")||n.message.includes("connection")?l=pe.networkError(e,n):l=pe.toolExecutionFailed(e,n);else l=pe.toolExecutionFailed(e,new Error(String(n)));let u=l.category||"execution";throw o.metrics.errorCategories[u]=(o.metrics.errorCategories[u]||0)+1,this.emitToolEndEvent(e,s.executionStartTime,!1,void 0,l),this.emitter.listenerCount("error")>0&&this.emitter.emit("error",l),l=new Ve({...l,context:{...l.context,executionTime:a,params:t,options:o.finalOptions,circuitBreakerState:o.circuitBreaker.getState(),circuitBreakerFailures:o.circuitBreaker.getFailureCount(),metrics:{...o.metrics}}}),a5(l),i.setAttribute("tool.result.status","error"),i.setAttribute("tool.duration_ms",a),i.recordException(l),i.setStatus({code:be.ERROR,message:l.message}),l}async executeToolInternal(e,t,n){let o="NeuroLink.executeToolInternal",s=this.getToolAnnotationsForExecution(e),i=this.mcpToolResultCache&&!n.disableToolCache&&!this._disableToolCacheForCurrentRequest&&!s?.destructiveHint,a=this.mcpToolResultCache,l=n.authContext||this.toolExecutionContext?{__args:t,__ctx:n.authContext??this.toolExecutionContext}:t;if(i&&a){let p=a.getCachedResult(e,l);if(p!==void 0)return g.debug(`[${o}] Cache HIT for tool: ${e}`),p}let u=async p=>{if(this.mcpToolMiddlewares.length===0)return p();let m=0,f=async()=>{if(m<this.mcpToolMiddlewares.length){let h=this.mcpToolMiddlewares[m++];return h({name:e,description:"",inputSchema:{},annotations:s,execute:async()=>({})},t,{toolMeta:{name:e,annotations:s}},f)}return p()};return await f()},d=async()=>{let p=this.externalServerManager.getAllTools(),m=p.filter(h=>h.name===e&&h.isAvailable),f;if(m.length>1&&this.mcpToolRouter)try{let h={name:e,description:m[0].description??"",serverId:m[0].serverId,inputSchema:{}},y=this.mcpToolRouter.route(h);f=m.find(v=>v.serverId===y.serverId)||m[0],g.debug(`[${o}] Router selected server: ${y.serverId}`,{strategy:y.strategy,confidence:y.confidence})}catch(h){g.warn(`[${o}] Router failed, falling back to first match`,{error:h}),f=m[0]}else f=m[0];if(g.debug(`[${o}] External MCP tool search:`,{toolName:e,externalToolsCount:p.length,foundTool:!!f,isAvailable:f?.isAvailable,serverId:f?.serverId}),f&&f.isAvailable)try{ne.debug(`[${o}] Executing external MCP tool: ${e} from ${f.serverId}`);let h=await this.externalServerManager.executeTool(f.serverId,e,t,{timeout:n.timeout});return g.debug(`[${o}] External MCP tool execution successful:`,{toolName:e,serverId:f.serverId,resultType:typeof h}),h}catch(h){throw g.error(`[${o}] External MCP tool execution failed:`,{toolName:e,serverId:f.serverId,error:h instanceof Error?h.message:String(h)}),pe.toolExecutionFailed(e,h instanceof Error?h:new Error(String(h)),f.serverId)}try{let h=this.toolExecutionContext||{},y=n.authContext||{},v={...h,...y};g.debug("[Using merged context for unified registry tool:",{toolName:e,storedContextKeys:Object.keys(h),finalContextKeys:Object.keys(v)});let b=await this.toolRegistry.executeTool(e,t,v);if(b&&typeof b=="object"&&"success"in b&&b.success===!1){let w=b.error||"Tool execution failed",T=new Error(w);this.emitter.listenerCount("error")>0&&this.emitter.emit("error",T)}return b}catch(h){let y=h instanceof Error?h:new Error(String(h));if(this.emitter.listenerCount("error")>0&&this.emitter.emit("error",y),h instanceof Error&&h.message.includes("not found")){let v=await this.getAllAvailableTools();throw pe.toolNotFound(e,v.map(b=>b.name))}throw pe.toolExecutionFailed(e,h instanceof Error?h:new Error(String(h)))}};try{let p=await u(d);return i&&a&&p!==void 0&&(a.cacheResult(e,l,p),g.debug(`[${o}] Cached result for tool: ${e}`)),p}catch(p){let m=s?{name:e,description:"",annotations:s,execute:async()=>({})}:void 0;if(m&&TR(m)&&p instanceof Error&&$D(p)){g.debug(`[${o}] Tool ${e} is safe to retry, attempting once more`);try{let f=await u(d);return i&&a&&f!==void 0&&a.cacheResult(e,l,f),f}catch{}}throw p}}getToolAnnotationsForExecution(e){if(this.toolCache?.tools){let t=this.toolCache.tools.find(n=>n.name===e);if(t?.annotations)return t.annotations}if(this.mcpEnhancementsConfig?.annotations?.autoInfer!==!1)return ul({name:e,description:""})}invalidateToolCache(){this.toolCache=null,g.debug("Tool cache invalidated")}async getAllAvailableTools(){if(this.toolCache&&Date.now()-this.toolCache.timestamp<this.toolCacheDuration)return g.debug("Returning available tools from cache"),this.toolCache.tools;let e=`get-all-tools-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,t=Date.now(),n=process.hrtime.bigint();g.debug("[NeuroLink] \u{1F6E0}\uFE0F LOG_POINT_A001_GET_ALL_TOOLS_START",{logPoint:"A001_GET_ALL_TOOLS_START",getAllToolsId:e,timestamp:new Date().toISOString(),getAllToolsStartTime:t,getAllToolsHrTimeStart:n.toString(),toolRegistryState:{hasToolRegistry:!!this.toolRegistry,toolRegistrySize:0,toolRegistryType:this.toolRegistry?.constructor?.name||"NOT_SET",hasExternalServerManager:!!this.externalServerManager,externalServerManagerType:this.externalServerManager?.constructor?.name||"NOT_SET"},mcpState:{mcpInitialized:this.mcpInitialized,hasProviderRegistry:!!Ur,providerRegistrySize:0},message:"Starting comprehensive tool discovery across all sources"});let{MemoryManager:o}=await Promise.resolve().then(()=>(hw(),gw)),s=o.getMemoryUsageMB();try{let i=new Map,a=await this.toolRegistry.listTools();for(let y of a)if(!i.has(y.name)){let v=fk(y,{serverId:y.serverId==="direct"?"neurolink-direct":y.serverId});i.set(y.name,v)}let l=this.toolRegistry.getToolsByCategory(js({isCustomTool:!0}));for(let y of l)if(!i.has(y.name)){let v=fk(y,{description:"Custom tool",serverId:`custom-tool-${y.name}`,category:js({isCustomTool:!0,serverId:y.serverId}),inputSchema:{}});i.set(y.name,v)}let u=this.toolRegistry.getToolsByCategory("in-memory");for(let y of u)if(!i.has(y.name)){let v=fk(y,{description:"In-memory MCP tool",serverId:"unknown",category:"in-memory",inputSchema:{}});i.set(y.name,v)}let d=this.externalServerManager.getAllTools();for(let y of d)if(!i.has(y.name)){let v=fk(y,{category:js({existingCategory:typeof y.metadata?.category=="string"?y.metadata.category:void 0,isExternal:!0,serverId:y.serverId}),inputSchema:{}});i.set(y.name,v)}let p=Array.from(i.values());ne.debug("Tool discovery results",{mcpTools:a.length,customTools:l.length,inMemoryTools:u.length,externalMCPTools:d.length,total:p.length});let f=o.getMemoryUsageMB().heapUsed-s.heapUsed;if(f>Dd.LOW_USAGE_MB&&(ne.debug(`\u{1F50D} Tool listing used ${f}MB memory (large tool registry detected)`),p.length>FW.LARGE_TOOL_COLLECTION&&ne.debug("\u{1F4A1} Tool collection optimized for large sets. Memory usage reduced through efficient object reuse.")),this.mcpEnhancementsConfig?.annotations?.autoInfer!==!1)for(let y of p)y.annotations||(y.annotations=ul({name:y.name,description:y.description||""}));let h=p;return this.toolCache={tools:h,timestamp:Date.now()},h}catch(i){return ne.error("Failed to list available tools",{error:i}),[]}}async getProviderStatus(e){let{MemoryManager:t}=await Promise.resolve().then(()=>(hw(),gw)),n=t.getMemoryUsageMB();e?.quiet||ne.debug("\u{1F50D} DEBUG: Initializing MCP for provider status..."),await this.initializeMCP(),e?.quiet||ne.debug("\u{1F50D} DEBUG: MCP initialized:",this.mcpInitialized);let{AIProviderFactory:o}=await Promise.resolve().then(()=>(Wc(),Zz)),{hasProviderEnvVars:s}=await Promise.resolve().then(()=>(Lm(),uA)),i=["openai","bedrock","vertex","googleVertex","anthropic","azure","google-ai","huggingface","ollama","mistral","litellm"],a=cp(Hc.DEFAULT_CONCURRENCY_LIMIT),l=i.map(m=>a(async()=>{let f=Date.now();try{if(!await this.hasProviderEnvVars(m)&&m!=="ollama")return{provider:m,status:"not-configured",configured:!1,authenticated:!1,error:"Missing required environment variables",responseTime:Date.now()-f};if(m==="ollama")try{let w=await fetch("http://localhost:11434/api/tags",{method:"GET",signal:AbortSignal.timeout(Ka.AUTH_MS)});if(!w.ok)throw new Error("Ollama service not responding");let T=await w.json(),_=T?.models;if(!Array.isArray(_))throw g.warn("Ollama API returned invalid models format in testProvider",{responseData:T,modelsType:typeof _}),new Error("Invalid models format from Ollama API");let k=_.filter(R=>R&&typeof R=="object"&&typeof R.name=="string");return k.length>0?{provider:m,status:"working",configured:!0,authenticated:!0,responseTime:Date.now()-f,model:k[0].name}:{provider:m,status:"failed",configured:!0,authenticated:!1,error:"Ollama service running but no models installed",responseTime:Date.now()-f}}catch(w){return{provider:m,status:"failed",configured:!1,authenticated:!1,error:w instanceof Error?w.message:"Ollama service not running",responseTime:Date.now()-f}}let y=5e3,v=this.testProviderConnection(m),b=new Promise((w,T)=>{setTimeout(()=>T(new Error("Provider test timeout (5s)")),y)});return await Promise.race([v,b]),{provider:m,status:"working",configured:!0,authenticated:!0,responseTime:Date.now()-f}}catch(h){let y=h instanceof Error?h.message:String(h);return{provider:m,status:"failed",configured:!0,authenticated:!1,error:y,responseTime:Date.now()-f}}})),u=await Promise.all(l),p=t.getMemoryUsageMB().heapUsed-n.heapUsed;return!e?.quiet&&p>20&&ne.debug(`\u{1F50D} Memory usage: +${p}MB (consider cleanup for large operations)`),p>50&&t.forceGC(),u}async testProvider(e){try{return await this.testProviderConnection(e),!0}catch{return!1}}async testProviderConnection(e){let{AIProviderFactory:t}=await Promise.resolve().then(()=>(Wc(),Zz));await(await t.createProvider(e,null)).generate({prompt:"test",maxTokens:1,disableTools:!0})}async getBestProvider(e){let{getBestProvider:t}=await Promise.resolve().then(()=>(Lm(),uA));return t(e)}async getAvailableProviders(){let{getAvailableProviders:e}=await Promise.resolve().then(()=>(Lm(),uA));return e()}async isValidProvider(e){let{isValidProvider:t}=await Promise.resolve().then(()=>(Lm(),uA));return t(e)}async getMCPStatus(){try{await this.initializeMCP();let e=await this.toolRegistry.listTools(),t=this.externalServerManager.getStatistics(),n=this.externalServerManager.listServers(),o=this.getInMemoryServerInfos(),s=this.toolRegistry.getBuiltInServerInfos(),i=this.getAutoDiscoveredServerInfos(),a=n.length+o.length+s.length+i.length,l=t.connectedServers+o.length+s.length,u=e.length+t.totalTools;return{mcpInitialized:this.mcpInitialized,totalServers:a,availableServers:l,autoDiscoveredCount:i.length,totalTools:u,autoDiscoveredServers:i,customToolsCount:this.toolRegistry.getToolsByCategory(js({isCustomTool:!0})).length,inMemoryServersCount:o.length,externalMCPServersCount:n.length,externalMCPConnectedCount:t.connectedServers,externalMCPFailedCount:t.failedServers,externalMCPServers:n}}catch(e){return{mcpInitialized:!1,totalServers:0,availableServers:0,autoDiscoveredCount:0,totalTools:0,autoDiscoveredServers:[],customToolsCount:this.toolRegistry.getToolsByCategory(js({isCustomTool:!0})).length,inMemoryServersCount:0,externalMCPServersCount:0,externalMCPConnectedCount:0,externalMCPFailedCount:0,externalMCPServers:[],error:e instanceof Error?e.message:String(e)}}}async listMCPServers(){return[...this.externalServerManager.listServers(),...this.getInMemoryServerInfos(),...this.toolRegistry.getBuiltInServerInfos(),...this.getAutoDiscoveredServerInfos()]}async testMCPServer(e){try{if(e==="neurolink-direct")return(await this.toolRegistry.listTools()).length>0;let t=this.getInMemoryServers();if(t.has(e)){let o=t.get(e);return!!(o?.tools&&o.tools.length>0)}let n=this.externalServerManager.getServer(e);return n?n.status==="connected"&&n.client!==null:!1}catch(t){return ne.error(`[NeuroLink] Error testing MCP server ${e}:`,t),!1}}async hasProviderEnvVars(e){let{ProviderHealthChecker:t}=await Promise.resolve().then(()=>(Lg(),dw));try{let n=await t.checkProviderHealth(e,{includeConnectivityTest:!1,cacheResults:!1});return n.isConfigured&&n.hasApiKey}catch(n){return g.warn(`Provider env var check failed for ${e}`,{error:n instanceof Error?n.message:String(n)}),!1}}async checkProviderHealth(e,t={}){let{ProviderHealthChecker:n}=await Promise.resolve().then(()=>(Lg(),dw)),o=await n.checkProviderHealth(e,t);return{provider:o.provider,isHealthy:o.isHealthy,isConfigured:o.isConfigured,hasApiKey:o.hasApiKey,lastChecked:o.lastChecked,error:o.error,warning:o.warning,responseTime:o.responseTime,configurationIssues:o.configurationIssues,recommendations:o.recommendations}}async checkAllProvidersHealth(e={}){let{ProviderHealthChecker:t}=await Promise.resolve().then(()=>(Lg(),dw));return(await t.checkAllProvidersHealth(e)).map(o=>({provider:o.provider,isHealthy:o.isHealthy,isConfigured:o.isConfigured,hasApiKey:o.hasApiKey,lastChecked:o.lastChecked,error:o.error,warning:o.warning,responseTime:o.responseTime,configurationIssues:o.configurationIssues,recommendations:o.recommendations}))}async getProviderHealthSummary(){let{ProviderHealthChecker:e}=await Promise.resolve().then(()=>(Lg(),dw)),t=await e.checkAllProvidersHealth({cacheResults:!0,includeConnectivityTest:!1}),n=e.getHealthSummary(t),o=[];return n.healthy===0?o.push("No providers are healthy. Check your environment configuration."):n.healthy<2&&o.push("Consider configuring additional providers for better reliability."),n.hasIssues>0&&o.push("Some providers have configuration issues. Run checkAllProvidersHealth() for details."),{...n,recommendations:o}}async clearProviderHealthCache(e){let{ProviderHealthChecker:t}=await Promise.resolve().then(()=>(Lg(),dw));t.clearHealthCache(e)}getToolExecutionMetrics(){let e={};for(let[t,n]of this.toolExecutionMetrics.entries())e[t]={...n,errorCategories:{...n.errorCategories},successRate:n.totalExecutions>0?n.successfulExecutions/n.totalExecutions:0};return e}setModelAliasConfig(e){this.modelAliasConfig=e,g.info(`[ModelAlias] Configured ${Object.keys(e.aliases).length} model aliases`)}getToolCircuitBreakerStatus(){let e={};for(let[t,n]of this.toolCircuitBreakers.entries())e[t]={state:n.getState(),failureCount:n.getFailureCount(),isHealthy:n.getState()==="closed"};return e}resetToolCircuitBreaker(e){this.toolCircuitBreakers.has(e)&&(this.toolCircuitBreakers.set(e,new Ub(XC.FAILURE_THRESHOLD,RD)),ne.info(`Circuit breaker reset for tool: ${e}`))}clearToolExecutionMetrics(){this.toolExecutionMetrics.clear(),ne.info("All tool execution metrics cleared")}async getToolHealthReport(){let e={},t=0,n=await this.toolRegistry.listTools(),o=new Set(n.map(i=>i.name)),s=new Map;for(let i of n)s.has(i.name)||s.set(i.name,i.serverId||"unknown");for(let i of o){let a=this.toolExecutionMetrics.get(i),l=`${s.get(i)||"unknown"}.${i}`,u=this.toolCircuitBreakers.get(l),d=a&&a.totalExecutions>0?a.successfulExecutions/a.totalExecutions:0,p=(!u||u.getState()==="closed")&&d>=.8;p&&t++;let m=[],f=[];if(u&&u.getState()==="open"&&(m.push("Circuit breaker is open due to repeated failures"),f.push("Check tool implementation and fix underlying issues")),d<.8&&a&&a.totalExecutions>0&&(m.push(`Low success rate: ${(d*100).toFixed(1)}%`),f.push("Review error logs and improve tool reliability")),a&&a.averageExecutionTime>1e4&&(m.push("High average execution time"),f.push("Optimize tool performance or increase timeout")),a&&a.errorCategories){let h=a.errorCategories;h.timeout>0&&(m.push(`Timeout errors: ${h.timeout}`),f.push("Consider increasing the tool timeout configuration")),h.validation>0&&(m.push(`Validation errors: ${h.validation}`),f.push("Review input schemas and parameter validation")),h.network>0&&(m.push(`Network errors: ${h.network}`),f.push("Check network connectivity and endpoint availability"))}e[i]={name:i,isHealthy:p,metrics:{totalExecutions:a?.totalExecutions||0,successRate:d,averageExecutionTime:a?.averageExecutionTime||0,lastExecutionTime:a?.lastExecutionTime||0,errorCategories:a?.errorCategories?{...a.errorCategories}:{}},circuitBreaker:{state:u?.getState()||"closed",failureCount:u?.getFailureCount()||0},issues:m,recommendations:f}}return{totalTools:o.size,healthyTools:t,unhealthyTools:o.size-t,tools:e}}async ensureConversationMemoryInitialized(){try{let e=`manual-init-${Date.now()}`;return await this.initializeConversationMemoryForGeneration(e,Date.now(),process.hrtime.bigint()),!!this.conversationMemory}catch(e){return g.error("Failed to initialize conversation memory",{error:e instanceof Error?e.message:String(e)}),!1}}async getConversationStats(){let e=`stats-init-${Date.now()}`;if(await this.initializeConversationMemoryForGeneration(e,Date.now(),process.hrtime.bigint()),!this.conversationMemory)throw new Ve({code:xt.MISSING_CONFIGURATION,message:"Conversation memory is not enabled",category:"validation",severity:"high",retriable:!1});return await this.conversationMemory.getStats()}async getConversationHistory(e){let t=`history-init-${Date.now()}`;if(await this.initializeConversationMemoryForGeneration(t,Date.now(),process.hrtime.bigint()),!this.conversationMemory)throw new Ve({code:xt.MISSING_CONFIGURATION,message:"Conversation memory is not enabled",category:"validation",severity:"high",retriable:!1});if(!e||typeof e!="string")throw new Ve({code:xt.INVALID_PARAMETERS,message:"Session ID must be a non-empty string",category:"validation",severity:"medium",retriable:!1,context:{sessionId:e}});try{let n=await this.conversationMemory.buildContextMessages(e);return g.debug("Retrieved conversation history",{sessionId:e,messageCount:n.length,turnCount:n.length/2}),n}catch(n){return g.error("Failed to retrieve conversation history",{sessionId:e,error:n instanceof Error?n.message:String(n)}),[]}}async clearConversationSession(e){let t=`clear-session-init-${Date.now()}`;if(await this.initializeConversationMemoryForGeneration(t,Date.now(),process.hrtime.bigint()),!this.conversationMemory)throw new Ve({code:xt.MISSING_CONFIGURATION,message:"Conversation memory is not enabled",category:"validation",severity:"high",retriable:!1});return this.lastCompactionMessageCount.delete(e),await this.conversationMemory.clearSession(e)}async clearAllConversations(){let e=`clear-all-init-${Date.now()}`;if(await this.initializeConversationMemoryForGeneration(e,Date.now(),process.hrtime.bigint()),!this.conversationMemory)throw new Ve({code:xt.MISSING_CONFIGURATION,message:"Conversation memory is not enabled",category:"validation",severity:"high",retriable:!1});this.lastCompactionMessageCount.clear(),await this.conversationMemory.clearAllSessions()}async storeToolExecutions(e,t,n,o,s){let i=n&&n.length>0||o&&o.length>0;if(!i){g.debug("Tool execution storage skipped",{hasToolData:i,toolCallsCount:n?.length||0,toolResultsCount:o?.length||0});return}let a=this.conversationMemory;try{await a.storeToolExecution(e,t,n,o,s)}catch(l){g.warn("Failed to store tool executions",{sessionId:e,userId:t,error:l instanceof Error?l.message:String(l)})}}isToolExecutionStorageAvailable(){let e=process.env.STORAGE_TYPE==="redis",t=this.conversationMemory&&this.conversationMemory.constructor.name==="RedisConversationMemoryManager";return!!(e&&t)}async getSessionMessages(e,t){let n=`get-msgs-init-${Date.now()}`;if(await this.initializeConversationMemoryForGeneration(n,Date.now(),process.hrtime.bigint()),!this.conversationMemory)throw new Ve({code:xt.MISSING_CONFIGURATION,message:"Conversation memory is not enabled",category:"validation",severity:"high",retriable:!1});if(!e||typeof e!="string")throw new Ve({code:xt.INVALID_PARAMETERS,message:"Session ID must be a non-empty string",category:"validation",severity:"medium",retriable:!1,context:{sessionId:e}});return await this.conversationMemory.getSessionMessages(e,t)}async setSessionMessages(e,t,n){let o=`set-msgs-init-${Date.now()}`;if(await this.initializeConversationMemoryForGeneration(o,Date.now(),process.hrtime.bigint()),!this.conversationMemory)throw new Ve({code:xt.MISSING_CONFIGURATION,message:"Conversation memory is not enabled",category:"validation",severity:"high",retriable:!1});if(!e||typeof e!="string")throw new Ve({code:xt.INVALID_PARAMETERS,message:"Session ID must be a non-empty string",category:"validation",severity:"medium",retriable:!1,context:{sessionId:e}});await this.conversationMemory.setSessionMessages(e,t,n)}async modifyLastAssistantMessage(e,t,n){let o=await this.getSessionMessages(e,n);for(let s=o.length-1;s>=0;s--)if(o[s].role==="assistant")return o[s]={...o[s],content:t(o[s].content)},await this.setSessionMessages(e,o,n),!0;return!1}async addExternalMCPServer(e,t){this.invalidateToolCache();try{ne.info(`[NeuroLink] Adding external MCP server: ${e}`,{command:t.command,transport:t.transport});let n=await this.externalServerManager.addServer(e,t);if(n.success){if(ne.info(`[NeuroLink] External MCP server added successfully: ${e}`,{toolsDiscovered:n.metadata?.toolsDiscovered||0,duration:n.duration}),this.mcpEnhancementsConfig?.router?.enabled!==!1){let o=this.externalServerManager.listServers();if(o.length>=2&&!this.mcpToolRouter){this.mcpToolRouter=new Dg({strategy:this.mcpEnhancementsConfig?.router?.strategy??"least-loaded",enableAffinity:this.mcpEnhancementsConfig?.router?.enableAffinity??!1});for(let s of o)this.mcpToolRouter.registerServer(s.id||e);g.debug("[NeuroLink] ToolRouter auto-initialized (2+ external servers)")}else this.mcpToolRouter&&this.mcpToolRouter.registerServer(e)}this.emitter.emit("externalMCP:serverAdded",{serverId:e,serverName:t.name||e,config:t,toolCount:n.metadata?.toolsDiscovered||0,timestamp:Date.now()})}else ne.error(`[NeuroLink] Failed to add external MCP server: ${e}`,{error:n.error});return n}catch(n){throw ne.error(`[NeuroLink] Error adding external MCP server: ${e}`,n),n}}async removeExternalMCPServer(e){this.invalidateToolCache();try{ne.info(`[NeuroLink] Removing external MCP server: ${e}`);let t=this.externalServerManager.getServerName(e),n=await this.externalServerManager.removeServer(e);return n.success?(ne.info(`[NeuroLink] External MCP server removed successfully: ${e}`),this.emitter.emit("externalMCP:serverRemoved",{serverId:e,serverName:t,timestamp:Date.now()})):ne.error(`[NeuroLink] Failed to remove external MCP server: ${e}`,{error:n.error}),n}catch(t){throw ne.error(`[NeuroLink] Error removing external MCP server: ${e}`,t),t}}listExternalMCPServers(){let e=this.externalServerManager.getServerStatuses(),t=this.externalServerManager.listServers();return e.map(n=>{let o=t.find(s=>s.id===n.serverId);return{serverId:n.serverId,status:n.status,toolCount:n.toolCount,uptime:n.performance.uptime,isHealthy:n.isHealthy,config:o||{}}})}getExternalMCPServer(e){return this.externalServerManager.getServer(e)}async executeExternalMCPTool(e,t,n,o){try{ne.debug(`[NeuroLink] Executing external MCP tool: ${t} on ${e}`);let s=this.getToolAnnotationsForExecution(t),i=!!this.mcpToolResultCache&&!this._disableToolCacheForCurrentRequest&&!s?.destructiveHint,a={__serverId:e,__args:n,...this.toolExecutionContext?{__ctx:this.toolExecutionContext}:{}};if(i&&this.mcpToolResultCache){let u=this.mcpToolResultCache.getCachedResult(t,a);if(u!==void 0)return ne.debug(`[NeuroLink] Tool result cache HIT: ${t} on ${e}`),u}let l=await this.externalServerManager.executeTool(e,t,n,o);return i&&this.mcpToolResultCache&&this.mcpToolResultCache.cacheResult(t,a,l),ne.debug(`[NeuroLink] External MCP tool executed successfully: ${t}`),l}catch(s){throw ne.error(`[NeuroLink] External MCP tool execution failed: ${t}`,s),s}}getExternalMCPTools(){return this.externalServerManager.getAllTools()}getExternalMCPServerTools(e){return this.externalServerManager.getServerTools(e)}async testExternalMCPConnection(e){try{let{MCPClientFactory:t}=await Oe(Promise.resolve().then(()=>(K2(),nAe)),1e4),n=await t.testConnection(e,1e4);return{success:n.success,error:n.error,toolCount:n.capabilities?1:0}}catch(t){return{success:!1,error:t instanceof Error?t.message:String(t)}}}getExternalMCPStatistics(){return this.externalServerManager.getStatistics()}async shutdownExternalMCPServers(){try{ne.info("[NeuroLink] Shutting down all external MCP servers..."),this.unregisterAllExternalMCPToolsFromRegistry(),await this.externalServerManager.shutdown(),ne.info("[NeuroLink] All external MCP servers shut down successfully")}catch(e){throw ne.error("[NeuroLink] Error shutting down external MCP servers:",e),e}}async getElicitationManager(){return(await Oe(Promise.resolve().then(()=>(LQ(),dOe)),1e4)).globalElicitationManager}async registerElicitationHandler(e){(await this.getElicitationManager()).registerHandler(e)}async getMultiServerManager(){return(await Oe(Promise.resolve().then(()=>(f2(),u0e)),1e4)).globalMultiServerManager}async getEnhancedToolDiscovery(){let e=await Oe(Promise.resolve().then(()=>(g2(),d0e)),1e4);return new e.EnhancedToolDiscovery(this.toolRegistry)}async getMCPRegistryClient(){return(await Oe(Promise.resolve().then(()=>(zQ(),pOe)),1e4)).globalMCPRegistryClient}async exposeAgentAsTool(e,t){return(await Oe(Promise.resolve().then(()=>(nB(),GQ)),1e4)).exposeAgentAsTool(e,t)}async exposeWorkflowAsTool(e,t){return(await Oe(Promise.resolve().then(()=>(nB(),GQ)),1e4)).exposeWorkflowAsTool(e,t)}async getToolIntegrationManager(){return(await Oe(Promise.resolve().then(()=>(YQ(),mOe)),1e4)).globalToolIntegrationManager}async convertToolsToMCPFormat(e,t={}){let n=await Oe(Promise.resolve().then(()=>(aB(),aee)),1e4),o=e.map(s=>({...s,execute:s.execute??(async()=>({success:!1,error:"No execute function provided"}))}));return n.batchConvertToMCP(o,t)}async convertToolsFromMCPFormat(e,t={}){return(await Oe(Promise.resolve().then(()=>(aB(),aee)),1e4)).batchConvertToNeuroLink(e,t)}async getToolAnnotations(e){let{inferAnnotations:t,mergeAnnotations:n,getAnnotationSummary:o}=await Oe(Promise.resolve().then(()=>(OS(),l0e)),1e4),s=this.toolRegistry.getToolInfo(e);if(!s)return null;let i=s.tool.annotations,a=t({name:s.tool.name,description:s.tool.description??""}),l=n(a,i);return{annotations:l,summary:o(l)}}convertExternalMCPToolsToAISDKFormat(){let e=this.externalServerManager.getAllTools(),t={};for(let n of e)if(n.isAvailable){let o={description:n.description,execute:async s=>{try{ne.debug(`[NeuroLink] Executing external MCP tool via AI SDK: ${n.name}`,{params:s});let i=await this.externalServerManager.executeTool(n.serverId,n.name,s,{timeout:3e4});return ne.debug(`[NeuroLink] External MCP tool execution result: ${n.name}`,{success:!!i,hasData:!!(i&&typeof i=="object"&&"content"in i)}),i}catch(i){throw ne.error(`[NeuroLink] External MCP tool execution failed: ${n.name}`,i),i}}};t[n.name]=o,ne.debug(`[NeuroLink] Converted external MCP tool to AI SDK format: ${n.name} from server ${n.serverId}`)}return ne.info(`[NeuroLink] Converted ${Object.keys(t).length} external MCP tools to AI SDK format`),t}convertJSONSchemaToAISDKFormat(e){}unregisterExternalMCPToolsFromRegistry(e){try{let t=this.externalServerManager.getServerTools(e);for(let n of t)this.toolRegistry.removeTool(n.name),ne.debug(`[NeuroLink] Unregistered external MCP tool from main registry: ${n.name}`)}catch(t){ne.error(`[NeuroLink] Failed to unregister external MCP tools from registry for server ${e}:`,t)}}unregisterExternalMCPToolFromRegistry(e){try{this.toolRegistry.removeTool(e),ne.debug(`[NeuroLink] Unregistered external MCP tool from main registry: ${e}`)}catch(t){ne.error(`[NeuroLink] Failed to unregister external MCP tool ${e} from registry:`,t)}}async lazyInitializeConversationMemory(e,t,n){try{let{initializeConversationMemory:o}=await SOe().then(()=>TOe),s=await o(this.conversationMemoryConfig);this.conversationMemory=s,this.conversationMemoryNeedsInit=!1}catch(o){throw g.error("[NeuroLink] \u274C LOG_POINT_G005_MEMORY_LAZY_INIT_ERROR",{logPoint:"G005_MEMORY_LAZY_INIT_ERROR",generateInternalId:e,timestamp:new Date().toISOString(),elapsedMs:Date.now()-t,elapsedNs:(process.hrtime.bigint()-n).toString(),error:o instanceof Error?o.message:String(o),errorName:o instanceof Error?o.name:"UnknownError",errorStack:o instanceof Error?o.stack:void 0,message:"Lazy conversation memory initialization failed"}),o}}unregisterAllExternalMCPToolsFromRegistry(){try{let e=this.externalServerManager.getAllTools();for(let t of e)this.toolRegistry.removeTool(t.name);ne.debug(`[NeuroLink] Unregistered ${e.length} external MCP tools from main registry`)}catch(e){ne.error("[NeuroLink] Failed to unregister all external MCP tools from registry:",e)}}async createEvaluationPipeline(e){let{EvaluationPipeline:t,getPreset:n}=await Oe(Promise.resolve().then(()=>(jb(),ak)),1e4,pe.evaluationTimeout("evaluation module load",1e4)),o;typeof e=="string"?o=n(e):o=e;let s=new t(o);return await Oe(s.initialize(),3e4,pe.evaluationTimeout("pipeline initialization",3e4)),g.debug(`[NeuroLink] Created evaluation pipeline: ${o.name??"custom"}`),s}async evaluate(e,t){let{EvaluationPipeline:n,getPreset:o}=await Oe(Promise.resolve().then(()=>(jb(),ak)),1e4,pe.evaluationTimeout("evaluation module load",1e4)),s;if(t?.pipeline&&t?.scorers)throw new Error("Cannot specify both 'pipeline' and 'scorers' options. Use one or the other.");if(t?.scorers&&t.scorers.length===0)throw new Error("The 'scorers' array must not be empty. Provide at least one scorer ID or omit the option to use the default 'quality' preset.");t?.pipeline?s={...o(t.pipeline)}:t?.scorers&&t.scorers.length>0?s={name:"SDK Evaluation",description:"Evaluation from NeuroLink SDK",scorers:t.scorers.map(u=>({id:u})),executionMode:t.executionMode??"parallel",passThreshold:t.passThreshold??.7}:s=o("quality"),t?.passThreshold!==void 0&&(s.passThreshold=t.passThreshold),t?.executionMode!==void 0&&(s.executionMode=t.executionMode);let i=new n(s);await Oe(i.initialize(),3e4,pe.evaluationTimeout("pipeline initialization",3e4));let a=t?.timeoutMs??6e4,l=await Oe(i.execute(e,{correlationId:t?.correlationId}),a,pe.evaluationTimeout("pipeline execution",a));return g.debug("[NeuroLink] Evaluation completed",{pipeline:s.name,overallScore:l.overallScore,passed:l.passed,scorerCount:l.scores.length}),l}async score(e,t,n){let{ScorerRegistry:o}=await Oe(Promise.resolve().then(()=>(pL(),j5)),1e4,pe.evaluationTimeout("scorer module load",1e4));await Oe(o.registerBuiltInScorers(),3e4,pe.evaluationTimeout("scorer bootstrap",3e4));let s=await Oe(o.getScorer(e,n),3e4,pe.evaluationTimeout(`scorer load: ${e}`,3e4));if(!s)throw pe.scorerNotFound(e);let i=s.validateInput(t);if(!i.valid)throw pe.evaluationValidationFailed(e,i.errors);let a=await Oe(s.score(t),6e4,pe.evaluationTimeout("scorer execution",6e4));return g.debug("[NeuroLink] Scoring completed",{scorerId:e,score:a.score,passed:a.passed,computeTime:a.computeTime}),a}async getAvailableScorers(e){let{ScorerRegistry:t}=await Oe(Promise.resolve().then(()=>(pL(),j5)),1e4,pe.evaluationTimeout("scorer module load",1e4));await Oe(t.registerBuiltInScorers(),3e4,pe.evaluationTimeout("scorer bootstrap",3e4));let n=t.list();return e?.category&&(n=n.filter(o=>o.category===e.category)),e?.type&&(n=n.filter(o=>o.type===e.type)),n}async getEvaluationPresets(){let{getPresetNames:e}=await Oe(Promise.resolve().then(()=>(jb(),ak)),1e4,pe.evaluationTimeout("evaluation module load",1e4));return e()}async getEvaluationPreset(e){let{getPreset:t}=await Oe(Promise.resolve().then(()=>(jb(),ak)),1e4,pe.evaluationTimeout("evaluation module load",1e4));return t(e)}async dispose(){g.debug("[NeuroLink] Starting disposal of resources..."),this.lastCompactionMessageCount.clear();let e=[];try{try{g.debug("[NeuroLink] Flushing and shutting down OpenTelemetry..."),await iR(),await aR(),g.debug("[NeuroLink] OpenTelemetry shutdown successfully")}catch(t){let n=t instanceof Error?t:new Error(`OpenTelemetry shutdown error: ${String(t)}`);e.push(n),g.warn("[NeuroLink] Error shutting down OpenTelemetry:",t)}if(this.externalServerManager)try{g.debug("[NeuroLink] Shutting down external MCP servers..."),await this.externalServerManager.shutdown(),g.debug("[NeuroLink] External MCP servers shutdown successfully")}catch(t){let n=t instanceof Error?t:new Error(`External server shutdown error: ${String(t)}`);e.push(n),g.warn("[NeuroLink] Error shutting down external MCP servers:",t)}if(this.emitter)try{g.debug("[NeuroLink] Removing all event listeners..."),this.emitter.removeAllListeners(),g.clearEventEmitter(),g.debug("[NeuroLink] Event listeners removed successfully")}catch(t){let n=t instanceof Error?t:new Error(`Event emitter cleanup error: ${String(t)}`);e.push(n),g.warn("[NeuroLink] Error removing event listeners:",t)}if(this.toolCircuitBreakers&&this.toolCircuitBreakers.size>0)try{g.debug(`[NeuroLink] Clearing ${this.toolCircuitBreakers.size} circuit breakers...`),this.toolCircuitBreakers.clear(),g.debug("[NeuroLink] Circuit breakers cleared successfully")}catch(t){let n=t instanceof Error?t:new Error(`Circuit breaker cleanup error: ${String(t)}`);e.push(n),g.warn("[NeuroLink] Error clearing circuit breakers:",t)}try{g.debug("[NeuroLink] Clearing maps and caches..."),this.toolExecutionMetrics&&this.toolExecutionMetrics.clear(),this.activeToolExecutions&&this.activeToolExecutions.clear(),this.currentStreamToolExecutions&&(this.currentStreamToolExecutions.length=0),this.toolExecutionHistory&&(this.toolExecutionHistory.length=0),this.toolCache&&(this.toolCache.tools=[],this.toolCache.timestamp=0),this.mcpToolResultCache?.destroy(),this.mcpToolRouter?.destroy(),this.mcpToolBatcher?.destroy(),this.mcpToolResultCache=void 0,this.mcpToolRouter=void 0,this.mcpToolBatcher=void 0,this.mcpEnhancedDiscovery=void 0,this.mcpToolMiddlewares=[],g.debug("[NeuroLink] Maps and caches cleared successfully")}catch(t){let n=t instanceof Error?t:new Error(`Cache cleanup error: ${String(t)}`);e.push(n),g.warn("[NeuroLink] Error clearing caches:",t)}if(this._taskManager)try{g.debug("[NeuroLink] Shutting down TaskManager..."),await Oe(this._taskManager.shutdown(),5e3,new Error("TaskManager shutdown timed out"))}catch(t){g.warn("[NeuroLink] TaskManager shutdown error:",t)}finally{this._taskManager=void 0}try{g.debug("[NeuroLink] Resetting initialization state..."),this.mcpInitialized=!1,this.mcpInitPromise=null,this.conversationMemoryNeedsInit=!1,this.credentials=void 0,g.debug("[NeuroLink] Initialization state reset successfully")}catch(t){let n=t instanceof Error?t:new Error(`State reset error: ${String(t)}`);e.push(n),g.warn("[NeuroLink] Error resetting state:",t)}e.length===0?g.debug("[NeuroLink] \u2705 Resource disposal completed successfully"):g.warn(`[NeuroLink] \u26A0\uFE0F Resource disposal completed with ${e.length} errors`,{errors:e.map(t=>t.message)})}catch(t){throw g.error("[NeuroLink] Critical error during disposal:",t),t}}getToolRegistry(){return this.toolRegistry}async compactSession(e,t){if(!this.conversationMemory)return null;let n=await this.conversationMemory.buildContextMessages(e);if(!n||n.length===0)return null;let o=new wg({...t,summarizationProvider:t?.summarizationProvider??this.conversationMemoryConfig?.conversationMemory?.summarizationProvider,summarizationModel:t?.summarizationModel??this.conversationMemoryConfig?.conversationMemory?.summarizationModel}),s=Pa({provider:t?.provider||"openai",conversationMessages:n}),i=Math.floor(s.availableInputTokens*.6),a=await o.compact(n,i,this.conversationMemoryConfig?.conversationMemory);return a.compacted&&IS(a.messages),a}async getContextStats(e,t,n){if(!this.conversationMemory)return null;let o=await this.conversationMemory.buildContextMessages(e);if(!o||o.length===0)return null;let s=Pa({provider:t||"openai",model:n,conversationMessages:o});return{estimatedInputTokens:s.estimatedInputTokens,availableInputTokens:s.availableInputTokens,usageRatio:s.usageRatio,shouldCompact:s.shouldCompact,messageCount:o.length}}needsCompaction(e,t,n){if(!this.conversationMemory)return!1;let o=this.conversationMemory.getSession?.(e);return o?Pa({provider:t||"openai",model:n,conversationMessages:o.messages}).shouldCompact:!1}async setAuthProvider(e){this.authInitPromise=void 0,await this.initializeAuthProviderFromConfig(e)}async initializeAuthProviderFromConfig(e){let t,n;if("authenticateToken"in e&&typeof e.authenticateToken=="function")t=e,n=t.type;else if("provider"in e)t=e.provider,n=t.type;else{let o=e,{AuthProviderFactory:s}=await Promise.resolve().then(()=>(RA(),wOe));t=await s.createProvider(o.type,o.config),n=o.type}this.authProvider=t,g.info(`Auth provider set: ${n}`),this.emitter.emit("auth:provider:set",{type:t.type,timestamp:Date.now()})}getAuthProvider(){return this.authProvider}async ensureAuthProvider(){if(this.authProvider||!this.pendingAuthConfig)return;let e=this.pendingAuthConfig;this.authInitPromise??=(async()=>{try{await this.initializeAuthProviderFromConfig(e),this.pendingAuthConfig=void 0}finally{this.authInitPromise&&(this.pendingAuthConfig===void 0||this.pendingAuthConfig===e)&&(this.authInitPromise=void 0)}})(),await this.authInitPromise}async setAuthContext(e){let{globalAuthContext:t}=await Promise.resolve().then(()=>(tw(),nz));t.set(e),g.debug("Auth context set",{userId:e.user.id,provider:e.provider,sessionId:e.session?.id})}async getAuthContext(){let{getAuthContext:e}=await Promise.resolve().then(()=>(tw(),nz));return e()}async clearAuthContext(){let{globalAuthContext:e}=await Promise.resolve().then(()=>(tw(),nz)),t=e.get()?.user.id;e.clear(),t&&g.debug(`Auth context cleared for user: ${t}`)}getExternalServerManager(){return this.externalServerManager}buildResolutionContext(e,t){return{requestContext:t||{},signal:e}}async resolveDynamicOptions(e){let t=["model","provider","temperature","maxTokens","systemPrompt","timeout","thinkingLevel","disableTools","enableAnalytics","enableEvaluation"];if(!(t.some(s=>typeof e[s]=="function")||typeof e.tools=="function"))return;let o=e.dynamicContext;await this.resolveDynamicFields(e,t,o)}async resolveDynamicFields(e,t,n){let o=this.buildResolutionContext(e.abortSignal,n);if(g.debug("[NeuroLink] Resolving dynamic arguments"),await Promise.all(t.map(async s=>{if(typeof e[s]=="function"){let i=await g7(e[s],o);e[s]=i.value,g.debug(`[NeuroLink] Resolved dynamic ${s}: ${i.resolutionType}`)}})),typeof e.tools=="function"){let s=await g7(e.tools,o);if(!Array.isArray(s.value))throw new TypeError(`Dynamic tools resolver must return string[] (tool names), got ${typeof s.value=="object"?"object":typeof s.value}`);e.enabledToolNames=s.value,delete e.tools}}},EOe=new Ov,G8t=EOe});function V8t(r){return typeof r=="string"&&r.length>0}function kw(r){return V8t(r)?/^gemini-3(\.\d+)?(-.*)?$/i.test(r):!1}var gee=A(()=>{"use strict"});function Vo(r,e,t){return!t||!e||Object.keys(e).length===0?"none":r.toolChoice??"auto"}var od=A(()=>{"use strict"});function COe(r){if(!(!r?.enabled&&!r?.thinkingLevel))return{includeThoughts:!0,thinkingLevel:r.thinkingLevel??H8t}}var H8t,kOe=A(()=>{"use strict";H8t="high"});function bp(r){if(Array.isArray(r.anyOf)||Array.isArray(r.oneOf)){let t=r.anyOf?"anyOf":"oneOf",n=r[t],o=n.filter(l=>l.type!=="null"&&l.type!=="undefined");if(o.length===1){let l=bp({...o[0]});return l.nullable=!0,r.description&&(l.description=r.description),l}let s=o.map(l=>l.type||"unknown").join(" | "),i={type:"string"},a=r.description?`${r.description} (accepts: ${s})`:`Value as string (accepts: ${s})`;return i.description=a,n.some(l=>l.type==="null")&&(i.nullable=!0),i}let e={};for(let[t,n]of Object.entries(r))if(!(t==="$schema"||t==="additionalProperties"||t==="default"))if(t==="properties"&&n&&typeof n=="object"){let o={};for(let[s,i]of Object.entries(n))i&&typeof i=="object"?o[s]=bp(i):o[s]=i;e[t]=o}else t==="items"&&n&&typeof n=="object"?Array.isArray(n)?e[t]=n.map(o=>o&&typeof o=="object"?bp(o):o):e[t]=bp(n):e[t]=n;Array.isArray(e.allOf)&&(e.allOf=e.allOf.map(t=>bp(t))),e.not&&typeof e.not=="object"&&(e.not=bp(e.not));for(let t of["if","then","else"])e[t]&&typeof e[t]=="object"&&(e[t]=bp(e[t]));return e}function pB(r){let e={},t=[];for(let[n,o]of Object.entries(r))try{let i=o.parameters;if(i&&typeof i=="object"&&"_def"in i&&typeof i.parse=="function"){let a=Lf(i),l=Fo(a),u=bp(l);e[n]={description:o.description||`Tool: ${n}`,inputSchema:ga(u),execute:o.execute}}else if(i&&typeof i=="object"&&"jsonSchema"in i){let a=i.jsonSchema,l=bp(Fo(a));e[n]={description:o.description||`Tool: ${n}`,inputSchema:ga(l),execute:o.execute}}else e[n]=o}catch(s){g.warn(`[Gemini] Failed to sanitize tool "${n}", skipping: ${s instanceof Error?s.message:String(s)}`),t.push(n)}return{tools:e,dropped:t}}function AOe(r){let e={},t=[];for(let[n,o]of Object.entries(r)){let s=o,i=s.parameters||o.inputSchema,a;jd(i)?a=Lf(i):i&&typeof i=="object"?a=i:a={type:"object",properties:{}},a.jsonSchema&&typeof a.jsonSchema=="object"&&!a.type&&(a=a.jsonSchema);let l=JSON.stringify(a),u=OL(a);JSON.stringify(u)!==l&&t.push(n);let d=ga(u);e[n]={...o,inputSchema:d,...s.parameters?{parameters:d}:{}}}return{tools:e,normalized:t}}function Rw(r){let e=[],t=new Map,n=[];for(let[o,s]of Object.entries(r))try{let i={name:o,description:s.description||`Tool: ${o}`},a=s;if(a.parameters||s.inputSchema){let l,u=a.parameters||s.inputSchema;jd(u)?l=Lf(u):typeof u=="object"?l=u:l={type:"object",properties:{}},l.jsonSchema&&typeof l.jsonSchema=="object"&&!l.type&&(l=l.jsonSchema),i.parametersJsonSchema=bp(Fo(l))}e.push(i),s.execute&&t.set(o,s.execute)}catch(i){n.push(o),g.error(`[buildNativeToolDeclarations] Failed to convert tool "${o}":`,i)}return n.length>0&&g.warn(`[buildNativeToolDeclarations] ${n.length} tool(s) skipped due to schema errors: ${n.join(", ")}`),{toolsConfig:[{functionDeclarations:e}],executeMap:t}}function Aw(r,e){let t={temperature:r.temperature??1,maxOutputTokens:r.maxTokens};e&&(t.tools=e),r.systemPrompt&&(t.systemInstruction=r.systemPrompt);let n=COe(r.thinkingConfig);return n&&(t.thinkingConfig=n),t}function Iw(r){let e=r||200;return Number.isFinite(e)&&e>0?Math.min(Math.floor(e),ROe):Math.min(200,ROe)}async function mB(r){let e=[],t=[],n=0,o=0;for await(let s of r){let i=s,u=i.candidates?.[0]?.content;u&&Array.isArray(u.parts)&&e.push(...u.parts),s.functionCalls&&t.push(...s.functionCalls);let d=i.usageMetadata;d&&(n=Math.max(n,d.promptTokenCount||0),o=Math.max(o,d.candidatesTokenCount||0))}return{rawResponseParts:e,stepFunctionCalls:t,inputTokens:n,outputTokens:o}}function fB(){let r=[],e=!1,t,n=null;function o(){if(n){let d=n;n=null,d()}}function s(d){e||(r.push({content:d}),o())}function i(){e=!0,o()}function a(d){e=!0,t=d,o()}let l=0;async function*u(){try{for(;;)if(l<r.length)yield r[l++],l>1024&&l*2>=r.length&&(r.splice(0,l),l=0);else if(e){if(t!==void 0)throw t instanceof Error?t:new Error(String(t));return}else await new Promise(d=>{n=d})}finally{e=!0,r.length=0,n?.()}}return{push:s,close:i,error:a,iterable:u()}}async function gB(r,e){let t=[],n=[],o=0,s=0;for await(let i of r){let a=i,d=a.candidates?.[0]?.content;if(d&&Array.isArray(d.parts))for(let m of d.parts)t.push(m),typeof m.text=="string"&&m.text.length>0&&e.push(m.text);i.functionCalls&&n.push(...i.functionCalls);let p=a.usageMetadata;p&&(o=Math.max(o,p.promptTokenCount||0),s=Math.max(s,p.candidatesTokenCount||0))}return{rawResponseParts:t,stepFunctionCalls:n,inputTokens:o,outputTokens:s}}function hee(r){for(let e=r.length-1;e>=0;e--){let t=r[e];if(t!=null&&typeof t=="object"&&"thoughtSignature"in t&&typeof t.thoughtSignature=="string")return t.thoughtSignature}}function Pw(r){return r.filter(e=>typeof e.text=="string").map(e=>e.text).join("")}async function Mw(r,e,t,n,o,s){let i=[];for(let a of e){o.push({toolName:a.name,args:a.args});let l=n.get(a.name);if(l&&l.count>=2){g.warn(`${r} Tool "${a.name}" has exceeded retry limit (${2}), skipping execution`);let d={error:`TOOL_PERMANENTLY_FAILED: The tool "${a.name}" has failed ${l.count} times and will not be retried. Last error: ${l.lastError}. Please proceed without using this tool or inform the user that this functionality is unavailable.`,status:"permanently_failed",do_not_retry:!0};i.push({functionResponse:{name:a.name,response:d}}),s?.toolExecutions?.push({name:a.name,input:a.args,output:d});continue}let u=t.get(a.name);if(u)try{let d={toolCallId:`${a.name}-${Xa()}`,messages:[],abortSignal:s?.abortSignal},p=await u(a.args,d);i.push({functionResponse:{name:a.name,response:{result:p}}}),s?.toolExecutions?.push({name:a.name,input:a.args,output:p})}catch(d){let p=d instanceof Error?d.message:"Unknown error",m=n.get(a.name)||{count:0,lastError:""};m.count++,m.lastError=p,n.set(a.name,m),g.warn(`${r} Tool "${a.name}" failed (attempt ${m.count}/${2}): ${p}`);let f=m.count>=2,h={error:f?`TOOL_PERMANENTLY_FAILED: The tool "${a.name}" has failed ${m.count} times with error: ${p}. This tool will not be retried. Please proceed without using this tool or inform the user that this functionality is unavailable.`:`TOOL_EXECUTION_ERROR: ${p}. Retry attempt ${m.count}/${2}.`,status:f?"permanently_failed":"failed",do_not_retry:f,retry_count:m.count,max_retries:2};i.push({functionResponse:{name:a.name,response:h}}),s?.toolExecutions?.push({name:a.name,input:a.args,output:h})}else{let d={error:`TOOL_NOT_FOUND: The tool "${a.name}" does not exist. Do not attempt to call this tool again.`,status:"permanently_failed",do_not_retry:!0};i.push({functionResponse:{name:a.name,response:d}}),s?.toolExecutions?.push({name:a.name,input:a.args,output:d})}}return i}function Ow(r,e,t,n,o){return e>=t&&!n?(g.warn(`${r} Tool call loop terminated after reaching maxSteps (${t}). Model was still calling tools. Using accumulated text from last step.`),o||`[Tool execution limit reached after ${t} steps. The model continued requesting tool calls beyond the limit.]`):n}function Nw(r,e,t){r.push({role:"model",parts:e.length>0?e:t.map(n=>({functionCall:n}))})}var ROe,yee=A(()=>{"use strict";Ld();Tn();Q();em();kOe();ROe=100});var IOe={};le(IOe,{GoogleAIStudioProvider:()=>yB,default:()=>W8t});async function hB(r){let t=(await Promise.resolve().then(()=>(Uk(),Fk))).GoogleGenAI;if(!t)throw new Ve({code:xt.INVALID_CONFIGURATION,message:"@google/genai does not export GoogleGenAI",category:"configuration",severity:"critical",retriable:!1,context:{module:"@google/genai",expectedExport:"GoogleGenAI"}});let n=t;return new n({apiKey:r})}var yB,W8t,POe=A(async()=>{"use strict";EN();Tn();xc();sv();await AS();Ht();Ta();xr();bt();Q();gee();Qa();hc();od();nc();yee();yB=class extends an{credentials;constructor(e,t,n){super(e,"google-ai",t),this.credentials=n,g.debug("GoogleAIStudioProvider initialized",{model:this.modelName,provider:this.providerName,sdkProvided:!!t})}getProviderName(){return"google-ai"}getDefaultModel(){return process.env.GOOGLE_AI_MODEL||"gemini-2.5-flash"}getAISDKModel(){let e=this.getApiKey();return Oh({apiKey:e})(this.modelName)}formatProviderError(e){if(e instanceof zr)return new Qo(e.message,this.providerName);let t=e,n=typeof t?.message=="string"?t.message:"Unknown error";return n.includes("API_KEY_INVALID")?new kn("Invalid Google AI API key. Please check your GOOGLE_AI_API_KEY environment variable.",this.providerName):n.includes("RATE_LIMIT_EXCEEDED")?new Za("Google AI rate limit exceeded. Please try again later.",this.providerName):new ur(`Google AI error: ${n}`,this.providerName)}async executeImageGeneration(e){let t=e.prompt||e.input?.text||"",n=e.model||this.modelName,o=Date.now(),s=this.getApiKey();g.info("\u{1F3A8} Starting Google AI Studio image generation",{model:n,prompt:t.substring(0,100),provider:this.providerName});let i;try{i=await hB(s)}catch{throw new kn("Missing '@google/genai'. Install with: npm install @google/genai",this.providerName)}try{let a=await Promise.all((e.input?.images||[]).map(async m=>{if(typeof m=="object"&&"url"in m){let y=m.url;if(y.startsWith("http")){let w=await fetch(y);if(!w.ok)throw new Error(`Failed to fetch image from ${y}: ${w.status} ${w.statusText}`);let T=await w.arrayBuffer(),_=Buffer.from(T),k=this.detectImageType(_);return g.debug(`Downloaded and detected image MIME type: ${k}`),{inlineData:{mimeType:k,data:_.toString("base64")}}}let v=Buffer.from(y,"base64");return{inlineData:{mimeType:this.detectImageType(v),data:v.toString("base64")}}}if(typeof m=="string"&&m.startsWith("http")){let y=await fetch(m);if(!y.ok)throw new Error(`Failed to fetch image from ${m}: ${y.status} ${y.statusText}`);let v=await y.arrayBuffer(),b=Buffer.from(v),w=this.detectImageType(b);return g.debug(`Downloaded and detected image MIME type: ${w}`),{inlineData:{mimeType:w,data:b.toString("base64")}}}let f=Buffer.isBuffer(m)?m:typeof m=="string"?Buffer.from(m,"base64"):Buffer.from(""),h=this.detectImageType(f);return g.debug(`Detected image MIME type: ${h}`),{inlineData:{mimeType:h,data:f.toString("base64")}}})),l=[{role:"user",parts:[{text:t},...a]}],u={responseModalities:["IMAGE","TEXT"]};g.debug("Starting image generation request",{model:n,contentParts:l[0].parts.length,responseModalities:u.responseModalities});let d=null,p="";try{let m=await i.models.generateContentStream({model:n,contents:l,config:u});for await(let f of m){g.debug("Received chunk",{hasCandidate:!!f.candidates?.[0],hasContent:!!f.candidates?.[0]?.content,hasParts:!!f.candidates?.[0]?.content?.parts});let h=f.candidates?.[0];if(h?.content?.parts)for(let y of h.content.parts){if("inlineData"in y&&y.inlineData?.data){let v=y.inlineData.data;d=v;let b=y.inlineData.mimeType||"image/png";g.info("Image generation successful",{model:n,mimeType:b,dataLength:v.length,responseTime:Date.now()-o});let w={content:`Generated image using ${n} (${b})`,imageOutput:{base64:v},provider:this.providerName,model:n,usage:{input:this.estimateTokenCount(t),output:0,total:this.estimateTokenCount(t)}};return await this.enhanceResult(w,e,o)}"text"in y&&y.text&&(p+=y.text,g.debug("Received text content",{text:y.text.substring(0,100)}))}}}catch(m){g.debug("Streaming failed, trying non-streaming approach",{error:m instanceof Error?m.message:String(m)})}if(!d){g.debug("Trying non-streaming approach");let f=(await i.models.generateContent({model:n,contents:l,config:u})).candidates?.[0];if(f?.content?.parts)for(let h of f.content.parts){if("inlineData"in h&&h.inlineData?.data){let y=h.inlineData.data;d=y;let v=h.inlineData.mimeType||"image/png";g.info("Image generation successful (non-streaming)",{model:n,mimeType:v,dataLength:y.length,responseTime:Date.now()-o});let b={content:`Generated image using ${n} (${v})`,imageOutput:{base64:y},provider:this.providerName,model:n,usage:{input:this.estimateTokenCount(t),output:0,total:this.estimateTokenCount(t)}};return await this.enhanceResult(b,e,o)}"text"in h&&h.text&&(p+=h.text)}}throw g.warn("No image data found in response",{model:n,prompt:t.substring(0,100),hasTextContent:!!p,textContent:p.substring(0,200)}),new ur(p||`Image generation completed but no image data was returned. This may indicate an issue with the model "${n}" or the prompt: "${t}". Please try again or use a different model.`,this.providerName)}catch(a){throw g.error("Image generation failed",{error:a instanceof Error?a.message:String(a),model:n,prompt:t.substring(0,100)}),this.handleProviderError(a)}}detectImageType(e){return e.length>=8&&e[0]===137&&e[1]===80&&e[2]===78&&e[3]===71?"image/png":e.length>=3&&e[0]===255&&e[1]===216&&e[2]===255?"image/jpeg":e.length>=12&&e[0]===82&&e[1]===73&&e[2]===70&&e[3]===70&&e[8]===87&&e[9]===69&&e[10]===66&&e[11]===80?"image/webp":e.length>=6&&e[0]===71&&e[1]===73&&e[2]===70?"image/gif":"image/png"}estimateTokenCount(e){return fr(e,"google-ai")}async executeStream(e,t){let n=e.model||this.modelName,o=t||e.output?.format==="json"||e.schema,s=!e.disableTools&&this.supportsTools()&&!o,i=e.tools||{},a=s&&Object.keys(i).length>0;if(kw(n)&&a){let m={...e,tools:i};if((e.output?.format==="json"||e.schema)&&m.tools&&Object.keys(m.tools).length>0&&!m.disableTools&&(g.warn("[GoogleAIStudio] Gemini does not support tools and JSON schema output simultaneously. Disabling tools for this request."),m={...m,disableTools:!0,tools:{}}),!m.disableTools&&m.tools&&Object.keys(m.tools).length>0)return g.info("[GoogleAIStudio] Routing Gemini 3 to native SDK for tool calling",{model:n,totalToolCount:Object.keys(m.tools??{}).length}),this.executeNativeGemini3Stream(m);e=m}if(e.input?.audio)return await this.executeAudioStreamViaGeminiLive(e);this.validateStreamOptions(e);let l=Date.now(),u=await this.getAISDKModelWithMiddleware(e),d=this.getTimeout(e),p=fn(d,this.providerName,"stream");try{o&&!e.disableTools&&this.supportsTools()&&g.warn("[GoogleAIStudio] Structured output active \u2014 disabling tools (Gemini limitation).");let m=!e.disableTools&&this.supportsTools()&&!o,f=m?e.tools??{}:{},h;if(Object.keys(f).length>0){let R=pB(f);R.dropped.length>0&&g.warn(`[GoogleAIStudio] Dropped ${R.dropped.length} incompatible tool(s): ${R.dropped.join(", ")}`),h=Object.keys(R.tools).length>0?R.tools:void 0}else h=void 0;let y=await this.buildMessagesForStream(e),v=[],b=[],w,T=await Gn({model:u,messages:y,temperature:e.temperature,maxOutputTokens:e.maxTokens,tools:h,stopWhen:bn(e.maxSteps||200),toolChoice:Vo(e,h,m),abortSignal:wn(e.abortSignal,p?.controller.signal),experimental_telemetry:this.telemetryHandler.getTelemetryConfig(e),experimental_repairToolCall:this.getToolCallRepairFn(e),onError:R=>{w=R.error,g.error("GoogleAiStudio: Stream error",{error:R.error instanceof Error?R.error.message:String(R.error)})},...e.thinkingConfig?.enabled&&{providerOptions:{google:{thinkingConfig:{...e.thinkingConfig.thinkingLevel&&{thinkingLevel:e.thinkingConfig.thinkingLevel},...e.thinkingConfig.budgetTokens&&!e.thinkingConfig.thinkingLevel&&{thinkingBudget:e.thinkingConfig.budgetTokens},includeThoughts:!0}}}},onStepFinish:({toolCalls:R,toolResults:I})=>{for(let C of R)v.push({toolCallId:C.toolCallId,toolName:C.toolName,args:C.args??C.input??C.parameters??{}});for(let C of I){let E=C;b.push({toolName:C.toolName,status:E.error?"failure":"success",output:E.output??E.result??void 0,error:E.error,id:E.toolCallId??C.toolName})}_n(this.neurolink?.getEventEmitter(),I),this.handleToolExecutionStorage(R,I,e,new Date).catch(C=>{g.warn("[GoogleAiStudioProvider] Failed to store tool executions",{provider:this.providerName,error:C instanceof Error?C.message:String(C)})})}});Promise.resolve(T.text).catch(R=>{g.debug("Stream text promise rejected (expected for empty streams)",{error:R instanceof Error?R.message:String(R)})}).finally(()=>p?.cleanup());let _=this.createTextStream(T,()=>w),k=Hl.createAnalytics(this.providerName,this.modelName,T,Date.now()-l,{requestId:`google-ai-stream-${Date.now()}`,streamingMode:!0});return{stream:_,provider:this.providerName,model:this.modelName,...m&&{toolCalls:v,toolResults:b},analytics:k,metadata:{startTime:l,streamId:`google-ai-${Date.now()}`}}}catch(m){throw p?.cleanup(),this.handleProviderError(m)}}async executeNativeGemini3Stream(e){let t=e.model||this.modelName;return ba({name:"neurolink.provider.stream",tracer:ye.provider,attributes:{[me.GEN_AI_SYSTEM]:"google-ai",[me.GEN_AI_MODEL]:t,[me.GEN_AI_OPERATION]:"stream",[me.NL_PROVIDER]:this.providerName}},async n=>{let o=Date.now(),s=this.getTimeout(e),i=fn(s,this.providerName,"stream");{let a=this.getApiKey(),l=await hB(a);g.debug("[GoogleAIStudio] Using native @google/genai for Gemini 3",{model:t,hasTools:!!e.tools&&Object.keys(e.tools).length>0});let u=[{role:"user",parts:[{text:e.input.text}]}],d,p=new Map;if(e.tools&&Object.keys(e.tools).length>0&&!e.disableTools){let R=Rw(e.tools);d=R.toolsConfig,p=R.executeMap,g.debug("[GoogleAIStudio] Converted tools for native SDK",{toolCount:d[0].functionDeclarations.length,toolNames:d[0].functionDeclarations.map(I=>I.name)})}let m=Aw(e,d),f=Iw(e.maxSteps),h=wn(e.abortSignal,i?.controller.signal),y=fB(),v=[],b,w,T=new Promise((R,I)=>{b=R,w=I}),_={streamId:`native-${Date.now()}`,startTime:o,responseTime:0,totalToolExecutions:0};return(async()=>{let R="",I=0,C=0,E=0,M=!1,O=new Map;try{for(;E<f;){if(h?.aborted)throw h.reason instanceof Error?h.reason:new Error("Request aborted");E++,g.debug(`[GoogleAIStudio] Native SDK step ${E}/${f}`);try{let q=await l.models.generateContentStream({model:t,contents:u,config:m,...h?{httpOptions:{signal:h}}:{}}),B=await gB(q,y);I+=B.inputTokens,C+=B.outputTokens;let F=Pw(B.rawResponseParts);if(B.stepFunctionCalls.length===0){M=!0;break}R=F;for(let $ of B.stepFunctionCalls)n.addEvent("gen_ai.tool_call",{"tool.name":$.name,"tool.step":E});g.debug(`[GoogleAIStudio] Executing ${B.stepFunctionCalls.length} function calls`),Nw(u,B.rawResponseParts,B.stepFunctionCalls);let U=await Mw("[GoogleAIStudio]",B.stepFunctionCalls,p,O,v,{abortSignal:h});u.push({role:"user",parts:U})}catch(q){throw g.error("[GoogleAIStudio] Native SDK error",q),this.handleProviderError(q)}}let D=E>=f&&!M;if(D){let q=Ow("[GoogleAIStudio]",E,f,"",R);q&&y.push(q)}let N=Date.now()-o;_.responseTime=N,_.totalToolExecutions=v.length,n.setAttribute(me.GEN_AI_INPUT_TOKENS,I),n.setAttribute(me.GEN_AI_OUTPUT_TOKENS,C),n.setAttribute(me.GEN_AI_FINISH_REASON,D?"max_steps":"stop"),b({provider:this.providerName,model:t,tokenUsage:{input:I,output:C,total:I+C},requestDuration:N,timestamp:new Date().toISOString()});let W=this.neurolink?.getEventEmitter();W&&(Cw(e),W.emit("generation:end",{provider:this.providerName,responseTime:N,timestamp:Date.now(),result:{content:"",usage:{input:I,output:C,total:I+C},model:t,provider:this.providerName,finishReason:D?"max_steps":"stop"},success:!0})),y.close()}catch(D){n.recordException(D instanceof Error?D:new Error(String(D))),n.setStatus({code:be.ERROR,message:D instanceof Error?D.message:String(D)});let N=this.neurolink?.getEventEmitter();N&&(Cw(e),N.emit("generation:end",{provider:this.providerName,responseTime:Date.now()-o,timestamp:Date.now(),result:{content:"",usage:{input:I,output:C,total:I+C},model:t,provider:this.providerName,finishReason:"error"},success:!1,error:D instanceof Error?D.message:String(D)})),y.error(D),w(D)}finally{i?.cleanup()}})().catch(()=>{}),{stream:y.iterable,provider:this.providerName,model:t,toolCalls:v,analytics:T,metadata:_}}})}async executeNativeGemini3Generate(e){let t=e.model||this.modelName;return ba({name:"neurolink.provider.generate",tracer:ye.provider,attributes:{[me.GEN_AI_SYSTEM]:"google-ai",[me.GEN_AI_MODEL]:t,[me.GEN_AI_OPERATION]:"generate",[me.NL_PROVIDER]:this.providerName}},async n=>{let o=Date.now(),s=this.getTimeout(e),i=fn(s,this.providerName,"generate");try{let a=this.getApiKey(),l=await hB(a);g.debug("[GoogleAIStudio] Using native @google/genai for Gemini 3 generate",{model:t,hasTools:!!e.tools&&Object.keys(e.tools).length>0});let d=[{role:"user",parts:[{text:e.input?.text||e.prompt||""}]}],p,m=new Map;if(!e.disableTools){let O=e.tools||{};if(Object.keys(O).length>0){let D=Rw(O);p=D.toolsConfig,m=D.executeMap,g.debug("[GoogleAIStudio] Converted tools for native SDK generate",{toolCount:p[0].functionDeclarations.length,toolNames:p[0].functionDeclarations.map(N=>N.name)})}}let h=Aw(e,p),y=wn(e.abortSignal,i?.controller.signal),v=Iw(e.maxSteps),b="",w="",T=0,_=0,k=[],R=[],I=0,C=new Map;for(;I<v;){if(y?.aborted)throw y.reason instanceof Error?y.reason:new Error("Request aborted");I++,g.debug(`[GoogleAIStudio] Native SDK generate step ${I}/${v}`);try{let O=await l.models.generateContentStream({model:t,contents:d,config:h,...y?{httpOptions:{signal:y}}:{}}),D=await mB(O);T+=D.inputTokens,_+=D.outputTokens;let N=Pw(D.rawResponseParts);if(D.stepFunctionCalls.length===0){b=N;break}w=N;for(let q of D.stepFunctionCalls)n.addEvent("gen_ai.tool_call",{"tool.name":q.name,"tool.step":I});g.debug(`[GoogleAIStudio] Executing ${D.stepFunctionCalls.length} function calls in generate`),Nw(d,D.rawResponseParts,D.stepFunctionCalls);let W=await Mw("[GoogleAIStudio]",D.stepFunctionCalls,m,C,k,{toolExecutions:R,abortSignal:y});d.push({role:"user",parts:W})}catch(O){throw g.error("[GoogleAIStudio] Native SDK generate error",O),this.handleProviderError(O)}}b=Ow("[GoogleAIStudio]",I,v,b,w);let E=Date.now()-o;n.setAttribute(me.GEN_AI_INPUT_TOKENS,T),n.setAttribute(me.GEN_AI_OUTPUT_TOKENS,_),n.setAttribute(me.GEN_AI_FINISH_REASON,I>=v?"max_steps":"stop");let M=this.neurolink?.getEventEmitter();return M&&M.emit("generation:end",{provider:this.providerName,responseTime:E,timestamp:Date.now(),result:{content:b,usage:{input:T,output:_,total:T+_},model:t,provider:this.providerName,finishReason:I>=v?"max_steps":"stop"},success:!0}),{content:b,provider:this.providerName,model:t,usage:{input:T,output:_,total:T+_},responseTime:E,toolsUsed:k.map(O=>O.toolName),toolExecutions:R,enhancedWithTools:k.length>0}}finally{i?.cleanup()}})}async generate(e){let t=typeof e=="string"?{prompt:e}:e,n=t.model||this.modelName,s=!t.disableTools&&this.supportsTools()&&t.tools&&Object.keys(t.tools).length>0;if(kw(n)&&s){let i={...t,tools:t.tools};return(t.output?.format==="json"||t.schema)&&i.tools&&Object.keys(i.tools).length>0&&!i.disableTools&&(g.warn("[GoogleAIStudio] Gemini does not support tools and JSON schema output simultaneously. Disabling tools for this request."),i={...i,disableTools:!0,tools:{}}),!i.disableTools&&i.tools&&Object.keys(i.tools).length>0?(g.info("[GoogleAIStudio] Routing Gemini 3 generate to native SDK for tool calling",{model:n,totalToolCount:Object.keys(i.tools??{}).length}),this.executeNativeGemini3Generate(i)):super.generate(i)}return super.generate(t)}async executeAudioStreamViaGeminiLive(e){let t=Date.now(),n=this.getApiKey(),o;try{o=await hB(n)}catch{throw new kn("Missing '@google/genai'. Install with: pnpm add @google/genai",this.providerName)}let s=this.modelName||process.env.GOOGLE_VOICE_AI_MODEL||"gemini-2.5-flash-preview-native-audio-dialog",i=[],a=null,l=!1,u=m=>{if(!l){if(m.type==="audio"&&a){let f=a;a=null,f({value:{type:"audio",audio:m.audio},done:!1});return}i.push(m)}},d=await o.live.connect({model:s,callbacks:{onopen:()=>{},onmessage:async m=>{try{let f=m?.serverContent?.modelTurn?.parts?.[0]?.inlineData;if(f?.data){let y={data:Buffer.from(String(f.data),"base64"),sampleRateHz:24e3,channels:1,encoding:"PCM16LE"};u({type:"audio",audio:y})}m?.serverContent?.interrupted}catch(f){u({type:"error",error:f})}},onerror:m=>{u({type:"error",error:m})},onclose:m=>{u({type:"end"})}},config:{responseModalities:["AUDIO"],speechConfig:{voiceConfig:{prebuiltVoiceConfig:{voiceName:"Orus"}}}}});return(async()=>{try{let m=e.input?.audio;if(!m){g.debug("[GeminiLive] No audio spec found on input; skipping upstream send");return}for await(let f of m.frames){if(!f||f.byteLength===0){try{d.sendInput?await d.sendInput({event:"flush"}):d.sendRealtimeInput&&await d.sendRealtimeInput({event:"flush"})}catch(v){g.debug("[GeminiLive] flush control failed (non-fatal)",{error:v instanceof Error?v.message:String(v)})}continue}let h=f.toString("base64"),y=`audio/pcm;rate=${m.sampleRateHz||16e3}`;await d.sendRealtimeInput?.({media:{data:h,mimeType:y}})}try{d.sendInput?await d.sendInput({event:"flush"}):d.sendRealtimeInput&&await d.sendRealtimeInput({event:"flush"})}catch(f){g.debug("[GeminiLive] final flush failed (non-fatal)",{error:f instanceof Error?f.message:String(f)})}}catch(m){u({type:"error",error:m})}})().catch(()=>{}),{stream:{[Symbol.asyncIterator](){return{async next(){if(i.length>0){let m=i.shift();if(!m)return{value:void 0,done:!0};if(m.type==="audio")return{value:{type:"audio",audio:m.audio},done:!1};if(m.type==="end")return l=!0,{value:void 0,done:!0};if(m.type==="error")throw l=!0,m.error instanceof Error?m.error:new Error(String(m.error))}return l?{value:void 0,done:!0}:await new Promise(m=>{a=m})}}}},provider:this.providerName,model:s,metadata:{startTime:t,streamId:`google-ai-audio-${Date.now()}`}}}getDefaultEmbeddingModel(){return process.env.GOOGLE_AI_EMBEDDING_MODEL||process.env.GOOGLE_EMBEDDING_MODEL||"gemini-embedding-001"}async embed(e,t){let n=t||this.getDefaultEmbeddingModel()||"gemini-embedding-001";g.debug("Generating embedding",{provider:this.providerName,model:n,textLength:e.length});try{let o=this.getApiKey(),i=Oh({apiKey:o}).textEmbeddingModel(n),a=await Gh({model:i,value:e});return g.debug("Embedding generated successfully",{provider:this.providerName,model:n,embeddingDimension:a.embedding.length}),a.embedding}catch(o){throw g.error("Embedding generation failed",{error:o instanceof Error?o.message:String(o),model:n,textLength:e.length}),this.handleProviderError(o)}}async embedMany(e,t){let n=t||this.getDefaultEmbeddingModel()||"gemini-embedding-001";g.debug("Generating batch embeddings",{provider:this.providerName,model:n,count:e.length});try{let o=this.getApiKey(),i=Oh({apiKey:o}).textEmbeddingModel(n),a=await Vh({model:i,values:e});return g.debug("Batch embeddings generated successfully",{provider:this.providerName,model:n,count:a.embeddings.length,embeddingDimension:a.embeddings[0]?.length}),a.embeddings}catch(o){throw g.error("Batch embedding generation failed",{error:o instanceof Error?o.message:String(o),model:n,count:e.length}),this.handleProviderError(o)}}getApiKey(){let e=this.credentials?.apiKey||process.env.GOOGLE_AI_API_KEY||process.env.GOOGLE_GENERATIVE_AI_API_KEY;if(!e)throw new kn("GOOGLE_AI_API_KEY or GOOGLE_GENERATIVE_AI_API_KEY environment variable is not set",this.providerName);return e}},W8t=yB});var OOe={};le(OOe,{OpenAIProvider:()=>xB,default:()=>J8t});function vB(r){let e=r;return e.inputSchema??e.parameters}var vee,MOe,K8t,xB,J8t,NOe=A(()=>{"use strict";_m();Ht();Tn();xc();sv();qo();xr();Q();ev();Nu();td();em();Qa();od();nc();oT();vee=()=>Sc(MIe()),MOe=()=>Zl("OPENAI_MODEL","gpt-4o"),K8t=st.getTracer("neurolink.provider.openai"),xB=class extends an{model;credentials;constructor(e,t,n,o){super(e||MOe(),"openai",t),this.credentials=o;let s=al({apiKey:o?.apiKey??vee(),...o?.baseURL?{baseURL:o.baseURL}:{},fetch:ut()});this.model=s(this.modelName),g.debug("OpenAIProvider constructor called",{model:this.modelName,provider:this.providerName,supportsTools:this.supportsTools(),className:this.constructor.name})}supportsTools(){return!0}getProviderName(){return"openai"}getDefaultModel(){return MOe()}getDefaultEmbeddingModel(){return process.env.OPENAI_EMBEDDING_MODEL||"text-embedding-3-small"}getAISDKModel(){return this.model}validateAndFilterToolsForOpenAI(e){let t={};for(let[n,o]of Object.entries(e))try{if(o&&typeof o=="object")if(o.description&&typeof o.description=="string"){let s={...o},i=vB(o);i&&jd(i)&&(g.debug(`OpenAI: Tool ${n} has Zod schema - AI SDK will handle conversion`),this.validateZodSchema(n,i)),this.isValidToolStructure(s)?t[n]=s:g.warn(`OpenAI: Filtering out tool with invalid structure: ${n}`,{parametersType:typeof vB(s),hasDescription:!!s.description,hasExecute:!!s.execute})}else g.warn(`OpenAI: Filtering out tool without description: ${n}`);else g.warn(`OpenAI: Filtering out invalid tool: ${n}`)}catch(s){g.warn(`OpenAI: Error validating tool ${n}:`,s)}return t}validateZodSchema(e,t){try{let n=t;n._def&&n._def.typeName?g.debug(`OpenAI: Zod schema for ${e} appears valid`,{typeName:n._def.typeName}):g.warn(`OpenAI: Zod schema for ${e} missing typeName - may cause issues`)}catch(n){g.warn(`OpenAI: Zod schema validation failed for ${e}:`,n)}}endStreamSpanWithError(e,t){e.setStatus({code:be.ERROR,message:t instanceof Error?t.message:String(t)}),t instanceof Error&&e.recordException(t),e.end()}isValidToolStructure(e){if(!e||typeof e!="object")return!1;let t=e;if(!t.description||typeof t.description!="string"||!t.execute||typeof t.execute!="function")return!1;let n="inputSchema"in t?t.inputSchema:"parameters"in t?t.parameters:void 0;return this.isValidToolParameters(n)}isValidToolParameters(e){if(!e||jd(e))return!0;if(typeof e!="object"||e===null)return!1;let t=e;return t.type&&t.type!=="object"?!1:t.type==="object"&&!t.properties?(g.warn("Tool parameter schema missing properties field:",t),!1):!(t.properties&&typeof t.properties!="object"||t.required&&!Array.isArray(t.required))}formatProviderError(e){if(e instanceof zr)return new Qo(e.message,this.providerName);let t=e,n=t?.message&&typeof t.message=="string"?t.message:"Unknown error",o=t?.type&&typeof t.type=="string"?t.type:void 0,s=typeof t?.status=="number"?t.status:typeof t?.statusCode=="number"?t.statusCode:void 0;return n.includes("API_KEY_INVALID")||n.includes("Invalid API key")||n.includes("Incorrect API key")||n.includes("invalid_api_key")||o==="invalid_api_key"||s===401?new kn(n.includes("Incorrect API key")||n.includes("Invalid API key")?n:"Invalid OpenAI API key. Please check your OPENAI_API_KEY environment variable.",this.providerName):n.includes("rate limit")||o==="rate_limit_error"?new Za("OpenAI rate limit exceeded. Please try again later.",this.providerName):n.includes("model_not_found")?new Kc(`Model not found: ${this.modelName}`,this.providerName):new ur(`OpenAI error: ${n}`,this.providerName)}async executeStream(e,t){this.validateStreamOptions(e);let n=Date.now(),o=this.getTimeout(e),s=fn(o,this.providerName,"stream");try{let i=!e.disableTools&&this.supportsTools(),a=i?e.tools||await this.getAllTools():{},l=this.validateAndFilterToolsForOpenAI(a),u=parseInt(process.env.OPENAI_MAX_TOOLS||"150",10);if(Object.keys(l).length>u){g.warn(`OpenAI: Too many tools (${Object.keys(l).length}), limiting to ${u} tools`);let T=Object.entries(l);l=Object.fromEntries(T.slice(0,u))}let d=Object.values(a).filter(T=>{if(!T||typeof T!="object")return!1;let _=vB(T);return _!=null&&jd(_)}).length;g.info("OpenAI streaming tools",{shouldUseTools:i,allToolsCount:Object.keys(a).length,filteredToolsCount:Object.keys(l).length,zodToolsCount:d,toolNames:Object.keys(l),filteredOutTools:Object.keys(a).filter(T=>!l[T])});let p=await this.buildMessagesForStream(e),m=Vo(e,l,i);m!==null&&typeof m=="object"&&"toolName"in m&&typeof m.toolName=="string"&&!l[m.toolName]&&(g.warn(`OpenAI: toolChoice references tool "${m.toolName}" which was removed during filtering; falling back to "auto"`),m="auto"),g.debug("OpenAI: streamText request parameters:",{modelName:this.modelName,messagesCount:p.length,temperature:e.temperature,maxTokens:e.maxTokens,toolsCount:Object.keys(l).length,toolChoice:m,maxSteps:e.maxSteps||200,firstToolExample:Object.keys(l).length>0?{name:Object.keys(l)[0],description:l[Object.keys(l)[0]]?.description,parametersType:typeof vB(l[Object.keys(l)[0]])}:"no-tools"});let f=await this.getAISDKModelWithMiddleware(e),h=K8t.startSpan("neurolink.provider.streamText",{kind:er.CLIENT,attributes:{"gen_ai.system":"openai","gen_ai.request.model":tl(f)||this.modelName||"unknown"}}),y,v;try{v=Gn({model:f,messages:p,temperature:e.temperature,maxOutputTokens:e.maxTokens,maxRetries:0,tools:l,stopWhen:bn(e.maxSteps||200),toolChoice:m,abortSignal:wn(e.abortSignal,s?.controller.signal),experimental_repairToolCall:this.getToolCallRepairFn(e),experimental_telemetry:this.telemetryHandler.getTelemetryConfig(e),onError:T=>{y=T.error,g.error("OpenAI: Stream error",{error:T.error instanceof Error?T.error.message:String(T.error)})},onStepFinish:({toolCalls:T,toolResults:_})=>{g.info("Tool execution completed",{toolResults:_,toolCalls:T}),_n(this.neurolink?.getEventEmitter(),_),this.handleToolExecutionStorage(T,_,e,new Date).catch(k=>{g.warn("[OpenAIProvider] Failed to store tool executions",{provider:this.providerName,error:k instanceof Error?k.message:String(k)})})}})}catch(T){throw this.endStreamSpanWithError(h,T),T}Promise.resolve(v.usage).then(T=>{h.setAttribute("gen_ai.usage.input_tokens",T.inputTokens||0),h.setAttribute("gen_ai.usage.output_tokens",T.outputTokens||0);let _=oo(this.providerName,this.modelName,{input:T.inputTokens||0,output:T.outputTokens||0,total:(T.inputTokens||0)+(T.outputTokens||0)});_&&_>0&&h.setAttribute("neurolink.cost",_)}).catch(()=>{}),Promise.resolve(v.finishReason).then(T=>{h.setAttribute("gen_ai.response.finish_reason",T||"unknown")}).catch(()=>{}),Promise.resolve(v.text).then(()=>{h.end()}).catch(T=>{this.endStreamSpanWithError(h,T)}),s?.cleanup(),g.debug("OpenAI: streamText result structure:",{resultKeys:Object.keys(v),hasTextStream:!!v.textStream,hasToolCalls:!!v.toolCalls,hasToolResults:!!v.toolResults,resultType:typeof v});let b=this.createOpenAITransformedStream(v,i,l,()=>y),w=Hl.createAnalytics(this.providerName,this.modelName,v,Date.now()-n,{requestId:`openai-stream-${Date.now()}`,streamingMode:!0});return{stream:b,provider:this.providerName,model:this.modelName,analytics:w,metadata:{startTime:n,streamId:`openai-${Date.now()}`}}}catch(i){throw s?.cleanup(),this.handleProviderError(i)}}async*createOpenAITransformedStream(e,t,n,o){try{g.debug("OpenAI: Starting stream transformation",{hasTextStream:!!e.textStream,hasFullStream:!!e.fullStream,resultKeys:Object.keys(e),toolsEnabled:t,toolsCount:Object.keys(n).length});let s=0,i=0,a=e.fullStream||e.textStream;if(!a){g.error("OpenAI: No stream available in result",{resultKeys:Object.keys(e)});return}g.debug("OpenAI: Stream source selected:",{usingFullStream:!!e.fullStream,usingTextStream:!!e.textStream&&!e.fullStream,streamSourceType:e.fullStream?"fullStream":"textStream"});for await(let l of a){s++,g.debug(`OpenAI: Processing chunk ${s}:`,{chunkType:typeof l,chunkValue:typeof l=="string"?l.substring(0,50):"not-string",chunkKeys:l&&typeof l=="object"?Object.keys(l):"not-object",hasText:l&&typeof l=="object"&&"text"in l,hasTextDelta:l&&typeof l=="object"&&"textDelta"in l,hasType:l&&typeof l=="object"&&"type"in l,chunkTypeValue:l&&typeof l=="object"&&"type"in l?l.type:"no-type"});let u=this.extractOpenAIChunkContent(l);u&&(i++,g.debug(`OpenAI: Yielding content ${i}:`,{content:u.substring(0,50),length:u.length}),yield{content:u})}if(g.debug("OpenAI: Stream transformation completed",{totalChunks:s,contentYielded:i,success:i>0}),i===0){g.warn(`OpenAI: No content was yielded from stream despite processing ${s} chunks`);let l=await Vl(e,o?.());l&&(g.warn("OpenAI: Stream produced no output (NoOutputGeneratedError) \u2014 caught from finishReason rejection"),Us(l.sentinel),yield l.sentinel)}}catch(s){if(No.isInstance(s)){g.warn("OpenAI: Stream produced no output (NoOutputGeneratedError) \u2014 caught from textStream");let i=await cl(s,e,o?.());Us(i),yield i;return}throw g.error("OpenAI: Stream transformation error:",s),s}}extractOpenAIChunkContent(e){if(e&&typeof e=="object"){if(process.env.NEUROLINK_DEBUG==="true"&&g.debug("OpenAI: Full chunk structure:",{chunkKeys:Object.keys(e),fullChunk:JSON.stringify(e).substring(0,500)}),"type"in e&&e.type==="error"){let t=e;g.error("OpenAI: Error chunk received:",{errorType:t.type,errorDetails:t.error,fullChunk:JSON.stringify(e)});let n=t.error&&typeof t.error=="object"&&"message"in t.error?String(t.error.message):"OpenAI API error when tools are enabled";throw new Error(`OpenAI streaming error with tools: ${n}. Try disabling tools with --disableTools`)}if("type"in e&&e.type==="text-delta"&&"textDelta"in e){let t=e.textDelta;return g.debug("OpenAI: Found text-delta:",{textDelta:t}),t}if("text"in e){let t=e.text;return g.debug("OpenAI: Found direct text:",{text:t}),t}return process.env.NEUROLINK_DEBUG==="true"&&g.debug("OpenAI: Unhandled object chunk:",{chunkKeys:Object.keys(e),chunkType:"type"in e?String(e.type):"no-type",fullChunk:JSON.stringify(e).substring(0,500)}),null}return typeof e=="string"?(g.debug("OpenAI: Found string chunk:",{content:e}),e):(g.warn("OpenAI: Unhandled chunk type:",{type:typeof e,value:String(e).substring(0,100)}),null)}async embed(e,t){let n=t||"text-embedding-3-small";g.debug("Generating embedding",{provider:this.providerName,model:n,textLength:e.length});try{let s=al({apiKey:this.credentials?.apiKey??vee(),...this.credentials?.baseURL?{baseURL:this.credentials.baseURL}:{},fetch:ut()}).textEmbeddingModel(n),i=await Gh({model:s,value:e});return g.debug("Embedding generated successfully",{provider:this.providerName,model:n,embeddingDimension:i.embedding.length}),i.embedding}catch(o){throw g.error("Embedding generation failed",{error:o instanceof Error?o.message:String(o),model:n,textLength:e.length}),this.handleProviderError(o)}}async embedMany(e,t){let n=t||"text-embedding-3-small";g.debug("Generating batch embeddings",{provider:this.providerName,model:n,count:e.length});try{let s=al({apiKey:this.credentials?.apiKey??vee(),...this.credentials?.baseURL?{baseURL:this.credentials.baseURL}:{},fetch:ut()}).textEmbeddingModel(n),i=await Vh({model:s,values:e});return g.debug("Batch embeddings generated successfully",{provider:this.providerName,model:n,count:i.embeddings.length,embeddingDimension:i.embeddings[0]?.length}),i.embeddings}catch(o){throw g.error("Batch embedding generation failed",{error:o instanceof Error?o.message:String(o),model:n,count:e.length}),this.handleProviderError(o)}}},J8t=xB});function tJt(r){var e;let t=r?.anthropic;return(e=t?.cacheControl)!=null?e:t?.cache_control}async function _Jt({tools:r,toolChoice:e,disableParallelToolUse:t,cacheControlValidator:n,supportsStructuredOutput:o,supportsStrictTools:s}){var i;r=r?.length?r:void 0;let a=[],l=new Set,u=n||new See;if(r==null)return{tools:void 0,toolChoice:void 0,toolWarnings:a,betas:l};let d=[];for(let m of r)switch(m.type){case"function":{let f=u.getCacheControl(m.providerOptions,{type:"tool definition",canCache:!0}),h=(i=m.providerOptions)==null?void 0:i.anthropic,y=h?.eagerInputStreaming,v=h?.deferLoading,b=h?.allowedCallers;!s&&m.strict!=null&&a.push({type:"unsupported",feature:"strict",details:`Tool '${m.name}' has strict: ${m.strict}, but strict mode is not supported by this provider. The strict property will be ignored.`}),d.push({name:m.name,description:m.description,input_schema:m.inputSchema,cache_control:f,...y?{eager_input_streaming:!0}:{},...s===!0&&m.strict!=null?{strict:m.strict}:{},...v!=null?{defer_loading:v}:{},...b!=null?{allowed_callers:b}:{},...m.inputExamples!=null?{input_examples:m.inputExamples.map(w=>w.input)}:{}}),o===!0&&l.add("structured-outputs-2025-11-13"),(m.inputExamples!=null||b!=null)&&l.add("advanced-tool-use-2025-11-20");break}case"provider":{switch(m.id){case"anthropic.code_execution_20250522":{l.add("code-execution-2025-05-22"),d.push({type:"code_execution_20250522",name:"code_execution",cache_control:void 0});break}case"anthropic.code_execution_20250825":{l.add("code-execution-2025-08-25"),d.push({type:"code_execution_20250825",name:"code_execution"});break}case"anthropic.code_execution_20260120":{d.push({type:"code_execution_20260120",name:"code_execution"});break}case"anthropic.computer_20250124":{l.add("computer-use-2025-01-24"),d.push({name:"computer",type:"computer_20250124",display_width_px:m.args.displayWidthPx,display_height_px:m.args.displayHeightPx,display_number:m.args.displayNumber,cache_control:void 0});break}case"anthropic.computer_20251124":{l.add("computer-use-2025-11-24"),d.push({name:"computer",type:"computer_20251124",display_width_px:m.args.displayWidthPx,display_height_px:m.args.displayHeightPx,display_number:m.args.displayNumber,enable_zoom:m.args.enableZoom,cache_control:void 0});break}case"anthropic.computer_20241022":{l.add("computer-use-2024-10-22"),d.push({name:"computer",type:"computer_20241022",display_width_px:m.args.displayWidthPx,display_height_px:m.args.displayHeightPx,display_number:m.args.displayNumber,cache_control:void 0});break}case"anthropic.text_editor_20250124":{l.add("computer-use-2025-01-24"),d.push({name:"str_replace_editor",type:"text_editor_20250124",cache_control:void 0});break}case"anthropic.text_editor_20241022":{l.add("computer-use-2024-10-22"),d.push({name:"str_replace_editor",type:"text_editor_20241022",cache_control:void 0});break}case"anthropic.text_editor_20250429":{l.add("computer-use-2025-01-24"),d.push({name:"str_replace_based_edit_tool",type:"text_editor_20250429",cache_control:void 0});break}case"anthropic.text_editor_20250728":{let f=await Ge({value:m.args,schema:rJt});d.push({name:"str_replace_based_edit_tool",type:"text_editor_20250728",max_characters:f.maxCharacters,cache_control:void 0});break}case"anthropic.bash_20250124":{l.add("computer-use-2025-01-24"),d.push({name:"bash",type:"bash_20250124",cache_control:void 0});break}case"anthropic.bash_20241022":{l.add("computer-use-2024-10-22"),d.push({name:"bash",type:"bash_20241022",cache_control:void 0});break}case"anthropic.memory_20250818":{l.add("context-management-2025-06-27"),d.push({name:"memory",type:"memory_20250818"});break}case"anthropic.web_fetch_20250910":{l.add("web-fetch-2025-09-10");let f=await Ge({value:m.args,schema:bJt});d.push({type:"web_fetch_20250910",name:"web_fetch",max_uses:f.maxUses,allowed_domains:f.allowedDomains,blocked_domains:f.blockedDomains,citations:f.citations,max_content_tokens:f.maxContentTokens,cache_control:void 0});break}case"anthropic.web_fetch_20260209":{l.add("code-execution-web-tools-2026-02-09");let f=await Ge({value:m.args,schema:gJt});d.push({type:"web_fetch_20260209",name:"web_fetch",max_uses:f.maxUses,allowed_domains:f.allowedDomains,blocked_domains:f.blockedDomains,citations:f.citations,max_content_tokens:f.maxContentTokens,cache_control:void 0});break}case"anthropic.web_search_20250305":{let f=await Ge({value:m.args,schema:dJt});d.push({type:"web_search_20250305",name:"web_search",max_uses:f.maxUses,allowed_domains:f.allowedDomains,blocked_domains:f.blockedDomains,user_location:f.userLocation,cache_control:void 0});break}case"anthropic.web_search_20260209":{l.add("code-execution-web-tools-2026-02-09");let f=await Ge({value:m.args,schema:iJt});d.push({type:"web_search_20260209",name:"web_search",max_uses:f.maxUses,allowed_domains:f.allowedDomains,blocked_domains:f.blockedDomains,user_location:f.userLocation,cache_control:void 0});break}case"anthropic.tool_search_regex_20251119":{d.push({type:"tool_search_tool_regex_20251119",name:"tool_search_tool_regex"});break}case"anthropic.tool_search_bm25_20251119":{d.push({type:"tool_search_tool_bm25_20251119",name:"tool_search_tool_bm25"});break}default:{a.push({type:"unsupported",feature:`provider-defined tool ${m.id}`});break}}break}default:{a.push({type:"unsupported",feature:`tool ${m}`});break}}if(e==null)return{tools:d,toolChoice:t?{type:"auto",disable_parallel_tool_use:t}:void 0,toolWarnings:a,betas:l};let p=e.type;switch(p){case"auto":return{tools:d,toolChoice:{type:"auto",disable_parallel_tool_use:t},toolWarnings:a,betas:l};case"required":return{tools:d,toolChoice:{type:"any",disable_parallel_tool_use:t},toolWarnings:a,betas:l};case"none":return{tools:void 0,toolChoice:void 0,toolWarnings:a,betas:l};case"tool":return{tools:d,toolChoice:{type:"tool",name:e.toolName,disable_parallel_tool_use:t},toolWarnings:a,betas:l};default:{let m=p;throw new it({functionality:`tool choice type: ${m}`})}}}function $Oe({usage:r,rawUsage:e}){var t,n;let o=(t=r.cache_creation_input_tokens)!=null?t:0,s=(n=r.cache_read_input_tokens)!=null?n:0,i,a;if(r.iterations&&r.iterations.length>0){let l=r.iterations.reduce((u,d)=>({input:u.input+d.input_tokens,output:u.output+d.output_tokens}),{input:0,output:0});i=l.input,a=l.output}else i=r.input_tokens,a=r.output_tokens;return{inputTokens:{total:i+o+s,noCache:i,cacheRead:s,cacheWrite:o},outputTokens:{total:a,text:void 0,reasoning:void 0},raw:e??r}}function FJt(r){if(typeof r=="string")return new TextDecoder().decode(xn(r));if(r instanceof Uint8Array)return new TextDecoder().decode(r);throw r instanceof URL?new it({functionality:"URL-based text documents are not supported for citations"}):new it({functionality:`unsupported data type for text documents: ${typeof r}`})}function xee(r){return r instanceof URL||UJt(r)}function UJt(r){return typeof r=="string"&&/^https?:\/\//i.test(r)}function bee(r){return r instanceof URL?r.toString():r}async function $Jt({prompt:r,sendReasoning:e,warnings:t,cacheControlValidator:n,toolNameMapping:o}){var s,i,a,l,u,d,p,m,f,h,y,v,b,w,T,_,k,R,I;let C=new Set,E=zJt(r),M=n||new See,O,D=[];async function N(q){var B,F;let U=await tt({provider:"anthropic",providerOptions:q,schema:LOe});return(F=(B=U?.citations)==null?void 0:B.enabled)!=null?F:!1}async function W(q){let B=await tt({provider:"anthropic",providerOptions:q,schema:LOe});return{title:B?.title,context:B?.context}}for(let q=0;q<E.length;q++){let B=E[q],F=q===E.length-1,U=B.type;switch(U){case"system":{if(O!=null)throw new it({functionality:"Multiple system messages that are separated by user/assistant messages"});O=B.messages.map(({content:$,providerOptions:K})=>({type:"text",text:$,cache_control:M.getCacheControl(K,{type:"system message",canCache:!0})}));break}case"user":{let $=[];for(let K of B.messages){let{role:V,content:ce}=K;switch(V){case"user":{for(let we=0;we<ce.length;we++){let oe=ce[we],Ce=we===ce.length-1,J=(s=M.getCacheControl(oe.providerOptions,{type:"user message part",canCache:!0}))!=null?s:Ce?M.getCacheControl(K.providerOptions,{type:"user message",canCache:!0}):void 0;switch(oe.type){case"text":{$.push({type:"text",text:oe.text,cache_control:J});break}case"file":{if(oe.mediaType.startsWith("image/"))$.push({type:"image",source:xee(oe.data)?{type:"url",url:bee(oe.data)}:{type:"base64",media_type:oe.mediaType==="image/*"?"image/jpeg":oe.mediaType,data:wr(oe.data)},cache_control:J});else if(oe.mediaType==="application/pdf"){C.add("pdfs-2024-09-25");let _e=await N(oe.providerOptions),ge=await W(oe.providerOptions);$.push({type:"document",source:xee(oe.data)?{type:"url",url:bee(oe.data)}:{type:"base64",media_type:"application/pdf",data:wr(oe.data)},title:(i=ge.title)!=null?i:oe.filename,...ge.context&&{context:ge.context},..._e&&{citations:{enabled:!0}},cache_control:J})}else if(oe.mediaType==="text/plain"){let _e=await N(oe.providerOptions),ge=await W(oe.providerOptions);$.push({type:"document",source:xee(oe.data)?{type:"url",url:bee(oe.data)}:{type:"text",media_type:"text/plain",data:FJt(oe.data)},title:(a=ge.title)!=null?a:oe.filename,...ge.context&&{context:ge.context},..._e&&{citations:{enabled:!0}},cache_control:J})}else throw new it({functionality:`media type: ${oe.mediaType}`});break}}}break}case"tool":{for(let we=0;we<ce.length;we++){let oe=ce[we];if(oe.type==="tool-approval-response")continue;let Ce=we===ce.length-1,J=(l=M.getCacheControl(oe.providerOptions,{type:"tool result part",canCache:!0}))!=null?l:Ce?M.getCacheControl(K.providerOptions,{type:"tool result message",canCache:!0}):void 0,_e=oe.output,ge;switch(_e.type){case"content":ge=_e.value.map(ve=>{var H;switch(ve.type){case"text":return{type:"text",text:ve.text};case"image-data":return{type:"image",source:{type:"base64",media_type:ve.mediaType,data:ve.data}};case"image-url":return{type:"image",source:{type:"url",url:ve.url}};case"file-url":return{type:"document",source:{type:"url",url:ve.url}};case"file-data":{if(ve.mediaType==="application/pdf")return C.add("pdfs-2024-09-25"),{type:"document",source:{type:"base64",media_type:ve.mediaType,data:ve.data}};t.push({type:"other",message:`unsupported tool content part type: ${ve.type} with media type: ${ve.mediaType}`});return}case"custom":{let Z=(H=ve.providerOptions)==null?void 0:H.anthropic;if(Z?.type==="tool-reference")return{type:"tool_reference",tool_name:Z.toolName};t.push({type:"other",message:"unsupported custom tool content part"});return}default:{t.push({type:"other",message:`unsupported tool content part type: ${ve.type}`});return}}}).filter(Rl);break;case"text":case"error-text":ge=_e.value;break;case"execution-denied":ge=(u=_e.reason)!=null?u:"Tool execution denied.";break;default:ge=JSON.stringify(_e.value);break}$.push({type:"tool_result",tool_use_id:oe.toolCallId,content:ge,is_error:_e.type==="error-text"||_e.type==="error-json"?!0:void 0,cache_control:J})}break}default:{let we=V;throw new Error(`Unsupported role: ${we}`)}}}D.push({role:"user",content:$});break}case"assistant":{let $=[],K=new Set;for(let V=0;V<B.messages.length;V++){let ce=B.messages[V],we=V===B.messages.length-1,{content:oe}=ce;for(let Ce=0;Ce<oe.length;Ce++){let J=oe[Ce],_e=Ce===oe.length-1,ge=(d=M.getCacheControl(J.providerOptions,{type:"assistant message part",canCache:!0}))!=null?d:_e?M.getCacheControl(ce.providerOptions,{type:"assistant message",canCache:!0}):void 0;switch(J.type){case"text":{let ve=(p=J.providerOptions)==null?void 0:p.anthropic;ve?.type==="compaction"?$.push({type:"compaction",content:J.text,cache_control:ge}):$.push({type:"text",text:F&&we&&_e?J.text.trim():J.text,cache_control:ge});break}case"reasoning":{if(e){let ve=await tt({provider:"anthropic",providerOptions:J.providerOptions,schema:eJt});ve!=null?ve.signature!=null?(M.getCacheControl(J.providerOptions,{type:"thinking block",canCache:!1}),$.push({type:"thinking",thinking:J.text,signature:ve.signature})):ve.redactedData!=null?(M.getCacheControl(J.providerOptions,{type:"redacted thinking block",canCache:!1}),$.push({type:"redacted_thinking",data:ve.redactedData})):t.push({type:"other",message:"unsupported reasoning metadata"}):t.push({type:"other",message:"unsupported reasoning metadata"})}else t.push({type:"other",message:"sending reasoning content is disabled for this model"});break}case"tool-call":{if(J.providerExecuted){let Z=o.toProviderToolName(J.toolName);if(((f=(m=J.providerOptions)==null?void 0:m.anthropic)==null?void 0:f.type)==="mcp-tool-use"){K.add(J.toolCallId);let z=(y=(h=J.providerOptions)==null?void 0:h.anthropic)==null?void 0:y.serverName;if(z==null||typeof z!="string"){t.push({type:"other",message:"mcp tool use server name is required and must be a string"});break}$.push({type:"mcp_tool_use",id:J.toolCallId,name:J.toolName,input:J.input,server_name:z,cache_control:ge})}else if(Z==="code_execution"&&J.input!=null&&typeof J.input=="object"&&"type"in J.input&&typeof J.input.type=="string"&&(J.input.type==="bash_code_execution"||J.input.type==="text_editor_code_execution"))$.push({type:"server_tool_use",id:J.toolCallId,name:J.input.type,input:J.input,cache_control:ge});else if(Z==="code_execution"&&J.input!=null&&typeof J.input=="object"&&"type"in J.input&&J.input.type==="programmatic-tool-call"){let{type:z,...Te}=J.input;$.push({type:"server_tool_use",id:J.toolCallId,name:"code_execution",input:Te,cache_control:ge})}else Z==="code_execution"||Z==="web_fetch"||Z==="web_search"?$.push({type:"server_tool_use",id:J.toolCallId,name:Z,input:J.input,cache_control:ge}):Z==="tool_search_tool_regex"||Z==="tool_search_tool_bm25"?$.push({type:"server_tool_use",id:J.toolCallId,name:Z,input:J.input,cache_control:ge}):t.push({type:"other",message:`provider executed tool call for tool ${J.toolName} is not supported`});break}let ve=(v=J.providerOptions)==null?void 0:v.anthropic,H=ve?.caller?(ve.caller.type==="code_execution_20250825"||ve.caller.type==="code_execution_20260120")&&ve.caller.toolId?{type:ve.caller.type,tool_id:ve.caller.toolId}:ve.caller.type==="direct"?{type:"direct"}:void 0:void 0;$.push({type:"tool_use",id:J.toolCallId,name:J.toolName,input:J.input,...H&&{caller:H},cache_control:ge});break}case"tool-result":{let ve=o.toProviderToolName(J.toolName);if(K.has(J.toolCallId)){let H=J.output;if(H.type!=="json"&&H.type!=="error-json"){t.push({type:"other",message:`provider executed tool result output type ${H.type} for tool ${J.toolName} is not supported`});break}$.push({type:"mcp_tool_result",tool_use_id:J.toolCallId,is_error:H.type==="error-json",content:H.value,cache_control:ge})}else if(ve==="code_execution"){let H=J.output;if(H.type==="error-text"||H.type==="error-json"){let Z={};try{typeof H.value=="string"?Z=JSON.parse(H.value):typeof H.value=="object"&&H.value!==null&&(Z=H.value)}catch{}Z.type==="code_execution_tool_result_error"?$.push({type:"code_execution_tool_result",tool_use_id:J.toolCallId,content:{type:"code_execution_tool_result_error",error_code:(b=Z.errorCode)!=null?b:"unknown"},cache_control:ge}):$.push({type:"bash_code_execution_tool_result",tool_use_id:J.toolCallId,cache_control:ge,content:{type:"bash_code_execution_tool_result_error",error_code:(w=Z.errorCode)!=null?w:"unknown"}});break}if(H.type!=="json"){t.push({type:"other",message:`provider executed tool result output type ${H.type} for tool ${J.toolName} is not supported`});break}if(H.value==null||typeof H.value!="object"||!("type"in H.value)||typeof H.value.type!="string"){t.push({type:"other",message:`provider executed tool result output value is not a valid code execution result for tool ${J.toolName}`});break}if(H.value.type==="code_execution_result"){let Z=await Ge({value:H.value,schema:VOe});$.push({type:"code_execution_tool_result",tool_use_id:J.toolCallId,content:{type:Z.type,stdout:Z.stdout,stderr:Z.stderr,return_code:Z.return_code,content:(T=Z.content)!=null?T:[]},cache_control:ge})}else if(H.value.type==="encrypted_code_execution_result"){let Z=await Ge({value:H.value,schema:WOe});Z.type==="encrypted_code_execution_result"&&$.push({type:"code_execution_tool_result",tool_use_id:J.toolCallId,content:{type:Z.type,encrypted_stdout:Z.encrypted_stdout,stderr:Z.stderr,return_code:Z.return_code,content:(_=Z.content)!=null?_:[]},cache_control:ge})}else{let Z=await Ge({value:H.value,schema:HOe});Z.type==="code_execution_result"?$.push({type:"code_execution_tool_result",tool_use_id:J.toolCallId,content:{type:Z.type,stdout:Z.stdout,stderr:Z.stderr,return_code:Z.return_code,content:(k=Z.content)!=null?k:[]},cache_control:ge}):Z.type==="bash_code_execution_result"||Z.type==="bash_code_execution_tool_result_error"?$.push({type:"bash_code_execution_tool_result",tool_use_id:J.toolCallId,cache_control:ge,content:Z}):$.push({type:"text_editor_code_execution_tool_result",tool_use_id:J.toolCallId,cache_control:ge,content:Z})}break}if(ve==="web_fetch"){let H=J.output;if(H.type==="error-json"){let X={};try{typeof H.value=="string"?X=JSON.parse(H.value):typeof H.value=="object"&&H.value!==null&&(X=H.value)}catch{let Te=(R=H.value)==null?void 0:R.errorCode;X={errorCode:typeof Te=="string"?Te:"unavailable"}}$.push({type:"web_fetch_tool_result",tool_use_id:J.toolCallId,content:{type:"web_fetch_tool_result_error",error_code:(I=X.errorCode)!=null?I:"unavailable"},cache_control:ge});break}if(H.type!=="json"){t.push({type:"other",message:`provider executed tool result output type ${H.type} for tool ${J.toolName} is not supported`});break}let Z=await Ge({value:H.value,schema:GOe});$.push({type:"web_fetch_tool_result",tool_use_id:J.toolCallId,content:{type:"web_fetch_result",url:Z.url,retrieved_at:Z.retrievedAt,content:{type:"document",title:Z.content.title,citations:Z.content.citations,source:{type:Z.content.source.type,media_type:Z.content.source.mediaType,data:Z.content.source.data}}},cache_control:ge});break}if(ve==="web_search"){let H=J.output;if(H.type!=="json"){t.push({type:"other",message:`provider executed tool result output type ${H.type} for tool ${J.toolName} is not supported`});break}let Z=await Ge({value:H.value,schema:qOe});$.push({type:"web_search_tool_result",tool_use_id:J.toolCallId,content:Z.map(X=>({url:X.url,title:X.title,page_age:X.pageAge,encrypted_content:X.encryptedContent,type:X.type})),cache_control:ge});break}if(ve==="tool_search_tool_regex"||ve==="tool_search_tool_bm25"){let H=J.output;if(H.type!=="json"){t.push({type:"other",message:`provider executed tool result output type ${H.type} for tool ${J.toolName} is not supported`});break}let X=(await Ge({value:H.value,schema:KOe})).map(z=>({type:"tool_reference",tool_name:z.toolName}));$.push({type:"tool_search_tool_result",tool_use_id:J.toolCallId,content:{type:"tool_search_tool_search_result",tool_references:X},cache_control:ge});break}t.push({type:"other",message:`provider executed tool result for tool ${J.toolName} is not supported`});break}}}}D.push({role:"assistant",content:$});break}default:{let $=U;throw new Error(`content type: ${$}`)}}}return{prompt:{system:O,messages:D},betas:C}}function zJt(r){let e=[],t;for(let n of r){let{role:o}=n;switch(o){case"system":{t?.type!=="system"&&(t={type:"system",messages:[]},e.push(t)),t.messages.push(n);break}case"assistant":{t?.type!=="assistant"&&(t={type:"assistant",messages:[]},e.push(t)),t.messages.push(n);break}case"user":{t?.type!=="user"&&(t={type:"user",messages:[]},e.push(t)),t.messages.push(n);break}case"tool":{t?.type!=="user"&&(t={type:"user",messages:[]},e.push(t)),t.messages.push(n);break}default:{let s=o;throw new Error(`Unsupported role: ${s}`)}}}return e}function Tee({finishReason:r,isJsonResponseFromTool:e}){switch(r){case"pause_turn":case"end_turn":case"stop_sequence":return"stop";case"refusal":return"content-filter";case"tool_use":return e?"stop":"tool-calls";case"max_tokens":case"model_context_window_exceeded":return"length";case"compaction":return"other";default:return"other"}}function zOe(r,e,t){var n;if(r.type==="web_search_result_location")return{type:"source",sourceType:"url",id:t(),url:r.url,title:r.title,providerMetadata:{anthropic:{citedText:r.cited_text,encryptedIndex:r.encrypted_index}}};if(r.type!=="page_location"&&r.type!=="char_location")return;let o=e[r.document_index];if(o)return{type:"source",sourceType:"document",id:t(),mediaType:o.mediaType,title:(n=r.document_title)!=null?n:o.title,filename:o.filename,providerMetadata:{anthropic:r.type==="page_location"?{citedText:r.cited_text,startPageNumber:r.start_page_number,endPageNumber:r.end_page_number}:{citedText:r.cited_text,startCharIndex:r.start_char_index,endCharIndex:r.end_char_index}}}}function jJt(r){return r.includes("claude-sonnet-4-6")||r.includes("claude-opus-4-6")?{maxOutputTokens:128e3,supportsStructuredOutput:!0,isKnownModel:!0}:r.includes("claude-sonnet-4-5")||r.includes("claude-opus-4-5")||r.includes("claude-haiku-4-5")?{maxOutputTokens:64e3,supportsStructuredOutput:!0,isKnownModel:!0}:r.includes("claude-opus-4-1")?{maxOutputTokens:32e3,supportsStructuredOutput:!0,isKnownModel:!0}:r.includes("claude-sonnet-4-")?{maxOutputTokens:64e3,supportsStructuredOutput:!1,isKnownModel:!0}:r.includes("claude-opus-4-")?{maxOutputTokens:32e3,supportsStructuredOutput:!1,isKnownModel:!0}:r.includes("claude-3-haiku")?{maxOutputTokens:4096,supportsStructuredOutput:!1,isKnownModel:!0}:{maxOutputTokens:4096,supportsStructuredOutput:!1,isKnownModel:!1}}function BOe(r){if(!r)return!1;let e=!1,t=!1;for(let n of r){if("type"in n&&(n.type==="web_fetch_20260209"||n.type==="web_search_20260209")){e=!0;continue}if(n.name==="code_execution"){t=!0;break}}return e&&!t}function jOe(r){return r?{appliedEdits:r.applied_edits.map(e=>{switch(e.type){case"clear_tool_uses_20250919":return{type:e.type,clearedToolUses:e.cleared_tool_uses,clearedInputTokens:e.cleared_input_tokens};case"clear_thinking_20251015":return{type:e.type,clearedThinkingTurns:e.cleared_thinking_turns,clearedInputTokens:e.cleared_input_tokens};case"compact_20260112":return{type:e.type}}}).filter(e=>e!==void 0)}:null}function IA(r={}){var e,t;let n=(e=ha(mi({settingValue:r.baseURL,environmentVariableName:"ANTHROPIC_BASE_URL"})))!=null?e:"https://api.anthropic.com/v1",o=(t=r.name)!=null?t:"anthropic.messages";if(r.apiKey&&r.authToken)throw new rf({argument:"apiKey/authToken",message:"Both apiKey and authToken were provided. Please use only one authentication method."});let s=()=>{let l=r.authToken?{Authorization:`Bearer ${r.authToken}`}:{"x-api-key":_d({apiKey:r.apiKey,environmentVariableName:"ANTHROPIC_API_KEY",description:"Anthropic"})};return lr({"anthropic-version":"2023-06-01",...l,...r.headers},`ai-sdk/anthropic/${Z8t}`)},i=l=>{var u;return new BJt(l,{provider:o,baseURL:n,headers:s,fetch:r.fetch,generateId:(u=r.generateId)!=null?u:lt,supportedUrls:()=>({"image/*":[/^https?:\/\/.*$/],"application/pdf":[/^https?:\/\/.*$/]})})},a=function(l){if(new.target)throw new Error("The Anthropic model function cannot be called with the new keyword.");return i(l)};return a.specificationVersion="v3",a.languageModel=i,a.chat=i,a.messages=i,a.embeddingModel=l=>{throw new tn({modelId:l,modelType:"embeddingModel"})},a.textEmbeddingModel=a.embeddingModel,a.imageModel=l=>{throw new tn({modelId:l,modelType:"imageModel"})},a.tools=d9t,a}var Z8t,X8t,DOe,Y8t,Q8t,eJt,LOe,FOe,UOe,See,rJt,nJt,oJt,sJt,iJt,aJt,cJt,lJt,uJt,dJt,qOe,pJt,mJt,fJt,gJt,hJt,yJt,vJt,xJt,bJt,GOe,TJt,SJt,wJt,VOe,EJt,CJt,kJt,HOe,RJt,AJt,IJt,WOe,PJt,MJt,OJt,KOe,NJt,DJt,LJt,BJt,qJt,GJt,VJt,HJt,WJt,KJt,JJt,ZJt,XJt,YJt,QJt,e9t,t9t,r9t,n9t,o9t,s9t,i9t,a9t,c9t,l9t,u9t,d9t,p9t,wee=A(()=>{Le();ee();Le();ee();ee();de();ee();de();de();Le();ee();de();ee();ee();de();ee();de();ee();de();ee();de();ee();Le();ee();ee();de();ee();de();ee();de();ee();de();ee();de();ee();de();ee();de();ee();de();ee();de();ee();de();ee();de();ee();de();ee();de();ee();de();Z8t="3.0.64",X8t=G(()=>j(c.object({type:c.literal("error"),error:c.object({type:c.string(),message:c.string()})}))),DOe=Ir({errorSchema:X8t,errorToMessage:r=>r.error.message}),Y8t=G(()=>j(c.object({type:c.literal("message"),id:c.string().nullish(),model:c.string().nullish(),content:c.array(c.discriminatedUnion("type",[c.object({type:c.literal("text"),text:c.string(),citations:c.array(c.discriminatedUnion("type",[c.object({type:c.literal("web_search_result_location"),cited_text:c.string(),url:c.string(),title:c.string(),encrypted_index:c.string()}),c.object({type:c.literal("page_location"),cited_text:c.string(),document_index:c.number(),document_title:c.string().nullable(),start_page_number:c.number(),end_page_number:c.number()}),c.object({type:c.literal("char_location"),cited_text:c.string(),document_index:c.number(),document_title:c.string().nullable(),start_char_index:c.number(),end_char_index:c.number()})])).optional()}),c.object({type:c.literal("thinking"),thinking:c.string(),signature:c.string()}),c.object({type:c.literal("redacted_thinking"),data:c.string()}),c.object({type:c.literal("compaction"),content:c.string()}),c.object({type:c.literal("tool_use"),id:c.string(),name:c.string(),input:c.unknown(),caller:c.union([c.object({type:c.literal("code_execution_20250825"),tool_id:c.string()}),c.object({type:c.literal("code_execution_20260120"),tool_id:c.string()}),c.object({type:c.literal("direct")})]).optional()}),c.object({type:c.literal("server_tool_use"),id:c.string(),name:c.string(),input:c.record(c.string(),c.unknown()).nullish(),caller:c.union([c.object({type:c.literal("code_execution_20260120"),tool_id:c.string()}),c.object({type:c.literal("direct")})]).optional()}),c.object({type:c.literal("mcp_tool_use"),id:c.string(),name:c.string(),input:c.unknown(),server_name:c.string()}),c.object({type:c.literal("mcp_tool_result"),tool_use_id:c.string(),is_error:c.boolean(),content:c.array(c.union([c.string(),c.object({type:c.literal("text"),text:c.string()})]))}),c.object({type:c.literal("web_fetch_tool_result"),tool_use_id:c.string(),content:c.union([c.object({type:c.literal("web_fetch_result"),url:c.string(),retrieved_at:c.string(),content:c.object({type:c.literal("document"),title:c.string().nullable(),citations:c.object({enabled:c.boolean()}).optional(),source:c.union([c.object({type:c.literal("base64"),media_type:c.literal("application/pdf"),data:c.string()}),c.object({type:c.literal("text"),media_type:c.literal("text/plain"),data:c.string()})])})}),c.object({type:c.literal("web_fetch_tool_result_error"),error_code:c.string()})])}),c.object({type:c.literal("web_search_tool_result"),tool_use_id:c.string(),content:c.union([c.array(c.object({type:c.literal("web_search_result"),url:c.string(),title:c.string(),encrypted_content:c.string(),page_age:c.string().nullish()})),c.object({type:c.literal("web_search_tool_result_error"),error_code:c.string()})])}),c.object({type:c.literal("code_execution_tool_result"),tool_use_id:c.string(),content:c.union([c.object({type:c.literal("code_execution_result"),stdout:c.string(),stderr:c.string(),return_code:c.number(),content:c.array(c.object({type:c.literal("code_execution_output"),file_id:c.string()})).optional().default([])}),c.object({type:c.literal("encrypted_code_execution_result"),encrypted_stdout:c.string(),stderr:c.string(),return_code:c.number(),content:c.array(c.object({type:c.literal("code_execution_output"),file_id:c.string()})).optional().default([])}),c.object({type:c.literal("code_execution_tool_result_error"),error_code:c.string()})])}),c.object({type:c.literal("bash_code_execution_tool_result"),tool_use_id:c.string(),content:c.discriminatedUnion("type",[c.object({type:c.literal("bash_code_execution_result"),content:c.array(c.object({type:c.literal("bash_code_execution_output"),file_id:c.string()})),stdout:c.string(),stderr:c.string(),return_code:c.number()}),c.object({type:c.literal("bash_code_execution_tool_result_error"),error_code:c.string()})])}),c.object({type:c.literal("text_editor_code_execution_tool_result"),tool_use_id:c.string(),content:c.discriminatedUnion("type",[c.object({type:c.literal("text_editor_code_execution_tool_result_error"),error_code:c.string()}),c.object({type:c.literal("text_editor_code_execution_view_result"),content:c.string(),file_type:c.string(),num_lines:c.number().nullable(),start_line:c.number().nullable(),total_lines:c.number().nullable()}),c.object({type:c.literal("text_editor_code_execution_create_result"),is_file_update:c.boolean()}),c.object({type:c.literal("text_editor_code_execution_str_replace_result"),lines:c.array(c.string()).nullable(),new_lines:c.number().nullable(),new_start:c.number().nullable(),old_lines:c.number().nullable(),old_start:c.number().nullable()})])}),c.object({type:c.literal("tool_search_tool_result"),tool_use_id:c.string(),content:c.union([c.object({type:c.literal("tool_search_tool_search_result"),tool_references:c.array(c.object({type:c.literal("tool_reference"),tool_name:c.string()}))}),c.object({type:c.literal("tool_search_tool_result_error"),error_code:c.string()})])})])),stop_reason:c.string().nullish(),stop_sequence:c.string().nullish(),usage:c.looseObject({input_tokens:c.number(),output_tokens:c.number(),cache_creation_input_tokens:c.number().nullish(),cache_read_input_tokens:c.number().nullish(),iterations:c.array(c.object({type:c.union([c.literal("compaction"),c.literal("message")]),input_tokens:c.number(),output_tokens:c.number()})).nullish()}),container:c.object({expires_at:c.string(),id:c.string(),skills:c.array(c.object({type:c.union([c.literal("anthropic"),c.literal("custom")]),skill_id:c.string(),version:c.string()})).nullish()}).nullish(),context_management:c.object({applied_edits:c.array(c.union([c.object({type:c.literal("clear_tool_uses_20250919"),cleared_tool_uses:c.number(),cleared_input_tokens:c.number()}),c.object({type:c.literal("clear_thinking_20251015"),cleared_thinking_turns:c.number(),cleared_input_tokens:c.number()}),c.object({type:c.literal("compact_20260112")})]))}).nullish()}))),Q8t=G(()=>j(c.discriminatedUnion("type",[c.object({type:c.literal("message_start"),message:c.object({id:c.string().nullish(),model:c.string().nullish(),role:c.string().nullish(),usage:c.looseObject({input_tokens:c.number(),cache_creation_input_tokens:c.number().nullish(),cache_read_input_tokens:c.number().nullish()}),content:c.array(c.discriminatedUnion("type",[c.object({type:c.literal("tool_use"),id:c.string(),name:c.string(),input:c.unknown(),caller:c.union([c.object({type:c.literal("code_execution_20250825"),tool_id:c.string()}),c.object({type:c.literal("code_execution_20260120"),tool_id:c.string()}),c.object({type:c.literal("direct")})]).optional()})])).nullish(),stop_reason:c.string().nullish(),container:c.object({expires_at:c.string(),id:c.string()}).nullish()})}),c.object({type:c.literal("content_block_start"),index:c.number(),content_block:c.discriminatedUnion("type",[c.object({type:c.literal("text"),text:c.string()}),c.object({type:c.literal("thinking"),thinking:c.string()}),c.object({type:c.literal("tool_use"),id:c.string(),name:c.string(),input:c.record(c.string(),c.unknown()).optional(),caller:c.union([c.object({type:c.literal("code_execution_20250825"),tool_id:c.string()}),c.object({type:c.literal("code_execution_20260120"),tool_id:c.string()}),c.object({type:c.literal("direct")})]).optional()}),c.object({type:c.literal("redacted_thinking"),data:c.string()}),c.object({type:c.literal("compaction"),content:c.string().nullish()}),c.object({type:c.literal("server_tool_use"),id:c.string(),name:c.string(),input:c.record(c.string(),c.unknown()).nullish(),caller:c.union([c.object({type:c.literal("code_execution_20260120"),tool_id:c.string()}),c.object({type:c.literal("direct")})]).optional()}),c.object({type:c.literal("mcp_tool_use"),id:c.string(),name:c.string(),input:c.unknown(),server_name:c.string()}),c.object({type:c.literal("mcp_tool_result"),tool_use_id:c.string(),is_error:c.boolean(),content:c.array(c.union([c.string(),c.object({type:c.literal("text"),text:c.string()})]))}),c.object({type:c.literal("web_fetch_tool_result"),tool_use_id:c.string(),content:c.union([c.object({type:c.literal("web_fetch_result"),url:c.string(),retrieved_at:c.string(),content:c.object({type:c.literal("document"),title:c.string().nullable(),citations:c.object({enabled:c.boolean()}).optional(),source:c.union([c.object({type:c.literal("base64"),media_type:c.literal("application/pdf"),data:c.string()}),c.object({type:c.literal("text"),media_type:c.literal("text/plain"),data:c.string()})])})}),c.object({type:c.literal("web_fetch_tool_result_error"),error_code:c.string()})])}),c.object({type:c.literal("web_search_tool_result"),tool_use_id:c.string(),content:c.union([c.array(c.object({type:c.literal("web_search_result"),url:c.string(),title:c.string(),encrypted_content:c.string(),page_age:c.string().nullish()})),c.object({type:c.literal("web_search_tool_result_error"),error_code:c.string()})])}),c.object({type:c.literal("code_execution_tool_result"),tool_use_id:c.string(),content:c.union([c.object({type:c.literal("code_execution_result"),stdout:c.string(),stderr:c.string(),return_code:c.number(),content:c.array(c.object({type:c.literal("code_execution_output"),file_id:c.string()})).optional().default([])}),c.object({type:c.literal("encrypted_code_execution_result"),encrypted_stdout:c.string(),stderr:c.string(),return_code:c.number(),content:c.array(c.object({type:c.literal("code_execution_output"),file_id:c.string()})).optional().default([])}),c.object({type:c.literal("code_execution_tool_result_error"),error_code:c.string()})])}),c.object({type:c.literal("bash_code_execution_tool_result"),tool_use_id:c.string(),content:c.discriminatedUnion("type",[c.object({type:c.literal("bash_code_execution_result"),content:c.array(c.object({type:c.literal("bash_code_execution_output"),file_id:c.string()})),stdout:c.string(),stderr:c.string(),return_code:c.number()}),c.object({type:c.literal("bash_code_execution_tool_result_error"),error_code:c.string()})])}),c.object({type:c.literal("text_editor_code_execution_tool_result"),tool_use_id:c.string(),content:c.discriminatedUnion("type",[c.object({type:c.literal("text_editor_code_execution_tool_result_error"),error_code:c.string()}),c.object({type:c.literal("text_editor_code_execution_view_result"),content:c.string(),file_type:c.string(),num_lines:c.number().nullable(),start_line:c.number().nullable(),total_lines:c.number().nullable()}),c.object({type:c.literal("text_editor_code_execution_create_result"),is_file_update:c.boolean()}),c.object({type:c.literal("text_editor_code_execution_str_replace_result"),lines:c.array(c.string()).nullable(),new_lines:c.number().nullable(),new_start:c.number().nullable(),old_lines:c.number().nullable(),old_start:c.number().nullable()})])}),c.object({type:c.literal("tool_search_tool_result"),tool_use_id:c.string(),content:c.union([c.object({type:c.literal("tool_search_tool_search_result"),tool_references:c.array(c.object({type:c.literal("tool_reference"),tool_name:c.string()}))}),c.object({type:c.literal("tool_search_tool_result_error"),error_code:c.string()})])})])}),c.object({type:c.literal("content_block_delta"),index:c.number(),delta:c.discriminatedUnion("type",[c.object({type:c.literal("input_json_delta"),partial_json:c.string()}),c.object({type:c.literal("text_delta"),text:c.string()}),c.object({type:c.literal("thinking_delta"),thinking:c.string()}),c.object({type:c.literal("signature_delta"),signature:c.string()}),c.object({type:c.literal("compaction_delta"),content:c.string().nullish()}),c.object({type:c.literal("citations_delta"),citation:c.discriminatedUnion("type",[c.object({type:c.literal("web_search_result_location"),cited_text:c.string(),url:c.string(),title:c.string(),encrypted_index:c.string()}),c.object({type:c.literal("page_location"),cited_text:c.string(),document_index:c.number(),document_title:c.string().nullable(),start_page_number:c.number(),end_page_number:c.number()}),c.object({type:c.literal("char_location"),cited_text:c.string(),document_index:c.number(),document_title:c.string().nullable(),start_char_index:c.number(),end_char_index:c.number()})])})])}),c.object({type:c.literal("content_block_stop"),index:c.number()}),c.object({type:c.literal("error"),error:c.object({type:c.string(),message:c.string()})}),c.object({type:c.literal("message_delta"),delta:c.object({stop_reason:c.string().nullish(),stop_sequence:c.string().nullish(),container:c.object({expires_at:c.string(),id:c.string(),skills:c.array(c.object({type:c.union([c.literal("anthropic"),c.literal("custom")]),skill_id:c.string(),version:c.string()})).nullish()}).nullish()}),usage:c.looseObject({input_tokens:c.number().nullish(),output_tokens:c.number(),cache_creation_input_tokens:c.number().nullish(),cache_read_input_tokens:c.number().nullish(),iterations:c.array(c.object({type:c.union([c.literal("compaction"),c.literal("message")]),input_tokens:c.number(),output_tokens:c.number()})).nullish()}),context_management:c.object({applied_edits:c.array(c.union([c.object({type:c.literal("clear_tool_uses_20250919"),cleared_tool_uses:c.number(),cleared_input_tokens:c.number()}),c.object({type:c.literal("clear_thinking_20251015"),cleared_thinking_turns:c.number(),cleared_input_tokens:c.number()}),c.object({type:c.literal("compact_20260112")})]))}).nullish()}),c.object({type:c.literal("message_stop")}),c.object({type:c.literal("ping")})]))),eJt=G(()=>j(c.object({signature:c.string().optional(),redactedData:c.string().optional()}))),LOe=c.object({citations:c.object({enabled:c.boolean()}).optional(),title:c.string().optional(),context:c.string().optional()}),FOe=c.object({sendReasoning:c.boolean().optional(),structuredOutputMode:c.enum(["outputFormat","jsonTool","auto"]).optional(),thinking:c.discriminatedUnion("type",[c.object({type:c.literal("adaptive")}),c.object({type:c.literal("enabled"),budgetTokens:c.number().optional()}),c.object({type:c.literal("disabled")})]).optional(),disableParallelToolUse:c.boolean().optional(),cacheControl:c.object({type:c.literal("ephemeral"),ttl:c.union([c.literal("5m"),c.literal("1h")]).optional()}).optional(),metadata:c.object({userId:c.string().optional()}).optional(),mcpServers:c.array(c.object({type:c.literal("url"),name:c.string(),url:c.string(),authorizationToken:c.string().nullish(),toolConfiguration:c.object({enabled:c.boolean().nullish(),allowedTools:c.array(c.string()).nullish()}).nullish()})).optional(),container:c.object({id:c.string().optional(),skills:c.array(c.object({type:c.union([c.literal("anthropic"),c.literal("custom")]),skillId:c.string(),version:c.string().optional()})).optional()}).optional(),toolStreaming:c.boolean().optional(),effort:c.enum(["low","medium","high","max"]).optional(),speed:c.enum(["fast","standard"]).optional(),anthropicBeta:c.array(c.string()).optional(),contextManagement:c.object({edits:c.array(c.discriminatedUnion("type",[c.object({type:c.literal("clear_tool_uses_20250919"),trigger:c.discriminatedUnion("type",[c.object({type:c.literal("input_tokens"),value:c.number()}),c.object({type:c.literal("tool_uses"),value:c.number()})]).optional(),keep:c.object({type:c.literal("tool_uses"),value:c.number()}).optional(),clearAtLeast:c.object({type:c.literal("input_tokens"),value:c.number()}).optional(),clearToolInputs:c.boolean().optional(),excludeTools:c.array(c.string()).optional()}),c.object({type:c.literal("clear_thinking_20251015"),keep:c.union([c.literal("all"),c.object({type:c.literal("thinking_turns"),value:c.number()})]).optional()}),c.object({type:c.literal("compact_20260112"),trigger:c.object({type:c.literal("input_tokens"),value:c.number()}).optional(),pauseAfterCompaction:c.boolean().optional(),instructions:c.string().optional()})]))}).optional()}),UOe=4;See=class{constructor(){this.breakpointCount=0,this.warnings=[]}getCacheControl(r,e){let t=tJt(r);if(t){if(!e.canCache){this.warnings.push({type:"unsupported",feature:"cache_control on non-cacheable context",details:`cache_control cannot be set on ${e.type}. It will be ignored.`});return}if(this.breakpointCount++,this.breakpointCount>UOe){this.warnings.push({type:"unsupported",feature:"cacheControl breakpoint limit",details:`Maximum ${UOe} cache breakpoints exceeded (found ${this.breakpointCount}). This breakpoint will be ignored.`});return}return t}}getWarnings(){return this.warnings}},rJt=G(()=>j(c.object({maxCharacters:c.number().optional()}))),nJt=G(()=>j(c.object({command:c.enum(["view","create","str_replace","insert"]),path:c.string(),file_text:c.string().optional(),insert_line:c.number().int().optional(),new_str:c.string().optional(),insert_text:c.string().optional(),old_str:c.string().optional(),view_range:c.array(c.number().int()).optional()}))),oJt=et({id:"anthropic.text_editor_20250728",inputSchema:nJt}),sJt=(r={})=>oJt(r),iJt=G(()=>j(c.object({maxUses:c.number().optional(),allowedDomains:c.array(c.string()).optional(),blockedDomains:c.array(c.string()).optional(),userLocation:c.object({type:c.literal("approximate"),city:c.string().optional(),region:c.string().optional(),country:c.string().optional(),timezone:c.string().optional()}).optional()}))),aJt=G(()=>j(c.array(c.object({url:c.string(),title:c.string().nullable(),pageAge:c.string().nullable(),encryptedContent:c.string(),type:c.literal("web_search_result")})))),cJt=G(()=>j(c.object({query:c.string()}))),lJt=$e({id:"anthropic.web_search_20260209",inputSchema:cJt,outputSchema:aJt,supportsDeferredResults:!0}),uJt=(r={})=>lJt(r),dJt=G(()=>j(c.object({maxUses:c.number().optional(),allowedDomains:c.array(c.string()).optional(),blockedDomains:c.array(c.string()).optional(),userLocation:c.object({type:c.literal("approximate"),city:c.string().optional(),region:c.string().optional(),country:c.string().optional(),timezone:c.string().optional()}).optional()}))),qOe=G(()=>j(c.array(c.object({url:c.string(),title:c.string().nullable(),pageAge:c.string().nullable(),encryptedContent:c.string(),type:c.literal("web_search_result")})))),pJt=G(()=>j(c.object({query:c.string()}))),mJt=$e({id:"anthropic.web_search_20250305",inputSchema:pJt,outputSchema:qOe,supportsDeferredResults:!0}),fJt=(r={})=>mJt(r),gJt=G(()=>j(c.object({maxUses:c.number().optional(),allowedDomains:c.array(c.string()).optional(),blockedDomains:c.array(c.string()).optional(),citations:c.object({enabled:c.boolean()}).optional(),maxContentTokens:c.number().optional()}))),hJt=G(()=>j(c.object({type:c.literal("web_fetch_result"),url:c.string(),content:c.object({type:c.literal("document"),title:c.string().nullable(),citations:c.object({enabled:c.boolean()}).optional(),source:c.union([c.object({type:c.literal("base64"),mediaType:c.literal("application/pdf"),data:c.string()}),c.object({type:c.literal("text"),mediaType:c.literal("text/plain"),data:c.string()})])}),retrievedAt:c.string().nullable()}))),yJt=G(()=>j(c.object({url:c.string()}))),vJt=$e({id:"anthropic.web_fetch_20260209",inputSchema:yJt,outputSchema:hJt,supportsDeferredResults:!0}),xJt=(r={})=>vJt(r),bJt=G(()=>j(c.object({maxUses:c.number().optional(),allowedDomains:c.array(c.string()).optional(),blockedDomains:c.array(c.string()).optional(),citations:c.object({enabled:c.boolean()}).optional(),maxContentTokens:c.number().optional()}))),GOe=G(()=>j(c.object({type:c.literal("web_fetch_result"),url:c.string(),content:c.object({type:c.literal("document"),title:c.string().nullable(),citations:c.object({enabled:c.boolean()}).optional(),source:c.union([c.object({type:c.literal("base64"),mediaType:c.literal("application/pdf"),data:c.string()}),c.object({type:c.literal("text"),mediaType:c.literal("text/plain"),data:c.string()})])}),retrievedAt:c.string().nullable()}))),TJt=G(()=>j(c.object({url:c.string()}))),SJt=$e({id:"anthropic.web_fetch_20250910",inputSchema:TJt,outputSchema:GOe,supportsDeferredResults:!0}),wJt=(r={})=>SJt(r);VOe=G(()=>j(c.object({type:c.literal("code_execution_result"),stdout:c.string(),stderr:c.string(),return_code:c.number(),content:c.array(c.object({type:c.literal("code_execution_output"),file_id:c.string()})).optional().default([])}))),EJt=G(()=>j(c.object({code:c.string()}))),CJt=$e({id:"anthropic.code_execution_20250522",inputSchema:EJt,outputSchema:VOe}),kJt=(r={})=>CJt(r),HOe=G(()=>j(c.discriminatedUnion("type",[c.object({type:c.literal("code_execution_result"),stdout:c.string(),stderr:c.string(),return_code:c.number(),content:c.array(c.object({type:c.literal("code_execution_output"),file_id:c.string()})).optional().default([])}),c.object({type:c.literal("bash_code_execution_result"),content:c.array(c.object({type:c.literal("bash_code_execution_output"),file_id:c.string()})),stdout:c.string(),stderr:c.string(),return_code:c.number()}),c.object({type:c.literal("bash_code_execution_tool_result_error"),error_code:c.string()}),c.object({type:c.literal("text_editor_code_execution_tool_result_error"),error_code:c.string()}),c.object({type:c.literal("text_editor_code_execution_view_result"),content:c.string(),file_type:c.string(),num_lines:c.number().nullable(),start_line:c.number().nullable(),total_lines:c.number().nullable()}),c.object({type:c.literal("text_editor_code_execution_create_result"),is_file_update:c.boolean()}),c.object({type:c.literal("text_editor_code_execution_str_replace_result"),lines:c.array(c.string()).nullable(),new_lines:c.number().nullable(),new_start:c.number().nullable(),old_lines:c.number().nullable(),old_start:c.number().nullable()})]))),RJt=G(()=>j(c.discriminatedUnion("type",[c.object({type:c.literal("programmatic-tool-call"),code:c.string()}),c.object({type:c.literal("bash_code_execution"),command:c.string()}),c.discriminatedUnion("command",[c.object({type:c.literal("text_editor_code_execution"),command:c.literal("view"),path:c.string()}),c.object({type:c.literal("text_editor_code_execution"),command:c.literal("create"),path:c.string(),file_text:c.string().nullish()}),c.object({type:c.literal("text_editor_code_execution"),command:c.literal("str_replace"),path:c.string(),old_str:c.string(),new_str:c.string()})])]))),AJt=$e({id:"anthropic.code_execution_20250825",inputSchema:RJt,outputSchema:HOe,supportsDeferredResults:!0}),IJt=(r={})=>AJt(r),WOe=G(()=>j(c.discriminatedUnion("type",[c.object({type:c.literal("code_execution_result"),stdout:c.string(),stderr:c.string(),return_code:c.number(),content:c.array(c.object({type:c.literal("code_execution_output"),file_id:c.string()})).optional().default([])}),c.object({type:c.literal("encrypted_code_execution_result"),encrypted_stdout:c.string(),stderr:c.string(),return_code:c.number(),content:c.array(c.object({type:c.literal("code_execution_output"),file_id:c.string()})).optional().default([])}),c.object({type:c.literal("bash_code_execution_result"),content:c.array(c.object({type:c.literal("bash_code_execution_output"),file_id:c.string()})),stdout:c.string(),stderr:c.string(),return_code:c.number()}),c.object({type:c.literal("bash_code_execution_tool_result_error"),error_code:c.string()}),c.object({type:c.literal("text_editor_code_execution_tool_result_error"),error_code:c.string()}),c.object({type:c.literal("text_editor_code_execution_view_result"),content:c.string(),file_type:c.string(),num_lines:c.number().nullable(),start_line:c.number().nullable(),total_lines:c.number().nullable()}),c.object({type:c.literal("text_editor_code_execution_create_result"),is_file_update:c.boolean()}),c.object({type:c.literal("text_editor_code_execution_str_replace_result"),lines:c.array(c.string()).nullable(),new_lines:c.number().nullable(),new_start:c.number().nullable(),old_lines:c.number().nullable(),old_start:c.number().nullable()})]))),PJt=G(()=>j(c.discriminatedUnion("type",[c.object({type:c.literal("programmatic-tool-call"),code:c.string()}),c.object({type:c.literal("bash_code_execution"),command:c.string()}),c.discriminatedUnion("command",[c.object({type:c.literal("text_editor_code_execution"),command:c.literal("view"),path:c.string()}),c.object({type:c.literal("text_editor_code_execution"),command:c.literal("create"),path:c.string(),file_text:c.string().nullish()}),c.object({type:c.literal("text_editor_code_execution"),command:c.literal("str_replace"),path:c.string(),old_str:c.string(),new_str:c.string()})])]))),MJt=$e({id:"anthropic.code_execution_20260120",inputSchema:PJt,outputSchema:WOe,supportsDeferredResults:!0}),OJt=(r={})=>MJt(r),KOe=G(()=>j(c.array(c.object({type:c.literal("tool_reference"),toolName:c.string()})))),NJt=G(()=>j(c.object({pattern:c.string(),limit:c.number().optional()}))),DJt=$e({id:"anthropic.tool_search_regex_20251119",inputSchema:NJt,outputSchema:KOe,supportsDeferredResults:!0}),LJt=(r={})=>DJt(r);BJt=class{constructor(r,e){this.specificationVersion="v3";var t;this.modelId=r,this.config=e,this.generateId=(t=e.generateId)!=null?t:lt}supportsUrl(r){return r.protocol==="https:"}get provider(){return this.config.provider}get providerOptionsName(){let r=this.config.provider,e=r.indexOf(".");return e===-1?r:r.substring(0,e)}get supportedUrls(){var r,e,t;return(t=(e=(r=this.config).supportedUrls)==null?void 0:e.call(r))!=null?t:{}}async getArgs({userSuppliedBetas:r,prompt:e,maxOutputTokens:t,temperature:n,topP:o,topK:s,frequencyPenalty:i,presencePenalty:a,stopSequences:l,responseFormat:u,seed:d,tools:p,toolChoice:m,providerOptions:f,stream:h}){var y,v,b,w,T,_,k,R,I;let C=[];i!=null&&C.push({type:"unsupported",feature:"frequencyPenalty"}),a!=null&&C.push({type:"unsupported",feature:"presencePenalty"}),d!=null&&C.push({type:"unsupported",feature:"seed"}),n!=null&&n>1?(C.push({type:"unsupported",feature:"temperature",details:`${n} exceeds anthropic maximum of 1.0. clamped to 1.0`}),n=1):n!=null&&n<0&&(C.push({type:"unsupported",feature:"temperature",details:`${n} is below anthropic minimum of 0. clamped to 0`}),n=0),u?.type==="json"&&u.schema==null&&C.push({type:"unsupported",feature:"responseFormat",details:"JSON response format requires a schema. The response format is ignored."});let E=this.providerOptionsName,M=await tt({provider:"anthropic",providerOptions:f,schema:FOe}),O=E!=="anthropic"?await tt({provider:E,providerOptions:f,schema:FOe}):null,D=O!=null,N=Object.assign({},M??{},O??{}),{maxOutputTokens:W,supportsStructuredOutput:q,isKnownModel:B}=jJt(this.modelId),F=((y=this.config.supportsNativeStructuredOutput)!=null?y:!0)&&q,U=((v=this.config.supportsStrictTools)!=null?v:!0)&&q,$=(b=N?.structuredOutputMode)!=null?b:"auto",K=$==="outputFormat"||$==="auto"&&F,V=u?.type==="json"&&u.schema!=null&&!K?{type:"function",name:"json",description:"Respond with a JSON object.",inputSchema:u.schema}:void 0,ce=N?.contextManagement,we=new See,oe=bf({tools:p,providerToolNames:{"anthropic.code_execution_20250522":"code_execution","anthropic.code_execution_20250825":"code_execution","anthropic.code_execution_20260120":"code_execution","anthropic.computer_20241022":"computer","anthropic.computer_20250124":"computer","anthropic.text_editor_20241022":"str_replace_editor","anthropic.text_editor_20250124":"str_replace_editor","anthropic.text_editor_20250429":"str_replace_based_edit_tool","anthropic.text_editor_20250728":"str_replace_based_edit_tool","anthropic.bash_20241022":"bash","anthropic.bash_20250124":"bash","anthropic.memory_20250818":"memory","anthropic.web_search_20250305":"web_search","anthropic.web_search_20260209":"web_search","anthropic.web_fetch_20250910":"web_fetch","anthropic.web_fetch_20260209":"web_fetch","anthropic.tool_search_regex_20251119":"tool_search_tool_regex","anthropic.tool_search_bm25_20251119":"tool_search_tool_bm25"}}),{prompt:Ce,betas:J}=await $Jt({prompt:e,sendReasoning:(w=N?.sendReasoning)!=null?w:!0,warnings:C,cacheControlValidator:we,toolNameMapping:oe}),_e=(T=N?.thinking)==null?void 0:T.type,ge=_e==="enabled"||_e==="adaptive",ve=_e==="enabled"?(_=N?.thinking)==null?void 0:_.budgetTokens:void 0,H=t??W,Z={model:this.modelId,max_tokens:H,temperature:n,top_k:s,top_p:o,stop_sequences:l,...ge&&{thinking:{type:_e,...ve!=null&&{budget_tokens:ve}}},...(N?.effort||K&&u?.type==="json"&&u.schema!=null)&&{output_config:{...N?.effort&&{effort:N.effort},...K&&u?.type==="json"&&u.schema!=null&&{format:{type:"json_schema",schema:u.schema}}}},...N?.speed&&{speed:N.speed},...N?.cacheControl&&{cache_control:N.cacheControl},...((k=N?.metadata)==null?void 0:k.userId)!=null&&{metadata:{user_id:N.metadata.userId}},...N?.mcpServers&&N.mcpServers.length>0&&{mcp_servers:N.mcpServers.map(ae=>({type:ae.type,name:ae.name,url:ae.url,authorization_token:ae.authorizationToken,tool_configuration:ae.toolConfiguration?{allowed_tools:ae.toolConfiguration.allowedTools,enabled:ae.toolConfiguration.enabled}:void 0}))},...N?.container&&{container:N.container.skills&&N.container.skills.length>0?{id:N.container.id,skills:N.container.skills.map(ae=>({type:ae.type,skill_id:ae.skillId,version:ae.version}))}:N.container.id},system:Ce.system,messages:Ce.messages,...ce&&{context_management:{edits:ce.edits.map(ae=>{let It=ae.type;switch(It){case"clear_tool_uses_20250919":return{type:ae.type,...ae.trigger!==void 0&&{trigger:ae.trigger},...ae.keep!==void 0&&{keep:ae.keep},...ae.clearAtLeast!==void 0&&{clear_at_least:ae.clearAtLeast},...ae.clearToolInputs!==void 0&&{clear_tool_inputs:ae.clearToolInputs},...ae.excludeTools!==void 0&&{exclude_tools:ae.excludeTools}};case"clear_thinking_20251015":return{type:ae.type,...ae.keep!==void 0&&{keep:ae.keep}};case"compact_20260112":return{type:ae.type,...ae.trigger!==void 0&&{trigger:ae.trigger},...ae.pauseAfterCompaction!==void 0&&{pause_after_compaction:ae.pauseAfterCompaction},...ae.instructions!==void 0&&{instructions:ae.instructions}};default:C.push({type:"other",message:`Unknown context management strategy: ${It}`});return}}).filter(ae=>ae!==void 0)}}};ge?(_e==="enabled"&&ve==null&&(C.push({type:"compatibility",feature:"extended thinking",details:"thinking budget is required when thinking is enabled. using default budget of 1024 tokens."}),Z.thinking={type:"enabled",budget_tokens:1024},ve=1024),Z.temperature!=null&&(Z.temperature=void 0,C.push({type:"unsupported",feature:"temperature",details:"temperature is not supported when thinking is enabled"})),s!=null&&(Z.top_k=void 0,C.push({type:"unsupported",feature:"topK",details:"topK is not supported when thinking is enabled"})),o!=null&&(Z.top_p=void 0,C.push({type:"unsupported",feature:"topP",details:"topP is not supported when thinking is enabled"})),Z.max_tokens=H+(ve??0)):o!=null&&n!=null&&(C.push({type:"unsupported",feature:"topP",details:"topP is not supported when temperature is set. topP is ignored."}),Z.top_p=void 0),B&&Z.max_tokens>W&&(t!=null&&C.push({type:"unsupported",feature:"maxOutputTokens",details:`${Z.max_tokens} (maxOutputTokens + thinkingBudget) is greater than ${this.modelId} ${W} max output tokens. The max output tokens have been limited to ${W}.`}),Z.max_tokens=W),N?.mcpServers&&N.mcpServers.length>0&&J.add("mcp-client-2025-04-04"),ce&&(J.add("context-management-2025-06-27"),ce.edits.some(ae=>ae.type==="compact_20260112")&&J.add("compact-2026-01-12")),N?.container&&N.container.skills&&N.container.skills.length>0&&(J.add("code-execution-2025-08-25"),J.add("skills-2025-10-02"),J.add("files-api-2025-04-14"),p?.some(ae=>ae.type==="provider"&&(ae.id==="anthropic.code_execution_20250825"||ae.id==="anthropic.code_execution_20260120"))||C.push({type:"other",message:"code execution tool is required when using skills"})),N?.effort&&J.add("effort-2025-11-24"),N?.speed==="fast"&&J.add("fast-mode-2026-02-01"),h&&((R=N?.toolStreaming)==null||R)&&J.add("fine-grained-tool-streaming-2025-05-14");let{tools:X,toolChoice:z,toolWarnings:Te,betas:ue}=await _Jt(V!=null?{tools:[...p??[],V],toolChoice:{type:"required"},disableParallelToolUse:!0,cacheControlValidator:we,supportsStructuredOutput:!1,supportsStrictTools:U}:{tools:p??[],toolChoice:m,disableParallelToolUse:N?.disableParallelToolUse,cacheControlValidator:we,supportsStructuredOutput:F,supportsStrictTools:U}),fe=we.getWarnings();return{args:{...Z,tools:X,tool_choice:z,stream:h===!0?!0:void 0},warnings:[...C,...Te,...fe],betas:new Set([...J,...ue,...r,...(I=N?.anthropicBeta)!=null?I:[]]),usesJsonResponseTool:V!=null,toolNameMapping:oe,providerOptionsName:E,usedCustomProviderKey:D}}async getHeaders({betas:r,headers:e}){return Je(await at(this.config.headers),e,r.size>0?{"anthropic-beta":Array.from(r).join(",")}:{})}async getBetasFromHeaders(r){var e,t;let o=(e=(await at(this.config.headers))["anthropic-beta"])!=null?e:"",s=(t=r?.["anthropic-beta"])!=null?t:"";return new Set([...o.toLowerCase().split(","),...s.toLowerCase().split(",")].map(i=>i.trim()).filter(i=>i!==""))}buildRequestUrl(r){var e,t,n;return(n=(t=(e=this.config).buildRequestUrl)==null?void 0:t.call(e,this.config.baseURL,r))!=null?n:`${this.config.baseURL}/messages`}transformRequestBody(r,e){var t,n,o;return(o=(n=(t=this.config).transformRequestBody)==null?void 0:n.call(t,r,e))!=null?o:r}extractCitationDocuments(r){let e=t=>{var n,o;if(t.type!=="file"||t.mediaType!=="application/pdf"&&t.mediaType!=="text/plain")return!1;let s=(n=t.providerOptions)==null?void 0:n.anthropic,i=s?.citations;return(o=i?.enabled)!=null?o:!1};return r.filter(t=>t.role==="user").flatMap(t=>t.content).filter(e).map(t=>{var n;let o=t;return{title:(n=o.filename)!=null?n:"Untitled Document",filename:o.filename,mediaType:o.mediaType}})}async doGenerate(r){var e,t,n,o,s,i,a;let{args:l,warnings:u,betas:d,usesJsonResponseTool:p,toolNameMapping:m,providerOptionsName:f,usedCustomProviderKey:h}=await this.getArgs({...r,stream:!1,userSuppliedBetas:await this.getBetasFromHeaders(r.headers)}),y=[...this.extractCitationDocuments(r.prompt)],v=BOe(l.tools),{responseHeaders:b,value:w,rawValue:T}=await Ye({url:this.buildRequestUrl(!1),headers:await this.getHeaders({betas:d,headers:r.headers}),body:this.transformRequestBody(l,d),failedResponseHandler:DOe,successfulResponseHandler:rt(Y8t),abortSignal:r.abortSignal,fetch:this.config.fetch}),_=[],k={},R={},I=!1;for(let C of w.content)switch(C.type){case"text":{if(!p&&(_.push({type:"text",text:C.text}),C.citations))for(let E of C.citations){let M=zOe(E,y,this.generateId);M&&_.push(M)}break}case"thinking":{_.push({type:"reasoning",text:C.thinking,providerMetadata:{anthropic:{signature:C.signature}}});break}case"redacted_thinking":{_.push({type:"reasoning",text:"",providerMetadata:{anthropic:{redactedData:C.data}}});break}case"compaction":{_.push({type:"text",text:C.content,providerMetadata:{anthropic:{type:"compaction"}}});break}case"tool_use":{if(p&&C.name==="json")I=!0,_.push({type:"text",text:JSON.stringify(C.input)});else{let M=C.caller,O=M?{type:M.type,toolId:"tool_id"in M?M.tool_id:void 0}:void 0;_.push({type:"tool-call",toolCallId:C.id,toolName:C.name,input:JSON.stringify(C.input),...O&&{providerMetadata:{anthropic:{caller:O}}}})}break}case"server_tool_use":{if(C.name==="text_editor_code_execution"||C.name==="bash_code_execution")_.push({type:"tool-call",toolCallId:C.id,toolName:m.toCustomToolName("code_execution"),input:JSON.stringify({type:C.name,...C.input}),providerExecuted:!0});else if(C.name==="web_search"||C.name==="code_execution"||C.name==="web_fetch"){let E=C.name==="code_execution"&&C.input!=null&&typeof C.input=="object"&&"code"in C.input&&!("type"in C.input)?{type:"programmatic-tool-call",...C.input}:C.input;_.push({type:"tool-call",toolCallId:C.id,toolName:m.toCustomToolName(C.name),input:JSON.stringify(E),providerExecuted:!0,...v&&C.name==="code_execution"?{dynamic:!0}:{}})}else(C.name==="tool_search_tool_regex"||C.name==="tool_search_tool_bm25")&&(R[C.id]=C.name,_.push({type:"tool-call",toolCallId:C.id,toolName:m.toCustomToolName(C.name),input:JSON.stringify(C.input),providerExecuted:!0}));break}case"mcp_tool_use":{k[C.id]={type:"tool-call",toolCallId:C.id,toolName:C.name,input:JSON.stringify(C.input),providerExecuted:!0,dynamic:!0,providerMetadata:{anthropic:{type:"mcp-tool-use",serverName:C.server_name}}},_.push(k[C.id]);break}case"mcp_tool_result":{_.push({type:"tool-result",toolCallId:C.tool_use_id,toolName:k[C.tool_use_id].toolName,isError:C.is_error,result:C.content,dynamic:!0,providerMetadata:k[C.tool_use_id].providerMetadata});break}case"web_fetch_tool_result":{C.content.type==="web_fetch_result"?(y.push({title:(e=C.content.content.title)!=null?e:C.content.url,mediaType:C.content.content.source.media_type}),_.push({type:"tool-result",toolCallId:C.tool_use_id,toolName:m.toCustomToolName("web_fetch"),result:{type:"web_fetch_result",url:C.content.url,retrievedAt:C.content.retrieved_at,content:{type:C.content.content.type,title:C.content.content.title,citations:C.content.content.citations,source:{type:C.content.content.source.type,mediaType:C.content.content.source.media_type,data:C.content.content.source.data}}}})):C.content.type==="web_fetch_tool_result_error"&&_.push({type:"tool-result",toolCallId:C.tool_use_id,toolName:m.toCustomToolName("web_fetch"),isError:!0,result:{type:"web_fetch_tool_result_error",errorCode:C.content.error_code}});break}case"web_search_tool_result":{if(Array.isArray(C.content)){_.push({type:"tool-result",toolCallId:C.tool_use_id,toolName:m.toCustomToolName("web_search"),result:C.content.map(E=>{var M;return{url:E.url,title:E.title,pageAge:(M=E.page_age)!=null?M:null,encryptedContent:E.encrypted_content,type:E.type}})});for(let E of C.content)_.push({type:"source",sourceType:"url",id:this.generateId(),url:E.url,title:E.title,providerMetadata:{anthropic:{pageAge:(t=E.page_age)!=null?t:null}}})}else _.push({type:"tool-result",toolCallId:C.tool_use_id,toolName:m.toCustomToolName("web_search"),isError:!0,result:{type:"web_search_tool_result_error",errorCode:C.content.error_code}});break}case"code_execution_tool_result":{C.content.type==="code_execution_result"?_.push({type:"tool-result",toolCallId:C.tool_use_id,toolName:m.toCustomToolName("code_execution"),result:{type:C.content.type,stdout:C.content.stdout,stderr:C.content.stderr,return_code:C.content.return_code,content:(n=C.content.content)!=null?n:[]}}):C.content.type==="encrypted_code_execution_result"?_.push({type:"tool-result",toolCallId:C.tool_use_id,toolName:m.toCustomToolName("code_execution"),result:{type:C.content.type,encrypted_stdout:C.content.encrypted_stdout,stderr:C.content.stderr,return_code:C.content.return_code,content:(o=C.content.content)!=null?o:[]}}):C.content.type==="code_execution_tool_result_error"&&_.push({type:"tool-result",toolCallId:C.tool_use_id,toolName:m.toCustomToolName("code_execution"),isError:!0,result:{type:"code_execution_tool_result_error",errorCode:C.content.error_code}});break}case"bash_code_execution_tool_result":case"text_editor_code_execution_tool_result":{_.push({type:"tool-result",toolCallId:C.tool_use_id,toolName:m.toCustomToolName("code_execution"),result:C.content});break}case"tool_search_tool_result":{let E=R[C.tool_use_id];if(E==null){let M=m.toCustomToolName("tool_search_tool_bm25"),O=m.toCustomToolName("tool_search_tool_regex");M!=="tool_search_tool_bm25"?E="tool_search_tool_bm25":E="tool_search_tool_regex"}C.content.type==="tool_search_tool_search_result"?_.push({type:"tool-result",toolCallId:C.tool_use_id,toolName:m.toCustomToolName(E),result:C.content.tool_references.map(M=>({type:M.type,toolName:M.tool_name}))}):_.push({type:"tool-result",toolCallId:C.tool_use_id,toolName:m.toCustomToolName(E),isError:!0,result:{type:"tool_search_tool_result_error",errorCode:C.content.error_code}});break}}return{content:_,finishReason:{unified:Tee({finishReason:w.stop_reason,isJsonResponseFromTool:I}),raw:(s=w.stop_reason)!=null?s:void 0},usage:$Oe({usage:w.usage}),request:{body:l},response:{id:(i=w.id)!=null?i:void 0,modelId:(a=w.model)!=null?a:void 0,headers:b,body:T},warnings:u,providerMetadata:(()=>{var C,E,M,O,D;let N={usage:w.usage,cacheCreationInputTokens:(C=w.usage.cache_creation_input_tokens)!=null?C:null,stopSequence:(E=w.stop_sequence)!=null?E:null,iterations:w.usage.iterations?w.usage.iterations.map(q=>({type:q.type,inputTokens:q.input_tokens,outputTokens:q.output_tokens})):null,container:w.container?{expiresAt:w.container.expires_at,id:w.container.id,skills:(O=(M=w.container.skills)==null?void 0:M.map(q=>({type:q.type,skillId:q.skill_id,version:q.version})))!=null?O:null}:null,contextManagement:(D=jOe(w.context_management))!=null?D:null},W={anthropic:N};return h&&f!=="anthropic"&&(W[f]=N),W})()}}async doStream(r){var e,t;let{args:n,warnings:o,betas:s,usesJsonResponseTool:i,toolNameMapping:a,providerOptionsName:l,usedCustomProviderKey:u}=await this.getArgs({...r,stream:!0,userSuppliedBetas:await this.getBetasFromHeaders(r.headers)}),d=[...this.extractCitationDocuments(r.prompt)],p=BOe(n.tools),m=this.buildRequestUrl(!0),{responseHeaders:f,value:h}=await Ye({url:m,headers:await this.getHeaders({betas:s,headers:r.headers}),body:this.transformRequestBody(n,s),failedResponseHandler:DOe,successfulResponseHandler:On(Q8t),abortSignal:r.abortSignal,fetch:this.config.fetch}),y={unified:"other",raw:void 0},v={input_tokens:0,output_tokens:0,cache_creation_input_tokens:0,cache_read_input_tokens:0,iterations:null},b={},w={},T={},_=null,k,R=null,I=null,C=null,E=!1,M,O=this.generateId,D=h.pipeThrough(new TransformStream({start(B){B.enqueue({type:"stream-start",warnings:o})},transform(B,F){var U,$,K,V,ce,we,oe,Ce,J,_e,ge,ve,H,Z;if(r.includeRawChunks&&F.enqueue({type:"raw",rawValue:B.rawValue}),!B.success){F.enqueue({type:"error",error:B.error});return}let X=B.value;switch(X.type){case"ping":return;case"content_block_start":{let z=X.content_block,Te=z.type;switch(M=Te,Te){case"text":{if(i)return;b[X.index]={type:"text"},F.enqueue({type:"text-start",id:String(X.index)});return}case"thinking":{b[X.index]={type:"reasoning"},F.enqueue({type:"reasoning-start",id:String(X.index)});return}case"redacted_thinking":{b[X.index]={type:"reasoning"},F.enqueue({type:"reasoning-start",id:String(X.index),providerMetadata:{anthropic:{redactedData:z.data}}});return}case"compaction":{b[X.index]={type:"text"},F.enqueue({type:"text-start",id:String(X.index),providerMetadata:{anthropic:{type:"compaction"}}});return}case"tool_use":{if(i&&z.name==="json")E=!0,b[X.index]={type:"text"},F.enqueue({type:"text-start",id:String(X.index)});else{let fe=z.caller,ae=fe?{type:fe.type,toolId:"tool_id"in fe?fe.tool_id:void 0}:void 0,fo=z.input&&Object.keys(z.input).length>0?JSON.stringify(z.input):"";b[X.index]={type:"tool-call",toolCallId:z.id,toolName:z.name,input:fo,firstDelta:fo.length===0,...ae&&{caller:ae}},F.enqueue({type:"tool-input-start",id:z.id,toolName:z.name})}return}case"server_tool_use":{if(["web_fetch","web_search","code_execution","text_editor_code_execution","bash_code_execution"].includes(z.name)){let ue=z.name==="text_editor_code_execution"||z.name==="bash_code_execution"?"code_execution":z.name,fe=a.toCustomToolName(ue),ae=z.input!=null&&typeof z.input=="object"&&Object.keys(z.input).length>0?JSON.stringify(z.input):"";b[X.index]={type:"tool-call",toolCallId:z.id,toolName:fe,input:ae,providerExecuted:!0,...p&&ue==="code_execution"?{dynamic:!0}:{},firstDelta:!0,providerToolName:z.name},F.enqueue({type:"tool-input-start",id:z.id,toolName:fe,providerExecuted:!0,...p&&ue==="code_execution"?{dynamic:!0}:{}})}else if(z.name==="tool_search_tool_regex"||z.name==="tool_search_tool_bm25"){T[z.id]=z.name;let ue=a.toCustomToolName(z.name);b[X.index]={type:"tool-call",toolCallId:z.id,toolName:ue,input:"",providerExecuted:!0,firstDelta:!0,providerToolName:z.name},F.enqueue({type:"tool-input-start",id:z.id,toolName:ue,providerExecuted:!0})}return}case"web_fetch_tool_result":{z.content.type==="web_fetch_result"?(d.push({title:(U=z.content.content.title)!=null?U:z.content.url,mediaType:z.content.content.source.media_type}),F.enqueue({type:"tool-result",toolCallId:z.tool_use_id,toolName:a.toCustomToolName("web_fetch"),result:{type:"web_fetch_result",url:z.content.url,retrievedAt:z.content.retrieved_at,content:{type:z.content.content.type,title:z.content.content.title,citations:z.content.content.citations,source:{type:z.content.content.source.type,mediaType:z.content.content.source.media_type,data:z.content.content.source.data}}}})):z.content.type==="web_fetch_tool_result_error"&&F.enqueue({type:"tool-result",toolCallId:z.tool_use_id,toolName:a.toCustomToolName("web_fetch"),isError:!0,result:{type:"web_fetch_tool_result_error",errorCode:z.content.error_code}});return}case"web_search_tool_result":{if(Array.isArray(z.content)){F.enqueue({type:"tool-result",toolCallId:z.tool_use_id,toolName:a.toCustomToolName("web_search"),result:z.content.map(ue=>{var fe;return{url:ue.url,title:ue.title,pageAge:(fe=ue.page_age)!=null?fe:null,encryptedContent:ue.encrypted_content,type:ue.type}})});for(let ue of z.content)F.enqueue({type:"source",sourceType:"url",id:O(),url:ue.url,title:ue.title,providerMetadata:{anthropic:{pageAge:($=ue.page_age)!=null?$:null}}})}else F.enqueue({type:"tool-result",toolCallId:z.tool_use_id,toolName:a.toCustomToolName("web_search"),isError:!0,result:{type:"web_search_tool_result_error",errorCode:z.content.error_code}});return}case"code_execution_tool_result":{z.content.type==="code_execution_result"?F.enqueue({type:"tool-result",toolCallId:z.tool_use_id,toolName:a.toCustomToolName("code_execution"),result:{type:z.content.type,stdout:z.content.stdout,stderr:z.content.stderr,return_code:z.content.return_code,content:(K=z.content.content)!=null?K:[]}}):z.content.type==="encrypted_code_execution_result"?F.enqueue({type:"tool-result",toolCallId:z.tool_use_id,toolName:a.toCustomToolName("code_execution"),result:{type:z.content.type,encrypted_stdout:z.content.encrypted_stdout,stderr:z.content.stderr,return_code:z.content.return_code,content:(V=z.content.content)!=null?V:[]}}):z.content.type==="code_execution_tool_result_error"&&F.enqueue({type:"tool-result",toolCallId:z.tool_use_id,toolName:a.toCustomToolName("code_execution"),isError:!0,result:{type:"code_execution_tool_result_error",errorCode:z.content.error_code}});return}case"bash_code_execution_tool_result":case"text_editor_code_execution_tool_result":{F.enqueue({type:"tool-result",toolCallId:z.tool_use_id,toolName:a.toCustomToolName("code_execution"),result:z.content});return}case"tool_search_tool_result":{let ue=T[z.tool_use_id];if(ue==null){let fe=a.toCustomToolName("tool_search_tool_bm25"),ae=a.toCustomToolName("tool_search_tool_regex");fe!=="tool_search_tool_bm25"?ue="tool_search_tool_bm25":ue="tool_search_tool_regex"}z.content.type==="tool_search_tool_search_result"?F.enqueue({type:"tool-result",toolCallId:z.tool_use_id,toolName:a.toCustomToolName(ue),result:z.content.tool_references.map(fe=>({type:fe.type,toolName:fe.tool_name}))}):F.enqueue({type:"tool-result",toolCallId:z.tool_use_id,toolName:a.toCustomToolName(ue),isError:!0,result:{type:"tool_search_tool_result_error",errorCode:z.content.error_code}});return}case"mcp_tool_use":{w[z.id]={type:"tool-call",toolCallId:z.id,toolName:z.name,input:JSON.stringify(z.input),providerExecuted:!0,dynamic:!0,providerMetadata:{anthropic:{type:"mcp-tool-use",serverName:z.server_name}}},F.enqueue(w[z.id]);return}case"mcp_tool_result":{F.enqueue({type:"tool-result",toolCallId:z.tool_use_id,toolName:w[z.tool_use_id].toolName,isError:z.is_error,result:z.content,dynamic:!0,providerMetadata:w[z.tool_use_id].providerMetadata});return}default:{let ue=Te;throw new Error(`Unsupported content block type: ${ue}`)}}}case"content_block_stop":{if(b[X.index]!=null){let z=b[X.index];switch(z.type){case"text":{F.enqueue({type:"text-end",id:String(X.index)});break}case"reasoning":{F.enqueue({type:"reasoning-end",id:String(X.index)});break}case"tool-call":if(!(i&&z.toolName==="json")){F.enqueue({type:"tool-input-end",id:z.toolCallId});let ue=z.input===""?"{}":z.input;if(z.providerToolName==="code_execution")try{let fe=JSON.parse(ue);fe!=null&&typeof fe=="object"&&"code"in fe&&!("type"in fe)&&(ue=JSON.stringify({type:"programmatic-tool-call",...fe}))}catch{}F.enqueue({type:"tool-call",toolCallId:z.toolCallId,toolName:z.toolName,input:ue,providerExecuted:z.providerExecuted,...p&&z.providerToolName==="code_execution"?{dynamic:!0}:{},...z.caller&&{providerMetadata:{anthropic:{caller:z.caller}}}})}break}delete b[X.index]}M=void 0;return}case"content_block_delta":{let z=X.delta.type;switch(z){case"text_delta":{if(i)return;F.enqueue({type:"text-delta",id:String(X.index),delta:X.delta.text});return}case"thinking_delta":{F.enqueue({type:"reasoning-delta",id:String(X.index),delta:X.delta.thinking});return}case"signature_delta":{M==="thinking"&&F.enqueue({type:"reasoning-delta",id:String(X.index),delta:"",providerMetadata:{anthropic:{signature:X.delta.signature}}});return}case"compaction_delta":{X.delta.content!=null&&F.enqueue({type:"text-delta",id:String(X.index),delta:X.delta.content});return}case"input_json_delta":{let Te=b[X.index],ue=X.delta.partial_json;if(ue.length===0)return;if(E){if(Te?.type!=="text")return;F.enqueue({type:"text-delta",id:String(X.index),delta:ue})}else{if(Te?.type!=="tool-call")return;Te.firstDelta&&(Te.providerToolName==="bash_code_execution"||Te.providerToolName==="text_editor_code_execution")&&(ue=`{"type": "${Te.providerToolName}",${ue.substring(1)}`),F.enqueue({type:"tool-input-delta",id:Te.toolCallId,delta:ue}),Te.input+=ue,Te.firstDelta=!1}return}case"citations_delta":{let Te=X.delta.citation,ue=zOe(Te,d,O);ue&&F.enqueue(ue);return}default:{let Te=z;throw new Error(`Unsupported delta type: ${Te}`)}}}case"message_start":{if(v.input_tokens=X.message.usage.input_tokens,v.cache_read_input_tokens=(ce=X.message.usage.cache_read_input_tokens)!=null?ce:0,v.cache_creation_input_tokens=(we=X.message.usage.cache_creation_input_tokens)!=null?we:0,k={...X.message.usage},R=(oe=X.message.usage.cache_creation_input_tokens)!=null?oe:null,X.message.container!=null&&(C={expiresAt:X.message.container.expires_at,id:X.message.container.id,skills:null}),X.message.stop_reason!=null&&(y={unified:Tee({finishReason:X.message.stop_reason,isJsonResponseFromTool:E}),raw:X.message.stop_reason}),F.enqueue({type:"response-metadata",id:(Ce=X.message.id)!=null?Ce:void 0,modelId:(J=X.message.model)!=null?J:void 0}),X.message.content!=null)for(let z=0;z<X.message.content.length;z++){let Te=X.message.content[z];if(Te.type==="tool_use"){let ue=Te.caller,fe=ue?{type:ue.type,toolId:"tool_id"in ue?ue.tool_id:void 0}:void 0;F.enqueue({type:"tool-input-start",id:Te.id,toolName:Te.name});let ae=JSON.stringify((_e=Te.input)!=null?_e:{});F.enqueue({type:"tool-input-delta",id:Te.id,delta:ae}),F.enqueue({type:"tool-input-end",id:Te.id}),F.enqueue({type:"tool-call",toolCallId:Te.id,toolName:Te.name,input:ae,...fe&&{providerMetadata:{anthropic:{caller:fe}}}})}}return}case"message_delta":{X.usage.input_tokens!=null&&v.input_tokens!==X.usage.input_tokens&&(v.input_tokens=X.usage.input_tokens),v.output_tokens=X.usage.output_tokens,X.usage.cache_read_input_tokens!=null&&(v.cache_read_input_tokens=X.usage.cache_read_input_tokens),X.usage.cache_creation_input_tokens!=null&&(v.cache_creation_input_tokens=X.usage.cache_creation_input_tokens,R=X.usage.cache_creation_input_tokens),X.usage.iterations!=null&&(v.iterations=X.usage.iterations),y={unified:Tee({finishReason:X.delta.stop_reason,isJsonResponseFromTool:E}),raw:(ge=X.delta.stop_reason)!=null?ge:void 0},I=(ve=X.delta.stop_sequence)!=null?ve:null,C=X.delta.container!=null?{expiresAt:X.delta.container.expires_at,id:X.delta.container.id,skills:(Z=(H=X.delta.container.skills)==null?void 0:H.map(z=>({type:z.type,skillId:z.skill_id,version:z.version})))!=null?Z:null}:null,X.context_management&&(_=jOe(X.context_management)),k={...k,...X.usage};return}case"message_stop":{let z={usage:k??null,cacheCreationInputTokens:R,stopSequence:I,iterations:v.iterations?v.iterations.map(ue=>({type:ue.type,inputTokens:ue.input_tokens,outputTokens:ue.output_tokens})):null,container:C,contextManagement:_},Te={anthropic:z};u&&l!=="anthropic"&&(Te[l]=z),F.enqueue({type:"finish",finishReason:y,usage:$Oe({usage:v,rawUsage:k}),providerMetadata:Te});return}case"error":{F.enqueue({type:"error",error:X.error});return}default:{let z=X;throw new Error(`Unsupported chunk type: ${z}`)}}}})),[N,W]=D.tee(),q=N.getReader();try{await q.read();let B=await q.read();if(((e=B.value)==null?void 0:e.type)==="raw"&&(B=await q.read()),((t=B.value)==null?void 0:t.type)==="error"){let F=B.value.error;throw new $t({message:F.message,url:m,requestBodyValues:n,statusCode:F.type==="overloaded_error"?529:500,responseHeaders:f,responseBody:JSON.stringify(F),isRetryable:F.type==="overloaded_error"})}}finally{q.cancel().catch(()=>{}),q.releaseLock()}return{stream:W,request:{body:n},response:{headers:f}}}};qJt=G(()=>j(c.object({command:c.string(),restart:c.boolean().optional()}))),GJt=et({id:"anthropic.bash_20241022",inputSchema:qJt}),VJt=G(()=>j(c.object({command:c.string(),restart:c.boolean().optional()}))),HJt=et({id:"anthropic.bash_20250124",inputSchema:VJt}),WJt=G(()=>j(c.object({action:c.enum(["key","type","mouse_move","left_click","left_click_drag","right_click","middle_click","double_click","screenshot","cursor_position"]),coordinate:c.array(c.number().int()).optional(),text:c.string().optional()}))),KJt=et({id:"anthropic.computer_20241022",inputSchema:WJt}),JJt=G(()=>j(c.object({action:c.enum(["key","hold_key","type","cursor_position","mouse_move","left_mouse_down","left_mouse_up","left_click","left_click_drag","right_click","middle_click","double_click","triple_click","scroll","wait","screenshot"]),coordinate:c.tuple([c.number().int(),c.number().int()]).optional(),duration:c.number().optional(),scroll_amount:c.number().optional(),scroll_direction:c.enum(["up","down","left","right"]).optional(),start_coordinate:c.tuple([c.number().int(),c.number().int()]).optional(),text:c.string().optional()}))),ZJt=et({id:"anthropic.computer_20250124",inputSchema:JJt}),XJt=G(()=>j(c.object({action:c.enum(["key","hold_key","type","cursor_position","mouse_move","left_mouse_down","left_mouse_up","left_click","left_click_drag","right_click","middle_click","double_click","triple_click","scroll","wait","screenshot","zoom"]),coordinate:c.tuple([c.number().int(),c.number().int()]).optional(),duration:c.number().optional(),region:c.tuple([c.number().int(),c.number().int(),c.number().int(),c.number().int()]).optional(),scroll_amount:c.number().optional(),scroll_direction:c.enum(["up","down","left","right"]).optional(),start_coordinate:c.tuple([c.number().int(),c.number().int()]).optional(),text:c.string().optional()}))),YJt=et({id:"anthropic.computer_20251124",inputSchema:XJt}),QJt=G(()=>j(c.discriminatedUnion("command",[c.object({command:c.literal("view"),path:c.string(),view_range:c.tuple([c.number(),c.number()]).optional()}),c.object({command:c.literal("create"),path:c.string(),file_text:c.string()}),c.object({command:c.literal("str_replace"),path:c.string(),old_str:c.string(),new_str:c.string()}),c.object({command:c.literal("insert"),path:c.string(),insert_line:c.number(),insert_text:c.string()}),c.object({command:c.literal("delete"),path:c.string()}),c.object({command:c.literal("rename"),old_path:c.string(),new_path:c.string()})]))),e9t=et({id:"anthropic.memory_20250818",inputSchema:QJt}),t9t=G(()=>j(c.object({command:c.enum(["view","create","str_replace","insert","undo_edit"]),path:c.string(),file_text:c.string().optional(),insert_line:c.number().int().optional(),new_str:c.string().optional(),insert_text:c.string().optional(),old_str:c.string().optional(),view_range:c.array(c.number().int()).optional()}))),r9t=et({id:"anthropic.text_editor_20241022",inputSchema:t9t}),n9t=G(()=>j(c.object({command:c.enum(["view","create","str_replace","insert","undo_edit"]),path:c.string(),file_text:c.string().optional(),insert_line:c.number().int().optional(),new_str:c.string().optional(),insert_text:c.string().optional(),old_str:c.string().optional(),view_range:c.array(c.number().int()).optional()}))),o9t=et({id:"anthropic.text_editor_20250124",inputSchema:n9t}),s9t=G(()=>j(c.object({command:c.enum(["view","create","str_replace","insert"]),path:c.string(),file_text:c.string().optional(),insert_line:c.number().int().optional(),new_str:c.string().optional(),insert_text:c.string().optional(),old_str:c.string().optional(),view_range:c.array(c.number().int()).optional()}))),i9t=et({id:"anthropic.text_editor_20250429",inputSchema:s9t}),a9t=G(()=>j(c.array(c.object({type:c.literal("tool_reference"),toolName:c.string()})))),c9t=G(()=>j(c.object({query:c.string(),limit:c.number().optional()}))),l9t=$e({id:"anthropic.tool_search_bm25_20251119",inputSchema:c9t,outputSchema:a9t,supportsDeferredResults:!0}),u9t=(r={})=>l9t(r),d9t={bash_20241022:GJt,bash_20250124:HJt,codeExecution_20250522:kJt,codeExecution_20250825:IJt,codeExecution_20260120:OJt,computer_20241022:KJt,computer_20250124:ZJt,computer_20251124:YJt,memory_20250818:e9t,textEditor_20241022:r9t,textEditor_20250124:o9t,textEditor_20250429:i9t,textEditor_20250728:sJt,webFetch_20250910:wJt,webFetch_20260209:xJt,webSearch_20250305:fJt,webSearch_20260209:uJt,toolSearchRegex_20251119:LJt,toolSearchBm25_20251119:u9t};p9t=IA()});var ZOe,Ihn,Phn,Mhn,Ohn,_ee,m9t,JOe,Nhn,Dhn,Fhn,Uhn,Eee=A(()=>{ZOe={},Ihn=globalThis.crypto,Phn=globalThis.ReadableStream||class{},Mhn=globalThis.URL,Ohn=globalThis.URLSearchParams,_ee=r=>{try{return JSON.stringify(r,null,2)}catch{return String(r)}};_ee.custom=Symbol.for("nodejs.util.inspect.custom");_ee.colors={};_ee.styles={};m9t=globalThis.TextDecoder,JOe=globalThis.TextEncoder,Nhn=globalThis.performance||{now:()=>Date.now()},Dhn=globalThis.Buffer||class extends Uint8Array{static from(e,t){if(typeof e=="string"){let n=(t||"utf8").toLowerCase();if(n==="base64"){let o=atob(e),s=new Uint8Array(o.length);for(let i=0;i<o.length;i++)s[i]=o.charCodeAt(i);return s}if(n==="hex"){let o=new Uint8Array(e.length/2);for(let s=0;s<e.length;s+=2)o[s/2]=parseInt(e.substr(s,2),16);return o}return new JOe().encode(e)}return new Uint8Array(e)}static alloc(e){return new Uint8Array(e)}static isBuffer(e){return e instanceof Uint8Array}static concat(e){let t=e.reduce((s,i)=>s+i.length,0),n=new Uint8Array(t),o=0;for(let s of e)n.set(s,o),o+=s.length;return n}static byteLength(e,t){return t==="base64"?Math.ceil(e.length*3/4):new JOe().encode(e).length}toString(e){let t=(e||"utf8").toLowerCase();if(t==="hex")return Array.from(new Uint8Array(this.buffer,this.byteOffset,this.byteLength)).map(n=>n.toString(16).padStart(2,"0")).join("");if(t==="base64"){let n="";for(let o=0;o<this.length;o++)n+=String.fromCharCode(this[o]);return btoa(n)}return new m9t().decode(this)}},Fhn=globalThis.clearTimeout,Uhn=globalThis.clearInterval});function XOe(r){return G8("sha256",v9t).update(r).digest("hex")}function x9t(r){let e=r.replace(/-/g,"").slice(0,32).padEnd(32,"0");return`${e.slice(0,8)}-${e.slice(8,12)}-${e.slice(12,16)}-${e.slice(16,20)}-${e.slice(20,32)}`}function PA(r){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(r)}function bB(r){return JSON.stringify({device_id:r.deviceId,account_uuid:r.accountUuid,session_id:r.sessionId})}function Cee(r){if(typeof r!="string")return null;try{let e=JSON.parse(r);return typeof e.device_id!="string"||!/^[0-9a-f]{64}$/i.test(e.device_id)||typeof e.account_uuid!="string"||!PA(e.account_uuid)||typeof e.session_id!="string"||!PA(e.session_id)?null:{deviceId:e.device_id,accountUuid:e.account_uuid,sessionId:e.session_id,metadataUserId:bB({deviceId:e.device_id,accountUuid:e.account_uuid,sessionId:e.session_id})}}catch{return null}}function TB(r,e){let t=Cee(e?.existingUserId);if(t)return e?.preferredSessionId&&PA(e.preferredSessionId)?{deviceId:t.deviceId,accountUuid:t.accountUuid,sessionId:e.preferredSessionId,metadataUserId:bB({deviceId:t.deviceId,accountUuid:t.accountUuid,sessionId:e.preferredSessionId})}:t;let n=Date.now(),o=r||"default",s=Nv.get(o);if(s&&s.expiresAt>n)return e?.preferredSessionId&&PA(e.preferredSessionId)?{deviceId:s.deviceId,accountUuid:s.accountUuid,sessionId:e.preferredSessionId,metadataUserId:bB({deviceId:s.deviceId,accountUuid:s.accountUuid,sessionId:e.preferredSessionId})}:s;let i=XOe(`${o}:device`),a=x9t(XOe(`${o}:account`)),l=e?.preferredSessionId&&PA(e.preferredSessionId)?e.preferredSessionId:Fe(),u={deviceId:i,accountUuid:a,sessionId:l,metadataUserId:bB({deviceId:i,accountUuid:a,sessionId:l}),expiresAt:n+h9t};return T9t(n),Nv.set(o,u),u}function b9t(r=Date.now()){let e=0;for(let[t,n]of Nv.entries())n.expiresAt<=r&&(Nv.delete(t),e+=1);return e}function T9t(r=Date.now()){for(b9t(r);Nv.size>=y9t;){let e=Nv.keys().next().value;if(!e)break;Nv.delete(e)}}function Lw(r){let e=r?.match(/cc_version=([^;]+)/)?.[1]?.trim()||f9t,t=r?.match(/cc_entrypoint=([^;]+)/)?.[1]?.trim()||g9t;return`x-anthropic-billing-header: cc_version=${e}; cc_entrypoint=${t}; cch=00000;`}var YOe,QOe,f9t,g9t,Dw,h9t,y9t,v9t,Nv,Dv,kee,SB=A(()=>{"use strict";pr();Eee();YOe="9d1c250a-e61b-44d9-88ed-5944d1962f5e",QOe="https://api.anthropic.com/v1/oauth/token",f9t="2.1.87.6d6",g9t="sdk-cli",Dw="claude-cli/2.1.87 (external, sdk-cli)",h9t=36e5,y9t=1024,v9t="neurolink-claude-code-identity-v1",Nv=new Map;Dv=["oauth-2025-04-20","claude-code-20250219","context-management-2025-06-27","prompt-caching-scope-2026-01-05","advanced-tool-use-2025-11-20","effort-2025-11-24"],kee="mcp_"});function E9t(){return Object.values(eNe)}function MA(r,e){let t=S9t[e];return t.includes("*")?E9t().includes(r):t.includes(r)}function C9t(r){return _9t[r]}function k9t(r){return w9t[r]}var eNe,S9t,w9t,_9t,wB,_B,Ree=A(()=>{"use strict";xr();eNe=(u=>(u.CLAUDE_3_HAIKU="claude-3-haiku-20240307",u.CLAUDE_3_5_HAIKU="claude-3-5-haiku-20241022",u.CLAUDE_3_5_SONNET="claude-3-5-sonnet-20241022",u.CLAUDE_3_5_SONNET_V2="claude-3-5-sonnet-v2-20241022",u.CLAUDE_SONNET_4="claude-sonnet-4-20250514",u.CLAUDE_SONNET_4_6="claude-sonnet-4-6",u.CLAUDE_3_OPUS="claude-3-opus-20240229",u.CLAUDE_OPUS_4="claude-opus-4-20250514",u.CLAUDE_OPUS_4_6="claude-opus-4-6",u))(eNe||{}),S9t={free:["claude-3-haiku-20240307","claude-3-5-haiku-20241022"],pro:["claude-3-haiku-20240307","claude-3-5-haiku-20241022","claude-3-5-sonnet-20241022","claude-3-5-sonnet-v2-20241022","claude-sonnet-4-20250514","claude-sonnet-4-6"],max:["*"],max_5:["*"],max_20:["*"],api:["*"]},w9t={"claude-3-haiku-20240307":{displayName:"Claude 3 Haiku",contextWindow:2e5,maxOutputTokens:4096,supportsVision:!0,supportsExtendedThinking:!1,supportsToolUse:!0,supportsStreaming:!0,deprecated:!0,family:"haiku",description:"Fast and efficient model for simple tasks"},"claude-3-5-haiku-20241022":{displayName:"Claude 3.5 Haiku",contextWindow:2e5,maxOutputTokens:8192,supportsVision:!1,supportsExtendedThinking:!1,supportsToolUse:!0,supportsStreaming:!0,deprecated:!1,family:"haiku",description:"Improved fast model with better performance"},"claude-3-5-sonnet-20241022":{displayName:"Claude 3.5 Sonnet",contextWindow:2e5,maxOutputTokens:8192,supportsVision:!0,supportsExtendedThinking:!1,supportsToolUse:!0,supportsStreaming:!0,deprecated:!1,family:"sonnet",description:"Balanced model for most tasks"},"claude-3-5-sonnet-v2-20241022":{displayName:"Claude 3.5 Sonnet V2",contextWindow:2e5,maxOutputTokens:8192,supportsVision:!0,supportsExtendedThinking:!1,supportsToolUse:!0,supportsStreaming:!0,deprecated:!1,family:"sonnet",description:"Updated Sonnet with improved capabilities"},"claude-sonnet-4-20250514":{displayName:"Claude Sonnet 4",contextWindow:2e5,maxOutputTokens:64e3,supportsVision:!0,supportsExtendedThinking:!0,supportsToolUse:!0,supportsStreaming:!0,deprecated:!1,family:"sonnet",description:"Latest Sonnet with extended thinking support"},"claude-3-opus-20240229":{displayName:"Claude 3 Opus",contextWindow:2e5,maxOutputTokens:4096,supportsVision:!0,supportsExtendedThinking:!1,supportsToolUse:!0,supportsStreaming:!0,deprecated:!0,family:"opus",description:"Legacy flagship model for complex tasks"},"claude-opus-4-20250514":{displayName:"Claude Opus 4",contextWindow:2e5,maxOutputTokens:64e3,supportsVision:!0,supportsExtendedThinking:!0,supportsToolUse:!0,supportsStreaming:!0,deprecated:!1,family:"opus",description:"Latest flagship model with advanced reasoning"},"claude-sonnet-4-6":{displayName:"Claude Sonnet 4.6",contextWindow:1e6,maxOutputTokens:64e3,supportsVision:!0,supportsExtendedThinking:!0,supportsToolUse:!0,supportsStreaming:!0,deprecated:!1,family:"sonnet",description:"Claude 4.6 Sonnet with 1M context window"},"claude-opus-4-6":{displayName:"Claude Opus 4.6",contextWindow:1e6,maxOutputTokens:64e3,supportsVision:!0,supportsExtendedThinking:!0,supportsToolUse:!0,supportsStreaming:!0,deprecated:!1,family:"opus",description:"Claude 4.6 Opus flagship with 1M context window"}},_9t={free:"claude-3-5-haiku-20241022",pro:"claude-sonnet-4-20250514",max:"claude-opus-4-20250514",max_5:"claude-opus-4-20250514",max_20:"claude-opus-4-20250514",api:"claude-sonnet-4-20250514"};wB=C9t,_B=k9t});function R9t(r){try{if(typeof r=="string"||r instanceof URL)return new URL(r.toString());if(r instanceof Request)return new URL(r.url)}catch{return null}return null}function A9t(r,e){let t=new Headers;if(r instanceof Request&&r.headers.forEach((n,o)=>{t.set(o,n)}),!e?.headers)return t;if(e.headers instanceof Headers)return e.headers.forEach((n,o)=>{t.set(o,n)}),t;if(Array.isArray(e.headers)){for(let[n,o]of e.headers)typeof o<"u"&&t.set(n,String(o));return t}for(let[n,o]of Object.entries(e.headers))typeof o<"u"&&t.set(n,String(o));return t}function I9t(r,e,t,n){let o=(r.get("anthropic-beta")??"").split(",").map(i=>i.trim()).filter(Boolean),s=["oauth-2025-04-20"];n||s.push(...t?Dv.filter(i=>i!=="oauth-2025-04-20"):[]),r.set("authorization",`Bearer ${e()}`),r.set("anthropic-beta",[...new Set([...o,...s])].join(",")),r.delete("x-api-key"),!n&&(r.set("user-agent",Dw),r.set("anthropic-version","2023-06-01"),r.set("accept","application/json"),r.set("anthropic-dangerous-direct-browser-access","true"),r.set("x-app","cli"),r.set("connection","keep-alive"),r.set("x-stainless-retry-count","0"),r.set("x-stainless-runtime-version","v24.3.0"),r.set("x-stainless-package-version","0.74.0"),r.set("x-stainless-runtime","node"),r.set("x-stainless-lang","js"),r.set("x-stainless-arch",process.arch==="x64"?"x64":process.arch),r.set("x-stainless-os",process.platform==="darwin"?"MacOS":process.platform==="win32"?"Windows":"Linux"),r.set("x-stainless-timeout","600"))}async function P9t(r,e){let t=r instanceof Request?r:void 0,n=e?.method??t?.method,o=e?.body;return o===void 0&&t&&n!=="GET"&&n!=="HEAD"&&((t.headers.get("content-type")??"").includes("application/json")?o=await t.clone().text()||void 0:o=t.clone().body??void 0),{sourceRequest:t,method:n,body:o??void 0}}function M9t(r,e,t,n){let o=JSON.parse(r);n&&(o.tools&&Array.isArray(o.tools)&&(o.tools=o.tools.map(u=>({...u,name:u.name?`${kee}${u.name}`:u.name}))),o.messages&&Array.isArray(o.messages)&&(o.messages=o.messages.map(u=>(u.content&&Array.isArray(u.content)&&(u.content=u.content.map(d=>{let p=d;return p.type==="tool_use"&&p.name?{...p,name:`${kee}${p.name}`}:d})),u)))),(o.tool_choice?.type==="any"||o.tool_choice?.type==="tool")&&delete o.thinking;let s={type:"text",text:"You are a Claude agent, built on Anthropic's Claude Agent SDK."};if(o.system){if(typeof o.system=="string"&&(o.system=[{type:"text",text:o.system}]),Array.isArray(o.system)){let u=o.system.findIndex(f=>typeof f.text=="string"&&f.text.includes("x-anthropic-billing-header")),d=o.system.findIndex(f=>typeof f.text=="string"&&f.text.includes("Claude Agent SDK")),p={type:"text",text:Lw(o.system[u]?.text)},m=[u,d].filter(f=>f>=0).sort((f,h)=>h-f);for(let f of m)o.system.splice(f,1);o.system=[...o.system,p,s]}}else{let u={type:"text",text:Lw()};o.system=[u,s]}let i=t(),a=o.metadata?.user_id??i.substring(0,Math.min(20,i.length)),l=TB(a,{existingUserId:o.metadata?.user_id,preferredSessionId:e.get("x-claude-code-session-id")??void 0});return o.metadata={...o.metadata,user_id:l.metadataUserId},e.set("x-claude-code-session-id",l.sessionId),JSON.stringify(o)}async function O9t(r){try{let{propagation:e,context:t}=await Promise.resolve().then(()=>(Ht(),hq)),n={};e.inject(t.active(),n);for(let[o,s]of Object.entries(n))r.has(o)||r.set(o,s)}catch{}}function N9t(r){if(!r.body)return r;let e=r.body.getReader(),t=new TextDecoder,n=new TextEncoder,o=new Headers(r.headers);o.delete("content-length");let s="",i=new ReadableStream({async pull(a){let{done:l,value:u}=await e.read();if(l){s&&(a.enqueue(n.encode(s.replace(/"name"\s*:\s*"mcp_([^"]+)"/g,'"name": "$1"'))),s=""),a.close();return}let d=t.decode(u,{stream:!0}),p=s+d,m=p.match(/"name"\s*:\s*"mcp_[^"]*$/),f;if(m&&m.index!==void 0)f=p.slice(0,m.index),s=p.slice(m.index);else{let y=p.lastIndexOf('"'),v=y>=0?y+1:p.length;f=p.slice(0,v),s=p.slice(v)}let h=f.replace(/"name"\s*:\s*"mcp_([^"]+)"/g,'"name": "$1"');h&&a.enqueue(n.encode(h))},async cancel(a){await e.cancel(a)}});return new Response(i,{status:r.status,statusText:r.statusText,headers:o})}async function D9t(r,e,t,n,o,s){let i=R9t(r);i&&i.pathname==="/v1/messages"&&!i.searchParams.has("beta")&&i.searchParams.set("beta","true");let a=A9t(r,e);I9t(a,t,n,s),g.debug("[createOAuthFetch] Making OAuth request:",{url:i?.toString()||r.toString(),hasAuthorization:a.has("authorization"),authType:"Bearer",anthropicBeta:a.get("anthropic-beta"),userAgent:a.get("user-agent")});let{sourceRequest:l,method:u,body:d}=await P9t(r,e),p=d;if(p&&typeof p=="string"&&!s)try{p=M9t(p,a,t,o)}catch{}a.delete("content-length"),await O9t(a);let f=await ut()(i?.toString()||(r instanceof Request?r.url:r.toString()),{...e,method:u,body:p,signal:e?.signal??l?.signal,headers:a});return o?N9t(f):f}function tNe(r,e=!0,t=!1,n=!1){return async(o,s)=>D9t(o,s,r,e,t,n)}var rNe=A(()=>{"use strict";SB();Q();qo()});var sNe={};le(sNe,{ANTHROPIC_BETA_HEADERS:()=>Iee,AnthropicProvider:()=>EB,ModelAccessError:()=>YC,default:()=>z9t,getModelCapabilities:()=>_B,getRecommendedModelForTier:()=>wB,isModelAvailableForTier:()=>MA});var Iee,nNe,Aee,L9t,oNe,F9t,U9t,$9t,EB,z9t,iNe=A(()=>{"use strict";wee();Ht();Tn();dn();Tu();Kr();SB();xc();Ree();rNe();qo();xr();Q();Nu();td();Qa();od();nc();oT();Ree();Iee={"anthropic-beta":["claude-code-20250219","fine-grained-tool-streaming-2025-05-14"].join(",")},nNe=()=>Sc(PIe()),Aee=()=>Zl("ANTHROPIC_MODEL","claude-sonnet-4-6"),L9t=st.getTracer("neurolink.provider.anthropic"),oNe=()=>{try{let e=or(Rd(),".neurolink","anthropic-credentials.json");if(un(e)){let t=Ha(e,"utf-8"),n=JSON.parse(t);if(n.type==="oauth"&&n.oauth?.accessToken)return g.debug("[AnthropicProvider] Using OAuth token from stored credentials file"),n.oauth}}catch(e){g.debug("[AnthropicProvider] Failed to read stored credentials:",e)}let r=process.env.ANTHROPIC_OAUTH_TOKEN||process.env.CLAUDE_OAUTH_TOKEN;if(!r)return null;try{let e=JSON.parse(r);if(typeof e=="object"&&e.accessToken)return e;if(typeof e=="string")return{accessToken:e}}catch{}return{accessToken:r}},F9t=r=>{let e=process.env.ANTHROPIC_SUBSCRIPTION_TIER?.toLowerCase();if(e){let t=["free","pro","max","max_5","max_20","api"];if(t.includes(e))return g.debug("[detectSubscriptionTier] Using environment override",{tier:e}),e;g.warn("[detectSubscriptionTier] Invalid ANTHROPIC_SUBSCRIPTION_TIER",{value:e,validTiers:t})}if(r){let t=r.scopes??[],n="pro";return t.includes("max_20")?n="max_20":t.includes("max_5")?n="max_5":t.includes("max")&&(n="max"),g.debug("[detectSubscriptionTier] Detected from OAuth token",{tier:n,scopes:t}),n}return g.debug("[detectSubscriptionTier] No OAuth token, defaulting to API tier"),"api"},U9t=r=>{let e=process.env.ANTHROPIC_AUTH_METHOD?.toLowerCase();if(e==="api_key"||e==="apikey")return g.debug("[detectAuthMethod] Forced to api_key by ANTHROPIC_AUTH_METHOD env var"),"api_key";if(e==="oauth"){if(r)return g.debug("[detectAuthMethod] Forced to oauth by ANTHROPIC_AUTH_METHOD env var"),"oauth";g.warn("[detectAuthMethod] ANTHROPIC_AUTH_METHOD=oauth but no OAuth token found; falling through to auto-detection")}else e&&g.warn("[detectAuthMethod] Unrecognized ANTHROPIC_AUTH_METHOD value; falling through to auto-detection",{value:e});let t=r?"oauth":"api_key";return g.debug("[detectAuthMethod] Auth method resolved",{method:t,hasOAuthToken:!!r}),t},$9t=r=>{let e=n=>r instanceof Headers?r.get(n):r[n]||r[n.toLowerCase()]||null,t=n=>{if(!n)return;let o=parseInt(n,10);return isNaN(o)?void 0:o};return{requestsLimit:t(e("anthropic-ratelimit-requests-limit")),requestsRemaining:t(e("anthropic-ratelimit-requests-remaining")),requestsReset:e("anthropic-ratelimit-requests-reset")||void 0,tokensLimit:t(e("anthropic-ratelimit-tokens-limit")),tokensRemaining:t(e("anthropic-ratelimit-tokens-remaining")),tokensReset:e("anthropic-ratelimit-tokens-reset")||void 0,retryAfter:t(e("retry-after"))}},EB=class extends an{model;authMethod;subscriptionTier;enableBetaFeatures;oauthToken;lastResponseMetadata=null;usageInfo=null;refreshPromise;constructor(e,t,n,o){let s=!!(o?.apiKey&&!o?.oauthToken),i=s?null:(o?.oauthToken?{accessToken:o.oauthToken}:null)??n?.oauthToken??oNe(),a=s?"api_key":n?.authMethod??U9t(i),l=n?.subscriptionTier??(a==="oauth"?F9t(i):"api"),u=e||Aee(),d=u;!process.env.ANTHROPIC_BASE_URL&&l!=="api"&&!MA(u,l)&&(d=wB(l),g.warn("Model not available for subscription tier, using recommended model",{requestedModel:u,subscriptionTier:l,recommendedModel:d})),super(d,"anthropic",t),this.enableBetaFeatures=n?.enableBetaFeatures??!0,this.oauthToken=i,this.subscriptionTier=l,this.authMethod=a;let m=this.getAuthHeaders(),f;if(g.debug("[AnthropicProvider] Constructor - checking OAuth:",{authMethod:this.authMethod,hasOAuthToken:!!this.oauthToken,hasAccessToken:!!this.oauthToken?.accessToken}),this.authMethod==="oauth"&&this.oauthToken){g.debug("[AnthropicProvider] Creating OAuth fetch wrapper...");let h=this.oauthToken,y=tNe(()=>h.accessToken,this.enableBetaFeatures,!1,!0);f=IA({apiKey:"oauth-authenticated",fetch:y}),g.debug("[AnthropicProvider] Anthropic SDK created with OAuth fetch wrapper"),g.debug("Anthropic Provider initialized with OAuth",{modelName:this.modelName,provider:this.providerName,authMethod:this.authMethod,subscriptionTier:this.subscriptionTier,enableBetaFeatures:this.enableBetaFeatures,hasRefreshToken:!!this.oauthToken.refreshToken,tokenExpiry:this.oauthToken.expiresAt?new Date(this.oauthToken.expiresAt).toISOString():"none"})}else{let h=o?.apiKey??n?.apiKey??nNe();f=IA({apiKey:h,headers:m,...process.env.ANTHROPIC_BASE_URL&&{baseURL:process.env.ANTHROPIC_BASE_URL},fetch:ut()}),g.debug("Anthropic Provider initialized with API key",{modelName:this.modelName,provider:this.providerName,authMethod:this.authMethod,subscriptionTier:this.subscriptionTier,enableBetaFeatures:this.enableBetaFeatures})}this.model=f(this.modelName||Aee()),this.usageInfo={messagesUsed:0,messagesRemaining:-1,tokensUsed:0,tokensRemaining:-1,inputTokensUsed:0,outputTokensUsed:0,lastRequestTimestamp:0,isRateLimited:!1,requestCount:0,messageQuotaPercent:0,tokenQuotaPercent:0},g.debug("Anthropic Provider v2 initialized",{modelName:this.modelName,provider:this.providerName,authMethod:this.authMethod,subscriptionTier:this.subscriptionTier,enableBetaFeatures:this.enableBetaFeatures,betaFeatures:this.enableBetaFeatures?Iee["anthropic-beta"]:"disabled"})}getAuthHeaders(){let e={},t=!!process.env.ANTHROPIC_BASE_URL;return this.enableBetaFeatures&&(t?e["anthropic-beta"]=[...Dv,"fine-grained-tool-streaming-2025-05-14","context-1m-2025-08-07","interleaved-thinking-2025-05-14","redact-thinking-2026-02-12"].join(","):e["anthropic-beta"]=Iee["anthropic-beta"]),this.subscriptionTier!=="api"&&(e["x-subscription-tier"]=this.subscriptionTier),e}validateModelAccess(e){if(process.env.ANTHROPIC_BASE_URL||this.subscriptionTier==="api")return!0;let t=MA(e,this.subscriptionTier);return t||g.debug("[validateModelAccess] Model not available for tier",{model:e,tier:this.subscriptionTier}),t}getUsageInfo(){return this.usageInfo}areBetaFeaturesEnabled(){return this.enableBetaFeatures}getModelCapabilities(){return _B(this.modelName||this.getDefaultModel())}getSubscriptionTier(){return this.subscriptionTier}getAuthMethod(){return this.authMethod}async refreshAuthIfNeeded(){if(this.authMethod!=="oauth"||!this.oauthToken){g.debug("Token refresh not applicable for API key authentication");return}if(!this.oauthToken.expiresAt){g.debug("Token has no expiry information, assuming valid");return}let e=Date.now(),t=this.oauthToken.expiresAt<=e,n=this.oauthToken.expiresAt<=e+3e5;if(!t&&!n){g.debug("OAuth token is still valid",{expiresInMs:this.oauthToken.expiresAt-e});return}if(!this.oauthToken.refreshToken){if(t)throw new kn("OAuth token expired and no refresh token available. Please re-authenticate.",this.providerName);g.warn("OAuth token expiring soon but no refresh token available",{expiresInMs:this.oauthToken.expiresAt-e});return}if(this.refreshPromise){await this.refreshPromise;return}g.info("Refreshing OAuth token",{isExpired:t,expiresInMs:this.oauthToken.expiresAt-e});let o=this.oauthToken,s=o.refreshToken;this.refreshPromise=(async()=>{let a=new AbortController,l=setTimeout(()=>a.abort(),3e4),u=await fetch(QOe,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":Dw},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:s,client_id:YOe}),signal:a.signal});if(clearTimeout(l),!u.ok){let m=await u.text();throw new kn(`Failed to refresh OAuth token: ${u.status} ${m}`,this.providerName)}let d=await u.json();o.accessToken=d.access_token,o.refreshToken=d.refresh_token||o.refreshToken,o.expiresAt=d.expires_in?Date.now()+d.expires_in*1e3:void 0,o.tokenType=d.token_type||"Bearer";let p=o;try{let m=or(Rd(),".neurolink");un(m)||OC(m,{recursive:!0});let f=or(m,"anthropic-credentials.json"),h=`${f}.tmp`,v={...un(f)?JSON.parse(Ha(f,"utf-8")):{},type:"oauth",oauth:p,updatedAt:Date.now()};MC(h,JSON.stringify(v,null,2),{mode:384}),t3(h,f),g.debug("Refreshed OAuth credentials persisted to disk")}catch(m){g.warn("Failed to persist refreshed OAuth token to disk",{error:m instanceof Error?m.message:String(m)})}g.info("OAuth token refreshed successfully",{hasNewRefreshToken:!!d.refresh_token,expiresIn:d.expires_in})})();try{await this.refreshPromise}catch(i){throw i instanceof kn?i:new kn(`Failed to refresh OAuth token: ${i instanceof Error?i.message:String(i)}`,this.providerName)}finally{this.refreshPromise=void 0}}getLastResponseMetadata(){return this.lastResponseMetadata}updateResponseMetadata(e,t,n){this.lastResponseMetadata={rateLimit:$9t(e),requestId:t||(e instanceof Headers?e.get("x-request-id")||void 0:e["x-request-id"]),serverTiming:e instanceof Headers?e.get("server-timing")||void 0:e["server-timing"]};let o=this.lastResponseMetadata.rateLimit;this.usageInfo&&(this.usageInfo.requestCount++,this.usageInfo.messagesUsed++,this.usageInfo.lastRequestTimestamp=Date.now(),n&&(n.inputTokens!==void 0&&(this.usageInfo.inputTokensUsed+=n.inputTokens,this.usageInfo.tokensUsed+=n.inputTokens),n.outputTokens!==void 0&&(this.usageInfo.outputTokensUsed+=n.outputTokens,this.usageInfo.tokensUsed+=n.outputTokens)),o?.requestsRemaining!==void 0&&(this.usageInfo.messagesRemaining=o.requestsRemaining),o?.tokensRemaining!==void 0&&(this.usageInfo.tokensRemaining=o.tokensRemaining),o?.requestsLimit&&o.requestsLimit>0&&(this.usageInfo.messageQuotaPercent=Math.round((o.requestsLimit-(o.requestsRemaining??0))/o.requestsLimit*100)),o?.tokensLimit&&o.tokensLimit>0&&(this.usageInfo.tokenQuotaPercent=Math.round((o.tokensLimit-(o.tokensRemaining??0))/o.tokensLimit*100)),o?.retryAfter!==void 0?(this.usageInfo.isRateLimited=!0,this.usageInfo.rateLimitExpiresAt=Date.now()+o.retryAfter*1e3):(this.usageInfo.isRateLimited=!1,this.usageInfo.rateLimitExpiresAt=void 0)),o?.requestsRemaining!==void 0&&o.requestsRemaining<=5&&g.warn("Approaching Anthropic request rate limit",{remaining:o.requestsRemaining,limit:o.requestsLimit,reset:o.requestsReset}),o?.tokensRemaining!==void 0&&o.tokensLimit&&o.tokensRemaining<o.tokensLimit*.1&&g.warn("Approaching Anthropic token rate limit",{remaining:o.tokensRemaining,limit:o.tokensLimit,reset:o.tokensReset})}getProviderName(){return"anthropic"}getDefaultModel(){return Aee()}getAISDKModel(){return this.model}formatProviderError(e){if(e instanceof zr)return new Qo(`Request timed out after ${e.timeout}ms`,this.providerName);let t=e,n=typeof t?.message=="string"?t.message:"Unknown error";return n.includes("API_KEY_INVALID")||n.includes("Invalid API key")?new kn("Invalid Anthropic API key. Please check your ANTHROPIC_API_KEY environment variable.",this.providerName):n.includes("rate limit")||n.includes("too_many_requests")||n.includes("429")?new Za("Anthropic rate limit exceeded. Please try again later.",this.providerName):n.includes("ECONNRESET")||n.includes("ENOTFOUND")||n.includes("ECONNREFUSED")||n.includes("network")||n.includes("connection")?new Qo(`Connection error: ${n}`,this.providerName):n.includes("500")||n.includes("502")||n.includes("503")||n.includes("504")||n.includes("server error")?new ur(`Server error: ${n}`,this.providerName):new ur(`Anthropic error: ${n}`,this.providerName)}async generate(e,t){return await this.refreshAuthIfNeeded(),super.generate(e,t)}async executeStream(e,t){await this.refreshAuthIfNeeded(),this.validateStreamOptions(e);let n=this.getTimeout(e),o=fn(n,this.providerName,"stream");try{let s=!e.disableTools&&this.supportsTools(),i=s?e.tools||await this.getAllTools():{},a=await this.buildMessagesForStream(e),l=await this.getAISDKModelWithMiddleware(e),u=L9t.startSpan("neurolink.provider.streamText",{kind:er.CLIENT,attributes:{"gen_ai.system":"anthropic","gen_ai.request.model":tl(l,this.modelName||"unknown")}}),d,p;try{p=Gn({model:l,messages:a,temperature:e.temperature,maxOutputTokens:e.maxTokens,maxRetries:0,tools:i,stopWhen:bn(e.maxSteps||200),toolChoice:Vo(e,i,s),abortSignal:wn(e.abortSignal,o?.controller.signal),onError:y=>{d=y.error,g.error("Anthropic: Stream error",{error:y.error instanceof Error?y.error.message:String(y.error)})},experimental_repairToolCall:this.getToolCallRepairFn(e),experimental_telemetry:this.telemetryHandler.getTelemetryConfig(e),onStepFinish:({toolCalls:y,toolResults:v})=>{_n(this.neurolink?.getEventEmitter(),v),this.handleToolExecutionStorage(y,v,e,new Date).catch(b=>{g.warn("[AnthropicProvider] Failed to store tool executions",{provider:this.providerName,error:b instanceof Error?b.message:String(b)})})}})}catch(y){throw u.setStatus({code:be.ERROR,message:y instanceof Error?y.message:String(y)}),y instanceof Error&&u.recordException(y),u.end(),y}Promise.resolve(p.usage).then(y=>{u.setAttribute("gen_ai.usage.input_tokens",y.inputTokens||0),u.setAttribute("gen_ai.usage.output_tokens",y.outputTokens||0);let v=oo(this.providerName,this.modelName,{input:y.inputTokens||0,output:y.outputTokens||0,total:(y.inputTokens||0)+(y.outputTokens||0)});v&&v>0&&u.setAttribute("neurolink.cost",v)}).catch(()=>{}),Promise.resolve(p.finishReason).then(y=>{u.setAttribute("gen_ai.response.finish_reason",y||"unknown")}).catch(()=>{}),Promise.resolve(p.text).then(()=>{u.end()}).catch(y=>{u.setStatus({code:be.ERROR,message:y instanceof Error?y.message:String(y)}),u.end()}),o?.cleanup();let m=this.createTextStream(p,()=>d),f=[],h=[];return{stream:m,provider:this.providerName,model:this.modelName,toolCalls:f,toolResults:h}}catch(s){throw o?.cleanup(),this.handleProviderError(s)}}async isAvailable(){try{return oNe()||nNe(),!0}catch{return!1}}getModel(){return this.model}},z9t=EB});var aNe={};le(aNe,{Agent:()=>wZt,BedrockClient:()=>j9t,BedrockRuntimeClient:()=>Pee,Blob:()=>SZt,Client:()=>EZt,ConverseCommand:()=>Mee,ConverseStreamCommand:()=>CB,Cron:()=>oZt,Dispatcher:()=>CZt,File:()=>TZt,FlowProducer:()=>nZt,FormData:()=>bZt,GoogleAuth:()=>W9t,HTTPException:()=>dZt,Headers:()=>xZt,Hippocampus:()=>Z9t,HippocampusConfig:()=>X9t,Hono:()=>lZt,ImageFormat:()=>Uw,InvokeEndpointCommand:()=>V9t,InvokeEndpointWithResponseStreamCommand:()=>H9t,Job:()=>tZt,ListFoundationModelsCommand:()=>q9t,MockAgent:()=>AZt,Pool:()=>_Zt,Queue:()=>Q9t,QueueScheduler:()=>rZt,Request:()=>yZt,Response:()=>vZt,SageMakerRuntimeClient:()=>G9t,TextToSpeechClient:()=>J9t,VertexAI:()=>K9t,Worker:()=>eZt,convertToHtml:()=>cZt,cors:()=>uZt,createClient:()=>Y9t,default:()=>B9t,extractRawText:()=>aZt,fetch:()=>hZt,getGlobalDispatcher:()=>RZt,interceptors:()=>IZt,logger:()=>pZt,parseBuffer:()=>sZt,request:()=>PZt,secureHeaders:()=>mZt,selectCover:()=>iZt,setGlobalDispatcher:()=>kZt,streamSSE:()=>fZt,timeout:()=>gZt});var Fw,Hs,B9t,j9t,q9t,Pee,Mee,CB,Uw,G9t,V9t,H9t,W9t,K9t,J9t,Z9t,X9t,Y9t,Q9t,eZt,tZt,rZt,nZt,oZt,sZt,iZt,aZt,cZt,lZt,uZt,dZt,pZt,mZt,fZt,gZt,hZt,yZt,vZt,xZt,bZt,TZt,SZt,wZt,_Zt,EZt,CZt,kZt,RZt,AZt,IZt,PZt,Oee=A(()=>{Fw={get(r,e){return e==="__esModule"?!0:e==="default"?new Proxy({},{get:Fw.get}):new Proxy(function(...t){return new Proxy({},{get:Fw.get})},{get:Fw.get,apply(t,n,o){return new Proxy({},{get:Fw.get})},construct(t,n){return new Proxy({},{get:Fw.get})}})}},Hs=new Proxy({},Fw),B9t=Hs,{BedrockClient:j9t,ListFoundationModelsCommand:q9t,BedrockRuntimeClient:Pee,ConverseCommand:Mee,ConverseStreamCommand:CB,ImageFormat:Uw}=Hs,{SageMakerRuntimeClient:G9t,InvokeEndpointCommand:V9t,InvokeEndpointWithResponseStreamCommand:H9t}=Hs,{GoogleAuth:W9t,VertexAI:K9t,TextToSpeechClient:J9t}=Hs,{Hippocampus:Z9t,HippocampusConfig:X9t}=Hs,{createClient:Y9t}=Hs,{Queue:Q9t,Worker:eZt,Job:tZt,QueueScheduler:rZt,FlowProducer:nZt}=Hs,{Cron:oZt}=Hs,{parseBuffer:sZt,selectCover:iZt}=Hs,{extractRawText:aZt,convertToHtml:cZt}=Hs,{Hono:lZt}=Hs,{cors:uZt,HTTPException:dZt,logger:pZt,secureHeaders:mZt,streamSSE:fZt,timeout:gZt}=Hs,hZt=globalThis.fetch,yZt=globalThis.Request,vZt=globalThis.Response,xZt=globalThis.Headers,bZt=globalThis.FormData,TZt=globalThis.File,SZt=globalThis.Blob,wZt=Hs.Agent,_Zt=Hs.Pool,EZt=Hs.Client,CZt=Hs.Dispatcher,kZt=()=>{},RZt=()=>Hs,AZt=Hs.MockAgent,IZt={redirect:()=>r=>r,retry:()=>r=>r},PZt=async(r,e)=>{let t=await globalThis.fetch(r,e);return{statusCode:t.status,headers:Object.fromEntries(t.headers.entries()),body:{text:()=>t.text(),json:()=>t.json(),arrayBuffer:()=>t.arrayBuffer()}}}});function Lv(r,e,t){return{input:{text:r.input?.text||"",images:r.input?.images,content:r.input?.content,files:r.input?.files,csvFiles:r.input?.csvFiles,pdfFiles:r.input?.pdfFiles},csvOptions:r.csvOptions,systemPrompt:r.systemPrompt,conversationHistory:r.conversationMessages,provider:e,model:t,temperature:r.temperature,maxTokens:r.maxTokens,enableAnalytics:r.enableAnalytics,enableEvaluation:r.enableEvaluation,context:r.context,fileRegistry:r.fileRegistry}}var Nee=A(()=>{"use strict"});var cNe={};le(cNe,{Agent:()=>vXt,BedrockClient:()=>OZt,BedrockRuntimeClient:()=>DZt,Blob:()=>yXt,Client:()=>bXt,ConverseCommand:()=>LZt,ConverseStreamCommand:()=>FZt,Cron:()=>QZt,Dispatcher:()=>TXt,File:()=>hXt,FlowProducer:()=>YZt,FormData:()=>gXt,GoogleAuth:()=>jZt,HTTPException:()=>iXt,Headers:()=>fXt,Hippocampus:()=>VZt,HippocampusConfig:()=>HZt,Hono:()=>oXt,ImageFormat:()=>UZt,InvokeEndpointCommand:()=>zZt,InvokeEndpointWithResponseStreamCommand:()=>BZt,Job:()=>ZZt,ListFoundationModelsCommand:()=>NZt,MockAgent:()=>_Xt,Pool:()=>xXt,Queue:()=>KZt,QueueScheduler:()=>XZt,Request:()=>pXt,Response:()=>mXt,SageMakerRuntimeClient:()=>$Zt,TextToSpeechClient:()=>GZt,VertexAI:()=>qZt,Worker:()=>JZt,convertToHtml:()=>nXt,cors:()=>sXt,createClient:()=>WZt,default:()=>MZt,extractRawText:()=>rXt,fetch:()=>dXt,getGlobalDispatcher:()=>wXt,interceptors:()=>EXt,logger:()=>aXt,parseBuffer:()=>eXt,request:()=>CXt,secureHeaders:()=>cXt,selectCover:()=>tXt,setGlobalDispatcher:()=>SXt,streamSSE:()=>lXt,timeout:()=>uXt});var $w,Ws,MZt,OZt,NZt,DZt,LZt,FZt,UZt,$Zt,zZt,BZt,jZt,qZt,GZt,VZt,HZt,WZt,KZt,JZt,ZZt,XZt,YZt,QZt,eXt,tXt,rXt,nXt,oXt,sXt,iXt,aXt,cXt,lXt,uXt,dXt,pXt,mXt,fXt,gXt,hXt,yXt,vXt,xXt,bXt,TXt,SXt,wXt,_Xt,EXt,CXt,lNe=A(()=>{$w={get(r,e){return e==="__esModule"?!0:e==="default"?new Proxy({},{get:$w.get}):new Proxy(function(...t){return new Proxy({},{get:$w.get})},{get:$w.get,apply(t,n,o){return new Proxy({},{get:$w.get})},construct(t,n){return new Proxy({},{get:$w.get})}})}},Ws=new Proxy({},$w),MZt=Ws,{BedrockClient:OZt,ListFoundationModelsCommand:NZt,BedrockRuntimeClient:DZt,ConverseCommand:LZt,ConverseStreamCommand:FZt,ImageFormat:UZt}=Ws,{SageMakerRuntimeClient:$Zt,InvokeEndpointCommand:zZt,InvokeEndpointWithResponseStreamCommand:BZt}=Ws,{GoogleAuth:jZt,VertexAI:qZt,TextToSpeechClient:GZt}=Ws,{Hippocampus:VZt,HippocampusConfig:HZt}=Ws,{createClient:WZt}=Ws,{Queue:KZt,Worker:JZt,Job:ZZt,QueueScheduler:XZt,FlowProducer:YZt}=Ws,{Cron:QZt}=Ws,{parseBuffer:eXt,selectCover:tXt}=Ws,{extractRawText:rXt,convertToHtml:nXt}=Ws,{Hono:oXt}=Ws,{cors:sXt,HTTPException:iXt,logger:aXt,secureHeaders:cXt,streamSSE:lXt,timeout:uXt}=Ws,dXt=globalThis.fetch,pXt=globalThis.Request,mXt=globalThis.Response,fXt=globalThis.Headers,gXt=globalThis.FormData,hXt=globalThis.File,yXt=globalThis.Blob,vXt=Ws.Agent,xXt=Ws.Pool,bXt=Ws.Client,TXt=Ws.Dispatcher,SXt=()=>{},wXt=()=>Ws,_Xt=Ws.MockAgent,EXt={redirect:()=>r=>r,retry:()=>r=>r},CXt=async(r,e)=>{let t=await globalThis.fetch(r,e);return{statusCode:t.status,headers:Object.fromEntries(t.headers.entries()),body:{text:()=>t.text(),json:()=>t.json(),arrayBuffer:()=>t.arrayBuffer()}}}});var dNe={};le(dNe,{AmazonBedrockProvider:()=>Lee});async function uNe(){return await Promise.resolve().then(()=>(lNe(),cNe))}var Dee,Lee,pNe=A(()=>{"use strict";Oee();Kr();vS();xc();xr();bt();nc();Q();Nu();I$();Nee();em();Ht();Ta();Dee=ye.provider,Lee=class extends an{bedrockClient;conversationHistory=[];region;constructor(e,t,n,o){super(e,"bedrock",t),this.region=o?.region||n||process.env.AWS_REGION||"us-east-1",g.debug("[AmazonBedrockProvider] Starting constructor with extensive logging for debugging"),g.debug(`[AmazonBedrockProvider] Environment check: AWS_REGION=${process.env.AWS_REGION||"undefined"}, AWS_ACCESS_KEY_ID=${process.env.AWS_ACCESS_KEY_ID?"SET":"undefined"}, AWS_SECRET_ACCESS_KEY=${process.env.AWS_SECRET_ACCESS_KEY?"SET":"undefined"}`);try{g.debug("[AmazonBedrockProvider] Creating BedrockRuntimeClient with clean configuration"),this.bedrockClient=new Pee({region:this.region,...o?.accessKeyId&&o?.secretAccessKey?{credentials:{accessKeyId:o.accessKeyId,secretAccessKey:o.secretAccessKey,...o.sessionToken?{sessionToken:o.sessionToken}:{}}}:{}}),g.debug(`[AmazonBedrockProvider] Successfully created BedrockRuntimeClient with model: ${this.modelName}, region: ${this.region}`)}catch(s){throw g.error("[AmazonBedrockProvider] CRITICAL: Failed to initialize BedrockRuntimeClient:",s),s}}async performInitialHealthCheck(){let{BedrockClient:e,ListFoundationModelsCommand:t}=await uNe(),n=new e({region:this.region});try{g.debug("[AmazonBedrockProvider] Starting initial health check to validate credentials and connectivity");let o=new t({}),s=Date.now();await n.send(o);let i=Date.now()-s;g.debug(`[AmazonBedrockProvider] Health check PASSED - credentials valid, connectivity good, responseTime: ${i}ms`)}catch(o){let s=o instanceof Error?o.message:String(o);g.error("[AmazonBedrockProvider] Health check FAILED - this will cause production failures:",{error:s,errorType:o instanceof Error?o.constructor.name:"Unknown",region:process.env.AWS_REGION||"us-east-1",hasAccessKey:!!process.env.AWS_ACCESS_KEY_ID,hasSecretKey:!!process.env.AWS_SECRET_ACCESS_KEY})}finally{try{n.destroy()}catch{}}}getAISDKModel(){throw new Error("AmazonBedrockProvider does not use AI SDK models")}getProviderName(){return"bedrock"}getDefaultModel(){return process.env.BEDROCK_MODEL||"anthropic.claude-sonnet-4-6"}getDefaultEmbeddingModel(){return process.env.BEDROCK_EMBEDDING_MODEL||process.env.AWS_EMBEDDING_MODEL||"amazon.titan-embed-text-v2:0"}async generate(e){g.debug("[AmazonBedrockProvider] generate() called with conversation management");let t=Date.now(),n=typeof e=="string"?{prompt:e}:e;this.conversationHistory=[];let o=n.input;if(!!(o?.images?.length||o?.content?.length||o?.files?.length||o?.csvFiles?.length||o?.pdfFiles?.length)){g.debug("[AmazonBedrockProvider] Detected multimodal input in generate(), using multimodal message builder",{hasImages:!!o?.images?.length,imageCount:o?.images?.length||0,hasContent:!!o?.content?.length,contentCount:o?.content?.length||0,hasFiles:!!o?.files?.length,fileCount:o?.files?.length||0,hasCSVFiles:!!o?.csvFiles?.length,csvFileCount:o?.csvFiles?.length||0,hasPDFFiles:!!o?.pdfFiles?.length,pdfFileCount:o?.pdfFiles?.length||0});let p=Lv(n,this.providerName,this.modelName),m=await sp(p,this.providerName,this.modelName);this.conversationHistory=this.convertToBedrockMessages(m)}else{g.debug("[AmazonBedrockProvider] Text-only input in generate(), using simple message builder");let d={role:"user",content:[{text:n.prompt}]};this.conversationHistory.push(d)}g.debug(`[AmazonBedrockProvider] Starting conversation with ${this.conversationHistory.length} message(s)`);let i,a,l;try{({text:i,usage:a,finishReason:l}=await this.conversationLoop(n))}catch(d){let p=this.neurolink?.getEventEmitter();throw p&&p.emit("generation:end",{provider:this.providerName,responseTime:Date.now()-t,timestamp:Date.now(),result:{content:"",usage:{input:0,output:0,total:0},model:this.modelName||this.getDefaultModel(),provider:this.providerName,finishReason:"error"},success:!1,error:d instanceof Error?d.message:String(d)}),d}let u=this.neurolink?.getEventEmitter();return u&&u.emit("generation:end",{provider:this.providerName,responseTime:Date.now()-t,timestamp:Date.now(),result:{content:i,usage:a,model:this.modelName||this.getDefaultModel(),provider:this.providerName,finishReason:l},success:!0}),{content:i,usage:a,model:this.modelName||this.getDefaultModel(),provider:this.getProviderName()}}async conversationLoop(e){let n=0,o=0,s=0,i;for(;n<10;){n++,g.debug(`[AmazonBedrockProvider] Conversation iteration ${n}`);try{g.debug("[AmazonBedrockProvider] About to call Bedrock API");let a=await this.callBedrock(e);g.debug("[AmazonBedrockProvider] Received Bedrock response",JSON.stringify(a,null,2)),o+=a.usage?.inputTokens??0,s+=a.usage?.outputTokens??0,a.stopReason&&(i=a.stopReason);let l=await this.handleBedrockResponse(a);if(g.debug("[AmazonBedrockProvider] Handle response result:",l),l.shouldContinue)g.debug("[AmazonBedrockProvider] Continuing conversation loop...");else return g.debug("[AmazonBedrockProvider] Conversation completed with final text"),g.debug(`[AmazonBedrockProvider] Returning final text: "${l.text}"`),{text:l.text||"",usage:{input:o,output:s,total:o+s},finishReason:i}}catch(a){throw g.error("[AmazonBedrockProvider] Error in conversation loop:",a),this.handleProviderError(a)}}throw new Error("Conversation loop exceeded maximum iterations")}async callBedrock(e){let t=Date.now();return Dee.startActiveSpan("bedrock.generate",{kind:er.CLIENT,attributes:{"gen_ai.system":"aws.bedrock","gen_ai.request.model":this.modelName||this.getDefaultModel(),"gen_ai.operation.name":"chat"}},async n=>{g.info(`\u{1F680} [AmazonBedrockProvider] Starting Bedrock API call at ${new Date().toISOString()}`);try{let o="unknown";try{o=typeof this.bedrockClient.config.region=="function"?await this.bedrockClient.config.region():this.bedrockClient.config.region??"unknown"}catch{}g.info(`\u{1F527} [AmazonBedrockProvider] Client region: ${o}`),g.info(`\u{1F527} [AmazonBedrockProvider] Model: ${this.modelName||this.getDefaultModel()}`),g.info(`\u{1F527} [AmazonBedrockProvider] Conversation history length: ${this.conversationHistory.length}`);let s=await this.getAllTools(),i=this.convertAISDKToolsToToolDefinitions(s),a=this.formatToolsForBedrock(i),l={modelId:this.modelName||this.getDefaultModel(),messages:this.convertToAWSMessages(this.conversationHistory),system:[{text:e.systemPrompt||"You are a helpful assistant with access to external tools. Use tools when necessary to provide accurate information."}],inferenceConfig:{maxTokens:e.maxTokens,temperature:e.temperature||.7}};a&&(l.toolConfig=a,g.info(`\u{1F6E0}\uFE0F [AmazonBedrockProvider] Tools configured: ${a.tools?.length||0}`)),g.info("\u{1F4CB} [AmazonBedrockProvider] Command input summary:"),g.info(` - Model ID: ${l.modelId}`),g.info(` - Messages count: ${l.messages?.length||0}`),g.info(` - System prompts: ${l.system?.length||0}`),g.info(` - Max tokens: ${l.inferenceConfig?.maxTokens}`),g.info(` - Temperature: ${l.inferenceConfig?.temperature}`),g.debug(`[AmazonBedrockProvider] Calling Bedrock with ${this.conversationHistory.length} messages and ${a?.tools?.length||0} tools`);let u=new Mee(l);g.debug("[Observability] Bedrock API request",{model:l.modelId,region:o,messageCount:l.messages?.length||0,toolCount:l.toolConfig?.tools?.length||0,maxTokens:l.inferenceConfig?.maxTokens});let d=Date.now(),p=await Oe(this.bedrockClient.send(u),12e4,new Error("Bedrock API call timed out")),m=Date.now()-d;g.debug("[Observability] Bedrock API response",{model:l.modelId,durationMs:m,hasContent:!!p.output?.message?.content?.length,stopReason:p.stopReason,usage:p.usage?{inputTokens:p.usage.inputTokens,outputTokens:p.usage.outputTokens,totalTokens:(p.usage.inputTokens||0)+(p.usage.outputTokens||0)}:void 0}),g.info("[AmazonBedrockProvider] Bedrock API call successful"),g.info(`[AmazonBedrockProvider] API call duration: ${m}ms`);let f=Date.now()-t;g.info(`[AmazonBedrockProvider] Total callBedrock duration: ${f}ms`),n.setAttribute("gen_ai.response.stop_reason",p.stopReason??""),n.setAttribute("gen_ai.usage.input_tokens",p.usage?.inputTokens??0),n.setAttribute("gen_ai.usage.output_tokens",p.usage?.outputTokens??0);let h=oo(this.providerName,this.modelName,{input:p.usage?.inputTokens??0,output:p.usage?.outputTokens??0,total:(p.usage?.inputTokens??0)+(p.usage?.outputTokens??0)});return h&&h>0&&n.setAttribute("neurolink.cost",h),n.setStatus({code:be.OK}),n.end(),p}catch(o){let s=Date.now()-t,i=o&&typeof o=="object"?o:null,a=i?.$metadata&&typeof i.$metadata=="object"?i.$metadata:null;throw g.debug("[Observability] Bedrock API request failed",{model:this.modelName||this.getDefaultModel(),durationMs:s,error:o instanceof Error?o.message:String(o),errorName:o instanceof Error?o.name:void 0,httpStatus:a?.httpStatusCode,awsRequestId:a?.requestId,awsErrorCode:i?.Code}),g.error(`[AmazonBedrockProvider] Bedrock API call failed after ${s}ms`),o instanceof Error&&g.error(`[AmazonBedrockProvider] Error: ${o.name} - ${o.message}`),a&&g.error("[AmazonBedrockProvider] AWS SDK metadata",{httpStatus:a.httpStatusCode,requestId:a.requestId,attempts:a.attempts,totalRetryDelay:a.totalRetryDelay}),n.setStatus({code:be.ERROR,message:o instanceof Error?o.message:String(o)}),n.recordException(o instanceof Error?o:new Error(String(o))),n.end(),o}})}async handleBedrockResponse(e){if(g.debug(`[AmazonBedrockProvider] Received response with stopReason: ${e.stopReason}`),!e.output||!e.output.message)throw new Error("Invalid response structure from Bedrock API");let t=e.output.message,n=e.stopReason,o={role:"assistant",content:(t.content||[]).map(s=>{let i={};return"text"in s&&s.text&&(i.text=s.text),"toolUse"in s&&s.toolUse&&(i.toolUse={toolUseId:s.toolUse.toolUseId||"",name:s.toolUse.name||"",input:s.toolUse.input||{}}),"toolResult"in s&&s.toolResult&&(i.toolResult={toolUseId:s.toolResult.toolUseId||"",content:(s.toolResult.content||[]).map(a=>({text:typeof a=="object"&&"text"in a&&a.text||""})),status:s.toolResult.status||"unknown"}),i})};if(this.conversationHistory.push(o),n==="end_turn"||n==="stop_sequence")return{shouldContinue:!1,text:o.content.filter(i=>i.text).map(i=>i.text).join(" ")};if(n==="tool_use"){g.debug("[AmazonBedrockProvider] Tool use detected - executing tools immediately");let s=[];for(let i of o.content)if(i.toolUse){g.debug(`[AmazonBedrockProvider] Executing tool: ${i.toolUse.name}`);try{g.debug("[AmazonBedrockProvider] Debug toolUse.input:",JSON.stringify(i.toolUse.input,null,2));let a=await this.executeSingleTool(i.toolUse.name,i.toolUse.input||{},i.toolUse.toolUseId);g.debug(`[AmazonBedrockProvider] Tool execution successful: ${i.toolUse.name}`),s.push({toolResult:{toolUseId:i.toolUse.toolUseId,content:[{text:String(a)}],status:"success"}})}catch(a){g.error(`[AmazonBedrockProvider] Tool execution failed: ${i.toolUse.name}`,a);let l=a instanceof Error?a.message:String(a);s.push({toolResult:{toolUseId:i.toolUse.toolUseId,content:[{text:`Error executing tool ${i.toolUse.name}: ${l}`}],status:"error"}})}}if(s.length>0){let i={role:"user",content:s};this.conversationHistory.push(i),g.debug(`[AmazonBedrockProvider] Added ${s.length} tool results to conversation`)}return{shouldContinue:!0}}else return n==="max_tokens"?{shouldContinue:!1,text:o.content.filter(i=>i.text).map(i=>i.text).join(" ")}:(g.warn(`[AmazonBedrockProvider] Unrecognized stop reason "${n}", ending conversation.`),{shouldContinue:!1,text:""})}convertToAWSMessages(e){return e.map(t=>({role:t.role,content:t.content.map(n=>n.text?{text:n.text}:n.image?{image:n.image}:n.document?{document:n.document}:n.toolUse?{toolUse:{toolUseId:n.toolUse.toolUseId,name:n.toolUse.name,input:n.toolUse.input}}:n.toolResult?{toolResult:{toolUseId:n.toolResult.toolUseId,content:n.toolResult.content,status:n.toolResult.status}}:{text:""})}))}async executeSingleTool(e,t,n){return Dee.startActiveSpan("bedrock.tool.execute",{kind:er.CLIENT,attributes:{"gen_ai.tool.name":e,"gen_ai.system":"aws.bedrock"}},async o=>{try{g.debug(`[AmazonBedrockProvider] Executing single tool: ${e}`,{args:t});let s=await this.getAllTools(),i=this.convertAISDKToolsToToolDefinitions(s);if(!i[e])throw new Error(`Tool not found: ${e}`);let a=i[e];if(!a||!a.execute)throw new Error(`Tool ${e} does not have execute method`);let l=t||{};e==="list_directory"&&!l.path&&(l.path=".",g.debug("[AmazonBedrockProvider] Added default path '.' for list_directory tool")),g.debug("[AmazonBedrockProvider] Tool input parameters:",l);let u={};for(let[m,f]of Object.entries(l))(f===null||typeof f=="string"||typeof f=="number"||typeof f=="boolean"||typeof f=="object"&&f!==null)&&(u[m]=f);let d=await a.execute(u);g.debug("[AmazonBedrockProvider] Tool execution result:",{toolName:e,result:d});let p;if(d&&typeof d=="object"&&"success"in d)if(d.success&&d.data!==void 0)typeof d.data=="string"?p=d.data:typeof d.data=="object"?p=JSON.stringify(d.data,null,2):p=String(d.data);else if(d.error){let m=typeof d.error=="string"?d.error:d.error.message||"Tool execution failed";throw new Error(m)}else p="";else typeof d=="string"?p=d:typeof d=="object"?p=JSON.stringify(d,null,2):p=String(d);return o.setStatus({code:be.OK}),p}catch(s){throw g.error("[AmazonBedrockProvider] Tool execution error:",{toolName:e,error:s}),o.setStatus({code:be.ERROR,message:s.message}),o.recordException(s),s}finally{o.end()}})}convertAISDKToolsToToolDefinitions(e){let t={};for(let[n,o]of Object.entries(e))if("description"in o&&o.description){let i=o.parameters??o.inputSchema;t[n]={description:o.description,parameters:i,execute:async a=>{if("execute"in o&&o.execute)return{success:!0,data:await o.execute(a,{toolCallId:`tool_${Date.now()}`,messages:[]})};throw new Error(`Tool ${n} has no execute method`)}}}return t}formatToolsForBedrock(e){if(!e||Object.keys(e).length===0)return null;let t=Object.entries(e).map(([n,o])=>{let s;return o.parameters&&typeof o.parameters=="object"?"_def"in o.parameters?s=Lf(o.parameters):s=o.parameters:s={type:"object",properties:{},required:[]},(!s.type||s.type!=="object")&&(s={type:"object",properties:s.properties||{},required:s.required||[]}),{toolSpec:{name:n,description:o.description,inputSchema:{json:s}}}});return g.debug(`[AmazonBedrockProvider] Formatted ${t.length} tools for Bedrock`),{tools:t}}convertToBedrockMessages(e){return e.map(t=>{let n={role:t.role==="system"?"user":t.role,content:[]};return typeof t.content=="string"?n.content.push({text:t.content}):t.content.forEach(o=>{if(o.type==="text"&&o.text)n.content.push({text:o.text});else if(o.type==="image"&&o.image){let s=typeof o.image=="string"?Buffer.from(o.image.replace(/^data:image\/\w+;base64,/,""),"base64"):o.image,i=o.mimeType?.split("/")[1]||"png";i==="jpg"&&(i="jpeg"),n.content.push({image:{format:i==="jpeg"?Uw.JPEG:i==="png"?Uw.PNG:i==="gif"?Uw.GIF:Uw.WEBP,source:{bytes:s}}})}else if(o.type==="document"||o.type==="pdf"||o.type==="file"&&o.mimeType?.toLowerCase().startsWith("application/pdf")){let s;if(typeof o.data=="string"){let a=o.data.replace(/^data:application\/pdf;base64,/i,"");s=Buffer.from(a,"base64")}else s=o.data;let i=typeof o.name=="string"&&o.name?jc.basename(o.name):"document-pdf";i=i.replace(/\.[^.]+$/,""),i=i.replace(/[^a-zA-Z0-9\s\-()[\]]/g,"-"),i=i.replace(/-+/g,"-").trim().replace(/^-+|-+$/g,""),i=i||"document",n.content.push({document:{format:"pdf",name:i,source:{bytes:s}}})}}),n})}getBedrockClient(){return this.bedrockClient}async executeStream(e){return g.debug("\u{1F7E2} [TRACE] executeStream ENTRY - starting streaming attempt"),g.info("\u{1F680} [AmazonBedrockProvider] Attempting real streaming with ConverseStreamCommand"),Dee.startActiveSpan("bedrock.stream",{kind:er.CLIENT,attributes:{"gen_ai.system":"aws.bedrock","gen_ai.request.model":this.modelName||this.getDefaultModel(),"gen_ai.operation.name":"stream"}},async t=>{try{if(g.debug("\u{1F7E2} [TRACE] executeStream TRY block - about to call streamingConversationLoop"),this.conversationHistory=[],!!(e.input?.images?.length||e.input?.content?.length||e.input?.files?.length||e.input?.csvFiles?.length||e.input?.pdfFiles?.length)){g.debug("[AmazonBedrockProvider] Detected multimodal input, using multimodal message builder",{hasImages:!!e.input?.images?.length,imageCount:e.input?.images?.length||0,hasContent:!!e.input?.content?.length,contentCount:e.input?.content?.length||0,hasFiles:!!e.input?.files?.length,fileCount:e.input?.files?.length||0,hasCSVFiles:!!e.input?.csvFiles?.length,csvFileCount:e.input?.csvFiles?.length||0,hasPDFFiles:!!e.input?.pdfFiles?.length,pdfFileCount:e.input?.pdfFiles?.length||0});let s=Lv(e,this.providerName,this.modelName),i=await sp(s,this.providerName,this.modelName);this.conversationHistory=this.convertToBedrockMessages(i)}else{g.debug("[AmazonBedrockProvider] Text-only input, using simple message builder");let s={role:"user",content:[{text:e.input.text}]};this.conversationHistory.push(s)}g.debug(`[AmazonBedrockProvider] Starting streaming conversation with ${this.conversationHistory.length} message(s)`),g.debug("\u{1F7E2} [TRACE] executeStream - calling streamingConversationLoop NOW");let o=await this.streamingConversationLoop(e,t);return g.debug("\u{1F7E2} [TRACE] executeStream - streamingConversationLoop SUCCESS, returning result"),t.setStatus({code:be.OK}),t.end(),o}catch(n){g.debug("\u{1F534} [TRACE] executeStream CATCH - error caught from streamingConversationLoop");let o=n,s=o?.name==="AccessDeniedException"||o?.name==="UnauthorizedOperation"||o?.message?.includes("bedrock:InvokeModelWithResponseStream")||o?.message?.includes("streaming")||o?.message?.includes("ConverseStream");if(g.debug("\u{1F534} [TRACE] executeStream CATCH - checking if permission error"),g.debug(`\u{1F534} [TRACE] executeStream CATCH - isPermissionError=${s}`),s){g.debug("\u{1F7E1} [TRACE] executeStream CATCH - PERMISSION ERROR DETECTED, starting fallback"),g.warn(`[AmazonBedrockProvider] Streaming permissions not available, falling back to generate method: ${o.message}`),t.addEvent("stream.fallback_to_generate",{reason:o.message});let i=await this.generate({prompt:e.input.text,input:e.input,maxTokens:e.maxTokens,temperature:e.temperature,systemPrompt:e.systemPrompt});if(!i)throw t.setStatus({code:be.ERROR,message:"Generate method returned null result"}),t.end(),new Error("Generate method returned null result");t.setAttribute("gen_ai.response.stop_reason","fallback_end_turn"),t.setStatus({code:be.OK}),t.end();let a=new ReadableStream({start(u){(i.content||"").split(" ").forEach((m,f)=>{u.enqueue({content:m+" "})}),u.enqueue({content:""}),u.close()}});return{stream:{async*[Symbol.asyncIterator](){let u=a.getReader();try{for(;;){let{done:d,value:p}=await u.read();if(d)break;yield p}}finally{u.releaseLock()}}},usage:{total:0,input:0,output:0},model:this.modelName||this.getDefaultModel(),provider:this.getProviderName(),metadata:{fallback:!0}}}throw t.setStatus({code:be.ERROR,message:o instanceof Error?o.message:String(o)}),t.recordException(o instanceof Error?o:new Error(String(o))),t.end(),n}})}async streamingConversationLoop(e,t){g.debug("\u{1F7E6} [TRACE] streamingConversationLoop ENTRY");let n=Date.now(),o=e.maxSteps||200,s=0,i=0,a=0,l;try{g.debug("\u{1F7E6} [TRACE] streamingConversationLoop - testing first streaming call");let u=await this.prepareStreamCommand(e),d=new CB(u);g.debug("[Observability] Bedrock streaming API request",{model:u.modelId,messageCount:u.messages?.length||0,toolCount:u.toolConfig?.tools?.length||0}),t.addEvent("stream.api_call",{"bedrock.message_count":u.messages?.length||0,"bedrock.tool_count":u.toolConfig?.tools?.length||0});let p=Date.now(),m=await Oe(this.bedrockClient.send(d),12e4,new Error("Bedrock streaming API call timed out"));g.debug("[Observability] Bedrock streaming API connection established",{model:u.modelId,durationMs:Date.now()-p,hasStream:!!m.stream});let f=new ReadableStream({start:async _=>{g.debug("\u{1F7E6} [TRACE] streamingConversationLoop - ReadableStream start() called");try{let k="";if(m.stream){let R=[],I="";for await(let M of m.stream){if(M.contentBlockStart&&R.push({}),M.contentBlockDelta?.delta?.text){let O=M.contentBlockDelta.delta.text;I+=O,_.enqueue({content:O})}if(M.contentBlockStart?.start?.toolUse){let O=R[R.length-1];O.toolUse={name:M.contentBlockStart.start.toolUse.name||"",input:{},toolUseId:M.contentBlockStart.start.toolUse.toolUseId||`tool_${Date.now()}_${Math.random().toString(36).substring(2,11)}`}}if(M.contentBlockDelta?.delta?.toolUse){let O=R[R.length-1];O.toolUse||(O.toolUse={name:"",input:{},toolUseId:`tool_${Date.now()}_${Math.random().toString(36).substring(2,11)}`});let D=M.contentBlockDelta.delta.toolUse.input;if(D){if(typeof D=="string")O._inputBuffer=(O._inputBuffer||"")+D;else if(typeof D=="object"&&!Array.isArray(D)){let N=O.toolUse.input||{};O.toolUse.input={...N,...D}}}}if(M.contentBlockStop){let O=R[R.length-1];if(O?.toolUse&&O._inputBuffer){try{O.toolUse.input=JSON.parse(O._inputBuffer)}catch{O.toolUse.input={}}delete O._inputBuffer}I&&O&&!O.toolUse&&(O.text=I),I=""}if(M.messageStop){k=M.messageStop.stopReason||"end_turn";continue}if(M.metadata?.usage){i+=M.metadata.usage.inputTokens??0,a+=M.metadata.usage.outputTokens??0;break}}k&&(l=k);let C={role:"assistant",content:R};if(this.conversationHistory.push(C),t.addEvent("stream.turn_complete",{iteration:0,stop_reason:k}),k==="tool_use"){let M=R.flatMap(O=>O.toolUse?.name?[O.toolUse.name]:[]).join(", ");t.addEvent("stream.tool_use",{iteration:0,tool_names:M})}if(!await this.handleStreamStopReason(k,C,_,e)){t.setAttribute("gen_ai.response.stop_reason",k);return}}for(;s<o;){s++,g.debug(`[AmazonBedrockProvider] Streaming iteration ${s}`);let R=await this.prepareStreamCommand(e),{stopReason:I,assistantMessage:C,usage:E}=await this.processStreamResponse(R,_);if(E&&(i+=E.input,a+=E.output),I&&(l=I),t.addEvent("stream.turn_complete",{iteration:s,stop_reason:I}),I==="tool_use"){let O=C.content.flatMap(D=>D.toolUse?.name?[D.toolUse.name]:[]).join(", ");t.addEvent("stream.tool_use",{iteration:s,tool_names:O})}if(!await this.handleStreamStopReason(I,C,_,e)){t.setAttribute("gen_ai.response.stop_reason",I);break}}s>=o&&(t.setAttribute("gen_ai.response.stop_reason","max_iterations"),_.error(new Error("Streaming conversation exceeded maximum iterations")))}catch(k){g.debug("\u{1F534} [TRACE] streamingConversationLoop - CATCH block hit in ReadableStream"),_.error(k)}}}),h=this.neurolink?.getEventEmitter(),y=this.convertToAsyncIterable(f),v=this,b,w=new Promise(_=>{b=_});return{stream:{async*[Symbol.asyncIterator](){let _=!1;try{yield*y}catch(k){throw _=!0,k}finally{let k={input:i,output:a,total:i+a};b(ip(v.providerName,v.modelName||v.getDefaultModel(),{usage:k},Date.now()-n,{requestId:`bedrock-stream-${Date.now()}`,streamingMode:!0})),h&&h.emit("generation:end",{provider:v.providerName,responseTime:Date.now()-n,timestamp:Date.now(),result:{content:"",usage:k,model:v.modelName||v.getDefaultModel(),provider:v.providerName,finishReason:_?"error":l},success:!_})}}},usage:{total:0,input:0,output:0},model:this.modelName||this.getDefaultModel(),provider:this.getProviderName(),analytics:w,metadata:{startTime:n,streamId:`bedrock-${Date.now()}`}}}catch(u){throw g.debug("\u{1F534} [TRACE] streamingConversationLoop - first streaming call FAILED, throwing"),u}}convertToAsyncIterable(e){return{async*[Symbol.asyncIterator](){let t=e.getReader();try{for(;;){let{done:n,value:o}=await t.read();if(n)break;yield o}}finally{t.releaseLock()}}}}async prepareStreamCommand(e){g.shouldLog("debug")&&(g.debug(`[AmazonBedrockProvider] BEFORE conversion - conversationHistory length: ${this.conversationHistory.length}`),this.conversationHistory.forEach((a,l)=>{g.debug(`[AmazonBedrockProvider] Message ${l}: role=${a.role}, content=${JSON.stringify(a.content)}`)}));let t=e.tools||await this.getAllTools(),n=this.convertAISDKToolsToToolDefinitions(t),o=this.formatToolsForBedrock(n),s=this.convertToAWSMessages(this.conversationHistory);g.shouldLog("debug")&&(g.debug(`[AmazonBedrockProvider] AFTER conversion - messages length: ${s.length}`),s.forEach((a,l)=>{g.debug(`[AmazonBedrockProvider] Converted Message ${l}: role=${a.role}, content=${JSON.stringify(a.content)}`)}));let i={modelId:this.modelName||this.getDefaultModel(),messages:s,system:[{text:e.systemPrompt||"You are a helpful assistant with access to external tools. Use tools when necessary to provide accurate information."}],inferenceConfig:{maxTokens:e.maxTokens,temperature:e.temperature||.7}};return o&&(i.toolConfig=o),g.debug(`[AmazonBedrockProvider] Calling Bedrock streaming with ${this.conversationHistory.length} messages`),g.debug("[AmazonBedrockProvider] DEBUG - Conversation structure:"),this.conversationHistory.forEach((a,l)=>{g.debug(` Message ${l} (${a.role}): ${a.content.length} content items`),a.content.forEach((u,d)=>{let p=Object.keys(u);g.debug(` Content ${d}: ${p.join(", ")}`)})}),i}async processStreamResponse(e,t){let n=new CB(e);g.debug("[Observability] Bedrock streaming API request (continuation)",{model:e.modelId,messageCount:e.messages?.length||0});let o=Date.now(),s=await Oe(this.bedrockClient.send(n),12e4,new Error("Bedrock streaming API call timed out"));if(g.debug("[Observability] Bedrock streaming API connection established (continuation)",{model:e.modelId,durationMs:Date.now()-o}),!s.stream)throw new Error("No stream returned from Bedrock");let i=[],a="",l="",u;for await(let p of s.stream){if(p.contentBlockStart&&i.push({}),p.contentBlockDelta?.delta?.text){let m=p.contentBlockDelta.delta.text;l+=m,t.enqueue({content:m})}if(p.contentBlockStart?.start?.toolUse){let m=i[i.length-1];m.toolUse={name:p.contentBlockStart.start.toolUse.name||"",input:{},toolUseId:p.contentBlockStart.start.toolUse.toolUseId||`tool_${Date.now()}_${Math.random().toString(36).substring(2,11)}`}}if(p.contentBlockDelta?.delta?.toolUse){let m=i[i.length-1];if(m.toolUse||(m.toolUse={name:"",input:{},toolUseId:`tool_${Date.now()}_${Math.random().toString(36).substring(2,11)}`}),p.contentBlockDelta.delta.toolUse.input){let f=p.contentBlockDelta.delta.toolUse.input;if(typeof f=="string")m._inputBuffer=(m._inputBuffer||"")+f;else if(f&&typeof f=="object"&&!Array.isArray(f)){let h=m.toolUse.input||{};m.toolUse.input={...h,...f}}}}if(p.contentBlockStop){let m=i[i.length-1];if(m?.toolUse&&m._inputBuffer){try{m.toolUse.input=JSON.parse(m._inputBuffer)}catch{m.toolUse.input={}}delete m._inputBuffer}l&&m&&!m.toolUse&&(m.text=l),l=""}if(p.messageStop){a=p.messageStop.stopReason||"end_turn";continue}if(p.metadata?.usage){let m=p.metadata.usage.inputTokens??0,f=p.metadata.usage.outputTokens??0;u={input:m,output:f,total:p.metadata.usage.totalTokens??m+f};break}}let d={role:"assistant",content:i};return this.conversationHistory.push(d),{stopReason:a,assistantMessage:d,usage:u}}async handleStreamStopReason(e,t,n,o){return e==="end_turn"||e==="stop_sequence"?(n.close(),!1):e==="tool_use"?(g.debug("\u{1F6E0}\uFE0F [AmazonBedrockProvider] Tool use detected in streaming - executing tools"),await this.executeStreamTools(t.content,o),!0):(n.close(),!1)}async executeStreamTools(e,t){let n=[],o=0,s=[],i=[];for(let a of e)a.toolUse&&o++;g.debug(`\u{1F50D} [AmazonBedrockProvider] Found ${o} toolUse blocks in assistant message`);for(let a of e)if(a.toolUse){g.debug(`\u{1F527} [AmazonBedrockProvider] Executing tool: ${a.toolUse.name}`),s.push({type:"tool-call",toolCallId:a.toolUse.toolUseId,toolName:a.toolUse.name,args:a.toolUse.input||{}});try{let l=await this.executeSingleTool(a.toolUse.name,a.toolUse.input||{},a.toolUse.toolUseId);g.debug(`\u2705 [AmazonBedrockProvider] Tool execution successful: ${a.toolUse.name}`),i.push({type:"tool-result",toolCallId:a.toolUse.toolUseId,toolName:a.toolUse.name,result:l}),n.push({toolResult:{toolUseId:a.toolUse.toolUseId,content:[{text:String(l)}],status:"success"}})}catch(l){g.error(`\u274C [AmazonBedrockProvider] Tool execution failed: ${a.toolUse.name}`,l);let u=l instanceof Error?l.message:String(l);i.push({type:"tool-result",toolCallId:a.toolUse.toolUseId,toolName:a.toolUse.name,result:{error:u}}),n.push({toolResult:{toolUseId:a.toolUse.toolUseId,content:[{text:`Error executing tool ${a.toolUse.name}: ${u}`}],status:"error"}})}}if(g.debug(`\u{1F4CA} [AmazonBedrockProvider] Created ${n.length} toolResult blocks for ${o} toolUse blocks`),n.length!==o)throw g.error(`\u274C [AmazonBedrockProvider] Mismatch: ${n.length} toolResults vs ${o} toolUse blocks`),new Error(`Tool mapping mismatch: ${n.length} toolResults for ${o} toolUse blocks`);if(n.length>0){let a={role:"user",content:n};this.conversationHistory.push(a),g.debug(`\u{1F4E4} [AmazonBedrockProvider] Added ${n.length} tool results to conversation (1:1 mapping validated)`),_n(this.neurolink?.getEventEmitter(),i.map(l=>{let u=l.result&&typeof l.result=="object"&&"error"in l.result;return{toolName:l.toolName,result:l.result,error:u?String(l.result.error):void 0}})),this.handleToolExecutionStorage(s,i,t,new Date).catch(l=>{g.warn("[AmazonBedrockProvider] Failed to store tool executions",{provider:this.providerName,error:l instanceof Error?l.message:String(l)})})}}async checkBedrockHealth(){let e=new AbortController,t=setTimeout(()=>e.abort(),1e4),{BedrockClient:n,ListFoundationModelsCommand:o}=await uNe(),s=new n({region:process.env.AWS_REGION||"us-east-1"});try{g.debug("\u{1F50D} [AmazonBedrockProvider] Starting health check...");let i=new o({}),l=(await s.send(i,{abortSignal:e.signal})).modelSummaries||[],u=l.filter(d=>d.modelLifecycle?.status==="ACTIVE");if(g.debug(`\u2705 [AmazonBedrockProvider] Health check passed - Found ${u.length} active models out of ${l.length} total models`),u.length===0)throw new Error("No active foundation models available in the region")}catch(i){clearTimeout(t);let a=i;if(br(i))throw new Error("Bedrock health check timed out after 10 seconds",{cause:i});let l=typeof a.message=="string"?a.message:"";throw l.includes("UnauthorizedOperation")||l.includes("AccessDenied")?new Error("Bedrock access denied. Check your AWS credentials and IAM permissions for bedrock:ListFoundationModels",{cause:i}):a.code==="ECONNREFUSED"||a.code==="ENOTFOUND"?new Error("Unable to connect to Bedrock service. Check your network connectivity and AWS region configuration",{cause:i}):(g.error("\u274C [AmazonBedrockProvider] Health check failed:",i),new Error(`Bedrock health check failed: ${l||"Unknown error"}`,{cause:i}))}finally{clearTimeout(t);try{s.destroy()}catch{}}}formatProviderError(e){let t=e instanceof Error?e.message:String(e);if(t.includes("AccessDeniedException"))return new kn("AWS Bedrock access denied. Check your credentials and permissions.",this.providerName);if(t.includes("ValidationException"))return new ur(`Validation error: ${t}`,this.providerName);let n=e?.name??"",o=e?.code??"";return n==="ThrottlingException"||o==="ThrottlingException"?new Za(`Bedrock rate limit (throttled): ${e instanceof Error?e.message:String(e)}`,"bedrock"):new ur(`AWS Bedrock error: ${t}`,this.providerName)}async embed(e,t){let n=t||"amazon.titan-embed-text-v2:0";g.debug("Generating embedding",{provider:this.providerName,model:n,textLength:e.length});try{let{InvokeModelCommand:o}=await Promise.resolve().then(()=>(Oee(),aNe)),s=JSON.stringify({inputText:e}),i=new o({modelId:n,contentType:"application/json",accept:"application/json",body:s}),a=await Oe(this.bedrockClient.send(i),6e4,new Error("Bedrock embedding API call timed out")),l=JSON.parse(new TextDecoder().decode(a.body));if(!l.embedding||!Array.isArray(l.embedding))throw new Error("Invalid embedding response from Bedrock");return g.debug("Embedding generated successfully",{provider:this.providerName,model:n,embeddingDimension:l.embedding.length}),l.embedding}catch(o){throw g.error("Embedding generation failed",{error:o instanceof Error?o.message:String(o),model:n,textLength:e.length}),this.handleProviderError(o)}}async embedMany(e,t){let n=t||"amazon.titan-embed-text-v2:0";g.debug("Generating batch embeddings",{provider:this.providerName,model:n,count:e.length});try{let o=await Promise.all(e.map(s=>this.embed(s,n)));return g.debug("Batch embeddings generated successfully",{provider:this.providerName,model:n,count:o.length,embeddingDimension:o[0]?.length}),o}catch(o){throw g.error("Batch embedding generation failed",{error:o instanceof Error?o.message:String(o),model:n,count:e.length}),this.handleProviderError(o)}}}});function RNe(r){let e=r.startsWith("o3")||r.startsWith("o4-mini")||r.startsWith("gpt-5")&&!r.startsWith("gpt-5-chat"),t=r.startsWith("gpt-4")||r.startsWith("gpt-5")&&!r.startsWith("gpt-5-nano")&&!r.startsWith("gpt-5-chat")&&!r.startsWith("gpt-5.4-nano")||r.startsWith("o3")||r.startsWith("o4-mini"),n=r.startsWith("o1")||r.startsWith("o3")||r.startsWith("o4-mini")||r.startsWith("gpt-5")&&!r.startsWith("gpt-5-chat"),o=r.startsWith("gpt-5.1")||r.startsWith("gpt-5.2")||r.startsWith("gpt-5.3")||r.startsWith("gpt-5.4");return{supportsFlexProcessing:e,supportsPriorityProcessing:t,isReasoningModel:n,systemMessageMode:n?"developer":"system",supportsNonReasoningParameters:o}}function mNe(r){var e,t,n,o,s,i;if(r==null)return{inputTokens:{total:void 0,noCache:void 0,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:void 0,text:void 0,reasoning:void 0},raw:void 0};let a=(e=r.prompt_tokens)!=null?e:0,l=(t=r.completion_tokens)!=null?t:0,u=(o=(n=r.prompt_tokens_details)==null?void 0:n.cached_tokens)!=null?o:0,d=(i=(s=r.completion_tokens_details)==null?void 0:s.reasoning_tokens)!=null?i:0;return{inputTokens:{total:a,noCache:a-u,cacheRead:u,cacheWrite:void 0},outputTokens:{total:l,text:l-d,reasoning:d},raw:r}}function kXt({prompt:r,systemMessageMode:e="system"}){var t;let n=[],o=[];for(let{role:s,content:i}of r)switch(s){case"system":{switch(e){case"system":{n.push({role:"system",content:i});break}case"developer":{n.push({role:"developer",content:i});break}case"remove":{o.push({type:"other",message:"system messages are removed for this model"});break}default:{let a=e;throw new Error(`Unsupported system message mode: ${a}`)}}break}case"user":{if(i.length===1&&i[0].type==="text"){n.push({role:"user",content:i[0].text});break}n.push({role:"user",content:i.map((a,l)=>{var u,d,p;switch(a.type){case"text":return{type:"text",text:a.text};case"file":if(a.mediaType.startsWith("image/")){let m=a.mediaType==="image/*"?"image/jpeg":a.mediaType;return{type:"image_url",image_url:{url:a.data instanceof URL?a.data.toString():`data:${m};base64,${wr(a.data)}`,detail:(d=(u=a.providerOptions)==null?void 0:u.openai)==null?void 0:d.imageDetail}}}else if(a.mediaType.startsWith("audio/")){if(a.data instanceof URL)throw new it({functionality:"audio file parts with URLs"});switch(a.mediaType){case"audio/wav":return{type:"input_audio",input_audio:{data:wr(a.data),format:"wav"}};case"audio/mp3":case"audio/mpeg":return{type:"input_audio",input_audio:{data:wr(a.data),format:"mp3"}};default:throw new it({functionality:`audio content parts with media type ${a.mediaType}`})}}else if(a.mediaType==="application/pdf"){if(a.data instanceof URL)throw new it({functionality:"PDF file parts with URLs"});return{type:"file",file:typeof a.data=="string"&&a.data.startsWith("file-")?{file_id:a.data}:{filename:(p=a.filename)!=null?p:`part-${l}.pdf`,file_data:`data:application/pdf;base64,${wr(a.data)}`}}}else throw new it({functionality:`file part media type ${a.mediaType}`})}})});break}case"assistant":{let a="",l=[];for(let u of i)switch(u.type){case"text":{a+=u.text;break}case"tool-call":{l.push({id:u.toolCallId,type:"function",function:{name:u.toolName,arguments:JSON.stringify(u.input)}});break}}n.push({role:"assistant",content:a,tool_calls:l.length>0?l:void 0});break}case"tool":{for(let a of i){if(a.type==="tool-approval-response")continue;let l=a.output,u;switch(l.type){case"text":case"error-text":u=l.value;break;case"execution-denied":u=(t=l.reason)!=null?t:"Tool execution denied.";break;case"content":case"json":case"error-json":u=JSON.stringify(l.value);break}n.push({role:"tool",tool_call_id:a.toolCallId,content:u})}break}default:{let a=s;throw new Error(`Unsupported role: ${a}`)}}return{messages:n,warnings:o}}function Fee({id:r,model:e,created:t}){return{id:r??void 0,modelId:e??void 0,timestamp:t?new Date(t*1e3):void 0}}function fNe(r){switch(r){case"stop":return"stop";case"length":return"length";case"content_filter":return"content-filter";case"function_call":case"tool_calls":return"tool-calls";default:return"other"}}function PXt({tools:r,toolChoice:e}){r=r?.length?r:void 0;let t=[];if(r==null)return{tools:void 0,toolChoice:void 0,toolWarnings:t};let n=[];for(let s of r)s.type==="function"?n.push({type:"function",function:{name:s.name,description:s.description,parameters:s.inputSchema,...s.strict!=null?{strict:s.strict}:{}}}):t.push({type:"unsupported",feature:`tool type: ${s.type}`});if(e==null)return{tools:n,toolChoice:void 0,toolWarnings:t};let o=e.type;switch(o){case"auto":case"none":case"required":return{tools:n,toolChoice:o,toolWarnings:t};case"tool":return{tools:n,toolChoice:{type:"function",function:{name:e.toolName}},toolWarnings:t};default:{let s=o;throw new it({functionality:`tool choice type: ${s}`})}}}function gNe(r){var e,t,n,o;if(r==null)return{inputTokens:{total:void 0,noCache:void 0,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:void 0,text:void 0,reasoning:void 0},raw:void 0};let s=(e=r.prompt_tokens)!=null?e:0,i=(t=r.completion_tokens)!=null?t:0;return{inputTokens:{total:(n=r.prompt_tokens)!=null?n:void 0,noCache:s,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:(o=r.completion_tokens)!=null?o:void 0,text:i,reasoning:void 0},raw:r}}function MXt({prompt:r,user:e="user",assistant:t="assistant"}){let n="";r[0].role==="system"&&(n+=`${r[0].content}
1829
+ IMPORTANT: You have a tool called "${l.toolName}" that searches through`,`${l.filesLoaded} loaded document(s) containing ${l.chunksIndexed} indexed chunks.`,`ALWAYS use the "${l.toolName}" tool FIRST to answer the user's question before using any other tools.`,"This tool searches your local knowledge base of pre-loaded documents and is the primary source of truth.","Do NOT use websearchGrounding or any web search tools when the answer can be found in the loaded documents."].join(" ");e.systemPrompt=(e.systemPrompt||"")+u,g.info("[RAG] Tool injected into stream()",{toolName:l.toolName,filesLoaded:l.filesLoaded,chunksIndexed:l.chunksIndexed})}catch(a){g.warn("[RAG] Failed to prepare RAG tool, continuing without RAG",{error:a instanceof Error?a.message:String(a)})}let s=gIe(e),i=hIe(e);if(e.input?.text){let{toolResults:a,enhancedPrompt:l}=await this.detectAndExecuteTools(e.input.text,void 0);l!==e.input.text&&(i.input.text=l)}return{enhancedOptions:i,factoryResult:s}}async autoDisableOllamaStreamTools(e){if((e.provider==="ollama"||e.provider?.toLowerCase().includes("ollama"))&&!e.disableTools){let{ModelConfigurationManager:t}=await Promise.resolve().then(()=>(yg(),PEe)),s=t.getInstance().getProviderConfiguration("ollama")?.modelBehavior?.toolCapableModels||[],i=e.model;s.length>0&&i&&(s.some(l=>i.toLowerCase().includes(l.toLowerCase()))||(e.disableTools=!0,g.debug("Auto-disabled tools for Ollama model that doesn't support them (stream)",{model:e.model,toolCapableModels:s.slice(0,3)})))}}setupStreamEventListeners(){let e=[],t=0,n=(p,m)=>{e.push({type:p,seq:t++,timestamp:Date.now(),...m&&typeof m=="object"?m:{data:m}})},o=(...p)=>{let m=p[0];n("response:chunk",{content:m})},s=(...p)=>{let m=p[0];n("tool:start",{...m,toolName:m.toolName??m.tool})},i=(...p)=>{let m=p[0],f=m.toolName??m.tool,h=m.responseTime??m.duration,y=m.success??(m.error!==void 0?!1:void 0),v={...m,toolName:f,...h!==void 0?{responseTime:h}:{},...y!==void 0?{success:y}:{},...m.error!==void 0?{error:m.error}:{}};n("tool:end",v),v.result&&v.result.uiComponent===!0&&n("ui-component",{toolName:f,componentData:v.result,timestamp:Date.now(),...y!==void 0?{success:y}:{},...h!==void 0?{responseTime:h}:{}})},a=(...p)=>{n("ui-component",p[0])},l=(...p)=>{n("hitl:confirmation-request",p[0])},u=(...p)=>{n("hitl:confirmation-response",p[0])};return this.emitter.on("response:chunk",o),this.emitter.on("tool:start",s),this.emitter.on("tool:end",i),this.emitter.on("ui-component",a),this.emitter.on("hitl:confirmation-request",l),this.emitter.on("hitl:confirmation-response",u),{eventSequence:e,cleanup:()=>{this.emitter.off("response:chunk",o),this.emitter.off("tool:start",s),this.emitter.off("tool:end",i),this.emitter.off("ui-component",a),this.emitter.off("hitl:confirmation-request",l),this.emitter.off("hitl:confirmation-response",u)}}}async*handleStreamFallback(e,t,n,o,s,i){e.fallbackAttempted=!0;let a="Stream completed with 0 chunks (possible guardrails block)";e.error=a;try{let h=this._metricsTraceContext,y=xe.createGenerationSpan({provider:s,model:o.model||"unknown",name:`gen_ai.${s}.stream.failed`,traceId:h?.traceId,parentSpanId:h?.parentSpanId});y=xe.endSpan(y,2),y.statusMessage=a,y.durationMs=0,this.metricsAggregator.recordSpan(y),Ue().recordSpan(y)}catch{}let l=o.fallbackProvider?.trim()||void 0,u=o.fallbackModel?.trim()||void 0,d=process.env.FALLBACK_PROVIDER?.trim()||void 0,p=process.env.FALLBACK_MODEL?.trim()||void 0,m=uw.getFallbackRoute(n||o.input.text||"",{provider:s,model:o.model||"gpt-4o",reasoning:"primary failed",confidence:.5},{fallbackStrategy:"auto"}),f={...m,provider:l??d??m.provider,model:u??p??m.model};g.warn("Retrying with fallback provider",{originalProvider:s,fallbackProvider:f.provider,fallbackModel:f.model,fallbackSource:l||u?"options":d||p?"env":"model_config",reason:a});try{let h=await Ur.createProvider(f.provider,f.model,!0,void 0,void 0,this.resolveCredentials(o.credentials));h.setupToolExecutor({customTools:this.getCustomTools(),executeTool:(k,R)=>this.executeTool(k,R,{disableToolCache:o.disableToolCache})},"NeuroLink.fallbackStream");let y=o.conversationMessages!==void 0?o.conversationMessages:await iv(this.conversationMemory,{prompt:o.input.text,context:o.context}),v=await h.stream({...o,model:f.model,conversationMessages:y}),b=v.toolCalls??[],w=v.toolResults??[];(b.length>0||w.length>0)&&(t.toolCalls=b,t.toolResults=w,t.finishReason=v.finishReason??t.finishReason);let T=0,_=0;for await(let k of v.stream){T++;let R=k!==null&&typeof k=="object"&&"metadata"in k&&k.metadata?.noOutput===!0,I=k&&"content"in k&&typeof k.content=="string"&&k.content.length>0,C=k!==null&&typeof k=="object"&&"type"in k&&(k.type==="audio"||k.type==="image");!R&&(I||C)&&_++,k&&"content"in k&&typeof k.content=="string"&&(i(k.content),this.emitter.emit("response:chunk",k.content)),yield k}if(_===0&&b.length===0&&w.length===0)throw new Error(`Fallback provider ${f.provider} also returned 0 real output chunks (chunkCount=${T}, sentinel-only or empty)`);e.fallbackProvider=f.provider,e.fallbackModel=f.model,e.guardrailsBlocked=!0}catch(h){let y=h instanceof Error?h.message:String(h);throw e.error=`${a}; Fallback failed: ${y}`,g.error("Fallback provider failed",{fallbackProvider:f.provider,error:y}),h}}async storeStreamConversationMemory(e){let{enhancedOptions:t,providerName:n,originalPrompt:o,accumulatedContent:s,startTime:i,eventSequence:a}=e;g.debug("[NeuroLink.stream] Preparing to store conversation turn in memory",{options:JSON.stringify(t),sessionId:t.context?.sessionId});let l=a.some(u=>u.type==="tool:start"||u.type==="tool:end");if(!s.trim()&&!l){g.warn("[NeuroLink.stream] Skipping conversation turn storage \u2014 no text content or tool activity",{sessionId:t.context?.sessionId});return}if(g.debug("[NeuroLink.stream] Storing conversation turn in memory",{options:JSON.stringify(t),sessionId:t.context?.sessionId,conversationMemoryExists:!!this.conversationMemory}),this.conversationMemory&&t.context?.sessionId){let u=t.context?.sessionId,d=t.context?.userId,p;t.model&&(p={provider:n,model:t.model});let m=Date.now();try{await this.conversationMemory.storeConversationTurn({sessionId:u,userId:d,userMessage:o??"",aiResponse:s,startTimeStamp:new Date(i),providerDetails:p,enableSummarization:t.enableSummarization,events:a.length>0?a:void 0,requestId:t.context?.requestId}),this.recordMemorySpan("memory.store",{"memory.operation":"store","memory.path":"stream"},Date.now()-m,1),g.debug("[NeuroLink.stream] Stored conversation turn with events",{sessionId:u,eventCount:a.length,eventTypes:[...new Set(a.map(f=>f.type))]})}catch(f){this.recordMemorySpan("memory.store",{"memory.operation":"store","memory.path":"stream"},Date.now()-m,2,f instanceof Error?f.message:String(f)),g.warn("Failed to store stream conversation turn",{error:f instanceof Error?f.message:String(f)})}}this.shouldWriteMemory(t.memory,t.context?.userId,s)&&this.storeMemoryInBackground(o??"",s.trim(),t.context?.userId,t.memory?.additionalUsers)}async validateStreamInput(e){let t=process.hrtime.bigint();g.debug("[NeuroLink] \u{1F3AF} LOG_POINT_003_VALIDATION_START",{logPoint:"003_VALIDATION_START",validationStartTimeNs:t.toString(),message:"Starting comprehensive input validation process"});let n=typeof e?.input?.text=="string"&&e.input.text.trim().length>0,o=!!(e?.input?.audio&&e.input.audio.frames&&typeof e.input.audio.frames[Symbol.asyncIterator]=="function");if(!n&&!o)throw new Error("Stream options must include either input.text or input.audio")}emitStreamStartEvents(e,t){this.emitter.emit("stream:start",{provider:e.provider||"auto",timestamp:t}),this.emitter.emit("response:start"),this.emitter.emit("message",`Starting ${e.provider||"auto"} stream...`)}async createMCPStream(e){let t=await Fg(e.provider),n=await Ur.createProvider(t,e.model,!e.disableTools,this,e.region,this.resolveCredentials(e.credentials));n.setTraceContext(this._metricsTraceContext),n.setupToolExecutor({customTools:this.getCustomTools(),executeTool:(h,y)=>this.executeTool(h,y,{disableToolCache:e.disableToolCache})},"NeuroLink.createMCPStream");let o=await this.getAllAvailableTools();o=this.applyToolInfoFiltering(o,e);let s=e.skipToolPromptInjection?e.systemPrompt||"":this.createToolAwareSystemPrompt(e.systemPrompt,o),i=e.conversationMessages!==void 0,a=i?e.conversationMessages:await iv(this.conversationMemory,{...e,prompt:e.input.text,context:e.context});e.conversationMessages=a;let l=a,u=Pa({provider:t,model:e.model,maxTokens:e.maxTokens,systemPrompt:s,conversationMessages:l,currentPrompt:e.input.text,toolDefinitions:o}),d=l?.length||0,p=this.getCompactionSessionId(e),m=d>0;if(!u.withinBudget&&!m){try{this.emitter.emit("compaction.insufficient",{stagesAttempted:["pre-dispatch hard cap"],finalTokens:u.estimatedInputTokens,budget:u.availableInputTokens,provider:t,model:e.model,phase:"pre-dispatch-no-recovery",timestamp:Date.now()})}catch{}throw new bc(`Stream context exceeds model budget and no compaction is possible (no conversationMemory, no inline conversationMessages \u2014 only prompt + tools). Estimated: ${u.estimatedInputTokens} tokens, budget: ${u.availableInputTokens} tokens. Reduce prompt or tool-definition size, or trim the request.`,{estimatedTokens:u.estimatedInputTokens,availableTokens:u.availableInputTokens,stagesUsed:[],breakdown:u.breakdown})}if(u.shouldCompact&&(i||this.conversationMemory)&&d>(this.lastCompactionMessageCount.get(p)??0)){let y=await new wg({provider:t,summarizationProvider:this.conversationMemoryConfig?.conversationMemory?.summarizationProvider,summarizationModel:this.conversationMemoryConfig?.conversationMemory?.summarizationModel}).compact(l,u.availableInputTokens,this.conversationMemoryConfig?.conversationMemory,e.context?.requestId);y.compacted&&(l=IS(y.messages).messages,e.conversationMessages=l,this.lastCompactionMessageCount.set(p,l.length));let v=Pa({provider:t,model:e.model,maxTokens:e.maxTokens,systemPrompt:s,conversationMessages:l,currentPrompt:e.input.text,toolDefinitions:o});if(!v.withinBudget){g.warn("[NeuroLink] Stream: post-compaction still over budget, emergency truncation",{estimatedTokens:v.estimatedInputTokens,availableTokens:v.availableInputTokens,overagePercent:Math.round((v.usageRatio-1)*100)});try{this.emitter.emit("compaction.insufficient",{stagesAttempted:y.stagesUsed,finalTokens:v.estimatedInputTokens,budget:v.availableInputTokens,provider:t,model:e.model,phase:"mid-compaction",willEmergencyTruncate:!0,timestamp:Date.now()})}catch{}l=o2(l,v.availableInputTokens,v.breakdown,t),e.conversationMessages=l;let b=Pa({provider:t,model:e.model,maxTokens:e.maxTokens,systemPrompt:s,conversationMessages:l,currentPrompt:e.input.text,toolDefinitions:o});if(!b.withinBudget){this.lastCompactionMessageCount.delete(p);try{this.emitter.emit("compaction.insufficient",{stagesAttempted:y.stagesUsed,finalTokens:b.estimatedInputTokens,budget:b.availableInputTokens,provider:t,model:e.model,phase:"post-emergency-truncation",timestamp:Date.now()})}catch{}throw new bc(`Stream context exceeds model budget after all compaction stages. Estimated: ${b.estimatedInputTokens} tokens, Budget: ${b.availableInputTokens} tokens.`,{estimatedTokens:b.estimatedInputTokens,availableTokens:b.availableInputTokens,stagesUsed:y.stagesUsed,breakdown:b.breakdown})}}}let f=await n.stream({...e,systemPrompt:s,conversationMessages:l});return g.debug("[createMCPStream] Stream created successfully",{provider:t,systemPromptPassedLength:s.length}),{stream:f.stream,provider:t,usage:f.usage,model:f.model||e.model,finishReason:f.finishReason,toolCalls:f.toolCalls??[],toolResults:f.toolResults??[],analytics:f.analytics}}async processStreamResult(e,t,n){return{content:"",usage:void 0,finishReason:"stop",toolCalls:[],toolResults:[],analytics:void 0,evaluation:void 0}}emitStreamEndEvents(e){this.emitter.emit("stream:end",{responseTime:Date.now(),timestamp:Date.now()}),this.emitter.emit("response:end",e.content||"")}createStreamResponse(e,t,n){return{stream:t,provider:n.providerName,model:n.options.model,usage:e.usage,finishReason:e.finishReason,toolCalls:e.toolCalls,toolResults:e.toolResults,analytics:e.analytics,evaluation:e.evaluation,events:n.events&&n.events.length>0?n.events:void 0,metadata:{streamId:n.streamId,startTime:n.startTime,responseTime:n.responseTime,fallback:n.fallback||!1,guardrailsBlocked:n.guardrailsBlocked,error:n.error}}}async handleStreamError(e,t,n,o,s,i){if(e instanceof bc)throw e;g.error("Stream generation failed, attempting fallback",{error:e instanceof Error?e.message:String(e)});try{this.emitter.emit("stream:error",{content:e instanceof Error?e.message:String(e),metadata:{errorName:e instanceof Error?e.name:"UnknownError",durationMs:Date.now()-n,chunkCount:0},provider:t.provider||"unknown",model:t.model||"unknown"})}catch{}let a=t.input.text,l=Date.now()-n,u=await Fg(t.provider),p=await(await Ur.createProvider(u,t.model,!0,void 0,void 0,this.resolveCredentials(t.credentials))).stream({input:{text:t.input.text},model:t.model,temperature:t.temperature,maxTokens:t.maxTokens,conversationMessages:t.conversationMessages}),m="";return{stream:(async function*(h){try{for await(let y of p.stream)y&&"content"in y&&typeof y.content=="string"&&(m+=y.content,h.emitter.emit("response:chunk",y.content)),yield y}finally{if(m.trim()){g.info("[NeuroLink.handleStreamError] stream() - COMPLETE SUCCESS (fallback)",{provider:u,model:t.model,responseTimeMs:Date.now()-n,contentLength:m.length});try{h.emitter.emit("stream:complete",{content:m,provider:u,model:t.model||"unknown",finishReason:"stop",metadata:{durationMs:Date.now()-n,chunkCount:0,totalLength:m.length,isFallback:!0,finishReason:"stop"}})}catch{}}if(h.conversationMemory&&s?.context?.sessionId&&m.trim()){let y=s?.context?.sessionId,v=s?.context?.userId,b;t.model&&(b={provider:u,model:t.model});let w=Date.now();try{await h.conversationMemory.storeConversationTurn({sessionId:y||t.context?.sessionId,userId:v||t.context?.userId,userMessage:a??"",aiResponse:m,startTimeStamp:new Date(n),providerDetails:b,enableSummarization:s?.enableSummarization,requestId:s?.context?.requestId||t.context?.requestId}),h.recordMemorySpan("memory.store",{"memory.operation":"store","memory.path":"fallback-stream"},Date.now()-w,1)}catch(T){h.recordMemorySpan("memory.store",{"memory.operation":"store","memory.path":"fallback-stream"},Date.now()-w,2,T instanceof Error?T.message:String(T)),g.warn("Failed to store fallback stream conversation turn",{error:T instanceof Error?T.message:String(T)})}}}})(this),provider:u,model:t.model,usage:p.usage,finishReason:p.finishReason||"stop",toolCalls:p.toolCalls||[],toolResults:p.toolResults||[],analytics:p.analytics,evaluation:p.evaluation,metadata:{streamId:o,startTime:n,responseTime:l,fallback:!0}}}getEventEmitter(){return this.emitter}async checkCredentials(e){let{provider:t,model:n}=e,o="ping";try{return await this.generate({provider:t,...n&&{model:n},input:{text:o},maxTokens:16,disableTools:!0}),{provider:t,status:"ok",detail:"credentials valid"}}catch(s){let i=s instanceof Error?s.message:String(s),a=i.toLowerCase();return s instanceof Kh?{provider:t,status:"denied",detail:i}:a.includes("authentication")||a.includes("401")||a.includes("invalid api key")||a.includes("incorrect api key")||a.includes("api_key_invalid")||a.includes("token has expired")||a.includes("expired credentials")?{provider:t,status:"expired",detail:i}:a.includes("not configured")||a.includes("missing api")||a.includes("api key is required")||a.includes("no api key")||a.includes("application default credentials")||a.includes("google_application_credentials")||a.includes("project_id")||a.includes("default credentials")||a.includes("service account")?{provider:t,status:"missing",detail:i}:a.includes("econnrefused")||a.includes("enotfound")||a.includes("could not resolve")||a.includes("timeout")||a.includes("network")||a.includes("cannot connect")?{provider:t,status:"network",detail:i}:{provider:t,status:"unknown",detail:i}}}emitToolStart(e,t,n=Date.now()){let o=`${e}-${n}-${Math.random().toString(36).substr(2,9)}`,s={executionId:o,tool:e,startTime:n,metadata:{inputType:typeof t,hasInput:t!=null}};return this.activeToolExecutions.set(o,s),this.currentStreamToolExecutions.push(s),this.emitter.emit("tool:start",om(e,{input:t,timestamp:n,executionId:o})),g.debug(`tool:start emitted for ${e}`,{toolName:e,executionId:o,timestamp:n,inputProvided:t!==void 0}),o}emitToolEnd(e,t,n,o,s=Date.now(),i){let a=o||s-1e3,l=s-a,u=!n,d;i?d=this.activeToolExecutions.get(i):d=Array.from(this.activeToolExecutions.values()).find(f=>f.tool===e&&!f.endTime);let p=i||d?.executionId||`${e}-${a}-fallback-${Math.random().toString(36).substr(2,9)}`;d&&(d.endTime=s,d.result=t,d.error=n,this.activeToolExecutions.delete(d.executionId));let m={tool:e,startTime:a,endTime:s,duration:l,success:u,result:t,error:n,executionId:p,metadata:{toolCategory:"custom"}};this.toolExecutionHistory.push(m),this.emitter.emit("tool:end",om(e,{result:t,error:n,success:u,responseTime:l,timestamp:s,duration:l,executionId:p})),g.debug(`tool:end emitted for ${e}`,{toolName:e,executionId:p,duration:l,success:u,hasResult:t!==void 0,hasError:!!n})}getCurrentToolExecutions(){return[...this.currentStreamToolExecutions]}getToolExecutionHistory(){return[...this.toolExecutionHistory]}clearCurrentStreamExecutions(){this.currentStreamToolExecutions=[]}registerTool(e,t,n){this.invalidateToolCache(),this.emitter.emit("tools-register:start",{toolName:e,timestamp:Date.now()});try{if(!e||typeof e!="string")throw new Error("Invalid tool name");if(!t||typeof t!="object")throw new Error(`Invalid tool object provided for tool: ${e}`);if(typeof t.execute!="function")throw new Error(`Tool '${e}' must have an execute method.`);if(e.trim()==="")throw new Error("Tool name cannot be empty");if(e.length>100)throw new Error("Tool name is too long (maximum 100 characters)");if(/[\x00-\x1F\x7F]/.test(e))throw new Error("Tool name contains invalid control characters");let o={name:t.name||e,description:t.description||e,execute:t.execute,inputSchema:"parameters"in t&&t.parameters&&(jd(t.parameters)||typeof t.parameters=="object")?t.parameters:t.inputSchema||{}};if(n?.timeout!==void 0&&n.timeout>0&&Number.isFinite(n.timeout)&&typeof o.execute=="function"){let i=o.execute,a=n.timeout,l=e;o.execute=async(...u)=>{let d=AbortSignal.timeout(a),p=u[1],m=p?.abortSignal,f=m?AbortSignal.any([m,d]):d,h={...p,abortSignal:f};return Promise.race([i(u[0],h),new Promise((y,v)=>{f.addEventListener("abort",()=>{d.aborted?v(pe.toolTimeout(l,a)):v(new DOMException("The operation was aborted","AbortError"))},{once:!0})})])}}let s=cAe(e,o,n?.timeout,n?.maxRetries);this.toolRegistry.registerServer(s),this.emitter.emit("tools-register:end",{toolName:e,success:!0,timestamp:Date.now(),timeoutMs:n?.timeout})}catch(o){throw g.error(`Failed to register tool ${e}:`,o),o}}setToolContext(e){this.toolExecutionContext={...e},g.debug("Tool execution context updated",{sessionId:e.sessionId,contextKeys:Object.keys(e),hasJuspayToken:!!e.juspayToken,hasShopId:!!e.shopId})}getToolContext(){return this.toolExecutionContext?{...this.toolExecutionContext}:void 0}clearToolContext(){this.toolExecutionContext=void 0,g.debug("Tool execution context cleared")}registerTools(e){if(Array.isArray(e))for(let{name:t,tool:n}of e)this.registerTool(t,n);else for(let[t,n]of Object.entries(e))this.registerTool(t,n)}unregisterTool(e){this.invalidateToolCache();let t=`custom-tool-${e}`,n=this.toolRegistry.unregisterServer(t);return n&&g.info(`Unregistered custom tool: ${e}`),n}useToolMiddleware(e){return this.mcpToolMiddlewares.push(e),g.debug(`[NeuroLink] Registered tool middleware (total: ${this.mcpToolMiddlewares.length})`),this}getToolMiddlewares(){return[...this.mcpToolMiddlewares]}async flushToolBatch(){this.mcpToolBatcher&&await this.mcpToolBatcher.flush()}getMCPEnhancementsConfig(){return this.mcpEnhancementsConfig}async updateAgenticLoopReport(e,t,n){if(!this.conversationMemory)throw new Gi("Conversation memory is not initialized. Enable conversationMemory in NeuroLink options.","CONFIG_ERROR");if(!("updateAgenticLoopReport"in this.conversationMemory)||typeof this.conversationMemory.updateAgenticLoopReport!="function")throw new Gi("updateAgenticLoopReport is only supported with Redis conversation memory.","CONFIG_ERROR");await Oe(this.conversationMemory.updateAgenticLoopReport(e,n,t),5e3)}getCustomTools(){let e=this.toolRegistry.getToolsByCategory(js({isCustomTool:!0})),t=new Map;for(let o of e){let s=o.inputSchema||o.parameters;g.debug("Processing tool schema for Claude",{toolName:o.name,hasDescription:!!o.description,description:o.description,hasParameters:!!o.parameters,parametersType:typeof o.parameters,parametersKeys:o.parameters&&typeof o.parameters=="object"?Object.keys(o.parameters):"NOT_OBJECT",hasInputSchema:!!o.inputSchema,inputSchemaType:typeof o.inputSchema,inputSchemaKeys:o.inputSchema&&typeof o.inputSchema=="object"?Object.keys(o.inputSchema):"NOT_OBJECT",hasEffectiveSchema:!!s,effectiveSchemaType:typeof s,effectiveSchemaHasProperties:!!s?.properties,effectiveSchemaHasRequired:!!s?.required,originalInputSchema:o.inputSchema,phase:"AFTER_SCHEMA_FIX",timestamp:Date.now()}),t.set(o.name,{name:o.name,description:o.description||"",inputSchema:typeof o.inputSchema=="object"&&o.inputSchema!==null?o.inputSchema:typeof o.parameters=="object"&&o.parameters!==null?o.parameters:{},execute:async(i,a)=>{let l=this.toolExecutionContext||{},u=a&&Ut(a)?a:{},d={...l,...u,sessionId:u.sessionId||l.sessionId||`fallback-${Date.now()}`};return g.debug("Tool execution context merged",{toolName:o.name,storedContextKeys:Object.keys(l),runtimeContextKeys:Object.keys(u),finalContextKeys:Object.keys(d),hasJuspayToken:!!d.juspayToken,hasShopId:!!d.shopId,sessionId:d.sessionId}),await this.toolRegistry.executeTool(o.name,i,d)}})}this.cachedFileTools||(this.cachedFileTools=yX(this.fileRegistry));let n=this.cachedFileTools;for(let[o,s]of Object.entries(n))if(!t.has(o)){let i=s,a=i.inputSchema??i.parameters;t.set(o,{name:o,description:s.description||`File tool: ${o}`,inputSchema:typeof a=="object"&&a!==null?a:{type:"object",properties:{}},execute:async l=>await s.execute(l,{toolCallId:`file-tool-${Date.now()}`,messages:[]})})}return t}async addInMemoryMCPServer(e,t){this.invalidateToolCache();try{ne.debug(`[NeuroLink] Registering in-memory MCP server: ${e}`),t.tools||(t.tools=[]),await this.toolRegistry.registerServer(t),ne.info(`[NeuroLink] Successfully registered in-memory server: ${e}`,{category:t.metadata?.category,provider:t.metadata?.provider,version:t.metadata?.version})}catch(n){throw ne.error(`[NeuroLink] Failed to register in-memory server ${e}:`,n),n}}getInMemoryServers(){let e=this.getInMemoryServerInfos(),t=new Map;for(let n of e)t.set(n.id,n);return t}getInMemoryServerInfos(){return this.toolRegistry.getBuiltInServerInfos().filter(t=>js({existingCategory:t.metadata?.category,serverId:t.id})==="in-memory")}getAutoDiscoveredServerInfos(){return this.autoDiscoveredServerInfos}async executeTool(e,t={},n){if(this.mcpToolBatcher&&!n?.bypassBatcher)return this.mcpToolBatcher.execute(e,t);let o=this.createToolExecutionContext(e,t,n);return ye.mcp.startActiveSpan("neurolink.tool.execute",{attributes:{"tool.name":e,"tool.type":o.toolType,"tool.input_size":o.inputSize,"tool.input_preview":o.truncatedInput}},s=>this.executeToolWithSpan(e,t,n,o,s))}createToolExecutionContext(e,t,n){let o=this.externalServerManager.getAllTools().find(a=>a.name===e),s=o?"mcp":this.getCustomTools().has(e)?"custom":"external",i=typeof t=="string"?t:t?JSON.stringify(t):"";return{functionTag:"NeuroLink.executeTool",executionStartTime:Date.now(),externalTool:o,toolType:s,inputSize:i.length,truncatedInput:i.length>2048?i.substring(0,2048):i,options:n}}async executeToolWithSpan(e,t,n,o,s){try{let i=await this.prepareToolExecutionState(e,t,n,o);return await this.runPreparedToolExecution(e,t,i,o,s)}catch(i){if(!(i instanceof Ve)){let a=i instanceof Error?i.message:String(i);s.recordException(i instanceof Error?i:new Error(a)),s.setStatus({code:be.ERROR,message:a})}throw i}finally{s.end()}}async prepareToolExecutionState(e,t,n,o){g.debug(`[${o.functionTag}] Tool execution requested:`,{toolName:e,params:Ut(t)?vxe(t):t,hasExternalManager:!!this.externalServerManager}),g.debug("Tool execution detailed analysis",{toolName:e,executionStartTime:o.executionStartTime,paramsAnalysis:{type:typeof t,isNull:t===null,isUndefined:t===void 0,isEmpty:t&&typeof t=="object"&&Object.keys(t).length===0,keys:t&&typeof t=="object"?Object.keys(t):"NOT_OBJECT",keysLength:t&&typeof t=="object"?Object.keys(t).length:0},isTargetTool:e==="juspay-analytics_SuccessRateSRByTime",options:n,hasExternalManager:!!this.externalServerManager}),this.emitter.emit("tool:start",om(e,{timestamp:o.executionStartTime,input:t}));let s=this.toolRegistry.getToolInfo(e),i={timeout:n?.timeout??s?.tool?.timeoutMs??Pl.EXECUTION_BATCH_MS,maxRetries:n?.maxRetries??s?.tool?.maxRetries??Qn.DEFAULT,retryDelayMs:n?.retryDelayMs||mn.BASE_MS,authContext:n?.authContext,disableToolCache:n?.disableToolCache},{MemoryManager:a}=await Promise.resolve().then(()=>(hw(),gw)),l=a.getMemoryUsageMB(),d=`${o.externalTool?.serverId||s?.tool?.serverId||"unknown"}.${e}`,p=this.toolCircuitBreakers.get(d);p||(p=new Ub(XC.FAILURE_THRESHOLD,RD),this.toolCircuitBreakers.set(d,p));let m=this.toolExecutionMetrics.get(e);return m||(m={totalExecutions:0,successfulExecutions:0,failedExecutions:0,averageExecutionTime:0,lastExecutionTime:0,errorCategories:{}},this.toolExecutionMetrics.set(e,m)),m.totalExecutions++,{finalOptions:i,startMemory:l,circuitBreaker:p,breakerKey:d,metrics:m}}async runPreparedToolExecution(e,t,n,o,s){let i=0;try{ne.debug(`[${o.functionTag}] Executing tool: ${e}`,{toolName:e,params:t,options:n.finalOptions,circuitBreakerState:n.circuitBreaker.getState()});let a=await n.circuitBreaker.execute(async()=>i5(async()=>Oe(this.executeToolInternal(e,t,n.finalOptions),n.finalOptions.timeout,pe.toolTimeout(e,n.finalOptions.timeout)),{maxAttempts:n.finalOptions.maxRetries+1,delayMs:n.finalOptions.retryDelayMs,isRetriable:$D,onRetry:(l,u)=>{i=l,ne.warn(`[${o.functionTag}] Retrying tool execution (attempt ${l})`,{toolName:e,error:u.message,attempt:l})}}));return s.setAttribute("tool.retry_count",i),await this.handleSuccessfulToolExecution(e,a,n,o,s)}catch(a){return s.setAttribute("tool.retry_count",i),this.handleFailedToolExecution(e,t,a,n,o,s)}}async handleSuccessfulToolExecution(e,t,n,o,s){let i=Date.now()-o.executionStartTime;n.metrics.successfulExecutions++,n.metrics.lastExecutionTime=i,n.metrics.averageExecutionTime=(n.metrics.averageExecutionTime*(n.metrics.successfulExecutions-1)+i)/n.metrics.successfulExecutions;let{MemoryManager:a}=await Promise.resolve().then(()=>(hw(),gw)),u=a.getMemoryUsageMB().heapUsed-n.startMemory.heapUsed;u>20&&ne.warn(`Tool '${e}' used excessive memory: ${u}MB`,{toolName:e,memoryDelta:u,executionTime:i}),ne.debug(`[${o.functionTag}] Tool executed successfully`,{toolName:e,executionTime:i,memoryDelta:u,circuitBreakerState:n.circuitBreaker.getState()});let d=t&&typeof t=="object"?t:void 0,p=d&&"isError"in d&&d.isError===!0||d&&"success"in d&&d.success===!1,m=p?d?.content:void 0,f=p?m?.filter(h=>h.type==="text"&&h.text).map(h=>h.text).join(" ")||(typeof d?.error=="string"?d.error:"Unknown error"):void 0;if(p){try{await n.circuitBreaker.execute(async()=>{throw new Error(`Tool ${e} returned isError:true`)})}catch{}ne.debug(`[${o.functionTag}] Circuit breaker failure recorded for isError result`,{toolName:e,circuitBreakerState:n.circuitBreaker.getState(),circuitBreakerFailures:n.circuitBreaker.getFailureCount()});let h=B8t(f??"Unknown error"),y=`[TOOL_ERROR: ${e} failed (${h})] `;if(d&&Array.isArray(m)){let w=m.map(T=>({...T}));for(let T of w)if(T.type==="text"&&T.text){T.text=y+T.text;break}d.content=w}s.setAttribute("tool.error.message",(f??"Unknown error").substring(0,500)),s.setAttribute("tool.error.category",h),s.setStatus({code:be.ERROR,message:`MCP tool returned isError: ${(f??"Unknown error").substring(0,200)}`}),n.metrics.failedExecutions++;let v=n.metrics.successfulExecutions;n.metrics.successfulExecutions=Math.max(0,n.metrics.successfulExecutions-1),n.metrics.averageExecutionTime=v>1?(n.metrics.averageExecutionTime*v-i)/(v-1):0;let b=j8t(h);n.metrics.errorCategories[b]=(n.metrics.errorCategories[b]||0)+1}return this.emitToolEndEvent(e,o.executionStartTime,!p,t,p&&f?new Error(f):void 0),s.setAttribute("tool.result.status",p?"error":"success"),s.setAttribute("tool.duration_ms",i),t}async handleFailedToolExecution(e,t,n,o,s,i){o.metrics.failedExecutions++;let a=Date.now()-s.executionStartTime;if(n instanceof qi)return ne.warn(`[${s.functionTag}] Tool blocked by circuit breaker: ${e}`,{toolName:e,breakerState:n.breakerState,retryAfter:n.retryAfter,retryAfterMs:n.retryAfterMs,failureCount:n.failureCount,executionTime:a}),o.metrics.errorCategories.execution=(o.metrics.errorCategories.execution||0)+1,this.emitToolEndEvent(e,s.executionStartTime,!1,void 0,new Error(`Circuit breaker open for ${e} (state=${n.breakerState}, failures=${n.failureCount})`)),i.setAttribute("tool.result.status","circuit_breaker_open"),i.setAttribute("tool.duration_ms",a),i.setAttribute("tool.circuit_breaker.state",n.breakerState),i.setAttribute("tool.circuit_breaker.retry_after_ms",n.retryAfterMs),i.setAttribute("tool.circuit_breaker.failure_count",n.failureCount),i.setStatus({code:be.ERROR,message:`Circuit breaker open for ${e}: ${n.message}`}),{isError:!0,content:[{type:"text",text:`TOOL TEMPORARILY UNAVAILABLE: "${e}" has been disabled after ${n.failureCount} failures. This is a circuit breaker protection \u2014 do NOT retry this tool. It will become available again after ${Math.ceil(n.retryAfterMs/1e3)} seconds (at ${n.retryAfter}). Instead, inform the user that the operation failed and suggest trying again later.`}]};let l;if(n instanceof Ve)l=n;else if(n instanceof Error)if(n.message.includes("timeout"))l=pe.toolTimeout(e,o.finalOptions.timeout);else if(n.message.includes("not found")){let d=await this.getAllAvailableTools();l=pe.toolNotFound(e,hxe(d.map(p=>({name:p.name}))))}else n.message.includes("validation")||n.message.includes("parameter")?l=pe.invalidParameters(e,n,t):n.message.includes("network")||n.message.includes("connection")?l=pe.networkError(e,n):l=pe.toolExecutionFailed(e,n);else l=pe.toolExecutionFailed(e,new Error(String(n)));let u=l.category||"execution";throw o.metrics.errorCategories[u]=(o.metrics.errorCategories[u]||0)+1,this.emitToolEndEvent(e,s.executionStartTime,!1,void 0,l),this.emitter.listenerCount("error")>0&&this.emitter.emit("error",l),l=new Ve({...l,context:{...l.context,executionTime:a,params:t,options:o.finalOptions,circuitBreakerState:o.circuitBreaker.getState(),circuitBreakerFailures:o.circuitBreaker.getFailureCount(),metrics:{...o.metrics}}}),a5(l),i.setAttribute("tool.result.status","error"),i.setAttribute("tool.duration_ms",a),i.recordException(l),i.setStatus({code:be.ERROR,message:l.message}),l}async executeToolInternal(e,t,n){let o="NeuroLink.executeToolInternal",s=this.getToolAnnotationsForExecution(e),i=this.mcpToolResultCache&&!n.disableToolCache&&!this._disableToolCacheForCurrentRequest&&!s?.destructiveHint,a=this.mcpToolResultCache,l=n.authContext||this.toolExecutionContext?{__args:t,__ctx:n.authContext??this.toolExecutionContext}:t;if(i&&a){let p=a.getCachedResult(e,l);if(p!==void 0)return g.debug(`[${o}] Cache HIT for tool: ${e}`),p}let u=async p=>{if(this.mcpToolMiddlewares.length===0)return p();let m=0,f=async()=>{if(m<this.mcpToolMiddlewares.length){let h=this.mcpToolMiddlewares[m++];return h({name:e,description:"",inputSchema:{},annotations:s,execute:async()=>({})},t,{toolMeta:{name:e,annotations:s}},f)}return p()};return await f()},d=async()=>{let p=this.externalServerManager.getAllTools(),m=p.filter(h=>h.name===e&&h.isAvailable),f;if(m.length>1&&this.mcpToolRouter)try{let h={name:e,description:m[0].description??"",serverId:m[0].serverId,inputSchema:{}},y=this.mcpToolRouter.route(h);f=m.find(v=>v.serverId===y.serverId)||m[0],g.debug(`[${o}] Router selected server: ${y.serverId}`,{strategy:y.strategy,confidence:y.confidence})}catch(h){g.warn(`[${o}] Router failed, falling back to first match`,{error:h}),f=m[0]}else f=m[0];if(g.debug(`[${o}] External MCP tool search:`,{toolName:e,externalToolsCount:p.length,foundTool:!!f,isAvailable:f?.isAvailable,serverId:f?.serverId}),f&&f.isAvailable)try{ne.debug(`[${o}] Executing external MCP tool: ${e} from ${f.serverId}`);let h=await this.externalServerManager.executeTool(f.serverId,e,t,{timeout:n.timeout});return g.debug(`[${o}] External MCP tool execution successful:`,{toolName:e,serverId:f.serverId,resultType:typeof h}),h}catch(h){throw g.error(`[${o}] External MCP tool execution failed:`,{toolName:e,serverId:f.serverId,error:h instanceof Error?h.message:String(h)}),pe.toolExecutionFailed(e,h instanceof Error?h:new Error(String(h)),f.serverId)}try{let h=this.toolExecutionContext||{},y=n.authContext||{},v={...h,...y};g.debug("[Using merged context for unified registry tool:",{toolName:e,storedContextKeys:Object.keys(h),finalContextKeys:Object.keys(v)});let b=await this.toolRegistry.executeTool(e,t,v);if(b&&typeof b=="object"&&"success"in b&&b.success===!1){let w=b.error||"Tool execution failed",T=new Error(w);this.emitter.listenerCount("error")>0&&this.emitter.emit("error",T)}return b}catch(h){let y=h instanceof Error?h:new Error(String(h));if(this.emitter.listenerCount("error")>0&&this.emitter.emit("error",y),h instanceof Error&&h.message.includes("not found")){let v=await this.getAllAvailableTools();throw pe.toolNotFound(e,v.map(b=>b.name))}throw pe.toolExecutionFailed(e,h instanceof Error?h:new Error(String(h)))}};try{let p=await u(d);return i&&a&&p!==void 0&&(a.cacheResult(e,l,p),g.debug(`[${o}] Cached result for tool: ${e}`)),p}catch(p){let m=s?{name:e,description:"",annotations:s,execute:async()=>({})}:void 0;if(m&&TR(m)&&p instanceof Error&&$D(p)){g.debug(`[${o}] Tool ${e} is safe to retry, attempting once more`);try{let f=await u(d);return i&&a&&f!==void 0&&a.cacheResult(e,l,f),f}catch{}}throw p}}getToolAnnotationsForExecution(e){if(this.toolCache?.tools){let t=this.toolCache.tools.find(n=>n.name===e);if(t?.annotations)return t.annotations}if(this.mcpEnhancementsConfig?.annotations?.autoInfer!==!1)return ul({name:e,description:""})}invalidateToolCache(){this.toolCache=null,g.debug("Tool cache invalidated")}async getAllAvailableTools(){if(this.toolCache&&Date.now()-this.toolCache.timestamp<this.toolCacheDuration)return g.debug("Returning available tools from cache"),this.toolCache.tools;let e=`get-all-tools-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,t=Date.now(),n=process.hrtime.bigint();g.debug("[NeuroLink] \u{1F6E0}\uFE0F LOG_POINT_A001_GET_ALL_TOOLS_START",{logPoint:"A001_GET_ALL_TOOLS_START",getAllToolsId:e,timestamp:new Date().toISOString(),getAllToolsStartTime:t,getAllToolsHrTimeStart:n.toString(),toolRegistryState:{hasToolRegistry:!!this.toolRegistry,toolRegistrySize:0,toolRegistryType:this.toolRegistry?.constructor?.name||"NOT_SET",hasExternalServerManager:!!this.externalServerManager,externalServerManagerType:this.externalServerManager?.constructor?.name||"NOT_SET"},mcpState:{mcpInitialized:this.mcpInitialized,hasProviderRegistry:!!Ur,providerRegistrySize:0},message:"Starting comprehensive tool discovery across all sources"});let{MemoryManager:o}=await Promise.resolve().then(()=>(hw(),gw)),s=o.getMemoryUsageMB();try{let i=new Map,a=await this.toolRegistry.listTools();for(let y of a)if(!i.has(y.name)){let v=fk(y,{serverId:y.serverId==="direct"?"neurolink-direct":y.serverId});i.set(y.name,v)}let l=this.toolRegistry.getToolsByCategory(js({isCustomTool:!0}));for(let y of l)if(!i.has(y.name)){let v=fk(y,{description:"Custom tool",serverId:`custom-tool-${y.name}`,category:js({isCustomTool:!0,serverId:y.serverId}),inputSchema:{}});i.set(y.name,v)}let u=this.toolRegistry.getToolsByCategory("in-memory");for(let y of u)if(!i.has(y.name)){let v=fk(y,{description:"In-memory MCP tool",serverId:"unknown",category:"in-memory",inputSchema:{}});i.set(y.name,v)}let d=this.externalServerManager.getAllTools();for(let y of d)if(!i.has(y.name)){let v=fk(y,{category:js({existingCategory:typeof y.metadata?.category=="string"?y.metadata.category:void 0,isExternal:!0,serverId:y.serverId}),inputSchema:{}});i.set(y.name,v)}let p=Array.from(i.values());ne.debug("Tool discovery results",{mcpTools:a.length,customTools:l.length,inMemoryTools:u.length,externalMCPTools:d.length,total:p.length});let f=o.getMemoryUsageMB().heapUsed-s.heapUsed;if(f>Dd.LOW_USAGE_MB&&(ne.debug(`\u{1F50D} Tool listing used ${f}MB memory (large tool registry detected)`),p.length>FW.LARGE_TOOL_COLLECTION&&ne.debug("\u{1F4A1} Tool collection optimized for large sets. Memory usage reduced through efficient object reuse.")),this.mcpEnhancementsConfig?.annotations?.autoInfer!==!1)for(let y of p)y.annotations||(y.annotations=ul({name:y.name,description:y.description||""}));let h=p;return this.toolCache={tools:h,timestamp:Date.now()},h}catch(i){return ne.error("Failed to list available tools",{error:i}),[]}}async getProviderStatus(e){let{MemoryManager:t}=await Promise.resolve().then(()=>(hw(),gw)),n=t.getMemoryUsageMB();e?.quiet||ne.debug("\u{1F50D} DEBUG: Initializing MCP for provider status..."),await this.initializeMCP(),e?.quiet||ne.debug("\u{1F50D} DEBUG: MCP initialized:",this.mcpInitialized);let{AIProviderFactory:o}=await Promise.resolve().then(()=>(Wc(),Zz)),{hasProviderEnvVars:s}=await Promise.resolve().then(()=>(Lm(),uA)),i=["openai","bedrock","vertex","googleVertex","anthropic","azure","google-ai","huggingface","ollama","mistral","litellm"],a=cp(Hc.DEFAULT_CONCURRENCY_LIMIT),l=i.map(m=>a(async()=>{let f=Date.now();try{if(!await this.hasProviderEnvVars(m)&&m!=="ollama")return{provider:m,status:"not-configured",configured:!1,authenticated:!1,error:"Missing required environment variables",responseTime:Date.now()-f};if(m==="ollama")try{let w=await fetch("http://localhost:11434/api/tags",{method:"GET",signal:AbortSignal.timeout(Ka.AUTH_MS)});if(!w.ok)throw new Error("Ollama service not responding");let T=await w.json(),_=T?.models;if(!Array.isArray(_))throw g.warn("Ollama API returned invalid models format in testProvider",{responseData:T,modelsType:typeof _}),new Error("Invalid models format from Ollama API");let k=_.filter(R=>R&&typeof R=="object"&&typeof R.name=="string");return k.length>0?{provider:m,status:"working",configured:!0,authenticated:!0,responseTime:Date.now()-f,model:k[0].name}:{provider:m,status:"failed",configured:!0,authenticated:!1,error:"Ollama service running but no models installed",responseTime:Date.now()-f}}catch(w){return{provider:m,status:"failed",configured:!1,authenticated:!1,error:w instanceof Error?w.message:"Ollama service not running",responseTime:Date.now()-f}}let y=5e3,v=this.testProviderConnection(m),b=new Promise((w,T)=>{setTimeout(()=>T(new Error("Provider test timeout (5s)")),y)});return await Promise.race([v,b]),{provider:m,status:"working",configured:!0,authenticated:!0,responseTime:Date.now()-f}}catch(h){let y=h instanceof Error?h.message:String(h);return{provider:m,status:"failed",configured:!0,authenticated:!1,error:y,responseTime:Date.now()-f}}})),u=await Promise.all(l),p=t.getMemoryUsageMB().heapUsed-n.heapUsed;return!e?.quiet&&p>20&&ne.debug(`\u{1F50D} Memory usage: +${p}MB (consider cleanup for large operations)`),p>50&&t.forceGC(),u}async testProvider(e){try{return await this.testProviderConnection(e),!0}catch{return!1}}async testProviderConnection(e){let{AIProviderFactory:t}=await Promise.resolve().then(()=>(Wc(),Zz));await(await t.createProvider(e,null)).generate({prompt:"test",maxTokens:1,disableTools:!0})}async getBestProvider(e){let{getBestProvider:t}=await Promise.resolve().then(()=>(Lm(),uA));return t(e)}async getAvailableProviders(){let{getAvailableProviders:e}=await Promise.resolve().then(()=>(Lm(),uA));return e()}async isValidProvider(e){let{isValidProvider:t}=await Promise.resolve().then(()=>(Lm(),uA));return t(e)}async getMCPStatus(){try{await this.initializeMCP();let e=await this.toolRegistry.listTools(),t=this.externalServerManager.getStatistics(),n=this.externalServerManager.listServers(),o=this.getInMemoryServerInfos(),s=this.toolRegistry.getBuiltInServerInfos(),i=this.getAutoDiscoveredServerInfos(),a=n.length+o.length+s.length+i.length,l=t.connectedServers+o.length+s.length,u=e.length+t.totalTools;return{mcpInitialized:this.mcpInitialized,totalServers:a,availableServers:l,autoDiscoveredCount:i.length,totalTools:u,autoDiscoveredServers:i,customToolsCount:this.toolRegistry.getToolsByCategory(js({isCustomTool:!0})).length,inMemoryServersCount:o.length,externalMCPServersCount:n.length,externalMCPConnectedCount:t.connectedServers,externalMCPFailedCount:t.failedServers,externalMCPServers:n}}catch(e){return{mcpInitialized:!1,totalServers:0,availableServers:0,autoDiscoveredCount:0,totalTools:0,autoDiscoveredServers:[],customToolsCount:this.toolRegistry.getToolsByCategory(js({isCustomTool:!0})).length,inMemoryServersCount:0,externalMCPServersCount:0,externalMCPConnectedCount:0,externalMCPFailedCount:0,externalMCPServers:[],error:e instanceof Error?e.message:String(e)}}}async listMCPServers(){return[...this.externalServerManager.listServers(),...this.getInMemoryServerInfos(),...this.toolRegistry.getBuiltInServerInfos(),...this.getAutoDiscoveredServerInfos()]}async testMCPServer(e){try{if(e==="neurolink-direct")return(await this.toolRegistry.listTools()).length>0;let t=this.getInMemoryServers();if(t.has(e)){let o=t.get(e);return!!(o?.tools&&o.tools.length>0)}let n=this.externalServerManager.getServer(e);return n?n.status==="connected"&&n.client!==null:!1}catch(t){return ne.error(`[NeuroLink] Error testing MCP server ${e}:`,t),!1}}async hasProviderEnvVars(e){let{ProviderHealthChecker:t}=await Promise.resolve().then(()=>(Lg(),dw));try{let n=await t.checkProviderHealth(e,{includeConnectivityTest:!1,cacheResults:!1});return n.isConfigured&&n.hasApiKey}catch(n){return g.warn(`Provider env var check failed for ${e}`,{error:n instanceof Error?n.message:String(n)}),!1}}async checkProviderHealth(e,t={}){let{ProviderHealthChecker:n}=await Promise.resolve().then(()=>(Lg(),dw)),o=await n.checkProviderHealth(e,t);return{provider:o.provider,isHealthy:o.isHealthy,isConfigured:o.isConfigured,hasApiKey:o.hasApiKey,lastChecked:o.lastChecked,error:o.error,warning:o.warning,responseTime:o.responseTime,configurationIssues:o.configurationIssues,recommendations:o.recommendations}}async checkAllProvidersHealth(e={}){let{ProviderHealthChecker:t}=await Promise.resolve().then(()=>(Lg(),dw));return(await t.checkAllProvidersHealth(e)).map(o=>({provider:o.provider,isHealthy:o.isHealthy,isConfigured:o.isConfigured,hasApiKey:o.hasApiKey,lastChecked:o.lastChecked,error:o.error,warning:o.warning,responseTime:o.responseTime,configurationIssues:o.configurationIssues,recommendations:o.recommendations}))}async getProviderHealthSummary(){let{ProviderHealthChecker:e}=await Promise.resolve().then(()=>(Lg(),dw)),t=await e.checkAllProvidersHealth({cacheResults:!0,includeConnectivityTest:!1}),n=e.getHealthSummary(t),o=[];return n.healthy===0?o.push("No providers are healthy. Check your environment configuration."):n.healthy<2&&o.push("Consider configuring additional providers for better reliability."),n.hasIssues>0&&o.push("Some providers have configuration issues. Run checkAllProvidersHealth() for details."),{...n,recommendations:o}}async clearProviderHealthCache(e){let{ProviderHealthChecker:t}=await Promise.resolve().then(()=>(Lg(),dw));t.clearHealthCache(e)}getToolExecutionMetrics(){let e={};for(let[t,n]of this.toolExecutionMetrics.entries())e[t]={...n,errorCategories:{...n.errorCategories},successRate:n.totalExecutions>0?n.successfulExecutions/n.totalExecutions:0};return e}setModelAliasConfig(e){this.modelAliasConfig=e,g.info(`[ModelAlias] Configured ${Object.keys(e.aliases).length} model aliases`)}getToolCircuitBreakerStatus(){let e={};for(let[t,n]of this.toolCircuitBreakers.entries())e[t]={state:n.getState(),failureCount:n.getFailureCount(),isHealthy:n.getState()==="closed"};return e}resetToolCircuitBreaker(e){this.toolCircuitBreakers.has(e)&&(this.toolCircuitBreakers.set(e,new Ub(XC.FAILURE_THRESHOLD,RD)),ne.info(`Circuit breaker reset for tool: ${e}`))}clearToolExecutionMetrics(){this.toolExecutionMetrics.clear(),ne.info("All tool execution metrics cleared")}async getToolHealthReport(){let e={},t=0,n=await this.toolRegistry.listTools(),o=new Set(n.map(i=>i.name)),s=new Map;for(let i of n)s.has(i.name)||s.set(i.name,i.serverId||"unknown");for(let i of o){let a=this.toolExecutionMetrics.get(i),l=`${s.get(i)||"unknown"}.${i}`,u=this.toolCircuitBreakers.get(l),d=a&&a.totalExecutions>0?a.successfulExecutions/a.totalExecutions:0,p=(!u||u.getState()==="closed")&&d>=.8;p&&t++;let m=[],f=[];if(u&&u.getState()==="open"&&(m.push("Circuit breaker is open due to repeated failures"),f.push("Check tool implementation and fix underlying issues")),d<.8&&a&&a.totalExecutions>0&&(m.push(`Low success rate: ${(d*100).toFixed(1)}%`),f.push("Review error logs and improve tool reliability")),a&&a.averageExecutionTime>1e4&&(m.push("High average execution time"),f.push("Optimize tool performance or increase timeout")),a&&a.errorCategories){let h=a.errorCategories;h.timeout>0&&(m.push(`Timeout errors: ${h.timeout}`),f.push("Consider increasing the tool timeout configuration")),h.validation>0&&(m.push(`Validation errors: ${h.validation}`),f.push("Review input schemas and parameter validation")),h.network>0&&(m.push(`Network errors: ${h.network}`),f.push("Check network connectivity and endpoint availability"))}e[i]={name:i,isHealthy:p,metrics:{totalExecutions:a?.totalExecutions||0,successRate:d,averageExecutionTime:a?.averageExecutionTime||0,lastExecutionTime:a?.lastExecutionTime||0,errorCategories:a?.errorCategories?{...a.errorCategories}:{}},circuitBreaker:{state:u?.getState()||"closed",failureCount:u?.getFailureCount()||0},issues:m,recommendations:f}}return{totalTools:o.size,healthyTools:t,unhealthyTools:o.size-t,tools:e}}async ensureConversationMemoryInitialized(){try{let e=`manual-init-${Date.now()}`;return await this.initializeConversationMemoryForGeneration(e,Date.now(),process.hrtime.bigint()),!!this.conversationMemory}catch(e){return g.error("Failed to initialize conversation memory",{error:e instanceof Error?e.message:String(e)}),!1}}async getConversationStats(){let e=`stats-init-${Date.now()}`;if(await this.initializeConversationMemoryForGeneration(e,Date.now(),process.hrtime.bigint()),!this.conversationMemory)throw new Ve({code:xt.MISSING_CONFIGURATION,message:"Conversation memory is not enabled",category:"validation",severity:"high",retriable:!1});return await this.conversationMemory.getStats()}async getConversationHistory(e){let t=`history-init-${Date.now()}`;if(await this.initializeConversationMemoryForGeneration(t,Date.now(),process.hrtime.bigint()),!this.conversationMemory)throw new Ve({code:xt.MISSING_CONFIGURATION,message:"Conversation memory is not enabled",category:"validation",severity:"high",retriable:!1});if(!e||typeof e!="string")throw new Ve({code:xt.INVALID_PARAMETERS,message:"Session ID must be a non-empty string",category:"validation",severity:"medium",retriable:!1,context:{sessionId:e}});try{let n=await this.conversationMemory.buildContextMessages(e);return g.debug("Retrieved conversation history",{sessionId:e,messageCount:n.length,turnCount:n.length/2}),n}catch(n){return g.error("Failed to retrieve conversation history",{sessionId:e,error:n instanceof Error?n.message:String(n)}),[]}}async clearConversationSession(e){let t=`clear-session-init-${Date.now()}`;if(await this.initializeConversationMemoryForGeneration(t,Date.now(),process.hrtime.bigint()),!this.conversationMemory)throw new Ve({code:xt.MISSING_CONFIGURATION,message:"Conversation memory is not enabled",category:"validation",severity:"high",retriable:!1});return this.lastCompactionMessageCount.delete(e),await this.conversationMemory.clearSession(e)}async clearAllConversations(){let e=`clear-all-init-${Date.now()}`;if(await this.initializeConversationMemoryForGeneration(e,Date.now(),process.hrtime.bigint()),!this.conversationMemory)throw new Ve({code:xt.MISSING_CONFIGURATION,message:"Conversation memory is not enabled",category:"validation",severity:"high",retriable:!1});this.lastCompactionMessageCount.clear(),await this.conversationMemory.clearAllSessions()}async storeToolExecutions(e,t,n,o,s){let i=n&&n.length>0||o&&o.length>0;if(!i){g.debug("Tool execution storage skipped",{hasToolData:i,toolCallsCount:n?.length||0,toolResultsCount:o?.length||0});return}let a=this.conversationMemory;try{await a.storeToolExecution(e,t,n,o,s)}catch(l){g.warn("Failed to store tool executions",{sessionId:e,userId:t,error:l instanceof Error?l.message:String(l)})}}isToolExecutionStorageAvailable(){let e=process.env.STORAGE_TYPE==="redis",t=this.conversationMemory&&this.conversationMemory.constructor.name==="RedisConversationMemoryManager";return!!(e&&t)}async getSessionMessages(e,t){let n=`get-msgs-init-${Date.now()}`;if(await this.initializeConversationMemoryForGeneration(n,Date.now(),process.hrtime.bigint()),!this.conversationMemory)throw new Ve({code:xt.MISSING_CONFIGURATION,message:"Conversation memory is not enabled",category:"validation",severity:"high",retriable:!1});if(!e||typeof e!="string")throw new Ve({code:xt.INVALID_PARAMETERS,message:"Session ID must be a non-empty string",category:"validation",severity:"medium",retriable:!1,context:{sessionId:e}});return await this.conversationMemory.getSessionMessages(e,t)}async setSessionMessages(e,t,n){let o=`set-msgs-init-${Date.now()}`;if(await this.initializeConversationMemoryForGeneration(o,Date.now(),process.hrtime.bigint()),!this.conversationMemory)throw new Ve({code:xt.MISSING_CONFIGURATION,message:"Conversation memory is not enabled",category:"validation",severity:"high",retriable:!1});if(!e||typeof e!="string")throw new Ve({code:xt.INVALID_PARAMETERS,message:"Session ID must be a non-empty string",category:"validation",severity:"medium",retriable:!1,context:{sessionId:e}});await this.conversationMemory.setSessionMessages(e,t,n)}async modifyLastAssistantMessage(e,t,n){let o=await this.getSessionMessages(e,n);for(let s=o.length-1;s>=0;s--)if(o[s].role==="assistant")return o[s]={...o[s],content:t(o[s].content)},await this.setSessionMessages(e,o,n),!0;return!1}async addExternalMCPServer(e,t){this.invalidateToolCache();try{ne.info(`[NeuroLink] Adding external MCP server: ${e}`,{command:t.command,transport:t.transport});let n=await this.externalServerManager.addServer(e,t);if(n.success){if(ne.info(`[NeuroLink] External MCP server added successfully: ${e}`,{toolsDiscovered:n.metadata?.toolsDiscovered||0,duration:n.duration}),this.mcpEnhancementsConfig?.router?.enabled!==!1){let o=this.externalServerManager.listServers();if(o.length>=2&&!this.mcpToolRouter){this.mcpToolRouter=new Dg({strategy:this.mcpEnhancementsConfig?.router?.strategy??"least-loaded",enableAffinity:this.mcpEnhancementsConfig?.router?.enableAffinity??!1});for(let s of o)this.mcpToolRouter.registerServer(s.id||e);g.debug("[NeuroLink] ToolRouter auto-initialized (2+ external servers)")}else this.mcpToolRouter&&this.mcpToolRouter.registerServer(e)}this.emitter.emit("externalMCP:serverAdded",{serverId:e,serverName:t.name||e,config:t,toolCount:n.metadata?.toolsDiscovered||0,timestamp:Date.now()})}else ne.error(`[NeuroLink] Failed to add external MCP server: ${e}`,{error:n.error});return n}catch(n){throw ne.error(`[NeuroLink] Error adding external MCP server: ${e}`,n),n}}async removeExternalMCPServer(e){this.invalidateToolCache();try{ne.info(`[NeuroLink] Removing external MCP server: ${e}`);let t=this.externalServerManager.getServerName(e),n=await this.externalServerManager.removeServer(e);return n.success?(ne.info(`[NeuroLink] External MCP server removed successfully: ${e}`),this.emitter.emit("externalMCP:serverRemoved",{serverId:e,serverName:t,timestamp:Date.now()})):ne.error(`[NeuroLink] Failed to remove external MCP server: ${e}`,{error:n.error}),n}catch(t){throw ne.error(`[NeuroLink] Error removing external MCP server: ${e}`,t),t}}listExternalMCPServers(){let e=this.externalServerManager.getServerStatuses(),t=this.externalServerManager.listServers();return e.map(n=>{let o=t.find(s=>s.id===n.serverId);return{serverId:n.serverId,status:n.status,toolCount:n.toolCount,uptime:n.performance.uptime,isHealthy:n.isHealthy,config:o||{}}})}getExternalMCPServer(e){return this.externalServerManager.getServer(e)}async executeExternalMCPTool(e,t,n,o){try{ne.debug(`[NeuroLink] Executing external MCP tool: ${t} on ${e}`);let s=this.getToolAnnotationsForExecution(t),i=!!this.mcpToolResultCache&&!this._disableToolCacheForCurrentRequest&&!s?.destructiveHint,a={__serverId:e,__args:n,...this.toolExecutionContext?{__ctx:this.toolExecutionContext}:{}};if(i&&this.mcpToolResultCache){let u=this.mcpToolResultCache.getCachedResult(t,a);if(u!==void 0)return ne.debug(`[NeuroLink] Tool result cache HIT: ${t} on ${e}`),u}let l=await this.externalServerManager.executeTool(e,t,n,o);return i&&this.mcpToolResultCache&&this.mcpToolResultCache.cacheResult(t,a,l),ne.debug(`[NeuroLink] External MCP tool executed successfully: ${t}`),l}catch(s){throw ne.error(`[NeuroLink] External MCP tool execution failed: ${t}`,s),s}}getExternalMCPTools(){return this.externalServerManager.getAllTools()}getExternalMCPServerTools(e){return this.externalServerManager.getServerTools(e)}async testExternalMCPConnection(e){try{let{MCPClientFactory:t}=await Oe(Promise.resolve().then(()=>(K2(),nAe)),1e4),n=await t.testConnection(e,1e4);return{success:n.success,error:n.error,toolCount:n.capabilities?1:0}}catch(t){return{success:!1,error:t instanceof Error?t.message:String(t)}}}getExternalMCPStatistics(){return this.externalServerManager.getStatistics()}async shutdownExternalMCPServers(){try{ne.info("[NeuroLink] Shutting down all external MCP servers..."),this.unregisterAllExternalMCPToolsFromRegistry(),await this.externalServerManager.shutdown(),ne.info("[NeuroLink] All external MCP servers shut down successfully")}catch(e){throw ne.error("[NeuroLink] Error shutting down external MCP servers:",e),e}}async getElicitationManager(){return(await Oe(Promise.resolve().then(()=>(LQ(),dOe)),1e4)).globalElicitationManager}async registerElicitationHandler(e){(await this.getElicitationManager()).registerHandler(e)}async getMultiServerManager(){return(await Oe(Promise.resolve().then(()=>(f2(),u0e)),1e4)).globalMultiServerManager}async getEnhancedToolDiscovery(){let e=await Oe(Promise.resolve().then(()=>(g2(),d0e)),1e4);return new e.EnhancedToolDiscovery(this.toolRegistry)}async getMCPRegistryClient(){return(await Oe(Promise.resolve().then(()=>(zQ(),pOe)),1e4)).globalMCPRegistryClient}async exposeAgentAsTool(e,t){return(await Oe(Promise.resolve().then(()=>(nB(),GQ)),1e4)).exposeAgentAsTool(e,t)}async exposeWorkflowAsTool(e,t){return(await Oe(Promise.resolve().then(()=>(nB(),GQ)),1e4)).exposeWorkflowAsTool(e,t)}async getToolIntegrationManager(){return(await Oe(Promise.resolve().then(()=>(YQ(),mOe)),1e4)).globalToolIntegrationManager}async convertToolsToMCPFormat(e,t={}){let n=await Oe(Promise.resolve().then(()=>(aB(),aee)),1e4),o=e.map(s=>({...s,execute:s.execute??(async()=>({success:!1,error:"No execute function provided"}))}));return n.batchConvertToMCP(o,t)}async convertToolsFromMCPFormat(e,t={}){return(await Oe(Promise.resolve().then(()=>(aB(),aee)),1e4)).batchConvertToNeuroLink(e,t)}async getToolAnnotations(e){let{inferAnnotations:t,mergeAnnotations:n,getAnnotationSummary:o}=await Oe(Promise.resolve().then(()=>(OS(),l0e)),1e4),s=this.toolRegistry.getToolInfo(e);if(!s)return null;let i=s.tool.annotations,a=t({name:s.tool.name,description:s.tool.description??""}),l=n(a,i);return{annotations:l,summary:o(l)}}convertExternalMCPToolsToAISDKFormat(){let e=this.externalServerManager.getAllTools(),t={};for(let n of e)if(n.isAvailable){let o={description:n.description,execute:async s=>{try{ne.debug(`[NeuroLink] Executing external MCP tool via AI SDK: ${n.name}`,{params:s});let i=await this.externalServerManager.executeTool(n.serverId,n.name,s,{timeout:3e4});return ne.debug(`[NeuroLink] External MCP tool execution result: ${n.name}`,{success:!!i,hasData:!!(i&&typeof i=="object"&&"content"in i)}),i}catch(i){throw ne.error(`[NeuroLink] External MCP tool execution failed: ${n.name}`,i),i}}};t[n.name]=o,ne.debug(`[NeuroLink] Converted external MCP tool to AI SDK format: ${n.name} from server ${n.serverId}`)}return ne.info(`[NeuroLink] Converted ${Object.keys(t).length} external MCP tools to AI SDK format`),t}convertJSONSchemaToAISDKFormat(e){}unregisterExternalMCPToolsFromRegistry(e){try{let t=this.externalServerManager.getServerTools(e);for(let n of t)this.toolRegistry.removeTool(n.name),ne.debug(`[NeuroLink] Unregistered external MCP tool from main registry: ${n.name}`)}catch(t){ne.error(`[NeuroLink] Failed to unregister external MCP tools from registry for server ${e}:`,t)}}unregisterExternalMCPToolFromRegistry(e){try{this.toolRegistry.removeTool(e),ne.debug(`[NeuroLink] Unregistered external MCP tool from main registry: ${e}`)}catch(t){ne.error(`[NeuroLink] Failed to unregister external MCP tool ${e} from registry:`,t)}}async lazyInitializeConversationMemory(e,t,n){try{let{initializeConversationMemory:o}=await SOe().then(()=>TOe),s=await o(this.conversationMemoryConfig);this.conversationMemory=s,this.conversationMemoryNeedsInit=!1}catch(o){throw g.error("[NeuroLink] \u274C LOG_POINT_G005_MEMORY_LAZY_INIT_ERROR",{logPoint:"G005_MEMORY_LAZY_INIT_ERROR",generateInternalId:e,timestamp:new Date().toISOString(),elapsedMs:Date.now()-t,elapsedNs:(process.hrtime.bigint()-n).toString(),error:o instanceof Error?o.message:String(o),errorName:o instanceof Error?o.name:"UnknownError",errorStack:o instanceof Error?o.stack:void 0,message:"Lazy conversation memory initialization failed"}),o}}unregisterAllExternalMCPToolsFromRegistry(){try{let e=this.externalServerManager.getAllTools();for(let t of e)this.toolRegistry.removeTool(t.name);ne.debug(`[NeuroLink] Unregistered ${e.length} external MCP tools from main registry`)}catch(e){ne.error("[NeuroLink] Failed to unregister all external MCP tools from registry:",e)}}async createEvaluationPipeline(e){let{EvaluationPipeline:t,getPreset:n}=await Oe(Promise.resolve().then(()=>(jb(),ak)),1e4,pe.evaluationTimeout("evaluation module load",1e4)),o;typeof e=="string"?o=n(e):o=e;let s=new t(o);return await Oe(s.initialize(),3e4,pe.evaluationTimeout("pipeline initialization",3e4)),g.debug(`[NeuroLink] Created evaluation pipeline: ${o.name??"custom"}`),s}async evaluate(e,t){let{EvaluationPipeline:n,getPreset:o}=await Oe(Promise.resolve().then(()=>(jb(),ak)),1e4,pe.evaluationTimeout("evaluation module load",1e4)),s;if(t?.pipeline&&t?.scorers)throw new Error("Cannot specify both 'pipeline' and 'scorers' options. Use one or the other.");if(t?.scorers&&t.scorers.length===0)throw new Error("The 'scorers' array must not be empty. Provide at least one scorer ID or omit the option to use the default 'quality' preset.");t?.pipeline?s={...o(t.pipeline)}:t?.scorers&&t.scorers.length>0?s={name:"SDK Evaluation",description:"Evaluation from NeuroLink SDK",scorers:t.scorers.map(u=>({id:u})),executionMode:t.executionMode??"parallel",passThreshold:t.passThreshold??.7}:s=o("quality"),t?.passThreshold!==void 0&&(s.passThreshold=t.passThreshold),t?.executionMode!==void 0&&(s.executionMode=t.executionMode);let i=new n(s);await Oe(i.initialize(),3e4,pe.evaluationTimeout("pipeline initialization",3e4));let a=t?.timeoutMs??6e4,l=await Oe(i.execute(e,{correlationId:t?.correlationId}),a,pe.evaluationTimeout("pipeline execution",a));return g.debug("[NeuroLink] Evaluation completed",{pipeline:s.name,overallScore:l.overallScore,passed:l.passed,scorerCount:l.scores.length}),l}async score(e,t,n){let{ScorerRegistry:o}=await Oe(Promise.resolve().then(()=>(pL(),j5)),1e4,pe.evaluationTimeout("scorer module load",1e4));await Oe(o.registerBuiltInScorers(),3e4,pe.evaluationTimeout("scorer bootstrap",3e4));let s=await Oe(o.getScorer(e,n),3e4,pe.evaluationTimeout(`scorer load: ${e}`,3e4));if(!s)throw pe.scorerNotFound(e);let i=s.validateInput(t);if(!i.valid)throw pe.evaluationValidationFailed(e,i.errors);let a=await Oe(s.score(t),6e4,pe.evaluationTimeout("scorer execution",6e4));return g.debug("[NeuroLink] Scoring completed",{scorerId:e,score:a.score,passed:a.passed,computeTime:a.computeTime}),a}async getAvailableScorers(e){let{ScorerRegistry:t}=await Oe(Promise.resolve().then(()=>(pL(),j5)),1e4,pe.evaluationTimeout("scorer module load",1e4));await Oe(t.registerBuiltInScorers(),3e4,pe.evaluationTimeout("scorer bootstrap",3e4));let n=t.list();return e?.category&&(n=n.filter(o=>o.category===e.category)),e?.type&&(n=n.filter(o=>o.type===e.type)),n}async getEvaluationPresets(){let{getPresetNames:e}=await Oe(Promise.resolve().then(()=>(jb(),ak)),1e4,pe.evaluationTimeout("evaluation module load",1e4));return e()}async getEvaluationPreset(e){let{getPreset:t}=await Oe(Promise.resolve().then(()=>(jb(),ak)),1e4,pe.evaluationTimeout("evaluation module load",1e4));return t(e)}async dispose(){g.debug("[NeuroLink] Starting disposal of resources..."),this.lastCompactionMessageCount.clear();let e=[];try{try{g.debug("[NeuroLink] Flushing and shutting down OpenTelemetry..."),await iR(),await aR(),g.debug("[NeuroLink] OpenTelemetry shutdown successfully")}catch(t){let n=t instanceof Error?t:new Error(`OpenTelemetry shutdown error: ${String(t)}`);e.push(n),g.warn("[NeuroLink] Error shutting down OpenTelemetry:",t)}if(this.externalServerManager)try{g.debug("[NeuroLink] Shutting down external MCP servers..."),await this.externalServerManager.shutdown(),g.debug("[NeuroLink] External MCP servers shutdown successfully")}catch(t){let n=t instanceof Error?t:new Error(`External server shutdown error: ${String(t)}`);e.push(n),g.warn("[NeuroLink] Error shutting down external MCP servers:",t)}if(this.emitter)try{g.debug("[NeuroLink] Removing all event listeners..."),this.emitter.removeAllListeners(),g.clearEventEmitter(),g.debug("[NeuroLink] Event listeners removed successfully")}catch(t){let n=t instanceof Error?t:new Error(`Event emitter cleanup error: ${String(t)}`);e.push(n),g.warn("[NeuroLink] Error removing event listeners:",t)}if(this.toolCircuitBreakers&&this.toolCircuitBreakers.size>0)try{g.debug(`[NeuroLink] Clearing ${this.toolCircuitBreakers.size} circuit breakers...`),this.toolCircuitBreakers.clear(),g.debug("[NeuroLink] Circuit breakers cleared successfully")}catch(t){let n=t instanceof Error?t:new Error(`Circuit breaker cleanup error: ${String(t)}`);e.push(n),g.warn("[NeuroLink] Error clearing circuit breakers:",t)}try{g.debug("[NeuroLink] Clearing maps and caches..."),this.toolExecutionMetrics&&this.toolExecutionMetrics.clear(),this.activeToolExecutions&&this.activeToolExecutions.clear(),this.currentStreamToolExecutions&&(this.currentStreamToolExecutions.length=0),this.toolExecutionHistory&&(this.toolExecutionHistory.length=0),this.toolCache&&(this.toolCache.tools=[],this.toolCache.timestamp=0),this.mcpToolResultCache?.destroy(),this.mcpToolRouter?.destroy(),this.mcpToolBatcher?.destroy(),this.mcpToolResultCache=void 0,this.mcpToolRouter=void 0,this.mcpToolBatcher=void 0,this.mcpEnhancedDiscovery=void 0,this.mcpToolMiddlewares=[],g.debug("[NeuroLink] Maps and caches cleared successfully")}catch(t){let n=t instanceof Error?t:new Error(`Cache cleanup error: ${String(t)}`);e.push(n),g.warn("[NeuroLink] Error clearing caches:",t)}if(this._taskManager)try{g.debug("[NeuroLink] Shutting down TaskManager..."),await Oe(this._taskManager.shutdown(),5e3,new Error("TaskManager shutdown timed out"))}catch(t){g.warn("[NeuroLink] TaskManager shutdown error:",t)}finally{this._taskManager=void 0}try{g.debug("[NeuroLink] Resetting initialization state..."),this.mcpInitialized=!1,this.mcpInitPromise=null,this.conversationMemoryNeedsInit=!1,this.credentials=void 0,g.debug("[NeuroLink] Initialization state reset successfully")}catch(t){let n=t instanceof Error?t:new Error(`State reset error: ${String(t)}`);e.push(n),g.warn("[NeuroLink] Error resetting state:",t)}e.length===0?g.debug("[NeuroLink] \u2705 Resource disposal completed successfully"):g.warn(`[NeuroLink] \u26A0\uFE0F Resource disposal completed with ${e.length} errors`,{errors:e.map(t=>t.message)})}catch(t){throw g.error("[NeuroLink] Critical error during disposal:",t),t}}getToolRegistry(){return this.toolRegistry}async compactSession(e,t){if(!this.conversationMemory)return null;let n=await this.conversationMemory.buildContextMessages(e);if(!n||n.length===0)return null;let o=new wg({...t,summarizationProvider:t?.summarizationProvider??this.conversationMemoryConfig?.conversationMemory?.summarizationProvider,summarizationModel:t?.summarizationModel??this.conversationMemoryConfig?.conversationMemory?.summarizationModel}),s=Pa({provider:t?.provider||"openai",conversationMessages:n}),i=Math.floor(s.availableInputTokens*.6),a=await o.compact(n,i,this.conversationMemoryConfig?.conversationMemory);return a.compacted&&IS(a.messages),a}async getContextStats(e,t,n){if(!this.conversationMemory)return null;let o=await this.conversationMemory.buildContextMessages(e);if(!o||o.length===0)return null;let s=Pa({provider:t||"openai",model:n,conversationMessages:o});return{estimatedInputTokens:s.estimatedInputTokens,availableInputTokens:s.availableInputTokens,usageRatio:s.usageRatio,shouldCompact:s.shouldCompact,messageCount:o.length}}needsCompaction(e,t,n){if(!this.conversationMemory)return!1;let o=this.conversationMemory.getSession?.(e);return o?Pa({provider:t||"openai",model:n,conversationMessages:o.messages}).shouldCompact:!1}async setAuthProvider(e){this.authInitPromise=void 0,await this.initializeAuthProviderFromConfig(e)}async initializeAuthProviderFromConfig(e){let t,n;if("authenticateToken"in e&&typeof e.authenticateToken=="function")t=e,n=t.type;else if("provider"in e)t=e.provider,n=t.type;else{let o=e,{AuthProviderFactory:s}=await Promise.resolve().then(()=>(RA(),wOe));t=await s.createProvider(o.type,o.config),n=o.type}this.authProvider=t,g.info(`Auth provider set: ${n}`),this.emitter.emit("auth:provider:set",{type:t.type,timestamp:Date.now()})}getAuthProvider(){return this.authProvider}async ensureAuthProvider(){if(this.authProvider||!this.pendingAuthConfig)return;let e=this.pendingAuthConfig;this.authInitPromise??=(async()=>{try{await this.initializeAuthProviderFromConfig(e),this.pendingAuthConfig=void 0}finally{this.authInitPromise&&(this.pendingAuthConfig===void 0||this.pendingAuthConfig===e)&&(this.authInitPromise=void 0)}})(),await this.authInitPromise}async setAuthContext(e){let{globalAuthContext:t}=await Promise.resolve().then(()=>(tw(),nz));t.set(e),g.debug("Auth context set",{userId:e.user.id,provider:e.provider,sessionId:e.session?.id})}async getAuthContext(){let{getAuthContext:e}=await Promise.resolve().then(()=>(tw(),nz));return e()}async clearAuthContext(){let{globalAuthContext:e}=await Promise.resolve().then(()=>(tw(),nz)),t=e.get()?.user.id;e.clear(),t&&g.debug(`Auth context cleared for user: ${t}`)}getExternalServerManager(){return this.externalServerManager}buildResolutionContext(e,t){return{requestContext:t||{},signal:e}}async resolveDynamicOptions(e){let t=["model","provider","temperature","maxTokens","systemPrompt","timeout","thinkingLevel","disableTools","enableAnalytics","enableEvaluation"];if(!(t.some(s=>typeof e[s]=="function")||typeof e.tools=="function"))return;let o=e.dynamicContext;await this.resolveDynamicFields(e,t,o)}async resolveDynamicFields(e,t,n){let o=this.buildResolutionContext(e.abortSignal,n);if(g.debug("[NeuroLink] Resolving dynamic arguments"),await Promise.all(t.map(async s=>{if(typeof e[s]=="function"){let i=await g7(e[s],o);e[s]=i.value,g.debug(`[NeuroLink] Resolved dynamic ${s}: ${i.resolutionType}`)}})),typeof e.tools=="function"){let s=await g7(e.tools,o);if(!Array.isArray(s.value))throw new TypeError(`Dynamic tools resolver must return string[] (tool names), got ${typeof s.value=="object"?"object":typeof s.value}`);e.enabledToolNames=s.value,delete e.tools}}},EOe=new Ov,G8t=EOe});function V8t(r){return typeof r=="string"&&r.length>0}function kw(r){return V8t(r)?/^gemini-3(\.\d+)?(-.*)?$/i.test(r):!1}var gee=A(()=>{"use strict"});function Vo(r,e,t){return!t||!e||Object.keys(e).length===0?"none":r.toolChoice??"auto"}var od=A(()=>{"use strict"});function COe(r){if(!(!r?.enabled&&!r?.thinkingLevel))return{includeThoughts:!0,thinkingLevel:r.thinkingLevel??H8t}}var H8t,kOe=A(()=>{"use strict";H8t="high"});function bp(r){if(Array.isArray(r.anyOf)||Array.isArray(r.oneOf)){let t=r.anyOf?"anyOf":"oneOf",n=r[t],o=n.filter(l=>l.type!=="null"&&l.type!=="undefined");if(o.length===1){let l=bp({...o[0]});return l.nullable=!0,r.description&&(l.description=r.description),l}let s=o.map(l=>l.type||"unknown").join(" | "),i={type:"string"},a=r.description?`${r.description} (accepts: ${s})`:`Value as string (accepts: ${s})`;return i.description=a,n.some(l=>l.type==="null")&&(i.nullable=!0),i}let e={};for(let[t,n]of Object.entries(r))if(!(t==="$schema"||t==="additionalProperties"||t==="default"))if(t==="properties"&&n&&typeof n=="object"){let o={};for(let[s,i]of Object.entries(n))i&&typeof i=="object"?o[s]=bp(i):o[s]=i;e[t]=o}else t==="items"&&n&&typeof n=="object"?Array.isArray(n)?e[t]=n.map(o=>o&&typeof o=="object"?bp(o):o):e[t]=bp(n):e[t]=n;Array.isArray(e.allOf)&&(e.allOf=e.allOf.map(t=>bp(t))),e.not&&typeof e.not=="object"&&(e.not=bp(e.not));for(let t of["if","then","else"])e[t]&&typeof e[t]=="object"&&(e[t]=bp(e[t]));return e}function pB(r){let e={},t=[];for(let[n,o]of Object.entries(r))try{let i=o.parameters;if(i&&typeof i=="object"&&"_def"in i&&typeof i.parse=="function"){let a=Lf(i),l=Fo(a),u=bp(l);e[n]={description:o.description||`Tool: ${n}`,inputSchema:ga(u),execute:o.execute}}else if(i&&typeof i=="object"&&"jsonSchema"in i){let a=i.jsonSchema,l=bp(Fo(a));e[n]={description:o.description||`Tool: ${n}`,inputSchema:ga(l),execute:o.execute}}else e[n]=o}catch(s){g.warn(`[Gemini] Failed to sanitize tool "${n}", skipping: ${s instanceof Error?s.message:String(s)}`),t.push(n)}return{tools:e,dropped:t}}function AOe(r){let e={},t=[];for(let[n,o]of Object.entries(r)){let s=o,i=s.parameters||o.inputSchema,a;jd(i)?a=Lf(i):i&&typeof i=="object"?a=i:a={type:"object",properties:{}},a.jsonSchema&&typeof a.jsonSchema=="object"&&!a.type&&(a=a.jsonSchema);let l=JSON.stringify(a),u=OL(a);JSON.stringify(u)!==l&&t.push(n);let d=ga(u);e[n]={...o,inputSchema:d,...s.parameters?{parameters:d}:{}}}return{tools:e,normalized:t}}function Rw(r){let e=[],t=new Map,n=[];for(let[o,s]of Object.entries(r))try{let i={name:o,description:s.description||`Tool: ${o}`},a=s;if(a.parameters||s.inputSchema){let l,u=a.parameters||s.inputSchema;jd(u)?l=Lf(u):typeof u=="object"?l=u:l={type:"object",properties:{}},l.jsonSchema&&typeof l.jsonSchema=="object"&&!l.type&&(l=l.jsonSchema),i.parametersJsonSchema=bp(Fo(l))}e.push(i),s.execute&&t.set(o,s.execute)}catch(i){n.push(o),g.error(`[buildNativeToolDeclarations] Failed to convert tool "${o}":`,i)}return n.length>0&&g.warn(`[buildNativeToolDeclarations] ${n.length} tool(s) skipped due to schema errors: ${n.join(", ")}`),{toolsConfig:[{functionDeclarations:e}],executeMap:t}}function Aw(r,e){let t={temperature:r.temperature??1,maxOutputTokens:r.maxTokens};e&&(t.tools=e),r.systemPrompt&&(t.systemInstruction=r.systemPrompt);let n=COe(r.thinkingConfig);return n&&(t.thinkingConfig=n),t}function Iw(r){let e=r||200;return Number.isFinite(e)&&e>0?Math.min(Math.floor(e),ROe):Math.min(200,ROe)}async function mB(r){let e=[],t=[],n=0,o=0;for await(let s of r){let i=s,u=i.candidates?.[0]?.content;u&&Array.isArray(u.parts)&&e.push(...u.parts),s.functionCalls&&t.push(...s.functionCalls);let d=i.usageMetadata;d&&(n=Math.max(n,d.promptTokenCount||0),o=Math.max(o,d.candidatesTokenCount||0))}return{rawResponseParts:e,stepFunctionCalls:t,inputTokens:n,outputTokens:o}}function fB(){let r=[],e=!1,t,n=null;function o(){if(n){let d=n;n=null,d()}}function s(d){e||(r.push({content:d}),o())}function i(){e=!0,o()}function a(d){e=!0,t=d,o()}let l=0;async function*u(){try{for(;;)if(l<r.length)yield r[l++],l>1024&&l*2>=r.length&&(r.splice(0,l),l=0);else if(e){if(t!==void 0)throw t instanceof Error?t:new Error(String(t));return}else await new Promise(d=>{n=d})}finally{e=!0,r.length=0,n?.()}}return{push:s,close:i,error:a,iterable:u()}}async function gB(r,e){let t=[],n=[],o=0,s=0;for await(let i of r){let a=i,d=a.candidates?.[0]?.content;if(d&&Array.isArray(d.parts))for(let m of d.parts)t.push(m),typeof m.text=="string"&&m.text.length>0&&e.push(m.text);i.functionCalls&&n.push(...i.functionCalls);let p=a.usageMetadata;p&&(o=Math.max(o,p.promptTokenCount||0),s=Math.max(s,p.candidatesTokenCount||0))}return{rawResponseParts:t,stepFunctionCalls:n,inputTokens:o,outputTokens:s}}function hee(r){for(let e=r.length-1;e>=0;e--){let t=r[e];if(t!=null&&typeof t=="object"&&"thoughtSignature"in t&&typeof t.thoughtSignature=="string")return t.thoughtSignature}}function Pw(r){return r.filter(e=>typeof e.text=="string").map(e=>e.text).join("")}async function Mw(r,e,t,n,o,s){let i=[];for(let a of e){o.push({toolName:a.name,args:a.args});let l=n.get(a.name);if(l&&l.count>=2){g.warn(`${r} Tool "${a.name}" has exceeded retry limit (${2}), skipping execution`);let d={error:`TOOL_PERMANENTLY_FAILED: The tool "${a.name}" has failed ${l.count} times and will not be retried. Last error: ${l.lastError}. Please proceed without using this tool or inform the user that this functionality is unavailable.`,status:"permanently_failed",do_not_retry:!0};i.push({functionResponse:{name:a.name,response:d}}),s?.toolExecutions?.push({name:a.name,input:a.args,output:d});continue}let u=t.get(a.name);if(u)try{let d={toolCallId:`${a.name}-${Xa()}`,messages:[],abortSignal:s?.abortSignal},p=await u(a.args,d);i.push({functionResponse:{name:a.name,response:{result:p}}}),s?.toolExecutions?.push({name:a.name,input:a.args,output:p})}catch(d){let p=d instanceof Error?d.message:"Unknown error",m=n.get(a.name)||{count:0,lastError:""};m.count++,m.lastError=p,n.set(a.name,m),g.warn(`${r} Tool "${a.name}" failed (attempt ${m.count}/${2}): ${p}`);let f=m.count>=2,h={error:f?`TOOL_PERMANENTLY_FAILED: The tool "${a.name}" has failed ${m.count} times with error: ${p}. This tool will not be retried. Please proceed without using this tool or inform the user that this functionality is unavailable.`:`TOOL_EXECUTION_ERROR: ${p}. Retry attempt ${m.count}/${2}.`,status:f?"permanently_failed":"failed",do_not_retry:f,retry_count:m.count,max_retries:2};i.push({functionResponse:{name:a.name,response:h}}),s?.toolExecutions?.push({name:a.name,input:a.args,output:h})}else{let d={error:`TOOL_NOT_FOUND: The tool "${a.name}" does not exist. Do not attempt to call this tool again.`,status:"permanently_failed",do_not_retry:!0};i.push({functionResponse:{name:a.name,response:d}}),s?.toolExecutions?.push({name:a.name,input:a.args,output:d})}}return i}function Ow(r,e,t,n,o){return e>=t&&!n?(g.warn(`${r} Tool call loop terminated after reaching maxSteps (${t}). Model was still calling tools. Using accumulated text from last step.`),o||`[Tool execution limit reached after ${t} steps. The model continued requesting tool calls beyond the limit.]`):n}function Nw(r,e,t){r.push({role:"model",parts:e.length>0?e:t.map(n=>({functionCall:n}))})}var ROe,yee=A(()=>{"use strict";Ld();Tn();Q();em();kOe();ROe=100});var IOe={};le(IOe,{GoogleAIStudioProvider:()=>yB,default:()=>W8t});async function hB(r){let t=(await Promise.resolve().then(()=>(Uk(),Fk))).GoogleGenAI;if(!t)throw new Ve({code:xt.INVALID_CONFIGURATION,message:"@google/genai does not export GoogleGenAI",category:"configuration",severity:"critical",retriable:!1,context:{module:"@google/genai",expectedExport:"GoogleGenAI"}});let n=t;return new n({apiKey:r})}var yB,W8t,POe=A(async()=>{"use strict";EN();Tn();xc();sv();await AS();Ht();Ta();xr();bt();Q();gee();Qa();hc();od();nc();yee();yB=class extends an{credentials;constructor(e,t,n){super(e,"google-ai",t),this.credentials=n,g.debug("GoogleAIStudioProvider initialized",{model:this.modelName,provider:this.providerName,sdkProvided:!!t})}getProviderName(){return"google-ai"}getDefaultModel(){return process.env.GOOGLE_AI_MODEL||"gemini-2.5-flash"}getAISDKModel(){let e=this.getApiKey();return Oh({apiKey:e})(this.modelName)}formatProviderError(e){if(e instanceof zr)return new Qo(e.message,this.providerName);let t=e,n=typeof t?.message=="string"?t.message:"Unknown error";return n.includes("API_KEY_INVALID")?new kn("Invalid Google AI API key. Please check your GOOGLE_AI_API_KEY environment variable.",this.providerName):n.includes("RATE_LIMIT_EXCEEDED")?new Za("Google AI rate limit exceeded. Please try again later.",this.providerName):new ur(`Google AI error: ${n}`,this.providerName)}async executeImageGeneration(e){let t=e.prompt||e.input?.text||"",n=e.model||this.modelName,o=Date.now(),s=this.getApiKey();g.info("\u{1F3A8} Starting Google AI Studio image generation",{model:n,prompt:t.substring(0,100),provider:this.providerName});let i;try{i=await hB(s)}catch{throw new kn("Missing '@google/genai'. Install with: npm install @google/genai",this.providerName)}try{let a=await Promise.all((e.input?.images||[]).map(async m=>{if(typeof m=="object"&&"url"in m){let y=m.url;if(y.startsWith("http")){let w=await fetch(y);if(!w.ok)throw new Error(`Failed to fetch image from ${y}: ${w.status} ${w.statusText}`);let T=await w.arrayBuffer(),_=Buffer.from(T),k=this.detectImageType(_);return g.debug(`Downloaded and detected image MIME type: ${k}`),{inlineData:{mimeType:k,data:_.toString("base64")}}}let v=Buffer.from(y,"base64");return{inlineData:{mimeType:this.detectImageType(v),data:v.toString("base64")}}}if(typeof m=="string"&&m.startsWith("http")){let y=await fetch(m);if(!y.ok)throw new Error(`Failed to fetch image from ${m}: ${y.status} ${y.statusText}`);let v=await y.arrayBuffer(),b=Buffer.from(v),w=this.detectImageType(b);return g.debug(`Downloaded and detected image MIME type: ${w}`),{inlineData:{mimeType:w,data:b.toString("base64")}}}let f=Buffer.isBuffer(m)?m:typeof m=="string"?Buffer.from(m,"base64"):Buffer.from(""),h=this.detectImageType(f);return g.debug(`Detected image MIME type: ${h}`),{inlineData:{mimeType:h,data:f.toString("base64")}}})),l=[{role:"user",parts:[{text:t},...a]}],u={responseModalities:["IMAGE","TEXT"]};g.debug("Starting image generation request",{model:n,contentParts:l[0].parts.length,responseModalities:u.responseModalities});let d=null,p="";try{let m=await i.models.generateContentStream({model:n,contents:l,config:u});for await(let f of m){g.debug("Received chunk",{hasCandidate:!!f.candidates?.[0],hasContent:!!f.candidates?.[0]?.content,hasParts:!!f.candidates?.[0]?.content?.parts});let h=f.candidates?.[0];if(h?.content?.parts)for(let y of h.content.parts){if("inlineData"in y&&y.inlineData?.data){let v=y.inlineData.data;d=v;let b=y.inlineData.mimeType||"image/png";g.info("Image generation successful",{model:n,mimeType:b,dataLength:v.length,responseTime:Date.now()-o});let w={content:`Generated image using ${n} (${b})`,imageOutput:{base64:v},provider:this.providerName,model:n,usage:{input:this.estimateTokenCount(t),output:0,total:this.estimateTokenCount(t)}};return await this.enhanceResult(w,e,o)}"text"in y&&y.text&&(p+=y.text,g.debug("Received text content",{text:y.text.substring(0,100)}))}}}catch(m){g.debug("Streaming failed, trying non-streaming approach",{error:m instanceof Error?m.message:String(m)})}if(!d){g.debug("Trying non-streaming approach");let f=(await i.models.generateContent({model:n,contents:l,config:u})).candidates?.[0];if(f?.content?.parts)for(let h of f.content.parts){if("inlineData"in h&&h.inlineData?.data){let y=h.inlineData.data;d=y;let v=h.inlineData.mimeType||"image/png";g.info("Image generation successful (non-streaming)",{model:n,mimeType:v,dataLength:y.length,responseTime:Date.now()-o});let b={content:`Generated image using ${n} (${v})`,imageOutput:{base64:y},provider:this.providerName,model:n,usage:{input:this.estimateTokenCount(t),output:0,total:this.estimateTokenCount(t)}};return await this.enhanceResult(b,e,o)}"text"in h&&h.text&&(p+=h.text)}}throw g.warn("No image data found in response",{model:n,prompt:t.substring(0,100),hasTextContent:!!p,textContent:p.substring(0,200)}),new ur(p||`Image generation completed but no image data was returned. This may indicate an issue with the model "${n}" or the prompt: "${t}". Please try again or use a different model.`,this.providerName)}catch(a){throw g.error("Image generation failed",{error:a instanceof Error?a.message:String(a),model:n,prompt:t.substring(0,100)}),this.handleProviderError(a)}}detectImageType(e){return e.length>=8&&e[0]===137&&e[1]===80&&e[2]===78&&e[3]===71?"image/png":e.length>=3&&e[0]===255&&e[1]===216&&e[2]===255?"image/jpeg":e.length>=12&&e[0]===82&&e[1]===73&&e[2]===70&&e[3]===70&&e[8]===87&&e[9]===69&&e[10]===66&&e[11]===80?"image/webp":e.length>=6&&e[0]===71&&e[1]===73&&e[2]===70?"image/gif":"image/png"}estimateTokenCount(e){return fr(e,"google-ai")}async executeStream(e,t){let n=e.model||this.modelName,o=t||e.output?.format==="json"||e.schema,s=!e.disableTools&&this.supportsTools()&&!o,i=e.tools||{},a=s&&Object.keys(i).length>0;if(kw(n)&&a){let m={...e,tools:i};if((e.output?.format==="json"||e.schema)&&m.tools&&Object.keys(m.tools).length>0&&!m.disableTools&&(g.warn("[GoogleAIStudio] Gemini does not support tools and JSON schema output simultaneously. Disabling tools for this request."),m={...m,disableTools:!0,tools:{}}),!m.disableTools&&m.tools&&Object.keys(m.tools).length>0)return g.info("[GoogleAIStudio] Routing Gemini 3 to native SDK for tool calling",{model:n,totalToolCount:Object.keys(m.tools??{}).length}),this.executeNativeGemini3Stream(m);e=m}if(e.input?.audio)return await this.executeAudioStreamViaGeminiLive(e);this.validateStreamOptions(e);let l=Date.now(),u=await this.getAISDKModelWithMiddleware(e),d=this.getTimeout(e),p=fn(d,this.providerName,"stream");try{o&&!e.disableTools&&this.supportsTools()&&g.warn("[GoogleAIStudio] Structured output active \u2014 disabling tools (Gemini limitation).");let m=!e.disableTools&&this.supportsTools()&&!o,f=m?e.tools??{}:{},h;if(Object.keys(f).length>0){let R=pB(f);R.dropped.length>0&&g.warn(`[GoogleAIStudio] Dropped ${R.dropped.length} incompatible tool(s): ${R.dropped.join(", ")}`),h=Object.keys(R.tools).length>0?R.tools:void 0}else h=void 0;let y=await this.buildMessagesForStream(e),v=[],b=[],w,T=await Gn({model:u,messages:y,temperature:e.temperature,maxOutputTokens:e.maxTokens,tools:h,stopWhen:bn(e.maxSteps||200),toolChoice:Vo(e,h,m),abortSignal:wn(e.abortSignal,p?.controller.signal),experimental_telemetry:this.telemetryHandler.getTelemetryConfig(e),experimental_repairToolCall:this.getToolCallRepairFn(e),onError:R=>{w=R.error,g.error("GoogleAiStudio: Stream error",{error:R.error instanceof Error?R.error.message:String(R.error)})},...e.thinkingConfig?.enabled&&{providerOptions:{google:{thinkingConfig:{...e.thinkingConfig.thinkingLevel&&{thinkingLevel:e.thinkingConfig.thinkingLevel},...e.thinkingConfig.budgetTokens&&!e.thinkingConfig.thinkingLevel&&{thinkingBudget:e.thinkingConfig.budgetTokens},includeThoughts:!0}}}},onStepFinish:({toolCalls:R,toolResults:I})=>{for(let C of R)v.push({toolCallId:C.toolCallId,toolName:C.toolName,args:C.args??C.input??C.parameters??{}});for(let C of I){let E=C;b.push({toolName:C.toolName,status:E.error?"failure":"success",output:E.output??E.result??void 0,error:E.error,id:E.toolCallId??C.toolName})}_n(this.neurolink?.getEventEmitter(),I),this.handleToolExecutionStorage(R,I,e,new Date).catch(C=>{g.warn("[GoogleAiStudioProvider] Failed to store tool executions",{provider:this.providerName,error:C instanceof Error?C.message:String(C)})})}});Promise.resolve(T.text).catch(R=>{g.debug("Stream text promise rejected (expected for empty streams)",{error:R instanceof Error?R.message:String(R)})}).finally(()=>p?.cleanup());let _=this.createTextStream(T,()=>w),k=Hl.createAnalytics(this.providerName,this.modelName,T,Date.now()-l,{requestId:`google-ai-stream-${Date.now()}`,streamingMode:!0});return{stream:_,provider:this.providerName,model:this.modelName,...m&&{toolCalls:v,toolResults:b},analytics:k,metadata:{startTime:l,streamId:`google-ai-${Date.now()}`}}}catch(m){throw p?.cleanup(),this.handleProviderError(m)}}async executeNativeGemini3Stream(e){let t=e.model||this.modelName;return ba({name:"neurolink.provider.stream",tracer:ye.provider,attributes:{[me.GEN_AI_SYSTEM]:"google-ai",[me.GEN_AI_MODEL]:t,[me.GEN_AI_OPERATION]:"stream",[me.NL_PROVIDER]:this.providerName}},async n=>{let o=Date.now(),s=this.getTimeout(e),i=fn(s,this.providerName,"stream");{let a=this.getApiKey(),l=await hB(a);g.debug("[GoogleAIStudio] Using native @google/genai for Gemini 3",{model:t,hasTools:!!e.tools&&Object.keys(e.tools).length>0});let u=[{role:"user",parts:[{text:e.input.text}]}],d,p=new Map;if(e.tools&&Object.keys(e.tools).length>0&&!e.disableTools){let R=Rw(e.tools);d=R.toolsConfig,p=R.executeMap,g.debug("[GoogleAIStudio] Converted tools for native SDK",{toolCount:d[0].functionDeclarations.length,toolNames:d[0].functionDeclarations.map(I=>I.name)})}let m=Aw(e,d),f=Iw(e.maxSteps),h=wn(e.abortSignal,i?.controller.signal),y=fB(),v=[],b,w,T=new Promise((R,I)=>{b=R,w=I}),_={streamId:`native-${Date.now()}`,startTime:o,responseTime:0,totalToolExecutions:0};return(async()=>{let R="",I=0,C=0,E=0,M=!1,O=new Map;try{for(;E<f;){if(h?.aborted)throw h.reason instanceof Error?h.reason:new Error("Request aborted");E++,g.debug(`[GoogleAIStudio] Native SDK step ${E}/${f}`);try{let q=await l.models.generateContentStream({model:t,contents:u,config:m,...h?{httpOptions:{signal:h}}:{}}),B=await gB(q,y);I+=B.inputTokens,C+=B.outputTokens;let F=Pw(B.rawResponseParts);if(B.stepFunctionCalls.length===0){M=!0;break}R=F;for(let $ of B.stepFunctionCalls)n.addEvent("gen_ai.tool_call",{"tool.name":$.name,"tool.step":E});g.debug(`[GoogleAIStudio] Executing ${B.stepFunctionCalls.length} function calls`),Nw(u,B.rawResponseParts,B.stepFunctionCalls);let U=await Mw("[GoogleAIStudio]",B.stepFunctionCalls,p,O,v,{abortSignal:h});u.push({role:"user",parts:U})}catch(q){throw g.error("[GoogleAIStudio] Native SDK error",q),this.handleProviderError(q)}}let D=E>=f&&!M;if(D){let q=Ow("[GoogleAIStudio]",E,f,"",R);q&&y.push(q)}let N=Date.now()-o;_.responseTime=N,_.totalToolExecutions=v.length,n.setAttribute(me.GEN_AI_INPUT_TOKENS,I),n.setAttribute(me.GEN_AI_OUTPUT_TOKENS,C),n.setAttribute(me.GEN_AI_FINISH_REASON,D?"max_steps":"stop"),b({provider:this.providerName,model:t,tokenUsage:{input:I,output:C,total:I+C},requestDuration:N,timestamp:new Date().toISOString()});let W=this.neurolink?.getEventEmitter();W&&(Cw(e),W.emit("generation:end",{provider:this.providerName,responseTime:N,timestamp:Date.now(),result:{content:"",usage:{input:I,output:C,total:I+C},model:t,provider:this.providerName,finishReason:D?"max_steps":"stop"},success:!0})),y.close()}catch(D){n.recordException(D instanceof Error?D:new Error(String(D))),n.setStatus({code:be.ERROR,message:D instanceof Error?D.message:String(D)});let N=this.neurolink?.getEventEmitter();N&&(Cw(e),N.emit("generation:end",{provider:this.providerName,responseTime:Date.now()-o,timestamp:Date.now(),result:{content:"",usage:{input:I,output:C,total:I+C},model:t,provider:this.providerName,finishReason:"error"},success:!1,error:D instanceof Error?D.message:String(D)})),y.error(D),w(D)}finally{i?.cleanup()}})().catch(()=>{}),{stream:y.iterable,provider:this.providerName,model:t,toolCalls:v,analytics:T,metadata:_}}})}async executeNativeGemini3Generate(e){let t=e.model||this.modelName;return ba({name:"neurolink.provider.generate",tracer:ye.provider,attributes:{[me.GEN_AI_SYSTEM]:"google-ai",[me.GEN_AI_MODEL]:t,[me.GEN_AI_OPERATION]:"generate",[me.NL_PROVIDER]:this.providerName}},async n=>{let o=Date.now(),s=this.getTimeout(e),i=fn(s,this.providerName,"generate");try{let a=this.getApiKey(),l=await hB(a);g.debug("[GoogleAIStudio] Using native @google/genai for Gemini 3 generate",{model:t,hasTools:!!e.tools&&Object.keys(e.tools).length>0});let d=[{role:"user",parts:[{text:e.input?.text||e.prompt||""}]}],p,m=new Map;if(!e.disableTools){let O=e.tools||{};if(Object.keys(O).length>0){let D=Rw(O);p=D.toolsConfig,m=D.executeMap,g.debug("[GoogleAIStudio] Converted tools for native SDK generate",{toolCount:p[0].functionDeclarations.length,toolNames:p[0].functionDeclarations.map(N=>N.name)})}}let h=Aw(e,p),y=wn(e.abortSignal,i?.controller.signal),v=Iw(e.maxSteps),b="",w="",T=0,_=0,k=[],R=[],I=0,C=new Map;for(;I<v;){if(y?.aborted)throw y.reason instanceof Error?y.reason:new Error("Request aborted");I++,g.debug(`[GoogleAIStudio] Native SDK generate step ${I}/${v}`);try{let O=await l.models.generateContentStream({model:t,contents:d,config:h,...y?{httpOptions:{signal:y}}:{}}),D=await mB(O);T+=D.inputTokens,_+=D.outputTokens;let N=Pw(D.rawResponseParts);if(D.stepFunctionCalls.length===0){b=N;break}w=N;for(let q of D.stepFunctionCalls)n.addEvent("gen_ai.tool_call",{"tool.name":q.name,"tool.step":I});g.debug(`[GoogleAIStudio] Executing ${D.stepFunctionCalls.length} function calls in generate`),Nw(d,D.rawResponseParts,D.stepFunctionCalls);let W=await Mw("[GoogleAIStudio]",D.stepFunctionCalls,m,C,k,{toolExecutions:R,abortSignal:y});d.push({role:"user",parts:W})}catch(O){throw g.error("[GoogleAIStudio] Native SDK generate error",O),this.handleProviderError(O)}}b=Ow("[GoogleAIStudio]",I,v,b,w);let E=Date.now()-o;n.setAttribute(me.GEN_AI_INPUT_TOKENS,T),n.setAttribute(me.GEN_AI_OUTPUT_TOKENS,_),n.setAttribute(me.GEN_AI_FINISH_REASON,I>=v?"max_steps":"stop");let M=this.neurolink?.getEventEmitter();return M&&M.emit("generation:end",{provider:this.providerName,responseTime:E,timestamp:Date.now(),result:{content:b,usage:{input:T,output:_,total:T+_},model:t,provider:this.providerName,finishReason:I>=v?"max_steps":"stop"},success:!0}),{content:b,provider:this.providerName,model:t,usage:{input:T,output:_,total:T+_},responseTime:E,toolsUsed:k.map(O=>O.toolName),toolExecutions:R,enhancedWithTools:k.length>0}}finally{i?.cleanup()}})}async generate(e){let t=typeof e=="string"?{prompt:e}:e,n=t.model||this.modelName,s=!t.disableTools&&this.supportsTools()&&t.tools&&Object.keys(t.tools).length>0;if(kw(n)&&s){let i={...t,tools:t.tools};return(t.output?.format==="json"||t.schema)&&i.tools&&Object.keys(i.tools).length>0&&!i.disableTools&&(g.warn("[GoogleAIStudio] Gemini does not support tools and JSON schema output simultaneously. Disabling tools for this request."),i={...i,disableTools:!0,tools:{}}),!i.disableTools&&i.tools&&Object.keys(i.tools).length>0?(g.info("[GoogleAIStudio] Routing Gemini 3 generate to native SDK for tool calling",{model:n,totalToolCount:Object.keys(i.tools??{}).length}),this.executeNativeGemini3Generate(i)):super.generate(i)}return super.generate(t)}async executeAudioStreamViaGeminiLive(e){let t=Date.now(),n=this.getApiKey(),o;try{o=await hB(n)}catch{throw new kn("Missing '@google/genai'. Install with: pnpm add @google/genai",this.providerName)}let s=this.modelName||process.env.GOOGLE_VOICE_AI_MODEL||"gemini-2.5-flash-preview-native-audio-dialog",i=[],a=null,l=!1,u=m=>{if(!l){if(m.type==="audio"&&a){let f=a;a=null,f({value:{type:"audio",audio:m.audio},done:!1});return}i.push(m)}},d=await o.live.connect({model:s,callbacks:{onopen:()=>{},onmessage:async m=>{try{let f=m?.serverContent?.modelTurn?.parts?.[0]?.inlineData;if(f?.data){let y={data:Buffer.from(String(f.data),"base64"),sampleRateHz:24e3,channels:1,encoding:"PCM16LE"};u({type:"audio",audio:y})}m?.serverContent?.interrupted}catch(f){u({type:"error",error:f})}},onerror:m=>{u({type:"error",error:m})},onclose:m=>{u({type:"end"})}},config:{responseModalities:["AUDIO"],speechConfig:{voiceConfig:{prebuiltVoiceConfig:{voiceName:"Orus"}}}}});return(async()=>{try{let m=e.input?.audio;if(!m){g.debug("[GeminiLive] No audio spec found on input; skipping upstream send");return}for await(let f of m.frames){if(!f||f.byteLength===0){try{d.sendInput?await d.sendInput({event:"flush"}):d.sendRealtimeInput&&await d.sendRealtimeInput({event:"flush"})}catch(v){g.debug("[GeminiLive] flush control failed (non-fatal)",{error:v instanceof Error?v.message:String(v)})}continue}let h=f.toString("base64"),y=`audio/pcm;rate=${m.sampleRateHz||16e3}`;await d.sendRealtimeInput?.({media:{data:h,mimeType:y}})}try{d.sendInput?await d.sendInput({event:"flush"}):d.sendRealtimeInput&&await d.sendRealtimeInput({event:"flush"})}catch(f){g.debug("[GeminiLive] final flush failed (non-fatal)",{error:f instanceof Error?f.message:String(f)})}}catch(m){u({type:"error",error:m})}})().catch(()=>{}),{stream:{[Symbol.asyncIterator](){return{async next(){if(i.length>0){let m=i.shift();if(!m)return{value:void 0,done:!0};if(m.type==="audio")return{value:{type:"audio",audio:m.audio},done:!1};if(m.type==="end")return l=!0,{value:void 0,done:!0};if(m.type==="error")throw l=!0,m.error instanceof Error?m.error:new Error(String(m.error))}return l?{value:void 0,done:!0}:await new Promise(m=>{a=m})}}}},provider:this.providerName,model:s,metadata:{startTime:t,streamId:`google-ai-audio-${Date.now()}`}}}getDefaultEmbeddingModel(){return process.env.GOOGLE_AI_EMBEDDING_MODEL||process.env.GOOGLE_EMBEDDING_MODEL||"gemini-embedding-001"}async embed(e,t){let n=t||this.getDefaultEmbeddingModel()||"gemini-embedding-001";g.debug("Generating embedding",{provider:this.providerName,model:n,textLength:e.length});try{let o=this.getApiKey(),i=Oh({apiKey:o}).textEmbeddingModel(n),a=await Gh({model:i,value:e});return g.debug("Embedding generated successfully",{provider:this.providerName,model:n,embeddingDimension:a.embedding.length}),a.embedding}catch(o){throw g.error("Embedding generation failed",{error:o instanceof Error?o.message:String(o),model:n,textLength:e.length}),this.handleProviderError(o)}}async embedMany(e,t){let n=t||this.getDefaultEmbeddingModel()||"gemini-embedding-001";g.debug("Generating batch embeddings",{provider:this.providerName,model:n,count:e.length});try{let o=this.getApiKey(),i=Oh({apiKey:o}).textEmbeddingModel(n),a=await Vh({model:i,values:e});return g.debug("Batch embeddings generated successfully",{provider:this.providerName,model:n,count:a.embeddings.length,embeddingDimension:a.embeddings[0]?.length}),a.embeddings}catch(o){throw g.error("Batch embedding generation failed",{error:o instanceof Error?o.message:String(o),model:n,count:e.length}),this.handleProviderError(o)}}getApiKey(){let e=this.credentials?.apiKey||process.env.GOOGLE_AI_API_KEY||process.env.GOOGLE_GENERATIVE_AI_API_KEY;if(!e)throw new kn("GOOGLE_AI_API_KEY or GOOGLE_GENERATIVE_AI_API_KEY environment variable is not set",this.providerName);return e}},W8t=yB});var OOe={};le(OOe,{OpenAIProvider:()=>xB,default:()=>J8t});function vB(r){let e=r;return e.inputSchema??e.parameters}var vee,MOe,K8t,xB,J8t,NOe=A(()=>{"use strict";_m();Ht();Tn();xc();sv();qo();xr();Q();ev();Nu();td();em();Qa();od();nc();oT();vee=()=>Sc(MIe()),MOe=()=>Zl("OPENAI_MODEL","gpt-4o"),K8t=st.getTracer("neurolink.provider.openai"),xB=class extends an{model;credentials;constructor(e,t,n,o){super(e||MOe(),"openai",t),this.credentials=o;let s=al({apiKey:o?.apiKey??vee(),...o?.baseURL?{baseURL:o.baseURL}:{},fetch:ut()});this.model=s(this.modelName),g.debug("OpenAIProvider constructor called",{model:this.modelName,provider:this.providerName,supportsTools:this.supportsTools(),className:this.constructor.name})}supportsTools(){return!0}getProviderName(){return"openai"}getDefaultModel(){return MOe()}getDefaultEmbeddingModel(){return process.env.OPENAI_EMBEDDING_MODEL||"text-embedding-3-small"}getAISDKModel(){return this.model}validateAndFilterToolsForOpenAI(e){let t={};for(let[n,o]of Object.entries(e))try{if(o&&typeof o=="object")if(o.description&&typeof o.description=="string"){let s={...o},i=vB(o);i&&jd(i)&&(g.debug(`OpenAI: Tool ${n} has Zod schema - AI SDK will handle conversion`),this.validateZodSchema(n,i)),this.isValidToolStructure(s)?t[n]=s:g.warn(`OpenAI: Filtering out tool with invalid structure: ${n}`,{parametersType:typeof vB(s),hasDescription:!!s.description,hasExecute:!!s.execute})}else g.warn(`OpenAI: Filtering out tool without description: ${n}`);else g.warn(`OpenAI: Filtering out invalid tool: ${n}`)}catch(s){g.warn(`OpenAI: Error validating tool ${n}:`,s)}return t}validateZodSchema(e,t){try{let n=t;n._def&&n._def.typeName?g.debug(`OpenAI: Zod schema for ${e} appears valid`,{typeName:n._def.typeName}):g.warn(`OpenAI: Zod schema for ${e} missing typeName - may cause issues`)}catch(n){g.warn(`OpenAI: Zod schema validation failed for ${e}:`,n)}}endStreamSpanWithError(e,t){e.setStatus({code:be.ERROR,message:t instanceof Error?t.message:String(t)}),t instanceof Error&&e.recordException(t),e.end()}isValidToolStructure(e){if(!e||typeof e!="object")return!1;let t=e;if(!t.description||typeof t.description!="string"||!t.execute||typeof t.execute!="function")return!1;let n="inputSchema"in t?t.inputSchema:"parameters"in t?t.parameters:void 0;return this.isValidToolParameters(n)}isValidToolParameters(e){if(!e||jd(e))return!0;if(typeof e!="object"||e===null)return!1;let t=e;return t.type&&t.type!=="object"?!1:t.type==="object"&&!t.properties?(g.warn("Tool parameter schema missing properties field:",t),!1):!(t.properties&&typeof t.properties!="object"||t.required&&!Array.isArray(t.required))}formatProviderError(e){if(e instanceof zr)return new Qo(e.message,this.providerName);let t=e,n=t?.message&&typeof t.message=="string"?t.message:"Unknown error",o=t?.type&&typeof t.type=="string"?t.type:void 0,s=typeof t?.status=="number"?t.status:typeof t?.statusCode=="number"?t.statusCode:void 0;return n.includes("API_KEY_INVALID")||n.includes("Invalid API key")||n.includes("Incorrect API key")||n.includes("invalid_api_key")||o==="invalid_api_key"||s===401?new kn(n.includes("Incorrect API key")||n.includes("Invalid API key")?n:"Invalid OpenAI API key. Please check your OPENAI_API_KEY environment variable.",this.providerName):n.includes("rate limit")||o==="rate_limit_error"?new Za("OpenAI rate limit exceeded. Please try again later.",this.providerName):n.includes("model_not_found")?new Kc(`Model not found: ${this.modelName}`,this.providerName):new ur(`OpenAI error: ${n}`,this.providerName)}async executeStream(e,t){this.validateStreamOptions(e);let n=Date.now(),o=this.getTimeout(e),s=fn(o,this.providerName,"stream");try{let i=!e.disableTools&&this.supportsTools(),a=i?e.tools||await this.getAllTools():{},l=this.validateAndFilterToolsForOpenAI(a),u=parseInt(process.env.OPENAI_MAX_TOOLS||"150",10);if(Object.keys(l).length>u){g.warn(`OpenAI: Too many tools (${Object.keys(l).length}), limiting to ${u} tools`);let T=Object.entries(l);l=Object.fromEntries(T.slice(0,u))}let d=Object.values(a).filter(T=>{if(!T||typeof T!="object")return!1;let _=vB(T);return _!=null&&jd(_)}).length;g.info("OpenAI streaming tools",{shouldUseTools:i,allToolsCount:Object.keys(a).length,filteredToolsCount:Object.keys(l).length,zodToolsCount:d,toolNames:Object.keys(l),filteredOutTools:Object.keys(a).filter(T=>!l[T])});let p=await this.buildMessagesForStream(e),m=Vo(e,l,i);m!==null&&typeof m=="object"&&"toolName"in m&&typeof m.toolName=="string"&&!l[m.toolName]&&(g.warn(`OpenAI: toolChoice references tool "${m.toolName}" which was removed during filtering; falling back to "auto"`),m="auto"),g.debug("OpenAI: streamText request parameters:",{modelName:this.modelName,messagesCount:p.length,temperature:e.temperature,maxTokens:e.maxTokens,toolsCount:Object.keys(l).length,toolChoice:m,maxSteps:e.maxSteps||200,firstToolExample:Object.keys(l).length>0?{name:Object.keys(l)[0],description:l[Object.keys(l)[0]]?.description,parametersType:typeof vB(l[Object.keys(l)[0]])}:"no-tools"});let f=await this.getAISDKModelWithMiddleware(e),h=K8t.startSpan("neurolink.provider.streamText",{kind:er.CLIENT,attributes:{"gen_ai.system":"openai","gen_ai.request.model":tl(f)||this.modelName||"unknown"}}),y,v;try{v=Gn({model:f,messages:p,temperature:e.temperature,maxOutputTokens:e.maxTokens,maxRetries:0,tools:l,stopWhen:bn(e.maxSteps||200),toolChoice:m,abortSignal:wn(e.abortSignal,s?.controller.signal),experimental_repairToolCall:this.getToolCallRepairFn(e),experimental_telemetry:this.telemetryHandler.getTelemetryConfig(e),onError:T=>{y=T.error,g.error("OpenAI: Stream error",{error:T.error instanceof Error?T.error.message:String(T.error)})},onStepFinish:({toolCalls:T,toolResults:_})=>{g.info("Tool execution completed",{toolResults:_,toolCalls:T}),_n(this.neurolink?.getEventEmitter(),_),this.handleToolExecutionStorage(T,_,e,new Date).catch(k=>{g.warn("[OpenAIProvider] Failed to store tool executions",{provider:this.providerName,error:k instanceof Error?k.message:String(k)})})}})}catch(T){throw this.endStreamSpanWithError(h,T),T}Promise.resolve(v.usage).then(T=>{h.setAttribute("gen_ai.usage.input_tokens",T.inputTokens||0),h.setAttribute("gen_ai.usage.output_tokens",T.outputTokens||0);let _=oo(this.providerName,this.modelName,{input:T.inputTokens||0,output:T.outputTokens||0,total:(T.inputTokens||0)+(T.outputTokens||0)});_&&_>0&&h.setAttribute("neurolink.cost",_)}).catch(()=>{}),Promise.resolve(v.finishReason).then(T=>{h.setAttribute("gen_ai.response.finish_reason",T||"unknown")}).catch(()=>{}),Promise.resolve(v.text).then(()=>{h.end()}).catch(T=>{this.endStreamSpanWithError(h,T)}),s?.cleanup(),g.debug("OpenAI: streamText result structure:",{resultKeys:Object.keys(v),hasTextStream:!!v.textStream,hasToolCalls:!!v.toolCalls,hasToolResults:!!v.toolResults,resultType:typeof v});let b=this.createOpenAITransformedStream(v,i,l,()=>y),w=Hl.createAnalytics(this.providerName,this.modelName,v,Date.now()-n,{requestId:`openai-stream-${Date.now()}`,streamingMode:!0});return{stream:b,provider:this.providerName,model:this.modelName,analytics:w,metadata:{startTime:n,streamId:`openai-${Date.now()}`}}}catch(i){throw s?.cleanup(),this.handleProviderError(i)}}async*createOpenAITransformedStream(e,t,n,o){try{g.debug("OpenAI: Starting stream transformation",{hasTextStream:!!e.textStream,hasFullStream:!!e.fullStream,resultKeys:Object.keys(e),toolsEnabled:t,toolsCount:Object.keys(n).length});let s=0,i=0,a=e.fullStream||e.textStream;if(!a){g.error("OpenAI: No stream available in result",{resultKeys:Object.keys(e)});return}g.debug("OpenAI: Stream source selected:",{usingFullStream:!!e.fullStream,usingTextStream:!!e.textStream&&!e.fullStream,streamSourceType:e.fullStream?"fullStream":"textStream"});for await(let l of a){s++,g.debug(`OpenAI: Processing chunk ${s}:`,{chunkType:typeof l,chunkValue:typeof l=="string"?l.substring(0,50):"not-string",chunkKeys:l&&typeof l=="object"?Object.keys(l):"not-object",hasText:l&&typeof l=="object"&&"text"in l,hasTextDelta:l&&typeof l=="object"&&"textDelta"in l,hasType:l&&typeof l=="object"&&"type"in l,chunkTypeValue:l&&typeof l=="object"&&"type"in l?l.type:"no-type"});let u=this.extractOpenAIChunkContent(l);u&&(i++,g.debug(`OpenAI: Yielding content ${i}:`,{content:u.substring(0,50),length:u.length}),yield{content:u})}if(g.debug("OpenAI: Stream transformation completed",{totalChunks:s,contentYielded:i,success:i>0}),i===0){g.warn(`OpenAI: No content was yielded from stream despite processing ${s} chunks`);let l=await Vl(e,o?.());l&&(g.warn("OpenAI: Stream produced no output (NoOutputGeneratedError) \u2014 caught from finishReason rejection"),Us(l.sentinel),yield l.sentinel)}}catch(s){if(No.isInstance(s)){g.warn("OpenAI: Stream produced no output (NoOutputGeneratedError) \u2014 caught from textStream");let i=await cl(s,e,o?.());Us(i),yield i;return}throw g.error("OpenAI: Stream transformation error:",s),s}}extractOpenAIChunkContent(e){if(e&&typeof e=="object"){if(process.env.NEUROLINK_DEBUG==="true"&&g.debug("OpenAI: Full chunk structure:",{chunkKeys:Object.keys(e),fullChunk:JSON.stringify(e).substring(0,500)}),"type"in e&&e.type==="error"){let t=e;g.error("OpenAI: Error chunk received:",{errorType:t.type,errorDetails:t.error,fullChunk:JSON.stringify(e)});let n=t.error&&typeof t.error=="object"&&"message"in t.error?String(t.error.message):"OpenAI API error when tools are enabled";throw new Error(`OpenAI streaming error with tools: ${n}. Try disabling tools with --disableTools`)}if("type"in e&&e.type==="text-delta"&&"textDelta"in e){let t=e.textDelta;return g.debug("OpenAI: Found text-delta:",{textDelta:t}),t}if("text"in e){let t=e.text;return g.debug("OpenAI: Found direct text:",{text:t}),t}return process.env.NEUROLINK_DEBUG==="true"&&g.debug("OpenAI: Unhandled object chunk:",{chunkKeys:Object.keys(e),chunkType:"type"in e?String(e.type):"no-type",fullChunk:JSON.stringify(e).substring(0,500)}),null}return typeof e=="string"?(g.debug("OpenAI: Found string chunk:",{content:e}),e):(g.warn("OpenAI: Unhandled chunk type:",{type:typeof e,value:String(e).substring(0,100)}),null)}async embed(e,t){let n=t||"text-embedding-3-small";g.debug("Generating embedding",{provider:this.providerName,model:n,textLength:e.length});try{let s=al({apiKey:this.credentials?.apiKey??vee(),...this.credentials?.baseURL?{baseURL:this.credentials.baseURL}:{},fetch:ut()}).textEmbeddingModel(n),i=await Gh({model:s,value:e});return g.debug("Embedding generated successfully",{provider:this.providerName,model:n,embeddingDimension:i.embedding.length}),i.embedding}catch(o){throw g.error("Embedding generation failed",{error:o instanceof Error?o.message:String(o),model:n,textLength:e.length}),this.handleProviderError(o)}}async embedMany(e,t){let n=t||"text-embedding-3-small";g.debug("Generating batch embeddings",{provider:this.providerName,model:n,count:e.length});try{let s=al({apiKey:this.credentials?.apiKey??vee(),...this.credentials?.baseURL?{baseURL:this.credentials.baseURL}:{},fetch:ut()}).textEmbeddingModel(n),i=await Vh({model:s,values:e});return g.debug("Batch embeddings generated successfully",{provider:this.providerName,model:n,count:i.embeddings.length,embeddingDimension:i.embeddings[0]?.length}),i.embeddings}catch(o){throw g.error("Batch embedding generation failed",{error:o instanceof Error?o.message:String(o),model:n,count:e.length}),this.handleProviderError(o)}}},J8t=xB});function tJt(r){var e;let t=r?.anthropic;return(e=t?.cacheControl)!=null?e:t?.cache_control}async function _Jt({tools:r,toolChoice:e,disableParallelToolUse:t,cacheControlValidator:n,supportsStructuredOutput:o,supportsStrictTools:s}){var i;r=r?.length?r:void 0;let a=[],l=new Set,u=n||new See;if(r==null)return{tools:void 0,toolChoice:void 0,toolWarnings:a,betas:l};let d=[];for(let m of r)switch(m.type){case"function":{let f=u.getCacheControl(m.providerOptions,{type:"tool definition",canCache:!0}),h=(i=m.providerOptions)==null?void 0:i.anthropic,y=h?.eagerInputStreaming,v=h?.deferLoading,b=h?.allowedCallers;!s&&m.strict!=null&&a.push({type:"unsupported",feature:"strict",details:`Tool '${m.name}' has strict: ${m.strict}, but strict mode is not supported by this provider. The strict property will be ignored.`}),d.push({name:m.name,description:m.description,input_schema:m.inputSchema,cache_control:f,...y?{eager_input_streaming:!0}:{},...s===!0&&m.strict!=null?{strict:m.strict}:{},...v!=null?{defer_loading:v}:{},...b!=null?{allowed_callers:b}:{},...m.inputExamples!=null?{input_examples:m.inputExamples.map(w=>w.input)}:{}}),o===!0&&l.add("structured-outputs-2025-11-13"),(m.inputExamples!=null||b!=null)&&l.add("advanced-tool-use-2025-11-20");break}case"provider":{switch(m.id){case"anthropic.code_execution_20250522":{l.add("code-execution-2025-05-22"),d.push({type:"code_execution_20250522",name:"code_execution",cache_control:void 0});break}case"anthropic.code_execution_20250825":{l.add("code-execution-2025-08-25"),d.push({type:"code_execution_20250825",name:"code_execution"});break}case"anthropic.code_execution_20260120":{d.push({type:"code_execution_20260120",name:"code_execution"});break}case"anthropic.computer_20250124":{l.add("computer-use-2025-01-24"),d.push({name:"computer",type:"computer_20250124",display_width_px:m.args.displayWidthPx,display_height_px:m.args.displayHeightPx,display_number:m.args.displayNumber,cache_control:void 0});break}case"anthropic.computer_20251124":{l.add("computer-use-2025-11-24"),d.push({name:"computer",type:"computer_20251124",display_width_px:m.args.displayWidthPx,display_height_px:m.args.displayHeightPx,display_number:m.args.displayNumber,enable_zoom:m.args.enableZoom,cache_control:void 0});break}case"anthropic.computer_20241022":{l.add("computer-use-2024-10-22"),d.push({name:"computer",type:"computer_20241022",display_width_px:m.args.displayWidthPx,display_height_px:m.args.displayHeightPx,display_number:m.args.displayNumber,cache_control:void 0});break}case"anthropic.text_editor_20250124":{l.add("computer-use-2025-01-24"),d.push({name:"str_replace_editor",type:"text_editor_20250124",cache_control:void 0});break}case"anthropic.text_editor_20241022":{l.add("computer-use-2024-10-22"),d.push({name:"str_replace_editor",type:"text_editor_20241022",cache_control:void 0});break}case"anthropic.text_editor_20250429":{l.add("computer-use-2025-01-24"),d.push({name:"str_replace_based_edit_tool",type:"text_editor_20250429",cache_control:void 0});break}case"anthropic.text_editor_20250728":{let f=await Ge({value:m.args,schema:rJt});d.push({name:"str_replace_based_edit_tool",type:"text_editor_20250728",max_characters:f.maxCharacters,cache_control:void 0});break}case"anthropic.bash_20250124":{l.add("computer-use-2025-01-24"),d.push({name:"bash",type:"bash_20250124",cache_control:void 0});break}case"anthropic.bash_20241022":{l.add("computer-use-2024-10-22"),d.push({name:"bash",type:"bash_20241022",cache_control:void 0});break}case"anthropic.memory_20250818":{l.add("context-management-2025-06-27"),d.push({name:"memory",type:"memory_20250818"});break}case"anthropic.web_fetch_20250910":{l.add("web-fetch-2025-09-10");let f=await Ge({value:m.args,schema:bJt});d.push({type:"web_fetch_20250910",name:"web_fetch",max_uses:f.maxUses,allowed_domains:f.allowedDomains,blocked_domains:f.blockedDomains,citations:f.citations,max_content_tokens:f.maxContentTokens,cache_control:void 0});break}case"anthropic.web_fetch_20260209":{l.add("code-execution-web-tools-2026-02-09");let f=await Ge({value:m.args,schema:gJt});d.push({type:"web_fetch_20260209",name:"web_fetch",max_uses:f.maxUses,allowed_domains:f.allowedDomains,blocked_domains:f.blockedDomains,citations:f.citations,max_content_tokens:f.maxContentTokens,cache_control:void 0});break}case"anthropic.web_search_20250305":{let f=await Ge({value:m.args,schema:dJt});d.push({type:"web_search_20250305",name:"web_search",max_uses:f.maxUses,allowed_domains:f.allowedDomains,blocked_domains:f.blockedDomains,user_location:f.userLocation,cache_control:void 0});break}case"anthropic.web_search_20260209":{l.add("code-execution-web-tools-2026-02-09");let f=await Ge({value:m.args,schema:iJt});d.push({type:"web_search_20260209",name:"web_search",max_uses:f.maxUses,allowed_domains:f.allowedDomains,blocked_domains:f.blockedDomains,user_location:f.userLocation,cache_control:void 0});break}case"anthropic.tool_search_regex_20251119":{d.push({type:"tool_search_tool_regex_20251119",name:"tool_search_tool_regex"});break}case"anthropic.tool_search_bm25_20251119":{d.push({type:"tool_search_tool_bm25_20251119",name:"tool_search_tool_bm25"});break}default:{a.push({type:"unsupported",feature:`provider-defined tool ${m.id}`});break}}break}default:{a.push({type:"unsupported",feature:`tool ${m}`});break}}if(e==null)return{tools:d,toolChoice:t?{type:"auto",disable_parallel_tool_use:t}:void 0,toolWarnings:a,betas:l};let p=e.type;switch(p){case"auto":return{tools:d,toolChoice:{type:"auto",disable_parallel_tool_use:t},toolWarnings:a,betas:l};case"required":return{tools:d,toolChoice:{type:"any",disable_parallel_tool_use:t},toolWarnings:a,betas:l};case"none":return{tools:void 0,toolChoice:void 0,toolWarnings:a,betas:l};case"tool":return{tools:d,toolChoice:{type:"tool",name:e.toolName,disable_parallel_tool_use:t},toolWarnings:a,betas:l};default:{let m=p;throw new it({functionality:`tool choice type: ${m}`})}}}function $Oe({usage:r,rawUsage:e}){var t,n;let o=(t=r.cache_creation_input_tokens)!=null?t:0,s=(n=r.cache_read_input_tokens)!=null?n:0,i,a;if(r.iterations&&r.iterations.length>0){let l=r.iterations.reduce((u,d)=>({input:u.input+d.input_tokens,output:u.output+d.output_tokens}),{input:0,output:0});i=l.input,a=l.output}else i=r.input_tokens,a=r.output_tokens;return{inputTokens:{total:i+o+s,noCache:i,cacheRead:s,cacheWrite:o},outputTokens:{total:a,text:void 0,reasoning:void 0},raw:e??r}}function FJt(r){if(typeof r=="string")return new TextDecoder().decode(xn(r));if(r instanceof Uint8Array)return new TextDecoder().decode(r);throw r instanceof URL?new it({functionality:"URL-based text documents are not supported for citations"}):new it({functionality:`unsupported data type for text documents: ${typeof r}`})}function xee(r){return r instanceof URL||UJt(r)}function UJt(r){return typeof r=="string"&&/^https?:\/\//i.test(r)}function bee(r){return r instanceof URL?r.toString():r}async function $Jt({prompt:r,sendReasoning:e,warnings:t,cacheControlValidator:n,toolNameMapping:o}){var s,i,a,l,u,d,p,m,f,h,y,v,b,w,T,_,k,R,I;let C=new Set,E=zJt(r),M=n||new See,O,D=[];async function N(q){var B,F;let U=await tt({provider:"anthropic",providerOptions:q,schema:LOe});return(F=(B=U?.citations)==null?void 0:B.enabled)!=null?F:!1}async function W(q){let B=await tt({provider:"anthropic",providerOptions:q,schema:LOe});return{title:B?.title,context:B?.context}}for(let q=0;q<E.length;q++){let B=E[q],F=q===E.length-1,U=B.type;switch(U){case"system":{if(O!=null)throw new it({functionality:"Multiple system messages that are separated by user/assistant messages"});O=B.messages.map(({content:$,providerOptions:K})=>({type:"text",text:$,cache_control:M.getCacheControl(K,{type:"system message",canCache:!0})}));break}case"user":{let $=[];for(let K of B.messages){let{role:V,content:ce}=K;switch(V){case"user":{for(let we=0;we<ce.length;we++){let oe=ce[we],Ce=we===ce.length-1,J=(s=M.getCacheControl(oe.providerOptions,{type:"user message part",canCache:!0}))!=null?s:Ce?M.getCacheControl(K.providerOptions,{type:"user message",canCache:!0}):void 0;switch(oe.type){case"text":{$.push({type:"text",text:oe.text,cache_control:J});break}case"file":{if(oe.mediaType.startsWith("image/"))$.push({type:"image",source:xee(oe.data)?{type:"url",url:bee(oe.data)}:{type:"base64",media_type:oe.mediaType==="image/*"?"image/jpeg":oe.mediaType,data:wr(oe.data)},cache_control:J});else if(oe.mediaType==="application/pdf"){C.add("pdfs-2024-09-25");let _e=await N(oe.providerOptions),ge=await W(oe.providerOptions);$.push({type:"document",source:xee(oe.data)?{type:"url",url:bee(oe.data)}:{type:"base64",media_type:"application/pdf",data:wr(oe.data)},title:(i=ge.title)!=null?i:oe.filename,...ge.context&&{context:ge.context},..._e&&{citations:{enabled:!0}},cache_control:J})}else if(oe.mediaType==="text/plain"){let _e=await N(oe.providerOptions),ge=await W(oe.providerOptions);$.push({type:"document",source:xee(oe.data)?{type:"url",url:bee(oe.data)}:{type:"text",media_type:"text/plain",data:FJt(oe.data)},title:(a=ge.title)!=null?a:oe.filename,...ge.context&&{context:ge.context},..._e&&{citations:{enabled:!0}},cache_control:J})}else throw new it({functionality:`media type: ${oe.mediaType}`});break}}}break}case"tool":{for(let we=0;we<ce.length;we++){let oe=ce[we];if(oe.type==="tool-approval-response")continue;let Ce=we===ce.length-1,J=(l=M.getCacheControl(oe.providerOptions,{type:"tool result part",canCache:!0}))!=null?l:Ce?M.getCacheControl(K.providerOptions,{type:"tool result message",canCache:!0}):void 0,_e=oe.output,ge;switch(_e.type){case"content":ge=_e.value.map(ve=>{var H;switch(ve.type){case"text":return{type:"text",text:ve.text};case"image-data":return{type:"image",source:{type:"base64",media_type:ve.mediaType,data:ve.data}};case"image-url":return{type:"image",source:{type:"url",url:ve.url}};case"file-url":return{type:"document",source:{type:"url",url:ve.url}};case"file-data":{if(ve.mediaType==="application/pdf")return C.add("pdfs-2024-09-25"),{type:"document",source:{type:"base64",media_type:ve.mediaType,data:ve.data}};t.push({type:"other",message:`unsupported tool content part type: ${ve.type} with media type: ${ve.mediaType}`});return}case"custom":{let Z=(H=ve.providerOptions)==null?void 0:H.anthropic;if(Z?.type==="tool-reference")return{type:"tool_reference",tool_name:Z.toolName};t.push({type:"other",message:"unsupported custom tool content part"});return}default:{t.push({type:"other",message:`unsupported tool content part type: ${ve.type}`});return}}}).filter(Rl);break;case"text":case"error-text":ge=_e.value;break;case"execution-denied":ge=(u=_e.reason)!=null?u:"Tool execution denied.";break;default:ge=JSON.stringify(_e.value);break}$.push({type:"tool_result",tool_use_id:oe.toolCallId,content:ge,is_error:_e.type==="error-text"||_e.type==="error-json"?!0:void 0,cache_control:J})}break}default:{let we=V;throw new Error(`Unsupported role: ${we}`)}}}D.push({role:"user",content:$});break}case"assistant":{let $=[],K=new Set;for(let V=0;V<B.messages.length;V++){let ce=B.messages[V],we=V===B.messages.length-1,{content:oe}=ce;for(let Ce=0;Ce<oe.length;Ce++){let J=oe[Ce],_e=Ce===oe.length-1,ge=(d=M.getCacheControl(J.providerOptions,{type:"assistant message part",canCache:!0}))!=null?d:_e?M.getCacheControl(ce.providerOptions,{type:"assistant message",canCache:!0}):void 0;switch(J.type){case"text":{let ve=(p=J.providerOptions)==null?void 0:p.anthropic;ve?.type==="compaction"?$.push({type:"compaction",content:J.text,cache_control:ge}):$.push({type:"text",text:F&&we&&_e?J.text.trim():J.text,cache_control:ge});break}case"reasoning":{if(e){let ve=await tt({provider:"anthropic",providerOptions:J.providerOptions,schema:eJt});ve!=null?ve.signature!=null?(M.getCacheControl(J.providerOptions,{type:"thinking block",canCache:!1}),$.push({type:"thinking",thinking:J.text,signature:ve.signature})):ve.redactedData!=null?(M.getCacheControl(J.providerOptions,{type:"redacted thinking block",canCache:!1}),$.push({type:"redacted_thinking",data:ve.redactedData})):t.push({type:"other",message:"unsupported reasoning metadata"}):t.push({type:"other",message:"unsupported reasoning metadata"})}else t.push({type:"other",message:"sending reasoning content is disabled for this model"});break}case"tool-call":{if(J.providerExecuted){let Z=o.toProviderToolName(J.toolName);if(((f=(m=J.providerOptions)==null?void 0:m.anthropic)==null?void 0:f.type)==="mcp-tool-use"){K.add(J.toolCallId);let z=(y=(h=J.providerOptions)==null?void 0:h.anthropic)==null?void 0:y.serverName;if(z==null||typeof z!="string"){t.push({type:"other",message:"mcp tool use server name is required and must be a string"});break}$.push({type:"mcp_tool_use",id:J.toolCallId,name:J.toolName,input:J.input,server_name:z,cache_control:ge})}else if(Z==="code_execution"&&J.input!=null&&typeof J.input=="object"&&"type"in J.input&&typeof J.input.type=="string"&&(J.input.type==="bash_code_execution"||J.input.type==="text_editor_code_execution"))$.push({type:"server_tool_use",id:J.toolCallId,name:J.input.type,input:J.input,cache_control:ge});else if(Z==="code_execution"&&J.input!=null&&typeof J.input=="object"&&"type"in J.input&&J.input.type==="programmatic-tool-call"){let{type:z,...Te}=J.input;$.push({type:"server_tool_use",id:J.toolCallId,name:"code_execution",input:Te,cache_control:ge})}else Z==="code_execution"||Z==="web_fetch"||Z==="web_search"?$.push({type:"server_tool_use",id:J.toolCallId,name:Z,input:J.input,cache_control:ge}):Z==="tool_search_tool_regex"||Z==="tool_search_tool_bm25"?$.push({type:"server_tool_use",id:J.toolCallId,name:Z,input:J.input,cache_control:ge}):t.push({type:"other",message:`provider executed tool call for tool ${J.toolName} is not supported`});break}let ve=(v=J.providerOptions)==null?void 0:v.anthropic,H=ve?.caller?(ve.caller.type==="code_execution_20250825"||ve.caller.type==="code_execution_20260120")&&ve.caller.toolId?{type:ve.caller.type,tool_id:ve.caller.toolId}:ve.caller.type==="direct"?{type:"direct"}:void 0:void 0;$.push({type:"tool_use",id:J.toolCallId,name:J.toolName,input:J.input,...H&&{caller:H},cache_control:ge});break}case"tool-result":{let ve=o.toProviderToolName(J.toolName);if(K.has(J.toolCallId)){let H=J.output;if(H.type!=="json"&&H.type!=="error-json"){t.push({type:"other",message:`provider executed tool result output type ${H.type} for tool ${J.toolName} is not supported`});break}$.push({type:"mcp_tool_result",tool_use_id:J.toolCallId,is_error:H.type==="error-json",content:H.value,cache_control:ge})}else if(ve==="code_execution"){let H=J.output;if(H.type==="error-text"||H.type==="error-json"){let Z={};try{typeof H.value=="string"?Z=JSON.parse(H.value):typeof H.value=="object"&&H.value!==null&&(Z=H.value)}catch{}Z.type==="code_execution_tool_result_error"?$.push({type:"code_execution_tool_result",tool_use_id:J.toolCallId,content:{type:"code_execution_tool_result_error",error_code:(b=Z.errorCode)!=null?b:"unknown"},cache_control:ge}):$.push({type:"bash_code_execution_tool_result",tool_use_id:J.toolCallId,cache_control:ge,content:{type:"bash_code_execution_tool_result_error",error_code:(w=Z.errorCode)!=null?w:"unknown"}});break}if(H.type!=="json"){t.push({type:"other",message:`provider executed tool result output type ${H.type} for tool ${J.toolName} is not supported`});break}if(H.value==null||typeof H.value!="object"||!("type"in H.value)||typeof H.value.type!="string"){t.push({type:"other",message:`provider executed tool result output value is not a valid code execution result for tool ${J.toolName}`});break}if(H.value.type==="code_execution_result"){let Z=await Ge({value:H.value,schema:VOe});$.push({type:"code_execution_tool_result",tool_use_id:J.toolCallId,content:{type:Z.type,stdout:Z.stdout,stderr:Z.stderr,return_code:Z.return_code,content:(T=Z.content)!=null?T:[]},cache_control:ge})}else if(H.value.type==="encrypted_code_execution_result"){let Z=await Ge({value:H.value,schema:WOe});Z.type==="encrypted_code_execution_result"&&$.push({type:"code_execution_tool_result",tool_use_id:J.toolCallId,content:{type:Z.type,encrypted_stdout:Z.encrypted_stdout,stderr:Z.stderr,return_code:Z.return_code,content:(_=Z.content)!=null?_:[]},cache_control:ge})}else{let Z=await Ge({value:H.value,schema:HOe});Z.type==="code_execution_result"?$.push({type:"code_execution_tool_result",tool_use_id:J.toolCallId,content:{type:Z.type,stdout:Z.stdout,stderr:Z.stderr,return_code:Z.return_code,content:(k=Z.content)!=null?k:[]},cache_control:ge}):Z.type==="bash_code_execution_result"||Z.type==="bash_code_execution_tool_result_error"?$.push({type:"bash_code_execution_tool_result",tool_use_id:J.toolCallId,cache_control:ge,content:Z}):$.push({type:"text_editor_code_execution_tool_result",tool_use_id:J.toolCallId,cache_control:ge,content:Z})}break}if(ve==="web_fetch"){let H=J.output;if(H.type==="error-json"){let X={};try{typeof H.value=="string"?X=JSON.parse(H.value):typeof H.value=="object"&&H.value!==null&&(X=H.value)}catch{let Te=(R=H.value)==null?void 0:R.errorCode;X={errorCode:typeof Te=="string"?Te:"unavailable"}}$.push({type:"web_fetch_tool_result",tool_use_id:J.toolCallId,content:{type:"web_fetch_tool_result_error",error_code:(I=X.errorCode)!=null?I:"unavailable"},cache_control:ge});break}if(H.type!=="json"){t.push({type:"other",message:`provider executed tool result output type ${H.type} for tool ${J.toolName} is not supported`});break}let Z=await Ge({value:H.value,schema:GOe});$.push({type:"web_fetch_tool_result",tool_use_id:J.toolCallId,content:{type:"web_fetch_result",url:Z.url,retrieved_at:Z.retrievedAt,content:{type:"document",title:Z.content.title,citations:Z.content.citations,source:{type:Z.content.source.type,media_type:Z.content.source.mediaType,data:Z.content.source.data}}},cache_control:ge});break}if(ve==="web_search"){let H=J.output;if(H.type!=="json"){t.push({type:"other",message:`provider executed tool result output type ${H.type} for tool ${J.toolName} is not supported`});break}let Z=await Ge({value:H.value,schema:qOe});$.push({type:"web_search_tool_result",tool_use_id:J.toolCallId,content:Z.map(X=>({url:X.url,title:X.title,page_age:X.pageAge,encrypted_content:X.encryptedContent,type:X.type})),cache_control:ge});break}if(ve==="tool_search_tool_regex"||ve==="tool_search_tool_bm25"){let H=J.output;if(H.type!=="json"){t.push({type:"other",message:`provider executed tool result output type ${H.type} for tool ${J.toolName} is not supported`});break}let X=(await Ge({value:H.value,schema:KOe})).map(z=>({type:"tool_reference",tool_name:z.toolName}));$.push({type:"tool_search_tool_result",tool_use_id:J.toolCallId,content:{type:"tool_search_tool_search_result",tool_references:X},cache_control:ge});break}t.push({type:"other",message:`provider executed tool result for tool ${J.toolName} is not supported`});break}}}}D.push({role:"assistant",content:$});break}default:{let $=U;throw new Error(`content type: ${$}`)}}}return{prompt:{system:O,messages:D},betas:C}}function zJt(r){let e=[],t;for(let n of r){let{role:o}=n;switch(o){case"system":{t?.type!=="system"&&(t={type:"system",messages:[]},e.push(t)),t.messages.push(n);break}case"assistant":{t?.type!=="assistant"&&(t={type:"assistant",messages:[]},e.push(t)),t.messages.push(n);break}case"user":{t?.type!=="user"&&(t={type:"user",messages:[]},e.push(t)),t.messages.push(n);break}case"tool":{t?.type!=="user"&&(t={type:"user",messages:[]},e.push(t)),t.messages.push(n);break}default:{let s=o;throw new Error(`Unsupported role: ${s}`)}}}return e}function Tee({finishReason:r,isJsonResponseFromTool:e}){switch(r){case"pause_turn":case"end_turn":case"stop_sequence":return"stop";case"refusal":return"content-filter";case"tool_use":return e?"stop":"tool-calls";case"max_tokens":case"model_context_window_exceeded":return"length";case"compaction":return"other";default:return"other"}}function zOe(r,e,t){var n;if(r.type==="web_search_result_location")return{type:"source",sourceType:"url",id:t(),url:r.url,title:r.title,providerMetadata:{anthropic:{citedText:r.cited_text,encryptedIndex:r.encrypted_index}}};if(r.type!=="page_location"&&r.type!=="char_location")return;let o=e[r.document_index];if(o)return{type:"source",sourceType:"document",id:t(),mediaType:o.mediaType,title:(n=r.document_title)!=null?n:o.title,filename:o.filename,providerMetadata:{anthropic:r.type==="page_location"?{citedText:r.cited_text,startPageNumber:r.start_page_number,endPageNumber:r.end_page_number}:{citedText:r.cited_text,startCharIndex:r.start_char_index,endCharIndex:r.end_char_index}}}}function jJt(r){return r.includes("claude-sonnet-4-6")||r.includes("claude-opus-4-6")?{maxOutputTokens:128e3,supportsStructuredOutput:!0,isKnownModel:!0}:r.includes("claude-sonnet-4-5")||r.includes("claude-opus-4-5")||r.includes("claude-haiku-4-5")?{maxOutputTokens:64e3,supportsStructuredOutput:!0,isKnownModel:!0}:r.includes("claude-opus-4-1")?{maxOutputTokens:32e3,supportsStructuredOutput:!0,isKnownModel:!0}:r.includes("claude-sonnet-4-")?{maxOutputTokens:64e3,supportsStructuredOutput:!1,isKnownModel:!0}:r.includes("claude-opus-4-")?{maxOutputTokens:32e3,supportsStructuredOutput:!1,isKnownModel:!0}:r.includes("claude-3-haiku")?{maxOutputTokens:4096,supportsStructuredOutput:!1,isKnownModel:!0}:{maxOutputTokens:4096,supportsStructuredOutput:!1,isKnownModel:!1}}function BOe(r){if(!r)return!1;let e=!1,t=!1;for(let n of r){if("type"in n&&(n.type==="web_fetch_20260209"||n.type==="web_search_20260209")){e=!0;continue}if(n.name==="code_execution"){t=!0;break}}return e&&!t}function jOe(r){return r?{appliedEdits:r.applied_edits.map(e=>{switch(e.type){case"clear_tool_uses_20250919":return{type:e.type,clearedToolUses:e.cleared_tool_uses,clearedInputTokens:e.cleared_input_tokens};case"clear_thinking_20251015":return{type:e.type,clearedThinkingTurns:e.cleared_thinking_turns,clearedInputTokens:e.cleared_input_tokens};case"compact_20260112":return{type:e.type}}}).filter(e=>e!==void 0)}:null}function IA(r={}){var e,t;let n=(e=ha(mi({settingValue:r.baseURL,environmentVariableName:"ANTHROPIC_BASE_URL"})))!=null?e:"https://api.anthropic.com/v1",o=(t=r.name)!=null?t:"anthropic.messages";if(r.apiKey&&r.authToken)throw new rf({argument:"apiKey/authToken",message:"Both apiKey and authToken were provided. Please use only one authentication method."});let s=()=>{let l=r.authToken?{Authorization:`Bearer ${r.authToken}`}:{"x-api-key":_d({apiKey:r.apiKey,environmentVariableName:"ANTHROPIC_API_KEY",description:"Anthropic"})};return lr({"anthropic-version":"2023-06-01",...l,...r.headers},`ai-sdk/anthropic/${Z8t}`)},i=l=>{var u;return new BJt(l,{provider:o,baseURL:n,headers:s,fetch:r.fetch,generateId:(u=r.generateId)!=null?u:lt,supportedUrls:()=>({"image/*":[/^https?:\/\/.*$/],"application/pdf":[/^https?:\/\/.*$/]})})},a=function(l){if(new.target)throw new Error("The Anthropic model function cannot be called with the new keyword.");return i(l)};return a.specificationVersion="v3",a.languageModel=i,a.chat=i,a.messages=i,a.embeddingModel=l=>{throw new tn({modelId:l,modelType:"embeddingModel"})},a.textEmbeddingModel=a.embeddingModel,a.imageModel=l=>{throw new tn({modelId:l,modelType:"imageModel"})},a.tools=d9t,a}var Z8t,X8t,DOe,Y8t,Q8t,eJt,LOe,FOe,UOe,See,rJt,nJt,oJt,sJt,iJt,aJt,cJt,lJt,uJt,dJt,qOe,pJt,mJt,fJt,gJt,hJt,yJt,vJt,xJt,bJt,GOe,TJt,SJt,wJt,VOe,EJt,CJt,kJt,HOe,RJt,AJt,IJt,WOe,PJt,MJt,OJt,KOe,NJt,DJt,LJt,BJt,qJt,GJt,VJt,HJt,WJt,KJt,JJt,ZJt,XJt,YJt,QJt,e9t,t9t,r9t,n9t,o9t,s9t,i9t,a9t,c9t,l9t,u9t,d9t,p9t,wee=A(()=>{Le();ee();Le();ee();ee();de();ee();de();de();Le();ee();de();ee();ee();de();ee();de();ee();de();ee();de();ee();Le();ee();ee();de();ee();de();ee();de();ee();de();ee();de();ee();de();ee();de();ee();de();ee();de();ee();de();ee();de();ee();de();ee();de();ee();de();Z8t="3.0.64",X8t=G(()=>j(c.object({type:c.literal("error"),error:c.object({type:c.string(),message:c.string()})}))),DOe=Ir({errorSchema:X8t,errorToMessage:r=>r.error.message}),Y8t=G(()=>j(c.object({type:c.literal("message"),id:c.string().nullish(),model:c.string().nullish(),content:c.array(c.discriminatedUnion("type",[c.object({type:c.literal("text"),text:c.string(),citations:c.array(c.discriminatedUnion("type",[c.object({type:c.literal("web_search_result_location"),cited_text:c.string(),url:c.string(),title:c.string(),encrypted_index:c.string()}),c.object({type:c.literal("page_location"),cited_text:c.string(),document_index:c.number(),document_title:c.string().nullable(),start_page_number:c.number(),end_page_number:c.number()}),c.object({type:c.literal("char_location"),cited_text:c.string(),document_index:c.number(),document_title:c.string().nullable(),start_char_index:c.number(),end_char_index:c.number()})])).optional()}),c.object({type:c.literal("thinking"),thinking:c.string(),signature:c.string()}),c.object({type:c.literal("redacted_thinking"),data:c.string()}),c.object({type:c.literal("compaction"),content:c.string()}),c.object({type:c.literal("tool_use"),id:c.string(),name:c.string(),input:c.unknown(),caller:c.union([c.object({type:c.literal("code_execution_20250825"),tool_id:c.string()}),c.object({type:c.literal("code_execution_20260120"),tool_id:c.string()}),c.object({type:c.literal("direct")})]).optional()}),c.object({type:c.literal("server_tool_use"),id:c.string(),name:c.string(),input:c.record(c.string(),c.unknown()).nullish(),caller:c.union([c.object({type:c.literal("code_execution_20260120"),tool_id:c.string()}),c.object({type:c.literal("direct")})]).optional()}),c.object({type:c.literal("mcp_tool_use"),id:c.string(),name:c.string(),input:c.unknown(),server_name:c.string()}),c.object({type:c.literal("mcp_tool_result"),tool_use_id:c.string(),is_error:c.boolean(),content:c.array(c.union([c.string(),c.object({type:c.literal("text"),text:c.string()})]))}),c.object({type:c.literal("web_fetch_tool_result"),tool_use_id:c.string(),content:c.union([c.object({type:c.literal("web_fetch_result"),url:c.string(),retrieved_at:c.string(),content:c.object({type:c.literal("document"),title:c.string().nullable(),citations:c.object({enabled:c.boolean()}).optional(),source:c.union([c.object({type:c.literal("base64"),media_type:c.literal("application/pdf"),data:c.string()}),c.object({type:c.literal("text"),media_type:c.literal("text/plain"),data:c.string()})])})}),c.object({type:c.literal("web_fetch_tool_result_error"),error_code:c.string()})])}),c.object({type:c.literal("web_search_tool_result"),tool_use_id:c.string(),content:c.union([c.array(c.object({type:c.literal("web_search_result"),url:c.string(),title:c.string(),encrypted_content:c.string(),page_age:c.string().nullish()})),c.object({type:c.literal("web_search_tool_result_error"),error_code:c.string()})])}),c.object({type:c.literal("code_execution_tool_result"),tool_use_id:c.string(),content:c.union([c.object({type:c.literal("code_execution_result"),stdout:c.string(),stderr:c.string(),return_code:c.number(),content:c.array(c.object({type:c.literal("code_execution_output"),file_id:c.string()})).optional().default([])}),c.object({type:c.literal("encrypted_code_execution_result"),encrypted_stdout:c.string(),stderr:c.string(),return_code:c.number(),content:c.array(c.object({type:c.literal("code_execution_output"),file_id:c.string()})).optional().default([])}),c.object({type:c.literal("code_execution_tool_result_error"),error_code:c.string()})])}),c.object({type:c.literal("bash_code_execution_tool_result"),tool_use_id:c.string(),content:c.discriminatedUnion("type",[c.object({type:c.literal("bash_code_execution_result"),content:c.array(c.object({type:c.literal("bash_code_execution_output"),file_id:c.string()})),stdout:c.string(),stderr:c.string(),return_code:c.number()}),c.object({type:c.literal("bash_code_execution_tool_result_error"),error_code:c.string()})])}),c.object({type:c.literal("text_editor_code_execution_tool_result"),tool_use_id:c.string(),content:c.discriminatedUnion("type",[c.object({type:c.literal("text_editor_code_execution_tool_result_error"),error_code:c.string()}),c.object({type:c.literal("text_editor_code_execution_view_result"),content:c.string(),file_type:c.string(),num_lines:c.number().nullable(),start_line:c.number().nullable(),total_lines:c.number().nullable()}),c.object({type:c.literal("text_editor_code_execution_create_result"),is_file_update:c.boolean()}),c.object({type:c.literal("text_editor_code_execution_str_replace_result"),lines:c.array(c.string()).nullable(),new_lines:c.number().nullable(),new_start:c.number().nullable(),old_lines:c.number().nullable(),old_start:c.number().nullable()})])}),c.object({type:c.literal("tool_search_tool_result"),tool_use_id:c.string(),content:c.union([c.object({type:c.literal("tool_search_tool_search_result"),tool_references:c.array(c.object({type:c.literal("tool_reference"),tool_name:c.string()}))}),c.object({type:c.literal("tool_search_tool_result_error"),error_code:c.string()})])})])),stop_reason:c.string().nullish(),stop_sequence:c.string().nullish(),usage:c.looseObject({input_tokens:c.number(),output_tokens:c.number(),cache_creation_input_tokens:c.number().nullish(),cache_read_input_tokens:c.number().nullish(),iterations:c.array(c.object({type:c.union([c.literal("compaction"),c.literal("message")]),input_tokens:c.number(),output_tokens:c.number()})).nullish()}),container:c.object({expires_at:c.string(),id:c.string(),skills:c.array(c.object({type:c.union([c.literal("anthropic"),c.literal("custom")]),skill_id:c.string(),version:c.string()})).nullish()}).nullish(),context_management:c.object({applied_edits:c.array(c.union([c.object({type:c.literal("clear_tool_uses_20250919"),cleared_tool_uses:c.number(),cleared_input_tokens:c.number()}),c.object({type:c.literal("clear_thinking_20251015"),cleared_thinking_turns:c.number(),cleared_input_tokens:c.number()}),c.object({type:c.literal("compact_20260112")})]))}).nullish()}))),Q8t=G(()=>j(c.discriminatedUnion("type",[c.object({type:c.literal("message_start"),message:c.object({id:c.string().nullish(),model:c.string().nullish(),role:c.string().nullish(),usage:c.looseObject({input_tokens:c.number(),cache_creation_input_tokens:c.number().nullish(),cache_read_input_tokens:c.number().nullish()}),content:c.array(c.discriminatedUnion("type",[c.object({type:c.literal("tool_use"),id:c.string(),name:c.string(),input:c.unknown(),caller:c.union([c.object({type:c.literal("code_execution_20250825"),tool_id:c.string()}),c.object({type:c.literal("code_execution_20260120"),tool_id:c.string()}),c.object({type:c.literal("direct")})]).optional()})])).nullish(),stop_reason:c.string().nullish(),container:c.object({expires_at:c.string(),id:c.string()}).nullish()})}),c.object({type:c.literal("content_block_start"),index:c.number(),content_block:c.discriminatedUnion("type",[c.object({type:c.literal("text"),text:c.string()}),c.object({type:c.literal("thinking"),thinking:c.string()}),c.object({type:c.literal("tool_use"),id:c.string(),name:c.string(),input:c.record(c.string(),c.unknown()).optional(),caller:c.union([c.object({type:c.literal("code_execution_20250825"),tool_id:c.string()}),c.object({type:c.literal("code_execution_20260120"),tool_id:c.string()}),c.object({type:c.literal("direct")})]).optional()}),c.object({type:c.literal("redacted_thinking"),data:c.string()}),c.object({type:c.literal("compaction"),content:c.string().nullish()}),c.object({type:c.literal("server_tool_use"),id:c.string(),name:c.string(),input:c.record(c.string(),c.unknown()).nullish(),caller:c.union([c.object({type:c.literal("code_execution_20260120"),tool_id:c.string()}),c.object({type:c.literal("direct")})]).optional()}),c.object({type:c.literal("mcp_tool_use"),id:c.string(),name:c.string(),input:c.unknown(),server_name:c.string()}),c.object({type:c.literal("mcp_tool_result"),tool_use_id:c.string(),is_error:c.boolean(),content:c.array(c.union([c.string(),c.object({type:c.literal("text"),text:c.string()})]))}),c.object({type:c.literal("web_fetch_tool_result"),tool_use_id:c.string(),content:c.union([c.object({type:c.literal("web_fetch_result"),url:c.string(),retrieved_at:c.string(),content:c.object({type:c.literal("document"),title:c.string().nullable(),citations:c.object({enabled:c.boolean()}).optional(),source:c.union([c.object({type:c.literal("base64"),media_type:c.literal("application/pdf"),data:c.string()}),c.object({type:c.literal("text"),media_type:c.literal("text/plain"),data:c.string()})])})}),c.object({type:c.literal("web_fetch_tool_result_error"),error_code:c.string()})])}),c.object({type:c.literal("web_search_tool_result"),tool_use_id:c.string(),content:c.union([c.array(c.object({type:c.literal("web_search_result"),url:c.string(),title:c.string(),encrypted_content:c.string(),page_age:c.string().nullish()})),c.object({type:c.literal("web_search_tool_result_error"),error_code:c.string()})])}),c.object({type:c.literal("code_execution_tool_result"),tool_use_id:c.string(),content:c.union([c.object({type:c.literal("code_execution_result"),stdout:c.string(),stderr:c.string(),return_code:c.number(),content:c.array(c.object({type:c.literal("code_execution_output"),file_id:c.string()})).optional().default([])}),c.object({type:c.literal("encrypted_code_execution_result"),encrypted_stdout:c.string(),stderr:c.string(),return_code:c.number(),content:c.array(c.object({type:c.literal("code_execution_output"),file_id:c.string()})).optional().default([])}),c.object({type:c.literal("code_execution_tool_result_error"),error_code:c.string()})])}),c.object({type:c.literal("bash_code_execution_tool_result"),tool_use_id:c.string(),content:c.discriminatedUnion("type",[c.object({type:c.literal("bash_code_execution_result"),content:c.array(c.object({type:c.literal("bash_code_execution_output"),file_id:c.string()})),stdout:c.string(),stderr:c.string(),return_code:c.number()}),c.object({type:c.literal("bash_code_execution_tool_result_error"),error_code:c.string()})])}),c.object({type:c.literal("text_editor_code_execution_tool_result"),tool_use_id:c.string(),content:c.discriminatedUnion("type",[c.object({type:c.literal("text_editor_code_execution_tool_result_error"),error_code:c.string()}),c.object({type:c.literal("text_editor_code_execution_view_result"),content:c.string(),file_type:c.string(),num_lines:c.number().nullable(),start_line:c.number().nullable(),total_lines:c.number().nullable()}),c.object({type:c.literal("text_editor_code_execution_create_result"),is_file_update:c.boolean()}),c.object({type:c.literal("text_editor_code_execution_str_replace_result"),lines:c.array(c.string()).nullable(),new_lines:c.number().nullable(),new_start:c.number().nullable(),old_lines:c.number().nullable(),old_start:c.number().nullable()})])}),c.object({type:c.literal("tool_search_tool_result"),tool_use_id:c.string(),content:c.union([c.object({type:c.literal("tool_search_tool_search_result"),tool_references:c.array(c.object({type:c.literal("tool_reference"),tool_name:c.string()}))}),c.object({type:c.literal("tool_search_tool_result_error"),error_code:c.string()})])})])}),c.object({type:c.literal("content_block_delta"),index:c.number(),delta:c.discriminatedUnion("type",[c.object({type:c.literal("input_json_delta"),partial_json:c.string()}),c.object({type:c.literal("text_delta"),text:c.string()}),c.object({type:c.literal("thinking_delta"),thinking:c.string()}),c.object({type:c.literal("signature_delta"),signature:c.string()}),c.object({type:c.literal("compaction_delta"),content:c.string().nullish()}),c.object({type:c.literal("citations_delta"),citation:c.discriminatedUnion("type",[c.object({type:c.literal("web_search_result_location"),cited_text:c.string(),url:c.string(),title:c.string(),encrypted_index:c.string()}),c.object({type:c.literal("page_location"),cited_text:c.string(),document_index:c.number(),document_title:c.string().nullable(),start_page_number:c.number(),end_page_number:c.number()}),c.object({type:c.literal("char_location"),cited_text:c.string(),document_index:c.number(),document_title:c.string().nullable(),start_char_index:c.number(),end_char_index:c.number()})])})])}),c.object({type:c.literal("content_block_stop"),index:c.number()}),c.object({type:c.literal("error"),error:c.object({type:c.string(),message:c.string()})}),c.object({type:c.literal("message_delta"),delta:c.object({stop_reason:c.string().nullish(),stop_sequence:c.string().nullish(),container:c.object({expires_at:c.string(),id:c.string(),skills:c.array(c.object({type:c.union([c.literal("anthropic"),c.literal("custom")]),skill_id:c.string(),version:c.string()})).nullish()}).nullish()}),usage:c.looseObject({input_tokens:c.number().nullish(),output_tokens:c.number(),cache_creation_input_tokens:c.number().nullish(),cache_read_input_tokens:c.number().nullish(),iterations:c.array(c.object({type:c.union([c.literal("compaction"),c.literal("message")]),input_tokens:c.number(),output_tokens:c.number()})).nullish()}),context_management:c.object({applied_edits:c.array(c.union([c.object({type:c.literal("clear_tool_uses_20250919"),cleared_tool_uses:c.number(),cleared_input_tokens:c.number()}),c.object({type:c.literal("clear_thinking_20251015"),cleared_thinking_turns:c.number(),cleared_input_tokens:c.number()}),c.object({type:c.literal("compact_20260112")})]))}).nullish()}),c.object({type:c.literal("message_stop")}),c.object({type:c.literal("ping")})]))),eJt=G(()=>j(c.object({signature:c.string().optional(),redactedData:c.string().optional()}))),LOe=c.object({citations:c.object({enabled:c.boolean()}).optional(),title:c.string().optional(),context:c.string().optional()}),FOe=c.object({sendReasoning:c.boolean().optional(),structuredOutputMode:c.enum(["outputFormat","jsonTool","auto"]).optional(),thinking:c.discriminatedUnion("type",[c.object({type:c.literal("adaptive")}),c.object({type:c.literal("enabled"),budgetTokens:c.number().optional()}),c.object({type:c.literal("disabled")})]).optional(),disableParallelToolUse:c.boolean().optional(),cacheControl:c.object({type:c.literal("ephemeral"),ttl:c.union([c.literal("5m"),c.literal("1h")]).optional()}).optional(),metadata:c.object({userId:c.string().optional()}).optional(),mcpServers:c.array(c.object({type:c.literal("url"),name:c.string(),url:c.string(),authorizationToken:c.string().nullish(),toolConfiguration:c.object({enabled:c.boolean().nullish(),allowedTools:c.array(c.string()).nullish()}).nullish()})).optional(),container:c.object({id:c.string().optional(),skills:c.array(c.object({type:c.union([c.literal("anthropic"),c.literal("custom")]),skillId:c.string(),version:c.string().optional()})).optional()}).optional(),toolStreaming:c.boolean().optional(),effort:c.enum(["low","medium","high","max"]).optional(),speed:c.enum(["fast","standard"]).optional(),anthropicBeta:c.array(c.string()).optional(),contextManagement:c.object({edits:c.array(c.discriminatedUnion("type",[c.object({type:c.literal("clear_tool_uses_20250919"),trigger:c.discriminatedUnion("type",[c.object({type:c.literal("input_tokens"),value:c.number()}),c.object({type:c.literal("tool_uses"),value:c.number()})]).optional(),keep:c.object({type:c.literal("tool_uses"),value:c.number()}).optional(),clearAtLeast:c.object({type:c.literal("input_tokens"),value:c.number()}).optional(),clearToolInputs:c.boolean().optional(),excludeTools:c.array(c.string()).optional()}),c.object({type:c.literal("clear_thinking_20251015"),keep:c.union([c.literal("all"),c.object({type:c.literal("thinking_turns"),value:c.number()})]).optional()}),c.object({type:c.literal("compact_20260112"),trigger:c.object({type:c.literal("input_tokens"),value:c.number()}).optional(),pauseAfterCompaction:c.boolean().optional(),instructions:c.string().optional()})]))}).optional()}),UOe=4;See=class{constructor(){this.breakpointCount=0,this.warnings=[]}getCacheControl(r,e){let t=tJt(r);if(t){if(!e.canCache){this.warnings.push({type:"unsupported",feature:"cache_control on non-cacheable context",details:`cache_control cannot be set on ${e.type}. It will be ignored.`});return}if(this.breakpointCount++,this.breakpointCount>UOe){this.warnings.push({type:"unsupported",feature:"cacheControl breakpoint limit",details:`Maximum ${UOe} cache breakpoints exceeded (found ${this.breakpointCount}). This breakpoint will be ignored.`});return}return t}}getWarnings(){return this.warnings}},rJt=G(()=>j(c.object({maxCharacters:c.number().optional()}))),nJt=G(()=>j(c.object({command:c.enum(["view","create","str_replace","insert"]),path:c.string(),file_text:c.string().optional(),insert_line:c.number().int().optional(),new_str:c.string().optional(),insert_text:c.string().optional(),old_str:c.string().optional(),view_range:c.array(c.number().int()).optional()}))),oJt=et({id:"anthropic.text_editor_20250728",inputSchema:nJt}),sJt=(r={})=>oJt(r),iJt=G(()=>j(c.object({maxUses:c.number().optional(),allowedDomains:c.array(c.string()).optional(),blockedDomains:c.array(c.string()).optional(),userLocation:c.object({type:c.literal("approximate"),city:c.string().optional(),region:c.string().optional(),country:c.string().optional(),timezone:c.string().optional()}).optional()}))),aJt=G(()=>j(c.array(c.object({url:c.string(),title:c.string().nullable(),pageAge:c.string().nullable(),encryptedContent:c.string(),type:c.literal("web_search_result")})))),cJt=G(()=>j(c.object({query:c.string()}))),lJt=$e({id:"anthropic.web_search_20260209",inputSchema:cJt,outputSchema:aJt,supportsDeferredResults:!0}),uJt=(r={})=>lJt(r),dJt=G(()=>j(c.object({maxUses:c.number().optional(),allowedDomains:c.array(c.string()).optional(),blockedDomains:c.array(c.string()).optional(),userLocation:c.object({type:c.literal("approximate"),city:c.string().optional(),region:c.string().optional(),country:c.string().optional(),timezone:c.string().optional()}).optional()}))),qOe=G(()=>j(c.array(c.object({url:c.string(),title:c.string().nullable(),pageAge:c.string().nullable(),encryptedContent:c.string(),type:c.literal("web_search_result")})))),pJt=G(()=>j(c.object({query:c.string()}))),mJt=$e({id:"anthropic.web_search_20250305",inputSchema:pJt,outputSchema:qOe,supportsDeferredResults:!0}),fJt=(r={})=>mJt(r),gJt=G(()=>j(c.object({maxUses:c.number().optional(),allowedDomains:c.array(c.string()).optional(),blockedDomains:c.array(c.string()).optional(),citations:c.object({enabled:c.boolean()}).optional(),maxContentTokens:c.number().optional()}))),hJt=G(()=>j(c.object({type:c.literal("web_fetch_result"),url:c.string(),content:c.object({type:c.literal("document"),title:c.string().nullable(),citations:c.object({enabled:c.boolean()}).optional(),source:c.union([c.object({type:c.literal("base64"),mediaType:c.literal("application/pdf"),data:c.string()}),c.object({type:c.literal("text"),mediaType:c.literal("text/plain"),data:c.string()})])}),retrievedAt:c.string().nullable()}))),yJt=G(()=>j(c.object({url:c.string()}))),vJt=$e({id:"anthropic.web_fetch_20260209",inputSchema:yJt,outputSchema:hJt,supportsDeferredResults:!0}),xJt=(r={})=>vJt(r),bJt=G(()=>j(c.object({maxUses:c.number().optional(),allowedDomains:c.array(c.string()).optional(),blockedDomains:c.array(c.string()).optional(),citations:c.object({enabled:c.boolean()}).optional(),maxContentTokens:c.number().optional()}))),GOe=G(()=>j(c.object({type:c.literal("web_fetch_result"),url:c.string(),content:c.object({type:c.literal("document"),title:c.string().nullable(),citations:c.object({enabled:c.boolean()}).optional(),source:c.union([c.object({type:c.literal("base64"),mediaType:c.literal("application/pdf"),data:c.string()}),c.object({type:c.literal("text"),mediaType:c.literal("text/plain"),data:c.string()})])}),retrievedAt:c.string().nullable()}))),TJt=G(()=>j(c.object({url:c.string()}))),SJt=$e({id:"anthropic.web_fetch_20250910",inputSchema:TJt,outputSchema:GOe,supportsDeferredResults:!0}),wJt=(r={})=>SJt(r);VOe=G(()=>j(c.object({type:c.literal("code_execution_result"),stdout:c.string(),stderr:c.string(),return_code:c.number(),content:c.array(c.object({type:c.literal("code_execution_output"),file_id:c.string()})).optional().default([])}))),EJt=G(()=>j(c.object({code:c.string()}))),CJt=$e({id:"anthropic.code_execution_20250522",inputSchema:EJt,outputSchema:VOe}),kJt=(r={})=>CJt(r),HOe=G(()=>j(c.discriminatedUnion("type",[c.object({type:c.literal("code_execution_result"),stdout:c.string(),stderr:c.string(),return_code:c.number(),content:c.array(c.object({type:c.literal("code_execution_output"),file_id:c.string()})).optional().default([])}),c.object({type:c.literal("bash_code_execution_result"),content:c.array(c.object({type:c.literal("bash_code_execution_output"),file_id:c.string()})),stdout:c.string(),stderr:c.string(),return_code:c.number()}),c.object({type:c.literal("bash_code_execution_tool_result_error"),error_code:c.string()}),c.object({type:c.literal("text_editor_code_execution_tool_result_error"),error_code:c.string()}),c.object({type:c.literal("text_editor_code_execution_view_result"),content:c.string(),file_type:c.string(),num_lines:c.number().nullable(),start_line:c.number().nullable(),total_lines:c.number().nullable()}),c.object({type:c.literal("text_editor_code_execution_create_result"),is_file_update:c.boolean()}),c.object({type:c.literal("text_editor_code_execution_str_replace_result"),lines:c.array(c.string()).nullable(),new_lines:c.number().nullable(),new_start:c.number().nullable(),old_lines:c.number().nullable(),old_start:c.number().nullable()})]))),RJt=G(()=>j(c.discriminatedUnion("type",[c.object({type:c.literal("programmatic-tool-call"),code:c.string()}),c.object({type:c.literal("bash_code_execution"),command:c.string()}),c.discriminatedUnion("command",[c.object({type:c.literal("text_editor_code_execution"),command:c.literal("view"),path:c.string()}),c.object({type:c.literal("text_editor_code_execution"),command:c.literal("create"),path:c.string(),file_text:c.string().nullish()}),c.object({type:c.literal("text_editor_code_execution"),command:c.literal("str_replace"),path:c.string(),old_str:c.string(),new_str:c.string()})])]))),AJt=$e({id:"anthropic.code_execution_20250825",inputSchema:RJt,outputSchema:HOe,supportsDeferredResults:!0}),IJt=(r={})=>AJt(r),WOe=G(()=>j(c.discriminatedUnion("type",[c.object({type:c.literal("code_execution_result"),stdout:c.string(),stderr:c.string(),return_code:c.number(),content:c.array(c.object({type:c.literal("code_execution_output"),file_id:c.string()})).optional().default([])}),c.object({type:c.literal("encrypted_code_execution_result"),encrypted_stdout:c.string(),stderr:c.string(),return_code:c.number(),content:c.array(c.object({type:c.literal("code_execution_output"),file_id:c.string()})).optional().default([])}),c.object({type:c.literal("bash_code_execution_result"),content:c.array(c.object({type:c.literal("bash_code_execution_output"),file_id:c.string()})),stdout:c.string(),stderr:c.string(),return_code:c.number()}),c.object({type:c.literal("bash_code_execution_tool_result_error"),error_code:c.string()}),c.object({type:c.literal("text_editor_code_execution_tool_result_error"),error_code:c.string()}),c.object({type:c.literal("text_editor_code_execution_view_result"),content:c.string(),file_type:c.string(),num_lines:c.number().nullable(),start_line:c.number().nullable(),total_lines:c.number().nullable()}),c.object({type:c.literal("text_editor_code_execution_create_result"),is_file_update:c.boolean()}),c.object({type:c.literal("text_editor_code_execution_str_replace_result"),lines:c.array(c.string()).nullable(),new_lines:c.number().nullable(),new_start:c.number().nullable(),old_lines:c.number().nullable(),old_start:c.number().nullable()})]))),PJt=G(()=>j(c.discriminatedUnion("type",[c.object({type:c.literal("programmatic-tool-call"),code:c.string()}),c.object({type:c.literal("bash_code_execution"),command:c.string()}),c.discriminatedUnion("command",[c.object({type:c.literal("text_editor_code_execution"),command:c.literal("view"),path:c.string()}),c.object({type:c.literal("text_editor_code_execution"),command:c.literal("create"),path:c.string(),file_text:c.string().nullish()}),c.object({type:c.literal("text_editor_code_execution"),command:c.literal("str_replace"),path:c.string(),old_str:c.string(),new_str:c.string()})])]))),MJt=$e({id:"anthropic.code_execution_20260120",inputSchema:PJt,outputSchema:WOe,supportsDeferredResults:!0}),OJt=(r={})=>MJt(r),KOe=G(()=>j(c.array(c.object({type:c.literal("tool_reference"),toolName:c.string()})))),NJt=G(()=>j(c.object({pattern:c.string(),limit:c.number().optional()}))),DJt=$e({id:"anthropic.tool_search_regex_20251119",inputSchema:NJt,outputSchema:KOe,supportsDeferredResults:!0}),LJt=(r={})=>DJt(r);BJt=class{constructor(r,e){this.specificationVersion="v3";var t;this.modelId=r,this.config=e,this.generateId=(t=e.generateId)!=null?t:lt}supportsUrl(r){return r.protocol==="https:"}get provider(){return this.config.provider}get providerOptionsName(){let r=this.config.provider,e=r.indexOf(".");return e===-1?r:r.substring(0,e)}get supportedUrls(){var r,e,t;return(t=(e=(r=this.config).supportedUrls)==null?void 0:e.call(r))!=null?t:{}}async getArgs({userSuppliedBetas:r,prompt:e,maxOutputTokens:t,temperature:n,topP:o,topK:s,frequencyPenalty:i,presencePenalty:a,stopSequences:l,responseFormat:u,seed:d,tools:p,toolChoice:m,providerOptions:f,stream:h}){var y,v,b,w,T,_,k,R,I;let C=[];i!=null&&C.push({type:"unsupported",feature:"frequencyPenalty"}),a!=null&&C.push({type:"unsupported",feature:"presencePenalty"}),d!=null&&C.push({type:"unsupported",feature:"seed"}),n!=null&&n>1?(C.push({type:"unsupported",feature:"temperature",details:`${n} exceeds anthropic maximum of 1.0. clamped to 1.0`}),n=1):n!=null&&n<0&&(C.push({type:"unsupported",feature:"temperature",details:`${n} is below anthropic minimum of 0. clamped to 0`}),n=0),u?.type==="json"&&u.schema==null&&C.push({type:"unsupported",feature:"responseFormat",details:"JSON response format requires a schema. The response format is ignored."});let E=this.providerOptionsName,M=await tt({provider:"anthropic",providerOptions:f,schema:FOe}),O=E!=="anthropic"?await tt({provider:E,providerOptions:f,schema:FOe}):null,D=O!=null,N=Object.assign({},M??{},O??{}),{maxOutputTokens:W,supportsStructuredOutput:q,isKnownModel:B}=jJt(this.modelId),F=((y=this.config.supportsNativeStructuredOutput)!=null?y:!0)&&q,U=((v=this.config.supportsStrictTools)!=null?v:!0)&&q,$=(b=N?.structuredOutputMode)!=null?b:"auto",K=$==="outputFormat"||$==="auto"&&F,V=u?.type==="json"&&u.schema!=null&&!K?{type:"function",name:"json",description:"Respond with a JSON object.",inputSchema:u.schema}:void 0,ce=N?.contextManagement,we=new See,oe=bf({tools:p,providerToolNames:{"anthropic.code_execution_20250522":"code_execution","anthropic.code_execution_20250825":"code_execution","anthropic.code_execution_20260120":"code_execution","anthropic.computer_20241022":"computer","anthropic.computer_20250124":"computer","anthropic.text_editor_20241022":"str_replace_editor","anthropic.text_editor_20250124":"str_replace_editor","anthropic.text_editor_20250429":"str_replace_based_edit_tool","anthropic.text_editor_20250728":"str_replace_based_edit_tool","anthropic.bash_20241022":"bash","anthropic.bash_20250124":"bash","anthropic.memory_20250818":"memory","anthropic.web_search_20250305":"web_search","anthropic.web_search_20260209":"web_search","anthropic.web_fetch_20250910":"web_fetch","anthropic.web_fetch_20260209":"web_fetch","anthropic.tool_search_regex_20251119":"tool_search_tool_regex","anthropic.tool_search_bm25_20251119":"tool_search_tool_bm25"}}),{prompt:Ce,betas:J}=await $Jt({prompt:e,sendReasoning:(w=N?.sendReasoning)!=null?w:!0,warnings:C,cacheControlValidator:we,toolNameMapping:oe}),_e=(T=N?.thinking)==null?void 0:T.type,ge=_e==="enabled"||_e==="adaptive",ve=_e==="enabled"?(_=N?.thinking)==null?void 0:_.budgetTokens:void 0,H=t??W,Z={model:this.modelId,max_tokens:H,temperature:n,top_k:s,top_p:o,stop_sequences:l,...ge&&{thinking:{type:_e,...ve!=null&&{budget_tokens:ve}}},...(N?.effort||K&&u?.type==="json"&&u.schema!=null)&&{output_config:{...N?.effort&&{effort:N.effort},...K&&u?.type==="json"&&u.schema!=null&&{format:{type:"json_schema",schema:u.schema}}}},...N?.speed&&{speed:N.speed},...N?.cacheControl&&{cache_control:N.cacheControl},...((k=N?.metadata)==null?void 0:k.userId)!=null&&{metadata:{user_id:N.metadata.userId}},...N?.mcpServers&&N.mcpServers.length>0&&{mcp_servers:N.mcpServers.map(ae=>({type:ae.type,name:ae.name,url:ae.url,authorization_token:ae.authorizationToken,tool_configuration:ae.toolConfiguration?{allowed_tools:ae.toolConfiguration.allowedTools,enabled:ae.toolConfiguration.enabled}:void 0}))},...N?.container&&{container:N.container.skills&&N.container.skills.length>0?{id:N.container.id,skills:N.container.skills.map(ae=>({type:ae.type,skill_id:ae.skillId,version:ae.version}))}:N.container.id},system:Ce.system,messages:Ce.messages,...ce&&{context_management:{edits:ce.edits.map(ae=>{let It=ae.type;switch(It){case"clear_tool_uses_20250919":return{type:ae.type,...ae.trigger!==void 0&&{trigger:ae.trigger},...ae.keep!==void 0&&{keep:ae.keep},...ae.clearAtLeast!==void 0&&{clear_at_least:ae.clearAtLeast},...ae.clearToolInputs!==void 0&&{clear_tool_inputs:ae.clearToolInputs},...ae.excludeTools!==void 0&&{exclude_tools:ae.excludeTools}};case"clear_thinking_20251015":return{type:ae.type,...ae.keep!==void 0&&{keep:ae.keep}};case"compact_20260112":return{type:ae.type,...ae.trigger!==void 0&&{trigger:ae.trigger},...ae.pauseAfterCompaction!==void 0&&{pause_after_compaction:ae.pauseAfterCompaction},...ae.instructions!==void 0&&{instructions:ae.instructions}};default:C.push({type:"other",message:`Unknown context management strategy: ${It}`});return}}).filter(ae=>ae!==void 0)}}};ge?(_e==="enabled"&&ve==null&&(C.push({type:"compatibility",feature:"extended thinking",details:"thinking budget is required when thinking is enabled. using default budget of 1024 tokens."}),Z.thinking={type:"enabled",budget_tokens:1024},ve=1024),Z.temperature!=null&&(Z.temperature=void 0,C.push({type:"unsupported",feature:"temperature",details:"temperature is not supported when thinking is enabled"})),s!=null&&(Z.top_k=void 0,C.push({type:"unsupported",feature:"topK",details:"topK is not supported when thinking is enabled"})),o!=null&&(Z.top_p=void 0,C.push({type:"unsupported",feature:"topP",details:"topP is not supported when thinking is enabled"})),Z.max_tokens=H+(ve??0)):o!=null&&n!=null&&(C.push({type:"unsupported",feature:"topP",details:"topP is not supported when temperature is set. topP is ignored."}),Z.top_p=void 0),B&&Z.max_tokens>W&&(t!=null&&C.push({type:"unsupported",feature:"maxOutputTokens",details:`${Z.max_tokens} (maxOutputTokens + thinkingBudget) is greater than ${this.modelId} ${W} max output tokens. The max output tokens have been limited to ${W}.`}),Z.max_tokens=W),N?.mcpServers&&N.mcpServers.length>0&&J.add("mcp-client-2025-04-04"),ce&&(J.add("context-management-2025-06-27"),ce.edits.some(ae=>ae.type==="compact_20260112")&&J.add("compact-2026-01-12")),N?.container&&N.container.skills&&N.container.skills.length>0&&(J.add("code-execution-2025-08-25"),J.add("skills-2025-10-02"),J.add("files-api-2025-04-14"),p?.some(ae=>ae.type==="provider"&&(ae.id==="anthropic.code_execution_20250825"||ae.id==="anthropic.code_execution_20260120"))||C.push({type:"other",message:"code execution tool is required when using skills"})),N?.effort&&J.add("effort-2025-11-24"),N?.speed==="fast"&&J.add("fast-mode-2026-02-01"),h&&((R=N?.toolStreaming)==null||R)&&J.add("fine-grained-tool-streaming-2025-05-14");let{tools:X,toolChoice:z,toolWarnings:Te,betas:ue}=await _Jt(V!=null?{tools:[...p??[],V],toolChoice:{type:"required"},disableParallelToolUse:!0,cacheControlValidator:we,supportsStructuredOutput:!1,supportsStrictTools:U}:{tools:p??[],toolChoice:m,disableParallelToolUse:N?.disableParallelToolUse,cacheControlValidator:we,supportsStructuredOutput:F,supportsStrictTools:U}),fe=we.getWarnings();return{args:{...Z,tools:X,tool_choice:z,stream:h===!0?!0:void 0},warnings:[...C,...Te,...fe],betas:new Set([...J,...ue,...r,...(I=N?.anthropicBeta)!=null?I:[]]),usesJsonResponseTool:V!=null,toolNameMapping:oe,providerOptionsName:E,usedCustomProviderKey:D}}async getHeaders({betas:r,headers:e}){return Je(await at(this.config.headers),e,r.size>0?{"anthropic-beta":Array.from(r).join(",")}:{})}async getBetasFromHeaders(r){var e,t;let o=(e=(await at(this.config.headers))["anthropic-beta"])!=null?e:"",s=(t=r?.["anthropic-beta"])!=null?t:"";return new Set([...o.toLowerCase().split(","),...s.toLowerCase().split(",")].map(i=>i.trim()).filter(i=>i!==""))}buildRequestUrl(r){var e,t,n;return(n=(t=(e=this.config).buildRequestUrl)==null?void 0:t.call(e,this.config.baseURL,r))!=null?n:`${this.config.baseURL}/messages`}transformRequestBody(r,e){var t,n,o;return(o=(n=(t=this.config).transformRequestBody)==null?void 0:n.call(t,r,e))!=null?o:r}extractCitationDocuments(r){let e=t=>{var n,o;if(t.type!=="file"||t.mediaType!=="application/pdf"&&t.mediaType!=="text/plain")return!1;let s=(n=t.providerOptions)==null?void 0:n.anthropic,i=s?.citations;return(o=i?.enabled)!=null?o:!1};return r.filter(t=>t.role==="user").flatMap(t=>t.content).filter(e).map(t=>{var n;let o=t;return{title:(n=o.filename)!=null?n:"Untitled Document",filename:o.filename,mediaType:o.mediaType}})}async doGenerate(r){var e,t,n,o,s,i,a;let{args:l,warnings:u,betas:d,usesJsonResponseTool:p,toolNameMapping:m,providerOptionsName:f,usedCustomProviderKey:h}=await this.getArgs({...r,stream:!1,userSuppliedBetas:await this.getBetasFromHeaders(r.headers)}),y=[...this.extractCitationDocuments(r.prompt)],v=BOe(l.tools),{responseHeaders:b,value:w,rawValue:T}=await Ye({url:this.buildRequestUrl(!1),headers:await this.getHeaders({betas:d,headers:r.headers}),body:this.transformRequestBody(l,d),failedResponseHandler:DOe,successfulResponseHandler:rt(Y8t),abortSignal:r.abortSignal,fetch:this.config.fetch}),_=[],k={},R={},I=!1;for(let C of w.content)switch(C.type){case"text":{if(!p&&(_.push({type:"text",text:C.text}),C.citations))for(let E of C.citations){let M=zOe(E,y,this.generateId);M&&_.push(M)}break}case"thinking":{_.push({type:"reasoning",text:C.thinking,providerMetadata:{anthropic:{signature:C.signature}}});break}case"redacted_thinking":{_.push({type:"reasoning",text:"",providerMetadata:{anthropic:{redactedData:C.data}}});break}case"compaction":{_.push({type:"text",text:C.content,providerMetadata:{anthropic:{type:"compaction"}}});break}case"tool_use":{if(p&&C.name==="json")I=!0,_.push({type:"text",text:JSON.stringify(C.input)});else{let M=C.caller,O=M?{type:M.type,toolId:"tool_id"in M?M.tool_id:void 0}:void 0;_.push({type:"tool-call",toolCallId:C.id,toolName:C.name,input:JSON.stringify(C.input),...O&&{providerMetadata:{anthropic:{caller:O}}}})}break}case"server_tool_use":{if(C.name==="text_editor_code_execution"||C.name==="bash_code_execution")_.push({type:"tool-call",toolCallId:C.id,toolName:m.toCustomToolName("code_execution"),input:JSON.stringify({type:C.name,...C.input}),providerExecuted:!0});else if(C.name==="web_search"||C.name==="code_execution"||C.name==="web_fetch"){let E=C.name==="code_execution"&&C.input!=null&&typeof C.input=="object"&&"code"in C.input&&!("type"in C.input)?{type:"programmatic-tool-call",...C.input}:C.input;_.push({type:"tool-call",toolCallId:C.id,toolName:m.toCustomToolName(C.name),input:JSON.stringify(E),providerExecuted:!0,...v&&C.name==="code_execution"?{dynamic:!0}:{}})}else(C.name==="tool_search_tool_regex"||C.name==="tool_search_tool_bm25")&&(R[C.id]=C.name,_.push({type:"tool-call",toolCallId:C.id,toolName:m.toCustomToolName(C.name),input:JSON.stringify(C.input),providerExecuted:!0}));break}case"mcp_tool_use":{k[C.id]={type:"tool-call",toolCallId:C.id,toolName:C.name,input:JSON.stringify(C.input),providerExecuted:!0,dynamic:!0,providerMetadata:{anthropic:{type:"mcp-tool-use",serverName:C.server_name}}},_.push(k[C.id]);break}case"mcp_tool_result":{_.push({type:"tool-result",toolCallId:C.tool_use_id,toolName:k[C.tool_use_id].toolName,isError:C.is_error,result:C.content,dynamic:!0,providerMetadata:k[C.tool_use_id].providerMetadata});break}case"web_fetch_tool_result":{C.content.type==="web_fetch_result"?(y.push({title:(e=C.content.content.title)!=null?e:C.content.url,mediaType:C.content.content.source.media_type}),_.push({type:"tool-result",toolCallId:C.tool_use_id,toolName:m.toCustomToolName("web_fetch"),result:{type:"web_fetch_result",url:C.content.url,retrievedAt:C.content.retrieved_at,content:{type:C.content.content.type,title:C.content.content.title,citations:C.content.content.citations,source:{type:C.content.content.source.type,mediaType:C.content.content.source.media_type,data:C.content.content.source.data}}}})):C.content.type==="web_fetch_tool_result_error"&&_.push({type:"tool-result",toolCallId:C.tool_use_id,toolName:m.toCustomToolName("web_fetch"),isError:!0,result:{type:"web_fetch_tool_result_error",errorCode:C.content.error_code}});break}case"web_search_tool_result":{if(Array.isArray(C.content)){_.push({type:"tool-result",toolCallId:C.tool_use_id,toolName:m.toCustomToolName("web_search"),result:C.content.map(E=>{var M;return{url:E.url,title:E.title,pageAge:(M=E.page_age)!=null?M:null,encryptedContent:E.encrypted_content,type:E.type}})});for(let E of C.content)_.push({type:"source",sourceType:"url",id:this.generateId(),url:E.url,title:E.title,providerMetadata:{anthropic:{pageAge:(t=E.page_age)!=null?t:null}}})}else _.push({type:"tool-result",toolCallId:C.tool_use_id,toolName:m.toCustomToolName("web_search"),isError:!0,result:{type:"web_search_tool_result_error",errorCode:C.content.error_code}});break}case"code_execution_tool_result":{C.content.type==="code_execution_result"?_.push({type:"tool-result",toolCallId:C.tool_use_id,toolName:m.toCustomToolName("code_execution"),result:{type:C.content.type,stdout:C.content.stdout,stderr:C.content.stderr,return_code:C.content.return_code,content:(n=C.content.content)!=null?n:[]}}):C.content.type==="encrypted_code_execution_result"?_.push({type:"tool-result",toolCallId:C.tool_use_id,toolName:m.toCustomToolName("code_execution"),result:{type:C.content.type,encrypted_stdout:C.content.encrypted_stdout,stderr:C.content.stderr,return_code:C.content.return_code,content:(o=C.content.content)!=null?o:[]}}):C.content.type==="code_execution_tool_result_error"&&_.push({type:"tool-result",toolCallId:C.tool_use_id,toolName:m.toCustomToolName("code_execution"),isError:!0,result:{type:"code_execution_tool_result_error",errorCode:C.content.error_code}});break}case"bash_code_execution_tool_result":case"text_editor_code_execution_tool_result":{_.push({type:"tool-result",toolCallId:C.tool_use_id,toolName:m.toCustomToolName("code_execution"),result:C.content});break}case"tool_search_tool_result":{let E=R[C.tool_use_id];if(E==null){let M=m.toCustomToolName("tool_search_tool_bm25"),O=m.toCustomToolName("tool_search_tool_regex");M!=="tool_search_tool_bm25"?E="tool_search_tool_bm25":E="tool_search_tool_regex"}C.content.type==="tool_search_tool_search_result"?_.push({type:"tool-result",toolCallId:C.tool_use_id,toolName:m.toCustomToolName(E),result:C.content.tool_references.map(M=>({type:M.type,toolName:M.tool_name}))}):_.push({type:"tool-result",toolCallId:C.tool_use_id,toolName:m.toCustomToolName(E),isError:!0,result:{type:"tool_search_tool_result_error",errorCode:C.content.error_code}});break}}return{content:_,finishReason:{unified:Tee({finishReason:w.stop_reason,isJsonResponseFromTool:I}),raw:(s=w.stop_reason)!=null?s:void 0},usage:$Oe({usage:w.usage}),request:{body:l},response:{id:(i=w.id)!=null?i:void 0,modelId:(a=w.model)!=null?a:void 0,headers:b,body:T},warnings:u,providerMetadata:(()=>{var C,E,M,O,D;let N={usage:w.usage,cacheCreationInputTokens:(C=w.usage.cache_creation_input_tokens)!=null?C:null,stopSequence:(E=w.stop_sequence)!=null?E:null,iterations:w.usage.iterations?w.usage.iterations.map(q=>({type:q.type,inputTokens:q.input_tokens,outputTokens:q.output_tokens})):null,container:w.container?{expiresAt:w.container.expires_at,id:w.container.id,skills:(O=(M=w.container.skills)==null?void 0:M.map(q=>({type:q.type,skillId:q.skill_id,version:q.version})))!=null?O:null}:null,contextManagement:(D=jOe(w.context_management))!=null?D:null},W={anthropic:N};return h&&f!=="anthropic"&&(W[f]=N),W})()}}async doStream(r){var e,t;let{args:n,warnings:o,betas:s,usesJsonResponseTool:i,toolNameMapping:a,providerOptionsName:l,usedCustomProviderKey:u}=await this.getArgs({...r,stream:!0,userSuppliedBetas:await this.getBetasFromHeaders(r.headers)}),d=[...this.extractCitationDocuments(r.prompt)],p=BOe(n.tools),m=this.buildRequestUrl(!0),{responseHeaders:f,value:h}=await Ye({url:m,headers:await this.getHeaders({betas:s,headers:r.headers}),body:this.transformRequestBody(n,s),failedResponseHandler:DOe,successfulResponseHandler:On(Q8t),abortSignal:r.abortSignal,fetch:this.config.fetch}),y={unified:"other",raw:void 0},v={input_tokens:0,output_tokens:0,cache_creation_input_tokens:0,cache_read_input_tokens:0,iterations:null},b={},w={},T={},_=null,k,R=null,I=null,C=null,E=!1,M,O=this.generateId,D=h.pipeThrough(new TransformStream({start(B){B.enqueue({type:"stream-start",warnings:o})},transform(B,F){var U,$,K,V,ce,we,oe,Ce,J,_e,ge,ve,H,Z;if(r.includeRawChunks&&F.enqueue({type:"raw",rawValue:B.rawValue}),!B.success){F.enqueue({type:"error",error:B.error});return}let X=B.value;switch(X.type){case"ping":return;case"content_block_start":{let z=X.content_block,Te=z.type;switch(M=Te,Te){case"text":{if(i)return;b[X.index]={type:"text"},F.enqueue({type:"text-start",id:String(X.index)});return}case"thinking":{b[X.index]={type:"reasoning"},F.enqueue({type:"reasoning-start",id:String(X.index)});return}case"redacted_thinking":{b[X.index]={type:"reasoning"},F.enqueue({type:"reasoning-start",id:String(X.index),providerMetadata:{anthropic:{redactedData:z.data}}});return}case"compaction":{b[X.index]={type:"text"},F.enqueue({type:"text-start",id:String(X.index),providerMetadata:{anthropic:{type:"compaction"}}});return}case"tool_use":{if(i&&z.name==="json")E=!0,b[X.index]={type:"text"},F.enqueue({type:"text-start",id:String(X.index)});else{let fe=z.caller,ae=fe?{type:fe.type,toolId:"tool_id"in fe?fe.tool_id:void 0}:void 0,fo=z.input&&Object.keys(z.input).length>0?JSON.stringify(z.input):"";b[X.index]={type:"tool-call",toolCallId:z.id,toolName:z.name,input:fo,firstDelta:fo.length===0,...ae&&{caller:ae}},F.enqueue({type:"tool-input-start",id:z.id,toolName:z.name})}return}case"server_tool_use":{if(["web_fetch","web_search","code_execution","text_editor_code_execution","bash_code_execution"].includes(z.name)){let ue=z.name==="text_editor_code_execution"||z.name==="bash_code_execution"?"code_execution":z.name,fe=a.toCustomToolName(ue),ae=z.input!=null&&typeof z.input=="object"&&Object.keys(z.input).length>0?JSON.stringify(z.input):"";b[X.index]={type:"tool-call",toolCallId:z.id,toolName:fe,input:ae,providerExecuted:!0,...p&&ue==="code_execution"?{dynamic:!0}:{},firstDelta:!0,providerToolName:z.name},F.enqueue({type:"tool-input-start",id:z.id,toolName:fe,providerExecuted:!0,...p&&ue==="code_execution"?{dynamic:!0}:{}})}else if(z.name==="tool_search_tool_regex"||z.name==="tool_search_tool_bm25"){T[z.id]=z.name;let ue=a.toCustomToolName(z.name);b[X.index]={type:"tool-call",toolCallId:z.id,toolName:ue,input:"",providerExecuted:!0,firstDelta:!0,providerToolName:z.name},F.enqueue({type:"tool-input-start",id:z.id,toolName:ue,providerExecuted:!0})}return}case"web_fetch_tool_result":{z.content.type==="web_fetch_result"?(d.push({title:(U=z.content.content.title)!=null?U:z.content.url,mediaType:z.content.content.source.media_type}),F.enqueue({type:"tool-result",toolCallId:z.tool_use_id,toolName:a.toCustomToolName("web_fetch"),result:{type:"web_fetch_result",url:z.content.url,retrievedAt:z.content.retrieved_at,content:{type:z.content.content.type,title:z.content.content.title,citations:z.content.content.citations,source:{type:z.content.content.source.type,mediaType:z.content.content.source.media_type,data:z.content.content.source.data}}}})):z.content.type==="web_fetch_tool_result_error"&&F.enqueue({type:"tool-result",toolCallId:z.tool_use_id,toolName:a.toCustomToolName("web_fetch"),isError:!0,result:{type:"web_fetch_tool_result_error",errorCode:z.content.error_code}});return}case"web_search_tool_result":{if(Array.isArray(z.content)){F.enqueue({type:"tool-result",toolCallId:z.tool_use_id,toolName:a.toCustomToolName("web_search"),result:z.content.map(ue=>{var fe;return{url:ue.url,title:ue.title,pageAge:(fe=ue.page_age)!=null?fe:null,encryptedContent:ue.encrypted_content,type:ue.type}})});for(let ue of z.content)F.enqueue({type:"source",sourceType:"url",id:O(),url:ue.url,title:ue.title,providerMetadata:{anthropic:{pageAge:($=ue.page_age)!=null?$:null}}})}else F.enqueue({type:"tool-result",toolCallId:z.tool_use_id,toolName:a.toCustomToolName("web_search"),isError:!0,result:{type:"web_search_tool_result_error",errorCode:z.content.error_code}});return}case"code_execution_tool_result":{z.content.type==="code_execution_result"?F.enqueue({type:"tool-result",toolCallId:z.tool_use_id,toolName:a.toCustomToolName("code_execution"),result:{type:z.content.type,stdout:z.content.stdout,stderr:z.content.stderr,return_code:z.content.return_code,content:(K=z.content.content)!=null?K:[]}}):z.content.type==="encrypted_code_execution_result"?F.enqueue({type:"tool-result",toolCallId:z.tool_use_id,toolName:a.toCustomToolName("code_execution"),result:{type:z.content.type,encrypted_stdout:z.content.encrypted_stdout,stderr:z.content.stderr,return_code:z.content.return_code,content:(V=z.content.content)!=null?V:[]}}):z.content.type==="code_execution_tool_result_error"&&F.enqueue({type:"tool-result",toolCallId:z.tool_use_id,toolName:a.toCustomToolName("code_execution"),isError:!0,result:{type:"code_execution_tool_result_error",errorCode:z.content.error_code}});return}case"bash_code_execution_tool_result":case"text_editor_code_execution_tool_result":{F.enqueue({type:"tool-result",toolCallId:z.tool_use_id,toolName:a.toCustomToolName("code_execution"),result:z.content});return}case"tool_search_tool_result":{let ue=T[z.tool_use_id];if(ue==null){let fe=a.toCustomToolName("tool_search_tool_bm25"),ae=a.toCustomToolName("tool_search_tool_regex");fe!=="tool_search_tool_bm25"?ue="tool_search_tool_bm25":ue="tool_search_tool_regex"}z.content.type==="tool_search_tool_search_result"?F.enqueue({type:"tool-result",toolCallId:z.tool_use_id,toolName:a.toCustomToolName(ue),result:z.content.tool_references.map(fe=>({type:fe.type,toolName:fe.tool_name}))}):F.enqueue({type:"tool-result",toolCallId:z.tool_use_id,toolName:a.toCustomToolName(ue),isError:!0,result:{type:"tool_search_tool_result_error",errorCode:z.content.error_code}});return}case"mcp_tool_use":{w[z.id]={type:"tool-call",toolCallId:z.id,toolName:z.name,input:JSON.stringify(z.input),providerExecuted:!0,dynamic:!0,providerMetadata:{anthropic:{type:"mcp-tool-use",serverName:z.server_name}}},F.enqueue(w[z.id]);return}case"mcp_tool_result":{F.enqueue({type:"tool-result",toolCallId:z.tool_use_id,toolName:w[z.tool_use_id].toolName,isError:z.is_error,result:z.content,dynamic:!0,providerMetadata:w[z.tool_use_id].providerMetadata});return}default:{let ue=Te;throw new Error(`Unsupported content block type: ${ue}`)}}}case"content_block_stop":{if(b[X.index]!=null){let z=b[X.index];switch(z.type){case"text":{F.enqueue({type:"text-end",id:String(X.index)});break}case"reasoning":{F.enqueue({type:"reasoning-end",id:String(X.index)});break}case"tool-call":if(!(i&&z.toolName==="json")){F.enqueue({type:"tool-input-end",id:z.toolCallId});let ue=z.input===""?"{}":z.input;if(z.providerToolName==="code_execution")try{let fe=JSON.parse(ue);fe!=null&&typeof fe=="object"&&"code"in fe&&!("type"in fe)&&(ue=JSON.stringify({type:"programmatic-tool-call",...fe}))}catch{}F.enqueue({type:"tool-call",toolCallId:z.toolCallId,toolName:z.toolName,input:ue,providerExecuted:z.providerExecuted,...p&&z.providerToolName==="code_execution"?{dynamic:!0}:{},...z.caller&&{providerMetadata:{anthropic:{caller:z.caller}}}})}break}delete b[X.index]}M=void 0;return}case"content_block_delta":{let z=X.delta.type;switch(z){case"text_delta":{if(i)return;F.enqueue({type:"text-delta",id:String(X.index),delta:X.delta.text});return}case"thinking_delta":{F.enqueue({type:"reasoning-delta",id:String(X.index),delta:X.delta.thinking});return}case"signature_delta":{M==="thinking"&&F.enqueue({type:"reasoning-delta",id:String(X.index),delta:"",providerMetadata:{anthropic:{signature:X.delta.signature}}});return}case"compaction_delta":{X.delta.content!=null&&F.enqueue({type:"text-delta",id:String(X.index),delta:X.delta.content});return}case"input_json_delta":{let Te=b[X.index],ue=X.delta.partial_json;if(ue.length===0)return;if(E){if(Te?.type!=="text")return;F.enqueue({type:"text-delta",id:String(X.index),delta:ue})}else{if(Te?.type!=="tool-call")return;Te.firstDelta&&(Te.providerToolName==="bash_code_execution"||Te.providerToolName==="text_editor_code_execution")&&(ue=`{"type": "${Te.providerToolName}",${ue.substring(1)}`),F.enqueue({type:"tool-input-delta",id:Te.toolCallId,delta:ue}),Te.input+=ue,Te.firstDelta=!1}return}case"citations_delta":{let Te=X.delta.citation,ue=zOe(Te,d,O);ue&&F.enqueue(ue);return}default:{let Te=z;throw new Error(`Unsupported delta type: ${Te}`)}}}case"message_start":{if(v.input_tokens=X.message.usage.input_tokens,v.cache_read_input_tokens=(ce=X.message.usage.cache_read_input_tokens)!=null?ce:0,v.cache_creation_input_tokens=(we=X.message.usage.cache_creation_input_tokens)!=null?we:0,k={...X.message.usage},R=(oe=X.message.usage.cache_creation_input_tokens)!=null?oe:null,X.message.container!=null&&(C={expiresAt:X.message.container.expires_at,id:X.message.container.id,skills:null}),X.message.stop_reason!=null&&(y={unified:Tee({finishReason:X.message.stop_reason,isJsonResponseFromTool:E}),raw:X.message.stop_reason}),F.enqueue({type:"response-metadata",id:(Ce=X.message.id)!=null?Ce:void 0,modelId:(J=X.message.model)!=null?J:void 0}),X.message.content!=null)for(let z=0;z<X.message.content.length;z++){let Te=X.message.content[z];if(Te.type==="tool_use"){let ue=Te.caller,fe=ue?{type:ue.type,toolId:"tool_id"in ue?ue.tool_id:void 0}:void 0;F.enqueue({type:"tool-input-start",id:Te.id,toolName:Te.name});let ae=JSON.stringify((_e=Te.input)!=null?_e:{});F.enqueue({type:"tool-input-delta",id:Te.id,delta:ae}),F.enqueue({type:"tool-input-end",id:Te.id}),F.enqueue({type:"tool-call",toolCallId:Te.id,toolName:Te.name,input:ae,...fe&&{providerMetadata:{anthropic:{caller:fe}}}})}}return}case"message_delta":{X.usage.input_tokens!=null&&v.input_tokens!==X.usage.input_tokens&&(v.input_tokens=X.usage.input_tokens),v.output_tokens=X.usage.output_tokens,X.usage.cache_read_input_tokens!=null&&(v.cache_read_input_tokens=X.usage.cache_read_input_tokens),X.usage.cache_creation_input_tokens!=null&&(v.cache_creation_input_tokens=X.usage.cache_creation_input_tokens,R=X.usage.cache_creation_input_tokens),X.usage.iterations!=null&&(v.iterations=X.usage.iterations),y={unified:Tee({finishReason:X.delta.stop_reason,isJsonResponseFromTool:E}),raw:(ge=X.delta.stop_reason)!=null?ge:void 0},I=(ve=X.delta.stop_sequence)!=null?ve:null,C=X.delta.container!=null?{expiresAt:X.delta.container.expires_at,id:X.delta.container.id,skills:(Z=(H=X.delta.container.skills)==null?void 0:H.map(z=>({type:z.type,skillId:z.skill_id,version:z.version})))!=null?Z:null}:null,X.context_management&&(_=jOe(X.context_management)),k={...k,...X.usage};return}case"message_stop":{let z={usage:k??null,cacheCreationInputTokens:R,stopSequence:I,iterations:v.iterations?v.iterations.map(ue=>({type:ue.type,inputTokens:ue.input_tokens,outputTokens:ue.output_tokens})):null,container:C,contextManagement:_},Te={anthropic:z};u&&l!=="anthropic"&&(Te[l]=z),F.enqueue({type:"finish",finishReason:y,usage:$Oe({usage:v,rawUsage:k}),providerMetadata:Te});return}case"error":{F.enqueue({type:"error",error:X.error});return}default:{let z=X;throw new Error(`Unsupported chunk type: ${z}`)}}}})),[N,W]=D.tee(),q=N.getReader();try{await q.read();let B=await q.read();if(((e=B.value)==null?void 0:e.type)==="raw"&&(B=await q.read()),((t=B.value)==null?void 0:t.type)==="error"){let F=B.value.error;throw new $t({message:F.message,url:m,requestBodyValues:n,statusCode:F.type==="overloaded_error"?529:500,responseHeaders:f,responseBody:JSON.stringify(F),isRetryable:F.type==="overloaded_error"})}}finally{q.cancel().catch(()=>{}),q.releaseLock()}return{stream:W,request:{body:n},response:{headers:f}}}};qJt=G(()=>j(c.object({command:c.string(),restart:c.boolean().optional()}))),GJt=et({id:"anthropic.bash_20241022",inputSchema:qJt}),VJt=G(()=>j(c.object({command:c.string(),restart:c.boolean().optional()}))),HJt=et({id:"anthropic.bash_20250124",inputSchema:VJt}),WJt=G(()=>j(c.object({action:c.enum(["key","type","mouse_move","left_click","left_click_drag","right_click","middle_click","double_click","screenshot","cursor_position"]),coordinate:c.array(c.number().int()).optional(),text:c.string().optional()}))),KJt=et({id:"anthropic.computer_20241022",inputSchema:WJt}),JJt=G(()=>j(c.object({action:c.enum(["key","hold_key","type","cursor_position","mouse_move","left_mouse_down","left_mouse_up","left_click","left_click_drag","right_click","middle_click","double_click","triple_click","scroll","wait","screenshot"]),coordinate:c.tuple([c.number().int(),c.number().int()]).optional(),duration:c.number().optional(),scroll_amount:c.number().optional(),scroll_direction:c.enum(["up","down","left","right"]).optional(),start_coordinate:c.tuple([c.number().int(),c.number().int()]).optional(),text:c.string().optional()}))),ZJt=et({id:"anthropic.computer_20250124",inputSchema:JJt}),XJt=G(()=>j(c.object({action:c.enum(["key","hold_key","type","cursor_position","mouse_move","left_mouse_down","left_mouse_up","left_click","left_click_drag","right_click","middle_click","double_click","triple_click","scroll","wait","screenshot","zoom"]),coordinate:c.tuple([c.number().int(),c.number().int()]).optional(),duration:c.number().optional(),region:c.tuple([c.number().int(),c.number().int(),c.number().int(),c.number().int()]).optional(),scroll_amount:c.number().optional(),scroll_direction:c.enum(["up","down","left","right"]).optional(),start_coordinate:c.tuple([c.number().int(),c.number().int()]).optional(),text:c.string().optional()}))),YJt=et({id:"anthropic.computer_20251124",inputSchema:XJt}),QJt=G(()=>j(c.discriminatedUnion("command",[c.object({command:c.literal("view"),path:c.string(),view_range:c.tuple([c.number(),c.number()]).optional()}),c.object({command:c.literal("create"),path:c.string(),file_text:c.string()}),c.object({command:c.literal("str_replace"),path:c.string(),old_str:c.string(),new_str:c.string()}),c.object({command:c.literal("insert"),path:c.string(),insert_line:c.number(),insert_text:c.string()}),c.object({command:c.literal("delete"),path:c.string()}),c.object({command:c.literal("rename"),old_path:c.string(),new_path:c.string()})]))),e9t=et({id:"anthropic.memory_20250818",inputSchema:QJt}),t9t=G(()=>j(c.object({command:c.enum(["view","create","str_replace","insert","undo_edit"]),path:c.string(),file_text:c.string().optional(),insert_line:c.number().int().optional(),new_str:c.string().optional(),insert_text:c.string().optional(),old_str:c.string().optional(),view_range:c.array(c.number().int()).optional()}))),r9t=et({id:"anthropic.text_editor_20241022",inputSchema:t9t}),n9t=G(()=>j(c.object({command:c.enum(["view","create","str_replace","insert","undo_edit"]),path:c.string(),file_text:c.string().optional(),insert_line:c.number().int().optional(),new_str:c.string().optional(),insert_text:c.string().optional(),old_str:c.string().optional(),view_range:c.array(c.number().int()).optional()}))),o9t=et({id:"anthropic.text_editor_20250124",inputSchema:n9t}),s9t=G(()=>j(c.object({command:c.enum(["view","create","str_replace","insert"]),path:c.string(),file_text:c.string().optional(),insert_line:c.number().int().optional(),new_str:c.string().optional(),insert_text:c.string().optional(),old_str:c.string().optional(),view_range:c.array(c.number().int()).optional()}))),i9t=et({id:"anthropic.text_editor_20250429",inputSchema:s9t}),a9t=G(()=>j(c.array(c.object({type:c.literal("tool_reference"),toolName:c.string()})))),c9t=G(()=>j(c.object({query:c.string(),limit:c.number().optional()}))),l9t=$e({id:"anthropic.tool_search_bm25_20251119",inputSchema:c9t,outputSchema:a9t,supportsDeferredResults:!0}),u9t=(r={})=>l9t(r),d9t={bash_20241022:GJt,bash_20250124:HJt,codeExecution_20250522:kJt,codeExecution_20250825:IJt,codeExecution_20260120:OJt,computer_20241022:KJt,computer_20250124:ZJt,computer_20251124:YJt,memory_20250818:e9t,textEditor_20241022:r9t,textEditor_20250124:o9t,textEditor_20250429:i9t,textEditor_20250728:sJt,webFetch_20250910:wJt,webFetch_20260209:xJt,webSearch_20250305:fJt,webSearch_20260209:uJt,toolSearchRegex_20251119:LJt,toolSearchBm25_20251119:u9t};p9t=IA()});var ZOe,Ihn,Phn,Mhn,Ohn,_ee,m9t,JOe,Nhn,Dhn,Fhn,Uhn,Eee=A(()=>{ZOe={},Ihn=globalThis.crypto,Phn=globalThis.ReadableStream||class{},Mhn=globalThis.URL,Ohn=globalThis.URLSearchParams,_ee=r=>{try{return JSON.stringify(r,null,2)}catch{return String(r)}};_ee.custom=Symbol.for("nodejs.util.inspect.custom");_ee.colors={};_ee.styles={};m9t=globalThis.TextDecoder,JOe=globalThis.TextEncoder,Nhn=globalThis.performance||{now:()=>Date.now()},Dhn=globalThis.Buffer||class extends Uint8Array{static from(e,t){if(typeof e=="string"){let n=(t||"utf8").toLowerCase();if(n==="base64"){let o=atob(e),s=new Uint8Array(o.length);for(let i=0;i<o.length;i++)s[i]=o.charCodeAt(i);return s}if(n==="hex"){let o=new Uint8Array(e.length/2);for(let s=0;s<e.length;s+=2)o[s/2]=parseInt(e.substr(s,2),16);return o}return new JOe().encode(e)}return new Uint8Array(e)}static alloc(e){return new Uint8Array(e)}static isBuffer(e){return e instanceof Uint8Array}static concat(e){let t=e.reduce((s,i)=>s+i.length,0),n=new Uint8Array(t),o=0;for(let s of e)n.set(s,o),o+=s.length;return n}static byteLength(e,t){return t==="base64"?Math.ceil(e.length*3/4):new JOe().encode(e).length}toString(e){let t=(e||"utf8").toLowerCase();if(t==="hex")return Array.from(new Uint8Array(this.buffer,this.byteOffset,this.byteLength)).map(n=>n.toString(16).padStart(2,"0")).join("");if(t==="base64"){let n="";for(let o=0;o<this.length;o++)n+=String.fromCharCode(this[o]);return btoa(n)}return new m9t().decode(this)}},Fhn=globalThis.clearTimeout,Uhn=globalThis.clearInterval});function XOe(r){return G8("sha256",v9t).update(r).digest("hex")}function x9t(r){let e=r.replace(/-/g,"").slice(0,32).padEnd(32,"0");return`${e.slice(0,8)}-${e.slice(8,12)}-${e.slice(12,16)}-${e.slice(16,20)}-${e.slice(20,32)}`}function PA(r){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(r)}function bB(r){return JSON.stringify({device_id:r.deviceId,account_uuid:r.accountUuid,session_id:r.sessionId})}function Cee(r){if(typeof r!="string")return null;try{let e=JSON.parse(r);return typeof e.device_id!="string"||!/^[0-9a-f]{64}$/i.test(e.device_id)||typeof e.account_uuid!="string"||!PA(e.account_uuid)||typeof e.session_id!="string"||!PA(e.session_id)?null:{deviceId:e.device_id,accountUuid:e.account_uuid,sessionId:e.session_id,metadataUserId:bB({deviceId:e.device_id,accountUuid:e.account_uuid,sessionId:e.session_id})}}catch{return null}}function TB(r,e){let t=Cee(e?.existingUserId);if(t)return e?.preferredSessionId&&PA(e.preferredSessionId)?{deviceId:t.deviceId,accountUuid:t.accountUuid,sessionId:e.preferredSessionId,metadataUserId:bB({deviceId:t.deviceId,accountUuid:t.accountUuid,sessionId:e.preferredSessionId})}:t;let n=Date.now(),o=r||"default",s=Nv.get(o);if(s&&s.expiresAt>n)return e?.preferredSessionId&&PA(e.preferredSessionId)?{deviceId:s.deviceId,accountUuid:s.accountUuid,sessionId:e.preferredSessionId,metadataUserId:bB({deviceId:s.deviceId,accountUuid:s.accountUuid,sessionId:e.preferredSessionId})}:s;let i=XOe(`${o}:device`),a=x9t(XOe(`${o}:account`)),l=e?.preferredSessionId&&PA(e.preferredSessionId)?e.preferredSessionId:Fe(),u={deviceId:i,accountUuid:a,sessionId:l,metadataUserId:bB({deviceId:i,accountUuid:a,sessionId:l}),expiresAt:n+h9t};return T9t(n),Nv.set(o,u),u}function b9t(r=Date.now()){let e=0;for(let[t,n]of Nv.entries())n.expiresAt<=r&&(Nv.delete(t),e+=1);return e}function T9t(r=Date.now()){for(b9t(r);Nv.size>=y9t;){let e=Nv.keys().next().value;if(!e)break;Nv.delete(e)}}function Lw(r){let e=r?.match(/cc_version=([^;]+)/)?.[1]?.trim()||f9t,t=r?.match(/cc_entrypoint=([^;]+)/)?.[1]?.trim()||g9t;return`x-anthropic-billing-header: cc_version=${e}; cc_entrypoint=${t}; cch=00000;`}var YOe,QOe,f9t,g9t,Dw,h9t,y9t,v9t,Nv,Dv,kee,SB=A(()=>{"use strict";pr();Eee();YOe="9d1c250a-e61b-44d9-88ed-5944d1962f5e",QOe="https://api.anthropic.com/v1/oauth/token",f9t="2.1.87.6d6",g9t="sdk-cli",Dw="claude-cli/2.1.87 (external, sdk-cli)",h9t=36e5,y9t=1024,v9t="neurolink-claude-code-identity-v1",Nv=new Map;Dv=["oauth-2025-04-20","claude-code-20250219","context-management-2025-06-27","prompt-caching-scope-2026-01-05","advanced-tool-use-2025-11-20","effort-2025-11-24"],kee="mcp_"});function E9t(){return Object.values(eNe)}function MA(r,e){let t=S9t[e];return t.includes("*")?E9t().includes(r):t.includes(r)}function C9t(r){return _9t[r]}function k9t(r){return w9t[r]}var eNe,S9t,w9t,_9t,wB,_B,Ree=A(()=>{"use strict";xr();eNe=(u=>(u.CLAUDE_3_HAIKU="claude-3-haiku-20240307",u.CLAUDE_3_5_HAIKU="claude-3-5-haiku-20241022",u.CLAUDE_3_5_SONNET="claude-3-5-sonnet-20241022",u.CLAUDE_3_5_SONNET_V2="claude-3-5-sonnet-v2-20241022",u.CLAUDE_SONNET_4="claude-sonnet-4-20250514",u.CLAUDE_SONNET_4_6="claude-sonnet-4-6",u.CLAUDE_3_OPUS="claude-3-opus-20240229",u.CLAUDE_OPUS_4="claude-opus-4-20250514",u.CLAUDE_OPUS_4_6="claude-opus-4-6",u))(eNe||{}),S9t={free:["claude-3-haiku-20240307","claude-3-5-haiku-20241022"],pro:["claude-3-haiku-20240307","claude-3-5-haiku-20241022","claude-3-5-sonnet-20241022","claude-3-5-sonnet-v2-20241022","claude-sonnet-4-20250514","claude-sonnet-4-6"],max:["*"],max_5:["*"],max_20:["*"],api:["*"]},w9t={"claude-3-haiku-20240307":{displayName:"Claude 3 Haiku",contextWindow:2e5,maxOutputTokens:4096,supportsVision:!0,supportsExtendedThinking:!1,supportsToolUse:!0,supportsStreaming:!0,deprecated:!0,family:"haiku",description:"Fast and efficient model for simple tasks"},"claude-3-5-haiku-20241022":{displayName:"Claude 3.5 Haiku",contextWindow:2e5,maxOutputTokens:8192,supportsVision:!1,supportsExtendedThinking:!1,supportsToolUse:!0,supportsStreaming:!0,deprecated:!1,family:"haiku",description:"Improved fast model with better performance"},"claude-3-5-sonnet-20241022":{displayName:"Claude 3.5 Sonnet",contextWindow:2e5,maxOutputTokens:8192,supportsVision:!0,supportsExtendedThinking:!1,supportsToolUse:!0,supportsStreaming:!0,deprecated:!1,family:"sonnet",description:"Balanced model for most tasks"},"claude-3-5-sonnet-v2-20241022":{displayName:"Claude 3.5 Sonnet V2",contextWindow:2e5,maxOutputTokens:8192,supportsVision:!0,supportsExtendedThinking:!1,supportsToolUse:!0,supportsStreaming:!0,deprecated:!1,family:"sonnet",description:"Updated Sonnet with improved capabilities"},"claude-sonnet-4-20250514":{displayName:"Claude Sonnet 4",contextWindow:2e5,maxOutputTokens:64e3,supportsVision:!0,supportsExtendedThinking:!0,supportsToolUse:!0,supportsStreaming:!0,deprecated:!1,family:"sonnet",description:"Latest Sonnet with extended thinking support"},"claude-3-opus-20240229":{displayName:"Claude 3 Opus",contextWindow:2e5,maxOutputTokens:4096,supportsVision:!0,supportsExtendedThinking:!1,supportsToolUse:!0,supportsStreaming:!0,deprecated:!0,family:"opus",description:"Legacy flagship model for complex tasks"},"claude-opus-4-20250514":{displayName:"Claude Opus 4",contextWindow:2e5,maxOutputTokens:64e3,supportsVision:!0,supportsExtendedThinking:!0,supportsToolUse:!0,supportsStreaming:!0,deprecated:!1,family:"opus",description:"Latest flagship model with advanced reasoning"},"claude-sonnet-4-6":{displayName:"Claude Sonnet 4.6",contextWindow:1e6,maxOutputTokens:64e3,supportsVision:!0,supportsExtendedThinking:!0,supportsToolUse:!0,supportsStreaming:!0,deprecated:!1,family:"sonnet",description:"Claude 4.6 Sonnet with 1M context window"},"claude-opus-4-6":{displayName:"Claude Opus 4.6",contextWindow:1e6,maxOutputTokens:64e3,supportsVision:!0,supportsExtendedThinking:!0,supportsToolUse:!0,supportsStreaming:!0,deprecated:!1,family:"opus",description:"Claude 4.6 Opus flagship with 1M context window"}},_9t={free:"claude-3-5-haiku-20241022",pro:"claude-sonnet-4-20250514",max:"claude-opus-4-20250514",max_5:"claude-opus-4-20250514",max_20:"claude-opus-4-20250514",api:"claude-sonnet-4-20250514"};wB=C9t,_B=k9t});function R9t(r){try{if(typeof r=="string"||r instanceof URL)return new URL(r.toString());if(r instanceof Request)return new URL(r.url)}catch{return null}return null}function A9t(r,e){let t=new Headers;if(r instanceof Request&&r.headers.forEach((n,o)=>{t.set(o,n)}),!e?.headers)return t;if(e.headers instanceof Headers)return e.headers.forEach((n,o)=>{t.set(o,n)}),t;if(Array.isArray(e.headers)){for(let[n,o]of e.headers)typeof o<"u"&&t.set(n,String(o));return t}for(let[n,o]of Object.entries(e.headers))typeof o<"u"&&t.set(n,String(o));return t}function I9t(r,e,t,n){let o=(r.get("anthropic-beta")??"").split(",").map(i=>i.trim()).filter(Boolean),s=["oauth-2025-04-20"];n||s.push(...t?Dv.filter(i=>i!=="oauth-2025-04-20"):[]),r.set("authorization",`Bearer ${e()}`),r.set("anthropic-beta",[...new Set([...o,...s])].join(",")),r.delete("x-api-key"),!n&&(r.set("user-agent",Dw),r.set("anthropic-version","2023-06-01"),r.set("accept","application/json"),r.set("anthropic-dangerous-direct-browser-access","true"),r.set("x-app","cli"),r.set("connection","keep-alive"),r.set("x-stainless-retry-count","0"),r.set("x-stainless-runtime-version","v24.3.0"),r.set("x-stainless-package-version","0.74.0"),r.set("x-stainless-runtime","node"),r.set("x-stainless-lang","js"),r.set("x-stainless-arch",process.arch==="x64"?"x64":process.arch),r.set("x-stainless-os",process.platform==="darwin"?"MacOS":process.platform==="win32"?"Windows":"Linux"),r.set("x-stainless-timeout","600"))}async function P9t(r,e){let t=r instanceof Request?r:void 0,n=e?.method??t?.method,o=e?.body;return o===void 0&&t&&n!=="GET"&&n!=="HEAD"&&((t.headers.get("content-type")??"").includes("application/json")?o=await t.clone().text()||void 0:o=t.clone().body??void 0),{sourceRequest:t,method:n,body:o??void 0}}function M9t(r,e,t,n){let o=JSON.parse(r);n&&(o.tools&&Array.isArray(o.tools)&&(o.tools=o.tools.map(u=>({...u,name:u.name?`${kee}${u.name}`:u.name}))),o.messages&&Array.isArray(o.messages)&&(o.messages=o.messages.map(u=>(u.content&&Array.isArray(u.content)&&(u.content=u.content.map(d=>{let p=d;return p.type==="tool_use"&&p.name?{...p,name:`${kee}${p.name}`}:d})),u)))),(o.tool_choice?.type==="any"||o.tool_choice?.type==="tool")&&delete o.thinking;let s={type:"text",text:"You are a Claude agent, built on Anthropic's Claude Agent SDK."};if(o.system){if(typeof o.system=="string"&&(o.system=[{type:"text",text:o.system}]),Array.isArray(o.system)){let u=o.system.findIndex(f=>typeof f.text=="string"&&f.text.includes("x-anthropic-billing-header")),d=o.system.findIndex(f=>typeof f.text=="string"&&f.text.includes("Claude Agent SDK")),p={type:"text",text:Lw(o.system[u]?.text)},m=[u,d].filter(f=>f>=0).sort((f,h)=>h-f);for(let f of m)o.system.splice(f,1);o.system=[...o.system,p,s]}}else{let u={type:"text",text:Lw()};o.system=[u,s]}let i=t(),a=o.metadata?.user_id??i.substring(0,Math.min(20,i.length)),l=TB(a,{existingUserId:o.metadata?.user_id,preferredSessionId:e.get("x-claude-code-session-id")??void 0});return o.metadata={...o.metadata,user_id:l.metadataUserId},e.set("x-claude-code-session-id",l.sessionId),JSON.stringify(o)}async function O9t(r){try{let{propagation:e,context:t}=await Promise.resolve().then(()=>(Ht(),hq)),n={};e.inject(t.active(),n);for(let[o,s]of Object.entries(n))r.has(o)||r.set(o,s)}catch{}}function N9t(r){if(!r.body)return r;let e=r.body.getReader(),t=new TextDecoder,n=new TextEncoder,o=new Headers(r.headers);o.delete("content-length");let s="",i=new ReadableStream({async pull(a){let{done:l,value:u}=await e.read();if(l){s&&(a.enqueue(n.encode(s.replace(/"name"\s*:\s*"mcp_([^"]+)"/g,'"name": "$1"'))),s=""),a.close();return}let d=t.decode(u,{stream:!0}),p=s+d,m=p.match(/"name"\s*:\s*"mcp_[^"]*$/),f;if(m&&m.index!==void 0)f=p.slice(0,m.index),s=p.slice(m.index);else{let y=p.lastIndexOf('"'),v=y>=0?y+1:p.length;f=p.slice(0,v),s=p.slice(v)}let h=f.replace(/"name"\s*:\s*"mcp_([^"]+)"/g,'"name": "$1"');h&&a.enqueue(n.encode(h))},async cancel(a){await e.cancel(a)}});return new Response(i,{status:r.status,statusText:r.statusText,headers:o})}async function D9t(r,e,t,n,o,s){let i=R9t(r);i&&i.pathname==="/v1/messages"&&!i.searchParams.has("beta")&&i.searchParams.set("beta","true");let a=A9t(r,e);I9t(a,t,n,s),g.debug("[createOAuthFetch] Making OAuth request:",{url:i?.toString()||r.toString(),hasAuthorization:a.has("authorization"),authType:"Bearer",anthropicBeta:a.get("anthropic-beta"),userAgent:a.get("user-agent")});let{sourceRequest:l,method:u,body:d}=await P9t(r,e),p=d;if(p&&typeof p=="string"&&!s)try{p=M9t(p,a,t,o)}catch{}a.delete("content-length"),await O9t(a);let f=await ut()(i?.toString()||(r instanceof Request?r.url:r.toString()),{...e,method:u,body:p,signal:e?.signal??l?.signal,headers:a});return o?N9t(f):f}function tNe(r,e=!0,t=!1,n=!1){return async(o,s)=>D9t(o,s,r,e,t,n)}var rNe=A(()=>{"use strict";SB();Q();qo()});var sNe={};le(sNe,{ANTHROPIC_BETA_HEADERS:()=>Iee,AnthropicProvider:()=>EB,ModelAccessError:()=>YC,default:()=>z9t,getModelCapabilities:()=>_B,getRecommendedModelForTier:()=>wB,isModelAvailableForTier:()=>MA});var Iee,nNe,Aee,L9t,oNe,F9t,U9t,$9t,EB,z9t,iNe=A(()=>{"use strict";wee();Ht();Tn();dn();Tu();Kr();SB();xc();Ree();rNe();qo();xr();Q();Nu();td();Qa();od();nc();oT();Ree();Iee={"anthropic-beta":["claude-code-20250219","fine-grained-tool-streaming-2025-05-14"].join(",")},nNe=()=>Sc(PIe()),Aee=()=>Zl("ANTHROPIC_MODEL","claude-sonnet-4-6"),L9t=st.getTracer("neurolink.provider.anthropic"),oNe=()=>{try{let e=or(Rd(),".neurolink","anthropic-credentials.json");if(un(e)){let t=Ha(e,"utf-8"),n=JSON.parse(t);if(n.type==="oauth"&&n.oauth?.accessToken)return g.debug("[AnthropicProvider] Using OAuth token from stored credentials file"),n.oauth}}catch(e){g.debug("[AnthropicProvider] Failed to read stored credentials:",e)}let r=process.env.ANTHROPIC_OAUTH_TOKEN||process.env.CLAUDE_OAUTH_TOKEN;if(!r)return null;try{let e=JSON.parse(r);if(typeof e=="object"&&e.accessToken)return e;if(typeof e=="string")return{accessToken:e}}catch{}return{accessToken:r}},F9t=r=>{let e=process.env.ANTHROPIC_SUBSCRIPTION_TIER?.toLowerCase();if(e){let t=["free","pro","max","max_5","max_20","api"];if(t.includes(e))return g.debug("[detectSubscriptionTier] Using environment override",{tier:e}),e;g.warn("[detectSubscriptionTier] Invalid ANTHROPIC_SUBSCRIPTION_TIER",{value:e,validTiers:t})}if(r){let t=r.scopes??[],n="pro";return t.includes("max_20")?n="max_20":t.includes("max_5")?n="max_5":t.includes("max")&&(n="max"),g.debug("[detectSubscriptionTier] Detected from OAuth token",{tier:n,scopes:t}),n}return g.debug("[detectSubscriptionTier] No OAuth token, defaulting to API tier"),"api"},U9t=r=>{let e=process.env.ANTHROPIC_AUTH_METHOD?.toLowerCase();if(e==="api_key"||e==="apikey")return g.debug("[detectAuthMethod] Forced to api_key by ANTHROPIC_AUTH_METHOD env var"),"api_key";if(e==="oauth"){if(r)return g.debug("[detectAuthMethod] Forced to oauth by ANTHROPIC_AUTH_METHOD env var"),"oauth";g.warn("[detectAuthMethod] ANTHROPIC_AUTH_METHOD=oauth but no OAuth token found; falling through to auto-detection")}else e&&g.warn("[detectAuthMethod] Unrecognized ANTHROPIC_AUTH_METHOD value; falling through to auto-detection",{value:e});let t=r?"oauth":"api_key";return g.debug("[detectAuthMethod] Auth method resolved",{method:t,hasOAuthToken:!!r}),t},$9t=r=>{let e=n=>r instanceof Headers?r.get(n):r[n]||r[n.toLowerCase()]||null,t=n=>{if(!n)return;let o=parseInt(n,10);return isNaN(o)?void 0:o};return{requestsLimit:t(e("anthropic-ratelimit-requests-limit")),requestsRemaining:t(e("anthropic-ratelimit-requests-remaining")),requestsReset:e("anthropic-ratelimit-requests-reset")||void 0,tokensLimit:t(e("anthropic-ratelimit-tokens-limit")),tokensRemaining:t(e("anthropic-ratelimit-tokens-remaining")),tokensReset:e("anthropic-ratelimit-tokens-reset")||void 0,retryAfter:t(e("retry-after"))}},EB=class extends an{model;authMethod;subscriptionTier;enableBetaFeatures;oauthToken;lastResponseMetadata=null;usageInfo=null;refreshPromise;constructor(e,t,n,o){let s=!!(o?.apiKey&&!o?.oauthToken),i=s?null:(o?.oauthToken?{accessToken:o.oauthToken}:null)??n?.oauthToken??oNe(),a=s?"api_key":n?.authMethod??U9t(i),l=n?.subscriptionTier??(a==="oauth"?F9t(i):"api"),u=e||Aee(),d=u;!process.env.ANTHROPIC_BASE_URL&&l!=="api"&&!MA(u,l)&&(d=wB(l),g.warn("Model not available for subscription tier, using recommended model",{requestedModel:u,subscriptionTier:l,recommendedModel:d})),super(d,"anthropic",t),this.enableBetaFeatures=n?.enableBetaFeatures??!0,this.oauthToken=i,this.subscriptionTier=l,this.authMethod=a;let m=this.getAuthHeaders(),f;if(g.debug("[AnthropicProvider] Constructor - checking OAuth:",{authMethod:this.authMethod,hasOAuthToken:!!this.oauthToken,hasAccessToken:!!this.oauthToken?.accessToken}),this.authMethod==="oauth"&&this.oauthToken){g.debug("[AnthropicProvider] Creating OAuth fetch wrapper...");let h=this.oauthToken,y=tNe(()=>h.accessToken,this.enableBetaFeatures,!1,!0);f=IA({apiKey:"oauth-authenticated",fetch:y}),g.debug("[AnthropicProvider] Anthropic SDK created with OAuth fetch wrapper"),g.debug("Anthropic Provider initialized with OAuth",{modelName:this.modelName,provider:this.providerName,authMethod:this.authMethod,subscriptionTier:this.subscriptionTier,enableBetaFeatures:this.enableBetaFeatures,hasRefreshToken:!!this.oauthToken.refreshToken,tokenExpiry:this.oauthToken.expiresAt?new Date(this.oauthToken.expiresAt).toISOString():"none"})}else{let h=o?.apiKey??n?.apiKey??nNe();f=IA({apiKey:h,headers:m,...process.env.ANTHROPIC_BASE_URL&&{baseURL:process.env.ANTHROPIC_BASE_URL},fetch:ut()}),g.debug("Anthropic Provider initialized with API key",{modelName:this.modelName,provider:this.providerName,authMethod:this.authMethod,subscriptionTier:this.subscriptionTier,enableBetaFeatures:this.enableBetaFeatures})}this.model=f(this.modelName||Aee()),this.usageInfo={messagesUsed:0,messagesRemaining:-1,tokensUsed:0,tokensRemaining:-1,inputTokensUsed:0,outputTokensUsed:0,lastRequestTimestamp:0,isRateLimited:!1,requestCount:0,messageQuotaPercent:0,tokenQuotaPercent:0},g.debug("Anthropic Provider v2 initialized",{modelName:this.modelName,provider:this.providerName,authMethod:this.authMethod,subscriptionTier:this.subscriptionTier,enableBetaFeatures:this.enableBetaFeatures,betaFeatures:this.enableBetaFeatures?Iee["anthropic-beta"]:"disabled"})}getAuthHeaders(){let e={},t=!!process.env.ANTHROPIC_BASE_URL;return this.enableBetaFeatures&&(t?e["anthropic-beta"]=[...Dv,"fine-grained-tool-streaming-2025-05-14","context-1m-2025-08-07","interleaved-thinking-2025-05-14","redact-thinking-2026-02-12"].join(","):e["anthropic-beta"]=Iee["anthropic-beta"]),this.subscriptionTier!=="api"&&(e["x-subscription-tier"]=this.subscriptionTier),e}validateModelAccess(e){if(process.env.ANTHROPIC_BASE_URL||this.subscriptionTier==="api")return!0;let t=MA(e,this.subscriptionTier);return t||g.debug("[validateModelAccess] Model not available for tier",{model:e,tier:this.subscriptionTier}),t}getUsageInfo(){return this.usageInfo}areBetaFeaturesEnabled(){return this.enableBetaFeatures}getModelCapabilities(){return _B(this.modelName||this.getDefaultModel())}getSubscriptionTier(){return this.subscriptionTier}getAuthMethod(){return this.authMethod}async refreshAuthIfNeeded(){if(this.authMethod!=="oauth"||!this.oauthToken){g.debug("Token refresh not applicable for API key authentication");return}if(!this.oauthToken.expiresAt){g.debug("Token has no expiry information, assuming valid");return}let e=Date.now(),t=this.oauthToken.expiresAt<=e,n=this.oauthToken.expiresAt<=e+3e5;if(!t&&!n){g.debug("OAuth token is still valid",{expiresInMs:this.oauthToken.expiresAt-e});return}if(!this.oauthToken.refreshToken){if(t)throw new kn("OAuth token expired and no refresh token available. Please re-authenticate.",this.providerName);g.warn("OAuth token expiring soon but no refresh token available",{expiresInMs:this.oauthToken.expiresAt-e});return}if(this.refreshPromise){await this.refreshPromise;return}g.info("Refreshing OAuth token",{isExpired:t,expiresInMs:this.oauthToken.expiresAt-e});let o=this.oauthToken,s=o.refreshToken;this.refreshPromise=(async()=>{let a=new AbortController,l=setTimeout(()=>a.abort(),3e4),u=await fetch(QOe,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","User-Agent":Dw},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:s,client_id:YOe}),signal:a.signal});if(clearTimeout(l),!u.ok){let m=await u.text();throw new kn(`Failed to refresh OAuth token: ${u.status} ${m}`,this.providerName)}let d=await u.json();o.accessToken=d.access_token,o.refreshToken=d.refresh_token||o.refreshToken,o.expiresAt=d.expires_in?Date.now()+d.expires_in*1e3:void 0,o.tokenType=d.token_type||"Bearer";let p=o;try{let m=or(Rd(),".neurolink");un(m)||OC(m,{recursive:!0});let f=or(m,"anthropic-credentials.json"),h=`${f}.tmp`,v={...un(f)?JSON.parse(Ha(f,"utf-8")):{},type:"oauth",oauth:p,updatedAt:Date.now()};MC(h,JSON.stringify(v,null,2),{mode:384}),t3(h,f),g.debug("Refreshed OAuth credentials persisted to disk")}catch(m){g.warn("Failed to persist refreshed OAuth token to disk",{error:m instanceof Error?m.message:String(m)})}g.info("OAuth token refreshed successfully",{hasNewRefreshToken:!!d.refresh_token,expiresIn:d.expires_in})})();try{await this.refreshPromise}catch(i){throw i instanceof kn?i:new kn(`Failed to refresh OAuth token: ${i instanceof Error?i.message:String(i)}`,this.providerName)}finally{this.refreshPromise=void 0}}getLastResponseMetadata(){return this.lastResponseMetadata}updateResponseMetadata(e,t,n){this.lastResponseMetadata={rateLimit:$9t(e),requestId:t||(e instanceof Headers?e.get("x-request-id")||void 0:e["x-request-id"]),serverTiming:e instanceof Headers?e.get("server-timing")||void 0:e["server-timing"]};let o=this.lastResponseMetadata.rateLimit;this.usageInfo&&(this.usageInfo.requestCount++,this.usageInfo.messagesUsed++,this.usageInfo.lastRequestTimestamp=Date.now(),n&&(n.inputTokens!==void 0&&(this.usageInfo.inputTokensUsed+=n.inputTokens,this.usageInfo.tokensUsed+=n.inputTokens),n.outputTokens!==void 0&&(this.usageInfo.outputTokensUsed+=n.outputTokens,this.usageInfo.tokensUsed+=n.outputTokens)),o?.requestsRemaining!==void 0&&(this.usageInfo.messagesRemaining=o.requestsRemaining),o?.tokensRemaining!==void 0&&(this.usageInfo.tokensRemaining=o.tokensRemaining),o?.requestsLimit&&o.requestsLimit>0&&(this.usageInfo.messageQuotaPercent=Math.round((o.requestsLimit-(o.requestsRemaining??0))/o.requestsLimit*100)),o?.tokensLimit&&o.tokensLimit>0&&(this.usageInfo.tokenQuotaPercent=Math.round((o.tokensLimit-(o.tokensRemaining??0))/o.tokensLimit*100)),o?.retryAfter!==void 0?(this.usageInfo.isRateLimited=!0,this.usageInfo.rateLimitExpiresAt=Date.now()+o.retryAfter*1e3):(this.usageInfo.isRateLimited=!1,this.usageInfo.rateLimitExpiresAt=void 0)),o?.requestsRemaining!==void 0&&o.requestsRemaining<=5&&g.warn("Approaching Anthropic request rate limit",{remaining:o.requestsRemaining,limit:o.requestsLimit,reset:o.requestsReset}),o?.tokensRemaining!==void 0&&o.tokensLimit&&o.tokensRemaining<o.tokensLimit*.1&&g.warn("Approaching Anthropic token rate limit",{remaining:o.tokensRemaining,limit:o.tokensLimit,reset:o.tokensReset})}getProviderName(){return"anthropic"}getDefaultModel(){return Aee()}getAISDKModel(){return this.model}formatProviderError(e){if(e instanceof zr)return new Qo(`Request timed out after ${e.timeout}ms`,this.providerName);let t=e,n=typeof t?.message=="string"?t.message:"Unknown error";return n.includes("API_KEY_INVALID")||n.includes("Invalid API key")?new kn("Invalid Anthropic API key. Please check your ANTHROPIC_API_KEY environment variable.",this.providerName):n.includes("rate limit")||n.includes("too_many_requests")||n.includes("429")?new Za("Anthropic rate limit exceeded. Please try again later.",this.providerName):n.includes("ECONNRESET")||n.includes("ENOTFOUND")||n.includes("ECONNREFUSED")||n.includes("network")||n.includes("connection")?new Qo(`Connection error: ${n}`,this.providerName):n.includes("500")||n.includes("502")||n.includes("503")||n.includes("504")||n.includes("server error")?new ur(`Server error: ${n}`,this.providerName):new ur(`Anthropic error: ${n}`,this.providerName)}async generate(e,t){return await this.refreshAuthIfNeeded(),super.generate(e,t)}async executeStream(e,t){await this.refreshAuthIfNeeded(),this.validateStreamOptions(e);let n=this.getTimeout(e),o=fn(n,this.providerName,"stream");try{let s=!e.disableTools&&this.supportsTools(),i=s?e.tools||await this.getAllTools():{},a=await this.buildMessagesForStream(e),l=await this.getAISDKModelWithMiddleware(e),u=L9t.startSpan("neurolink.provider.streamText",{kind:er.CLIENT,attributes:{"gen_ai.system":"anthropic","gen_ai.request.model":tl(l,this.modelName||"unknown")}}),d,p;try{p=Gn({model:l,messages:a,temperature:e.temperature,maxOutputTokens:e.maxTokens,maxRetries:0,tools:i,stopWhen:bn(e.maxSteps||200),toolChoice:Vo(e,i,s),abortSignal:wn(e.abortSignal,o?.controller.signal),onError:y=>{d=y.error,g.error("Anthropic: Stream error",{error:y.error instanceof Error?y.error.message:String(y.error)})},experimental_repairToolCall:this.getToolCallRepairFn(e),experimental_telemetry:this.telemetryHandler.getTelemetryConfig(e),onStepFinish:({toolCalls:y,toolResults:v})=>{_n(this.neurolink?.getEventEmitter(),v),this.handleToolExecutionStorage(y,v,e,new Date).catch(b=>{g.warn("[AnthropicProvider] Failed to store tool executions",{provider:this.providerName,error:b instanceof Error?b.message:String(b)})})}})}catch(y){throw u.setStatus({code:be.ERROR,message:y instanceof Error?y.message:String(y)}),y instanceof Error&&u.recordException(y),u.end(),y}Promise.resolve(p.usage).then(y=>{u.setAttribute("gen_ai.usage.input_tokens",y.inputTokens||0),u.setAttribute("gen_ai.usage.output_tokens",y.outputTokens||0);let v=oo(this.providerName,this.modelName,{input:y.inputTokens||0,output:y.outputTokens||0,total:(y.inputTokens||0)+(y.outputTokens||0)});v&&v>0&&u.setAttribute("neurolink.cost",v)}).catch(()=>{}),Promise.resolve(p.finishReason).then(y=>{u.setAttribute("gen_ai.response.finish_reason",y||"unknown")}).catch(()=>{}),Promise.resolve(p.text).then(()=>{u.end()}).catch(y=>{u.setStatus({code:be.ERROR,message:y instanceof Error?y.message:String(y)}),u.end()}),o?.cleanup();let m=this.createTextStream(p,()=>d),f=[],h=[];return{stream:m,provider:this.providerName,model:this.modelName,toolCalls:f,toolResults:h}}catch(s){throw o?.cleanup(),this.handleProviderError(s)}}async isAvailable(){try{return oNe()||nNe(),!0}catch{return!1}}getModel(){return this.model}},z9t=EB});var aNe={};le(aNe,{Agent:()=>wZt,BedrockClient:()=>j9t,BedrockRuntimeClient:()=>Pee,Blob:()=>SZt,Client:()=>EZt,ConverseCommand:()=>Mee,ConverseStreamCommand:()=>CB,Cron:()=>oZt,Dispatcher:()=>CZt,File:()=>TZt,FlowProducer:()=>nZt,FormData:()=>bZt,GoogleAuth:()=>W9t,HTTPException:()=>dZt,Headers:()=>xZt,Hippocampus:()=>Z9t,HippocampusConfig:()=>X9t,Hono:()=>lZt,ImageFormat:()=>Uw,InvokeEndpointCommand:()=>V9t,InvokeEndpointWithResponseStreamCommand:()=>H9t,Job:()=>tZt,ListFoundationModelsCommand:()=>q9t,MockAgent:()=>AZt,Pool:()=>_Zt,Queue:()=>Q9t,QueueScheduler:()=>rZt,Request:()=>yZt,Response:()=>vZt,SageMakerRuntimeClient:()=>G9t,TextToSpeechClient:()=>J9t,VertexAI:()=>K9t,Worker:()=>eZt,convertToHtml:()=>cZt,cors:()=>uZt,createClient:()=>Y9t,default:()=>B9t,extractRawText:()=>aZt,fetch:()=>hZt,getGlobalDispatcher:()=>RZt,interceptors:()=>IZt,logger:()=>pZt,parseBuffer:()=>sZt,request:()=>PZt,secureHeaders:()=>mZt,selectCover:()=>iZt,setGlobalDispatcher:()=>kZt,streamSSE:()=>fZt,timeout:()=>gZt});var Fw,Hs,B9t,j9t,q9t,Pee,Mee,CB,Uw,G9t,V9t,H9t,W9t,K9t,J9t,Z9t,X9t,Y9t,Q9t,eZt,tZt,rZt,nZt,oZt,sZt,iZt,aZt,cZt,lZt,uZt,dZt,pZt,mZt,fZt,gZt,hZt,yZt,vZt,xZt,bZt,TZt,SZt,wZt,_Zt,EZt,CZt,kZt,RZt,AZt,IZt,PZt,Oee=A(()=>{Fw={get(r,e){return e==="__esModule"?!0:e==="default"?new Proxy({},{get:Fw.get}):new Proxy(function(...t){return new Proxy({},{get:Fw.get})},{get:Fw.get,apply(t,n,o){return new Proxy({},{get:Fw.get})},construct(t,n){return new Proxy({},{get:Fw.get})}})}},Hs=new Proxy({},Fw),B9t=Hs,{BedrockClient:j9t,ListFoundationModelsCommand:q9t,BedrockRuntimeClient:Pee,ConverseCommand:Mee,ConverseStreamCommand:CB,ImageFormat:Uw}=Hs,{SageMakerRuntimeClient:G9t,InvokeEndpointCommand:V9t,InvokeEndpointWithResponseStreamCommand:H9t}=Hs,{GoogleAuth:W9t,VertexAI:K9t,TextToSpeechClient:J9t}=Hs,{Hippocampus:Z9t,HippocampusConfig:X9t}=Hs,{createClient:Y9t}=Hs,{Queue:Q9t,Worker:eZt,Job:tZt,QueueScheduler:rZt,FlowProducer:nZt}=Hs,{Cron:oZt}=Hs,{parseBuffer:sZt,selectCover:iZt}=Hs,{extractRawText:aZt,convertToHtml:cZt}=Hs,{Hono:lZt}=Hs,{cors:uZt,HTTPException:dZt,logger:pZt,secureHeaders:mZt,streamSSE:fZt,timeout:gZt}=Hs,hZt=globalThis.fetch,yZt=globalThis.Request,vZt=globalThis.Response,xZt=globalThis.Headers,bZt=globalThis.FormData,TZt=globalThis.File,SZt=globalThis.Blob,wZt=Hs.Agent,_Zt=Hs.Pool,EZt=Hs.Client,CZt=Hs.Dispatcher,kZt=()=>{},RZt=()=>Hs,AZt=Hs.MockAgent,IZt={redirect:()=>r=>r,retry:()=>r=>r},PZt=async(r,e)=>{let t=await globalThis.fetch(r,e);return{statusCode:t.status,headers:Object.fromEntries(t.headers.entries()),body:{text:()=>t.text(),json:()=>t.json(),arrayBuffer:()=>t.arrayBuffer()}}}});function Lv(r,e,t){return{input:{text:r.input?.text||"",images:r.input?.images,content:r.input?.content,files:r.input?.files,csvFiles:r.input?.csvFiles,pdfFiles:r.input?.pdfFiles},csvOptions:r.csvOptions,systemPrompt:r.systemPrompt,conversationHistory:r.conversationMessages,provider:e,model:t,temperature:r.temperature,maxTokens:r.maxTokens,enableAnalytics:r.enableAnalytics,enableEvaluation:r.enableEvaluation,context:r.context,fileRegistry:r.fileRegistry}}var Nee=A(()=>{"use strict"});var cNe={};le(cNe,{Agent:()=>vXt,BedrockClient:()=>OZt,BedrockRuntimeClient:()=>DZt,Blob:()=>yXt,Client:()=>bXt,ConverseCommand:()=>LZt,ConverseStreamCommand:()=>FZt,Cron:()=>QZt,Dispatcher:()=>TXt,File:()=>hXt,FlowProducer:()=>YZt,FormData:()=>gXt,GoogleAuth:()=>jZt,HTTPException:()=>iXt,Headers:()=>fXt,Hippocampus:()=>VZt,HippocampusConfig:()=>HZt,Hono:()=>oXt,ImageFormat:()=>UZt,InvokeEndpointCommand:()=>zZt,InvokeEndpointWithResponseStreamCommand:()=>BZt,Job:()=>ZZt,ListFoundationModelsCommand:()=>NZt,MockAgent:()=>_Xt,Pool:()=>xXt,Queue:()=>KZt,QueueScheduler:()=>XZt,Request:()=>pXt,Response:()=>mXt,SageMakerRuntimeClient:()=>$Zt,TextToSpeechClient:()=>GZt,VertexAI:()=>qZt,Worker:()=>JZt,convertToHtml:()=>nXt,cors:()=>sXt,createClient:()=>WZt,default:()=>MZt,extractRawText:()=>rXt,fetch:()=>dXt,getGlobalDispatcher:()=>wXt,interceptors:()=>EXt,logger:()=>aXt,parseBuffer:()=>eXt,request:()=>CXt,secureHeaders:()=>cXt,selectCover:()=>tXt,setGlobalDispatcher:()=>SXt,streamSSE:()=>lXt,timeout:()=>uXt});var $w,Ws,MZt,OZt,NZt,DZt,LZt,FZt,UZt,$Zt,zZt,BZt,jZt,qZt,GZt,VZt,HZt,WZt,KZt,JZt,ZZt,XZt,YZt,QZt,eXt,tXt,rXt,nXt,oXt,sXt,iXt,aXt,cXt,lXt,uXt,dXt,pXt,mXt,fXt,gXt,hXt,yXt,vXt,xXt,bXt,TXt,SXt,wXt,_Xt,EXt,CXt,lNe=A(()=>{$w={get(r,e){return e==="__esModule"?!0:e==="default"?new Proxy({},{get:$w.get}):new Proxy(function(...t){return new Proxy({},{get:$w.get})},{get:$w.get,apply(t,n,o){return new Proxy({},{get:$w.get})},construct(t,n){return new Proxy({},{get:$w.get})}})}},Ws=new Proxy({},$w),MZt=Ws,{BedrockClient:OZt,ListFoundationModelsCommand:NZt,BedrockRuntimeClient:DZt,ConverseCommand:LZt,ConverseStreamCommand:FZt,ImageFormat:UZt}=Ws,{SageMakerRuntimeClient:$Zt,InvokeEndpointCommand:zZt,InvokeEndpointWithResponseStreamCommand:BZt}=Ws,{GoogleAuth:jZt,VertexAI:qZt,TextToSpeechClient:GZt}=Ws,{Hippocampus:VZt,HippocampusConfig:HZt}=Ws,{createClient:WZt}=Ws,{Queue:KZt,Worker:JZt,Job:ZZt,QueueScheduler:XZt,FlowProducer:YZt}=Ws,{Cron:QZt}=Ws,{parseBuffer:eXt,selectCover:tXt}=Ws,{extractRawText:rXt,convertToHtml:nXt}=Ws,{Hono:oXt}=Ws,{cors:sXt,HTTPException:iXt,logger:aXt,secureHeaders:cXt,streamSSE:lXt,timeout:uXt}=Ws,dXt=globalThis.fetch,pXt=globalThis.Request,mXt=globalThis.Response,fXt=globalThis.Headers,gXt=globalThis.FormData,hXt=globalThis.File,yXt=globalThis.Blob,vXt=Ws.Agent,xXt=Ws.Pool,bXt=Ws.Client,TXt=Ws.Dispatcher,SXt=()=>{},wXt=()=>Ws,_Xt=Ws.MockAgent,EXt={redirect:()=>r=>r,retry:()=>r=>r},CXt=async(r,e)=>{let t=await globalThis.fetch(r,e);return{statusCode:t.status,headers:Object.fromEntries(t.headers.entries()),body:{text:()=>t.text(),json:()=>t.json(),arrayBuffer:()=>t.arrayBuffer()}}}});var dNe={};le(dNe,{AmazonBedrockProvider:()=>Lee});async function uNe(){return await Promise.resolve().then(()=>(lNe(),cNe))}var Dee,Lee,pNe=A(()=>{"use strict";Oee();Kr();vS();xc();xr();bt();nc();Q();Nu();I$();Nee();em();Ht();Ta();Dee=ye.provider,Lee=class extends an{bedrockClient;conversationHistory=[];region;constructor(e,t,n,o){super(e,"bedrock",t),this.region=o?.region||n||process.env.AWS_REGION||"us-east-1",g.debug("[AmazonBedrockProvider] Starting constructor with extensive logging for debugging"),g.debug(`[AmazonBedrockProvider] Environment check: AWS_REGION=${process.env.AWS_REGION||"undefined"}, AWS_ACCESS_KEY_ID=${process.env.AWS_ACCESS_KEY_ID?"SET":"undefined"}, AWS_SECRET_ACCESS_KEY=${process.env.AWS_SECRET_ACCESS_KEY?"SET":"undefined"}`);try{g.debug("[AmazonBedrockProvider] Creating BedrockRuntimeClient with clean configuration"),this.bedrockClient=new Pee({region:this.region,...o?.accessKeyId&&o?.secretAccessKey?{credentials:{accessKeyId:o.accessKeyId,secretAccessKey:o.secretAccessKey,...o.sessionToken?{sessionToken:o.sessionToken}:{}}}:{}}),g.debug(`[AmazonBedrockProvider] Successfully created BedrockRuntimeClient with model: ${this.modelName}, region: ${this.region}`)}catch(s){throw g.error("[AmazonBedrockProvider] CRITICAL: Failed to initialize BedrockRuntimeClient:",s),s}}async performInitialHealthCheck(){let{BedrockClient:e,ListFoundationModelsCommand:t}=await uNe(),n=new e({region:this.region});try{g.debug("[AmazonBedrockProvider] Starting initial health check to validate credentials and connectivity");let o=new t({}),s=Date.now();await n.send(o);let i=Date.now()-s;g.debug(`[AmazonBedrockProvider] Health check PASSED - credentials valid, connectivity good, responseTime: ${i}ms`)}catch(o){let s=o instanceof Error?o.message:String(o);g.error("[AmazonBedrockProvider] Health check FAILED - this will cause production failures:",{error:s,errorType:o instanceof Error?o.constructor.name:"Unknown",region:process.env.AWS_REGION||"us-east-1",hasAccessKey:!!process.env.AWS_ACCESS_KEY_ID,hasSecretKey:!!process.env.AWS_SECRET_ACCESS_KEY})}finally{try{n.destroy()}catch{}}}getAISDKModel(){throw new Error("AmazonBedrockProvider does not use AI SDK models")}getProviderName(){return"bedrock"}getDefaultModel(){return process.env.BEDROCK_MODEL||"anthropic.claude-sonnet-4-6"}getDefaultEmbeddingModel(){return process.env.BEDROCK_EMBEDDING_MODEL||process.env.AWS_EMBEDDING_MODEL||"amazon.titan-embed-text-v2:0"}async generate(e){g.debug("[AmazonBedrockProvider] generate() called with conversation management");let t=Date.now(),n=typeof e=="string"?{prompt:e}:e;this.conversationHistory=[];let o=n.input;if(!!(o?.images?.length||o?.content?.length||o?.files?.length||o?.csvFiles?.length||o?.pdfFiles?.length)){g.debug("[AmazonBedrockProvider] Detected multimodal input in generate(), using multimodal message builder",{hasImages:!!o?.images?.length,imageCount:o?.images?.length||0,hasContent:!!o?.content?.length,contentCount:o?.content?.length||0,hasFiles:!!o?.files?.length,fileCount:o?.files?.length||0,hasCSVFiles:!!o?.csvFiles?.length,csvFileCount:o?.csvFiles?.length||0,hasPDFFiles:!!o?.pdfFiles?.length,pdfFileCount:o?.pdfFiles?.length||0});let p=Lv(n,this.providerName,this.modelName),m=await sp(p,this.providerName,this.modelName);this.conversationHistory=this.convertToBedrockMessages(m)}else{g.debug("[AmazonBedrockProvider] Text-only input in generate(), using simple message builder");let d={role:"user",content:[{text:n.prompt}]};this.conversationHistory.push(d)}g.debug(`[AmazonBedrockProvider] Starting conversation with ${this.conversationHistory.length} message(s)`);let i,a,l;try{({text:i,usage:a,finishReason:l}=await this.conversationLoop(n))}catch(d){let p=this.neurolink?.getEventEmitter();throw p&&p.emit("generation:end",{provider:this.providerName,responseTime:Date.now()-t,timestamp:Date.now(),result:{content:"",usage:{input:0,output:0,total:0},model:this.modelName||this.getDefaultModel(),provider:this.providerName,finishReason:"error"},success:!1,error:d instanceof Error?d.message:String(d)}),d}let u=this.neurolink?.getEventEmitter();return u&&u.emit("generation:end",{provider:this.providerName,responseTime:Date.now()-t,timestamp:Date.now(),result:{content:i,usage:a,model:this.modelName||this.getDefaultModel(),provider:this.providerName,finishReason:l},success:!0}),{content:i,usage:a,model:this.modelName||this.getDefaultModel(),provider:this.getProviderName()}}async conversationLoop(e){let n=0,o=0,s=0,i;for(;n<10;){n++,g.debug(`[AmazonBedrockProvider] Conversation iteration ${n}`);try{g.debug("[AmazonBedrockProvider] About to call Bedrock API");let a=await this.callBedrock(e);g.debug("[AmazonBedrockProvider] Received Bedrock response",JSON.stringify(a,null,2)),o+=a.usage?.inputTokens??0,s+=a.usage?.outputTokens??0,a.stopReason&&(i=a.stopReason);let l=await this.handleBedrockResponse(a);if(g.debug("[AmazonBedrockProvider] Handle response result:",l),l.shouldContinue)g.debug("[AmazonBedrockProvider] Continuing conversation loop...");else return g.debug("[AmazonBedrockProvider] Conversation completed with final text"),g.debug(`[AmazonBedrockProvider] Returning final text: "${l.text}"`),{text:l.text||"",usage:{input:o,output:s,total:o+s},finishReason:i}}catch(a){throw g.error("[AmazonBedrockProvider] Error in conversation loop:",a),this.handleProviderError(a)}}throw new Error("Conversation loop exceeded maximum iterations")}async callBedrock(e){let t=Date.now();return Dee.startActiveSpan("bedrock.generate",{kind:er.CLIENT,attributes:{"gen_ai.system":"aws.bedrock","gen_ai.request.model":this.modelName||this.getDefaultModel(),"gen_ai.operation.name":"chat"}},async n=>{g.info(`\u{1F680} [AmazonBedrockProvider] Starting Bedrock API call at ${new Date().toISOString()}`);try{let o="unknown";try{o=typeof this.bedrockClient.config.region=="function"?await this.bedrockClient.config.region():this.bedrockClient.config.region??"unknown"}catch{}g.info(`\u{1F527} [AmazonBedrockProvider] Client region: ${o}`),g.info(`\u{1F527} [AmazonBedrockProvider] Model: ${this.modelName||this.getDefaultModel()}`),g.info(`\u{1F527} [AmazonBedrockProvider] Conversation history length: ${this.conversationHistory.length}`);let s=await this.getAllTools(),i=this.convertAISDKToolsToToolDefinitions(s),a=this.formatToolsForBedrock(i),l={modelId:this.modelName||this.getDefaultModel(),messages:this.convertToAWSMessages(this.conversationHistory),system:[{text:e.systemPrompt||"You are a helpful assistant with access to external tools. Use tools when necessary to provide accurate information."}],inferenceConfig:{maxTokens:e.maxTokens,temperature:e.temperature||.7}};a&&(l.toolConfig=a,g.info(`\u{1F6E0}\uFE0F [AmazonBedrockProvider] Tools configured: ${a.tools?.length||0}`)),g.info("\u{1F4CB} [AmazonBedrockProvider] Command input summary:"),g.info(` - Model ID: ${l.modelId}`),g.info(` - Messages count: ${l.messages?.length||0}`),g.info(` - System prompts: ${l.system?.length||0}`),g.info(` - Max tokens: ${l.inferenceConfig?.maxTokens}`),g.info(` - Temperature: ${l.inferenceConfig?.temperature}`),g.debug(`[AmazonBedrockProvider] Calling Bedrock with ${this.conversationHistory.length} messages and ${a?.tools?.length||0} tools`);let u=new Mee(l);g.debug("[Observability] Bedrock API request",{model:l.modelId,region:o,messageCount:l.messages?.length||0,toolCount:l.toolConfig?.tools?.length||0,maxTokens:l.inferenceConfig?.maxTokens});let d=Date.now(),p=await Oe(this.bedrockClient.send(u),12e4,new Error("Bedrock API call timed out")),m=Date.now()-d;g.debug("[Observability] Bedrock API response",{model:l.modelId,durationMs:m,hasContent:!!p.output?.message?.content?.length,stopReason:p.stopReason,usage:p.usage?{inputTokens:p.usage.inputTokens,outputTokens:p.usage.outputTokens,totalTokens:(p.usage.inputTokens||0)+(p.usage.outputTokens||0)}:void 0}),g.info("[AmazonBedrockProvider] Bedrock API call successful"),g.info(`[AmazonBedrockProvider] API call duration: ${m}ms`);let f=Date.now()-t;g.info(`[AmazonBedrockProvider] Total callBedrock duration: ${f}ms`),n.setAttribute("gen_ai.response.stop_reason",p.stopReason??""),n.setAttribute("gen_ai.usage.input_tokens",p.usage?.inputTokens??0),n.setAttribute("gen_ai.usage.output_tokens",p.usage?.outputTokens??0);let h=oo(this.providerName,this.modelName,{input:p.usage?.inputTokens??0,output:p.usage?.outputTokens??0,total:(p.usage?.inputTokens??0)+(p.usage?.outputTokens??0)});return h&&h>0&&n.setAttribute("neurolink.cost",h),n.setStatus({code:be.OK}),n.end(),p}catch(o){let s=Date.now()-t,i=o&&typeof o=="object"?o:null,a=i?.$metadata&&typeof i.$metadata=="object"?i.$metadata:null;throw g.debug("[Observability] Bedrock API request failed",{model:this.modelName||this.getDefaultModel(),durationMs:s,error:o instanceof Error?o.message:String(o),errorName:o instanceof Error?o.name:void 0,httpStatus:a?.httpStatusCode,awsRequestId:a?.requestId,awsErrorCode:i?.Code}),g.error(`[AmazonBedrockProvider] Bedrock API call failed after ${s}ms`),o instanceof Error&&g.error(`[AmazonBedrockProvider] Error: ${o.name} - ${o.message}`),a&&g.error("[AmazonBedrockProvider] AWS SDK metadata",{httpStatus:a.httpStatusCode,requestId:a.requestId,attempts:a.attempts,totalRetryDelay:a.totalRetryDelay}),n.setStatus({code:be.ERROR,message:o instanceof Error?o.message:String(o)}),n.recordException(o instanceof Error?o:new Error(String(o))),n.end(),o}})}async handleBedrockResponse(e){if(g.debug(`[AmazonBedrockProvider] Received response with stopReason: ${e.stopReason}`),!e.output||!e.output.message)throw new Error("Invalid response structure from Bedrock API");let t=e.output.message,n=e.stopReason,o={role:"assistant",content:(t.content||[]).map(s=>{let i={};return"text"in s&&s.text&&(i.text=s.text),"toolUse"in s&&s.toolUse&&(i.toolUse={toolUseId:s.toolUse.toolUseId||"",name:s.toolUse.name||"",input:s.toolUse.input||{}}),"toolResult"in s&&s.toolResult&&(i.toolResult={toolUseId:s.toolResult.toolUseId||"",content:(s.toolResult.content||[]).map(a=>({text:typeof a=="object"&&"text"in a&&a.text||""})),status:s.toolResult.status||"unknown"}),i})};if(this.conversationHistory.push(o),n==="end_turn"||n==="stop_sequence")return{shouldContinue:!1,text:o.content.filter(i=>i.text).map(i=>i.text).join(" ")};if(n==="tool_use"){g.debug("[AmazonBedrockProvider] Tool use detected - executing tools immediately");let s=[];for(let i of o.content)if(i.toolUse){g.debug(`[AmazonBedrockProvider] Executing tool: ${i.toolUse.name}`);try{g.debug("[AmazonBedrockProvider] Debug toolUse.input:",JSON.stringify(i.toolUse.input,null,2));let a=await this.executeSingleTool(i.toolUse.name,i.toolUse.input||{},i.toolUse.toolUseId);g.debug(`[AmazonBedrockProvider] Tool execution successful: ${i.toolUse.name}`),s.push({toolResult:{toolUseId:i.toolUse.toolUseId,content:[{text:String(a)}],status:"success"}})}catch(a){g.error(`[AmazonBedrockProvider] Tool execution failed: ${i.toolUse.name}`,a);let l=a instanceof Error?a.message:String(a);s.push({toolResult:{toolUseId:i.toolUse.toolUseId,content:[{text:`Error executing tool ${i.toolUse.name}: ${l}`}],status:"error"}})}}if(s.length>0){let i={role:"user",content:s};this.conversationHistory.push(i),g.debug(`[AmazonBedrockProvider] Added ${s.length} tool results to conversation`)}return{shouldContinue:!0}}else return n==="max_tokens"?{shouldContinue:!1,text:o.content.filter(i=>i.text).map(i=>i.text).join(" ")}:(g.warn(`[AmazonBedrockProvider] Unrecognized stop reason "${n}", ending conversation.`),{shouldContinue:!1,text:""})}convertToAWSMessages(e){return e.map(t=>({role:t.role,content:t.content.map(n=>n.text?{text:n.text}:n.image?{image:n.image}:n.document?{document:n.document}:n.toolUse?{toolUse:{toolUseId:n.toolUse.toolUseId,name:n.toolUse.name,input:n.toolUse.input}}:n.toolResult?{toolResult:{toolUseId:n.toolResult.toolUseId,content:n.toolResult.content,status:n.toolResult.status}}:{text:""})}))}async executeSingleTool(e,t,n){return Dee.startActiveSpan("bedrock.tool.execute",{kind:er.CLIENT,attributes:{"gen_ai.tool.name":e,"gen_ai.system":"aws.bedrock"}},async o=>{try{g.debug(`[AmazonBedrockProvider] Executing single tool: ${e}`,{args:t});let s=await this.getAllTools(),i=this.convertAISDKToolsToToolDefinitions(s);if(!i[e])throw new Error(`Tool not found: ${e}`);let a=i[e];if(!a||!a.execute)throw new Error(`Tool ${e} does not have execute method`);let l=t||{};e==="list_directory"&&!l.path&&(l.path=".",g.debug("[AmazonBedrockProvider] Added default path '.' for list_directory tool")),g.debug("[AmazonBedrockProvider] Tool input parameters:",l);let u={};for(let[m,f]of Object.entries(l))(f===null||typeof f=="string"||typeof f=="number"||typeof f=="boolean"||typeof f=="object"&&f!==null)&&(u[m]=f);let d=await a.execute(u);g.debug("[AmazonBedrockProvider] Tool execution result:",{toolName:e,result:d});let p;if(d&&typeof d=="object"&&"success"in d)if(d.success&&d.data!==void 0)typeof d.data=="string"?p=d.data:typeof d.data=="object"?p=JSON.stringify(d.data,null,2):p=String(d.data);else if(d.error){let m=typeof d.error=="string"?d.error:d.error.message||"Tool execution failed";throw new Error(m)}else p="";else typeof d=="string"?p=d:typeof d=="object"?p=JSON.stringify(d,null,2):p=String(d);return o.setStatus({code:be.OK}),p}catch(s){throw g.error("[AmazonBedrockProvider] Tool execution error:",{toolName:e,error:s}),o.setStatus({code:be.ERROR,message:s.message}),o.recordException(s),s}finally{o.end()}})}convertAISDKToolsToToolDefinitions(e){let t={};for(let[n,o]of Object.entries(e))if("description"in o&&o.description){let i=o.parameters??o.inputSchema;t[n]={description:o.description,parameters:i,execute:async a=>{if("execute"in o&&o.execute)return{success:!0,data:await o.execute(a,{toolCallId:`tool_${Date.now()}`,messages:[]})};throw new Error(`Tool ${n} has no execute method`)}}}return t}formatToolsForBedrock(e){if(!e||Object.keys(e).length===0)return null;let t=Object.entries(e).map(([n,o])=>{let s;return o.parameters&&typeof o.parameters=="object"?"_def"in o.parameters?s=Lf(o.parameters):s=o.parameters:s={type:"object",properties:{},required:[]},(!s.type||s.type!=="object")&&(s={type:"object",properties:s.properties||{},required:s.required||[]}),{toolSpec:{name:n,description:o.description,inputSchema:{json:s}}}});return g.debug(`[AmazonBedrockProvider] Formatted ${t.length} tools for Bedrock`),{tools:t}}convertToBedrockMessages(e){return e.map(t=>{let n={role:t.role==="system"?"user":t.role,content:[]};return typeof t.content=="string"?n.content.push({text:t.content}):t.content.forEach(o=>{if(o.type==="text"&&o.text)n.content.push({text:o.text});else if(o.type==="image"&&o.image){let s=typeof o.image=="string"?Buffer.from(o.image.replace(/^data:image\/\w+;base64,/,""),"base64"):o.image,i=o.mimeType?.split("/")[1]||"png";i==="jpg"&&(i="jpeg"),n.content.push({image:{format:i==="jpeg"?Uw.JPEG:i==="png"?Uw.PNG:i==="gif"?Uw.GIF:Uw.WEBP,source:{bytes:s}}})}else if(o.type==="document"||o.type==="pdf"||o.type==="file"&&o.mimeType?.toLowerCase().startsWith("application/pdf")){let s;if(typeof o.data=="string"){let a=o.data.replace(/^data:application\/pdf;base64,/i,"");s=Buffer.from(a,"base64")}else s=o.data;let i=typeof o.name=="string"&&o.name?jc.basename(o.name):"document-pdf";i=i.replace(/\.[^.]+$/,""),i=i.replace(/[^a-zA-Z0-9\s\-()[\]]/g,"-"),i=i.replace(/-+/g,"-").trim().replace(/^-+|-+$/g,""),i=i||"document",n.content.push({document:{format:"pdf",name:i,source:{bytes:s}}})}}),n})}getBedrockClient(){return this.bedrockClient}async executeStream(e){return g.debug("\u{1F7E2} [TRACE] executeStream ENTRY - starting streaming attempt"),g.info("\u{1F680} [AmazonBedrockProvider] Attempting real streaming with ConverseStreamCommand"),Dee.startActiveSpan("bedrock.stream",{kind:er.CLIENT,attributes:{"gen_ai.system":"aws.bedrock","gen_ai.request.model":this.modelName||this.getDefaultModel(),"gen_ai.operation.name":"stream"}},async t=>{try{if(g.debug("\u{1F7E2} [TRACE] executeStream TRY block - about to call streamingConversationLoop"),this.conversationHistory=[],!!(e.input?.images?.length||e.input?.content?.length||e.input?.files?.length||e.input?.csvFiles?.length||e.input?.pdfFiles?.length)){g.debug("[AmazonBedrockProvider] Detected multimodal input, using multimodal message builder",{hasImages:!!e.input?.images?.length,imageCount:e.input?.images?.length||0,hasContent:!!e.input?.content?.length,contentCount:e.input?.content?.length||0,hasFiles:!!e.input?.files?.length,fileCount:e.input?.files?.length||0,hasCSVFiles:!!e.input?.csvFiles?.length,csvFileCount:e.input?.csvFiles?.length||0,hasPDFFiles:!!e.input?.pdfFiles?.length,pdfFileCount:e.input?.pdfFiles?.length||0});let s=Lv(e,this.providerName,this.modelName),i=await sp(s,this.providerName,this.modelName);this.conversationHistory=this.convertToBedrockMessages(i)}else{g.debug("[AmazonBedrockProvider] Text-only input, using simple message builder");let s={role:"user",content:[{text:e.input.text}]};this.conversationHistory.push(s)}g.debug(`[AmazonBedrockProvider] Starting streaming conversation with ${this.conversationHistory.length} message(s)`),g.debug("\u{1F7E2} [TRACE] executeStream - calling streamingConversationLoop NOW");let o=await this.streamingConversationLoop(e,t);return g.debug("\u{1F7E2} [TRACE] executeStream - streamingConversationLoop SUCCESS, returning result"),t.setStatus({code:be.OK}),t.end(),o}catch(n){g.debug("\u{1F534} [TRACE] executeStream CATCH - error caught from streamingConversationLoop");let o=n,s=o?.name==="AccessDeniedException"||o?.name==="UnauthorizedOperation"||o?.message?.includes("bedrock:InvokeModelWithResponseStream")||o?.message?.includes("streaming")||o?.message?.includes("ConverseStream");if(g.debug("\u{1F534} [TRACE] executeStream CATCH - checking if permission error"),g.debug(`\u{1F534} [TRACE] executeStream CATCH - isPermissionError=${s}`),s){g.debug("\u{1F7E1} [TRACE] executeStream CATCH - PERMISSION ERROR DETECTED, starting fallback"),g.warn(`[AmazonBedrockProvider] Streaming permissions not available, falling back to generate method: ${o.message}`),t.addEvent("stream.fallback_to_generate",{reason:o.message});let i=await this.generate({prompt:e.input.text,input:e.input,maxTokens:e.maxTokens,temperature:e.temperature,systemPrompt:e.systemPrompt});if(!i)throw t.setStatus({code:be.ERROR,message:"Generate method returned null result"}),t.end(),new Error("Generate method returned null result");t.setAttribute("gen_ai.response.stop_reason","fallback_end_turn"),t.setStatus({code:be.OK}),t.end();let a=new ReadableStream({start(u){(i.content||"").split(" ").forEach((m,f)=>{u.enqueue({content:m+" "})}),u.enqueue({content:""}),u.close()}});return{stream:{async*[Symbol.asyncIterator](){let u=a.getReader();try{for(;;){let{done:d,value:p}=await u.read();if(d)break;yield p}}finally{u.releaseLock()}}},usage:{total:0,input:0,output:0},model:this.modelName||this.getDefaultModel(),provider:this.getProviderName(),metadata:{fallback:!0}}}throw t.setStatus({code:be.ERROR,message:o instanceof Error?o.message:String(o)}),t.recordException(o instanceof Error?o:new Error(String(o))),t.end(),n}})}async streamingConversationLoop(e,t){g.debug("\u{1F7E6} [TRACE] streamingConversationLoop ENTRY");let n=Date.now(),o=e.maxSteps||200,s=0,i=0,a=0,l;try{g.debug("\u{1F7E6} [TRACE] streamingConversationLoop - testing first streaming call");let u=await this.prepareStreamCommand(e),d=new CB(u);g.debug("[Observability] Bedrock streaming API request",{model:u.modelId,messageCount:u.messages?.length||0,toolCount:u.toolConfig?.tools?.length||0}),t.addEvent("stream.api_call",{"bedrock.message_count":u.messages?.length||0,"bedrock.tool_count":u.toolConfig?.tools?.length||0});let p=Date.now(),m=await Oe(this.bedrockClient.send(d),12e4,new Error("Bedrock streaming API call timed out"));g.debug("[Observability] Bedrock streaming API connection established",{model:u.modelId,durationMs:Date.now()-p,hasStream:!!m.stream});let f=new ReadableStream({start:async _=>{g.debug("\u{1F7E6} [TRACE] streamingConversationLoop - ReadableStream start() called");try{let k="";if(m.stream){let R=[],I="";for await(let M of m.stream){if(M.contentBlockStart&&R.push({}),M.contentBlockDelta?.delta?.text){let O=M.contentBlockDelta.delta.text;I+=O,_.enqueue({content:O})}if(M.contentBlockStart?.start?.toolUse){let O=R[R.length-1];O.toolUse={name:M.contentBlockStart.start.toolUse.name||"",input:{},toolUseId:M.contentBlockStart.start.toolUse.toolUseId||`tool_${Date.now()}_${Math.random().toString(36).substring(2,11)}`}}if(M.contentBlockDelta?.delta?.toolUse){let O=R[R.length-1];O.toolUse||(O.toolUse={name:"",input:{},toolUseId:`tool_${Date.now()}_${Math.random().toString(36).substring(2,11)}`});let D=M.contentBlockDelta.delta.toolUse.input;if(D){if(typeof D=="string")O._inputBuffer=(O._inputBuffer||"")+D;else if(typeof D=="object"&&!Array.isArray(D)){let N=O.toolUse.input||{};O.toolUse.input={...N,...D}}}}if(M.contentBlockStop){let O=R[R.length-1];if(O?.toolUse&&O._inputBuffer){try{O.toolUse.input=JSON.parse(O._inputBuffer)}catch{O.toolUse.input={}}delete O._inputBuffer}I&&O&&!O.toolUse&&(O.text=I),I=""}if(M.messageStop){k=M.messageStop.stopReason||"end_turn";continue}if(M.metadata?.usage){i+=M.metadata.usage.inputTokens??0,a+=M.metadata.usage.outputTokens??0;break}}k&&(l=k);let C={role:"assistant",content:R};if(this.conversationHistory.push(C),t.addEvent("stream.turn_complete",{iteration:0,stop_reason:k}),k==="tool_use"){let M=R.flatMap(O=>O.toolUse?.name?[O.toolUse.name]:[]).join(", ");t.addEvent("stream.tool_use",{iteration:0,tool_names:M})}if(!await this.handleStreamStopReason(k,C,_,e)){t.setAttribute("gen_ai.response.stop_reason",k);return}}for(;s<o;){s++,g.debug(`[AmazonBedrockProvider] Streaming iteration ${s}`);let R=await this.prepareStreamCommand(e),{stopReason:I,assistantMessage:C,usage:E}=await this.processStreamResponse(R,_);if(E&&(i+=E.input,a+=E.output),I&&(l=I),t.addEvent("stream.turn_complete",{iteration:s,stop_reason:I}),I==="tool_use"){let O=C.content.flatMap(D=>D.toolUse?.name?[D.toolUse.name]:[]).join(", ");t.addEvent("stream.tool_use",{iteration:s,tool_names:O})}if(!await this.handleStreamStopReason(I,C,_,e)){t.setAttribute("gen_ai.response.stop_reason",I);break}}s>=o&&(t.setAttribute("gen_ai.response.stop_reason","max_iterations"),_.error(new Error("Streaming conversation exceeded maximum iterations")))}catch(k){g.debug("\u{1F534} [TRACE] streamingConversationLoop - CATCH block hit in ReadableStream"),_.error(k)}}}),h=this.neurolink?.getEventEmitter(),y=this.convertToAsyncIterable(f),v=this,b,w=new Promise(_=>{b=_});return{stream:{async*[Symbol.asyncIterator](){let _=!1;try{yield*y}catch(k){throw _=!0,k}finally{let k={input:i,output:a,total:i+a};b(ip(v.providerName,v.modelName||v.getDefaultModel(),{usage:k},Date.now()-n,{requestId:`bedrock-stream-${Date.now()}`,streamingMode:!0})),h&&h.emit("generation:end",{provider:v.providerName,responseTime:Date.now()-n,timestamp:Date.now(),result:{content:"",usage:k,model:v.modelName||v.getDefaultModel(),provider:v.providerName,finishReason:_?"error":l},success:!_})}}},usage:{total:0,input:0,output:0},model:this.modelName||this.getDefaultModel(),provider:this.getProviderName(),analytics:w,metadata:{startTime:n,streamId:`bedrock-${Date.now()}`}}}catch(u){throw g.debug("\u{1F534} [TRACE] streamingConversationLoop - first streaming call FAILED, throwing"),u}}convertToAsyncIterable(e){return{async*[Symbol.asyncIterator](){let t=e.getReader();try{for(;;){let{done:n,value:o}=await t.read();if(n)break;yield o}}finally{t.releaseLock()}}}}async prepareStreamCommand(e){g.shouldLog("debug")&&(g.debug(`[AmazonBedrockProvider] BEFORE conversion - conversationHistory length: ${this.conversationHistory.length}`),this.conversationHistory.forEach((a,l)=>{g.debug(`[AmazonBedrockProvider] Message ${l}: role=${a.role}, content=${JSON.stringify(a.content)}`)}));let t=e.tools||await this.getAllTools(),n=this.convertAISDKToolsToToolDefinitions(t),o=this.formatToolsForBedrock(n),s=this.convertToAWSMessages(this.conversationHistory);g.shouldLog("debug")&&(g.debug(`[AmazonBedrockProvider] AFTER conversion - messages length: ${s.length}`),s.forEach((a,l)=>{g.debug(`[AmazonBedrockProvider] Converted Message ${l}: role=${a.role}, content=${JSON.stringify(a.content)}`)}));let i={modelId:this.modelName||this.getDefaultModel(),messages:s,system:[{text:e.systemPrompt||"You are a helpful assistant with access to external tools. Use tools when necessary to provide accurate information."}],inferenceConfig:{maxTokens:e.maxTokens,temperature:e.temperature||.7}};return o&&(i.toolConfig=o),g.debug(`[AmazonBedrockProvider] Calling Bedrock streaming with ${this.conversationHistory.length} messages`),g.debug("[AmazonBedrockProvider] DEBUG - Conversation structure:"),this.conversationHistory.forEach((a,l)=>{g.debug(` Message ${l} (${a.role}): ${a.content.length} content items`),a.content.forEach((u,d)=>{let p=Object.keys(u);g.debug(` Content ${d}: ${p.join(", ")}`)})}),i}async processStreamResponse(e,t){let n=new CB(e);g.debug("[Observability] Bedrock streaming API request (continuation)",{model:e.modelId,messageCount:e.messages?.length||0});let o=Date.now(),s=await Oe(this.bedrockClient.send(n),12e4,new Error("Bedrock streaming API call timed out"));if(g.debug("[Observability] Bedrock streaming API connection established (continuation)",{model:e.modelId,durationMs:Date.now()-o}),!s.stream)throw new Error("No stream returned from Bedrock");let i=[],a="",l="",u;for await(let p of s.stream){if(p.contentBlockStart&&i.push({}),p.contentBlockDelta?.delta?.text){let m=p.contentBlockDelta.delta.text;l+=m,t.enqueue({content:m})}if(p.contentBlockStart?.start?.toolUse){let m=i[i.length-1];m.toolUse={name:p.contentBlockStart.start.toolUse.name||"",input:{},toolUseId:p.contentBlockStart.start.toolUse.toolUseId||`tool_${Date.now()}_${Math.random().toString(36).substring(2,11)}`}}if(p.contentBlockDelta?.delta?.toolUse){let m=i[i.length-1];if(m.toolUse||(m.toolUse={name:"",input:{},toolUseId:`tool_${Date.now()}_${Math.random().toString(36).substring(2,11)}`}),p.contentBlockDelta.delta.toolUse.input){let f=p.contentBlockDelta.delta.toolUse.input;if(typeof f=="string")m._inputBuffer=(m._inputBuffer||"")+f;else if(f&&typeof f=="object"&&!Array.isArray(f)){let h=m.toolUse.input||{};m.toolUse.input={...h,...f}}}}if(p.contentBlockStop){let m=i[i.length-1];if(m?.toolUse&&m._inputBuffer){try{m.toolUse.input=JSON.parse(m._inputBuffer)}catch{m.toolUse.input={}}delete m._inputBuffer}l&&m&&!m.toolUse&&(m.text=l),l=""}if(p.messageStop){a=p.messageStop.stopReason||"end_turn";continue}if(p.metadata?.usage){let m=p.metadata.usage.inputTokens??0,f=p.metadata.usage.outputTokens??0;u={input:m,output:f,total:p.metadata.usage.totalTokens??m+f};break}}let d={role:"assistant",content:i};return this.conversationHistory.push(d),{stopReason:a,assistantMessage:d,usage:u}}async handleStreamStopReason(e,t,n,o){return e==="end_turn"||e==="stop_sequence"?(n.close(),!1):e==="tool_use"?(g.debug("\u{1F6E0}\uFE0F [AmazonBedrockProvider] Tool use detected in streaming - executing tools"),await this.executeStreamTools(t.content,o),!0):(n.close(),!1)}async executeStreamTools(e,t){let n=[],o=0,s=[],i=[];for(let a of e)a.toolUse&&o++;g.debug(`\u{1F50D} [AmazonBedrockProvider] Found ${o} toolUse blocks in assistant message`);for(let a of e)if(a.toolUse){g.debug(`\u{1F527} [AmazonBedrockProvider] Executing tool: ${a.toolUse.name}`),s.push({type:"tool-call",toolCallId:a.toolUse.toolUseId,toolName:a.toolUse.name,args:a.toolUse.input||{}});try{let l=await this.executeSingleTool(a.toolUse.name,a.toolUse.input||{},a.toolUse.toolUseId);g.debug(`\u2705 [AmazonBedrockProvider] Tool execution successful: ${a.toolUse.name}`),i.push({type:"tool-result",toolCallId:a.toolUse.toolUseId,toolName:a.toolUse.name,result:l}),n.push({toolResult:{toolUseId:a.toolUse.toolUseId,content:[{text:String(l)}],status:"success"}})}catch(l){g.error(`\u274C [AmazonBedrockProvider] Tool execution failed: ${a.toolUse.name}`,l);let u=l instanceof Error?l.message:String(l);i.push({type:"tool-result",toolCallId:a.toolUse.toolUseId,toolName:a.toolUse.name,result:{error:u}}),n.push({toolResult:{toolUseId:a.toolUse.toolUseId,content:[{text:`Error executing tool ${a.toolUse.name}: ${u}`}],status:"error"}})}}if(g.debug(`\u{1F4CA} [AmazonBedrockProvider] Created ${n.length} toolResult blocks for ${o} toolUse blocks`),n.length!==o)throw g.error(`\u274C [AmazonBedrockProvider] Mismatch: ${n.length} toolResults vs ${o} toolUse blocks`),new Error(`Tool mapping mismatch: ${n.length} toolResults for ${o} toolUse blocks`);if(n.length>0){let a={role:"user",content:n};this.conversationHistory.push(a),g.debug(`\u{1F4E4} [AmazonBedrockProvider] Added ${n.length} tool results to conversation (1:1 mapping validated)`),_n(this.neurolink?.getEventEmitter(),i.map(l=>{let u=l.result&&typeof l.result=="object"&&"error"in l.result;return{toolName:l.toolName,result:l.result,error:u?String(l.result.error):void 0}})),this.handleToolExecutionStorage(s,i,t,new Date).catch(l=>{g.warn("[AmazonBedrockProvider] Failed to store tool executions",{provider:this.providerName,error:l instanceof Error?l.message:String(l)})})}}async checkBedrockHealth(){let e=new AbortController,t=setTimeout(()=>e.abort(),1e4),{BedrockClient:n,ListFoundationModelsCommand:o}=await uNe(),s=new n({region:process.env.AWS_REGION||"us-east-1"});try{g.debug("\u{1F50D} [AmazonBedrockProvider] Starting health check...");let i=new o({}),l=(await s.send(i,{abortSignal:e.signal})).modelSummaries||[],u=l.filter(d=>d.modelLifecycle?.status==="ACTIVE");if(g.debug(`\u2705 [AmazonBedrockProvider] Health check passed - Found ${u.length} active models out of ${l.length} total models`),u.length===0)throw new Error("No active foundation models available in the region")}catch(i){clearTimeout(t);let a=i;if(br(i))throw new Error("Bedrock health check timed out after 10 seconds",{cause:i});let l=typeof a.message=="string"?a.message:"";throw l.includes("UnauthorizedOperation")||l.includes("AccessDenied")?new Error("Bedrock access denied. Check your AWS credentials and IAM permissions for bedrock:ListFoundationModels",{cause:i}):a.code==="ECONNREFUSED"||a.code==="ENOTFOUND"?new Error("Unable to connect to Bedrock service. Check your network connectivity and AWS region configuration",{cause:i}):(g.error("\u274C [AmazonBedrockProvider] Health check failed:",i),new Error(`Bedrock health check failed: ${l||"Unknown error"}`,{cause:i}))}finally{clearTimeout(t);try{s.destroy()}catch{}}}formatProviderError(e){let t=e instanceof Error?e.message:String(e);if(t.includes("AccessDeniedException"))return new kn("AWS Bedrock access denied. Check your credentials and permissions.",this.providerName);if(t.includes("ValidationException"))return new ur(`Validation error: ${t}`,this.providerName);let n=e?.name??"",o=e?.code??"";return n==="ThrottlingException"||o==="ThrottlingException"?new Za(`Bedrock rate limit (throttled): ${e instanceof Error?e.message:String(e)}`,"bedrock"):new ur(`AWS Bedrock error: ${t}`,this.providerName)}async embed(e,t){let n=t||"amazon.titan-embed-text-v2:0";g.debug("Generating embedding",{provider:this.providerName,model:n,textLength:e.length});try{let{InvokeModelCommand:o}=await Promise.resolve().then(()=>(Oee(),aNe)),s=JSON.stringify({inputText:e}),i=new o({modelId:n,contentType:"application/json",accept:"application/json",body:s}),a=await Oe(this.bedrockClient.send(i),6e4,new Error("Bedrock embedding API call timed out")),l=JSON.parse(new TextDecoder().decode(a.body));if(!l.embedding||!Array.isArray(l.embedding))throw new Error("Invalid embedding response from Bedrock");return g.debug("Embedding generated successfully",{provider:this.providerName,model:n,embeddingDimension:l.embedding.length}),l.embedding}catch(o){throw g.error("Embedding generation failed",{error:o instanceof Error?o.message:String(o),model:n,textLength:e.length}),this.handleProviderError(o)}}async embedMany(e,t){let n=t||"amazon.titan-embed-text-v2:0";g.debug("Generating batch embeddings",{provider:this.providerName,model:n,count:e.length});try{let o=await Promise.all(e.map(s=>this.embed(s,n)));return g.debug("Batch embeddings generated successfully",{provider:this.providerName,model:n,count:o.length,embeddingDimension:o[0]?.length}),o}catch(o){throw g.error("Batch embedding generation failed",{error:o instanceof Error?o.message:String(o),model:n,count:e.length}),this.handleProviderError(o)}}}});function RNe(r){let e=r.startsWith("o3")||r.startsWith("o4-mini")||r.startsWith("gpt-5")&&!r.startsWith("gpt-5-chat"),t=r.startsWith("gpt-4")||r.startsWith("gpt-5")&&!r.startsWith("gpt-5-nano")&&!r.startsWith("gpt-5-chat")&&!r.startsWith("gpt-5.4-nano")||r.startsWith("o3")||r.startsWith("o4-mini"),n=r.startsWith("o1")||r.startsWith("o3")||r.startsWith("o4-mini")||r.startsWith("gpt-5")&&!r.startsWith("gpt-5-chat"),o=r.startsWith("gpt-5.1")||r.startsWith("gpt-5.2")||r.startsWith("gpt-5.3")||r.startsWith("gpt-5.4");return{supportsFlexProcessing:e,supportsPriorityProcessing:t,isReasoningModel:n,systemMessageMode:n?"developer":"system",supportsNonReasoningParameters:o}}function mNe(r){var e,t,n,o,s,i;if(r==null)return{inputTokens:{total:void 0,noCache:void 0,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:void 0,text:void 0,reasoning:void 0},raw:void 0};let a=(e=r.prompt_tokens)!=null?e:0,l=(t=r.completion_tokens)!=null?t:0,u=(o=(n=r.prompt_tokens_details)==null?void 0:n.cached_tokens)!=null?o:0,d=(i=(s=r.completion_tokens_details)==null?void 0:s.reasoning_tokens)!=null?i:0;return{inputTokens:{total:a,noCache:a-u,cacheRead:u,cacheWrite:void 0},outputTokens:{total:l,text:l-d,reasoning:d},raw:r}}function kXt({prompt:r,systemMessageMode:e="system"}){var t;let n=[],o=[];for(let{role:s,content:i}of r)switch(s){case"system":{switch(e){case"system":{n.push({role:"system",content:i});break}case"developer":{n.push({role:"developer",content:i});break}case"remove":{o.push({type:"other",message:"system messages are removed for this model"});break}default:{let a=e;throw new Error(`Unsupported system message mode: ${a}`)}}break}case"user":{if(i.length===1&&i[0].type==="text"){n.push({role:"user",content:i[0].text});break}n.push({role:"user",content:i.map((a,l)=>{var u,d,p;switch(a.type){case"text":return{type:"text",text:a.text};case"file":if(a.mediaType.startsWith("image/")){let m=a.mediaType==="image/*"?"image/jpeg":a.mediaType;return{type:"image_url",image_url:{url:a.data instanceof URL?a.data.toString():`data:${m};base64,${wr(a.data)}`,detail:(d=(u=a.providerOptions)==null?void 0:u.openai)==null?void 0:d.imageDetail}}}else if(a.mediaType.startsWith("audio/")){if(a.data instanceof URL)throw new it({functionality:"audio file parts with URLs"});switch(a.mediaType){case"audio/wav":return{type:"input_audio",input_audio:{data:wr(a.data),format:"wav"}};case"audio/mp3":case"audio/mpeg":return{type:"input_audio",input_audio:{data:wr(a.data),format:"mp3"}};default:throw new it({functionality:`audio content parts with media type ${a.mediaType}`})}}else if(a.mediaType==="application/pdf"){if(a.data instanceof URL)throw new it({functionality:"PDF file parts with URLs"});return{type:"file",file:typeof a.data=="string"&&a.data.startsWith("file-")?{file_id:a.data}:{filename:(p=a.filename)!=null?p:`part-${l}.pdf`,file_data:`data:application/pdf;base64,${wr(a.data)}`}}}else throw new it({functionality:`file part media type ${a.mediaType}`})}})});break}case"assistant":{let a="",l=[];for(let u of i)switch(u.type){case"text":{a+=u.text;break}case"tool-call":{l.push({id:u.toolCallId,type:"function",function:{name:u.toolName,arguments:JSON.stringify(u.input)}});break}}n.push({role:"assistant",content:a,tool_calls:l.length>0?l:void 0});break}case"tool":{for(let a of i){if(a.type==="tool-approval-response")continue;let l=a.output,u;switch(l.type){case"text":case"error-text":u=l.value;break;case"execution-denied":u=(t=l.reason)!=null?t:"Tool execution denied.";break;case"content":case"json":case"error-json":u=JSON.stringify(l.value);break}n.push({role:"tool",tool_call_id:a.toolCallId,content:u})}break}default:{let a=s;throw new Error(`Unsupported role: ${a}`)}}return{messages:n,warnings:o}}function Fee({id:r,model:e,created:t}){return{id:r??void 0,modelId:e??void 0,timestamp:t?new Date(t*1e3):void 0}}function fNe(r){switch(r){case"stop":return"stop";case"length":return"length";case"content_filter":return"content-filter";case"function_call":case"tool_calls":return"tool-calls";default:return"other"}}function PXt({tools:r,toolChoice:e}){r=r?.length?r:void 0;let t=[];if(r==null)return{tools:void 0,toolChoice:void 0,toolWarnings:t};let n=[];for(let s of r)s.type==="function"?n.push({type:"function",function:{name:s.name,description:s.description,parameters:s.inputSchema,...s.strict!=null?{strict:s.strict}:{}}}):t.push({type:"unsupported",feature:`tool type: ${s.type}`});if(e==null)return{tools:n,toolChoice:void 0,toolWarnings:t};let o=e.type;switch(o){case"auto":case"none":case"required":return{tools:n,toolChoice:o,toolWarnings:t};case"tool":return{tools:n,toolChoice:{type:"function",function:{name:e.toolName}},toolWarnings:t};default:{let s=o;throw new it({functionality:`tool choice type: ${s}`})}}}function gNe(r){var e,t,n,o;if(r==null)return{inputTokens:{total:void 0,noCache:void 0,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:void 0,text:void 0,reasoning:void 0},raw:void 0};let s=(e=r.prompt_tokens)!=null?e:0,i=(t=r.completion_tokens)!=null?t:0;return{inputTokens:{total:(n=r.prompt_tokens)!=null?n:void 0,noCache:s,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:(o=r.completion_tokens)!=null?o:void 0,text:i,reasoning:void 0},raw:r}}function MXt({prompt:r,user:e="user",assistant:t="assistant"}){let n="";r[0].role==="system"&&(n+=`${r[0].content}
1830
1830
 
1831
1831
  `,r=r.slice(1));for(let{role:o,content:s}of r)switch(o){case"system":throw new Lc({message:"Unexpected system message in prompt: ${content}",prompt:r});case"user":{let i=s.map(a=>{if(a.type==="text")return a.text}).filter(Boolean).join("");n+=`${e}:
1832
1832
  ${i}