@juspay/neurolink 9.59.4 → 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.
- package/CHANGELOG.md +12 -0
- package/dist/browser/neurolink.min.js +3 -3
- package/dist/core/baseProvider.js +13 -0
- package/dist/lib/core/baseProvider.js +13 -0
- package/dist/lib/neurolink.js +1 -1
- package/dist/lib/providers/googleVertex.d.ts +8 -1
- package/dist/lib/providers/googleVertex.js +42 -6
- package/dist/neurolink.js +1 -1
- package/dist/providers/googleVertex.d.ts +8 -1
- package/dist/providers/googleVertex.js +42 -6
- package/package.json +1 -1
|
@@ -1123,7 +1123,7 @@ Reasoning: [Provide a detailed explanation of your evaluation, explaining why yo
|
|
|
1123
1123
|
[... ${Math.max(0,l-Buffer.byteLength(h,"utf-8")-Buffer.byteLength(y,"utf-8"))} bytes omitted. Use ${BUt} tool to access full output ...]
|
|
1124
1124
|
|
|
1125
1125
|
`;return{preview:h+T+y,truncated:!0,originalSize:l}}var BUt,q$=A(()=>{"use strict";BUt="retrieve_context"});var G$,ICe=A(()=>{"use strict";Tn();vo();z1();Ta();Ht();Q();DL();em();q$();G$=class{constructor(e,t,n,o){this.providerName=e;this.directTools=t;this.neurolink=n;this.utilities=o;this.mcpTools={}}mcpTools;customTools;toolExecutor;sessionId;userId;wrapExecuteWithTruncation(e,t){return async n=>{let o=await t(n);return this.truncateToolResult(e,o)}}truncateToolResult(e,t){if(t==null)return t;if(typeof t=="string"){let{preview:n,truncated:o,originalSize:s}=Rm(t);return o&&g.debug(`[ToolsManager] Truncated '${e}' string output: ${s} bytes \u2192 ${Buffer.byteLength(n,"utf-8")} bytes`),o?n:t}if(typeof t=="object"){let n=t,o=null;if(typeof n.content=="string"){let{preview:s,truncated:i,originalSize:a}=Rm(n.content);i&&(g.debug(`[ToolsManager] Truncated '${e}' content field: ${a} bytes \u2192 ${Buffer.byteLength(s,"utf-8")} bytes`),o={...o??n,content:s})}if(typeof n.data=="string"){let{preview:s,truncated:i,originalSize:a}=Rm(n.data);i&&(g.debug(`[ToolsManager] Truncated '${e}' data field: ${a} bytes \u2192 ${Buffer.byteLength(s,"utf-8")} bytes`),o={...o??n,data:s})}if(o)return o;try{let s=JSON.stringify(t);if(Buffer.byteLength(s,"utf-8")>51200){let{preview:i,truncated:a,originalSize:l}=Rm(s);if(a)return g.debug(`[ToolsManager] Truncated '${e}' JSON output: ${l} bytes \u2192 ${Buffer.byteLength(i,"utf-8")} bytes`),{_truncated:!0,_originalSize:l,_preview:i}}}catch{}}return t}setSessionContext(e,t){this.sessionId=e,this.userId=t}emitToolEvent(e,t,n){this.neurolink?.getEventEmitter&&this.neurolink.getEventEmitter().emit(e,om(t,n))}setupToolExecutor(e,t){let n=ye.sdk.startSpan("neurolink.tools.register",{attributes:{[me.NL_PROVIDER]:this.providerName,"tools.custom_count":e.customTools.size}});try{this.customTools=e.customTools,this.toolExecutor=e.executeTool.bind(e),g.debug(`[${t}] Setting up tool executor for provider`,{providerName:this.providerName,availableCustomTools:e.customTools.size,customToolsStored:!!this.customTools,toolExecutorStored:!!this.toolExecutor}),n.setStatus({code:be.OK})}catch(o){throw n.setStatus({code:be.ERROR,message:o instanceof Error?o.message:String(o)}),o instanceof Error&&n.recordException(o),o}finally{n.end()}}async getAllTools(){return Ie({name:"neurolink.tools.getAll",tracer:ye.sdk,attributes:{[me.NL_PROVIDER]:this.providerName}},async e=>{let t={};await this.processDirectTools(t);let n=Object.keys(t).length;e.setAttribute("tools.direct_count",n),g.debug(`[ToolsManager] getAllTools called for ${this.providerName}`,{directToolsCount:Hb(this.directTools)}),await this.processCustomTools(t);let o=Object.keys(t).length-n;e.setAttribute("tools.custom_count",o),await this.processExternalMCPTools(t);let s=Object.keys(t).length-n-o;e.setAttribute("tools.external_mcp_count",s),await this.processMCPTools(t);let i=Object.keys(t).length;e.setAttribute(me.NL_TOOL_COUNT,i);let a=Object.keys(t);return e.setAttribute("tools.names",a.slice(0,20).join(",")+(a.length>20?`...+${a.length-20}`:"")),g.debug(`[ToolsManager] getAllTools complete: ${a.length} tools available`,{provider:this.providerName,toolCount:a.length,toolNames:a.length<=10?a:[...a.slice(0,10),`... and ${a.length-10} more`]}),t})}getDirectTools(){return this.directTools}getMCPTools(){return this.mcpTools}getCustomTools(){return this.customTools}async processDirectTools(e){if(!(!this.directTools||Object.keys(this.directTools).length===0)){g.debug(`[ToolsManager] Loading ${Object.keys(this.directTools).length} direct tools`);for(let[t,n]of Object.entries(this.directTools))if(n&&typeof n=="object"&&"execute"in n){let o=n.execute,s=this.wrapExecuteWithTruncation(t,o);e[t]={...n,execute:async i=>{let a=Date.now();this.emitToolEvent("tool:start",t,{input:i});try{let l=await s(i);return this.emitToolEvent("tool:end",t,{result:l,success:!0,responseTime:Date.now()-a}),l}catch(l){let u=l instanceof Error?l.message:String(l);throw this.emitToolEvent("tool:end",t,{error:u,success:!1,responseTime:Date.now()-a}),l}}}}else e[t]=n}}async processCustomTools(e){if(!(!this.customTools||this.customTools.size===0)){g.debug(`[ToolsManager] Loading ${this.customTools.size} custom tools from setupToolExecutor`);for(let[t,n]of this.customTools.entries()){let o=n||{};if(o&&typeof o.execute=="function"){let s=await this.createCustomToolFromDefinition(t,o);if(s&&!e[t]){let i=s.execute;if(i){let a=this.wrapExecuteWithTruncation(t,i);s.execute=a}e[t]=s}}}}}async processMCPTools(e){if(this.mcpTools||(this.mcpTools={}),this.mcpTools)for(let[t,n]of Object.entries(this.mcpTools))e[t]||(e[t]=n)}async processExternalMCPTools(e){if(!(!this.neurolink||typeof this.neurolink.getExternalMCPTools!="function"))try{let t=await this.neurolink.getExternalMCPTools(),n=0;for(let o of t){let s=await this.createExternalMCPTool(o);s&&!e[o.name]&&(e[o.name]=s,n++)}g.debug("[ToolsManager] External MCP tools loaded",{found:t.length,added:n})}catch(t){g.error(`[ToolsManager] Failed to load external MCP tools for ${this.providerName}:`,t)}}async createCustomToolFromDefinition(e,t){try{let n,o;return t.parameters&&this.utilities?.isZodSchema?.(t.parameters)?n=t.parameters:t.inputSchema&&this.utilities?.isZodSchema?.(t.inputSchema)?n=t.inputSchema:t.inputSchema&&typeof t.inputSchema=="object"?(o=t.inputSchema,n=ga(o)):t.parameters&&typeof t.parameters=="object"?n=uxe(t.parameters):n=c.object({}),{description:t.description||`Tool ${e}`,inputSchema:n,execute:async s=>{let i=ye.sdk.startSpan("neurolink.tools.execute_custom",{attributes:{"tool.name":e,"tool.type":"custom","langfuse.internal":!0}}),a=Date.now(),l;try{if(this.toolExecutor){let f=t.timeoutMs,h=t.maxRetries,y=f!==void 0||h!==void 0,v=await this.toolExecutor(e,s,y?{...f!==void 0&&{timeout:f},...h!==void 0&&{maxRetries:h}}:void 0),b=this.utilities?.convertToolResult?await this.utilities.convertToolResult(v):v,w=Date.now();i.setAttribute("tool.duration_ms",w-a);let T;if(b&&typeof b=="object"&&"isError"in b&&b.isError)try{T=JSON.stringify(b)}catch(_){g.error(`Failed to serialize error result for ${e}`,_)}return i.setAttribute("tool.result.status",T?"error":"success"),T?i.setStatus({code:be.ERROR,message:`Tool ${e} returned isError: true`}):i.setStatus({code:be.OK}),b}this.neurolink?.emitToolStart&&(l=this.neurolink.emitToolStart(e,s,a));let u=await t.execute(s),d=this.utilities?.convertToolResult?await this.utilities.convertToolResult(u):u,p=Date.now(),m;if(d&&typeof d=="object"&&"isError"in d&&d.isError)try{m=JSON.stringify(d)}catch(f){g.error(`Failed to serialize error result for ${e}`,f)}return this.neurolink?.emitToolEnd&&this.neurolink.emitToolEnd(e,d,m,a,p,l),i.setAttribute("tool.duration_ms",p-a),i.setAttribute("tool.result.status",m?"error":"success"),m?i.setStatus({code:be.ERROR,message:`Tool ${e} returned isError: true`}):i.setStatus({code:be.OK}),d}catch(u){let d=Date.now(),p=u instanceof Error?u.message:String(u);throw!this.toolExecutor&&this.neurolink?.emitToolEnd&&(this.neurolink.emitToolEnd(e,void 0,p,a,d,l),g.debug(`Custom tool error: ${e} (${d-a}ms)`,{error:p})),i.setAttribute("tool.duration_ms",d-a),i.setAttribute("tool.result.status","error"),i.recordException(u instanceof Error?u:new Error(p)),i.setStatus({code:be.ERROR,message:p}),u}finally{i.end()}}}}catch(n){return g.error(`Failed to create tool: ${e}`,n),null}}async createExternalMCPTool(e){try{let t;if(e.inputSchema&&typeof e.inputSchema=="object"){let s=e.inputSchema,i=this.utilities?.fixSchemaForOpenAIStrictMode?this.utilities.fixSchemaForOpenAIStrictMode(s):s;t=ga(i)}else t=this.utilities?.createPermissiveZodSchema?this.utilities.createPermissiveZodSchema():c.object({});let n=async s=>{if(this.neurolink&&typeof this.neurolink.executeExternalMCPTool=="function")return this.neurolink.executeExternalMCPTool(e.serverId||"unknown",e.name,s);throw new Error("Cannot execute external MCP tool: NeuroLink executeExternalMCPTool not available")},o=this.wrapExecuteWithTruncation(e.name,n);return{description:e.description||`External MCP tool ${e.name}`,inputSchema:t,execute:async s=>{let i=Date.now();this.emitToolEvent("tool:start",e.name,{input:s});try{let a=await o(s);return this.emitToolEvent("tool:end",e.name,{result:a,success:!0,responseTime:Date.now()-i}),a}catch(a){let l=a instanceof Error?a.message:String(a);throw this.emitToolEvent("tool:end",e.name,{error:l,success:!1,responseTime:Date.now()-i}),g.error(`External MCP tool failed: ${e.name}`,{serverId:e.serverId,error:l}),a}}}}catch(t){return g.error(`Failed to create external MCP tool: ${e.name}`,t),null}}}});function lR(r,e,t){let n=Q3[r];if(!n)return g.warn(`Unknown provider ${r}, no token limits enforced`),t||void 0;let o;return e&&typeof n=="object"&&n[e]?o=n[e]:typeof n=="object"&&n.default?o=n.default:typeof n=="number"?o=n:o=Q3.default,t?t>o?(g.warn(`Requested maxTokens ${t} exceeds ${r}/${e} limit of ${o}. Using ${o} instead.`),o):t:o}var PCe=A(()=>{"use strict";Nd();Q()});var V$,MCe=A(()=>{"use strict";vo();Q();PCe();Qa();hg();Nd();V$=class{constructor(e,t,n=3e4,o){this.providerName=e;this.modelName=t;this.defaultTimeout=n;this.middlewareOptions=o}validateOptions(e){let t=FZ(e);if(!t.isValid){let n=gg(t);throw new Ct(`Text generation options validation failed: ${n}`,"options","VALIDATION_FAILED",t.suggestions)}if(t.warnings.length>0&&g.warn("Text generation options validation warnings:",t.warnings),e.maxSteps!==void 0&&(e.maxSteps<Do.min||e.maxSteps>Do.max))throw new Ct(`maxSteps must be between ${Do.min} and ${Do.max}`,"maxSteps","OUT_OF_RANGE",[`Use a value between ${Do.min} and ${Do.max} for optimal performance`])}validateStreamOptions(e){let t=rR(e);if(!t.isValid){let n=gg(t);throw new Ct(`Stream options validation failed: ${n}`,"options","VALIDATION_FAILED",t.suggestions)}if(t.warnings.length>0&&g.warn("Stream options validation warnings:",t.warnings),e.maxSteps!==void 0&&(e.maxSteps<Do.min||e.maxSteps>Do.max))throw new Ct(`maxSteps must be between ${Do.min} and ${Do.max}`,"maxSteps","OUT_OF_RANGE",[`Use a value between ${Do.min} and ${Do.max} for optimal performance`])}normalizeTextOptions(e){if(typeof e=="string"){let a=lR(this.providerName,this.modelName);return{prompt:e,provider:this.providerName,model:this.modelName,maxTokens:a}}let t=e.prompt||e.input?.text||"",n=e.model||this.modelName,o=e.provider||this.providerName,s=lR(o,n,e.maxTokens),i={...e,prompt:t,provider:o,model:n,maxTokens:s};return e.input&&(i.input={...e.input,text:t}),i}normalizeStreamOptions(e){if(typeof e=="string"){let s=lR(this.providerName,this.modelName);return{input:{text:e},provider:this.providerName,model:this.modelName,maxTokens:s}}let t=e.model||this.modelName,n=e.provider||this.providerName,o=lR(n,t,e.maxTokens);return{...e,provider:n,model:t,maxTokens:o}}getProviderInfo(){return{provider:this.providerName,model:this.modelName}}getTimeout(e){if(e.timeout!==void 0&&e.timeout!==null){let n=EL(e.timeout);if(n!==void 0)return n}return EL(qve(this.providerName,"generate"))??this.defaultTimeout}getContextAwareTimeout(e,t){let n=this.getTimeout(e);if(!t||t<=1e5)return n;let o=1+Math.floor((t-1)/1e5)*.5;return Math.round(n*Math.min(o,4))}isZodSchema(e){return typeof e=="object"&&e!==null&&typeof e.parse=="function"}async convertToolResult(e){if(e&&typeof e=="object"&&"success"in e){let t=e;if(t.success)return t.data!==void 0?t.data:e;{let n=typeof t.error=="string"?t.error:"Tool execution failed";return g.warn(`Tool execution failed: ${n}`),{isError:!0,error:n,content:[{type:"text",text:`Tool execution failed: ${n}`}]}}}return e}createPermissiveZodSchema(){return c.record(c.string(),c.unknown()).transform(e=>e)}fixSchemaForOpenAIStrictMode(e){let t=JSON.parse(JSON.stringify(e));if(t.type==="object"&&t.properties&&typeof t.properties=="object"){let n=Object.keys(t.properties);(!t.required||!Array.isArray(t.required))&&(t.required=[]),t.additionalProperties=!1;for(let o of n){let s=t.properties[o];s&&typeof s=="object"&&(s.type==="object"?t.properties[o]=this.fixSchemaForOpenAIStrictMode(s):s.type==="array"&&s.items&&typeof s.items=="object"&&(t.properties[o].items=this.fixSchemaForOpenAIStrictMode(s.items)))}}return t}extractMiddlewareOptions(e){let t=e.middleware??this.middlewareOptions;if(!t||typeof t!="object"||t===null||t instanceof Date||t instanceof RegExp)return null;let n=t,o=i=>Array.isArray(i)&&i.length>0;return!!n.middlewareConfig||o(n.enabledMiddleware)||o(n.disabledMiddleware)||!!n.preset||o(n.middleware)?{...n,global:{collectStats:!0,continueOnError:!0,...n.global||{}}}:null}handleCommonErrors(e){if(e instanceof zr)return new Error(`${this.providerName} request timed out after ${e.timeout}ms. Consider increasing timeout or using a lighter model.`);let t=e instanceof Error?e.message:String(e);return t.includes("API_KEY_INVALID")||t.includes("Invalid API key")||t.includes("authentication")||t.includes("unauthorized")?new Error(`Invalid API key for ${this.providerName}. Please check your API key environment variable.`):t.includes("rate limit")||t.includes("quota")||t.includes("429")?new Error(`Rate limit exceeded for ${this.providerName}. Please wait before making more requests.`):null}}});var NCe={};le(NCe,{createToolCallRepair:()=>jUt});function jUt(){return async({toolCall:r,tools:e,inputSchema:t,error:n})=>{let{NoSuchToolError:o,InvalidToolInputError:s}=await Promise.resolve().then(()=>(Tn(),HC));if(o.isInstance(n))return qUt(r,Object.keys(e));if(s.isInstance(n))try{let i=await t({toolName:r.toolName});return GUt(r,i)}catch{return null}return null}}function qUt(r,e){let t=r.toolName;if(!t||t.trim().length===0)return null;let n=e.find(l=>l.toLowerCase()===t.toLowerCase());if(n)return g.debug(`[ToolCallRepair] Name repair (case): "${t}" \u2192 "${n}"`),{...r,toolName:n};let o=t.toLowerCase(),s=e.filter(l=>{let u=l.toLowerCase();return u.includes(o)||o.includes(u)});if(s.length===1)return g.debug(`[ToolCallRepair] Name repair (substring): "${t}" \u2192 "${s[0]}"`),{...r,toolName:s[0]};let i=null,a=1/0;for(let l of e){let u=OCe(o,l.toLowerCase()),d=Math.max(t.length,l.length),p=d===0?0:u/d;p<.3&&p<a&&(a=p,i=l)}return i?(g.debug(`[ToolCallRepair] Name repair (levenshtein ${a.toFixed(2)}): "${t}" \u2192 "${i}"`),{...r,toolName:i}):(g.debug(`[ToolCallRepair] Could not repair tool name "${t}". Available: [${e.join(", ")}]`),null)}function GUt(r,e){let t;try{t=JSON.parse(r.input)}catch{return null}if(!t||typeof t!="object"||Array.isArray(t))return null;let n=e.properties;if(!n)return null;let o=Object.keys(n),s=t,i=Object.keys(s),a=Object.create(null),l=!1,u=e.additionalProperties===!1;for(let d of i){if(o.includes(d)){a[d]=s[d];continue}let p=VUt(d,o);if(p){if(Object.prototype.hasOwnProperty.call(a,p)){l=!0;continue}g.debug(`[ToolCallRepair] Param repair: "${d}" \u2192 "${p}" (tool: ${r.toolName})`),a[p]=s[d],l=!0}else u?(g.debug(`[ToolCallRepair] Dropping unmapped key "${d}" (additionalProperties: false, tool: ${r.toolName})`),l=!0):a[d]=s[d]}for(let d of Object.keys(a)){let p=n[d];if(!p)continue;let m=HUt(a[d],p);m!==a[d]&&(g.debug(`[ToolCallRepair] Type coercion on "${d}": ${typeof a[d]} \u2192 ${typeof m} (tool: ${r.toolName})`),a[d]=m,l=!0)}return l?{...r,input:JSON.stringify(a)}:null}function VUt(r,e){let t=r.toLowerCase(),n=e.find(i=>i.toLowerCase()===t);if(n)return n;let o=null,s=1/0;for(let i of e){let a=OCe(t,i.toLowerCase());a<=2&&a<s&&(s=a,o=i)}return o}function HUt(r,e){let t=e.type;if(!t||r===null||r===void 0)return r;if(t==="number"&&typeof r=="string"){let n=r.trim();if(n!==""){let o=Number(n);if(isFinite(o))return o}}if(t==="integer"&&typeof r=="string"){let n=r.trim();if(/^[+-]?\d+$/.test(n)){let o=Number(n);if(Number.isSafeInteger(o))return o}}if(t==="boolean"&&typeof r=="string"){if(r.toLowerCase()==="true")return!0;if(r.toLowerCase()==="false")return!1}if(t==="object"&&typeof r=="string")try{let n=JSON.parse(r);if(n&&typeof n=="object"&&!Array.isArray(n))return n}catch{}if(t==="array"&&typeof r=="string")try{let n=JSON.parse(r);if(Array.isArray(n))return n}catch{}return t==="array"&&!Array.isArray(r)&&typeof r!="string"?[r]:r}function OCe(r,e){if(r===e)return 0;if(r.length===0)return e.length;if(e.length===0)return r.length;r.length>e.length&&([r,e]=[e,r]);let t=r.length,n=e.length,o=new Array(t+1),s=new Array(t+1);for(let i=0;i<=t;i++)o[i]=i;for(let i=1;i<=n;i++){s[0]=i;for(let a=1;a<=t;a++){let l=r[a-1]===e[i-1]?0:1;s[a]=Math.min(o[a]+1,s[a-1]+1,o[a-1]+l)}[o,s]=[s,o]}return o[t]}var DCe=A(()=>{"use strict";Q()});var HZ={};le(HZ,{Agent:()=>M$t,BedrockClient:()=>KUt,BedrockRuntimeClient:()=>ZUt,Blob:()=>P$t,Client:()=>N$t,ConverseCommand:()=>XUt,ConverseStreamCommand:()=>YUt,Cron:()=>m$t,Dispatcher:()=>D$t,File:()=>I$t,FlowProducer:()=>p$t,FormData:()=>A$t,GoogleAuth:()=>uR,HTTPException:()=>b$t,Headers:()=>R$t,Hippocampus:()=>s$t,HippocampusConfig:()=>i$t,Hono:()=>v$t,ImageFormat:()=>QUt,InvokeEndpointCommand:()=>t$t,InvokeEndpointWithResponseStreamCommand:()=>r$t,Job:()=>u$t,ListFoundationModelsCommand:()=>JUt,MockAgent:()=>U$t,Pool:()=>O$t,Queue:()=>c$t,QueueScheduler:()=>d$t,Request:()=>C$t,Response:()=>k$t,SageMakerRuntimeClient:()=>e$t,TextToSpeechClient:()=>o$t,VertexAI:()=>n$t,Worker:()=>l$t,convertToHtml:()=>y$t,cors:()=>x$t,createClient:()=>a$t,default:()=>WUt,extractRawText:()=>h$t,fetch:()=>E$t,getGlobalDispatcher:()=>F$t,interceptors:()=>$$t,logger:()=>T$t,parseBuffer:()=>f$t,request:()=>z$t,secureHeaders:()=>S$t,selectCover:()=>g$t,setGlobalDispatcher:()=>L$t,streamSSE:()=>w$t,timeout:()=>_$t});var ES,$s,WUt,KUt,JUt,ZUt,XUt,YUt,QUt,e$t,t$t,r$t,uR,n$t,o$t,s$t,i$t,a$t,c$t,l$t,u$t,d$t,p$t,m$t,f$t,g$t,h$t,y$t,v$t,x$t,b$t,T$t,S$t,w$t,_$t,E$t,C$t,k$t,R$t,A$t,I$t,P$t,M$t,O$t,N$t,D$t,L$t,F$t,U$t,$$t,z$t,dR=A(()=>{ES={get(r,e){return e==="__esModule"?!0:e==="default"?new Proxy({},{get:ES.get}):new Proxy(function(...t){return new Proxy({},{get:ES.get})},{get:ES.get,apply(t,n,o){return new Proxy({},{get:ES.get})},construct(t,n){return new Proxy({},{get:ES.get})}})}},$s=new Proxy({},ES),WUt=$s,{BedrockClient:KUt,ListFoundationModelsCommand:JUt,BedrockRuntimeClient:ZUt,ConverseCommand:XUt,ConverseStreamCommand:YUt,ImageFormat:QUt}=$s,{SageMakerRuntimeClient:e$t,InvokeEndpointCommand:t$t,InvokeEndpointWithResponseStreamCommand:r$t}=$s,{GoogleAuth:uR,VertexAI:n$t,TextToSpeechClient:o$t}=$s,{Hippocampus:s$t,HippocampusConfig:i$t}=$s,{createClient:a$t}=$s,{Queue:c$t,Worker:l$t,Job:u$t,QueueScheduler:d$t,FlowProducer:p$t}=$s,{Cron:m$t}=$s,{parseBuffer:f$t,selectCover:g$t}=$s,{extractRawText:h$t,convertToHtml:y$t}=$s,{Hono:v$t}=$s,{cors:x$t,HTTPException:b$t,logger:T$t,secureHeaders:S$t,streamSSE:w$t,timeout:_$t}=$s,E$t=globalThis.fetch,C$t=globalThis.Request,k$t=globalThis.Response,R$t=globalThis.Headers,A$t=globalThis.FormData,I$t=globalThis.File,P$t=globalThis.Blob,M$t=$s.Agent,O$t=$s.Pool,N$t=$s.Client,D$t=$s.Dispatcher,L$t=()=>{},F$t=()=>$s,U$t=$s.MockAgent,$$t={redirect:()=>r=>r,retry:()=>r=>r},z$t=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 BCe={};le(BCe,{VIDEO_ERROR_CODES:()=>Et,VideoError:()=>Pt,generateTransitionWithVertex:()=>ZZ,generateVideoWithVertex:()=>JZ,isVertexVideoConfigured:()=>FCe});function FCe(){return!!(process.env.GOOGLE_APPLICATION_CREDENTIALS||process.env.GOOGLE_APPLICATION_CREDENTIALS_NEUROLINK||process.env.GOOGLE_SERVICE_ACCOUNT_KEY||process.env.GOOGLE_AUTH_CLIENT_EMAIL&&process.env.GOOGLE_AUTH_PRIVATE_KEY)}async function UCe(){let r=process.env.GOOGLE_VERTEX_LOCATION||process.env.GOOGLE_CLOUD_LOCATION||j$t,e=process.env.GOOGLE_VERTEX_PROJECT||process.env.GOOGLE_CLOUD_PROJECT||process.env.GOOGLE_CLOUD_PROJECT_ID||process.env.VERTEX_PROJECT_ID;if(!e&&process.env.GOOGLE_APPLICATION_CREDENTIALS)try{let t=JSON.parse(await Uo(process.env.GOOGLE_APPLICATION_CREDENTIALS,"utf-8"));e=t.quota_project_id||t.project_id}catch(t){g.debug("Failed to read project from credentials file",{error:t instanceof Error?t.message:String(t)})}if(!e)throw new Pt({code:Et.PROVIDER_NOT_CONFIGURED,message:"Google Cloud project not found. Set GOOGLE_VERTEX_PROJECT or GOOGLE_CLOUD_PROJECT environment variable, or ensure ADC credentials contain project_id",category:"configuration",severity:"high",retriable:!1,context:{missingVar:"GOOGLE_VERTEX_PROJECT",feature:"video-generation",checkedEnvVars:["GOOGLE_VERTEX_PROJECT","GOOGLE_CLOUD_PROJECT","GOOGLE_CLOUD_PROJECT_ID","VERTEX_PROJECT_ID"]}});return{project:e,location:r}}async function $Ce(){try{let r=await Promise.resolve().then(()=>(dR(),HZ)),e=new r.GoogleAuth({keyFilename:process.env.GOOGLE_APPLICATION_CREDENTIALS,scopes:["https://www.googleapis.com/auth/cloud-platform"]}),t=await Oe(e.getAccessToken(),JC.PROVIDER.AUTH_MS);if(!t)throw new Pt({code:Et.PROVIDER_NOT_CONFIGURED,message:"Failed to obtain access token from Google Cloud credentials",category:"configuration",severity:"high",retriable:!1,context:{provider:"vertex",feature:"video-generation"}});return t}catch(r){throw r instanceof Pt?r:new Pt({code:Et.PROVIDER_NOT_CONFIGURED,message:`Google Cloud authentication failed: ${r instanceof Error?r.message:String(r)}`,category:"configuration",severity:"high",retriable:!1,context:{provider:"vertex",feature:"video-generation"},originalError:r instanceof Error?r:void 0})}}function KZ(r){return r.length<4?(g.warn("Image buffer too small for format detection",{size:r.length}),"image/jpeg"):r[0]===255&&r[1]===216&&r[2]===255?"image/jpeg":r[0]===137&&r[1]===80&&r[2]===78&&r[3]===71?"image/png":r.length>=12&&r[0]===82&&r[1]===73&&r[2]===70&&r[3]===70&&r[8]===87&&r[9]===69&&r[10]===66&&r[11]===80?"image/webp":(g.warn("Unknown image format detected, defaulting to image/jpeg",{firstBytes:r.slice(0,12).toString("hex"),size:r.length}),"image/jpeg")}function q$t(r,e){return r==="1080p"?e==="9:16"?{width:1080,height:1920}:{width:1920,height:1080}:e==="9:16"?{width:720,height:1280}:{width:1280,height:720}}async function JZ(r,e,t={},n){let o=await UCe(),s=o.project,i=n||o.location,a=Date.now(),l=t.resolution||"720p",u=t.length||6,d=t.aspectRatio||"16:9",p=t.audio??!0;g.debug("Starting Vertex video generation",{project:s,location:i,model:H$,resolution:l,durationSeconds:u,aspectRatio:d,generateAudio:p,promptLength:e.length,imageSize:r.length});try{let m=r.toString("base64"),f=KZ(r),h=await $Ce(),v=`https://${i==="global"?"aiplatform.googleapis.com":`${i}-aiplatform.googleapis.com`}/v1/projects/${s}/locations/${i}/publishers/google/models/${H$}:predictLongRunning`,b={instances:[{prompt:e,image:{bytesBase64Encoded:m,mimeType:f}}],parameters:{sampleCount:1,durationSeconds:u,aspectRatio:d,resolution:l,generateAudio:p,resizeMode:"pad"}};g.debug("Sending video generation request",{endpoint:v});let w=new AbortController,T=setTimeout(()=>w.abort(),3e4),_;try{_=await fetch(v,{method:"POST",headers:{Authorization:`Bearer ${h}`,"Content-Type":"application/json; charset=utf-8"},body:JSON.stringify(b),signal:w.signal})}catch(O){throw clearTimeout(T),br(O)?new Pt({code:Et.GENERATION_FAILED,message:"Video generation request timed out after 30 seconds",category:"execution",severity:"high",retriable:!0,context:{provider:"vertex",endpoint:v,timeout:3e4}}):O}if(clearTimeout(T),!_.ok){let O=await _.text();throw new Pt({code:Et.GENERATION_FAILED,message:`Vertex API error: ${_.status} - ${O}`,category:"execution",severity:"high",retriable:_.status>=500,context:{status:_.status,error:O,provider:"vertex",endpoint:v}})}let k=await _.json(),R=k.name;if(!R)throw new Pt({code:Et.GENERATION_FAILED,message:"Vertex API did not return an operation name",category:"execution",severity:"high",retriable:!1,context:{response:k,provider:"vertex"}});g.debug("Video generation operation started",{operationName:R});let I=LCe-(Date.now()-a),C=await H$t(R,h,s,i,Math.max(1e3,I)),E=Date.now()-a,M=q$t(l,d);return g.info("Video generation complete",{processingTime:E,videoSizeKB:Math.round(C.length/1024),dimensions:M}),{data:C,mediaType:"video/mp4",metadata:{duration:u,dimensions:M,model:H$,provider:"vertex",aspectRatio:d,audioEnabled:p,processingTime:E}}}catch(m){throw m instanceof Pt?m:new Pt({code:Et.GENERATION_FAILED,message:`Video generation failed: ${m instanceof Error?m.message:String(m)}`,category:"execution",severity:"high",retriable:!0,context:{provider:"vertex"},originalError:m instanceof Error?m:void 0})}}function G$t(r,e){if(r.error)throw new Pt({code:Et.GENERATION_FAILED,message:`Video generation failed: ${r.error.message||JSON.stringify(r.error)}`,category:"execution",severity:"high",retriable:!1,context:{operationName:e,error:r.error,provider:"vertex"}});let t=r.response?.videos?.[0];if(!t)throw new Pt({code:Et.GENERATION_FAILED,message:"No video data in response from Vertex AI",category:"execution",severity:"high",retriable:!1,context:{operationName:e,response:r.response,provider:"vertex"}});if(t.gcsUri)throw new Pt({code:Et.GENERATION_FAILED,message:`Video stored at GCS: ${t.gcsUri}. GCS download not yet implemented.`,category:"execution",severity:"high",retriable:!1,context:{operationName:e,gcsUri:t.gcsUri,provider:"vertex",suggestion:"Do not set storageUri parameter to receive video as base64 inline"}});if(t.bytesBase64Encoded)return Buffer.from(t.bytesBase64Encoded,"base64");throw new Pt({code:Et.GENERATION_FAILED,message:"No video bytes in response - unexpected response format",category:"execution",severity:"high",retriable:!1,context:{operationName:e,videoData:t,provider:"vertex"}})}async function V$t(r,e,t,n=3e4){let o=new AbortController,s=setTimeout(()=>o.abort(),n),i;try{i=await fetch(r,{method:"POST",headers:{Authorization:`Bearer ${t}`,"Content-Type":"application/json; charset=utf-8"},body:JSON.stringify({operationName:e}),signal:o.signal})}catch(a){throw clearTimeout(s),br(a)?new Pt({code:Et.GENERATION_FAILED,message:`Poll request timed out after ${n}ms`,category:"execution",severity:"high",retriable:!0,context:{provider:"vertex",operationName:e,timeout:n}}):a}if(clearTimeout(s),!i.ok){let a=await i.text();throw new Pt({code:Et.GENERATION_FAILED,message:`Failed to poll video operation: ${i.status} - ${a}`,category:"execution",severity:"high",retriable:i.status>=500,context:{operationName:e,status:i.status,error:a,provider:"vertex"}})}return i.json()}async function H$t(r,e,t,n,o){return zCe(H$,r,e,t,n,o)}async function ZZ(r,e,t,n={},o=4,s){if(!FCe())throw new Pt({code:Et.PROVIDER_NOT_CONFIGURED,message:"Vertex AI credentials not configured for transition generation.",category:"configuration",severity:"high",retriable:!1});let i=await UCe(),a=i.project,l=s||i.location,u=Date.now(),d=n.aspectRatio||"16:9",p=n.resolution||"720p",m=n.audio??!0;g.debug("Starting transition clip generation",{model:WZ,durationSeconds:o,firstFrameSize:r.length,lastFrameSize:e.length,promptLength:t.length});try{let f=r.toString("base64"),h=e.toString("base64"),y=KZ(r),v=KZ(e),b=await $Ce(),w=`https://${l}-aiplatform.googleapis.com/v1/projects/${a}/locations/${l}/publishers/google/models/${WZ}:predictLongRunning`,T={instances:[{prompt:t,image:{bytesBase64Encoded:f,mimeType:y},lastFrame:{bytesBase64Encoded:h,mimeType:v}}],parameters:{sampleCount:1,durationSeconds:o,aspectRatio:d,resolution:p,generateAudio:m}},_=new AbortController,k=setTimeout(()=>_.abort(),3e4),R;try{R=await fetch(w,{method:"POST",headers:{Authorization:`Bearer ${b}`,"Content-Type":"application/json; charset=utf-8"},body:JSON.stringify(T),signal:_.signal})}catch(O){throw clearTimeout(k),br(O)?new Pt({code:Et.DIRECTOR_TRANSITION_FAILED,message:"Transition generation request timed out after 30 seconds",category:"execution",severity:"medium",retriable:!0}):O}if(clearTimeout(k),!R.ok){let O=await R.text();throw new Pt({code:Et.DIRECTOR_TRANSITION_FAILED,message:`Transition API error: ${R.status} - ${O}`,category:"execution",severity:"medium",retriable:R.status>=500,context:{status:R.status,error:O}})}let C=(await R.json()).name;if(!C)throw new Pt({code:Et.DIRECTOR_TRANSITION_FAILED,message:"Transition API did not return an operation name",category:"execution",severity:"medium",retriable:!1});let E=LCe-(Date.now()-u),M=await W$t(C,b,a,l,Math.max(1e3,E));return g.debug("Transition clip generated",{processingTime:Date.now()-u,videoSize:M.length}),M}catch(f){throw f instanceof Pt?f:new Pt({code:Et.DIRECTOR_TRANSITION_FAILED,message:`Transition generation failed: ${f instanceof Error?f.message:String(f)}`,category:"execution",severity:"medium",retriable:!0,originalError:f instanceof Error?f:void 0})}}async function zCe(r,e,t,n,o,s){let i=Date.now(),l=`https://${o==="global"?"aiplatform.googleapis.com":`${o}-aiplatform.googleapis.com`}/v1/projects/${n}/locations/${o}/publishers/google/models/${r}:fetchPredictOperation`;for(;Date.now()-i<s;){let u=await V$t(l,e,t);if(u.done)return G$t(u,e);g.debug("Polling operation...",{operationName:e,elapsed:Date.now()-i}),await new Promise(d=>setTimeout(d,B$t))}throw new Pt({code:Et.POLL_TIMEOUT,message:`Operation timed out after ${Math.round(s/1e3)}s`,category:"timeout",severity:"medium",retriable:!0,context:{operationName:e,timeoutMs:s}})}async function W$t(r,e,t,n,o){return zCe(WZ,r,e,t,n,o)}var Pt,LCe,B$t,H$,WZ,j$t,pR=A(()=>{"use strict";Qc();ZC();Ab();bt();Q();Pt=class extends Ve{constructor(e){super({code:e.code,message:e.message,category:e.category??"execution",severity:e.severity??"high",retriable:e.retriable??!1,context:e.context,originalError:e.originalError}),this.name="VideoError"}},LCe=18e4,B$t=5e3,H$="veo-3.1-generate-001",WZ="veo-3.1-fast-generate-001",j$t="us-central1"});var XZ,mR,jCe=A(()=>{XZ=class{value;next;constructor(e){this.value=e}},mR=class{#e;#t;#r;constructor(){this.clear()}enqueue(e){let t=new XZ(e);this.#e?(this.#t.next=t,this.#t=t):(this.#e=t,this.#t=t),this.#r++}dequeue(){let e=this.#e;if(e)return this.#e=this.#e.next,this.#r--,this.#e||(this.#t=void 0),e.value}peek(){if(this.#e)return this.#e.value}clear(){this.#e=void 0,this.#t=void 0,this.#r=0}get size(){return this.#r}*[Symbol.iterator](){let e=this.#e;for(;e;)yield e.value,e=e.next}*drain(){for(;this.#e;)yield this.dequeue()}}});function cp(r){let e=!1;if(typeof r=="object"&&({concurrency:r,rejectOnClear:e=!1}=r),qCe(r),typeof e!="boolean")throw new TypeError("Expected `rejectOnClear` to be a boolean");let t=new mR,n=0,o=()=>{n<r&&t.size>0&&(n++,t.dequeue().run())},s=()=>{n--,o()},i=async(u,d,p)=>{let m=(async()=>u(...p))();d(m);try{await m}catch{}s()},a=(u,d,p,m)=>{let f={reject:p};new Promise(h=>{f.run=h,t.enqueue(f)}).then(i.bind(void 0,u,d,m)),n<r&&o()},l=(u,...d)=>new Promise((p,m)=>{a(u,p,m,d)});return Object.defineProperties(l,{activeCount:{get:()=>n},pendingCount:{get:()=>t.size},clearQueue:{value(){if(!e){t.clear();return}let u=AbortSignal.abort().reason;for(;t.size>0;)t.dequeue().reject(u)}},concurrency:{get:()=>r,set(u){qCe(u),r=u,queueMicrotask(()=>{for(;n<r&&t.size>0;)o()})}},map:{async value(u,d){let p=Array.from(u,(m,f)=>this(d,m,f));return Promise.all(p)}}}),l}function qCe(r){if(!((Number.isInteger(r)||r===Number.POSITIVE_INFINITY)&&r>0))throw new TypeError("Expected `concurrency` to be a number from 1 and up")}var fR=A(()=>{jCe()});var gR,L9r,YZ,K$t,F9r,Ji,ll,Tg,lp,W$,VCe,HCe,WCe,KCe,hR,U9r,$9r,QZ,J$t,GCe,z9r,B9r,q9r,G9r,up=A(()=>{gR=()=>{},L9r=globalThis.crypto,YZ=()=>{throw new Error("[NeuroLink:browser] fs.appendFileSync is not supported in browser runtime \u2014 use server-side execution")},K$t=class{pipe(){return this}on(){return this}read(){return null}push(){}destroy(){}},F9r=globalThis.ReadableStream||class{},Ji=()=>!1,ll=()=>"",Tg=gR,lp=gR,W$=()=>({}),VCe=()=>[],HCe=gR,WCe=gR,KCe=gR,hR=()=>new K$t,U9r=globalThis.URL,$9r=globalThis.URLSearchParams,QZ=r=>{try{return JSON.stringify(r,null,2)}catch{return String(r)}};QZ.custom=Symbol.for("nodejs.util.inspect.custom");QZ.colors={};QZ.styles={};J$t=globalThis.TextDecoder,GCe=globalThis.TextEncoder,z9r=globalThis.performance||{now:()=>Date.now()},B9r=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 GCe().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 GCe().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 J$t().decode(this)}},q9r=globalThis.clearTimeout,G9r=globalThis.clearInterval});var K9r,J9r,ZCe,CS,Z9r,X9r,eX,Z$t,JCe,Y9r,Q9r,tZr,rZr,yR=A(()=>{K9r=globalThis.crypto,J9r=globalThis.ReadableStream||class{},ZCe=()=>"/",CS=()=>"/tmp",Z9r=globalThis.URL,X9r=globalThis.URLSearchParams,eX=r=>{try{return JSON.stringify(r,null,2)}catch{return String(r)}};eX.custom=Symbol.for("nodejs.util.inspect.custom");eX.colors={};eX.styles={};Z$t=globalThis.TextDecoder,JCe=globalThis.TextEncoder,Y9r=globalThis.performance||{now:()=>Date.now()},Q9r=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 JCe().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 JCe().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 Z$t().decode(this)}},tZr=globalThis.clearTimeout,rZr=globalThis.clearInterval});var nke={};le(nke,{AsyncLocalStorage:()=>y2t,Buffer:()=>sBt,Channel:()=>Kzt,DatabaseSync:()=>oBt,Duplex:()=>x2t,EventEmitter:()=>h2t,Http2ServerRequest:()=>uBt,Http2ServerResponse:()=>dBt,Interface:()=>nBt,MIMEType:()=>yBt,PassThrough:()=>b2t,PerformanceObserver:()=>Vzt,Readable:()=>YCe,ReadableStream:()=>T2t,Resolver:()=>qzt,TextDecoder:()=>tke,TextEncoder:()=>K$,Transform:()=>v2t,URL:()=>Izt,URLSearchParams:()=>Pzt,Worker:()=>Yzt,Writable:()=>QCe,access:()=>J2t,appendFile:()=>R2t,appendFileSync:()=>n2t,arch:()=>lzt,arrayBuffer:()=>pBt,basename:()=>l2t,builtinModules:()=>Czt,callbackify:()=>Uzt,channel:()=>Wzt,chmodSync:()=>k2t,clearInterval:()=>hBt,clearTimeout:()=>fBt,closeSync:()=>M2t,connect:()=>mzt,constants:()=>iBt,copyFileSync:()=>I2t,cpSync:()=>o2t,cpus:()=>szt,createConnection:()=>fzt,createGunzip:()=>Tzt,createGzip:()=>Szt,createHash:()=>XCe,createHmac:()=>Q$t,createInterface:()=>rBt,createReadStream:()=>j2t,createRequire:()=>Ezt,createServer:()=>s2t,createWriteStream:()=>B2t,debug:()=>Lzt,debuglog:()=>eke,default:()=>X$t,deflateSync:()=>hzt,deprecate:()=>Fzt,deserialize:()=>Xzt,dirname:()=>c2t,exec:()=>Y2t,execFile:()=>ezt,execFileSync:()=>ps,execSync:()=>Q2t,existsSync:()=>_2t,extname:()=>u2t,fileURLToPath:()=>Mzt,finished:()=>w2t,format:()=>Azt,freemem:()=>izt,fstatSync:()=>O2t,get:()=>pzt,gunzip:()=>bzt,gunzipSync:()=>yzt,gzip:()=>xzt,gzipSync:()=>vzt,hasSubscribers:()=>Jzt,homedir:()=>rzt,hostname:()=>ozt,inflateSync:()=>gzt,inherits:()=>Nzt,inspect:()=>J$,isAbsolute:()=>p2t,isBuiltin:()=>kzt,isDeepStrictEqual:()=>$zt,isIP:()=>lBt,isIPv4:()=>cBt,isIPv6:()=>aBt,isMainThread:()=>Qzt,join:()=>i2t,lookup:()=>jzt,mkdir:()=>V2t,mkdirSync:()=>N2t,monitorEventLoopDelay:()=>Hzt,normalize:()=>g2t,ok:()=>wzt,openSync:()=>P2t,parentPort:()=>eBt,parse:()=>Rzt,pathToFileURL:()=>Ozt,performance:()=>Gzt,pipeline:()=>S2t,platform:()=>tzt,posix:()=>f2t,promises:()=>Y$t,promisify:()=>Dzt,randomBytes:()=>e2t,randomUUID:()=>t2t,readFile:()=>q2t,readFileSync:()=>E2t,readdir:()=>W2t,readdirSync:()=>L2t,realpathSync:()=>A2t,relative:()=>d2t,release:()=>uzt,rename:()=>Z2t,renameSync:()=>U2t,request:()=>dzt,resolve:()=>a2t,rm:()=>X2t,rmSync:()=>z2t,rmdirSync:()=>$2t,sep:()=>m2t,serialize:()=>Zzt,setInterval:()=>gBt,setTimeout:()=>mBt,spawn:()=>tX,stat:()=>H2t,statSync:()=>D2t,strict:()=>_zt,tmpdir:()=>nzt,toUSVString:()=>zzt,totalmem:()=>azt,type:()=>czt,types:()=>Bzt,unlink:()=>K2t,unlinkSync:()=>F2t,webcrypto:()=>r2t,workerData:()=>tBt,writeFile:()=>G2t,writeFileSync:()=>C2t});var po,ds,X$t,Y$t,XCe,Q$t,e2t,t2t,r2t,n2t,o2t,s2t,i2t,a2t,c2t,l2t,u2t,d2t,p2t,m2t,f2t,g2t,h2t,y2t,YCe,QCe,v2t,x2t,b2t,T2t,S2t,w2t,_2t,E2t,C2t,k2t,R2t,A2t,I2t,P2t,M2t,O2t,N2t,D2t,L2t,F2t,U2t,$2t,z2t,B2t,j2t,q2t,G2t,V2t,H2t,W2t,K2t,J2t,Z2t,X2t,tX,Y2t,Q2t,ezt,ps,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,Mzt,Ozt,Nzt,Dzt,eke,Lzt,J$,Fzt,Uzt,$zt,zzt,Bzt,tke,K$,jzt,qzt,Gzt,Vzt,Hzt,Wzt,Kzt,Jzt,Zzt,Xzt,Yzt,Qzt,eBt,tBt,rBt,nBt,oBt,sBt,iBt,aBt,cBt,lBt,uBt,dBt,pBt,rke,mBt,fBt,gBt,hBt,yBt,kS=A(()=>{po=()=>{},ds=async()=>{},X$t={},Y$t={readFile:ds,writeFile:ds,mkdir:ds,stat:ds,readdir:ds,unlink:ds,access:ds,rm:ds,rename:ds},XCe=r=>{let e=[];return{update(t){return e.push(typeof t=="string"?new K$().encode(t):t),this},digest(t){let n=0;for(let s of e)for(let i=0;i<s.length;i++)n=(n<<5)-n+s[i]|0;let o=(n>>>0).toString(16).padStart(8,"0");return t==="hex"?o:t==="base64"?btoa(o):o}}},Q$t=(r,e)=>XCe(r),e2t=r=>new Uint8Array(r||32),t2t=()=>globalThis.crypto?.randomUUID?.()||Math.random().toString(36),r2t=globalThis.crypto,n2t=()=>{throw new Error("[NeuroLink:browser] fs.appendFileSync is not supported in browser runtime \u2014 use server-side execution")},o2t=()=>{throw new Error("[NeuroLink:browser] fs.cpSync is not supported in browser runtime \u2014 use server-side execution")},s2t=()=>({listen:po,close:po,on:po}),i2t=(...r)=>r.join("/"),a2t=(...r)=>r.join("/"),c2t=r=>r||"",l2t=r=>r?.split?.("/")?.pop?.()||"",u2t=r=>{let e=r?.match?.(/\.[^.]+$/);return e?e[0]:""},d2t=(r,e)=>e||"",p2t=()=>!1,m2t="/",f2t={normalize:r=>r,join:(...r)=>r.join("/"),resolve:(...r)=>r.join("/"),sep:"/"},g2t=r=>r,h2t=class{on(){return this}off(){return this}emit(){return this}once(){return this}removeListener(){return this}addListener(){return this}},y2t=class{getStore(){}run(r,e,...t){return e(...t)}enterWith(){}disable(){}},YCe=class{pipe(){return this}on(){return this}read(){return null}push(){}destroy(){}},QCe=class{write(){return!0}end(){}on(){return this}destroy(){}},v2t=class{push(){}on(){return this}},x2t=class{on(){return this}},b2t=class{pipe(){return this}on(){return this}},T2t=globalThis.ReadableStream||class{},S2t=po,w2t=po,_2t=()=>!1,E2t=()=>"",C2t=po,k2t=po,R2t=ds,A2t=r=>r,I2t=po,P2t=()=>0,M2t=po,O2t=()=>({}),N2t=po,D2t=()=>({}),L2t=()=>[],F2t=po,U2t=po,$2t=po,z2t=po,B2t=()=>new QCe,j2t=()=>new YCe,q2t=ds,G2t=ds,V2t=ds,H2t=ds,W2t=ds,K2t=ds,J2t=ds,Z2t=ds,X2t=ds,tX=()=>({on:po,stdout:{on:po},stderr:{on:po},kill:po}),Y2t=(r,e)=>e?.(null,"",""),Q2t=()=>"",ezt=(r,e,t)=>{typeof e=="function"?e(null,"",""):t?.(null,"","")},ps=()=>"",tzt="browser",rzt=()=>"/",nzt=()=>"/tmp",ozt=()=>"browser",szt=()=>[{}],izt=()=>0,azt=()=>0,czt=()=>"Browser",lzt=()=>"wasm",uzt=()=>"0",dzt=()=>({}),pzt=()=>({}),mzt=()=>({}),fzt=()=>({}),gzt=()=>new Uint8Array,hzt=()=>new Uint8Array,yzt=()=>new Uint8Array,vzt=()=>new Uint8Array,xzt=(r,e)=>e?.(null,r),bzt=(r,e)=>e?.(null,r),Tzt=()=>({}),Szt=()=>({}),wzt=po,_zt={},Ezt=()=>()=>({}),Czt=[],kzt=()=>!1,Rzt=r=>({pathname:r||"",hostname:"",protocol:"",search:"",hash:""}),Azt=()=>"",Izt=globalThis.URL,Pzt=globalThis.URLSearchParams,Mzt=r=>typeof r=="string"?r.replace("file://",""):r,Ozt=r=>new globalThis.URL("file://"+r),Nzt=(r,e)=>{e&&(r.super_=e,Object.setPrototypeOf(r.prototype,e.prototype))},Dzt=r=>(...e)=>new Promise((t,n)=>r(...e,(o,s)=>o?n(o):t(s))),eke=r=>{let e=(...t)=>{};return e.enabled=!1,e},Lzt=eke,J$=r=>{try{return JSON.stringify(r,null,2)}catch{return String(r)}};J$.custom=Symbol.for("nodejs.util.inspect.custom");J$.colors={};J$.styles={};Fzt=r=>r,Uzt=r=>(...e)=>{let t=e.pop();r(...e).then(n=>t(null,n)).catch(t)},$zt=(r,e)=>JSON.stringify(r)===JSON.stringify(e),zzt=r=>String(r),Bzt={isPromise:r=>r instanceof Promise,isDate:r=>r instanceof Date,isRegExp:r=>r instanceof RegExp,isNativeError:r=>r instanceof Error,isArrayBuffer:r=>r instanceof ArrayBuffer,isTypedArray:r=>ArrayBuffer.isView(r),isUint8Array:r=>r instanceof Uint8Array,isProxy:()=>!1},tke=globalThis.TextDecoder,K$=globalThis.TextEncoder,jzt=(r,e)=>e?.(null,"127.0.0.1",4),qzt=class{},Gzt=globalThis.performance||{now:()=>Date.now()},Vzt=class{observe(){}disconnect(){}},Hzt=()=>({enable:po,disable:po,percentile:()=>0}),Wzt=()=>({}),Kzt=class{},Jzt=()=>!1,Zzt=()=>new Uint8Array,Xzt=po,Yzt=class{},Qzt=!0,eBt=null,tBt=null,rBt=()=>({}),nBt=class{},oBt=class{},sBt=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 K$().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 K$().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 tke().decode(this)}},iBt={F_OK:0,R_OK:4,W_OK:2,X_OK:1},aBt=()=>!1,cBt=()=>!1,lBt=()=>0,uBt=class{},dBt=class{},pBt=async()=>new ArrayBuffer(0),rke=r=>({[Symbol.toPrimitive](){return r},ref(){return this},unref(){return this},hasRef(){return!1},refresh(){return this},close(){}}),mBt=(...r)=>rke(globalThis.setTimeout(...r)),fBt=globalThis.clearTimeout,gBt=(...r)=>rke(globalThis.setInterval(...r)),hBt=globalThis.clearInterval,yBt=class{constructor(r){this.type=r}toString(){return this.type}}});function bBt(){if(oke)return;oke=!0;let r=()=>{for(let e of Z$)try{let t=VCe(e);for(let n of t)try{HCe(Ln(e,n))}catch{}KCe(e)}catch{}Z$.clear()};process.on("exit",r)}async function X$(r){bBt();let e=Ln(CS(),`neurolink-${r}-${Xa()}`);return await tm(e,{recursive:!0}),Z$.add(e),e}async function Y$(r,...e){for(let t of e)try{await Ff(t)}catch(n){g.debug("Failed to clean up temp file",{path:t,error:n instanceof Error?n.message:String(n)})}try{await py(r,{recursive:!0,force:!0})}catch(t){g.debug("Failed to remove temp directory",{path:r,error:t instanceof Error?t.message:String(t)})}Z$.delete(r)}async function TBt(){if(Sg)return Sg;if(process.env.FFMPEG_PATH)return Sg=process.env.FFMPEG_PATH,Sg;try{let r=await Promise.resolve().then(()=>(X9(),Z9)),e=r.default??r;if(typeof e=="string"&&e.length>0)return Sg=e,Sg}catch{g.debug("ffmpeg-static not available, using system ffmpeg binary")}return Sg="ffmpeg",g.warn("Using system ffmpeg binary. If video operations fail with ENOENT, install ffmpeg-static or set FFMPEG_PATH."),Sg}async function vR(r,e={}){let{execFile:t}=await Promise.resolve().then(()=>(kS(),nke)),n=await TBt(),o=e.timeoutMs??rX,s=e.maxBuffer??nX;return new Promise((i,a)=>{t(n,r,{timeout:o,maxBuffer:s},(u,d,p)=>{u?a(u):i({stdout:d||"",stderr:p||""})}).on("error",a)})}function Q$(r){return r.length<vBt?!1:r.subarray(4,8).equals(xBt)}var rX,ske,nX,ike,oX,ake,vBt,xBt,Z$,oke,Sg,sX=A(()=>{"use strict";Ld();up();Qc();yR();oc();Q();rX=3e4,ske=12e4,nX=10*1024*1024,ike=50*1024*1024,oX="2",ake="0.5",vBt=12,xBt=Buffer.from([102,116,121,112]),Z$=new Set,oke=!1;Sg=null});function SBt(r,e){if(!Buffer.isBuffer(r)||r.length===0)throw new Pt({code:Et.DIRECTOR_FRAME_EXTRACTION_FAILED,message:`Cannot ${e}: video buffer is empty or not a Buffer`,category:"validation",severity:"high",retriable:!1,context:{operation:e,bufferSize:r?.length??0}});if(!Q$(r))throw new Pt({code:Et.DIRECTOR_FRAME_EXTRACTION_FAILED,message:`Cannot ${e}: buffer does not appear to be a valid MP4 (missing ftyp header)`,category:"validation",severity:"high",retriable:!1,context:{operation:e,bufferSize:r.length,headerHex:r.subarray(0,12).toString("hex")}})}async function cke(r,e){let t=Date.now();SBt(r,`extract ${e} frame`);let n=await X$("frame"),o=Ln(n,"input.mp4"),s=Ln(n,`${e}_frame.jpg`);try{await Vi(o,r);let i=e==="first"?["-y","-i",o,"-vframes","1","-q:v",oX,"-f","image2",s]:["-y","-sseof",`-${ake}`,"-i",o,"-update","1","-q:v",oX,"-f","image2",s];await vR(i,{timeoutMs:rX,maxBuffer:nX});let a=await Uo(s);return g.debug(`Extracted ${e} frame`,{inputSize:r.length,frameSize:a.length,elapsedMs:Date.now()-t}),a}catch(i){throw i instanceof Pt?i:new Pt({code:Et.DIRECTOR_FRAME_EXTRACTION_FAILED,message:`Failed to extract ${e} frame: ${i instanceof Error?i.message:String(i)}`,category:"execution",severity:"high",retriable:!1,context:{position:e,bufferSize:r.length},originalError:i instanceof Error?i:void 0})}finally{await Y$(n,o,s)}}async function lke(r){return cke(r,"first")}async function uke(r){return cke(r,"last")}var dke=A(()=>{"use strict";Q();sX();Ab();pR()});async function wBt(r,e,t){let n=[],o=[];for(let s=0;s<r.length;s++){let i=Ln(e,`clip_${s}.mp4`);await Vi(i,r[s]),n.push(i);let a=i.replace(/\\/g,"/").replace(/'/g,"'\\''");o.push(`file '${a}'`)}return await Vi(t,o.join(`
|
|
1126
|
-
`)),n}async function _Bt(r,e){let t={timeoutMs:ske,maxBuffer:ike};try{await vR(["-y","-f","concat","-safe","0","-i",r,"-c","copy",e],t)}catch(n){g.warn("Lossless concat failed, falling back to H.264 re-encoding",{error:n instanceof Error?n.message:String(n)}),await vR(["-y","-f","concat","-safe","0","-i",r,"-c:v","libx264","-preset","fast","-crf","18","-c:a","aac","-b:a","192k","-movflags","+faststart",e],t)}}async function pke(r){if(r.length===0)throw new Pt({code:Et.DIRECTOR_MERGE_FAILED,message:"No video buffers provided to merge",category:"validation",severity:"high",retriable:!1});for(let i=0;i<r.length;i++)if(!Q$(r[i]))throw new Pt({code:Et.DIRECTOR_MERGE_FAILED,message:`Clip ${i} is not a valid MP4 buffer (missing ftyp header or too small)`,category:"validation",severity:"high",retriable:!1,context:{clipIndex:i,bufferSize:r[i].length,headerHex:r[i].subarray(0,12).toString("hex")}});if(r.length===1)return r[0];let e=Date.now(),t=await X$("merge"),n=Ln(t,"concat.txt"),o=Ln(t,"merged.mp4"),s=[];try{s=await wBt(r,t,n),await _Bt(n,o);let i=await Uo(o);return g.info("Video merge complete",{inputClips:r.length,totalInputSize:r.reduce((a,l)=>a+l.length,0),outputSize:i.length,elapsedMs:Date.now()-e}),i}catch(i){throw i instanceof Pt?i:new Pt({code:Et.DIRECTOR_MERGE_FAILED,message:`Video merge failed: ${i instanceof Error?i.message:String(i)}`,category:"execution",severity:"high",retriable:!1,context:{clipCount:r.length},originalError:i instanceof Error?i:void 0})}finally{await Y$(t,n,o,...s)}}var mke=A(()=>{"use strict";Q();sX();Ab();pR()});var vke={};le(vke,{DIRECTOR_PIPELINE_TIMEOUT_MS:()=>kBt,executeDirectorPipeline:()=>NBt});async function ABt(r,e){if(Buffer.isBuffer(r))return r;if(typeof r=="string")return r.startsWith("http://")||r.startsWith("https://")?fke(r,e):gke(r,e);if(typeof r=="object"&&"data"in r){let t=r.data;if(Buffer.isBuffer(t))return t;if(typeof t=="string"){if(t.startsWith("http://")||t.startsWith("https://"))return fke(t,e);if(t.startsWith("data:")){let n=t.match(/^data:[^;]+;base64,(.+)$/);if(n&&n[1])return Buffer.from(n[1],"base64");throw new Pt({code:Et.INVALID_INPUT,message:`Invalid data URI format for segment ${e}. Expected format: data:<mime>;base64,<data>`,category:"execution",severity:"high",retriable:!1,context:{segmentIndex:e,dataUriPrefix:t.substring(0,50)}})}try{return await gke(t,e)}catch(n){throw new Pt({code:Et.INVALID_INPUT,message:`Invalid image input for segment ${e}: not a valid URL, file path, or data URI`,category:"execution",severity:"high",retriable:!1,context:{segmentIndex:e,inputType:"string",inputPrefix:t.substring(0,50),fileError:n instanceof Error?n.message:String(n)},originalError:n instanceof Error?n:void 0})}}}throw new Pt({code:Et.INVALID_INPUT,message:`Invalid image type for segment ${e}`,category:"execution",severity:"high",retriable:!1,context:{segmentIndex:e}})}async function fke(r,e){let t=new AbortController,n=setTimeout(()=>t.abort(),EBt);try{let o=await fetch(r,{signal:t.signal});if(!o.ok)throw new Pt({code:Et.INVALID_INPUT,message:`Failed to fetch image for segment ${e}: HTTP ${o.status}`,category:"execution",severity:"high",retriable:o.status>=500,context:{segmentIndex:e,url:r.substring(0,100)}});return Buffer.from(await o.arrayBuffer())}catch(o){throw o instanceof Pt?o:new Pt({code:Et.INVALID_INPUT,message:`Failed to fetch image for segment ${e}: ${o instanceof Error?o.message:String(o)}`,category:"execution",severity:"high",retriable:!0,context:{segmentIndex:e},originalError:o instanceof Error?o:void 0})}finally{clearTimeout(n)}}async function gke(r,e){let{readFile:t}=await Promise.resolve().then(()=>(Qc(),yk));try{return await t(r)}catch(n){throw new Pt({code:Et.INVALID_INPUT,message:`Failed to read image file for segment ${e}: ${n instanceof Error?n.message:String(n)}`,category:"execution",severity:"high",retriable:!1,context:{segmentIndex:e,path:r},originalError:n instanceof Error?n:void 0})}}function hke(r){for(;r.nextExpectedIndex<r.completions.length;){let e=r.completions[r.nextExpectedIndex];if(e.status==="pending")break;e.status==="success"?r.consecutiveFailures=0:(r.consecutiveFailures++,r.consecutiveFailures>=iX&&(r.circuitOpen=!0,g.error(`Circuit breaker tripped after ${iX} consecutive clip failures`))),r.nextExpectedIndex++}}async function IBt(r,e,t,n,o){if(o.circuitOpen)throw new Pt({code:Et.DIRECTOR_CLIP_FAILED,message:`Clip ${e} skipped \u2014 circuit breaker open after ${iX} consecutive failures`,category:"execution",severity:"high",retriable:!0,context:{segmentIndex:e}});let s=Date.now();try{let i=await ABt(r.image,e),a=M$(i);if(a)throw new Pt({code:Et.INVALID_INPUT,message:`Segment ${e} image validation failed: ${a.message}`,category:"execution",severity:"high",retriable:!1,context:{segmentIndex:e,validation:a},originalError:a});let u={buffer:(await JZ(i,r.prompt,t,n)).data,processingTime:Date.now()-s};o.results[e]=u,o.completions[e]={status:"success",result:u},hke(o)}catch(i){let a=i instanceof Error?i:new Error(String(i));throw o.completions[e]={status:"failure",error:a},hke(o),new Pt({code:Et.DIRECTOR_CLIP_FAILED,message:`Clip ${e} generation failed: ${a.message}`,category:"execution",severity:"high",retriable:!0,context:{segmentIndex:e,consecutiveFailures:o.consecutiveFailures},originalError:a})}}async function PBt(r,e,t){let n=cp(e2),o={consecutiveFailures:0,circuitOpen:!1,results:new Array(r.length).fill(null),completions:new Array(r.length).fill({status:"pending"}),nextExpectedIndex:0},s=r.map((l,u)=>n(()=>IBt(l,u,e,t,o))),a=(await Promise.allSettled(s)).filter(l=>l.status==="rejected");if(a.length>0){let l=a[0].reason instanceof Error?a[0].reason:new Error(String(a[0].reason));throw new Pt({code:Et.DIRECTOR_CLIP_FAILED,message:`Director Mode: ${a.length}/${r.length} clip(s) failed. First: ${l.message}`,category:"execution",severity:"high",retriable:!0,context:{failedCount:a.length,totalSegments:r.length,circuitBreakerTripped:o.circuitOpen},originalError:l})}return g.info("All clips generated successfully",{clipCount:r.length,concurrency:e2}),o.results}async function MBt(r,e,t,n,o){let s=r.length-1;if(s===0)return[];let i=cp(e2),a=Array.from({length:s},(l,u)=>i(async()=>{let d=Date.now(),p=e[u]??CBt,m=t[u]??RBt;try{let f=await yke(r[u].buffer,"last",u),h=await yke(r[u+1].buffer,"first",u+1),y=await ZZ(f,h,p,{aspectRatio:n.aspectRatio,resolution:n.resolution,audio:n.audio},m,o);return g.debug(`Transition ${u}\u2192${u+1} generated`,{duration:m,size:y.length,elapsedMs:Date.now()-d}),{buffer:y,fromSegment:u,toSegment:u+1,duration:m,processingTime:Date.now()-d}}catch(f){return g.warn(`Transition ${u}\u2192${u+1} failed, falling back to hard cut`,{error:f instanceof Error?f.message:String(f)}),{buffer:null,fromSegment:u,toSegment:u+1,duration:0,processingTime:Date.now()-d}}}));return Promise.all(a)}async function yke(r,e,t){let n=e==="first"?lke:uke;try{return await n(r)}catch(o){return g.warn(`Frame extraction (${e}) failed for clip ${t}, retrying once`,{error:o instanceof Error?o.message:String(o)}),await n(r)}}async function OBt(r,e){let t=[],n=r.length,o=e.length;for(let s=0;s<n;s++)t.push(r[s].buffer),s<o&&e[s].buffer&&t.push(e[s].buffer);try{return await pke(t)}catch(s){throw new Pt({code:Et.DIRECTOR_MERGE_FAILED,message:`Director Mode merge failed: ${s instanceof Error?s.message:String(s)}`,category:"execution",severity:"high",retriable:!1,context:{clipCount:n,transitionCount:e.filter(i=>i.buffer).length},originalError:s instanceof Error?s:void 0})}}async function NBt(r,e={},t={},n){let o=Date.now(),s=r.length,i=s-1,a=e.length??6,l=t.transitionPrompts??[],u=t.transitionDurations??[];g.info("Starting Director Mode pipeline",{segmentCount:s,transitionCount:i,concurrency:e2,clipDuration:a,resolution:e.resolution??"720p"});let d=await PBt(r,e,n);g.info("Phase 1 complete \u2014 all clips generated",{clipCount:d.length,elapsedMs:Date.now()-o});let p=await MBt(d,l,u,e,n),m=p.filter(k=>k.buffer).length,f=i-m;f>0&&g.warn(`${f}/${i} transition(s) fell back to hard cut`),g.info("Phase 2 complete \u2014 transitions generated",{successful:m,hardCuts:f,elapsedMs:Date.now()-o});let h=await OBt(d,p),y=p.map(k=>k.duration),v=s*a+y.reduce((k,R)=>k+R,0),b=e.resolution??"720p",w=e.aspectRatio??"16:9",T=b==="1080p"?w==="9:16"?{width:1080,height:1920}:{width:1920,height:1080}:w==="9:16"?{width:720,height:1280}:{width:1280,height:720},_=Date.now()-o;return g.info("Director Mode pipeline complete",{totalDuration:v,segmentCount:s,transitionsGenerated:m,hardCuts:f,mergedSize:h.length,processingTime:_}),{data:h,mediaType:"video/mp4",metadata:{duration:v,dimensions:T,model:"veo-3.1-generate-001",provider:"vertex",aspectRatio:w,audioEnabled:e.audio??!0,processingTime:_,segmentCount:s,transitionCount:m,clipDuration:a,transitionDurations:y,segments:d.map((k,R)=>({index:R,duration:a,processingTime:k.processingTime})),transitions:p.map(k=>({fromSegment:k.fromSegment,toSegment:k.toSegment,duration:k.duration,processingTime:k.processingTime}))}}}var e2,iX,EBt,CBt,kBt,RBt,xke=A(()=>{"use strict";fR();Q();hg();Ab();dke();pR();mke();e2=2,iX=2,EBt=15e3,CBt="Smooth cinematic transition between scenes",kBt=6e5,RBt=4});var an,xc=A(()=>{"use strict";Ht();Tn();uD();Nd();H5();Ta();bt();Q();Qa();WC();DL();gk();Zbe();Qbe();xEe();DEe();ACe();ICe();MCe();an=class{modelName;providerName;defaultTimeout=3e4;middlewareOptions;directTools=Eb()?{}:_f;mcpTools;customTools;toolExecutor;sessionId;userId;neurolink;_traceContext=null;setTraceContext(e){this._traceContext=e}messageBuilder;streamHandler;generationHandler;telemetryHandler;utilities;toolsManager;constructor(e,t,n,o){this.modelName=e||this.getDefaultModel(),this.providerName=t||this.getProviderName(),this.neurolink=n,this.middlewareOptions=o,this.messageBuilder=new P$(this.providerName,this.modelName),this.streamHandler=new O$(this.providerName,this.modelName),this.telemetryHandler=new j$(this.providerName,this.modelName,this.neurolink),this.generationHandler=new q1(this.providerName,this.modelName,()=>this.supportsTools(),(s,i)=>this.telemetryHandler.getTelemetryConfig(s,i),(s,i,a,l)=>this.handleToolExecutionStorage(s,i,a,l),()=>this.neurolink?.getEventEmitter()),this.utilities=new V$(this.providerName,this.modelName,this.defaultTimeout,this.middlewareOptions),this.toolsManager=new G$(this.providerName,this.directTools,this.neurolink,{isZodSchema:s=>this.isZodSchema(s),convertToolResult:s=>this.convertToolResult(s),createPermissiveZodSchema:()=>this.createPermissiveZodSchema(),fixSchemaForOpenAIStrictMode:s=>this.fixSchemaForOpenAIStrictMode(s)})}supportsTools(){return!0}async stream(e,t){let n=this.normalizeStreamOptions(e);if(g.info("Starting stream",{provider:this.providerName,hasTools:!n.disableTools&&this.supportsTools(),disableTools:!!n.disableTools,supportsTools:this.supportsTools(),inputLength:n.input?.text?.length||0,maxTokens:n.maxTokens,temperature:n.temperature,timestamp:Date.now()}),!!n.input?.files?.length||!!n.input?.videoFiles?.length){let a=await this.buildMessagesForStream(n);if(I8(a))return g.info("Video frames detected in stream, using fake streaming for video analysis",{provider:this.providerName,model:this.modelName}),await this.executeFakeStreaming(n,t)}let s=Y3.some(a=>this.modelName.includes(a)),i=n.output?.format==="json"||n.output?.format==="structured"||n.output?.format==="text";if(s&&!i)return g.info("Image model detected, forcing fake streaming",{provider:this.providerName,model:this.modelName,reason:"Image generation requires fake streaming to yield image output"}),await this.executeFakeStreaming(n,t);if(!n.disableTools&&this.supportsTools()){let a=await this.getToolsForStream(n);n={...n,tools:a}}else n={...n,tools:{}};try{g.debug("Attempting real streaming",{provider:this.providerName,timestamp:Date.now()});let a=await this.executeStream(n,t);return g.info("Real streaming succeeded",{provider:this.providerName,timestamp:Date.now()}),a}catch(a){let l=a instanceof Error?a.message:String(a);if((a instanceof Error?a.name:"")==="AbortError"||l.includes("abort")||l.includes("timeout")||l.includes("401")||l.includes("403")||l.includes("quota")||l.includes("rate limit")||l.includes("authentication"))throw this.handleProviderError(a);if(g.warn(`Real streaming failed for ${this.providerName}, falling back to fake streaming:`,{error:l,timestamp:Date.now()}),!n.disableTools&&this.supportsTools())return await this.executeFakeStreaming(n,t);throw g.error(`Real streaming failed for ${this.providerName}:`,a),this.handleProviderError(a)}}async executeFakeStreaming(e,t){try{g.info("Starting fake streaming with tools",{provider:this.providerName,supportsTools:this.supportsTools(),timestamp:Date.now()});let n={prompt:e.input?.text||"",input:e.input,systemPrompt:e.systemPrompt,temperature:e.temperature,maxTokens:e.maxTokens,tools:e.tools,disableTools:!!e.disableTools,maxSteps:e.maxSteps||5,provider:e.provider,model:e.model,region:e.region,enableAnalytics:e.enableAnalytics,enableEvaluation:e.enableEvaluation,evaluationDomain:e.evaluationDomain,toolUsageContext:e.toolUsageContext,context:e.context,csvOptions:e.csvOptions,abortSignal:e.abortSignal,toolFilter:e.toolFilter,excludeTools:e.excludeTools,skipToolPromptInjection:e.skipToolPromptInjection,timeout:e.timeout};g.debug("Calling generate for fake streaming",{provider:this.providerName,maxSteps:n.maxSteps,disableTools:n.disableTools,timestamp:Date.now()});let o=await this.generate(n,t);return g.info("Generate completed for fake streaming",{provider:this.providerName,hasContent:!!o?.content,contentLength:o?.content?.length||0,toolsUsed:o?.toolsUsed?.length||0,hasImageOutput:!!o?.imageOutput,timestamp:Date.now()}),{stream:(async function*(){if(o?.content){let s=o.content.split(/(\s+)/),i="";for(let a=0;a<s.length;a++)i+=s[a],(a===s.length-1||i.length>50||/[.!?;,]\s*$/.test(i))&&i.trim()&&(yield{content:i},i="",await new Promise(u=>{setTimeout(u,Math.random()*9+1)}));i.trim()&&(yield{content:i})}o?.imageOutput&&(yield{type:"image",imageOutput:o.imageOutput})})(),usage:o?.usage,provider:o?.provider,model:o?.model,toolCalls:o?.toolCalls?.map(s=>({toolName:s.toolName,parameters:s.args,id:s.toolCallId})),toolResults:o?.toolResults?o.toolResults.map(s=>({toolName:s.toolName||"unknown",status:s.status==="error"?"failure":"success",result:s.result,error:s.error})):void 0,analytics:o?.analytics,evaluation:o?.evaluation}}catch(n){throw g.error(`Fake streaming fallback failed for ${this.providerName}:`,n),this.handleProviderError(n)}}applyToolFiltering(e,t){if((!t.toolFilter||t.toolFilter.length===0)&&(!t.excludeTools||t.excludeTools.length===0))return e;let n=Object.keys(e).length,o={...e};if(t.toolFilter&&t.toolFilter.length>0){let i=new Set(t.toolFilter),a={};for(let[l,u]of Object.entries(o))i.has(l)&&(a[l]=u);o=a}if(t.excludeTools&&t.excludeTools.length>0){let i=new Set(t.excludeTools);for(let a of Object.keys(o))i.has(a)&&delete o[a]}let s=Object.keys(o).length;return n!==s&&g.debug("Tool filtering applied",{provider:this.providerName,beforeCount:n,afterCount:s,toolFilter:t.toolFilter,excludeTools:t.excludeTools}),o}async prepareGenerationContext(e){let t=!e.disableTools&&this.supportsTools(),n=t?await this.getAllTools():{},o=t?{...n,...e.tools||{}}:{};o=this.applyToolFiltering(o,e),g.debug("Final tools prepared for AI",{provider:this.providerName,directTools:Hb(n),directToolNames:NL(n),externalTools:Hb(e.tools||{}),externalToolNames:NL(e.tools||{}),totalTools:Hb(o),totalToolNames:NL(o),shouldUseTools:t,timestamp:Date.now()});let s=await this.getAISDKModelWithMiddleware(e);return{tools:o,model:s}}async getToolsForStream(e){if(!(!e.disableTools&&this.supportsTools()))return{};let n=await this.getAllTools(),o=e.tools||{},s={...n,...o};return s=this.applyToolFiltering(s,e),g.debug("Tools prepared for streaming",{provider:this.providerName,baseToolCount:Object.keys(n).length,externalToolCount:Object.keys(o).length,totalToolCount:Object.keys(s).length}),s}async buildMessages(e){return this.messageBuilder.buildMessages(e)}async buildMessagesForStream(e){return this.messageBuilder.buildMessagesForStream(e)}async executeGeneration(e,t,n,o){return this.generationHandler.executeGeneration(e,t,n,o)}logGenerationComplete(e){this.generationHandler.logGenerationComplete(e)}async recordPerformanceMetrics(e,t){await this.telemetryHandler.recordPerformanceMetrics(e,t)}extractToolInformation(e){return this.generationHandler.extractToolInformation(e)}formatEnhancedResult(e,t,n,o,s){return this.generationHandler.formatEnhancedResult(e,t,n,o,s)}analyzeAIResponse(e){this.generationHandler.analyzeAIResponse(e)}async generate(e,t){let n=this.normalizeTextOptions(e);this.validateOptions(n);let o=Date.now(),s=ye.provider.startSpan("neurolink.provider.generate",{kind:er.CLIENT,attributes:{[me.GEN_AI_SYSTEM]:this.providerName||"unknown",[me.GEN_AI_MODEL]:this.modelName||n.model||"unknown",[me.GEN_AI_OPERATION]:"generate",[me.NL_PROVIDER]:this.providerName||"unknown"}}),i=st.setSpan(gr.active(),s),a={ended:!1};return await gr.with(i,async()=>this.runGenerateInActiveContext(n,o,s,a))}async gen(e,t){return this.generate(e,t)}async runGenerateInActiveContext(e,t,n,o){try{if(e.output?.mode==="video")return await this.handleVideoGeneration(e,t);let s=Y3.some(p=>this.modelName.includes(p)),i=e.output?.format==="json"||e.output?.format==="structured"||e.output?.format==="text";if(s&&!i){g.info("Image generation model detected, routing to executeImageGeneration",{provider:this.providerName,model:this.modelName});let p=await this.executeImageGeneration(e);return await this.enhanceResult(p,e,t)}if(e.tts?.enabled&&!e.tts?.useAiResponse)return this.handleDirectTTSSynthesis(e,t);let{tools:a,model:l}=await this.prepareGenerationContext(e),u=await this.buildMessages(e),d=await this.handleVideoFrameGeneration(e,u,l,t);return d||await this.executeStandardGenerateFlow(e,t,l,u,a)}catch(s){throw n.setStatus({code:be.ERROR,message:s instanceof Error?s.message:String(s)}),n.end(),o.ended=!0,br(s)?g.info(`Generate aborted for ${this.providerName}`,{error:s instanceof Error?s.message:String(s)}):g.error(`Generate failed for ${this.providerName}:`,s),this.handleProviderError(s)}finally{o.ended||(n.setStatus({code:be.OK}),n.end())}}async handleDirectTTSSynthesis(e,t){let n=e.prompt??e.input?.text??"",o={content:n,provider:e.provider??this.providerName,model:this.modelName,usage:{input:0,output:0,total:0}};try{if(!e.tts)return this.enhanceResult(o,e,t);o.audio=await dy.synthesize(n,e.provider??this.providerName,e.tts)}catch(s){g.error("TTS synthesis failed in Mode 1 (direct input synthesis):",s)}return this.enhanceResult(o,e,t)}async handleVideoFrameGeneration(e,t,n,o){if(!I8(t))return null;let s=await Jbe(t,{provider:e.provider,providerName:this.providerName,region:e.region}),i=t.filter(u=>u.role==="user").flatMap(u=>Array.isArray(u.content)?u.content.filter(d=>d.type==="text").map(d=>d.text):[typeof u.content=="string"?u.content:""]).filter(Boolean).join(`
|
|
1126
|
+
`)),n}async function _Bt(r,e){let t={timeoutMs:ske,maxBuffer:ike};try{await vR(["-y","-f","concat","-safe","0","-i",r,"-c","copy",e],t)}catch(n){g.warn("Lossless concat failed, falling back to H.264 re-encoding",{error:n instanceof Error?n.message:String(n)}),await vR(["-y","-f","concat","-safe","0","-i",r,"-c:v","libx264","-preset","fast","-crf","18","-c:a","aac","-b:a","192k","-movflags","+faststart",e],t)}}async function pke(r){if(r.length===0)throw new Pt({code:Et.DIRECTOR_MERGE_FAILED,message:"No video buffers provided to merge",category:"validation",severity:"high",retriable:!1});for(let i=0;i<r.length;i++)if(!Q$(r[i]))throw new Pt({code:Et.DIRECTOR_MERGE_FAILED,message:`Clip ${i} is not a valid MP4 buffer (missing ftyp header or too small)`,category:"validation",severity:"high",retriable:!1,context:{clipIndex:i,bufferSize:r[i].length,headerHex:r[i].subarray(0,12).toString("hex")}});if(r.length===1)return r[0];let e=Date.now(),t=await X$("merge"),n=Ln(t,"concat.txt"),o=Ln(t,"merged.mp4"),s=[];try{s=await wBt(r,t,n),await _Bt(n,o);let i=await Uo(o);return g.info("Video merge complete",{inputClips:r.length,totalInputSize:r.reduce((a,l)=>a+l.length,0),outputSize:i.length,elapsedMs:Date.now()-e}),i}catch(i){throw i instanceof Pt?i:new Pt({code:Et.DIRECTOR_MERGE_FAILED,message:`Video merge failed: ${i instanceof Error?i.message:String(i)}`,category:"execution",severity:"high",retriable:!1,context:{clipCount:r.length},originalError:i instanceof Error?i:void 0})}finally{await Y$(t,n,o,...s)}}var mke=A(()=>{"use strict";Q();sX();Ab();pR()});var vke={};le(vke,{DIRECTOR_PIPELINE_TIMEOUT_MS:()=>kBt,executeDirectorPipeline:()=>NBt});async function ABt(r,e){if(Buffer.isBuffer(r))return r;if(typeof r=="string")return r.startsWith("http://")||r.startsWith("https://")?fke(r,e):gke(r,e);if(typeof r=="object"&&"data"in r){let t=r.data;if(Buffer.isBuffer(t))return t;if(typeof t=="string"){if(t.startsWith("http://")||t.startsWith("https://"))return fke(t,e);if(t.startsWith("data:")){let n=t.match(/^data:[^;]+;base64,(.+)$/);if(n&&n[1])return Buffer.from(n[1],"base64");throw new Pt({code:Et.INVALID_INPUT,message:`Invalid data URI format for segment ${e}. Expected format: data:<mime>;base64,<data>`,category:"execution",severity:"high",retriable:!1,context:{segmentIndex:e,dataUriPrefix:t.substring(0,50)}})}try{return await gke(t,e)}catch(n){throw new Pt({code:Et.INVALID_INPUT,message:`Invalid image input for segment ${e}: not a valid URL, file path, or data URI`,category:"execution",severity:"high",retriable:!1,context:{segmentIndex:e,inputType:"string",inputPrefix:t.substring(0,50),fileError:n instanceof Error?n.message:String(n)},originalError:n instanceof Error?n:void 0})}}}throw new Pt({code:Et.INVALID_INPUT,message:`Invalid image type for segment ${e}`,category:"execution",severity:"high",retriable:!1,context:{segmentIndex:e}})}async function fke(r,e){let t=new AbortController,n=setTimeout(()=>t.abort(),EBt);try{let o=await fetch(r,{signal:t.signal});if(!o.ok)throw new Pt({code:Et.INVALID_INPUT,message:`Failed to fetch image for segment ${e}: HTTP ${o.status}`,category:"execution",severity:"high",retriable:o.status>=500,context:{segmentIndex:e,url:r.substring(0,100)}});return Buffer.from(await o.arrayBuffer())}catch(o){throw o instanceof Pt?o:new Pt({code:Et.INVALID_INPUT,message:`Failed to fetch image for segment ${e}: ${o instanceof Error?o.message:String(o)}`,category:"execution",severity:"high",retriable:!0,context:{segmentIndex:e},originalError:o instanceof Error?o:void 0})}finally{clearTimeout(n)}}async function gke(r,e){let{readFile:t}=await Promise.resolve().then(()=>(Qc(),yk));try{return await t(r)}catch(n){throw new Pt({code:Et.INVALID_INPUT,message:`Failed to read image file for segment ${e}: ${n instanceof Error?n.message:String(n)}`,category:"execution",severity:"high",retriable:!1,context:{segmentIndex:e,path:r},originalError:n instanceof Error?n:void 0})}}function hke(r){for(;r.nextExpectedIndex<r.completions.length;){let e=r.completions[r.nextExpectedIndex];if(e.status==="pending")break;e.status==="success"?r.consecutiveFailures=0:(r.consecutiveFailures++,r.consecutiveFailures>=iX&&(r.circuitOpen=!0,g.error(`Circuit breaker tripped after ${iX} consecutive clip failures`))),r.nextExpectedIndex++}}async function IBt(r,e,t,n,o){if(o.circuitOpen)throw new Pt({code:Et.DIRECTOR_CLIP_FAILED,message:`Clip ${e} skipped \u2014 circuit breaker open after ${iX} consecutive failures`,category:"execution",severity:"high",retriable:!0,context:{segmentIndex:e}});let s=Date.now();try{let i=await ABt(r.image,e),a=M$(i);if(a)throw new Pt({code:Et.INVALID_INPUT,message:`Segment ${e} image validation failed: ${a.message}`,category:"execution",severity:"high",retriable:!1,context:{segmentIndex:e,validation:a},originalError:a});let u={buffer:(await JZ(i,r.prompt,t,n)).data,processingTime:Date.now()-s};o.results[e]=u,o.completions[e]={status:"success",result:u},hke(o)}catch(i){let a=i instanceof Error?i:new Error(String(i));throw o.completions[e]={status:"failure",error:a},hke(o),new Pt({code:Et.DIRECTOR_CLIP_FAILED,message:`Clip ${e} generation failed: ${a.message}`,category:"execution",severity:"high",retriable:!0,context:{segmentIndex:e,consecutiveFailures:o.consecutiveFailures},originalError:a})}}async function PBt(r,e,t){let n=cp(e2),o={consecutiveFailures:0,circuitOpen:!1,results:new Array(r.length).fill(null),completions:new Array(r.length).fill({status:"pending"}),nextExpectedIndex:0},s=r.map((l,u)=>n(()=>IBt(l,u,e,t,o))),a=(await Promise.allSettled(s)).filter(l=>l.status==="rejected");if(a.length>0){let l=a[0].reason instanceof Error?a[0].reason:new Error(String(a[0].reason));throw new Pt({code:Et.DIRECTOR_CLIP_FAILED,message:`Director Mode: ${a.length}/${r.length} clip(s) failed. First: ${l.message}`,category:"execution",severity:"high",retriable:!0,context:{failedCount:a.length,totalSegments:r.length,circuitBreakerTripped:o.circuitOpen},originalError:l})}return g.info("All clips generated successfully",{clipCount:r.length,concurrency:e2}),o.results}async function MBt(r,e,t,n,o){let s=r.length-1;if(s===0)return[];let i=cp(e2),a=Array.from({length:s},(l,u)=>i(async()=>{let d=Date.now(),p=e[u]??CBt,m=t[u]??RBt;try{let f=await yke(r[u].buffer,"last",u),h=await yke(r[u+1].buffer,"first",u+1),y=await ZZ(f,h,p,{aspectRatio:n.aspectRatio,resolution:n.resolution,audio:n.audio},m,o);return g.debug(`Transition ${u}\u2192${u+1} generated`,{duration:m,size:y.length,elapsedMs:Date.now()-d}),{buffer:y,fromSegment:u,toSegment:u+1,duration:m,processingTime:Date.now()-d}}catch(f){return g.warn(`Transition ${u}\u2192${u+1} failed, falling back to hard cut`,{error:f instanceof Error?f.message:String(f)}),{buffer:null,fromSegment:u,toSegment:u+1,duration:0,processingTime:Date.now()-d}}}));return Promise.all(a)}async function yke(r,e,t){let n=e==="first"?lke:uke;try{return await n(r)}catch(o){return g.warn(`Frame extraction (${e}) failed for clip ${t}, retrying once`,{error:o instanceof Error?o.message:String(o)}),await n(r)}}async function OBt(r,e){let t=[],n=r.length,o=e.length;for(let s=0;s<n;s++)t.push(r[s].buffer),s<o&&e[s].buffer&&t.push(e[s].buffer);try{return await pke(t)}catch(s){throw new Pt({code:Et.DIRECTOR_MERGE_FAILED,message:`Director Mode merge failed: ${s instanceof Error?s.message:String(s)}`,category:"execution",severity:"high",retriable:!1,context:{clipCount:n,transitionCount:e.filter(i=>i.buffer).length},originalError:s instanceof Error?s:void 0})}}async function NBt(r,e={},t={},n){let o=Date.now(),s=r.length,i=s-1,a=e.length??6,l=t.transitionPrompts??[],u=t.transitionDurations??[];g.info("Starting Director Mode pipeline",{segmentCount:s,transitionCount:i,concurrency:e2,clipDuration:a,resolution:e.resolution??"720p"});let d=await PBt(r,e,n);g.info("Phase 1 complete \u2014 all clips generated",{clipCount:d.length,elapsedMs:Date.now()-o});let p=await MBt(d,l,u,e,n),m=p.filter(k=>k.buffer).length,f=i-m;f>0&&g.warn(`${f}/${i} transition(s) fell back to hard cut`),g.info("Phase 2 complete \u2014 transitions generated",{successful:m,hardCuts:f,elapsedMs:Date.now()-o});let h=await OBt(d,p),y=p.map(k=>k.duration),v=s*a+y.reduce((k,R)=>k+R,0),b=e.resolution??"720p",w=e.aspectRatio??"16:9",T=b==="1080p"?w==="9:16"?{width:1080,height:1920}:{width:1920,height:1080}:w==="9:16"?{width:720,height:1280}:{width:1280,height:720},_=Date.now()-o;return g.info("Director Mode pipeline complete",{totalDuration:v,segmentCount:s,transitionsGenerated:m,hardCuts:f,mergedSize:h.length,processingTime:_}),{data:h,mediaType:"video/mp4",metadata:{duration:v,dimensions:T,model:"veo-3.1-generate-001",provider:"vertex",aspectRatio:w,audioEnabled:e.audio??!0,processingTime:_,segmentCount:s,transitionCount:m,clipDuration:a,transitionDurations:y,segments:d.map((k,R)=>({index:R,duration:a,processingTime:k.processingTime})),transitions:p.map(k=>({fromSegment:k.fromSegment,toSegment:k.toSegment,duration:k.duration,processingTime:k.processingTime}))}}}var e2,iX,EBt,CBt,kBt,RBt,xke=A(()=>{"use strict";fR();Q();hg();Ab();dke();pR();mke();e2=2,iX=2,EBt=15e3,CBt="Smooth cinematic transition between scenes",kBt=6e5,RBt=4});var an,xc=A(()=>{"use strict";Ht();Tn();uD();Nd();H5();Ta();bt();Q();Qa();WC();DL();gk();Zbe();Qbe();xEe();DEe();ACe();ICe();MCe();an=class{modelName;providerName;defaultTimeout=3e4;middlewareOptions;directTools=Eb()?{}:_f;mcpTools;customTools;toolExecutor;sessionId;userId;neurolink;_traceContext=null;setTraceContext(e){this._traceContext=e}messageBuilder;streamHandler;generationHandler;telemetryHandler;utilities;toolsManager;constructor(e,t,n,o){this.modelName=e||this.getDefaultModel(),this.providerName=t||this.getProviderName(),this.neurolink=n,this.middlewareOptions=o,this.messageBuilder=new P$(this.providerName,this.modelName),this.streamHandler=new O$(this.providerName,this.modelName),this.telemetryHandler=new j$(this.providerName,this.modelName,this.neurolink),this.generationHandler=new q1(this.providerName,this.modelName,()=>this.supportsTools(),(s,i)=>this.telemetryHandler.getTelemetryConfig(s,i),(s,i,a,l)=>this.handleToolExecutionStorage(s,i,a,l),()=>this.neurolink?.getEventEmitter()),this.utilities=new V$(this.providerName,this.modelName,this.defaultTimeout,this.middlewareOptions),this.toolsManager=new G$(this.providerName,this.directTools,this.neurolink,{isZodSchema:s=>this.isZodSchema(s),convertToolResult:s=>this.convertToolResult(s),createPermissiveZodSchema:()=>this.createPermissiveZodSchema(),fixSchemaForOpenAIStrictMode:s=>this.fixSchemaForOpenAIStrictMode(s)})}supportsTools(){return!0}async stream(e,t){let n=this.normalizeStreamOptions(e);if(g.info("Starting stream",{provider:this.providerName,hasTools:!n.disableTools&&this.supportsTools(),disableTools:!!n.disableTools,supportsTools:this.supportsTools(),inputLength:n.input?.text?.length||0,maxTokens:n.maxTokens,temperature:n.temperature,timestamp:Date.now()}),!!n.input?.files?.length||!!n.input?.videoFiles?.length){let a=await this.buildMessagesForStream(n);if(I8(a))return g.info("Video frames detected in stream, using fake streaming for video analysis",{provider:this.providerName,model:this.modelName}),await this.executeFakeStreaming(n,t)}let s=Y3.some(a=>this.modelName.includes(a)),i=n.output?.format==="json"||n.output?.format==="structured"||n.output?.format==="text";if(s&&!i)return g.info("Image model detected, forcing fake streaming",{provider:this.providerName,model:this.modelName,reason:"Image generation requires fake streaming to yield image output"}),await this.executeFakeStreaming(n,t);if(!n.disableTools&&this.supportsTools()){let a=await this.getToolsForStream(n);n={...n,tools:a}}else n={...n,tools:{}};try{g.debug("Attempting real streaming",{provider:this.providerName,timestamp:Date.now()});let a=await this.executeStream(n,t);return g.info("Real streaming succeeded",{provider:this.providerName,timestamp:Date.now()}),a}catch(a){let l=a instanceof Error?a.message:String(a);if((a instanceof Error?a.name:"")==="AbortError"||l.includes("abort")||l.includes("timeout")||l.includes("401")||l.includes("403")||l.includes("quota")||l.includes("rate limit")||l.includes("authentication"))throw this.handleProviderError(a);if(g.warn(`Real streaming failed for ${this.providerName}, falling back to fake streaming:`,{error:l,timestamp:Date.now()}),!n.disableTools&&this.supportsTools())return await this.executeFakeStreaming(n,t);throw g.error(`Real streaming failed for ${this.providerName}:`,a),this.handleProviderError(a)}}async executeFakeStreaming(e,t){try{g.info("Starting fake streaming with tools",{provider:this.providerName,supportsTools:this.supportsTools(),timestamp:Date.now()});let n={prompt:e.input?.text||"",input:e.input,systemPrompt:e.systemPrompt,temperature:e.temperature,maxTokens:e.maxTokens,tools:e.tools,disableTools:!!e.disableTools,maxSteps:e.maxSteps||5,provider:e.provider,model:e.model,region:e.region,enableAnalytics:e.enableAnalytics,enableEvaluation:e.enableEvaluation,evaluationDomain:e.evaluationDomain,toolUsageContext:e.toolUsageContext,context:e.context,csvOptions:e.csvOptions,abortSignal:e.abortSignal,toolFilter:e.toolFilter,excludeTools:e.excludeTools,skipToolPromptInjection:e.skipToolPromptInjection,timeout:e.timeout};g.debug("Calling generate for fake streaming",{provider:this.providerName,maxSteps:n.maxSteps,disableTools:n.disableTools,timestamp:Date.now()});let o=await this.generate(n,t);return g.info("Generate completed for fake streaming",{provider:this.providerName,hasContent:!!o?.content,contentLength:o?.content?.length||0,toolsUsed:o?.toolsUsed?.length||0,hasImageOutput:!!o?.imageOutput,timestamp:Date.now()}),{stream:(async function*(){if(o?.content){let s=o.content.split(/(\s+)/),i="";for(let a=0;a<s.length;a++)i+=s[a],(a===s.length-1||i.length>50||/[.!?;,]\s*$/.test(i))&&i.trim()&&(yield{content:i},i="",await new Promise(u=>{setTimeout(u,Math.random()*9+1)}));i.trim()&&(yield{content:i})}o?.imageOutput&&(yield{type:"image",imageOutput:o.imageOutput})})(),usage:o?.usage,provider:o?.provider,model:o?.model,toolCalls:o?.toolCalls?.map(s=>({toolName:s.toolName,parameters:s.args,id:s.toolCallId})),toolResults:o?.toolResults?o.toolResults.map(s=>({toolName:s.toolName||"unknown",status:s.status==="error"?"failure":"success",result:s.result,error:s.error})):void 0,analytics:o?.analytics,evaluation:o?.evaluation}}catch(n){throw g.error(`Fake streaming fallback failed for ${this.providerName}:`,n),this.handleProviderError(n)}}applyToolFiltering(e,t){if((!t.toolFilter||t.toolFilter.length===0)&&(!t.excludeTools||t.excludeTools.length===0))return e;let n=Object.keys(e).length,o={...e};if(t.toolFilter&&t.toolFilter.length>0){let i=new Set(t.toolFilter),a={};for(let[l,u]of Object.entries(o))i.has(l)&&(a[l]=u);o=a}if(t.excludeTools&&t.excludeTools.length>0){let i=new Set(t.excludeTools);for(let a of Object.keys(o))i.has(a)&&delete o[a]}let s=Object.keys(o).length;return n!==s&&g.debug("Tool filtering applied",{provider:this.providerName,beforeCount:n,afterCount:s,toolFilter:t.toolFilter,excludeTools:t.excludeTools}),o}async prepareGenerationContext(e){let t=!e.disableTools&&this.supportsTools(),n=t?await this.getAllTools():{},o=t?{...n,...e.tools||{}}:{};o=this.applyToolFiltering(o,e),g.debug("Final tools prepared for AI",{provider:this.providerName,directTools:Hb(n),directToolNames:NL(n),externalTools:Hb(e.tools||{}),externalToolNames:NL(e.tools||{}),totalTools:Hb(o),totalToolNames:NL(o),shouldUseTools:t,timestamp:Date.now()});let s=await this.getAISDKModelWithMiddleware(e);return{tools:o,model:s}}async getToolsForStream(e){if(!(!e.disableTools&&this.supportsTools()))return{};let n=await this.getAllTools(),o=e.tools||{},s={...n,...o};return s=this.applyToolFiltering(s,e),g.debug("Tools prepared for streaming",{provider:this.providerName,baseToolCount:Object.keys(n).length,externalToolCount:Object.keys(o).length,totalToolCount:Object.keys(s).length}),s}async buildMessages(e){return this.messageBuilder.buildMessages(e)}async buildMessagesForStream(e){return this.messageBuilder.buildMessagesForStream(e)}async executeGeneration(e,t,n,o){return this.generationHandler.executeGeneration(e,t,n,o)}logGenerationComplete(e){this.generationHandler.logGenerationComplete(e)}async recordPerformanceMetrics(e,t){await this.telemetryHandler.recordPerformanceMetrics(e,t)}extractToolInformation(e){return this.generationHandler.extractToolInformation(e)}formatEnhancedResult(e,t,n,o,s){return this.generationHandler.formatEnhancedResult(e,t,n,o,s)}analyzeAIResponse(e){this.generationHandler.analyzeAIResponse(e)}async generate(e,t){let n=this.normalizeTextOptions(e);this.validateOptions(n);let o=Date.now(),s=ye.provider.startSpan("neurolink.provider.generate",{kind:er.CLIENT,attributes:{[me.GEN_AI_SYSTEM]:this.providerName||"unknown",[me.GEN_AI_MODEL]:this.modelName||n.model||"unknown",[me.GEN_AI_OPERATION]:"generate",[me.NL_PROVIDER]:this.providerName||"unknown"}}),i=st.setSpan(gr.active(),s),a={ended:!1};return await gr.with(i,async()=>this.runGenerateInActiveContext(n,o,s,a))}async gen(e,t){return this.generate(e,t)}async runGenerateInActiveContext(e,t,n,o){try{if(e.output?.mode==="video")return await this.handleVideoGeneration(e,t);let s=Y3.some(p=>this.modelName.includes(p)),i=e.output?.format==="json"||e.output?.format==="structured"||e.output?.format==="text";if(s&&!i){g.info("Image generation model detected, routing to executeImageGeneration",{provider:this.providerName,model:this.modelName});let p=await this.executeImageGeneration(e);return await this.enhanceResult(p,e,t)}if(e.tts?.enabled&&!e.tts?.useAiResponse)return this.handleDirectTTSSynthesis(e,t);let{tools:a,model:l}=await this.prepareGenerationContext(e),u=await this.buildMessages(e),d=await this.handleVideoFrameGeneration(e,u,l,t);return d||await this.executeStandardGenerateFlow(e,t,l,u,a)}catch(s){throw n.setStatus({code:be.ERROR,message:s instanceof Error?s.message:String(s)}),n.end(),o.ended=!0,br(s)?g.info(`Generate aborted for ${this.providerName}`,{error:s instanceof Error?s.message:String(s)}):g.error(`Generate failed for ${this.providerName}:`,s),this.handleProviderError(s)}finally{o.ended||(n.setStatus({code:be.OK}),n.end())}}async handleDirectTTSSynthesis(e,t){let n=e.prompt??e.input?.text??"",o={content:n,provider:e.provider??this.providerName,model:this.modelName,usage:{input:0,output:0,total:0}};try{if(!e.tts)return this.enhanceResult(o,e,t);o.audio=await dy.synthesize(n,e.provider??this.providerName,e.tts)}catch(s){g.error("TTS synthesis failed in Mode 1 (direct input synthesis):",s)}return this.enhanceResult(o,e,t)}async handleVideoFrameGeneration(e,t,n,o){if(!I8(t))return null;if(e.schema!==void 0||e.output?.format!==void 0)return g.info("[VideoFrameGen] Skipping video-frame analysis route; caller requested structured output",{provider:this.providerName,model:this.modelName,hasSchema:e.schema!==void 0,outputFormat:e.output?.format}),null;let s=await Jbe(t,{provider:e.provider,providerName:this.providerName,region:e.region}),i=t.filter(u=>u.role==="user").flatMap(u=>Array.isArray(u.content)?u.content.filter(d=>d.type==="text").map(d=>d.text):[typeof u.content=="string"?u.content:""]).filter(Boolean).join(`
|
|
1127
1127
|
`).trim(),a=s,l={input:0,output:0,total:0};if(e.systemPrompt)try{let u=i?`The user asked: "${i}"
|
|
1128
1128
|
|
|
1129
1129
|
Here is the video/image analysis result from the visual analysis system:
|
|
@@ -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}
|
|
@@ -1911,7 +1911,7 @@ Troubleshooting:
|
|
|
1911
1911
|
1. Check Google Cloud credentials and permissions
|
|
1912
1912
|
2. Verify project ID and location settings
|
|
1913
1913
|
3. Ensure Vertex AI API is enabled
|
|
1914
|
-
4. Check network connectivity`,this.providerName)}static evictLRUCacheEntries(e){if(e.size<=r.MAX_CACHE_SIZE)return;let t=e.size-r.MAX_CACHE_SIZE+5,n=0;for(let o of e.keys()){if(n>=t)break;e.delete(o),n++}g.debug("GoogleVertexProvider: Evicted LRU cache entries",{entriesRemoved:n,currentCacheSize:e.size})}static accessCacheEntry(e,t){let n=e.get(t);return n!==void 0&&(e.delete(t),e.set(t,n)),n}shouldSetMaxTokensCached(e){let t=Date.now();t-r.maxTokensCacheTime>r.CACHE_DURATION&&(r.maxTokensCache.clear(),r.maxTokensCacheTime=t);let n=r.accessCacheEntry(r.maxTokensCache,e);if(n!==void 0)return n;let o=!this.modelHasMaxTokensIssues(e);return r.maxTokensCache.set(e,o),r.evictLRUCacheEntries(r.maxTokensCache),o}modelHasMaxTokensIssues(e){let t=Date.now(),n="google-vertex-config";if(t-r.modelConfigCacheTime>r.CACHE_DURATION){r.modelConfigCache.clear();let a=yS.getInstance().getProviderConfiguration("google-vertex");r.modelConfigCache.set(n,a),r.modelConfigCacheTime=t}return(r.accessCacheEntry(r.modelConfigCache,n)?.modelBehavior?.maxTokensIssues||["gemini-2.5-flash","gemini-2.5-pro"]).some(i=>e.includes(i))}async hasAnthropicSupport(){return Kee()}resolveModelAlias(e){return DB[e]??e}async createAnthropicModel(e){let t=`anthropic-validation-${Date.now()}-${Math.random().toString(36).substring(2,11)}`;if(g.debug("[GoogleVertexProvider] \u{1F9E0} Starting comprehensive Anthropic model validation",{validationId:t,modelName:e,timestamp:new Date().toISOString()}),!Kee())return g.error("[GoogleVertexProvider] \u274C SDK module validation failed",{validationId:t,issue:"createVertexAnthropic function not available",solution:"Update @ai-sdk/google-vertex to latest version with Anthropic support",command:"npm install @ai-sdk/google-vertex@latest",documentation:"https://sdk.vercel.ai/providers/ai-sdk-providers/google-vertex#anthropic-models"}),null;let o=this.credentials&&(this.credentials.apiKey||this.credentials.clientEmail||this.credentials.privateKey||this.credentials.serviceAccountKey)?{isValid:!0,method:"per_request_credentials",issues:[]}:await this.validateVertexAuthentication();if(!o.isValid)return g.error("[GoogleVertexProvider] \u274C Authentication validation failed",{validationId:t,method:o.method,issues:o.issues,solutions:["Option 1: Set GOOGLE_APPLICATION_CREDENTIALS to valid service account OR ADC file","Option 2: Set individual env vars: GOOGLE_AUTH_CLIENT_EMAIL, GOOGLE_AUTH_PRIVATE_KEY","Option 3: Use gcloud auth application-default login for ADC","Documentation: https://cloud.google.com/docs/authentication/provide-credentials-adc"]}),null;let s=await this.validateVertexProjectConfiguration();if(!s.isValid)return g.error("[GoogleVertexProvider] \u274C Project configuration validation failed",{validationId:t,projectId:s.projectId,region:s.region,issues:s.issues,solutions:["Set GOOGLE_VERTEX_PROJECT or GOOGLE_CLOUD_PROJECT environment variable","Ensure project exists and has Vertex AI API enabled","Check: https://console.cloud.google.com/apis/library/aiplatform.googleapis.com"]}),null;await this.checkVertexRegionalSupport(s.region)||g.warn("[GoogleVertexProvider] \u26A0\uFE0F Regional support warning",{validationId:t,region:s.region,warning:"Anthropic models may not be available in this region",supportedRegions:["us-central1","us-east4","us-east5","us-west1","us-west4","europe-west1","europe-west4","asia-southeast1","asia-northeast1"],solution:"Set GOOGLE_CLOUD_LOCATION to a supported region"});let a=this.validateAnthropicModelName(e);if(!a.isValid)return g.error("[GoogleVertexProvider] \u274C Model name validation failed",{validationId:t,modelName:e,issue:a.issue,recommendedModels:["claude-sonnet-4-6","claude-opus-4-6","claude-sonnet-4-5@20250929","claude-opus-4@20250514","claude-3-5-sonnet-20241022"]}),null;try{g.debug("[GoogleVertexProvider] \u{1F527} Creating vertexAnthropic settings",{validationId:t,authMethod:o.method,projectId:s.projectId,region:s.region});let l=await C7t(this.location,this.credentials);if(!l.project||!l.location)return g.error("[GoogleVertexProvider] \u274C Settings validation failed",{validationId:t,hasProject:!!l.project,hasLocation:!!l.location,hasProxy:!!l.fetch,hasAuth:!!l.googleAuthOptions}),null;g.debug("[GoogleVertexProvider] \u2705 Creating vertexAnthropic instance",{validationId:t,modelName:e,project:l.project,location:l.location,hasProxy:!!l.fetch,hasAuth:!!l.googleAuthOptions});let d=lA(l)(e);return g.info("[GoogleVertexProvider] \u2705 Anthropic model created successfully",{validationId:t,modelName:e,hasModel:!!d,modelType:typeof d,authMethod:o.method,projectId:s.projectId,region:s.region,validationsPassed:["SDK_MODULE_AVAILABLE","AUTHENTICATION_VALID","PROJECT_CONFIGURED","MODEL_NAME_VALID","SETTINGS_CREATED","PROVIDER_INSTANCE_CREATED","MODEL_INSTANCE_CREATED"]}),d}catch(l){let u=this.analyzeAnthropicCreationError(l,{validationId:t,modelName:e,projectId:s.projectId,region:s.region,authMethod:o.method});return g.error("[GoogleVertexProvider] \u274C Anthropic model creation failed",{validationId:t,modelName:e,...u,detailedTroubleshooting:this.getAnthropicTroubleshootingSteps(u)}),null}}async validateVertexAuthentication(){let e={isValid:!1,method:"none",issues:[]};try{if(process.env.GOOGLE_APPLICATION_CREDENTIALS_NEUROLINK||process.env.GOOGLE_APPLICATION_CREDENTIALS){let t=process.env.GOOGLE_APPLICATION_CREDENTIALS_NEUROLINK?process.env.GOOGLE_APPLICATION_CREDENTIALS_NEUROLINK:process.env.GOOGLE_APPLICATION_CREDENTIALS||"";try{if(xo.existsSync(t)){let n=xo.readFileSync(t,"utf8"),o=JSON.parse(n);if(o.type==="service_account"&&o.project_id&&o.client_email&&o.private_key)return e.isValid=!0,e.method="service_account_file",e;if(o.client_id&&o.client_secret&&o.refresh_token&&o.type!=="service_account")return e.isValid=!0,e.method="application_default_credentials",e;e.issues.push("Credentials file missing required fields (not service account or ADC format)")}else e.issues.push(`Service account file not found: ${t}`)}catch(n){e.issues.push(`Service account file validation failed: ${n}`)}}if(process.env.GOOGLE_AUTH_CLIENT_EMAIL&&process.env.GOOGLE_AUTH_PRIVATE_KEY){let t=process.env.GOOGLE_AUTH_CLIENT_EMAIL,n=process.env.GOOGLE_AUTH_PRIVATE_KEY;if(t.includes("@")&&n.includes("BEGIN PRIVATE KEY"))return e.isValid=!0,e.method="environment_variables",e;e.issues.push("Individual credentials format validation failed")}else e.issues.push("Missing individual credential environment variables");e.isValid||e.issues.push("No valid authentication method found")}catch(t){e.issues.push(`Authentication validation error: ${t}`)}return e}async validateVertexProjectConfiguration(){let e={isValid:!1,projectId:void 0,region:void 0,issues:[]},t=process.env.GOOGLE_VERTEX_PROJECT||process.env.GOOGLE_CLOUD_PROJECT_ID||process.env.GOOGLE_PROJECT_ID||process.env.GOOGLE_CLOUD_PROJECT;t?(e.projectId=t,/^[a-z][a-z0-9-]{4,28}[a-z0-9]$/.test(t)?e.isValid=!0:e.issues.push(`Invalid project ID format: ${t}`)):e.issues.push("No project ID configured");let n=process.env.GOOGLE_CLOUD_LOCATION||process.env.VERTEX_LOCATION||process.env.GOOGLE_VERTEX_LOCATION||"us-central1";return e.region=n,/^([a-z]+-[a-z]+\d+|global)$/.test(n)||(e.issues.push(`Invalid region format: ${n} (expected format: 'us-central1' or 'global')`),e.isValid=!1),e}async checkVertexRegionalSupport(e="us-central1"){return["global","us-central1","us-east1","us-east4","us-east5","us-south1","us-west1","us-west4","northamerica-northeast1","northamerica-northeast2","europe-west1","europe-west2","europe-west3","europe-west4","europe-west6","europe-west8","europe-west9","europe-north1","europe-central2","europe-southwest1","asia-east1","asia-east2","asia-northeast1","asia-northeast2","asia-northeast3","asia-south1","asia-southeast1","asia-southeast2","australia-southeast1","australia-southeast2","me-west1","me-central1","africa-south1","southamerica-east1","southamerica-west1"].includes(e)}validateAnthropicModelName(e){return!e||typeof e!="string"?{isValid:!1,issue:"Model name is required and must be a string"}:e.toLowerCase().includes("claude")?[/^claude-opus-4-6$/,/^claude-sonnet-4-6$/,/^claude-sonnet-4@\d{8}$/,/^claude-sonnet-4-5@\d{8}$/,/^claude-opus-4@\d{8}$/,/^claude-opus-4-1@\d{8}$/,/^claude-opus-4-5@\d{8}$/,/^claude-haiku-4-5@\d{8}$/,/^claude-3-7-sonnet@\d{8}$/,/^claude-3-5-sonnet-\d{8}$/,/^claude-3-5-haiku-\d{8}$/,/^claude-3-sonnet-\d{8}$/,/^claude-3-haiku-\d{8}$/,/^claude-3-opus-\d{8}$/].some(o=>o.test(e))?{isValid:!0}:{isValid:!1,issue:'Model name format not recognized. Expected formats like "claude-3-5-sonnet-20241022" or "claude-sonnet-4@20250514"'}:{isValid:!1,issue:'Model name must be a Claude model (should contain "claude")'}}analyzeAnthropicCreationError(e,t){let n=e instanceof Error?e.message:String(e),o=e instanceof Error?e.name:"UnknownError",s={error:n,errorName:o,errorType:"UNKNOWN",isNetworkError:!1,isAuthError:!1,isConfigurationError:!1,isModelError:!1,isRegionalError:!1,specificIssue:"Unknown error occurred",errorStack:e instanceof Error?e.stack:void 0};return n.includes("ETIMEDOUT")||n.includes("ECONNREFUSED")||n.includes("ENOTFOUND")||n.includes("timeout")?(s.errorType="NETWORK",s.isNetworkError=!0,s.specificIssue="Network connectivity issue - cannot reach Google Cloud endpoints"):n.includes("PERMISSION_DENIED")||n.includes("401")||n.includes("403")||n.includes("Unauthorized")||n.includes("Forbidden")?(s.errorType="AUTHENTICATION",s.isAuthError=!0,s.specificIssue="Authentication failed - invalid credentials or insufficient permissions"):n.includes("NOT_FOUND")||n.includes("404")||n.includes("model")&&n.includes("not available")?(s.errorType="MODEL_AVAILABILITY",s.isModelError=!0,s.specificIssue=`Model "${t.modelName}" not available in region "${t.region}"`):n.includes("QUOTA_EXCEEDED")||n.includes("quota")||n.includes("limit")?(s.errorType="QUOTA",s.isRegionalError=!0,s.specificIssue="Quota exceeded or rate limit reached"):(n.includes("INVALID_ARGUMENT")||n.includes("BadRequest")||n.includes("400"))&&(s.errorType="CONFIGURATION",s.isConfigurationError=!0,s.specificIssue="Invalid configuration or request parameters"),s}getAnthropicTroubleshootingSteps(e){let t=[];switch(e.errorType){case"NETWORK":t.push("\u{1F310} Network Troubleshooting:","1. Check internet connectivity","2. Verify proxy configuration if behind corporate firewall","3. Ensure firewall allows HTTPS to *.googleapis.com","4. Try different network or wait for network issues to resolve","5. Check if using VPN that might block Google Cloud endpoints");break;case"AUTHENTICATION":t.push("\u{1F510} Authentication Troubleshooting:","1. Verify GOOGLE_APPLICATION_CREDENTIALS file exists and is valid","2. Check individual credentials: GOOGLE_AUTH_CLIENT_EMAIL, GOOGLE_AUTH_PRIVATE_KEY",'3. Ensure service account has "Vertex AI User" role',"4. Verify project ID matches the one in your credentials","5. Enable Vertex AI API: https://console.cloud.google.com/apis/library/aiplatform.googleapis.com");break;case"MODEL_AVAILABILITY":t.push("\u{1F916} Model Availability Troubleshooting:","1. Verify model name format and spelling","2. Check if Anthropic integration is enabled in your project","3. Enable Claude models: https://console.cloud.google.com/vertex-ai/publishers/anthropic","4. Try a different region if current region lacks Anthropic support","5. Accept Anthropic terms and conditions in Google Cloud Console");break;case"QUOTA":t.push("\u{1F4CA} Quota Troubleshooting:","1. Check Vertex AI quotas in Google Cloud Console","2. Request quota increase if needed","3. Try a different model with lower resource requirements","4. Wait before retrying if rate limited","5. Consider using a different region with available quota");break;case"CONFIGURATION":t.push("\u2699\uFE0F Configuration Troubleshooting:","1. Verify all required environment variables are set","2. Check project ID and region format","3. Ensure model name follows correct format","4. Verify request parameters are within model limits","5. Update @ai-sdk/google-vertex to latest version");break;default:t.push("\u{1F527} General Troubleshooting:","1. Update @ai-sdk/google-vertex to latest version","2. Check Google Cloud service status","3. Verify all authentication and configuration","4. Try with a simple Claude model like claude-3-haiku-20240307","5. Enable debug logging with NEUROLINK_DEBUG=true")}return t}registerTool(e,t,n,o){let s="GoogleVertexProvider.registerTool";try{let i={description:n,parameters:t,execute:async a=>{try{let l={...a,__context:this.toolContext};return await o(l)}catch(l){throw g.error(`${s}: Tool execution error`,{toolName:e,error:l instanceof Error?l.message:String(l)}),l}}};this.registeredTools.set(e,i),g.debug(`${s}: Tool registered`,{toolName:e,modelName:this.modelName})}catch(i){throw g.error(`${s}: Tool registration error`,{toolName:e,error:i instanceof Error?i.message:String(i)}),i}}setToolContext(e){this.toolContext={...this.toolContext,...e},g.debug("GoogleVertexProvider.setToolContext: Tool context set",{contextKeys:Object.keys(e)})}getToolContext(){return{...this.toolContext}}setToolExecutor(e){this.toolExecutor=e,g.debug("GoogleVertexProvider.setToolExecutor: Tool executor set",{hasExecutor:typeof e=="function"})}static clearCaches(){r.modelConfigCache.clear(),r.maxTokensCache.clear(),r.modelConfigCacheTime=0,r.maxTokensCacheTime=0,g.debug("GoogleVertexProvider: All caches cleared",{clearedAt:Date.now()})}static getCacheStats(){let e=Date.now();return{modelConfigCacheSize:r.modelConfigCache.size,maxTokensCacheSize:r.maxTokensCache.size,maxCacheSize:r.MAX_CACHE_SIZE,cacheAge:{modelConfig:e-r.modelConfigCacheTime,maxTokens:e-r.maxTokensCacheTime}}}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,"vertex")}async getImageGenerationAccessToken(){let{GoogleAuth:o}=await Promise.resolve().then(()=>(dR(),HZ)),s=process.env.GOOGLE_APPLICATION_CREDENTIALS_NEUROLINK||process.env.GOOGLE_APPLICATION_CREDENTIALS;for(let i=1;i<=3;i++){let a=new AbortController,l=setTimeout(()=>{a.abort(),g.warn(`[GoogleVertexProvider] Auth token refresh exceeded 15000ms timeout (attempt ${i}/3)`)},15e3);try{let p=await(await new o({...s&&{keyFilename:s},scopes:["https://www.googleapis.com/auth/cloud-platform"]}).getClient()).getAccessToken();if(!p.token)throw new kn("Failed to obtain access token from Google Auth",this.providerName);return p.token}catch(u){let d=u;if(!(a.signal.aborted||d?.code==="ECONNRESET"||d?.code==="ETIMEDOUT"||d?.code==="ENOTFOUND"||d?.message?.includes("socket hang up")||d?.message?.includes("network socket disconnected"))||i===3)throw u;let m=500*2**(i-1);g.warn(`[GoogleVertexProvider] Auth token transient error (${d?.code||d?.message}), retrying in ${m}ms (attempt ${i}/3)`),await new Promise(f=>setTimeout(f,m))}finally{clearTimeout(l)}}throw new kn("Failed to obtain access token after retries",this.providerName)}async buildImageGenerationParts(e,t,n){let o=[];e&&o.push({text:e});for(let s of t){let i;if(Buffer.isBuffer(s))i=s.toString("base64");else if(typeof s=="string")if(s.startsWith("/")||/^[a-zA-Z]:\\/.test(s)||s.startsWith("./")||s.startsWith("../")||s.startsWith("..\\")||s.startsWith(".\\")){let l=jc.resolve(s),u=process.cwd();if(!l.startsWith(u+jc.sep)&&l!==u)throw new ur("PDF file path must be within current directory for security",this.providerName);if(!xo.existsSync(l))throw new ur(`PDF file not found: ${l}`,this.providerName);i=xo.readFileSync(l).toString("base64")}else i=s;else{g.warn("Invalid PDF file format, skipping",{type:typeof s});continue}o.push({inlineData:{mimeType:"application/pdf",data:i}}),g.debug("Added PDF file to request",{dataLength:i.length})}for(let s=0;s<n.length;s++){let i=n[s],a,l;if(Buffer.isBuffer(i))a=i.toString("base64"),l=this.detectImageType(i);else if(typeof i=="string")if(i.startsWith("/")||/^[a-zA-Z]:\\/.test(i)||i.startsWith("./")||i.startsWith("../")||i.startsWith("..\\")||i.startsWith(".\\")){let d=jc.resolve(i);if(!xo.existsSync(d)){g.warn(`Image file not found: ${d}, skipping`);continue}let p=xo.readFileSync(d);a=p.toString("base64"),l=this.detectImageType(p)}else if(i.startsWith("data:")){let d=i.match(/^data:([^;]+);base64,(.+)$/);if(d)l=d[1],a=d[2];else{g.warn("Invalid data URL format, skipping image",{index:s});continue}}else if(i.startsWith("http://")||i.startsWith("https://"))try{let p=new URL(i).hostname;if(["localhost","127.0.0.1","0.0.0.0","[::1]"].some(v=>p===v)||/^(10\.|172\.(1[6-9]|2\d|3[01])\.|192\.168\.)/.test(p)){g.warn(`[GoogleVertexProvider] Blocked fetch to private/local URL: ${p}`,{index:s});continue}try{let{resolve4:v,resolve6:b}=RB.promises,w=[];try{w.push(...await v(p))}catch{}try{w.push(...await b(p))}catch{}if(w.length>0&&w.every(T=>w7t(T))){g.warn(`[GoogleVertexProvider] Blocked fetch: hostname ${p} resolves to private/loopback address`,{index:s,addresses:w});continue}}catch(v){g.warn(`[GoogleVertexProvider] DNS resolution failed for ${p}, blocking fetch`,{index:s,error:v instanceof Error?v.message:String(v)});continue}let f=await fetch(i,{signal:AbortSignal.timeout(15e3)});if(!f.ok){g.warn(`Failed to fetch image URL (${f.status}), skipping`,{index:s,url:i});continue}let h=f.headers.get("content-length");if(h&&Number(h)>OB){g.warn(`[GoogleVertexProvider] Image URL exceeds ${OB} byte limit (Content-Length: ${h}), skipping`,{index:s,url:i});continue}let y=Buffer.from(await f.arrayBuffer());if(y.byteLength>OB){g.warn(`[GoogleVertexProvider] Downloaded image exceeds ${OB} byte limit (${y.byteLength} bytes), skipping`,{index:s,url:i});continue}a=y.toString("base64"),l=this.detectImageType(y)}catch(d){g.warn(`Failed to download image from URL, skipping: ${d instanceof Error?d.message:String(d)}`,{index:s,url:i});continue}else{a=i;let d=Buffer.from(a,"base64");l=this.detectImageType(d)}else{g.warn("Invalid image format, skipping",{type:typeof i,index:s});continue}o.push({inlineData:{mimeType:l,data:a}}),g.debug("Added image to request",{index:s,mimeType:l,dataLength:a.length})}return o}parseImageGenerationResponse(e,t){let n=e.candidates?.[0];if(!n?.content?.parts)throw new ur("No content parts in Vertex AI response",this.providerName);let o=n.content.parts.find(a=>(a.inlineData||a.inline_data)&&(a.inlineData&&a.inlineData.mimeType||a.inline_data&&a.inline_data.mime_type)&&(a.inlineData&&a.inlineData.mimeType?.startsWith("image/")||a.inline_data&&a.inline_data.mime_type?.startsWith("image/")));if(!o){let a=n.content.parts.some(l=>l.text);throw new ur(a?`Image generation completed but model returned text instead of image data. Model: ${t}`:`Image generation completed but no image data was returned. Model: ${t}`,this.providerName)}let s=o.inlineData?.data||o.inline_data?.data,i=o.inlineData?.mimeType||o.inline_data?.mime_type||"image/png";if(!s)throw new ur("Image part found but no data available",this.providerName);return{imageData:s,mimeType:i}}async executeImageGeneration(e){let t=e.prompt||e.input?.text||"",n=e.input?.pdfFiles||[],o=e.input?.images||[],s=n.length>0,i=o.length>0;if(!t.trim()&&!s&&!i)throw new ur("Image generation requires either a prompt, PDF file, or image as input",this.providerName);let a=e.model||this.modelName||"gemini-3-pro-image-preview";s&&!a.includes("gemini-3-pro-image")&&(a="gemini-3-pro-image-preview");let l=process.env.GOOGLE_VERTEX_IMAGE_LOCATION||"global",d=Jfe.some(m=>a.includes(m)||m.includes(a))?l:this.location,p=Date.now();g.info("\u{1F3A8} Starting Vertex AI image generation (REST API)",{model:a,prompt:t.substring(0,100),provider:this.providerName,projectId:this.projectId,location:d,hasPdfInput:s,pdfCount:n.length,hasImageInput:i,imageCount:o.length});try{let m=await this.getImageGenerationAccessToken(),h={contents:[{role:"user",parts:await this.buildImageGenerationParts(t,n,o)}],generation_config:{response_modalities:["TEXT","IMAGE"],temperature:e.temperature||.7,candidate_count:1}},y;d==="global"?y=`https://aiplatform.googleapis.com/v1/projects/${this.projectId}/locations/global/publishers/google/models/${a}:generateContent`:y=`https://${d}-aiplatform.googleapis.com/v1/projects/${this.projectId}/locations/${d}/publishers/google/models/${a}:generateContent`,g.debug("Making REST API call to Vertex AI",{url:y,model:a,hasAccessToken:!0});let v=12e4,b=fetch(y,{method:"POST",headers:{Authorization:`Bearer ${m}`,"Content-Type":"application/json"},body:JSON.stringify(h)}),w=new Promise((C,E)=>{setTimeout(()=>{E(new zr(`Vertex AI image generation timed out after ${v}ms`,v))},v)}),T=await Promise.race([b,w]);if(!T.ok){let C=await T.text();throw new ur(`Vertex AI API error (${T.status}): ${C}`,this.providerName)}let _=await T.json(),{imageData:k,mimeType:R}=this.parseImageGenerationResponse(_,a);g.info("Image generation successful",{model:a,mimeType:R,dataLength:k.length,responseTime:Date.now()-p});let I={content:`Generated image using ${a} (${R})`,imageOutput:{base64:k},provider:this.providerName,model:a,usage:{input:this.estimateTokenCount(t),output:0,total:this.estimateTokenCount(t)}};return await this.enhanceResult(I,e,p)}catch(m){throw g.error("Image generation failed",{error:m instanceof Error?m.message:String(m),model:a,prompt:t.substring(0,100)}),this.handleProviderError(m)}}async embed(e,t){let n=t||"text-embedding-004";g.debug("Generating embedding",{provider:this.providerName,model:n,textLength:e.length});try{let o=await NB(this.location,this.credentials),i=NA(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()||"text-embedding-004";g.debug("Generating batch embeddings",{provider:this.providerName,model:n,count:e.length});try{let o=await NB(this.location,this.credentials),i=NA(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)}}getModelSuggestions(e){let t={google:["gemini-3.1-pro-preview","gemini-3.1-flash-lite-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash","gemini-2.5-flash-lite","gemini-2.0-flash-001","gemini-2.0-flash-lite","gemini-1.5-pro","gemini-1.5-flash"],claude:["claude-sonnet-4-5@20250929","claude-sonnet-4@20250514","claude-opus-4@20250514","claude-3-5-sonnet-20241022","claude-3-5-haiku-20241022","claude-3-sonnet-20240229","claude-3-haiku-20240307","claude-3-opus-20240229"]},n=`
|
|
1914
|
+
4. Check network connectivity`,this.providerName)}static evictLRUCacheEntries(e){if(e.size<=r.MAX_CACHE_SIZE)return;let t=e.size-r.MAX_CACHE_SIZE+5,n=0;for(let o of e.keys()){if(n>=t)break;e.delete(o),n++}g.debug("GoogleVertexProvider: Evicted LRU cache entries",{entriesRemoved:n,currentCacheSize:e.size})}static accessCacheEntry(e,t){let n=e.get(t);return n!==void 0&&(e.delete(t),e.set(t,n)),n}shouldSetMaxTokensCached(e){let t=Date.now();t-r.maxTokensCacheTime>r.CACHE_DURATION&&(r.maxTokensCache.clear(),r.maxTokensCacheTime=t);let n=r.accessCacheEntry(r.maxTokensCache,e);if(n!==void 0)return n;let o=!this.modelHasMaxTokensIssues(e);return r.maxTokensCache.set(e,o),r.evictLRUCacheEntries(r.maxTokensCache),o}modelHasMaxTokensIssues(e){let t=Date.now(),n="google-vertex-config";if(t-r.modelConfigCacheTime>r.CACHE_DURATION){r.modelConfigCache.clear();let a=yS.getInstance().getProviderConfiguration("google-vertex");r.modelConfigCache.set(n,a),r.modelConfigCacheTime=t}return(r.accessCacheEntry(r.modelConfigCache,n)?.modelBehavior?.maxTokensIssues||["gemini-2.5-flash","gemini-2.5-pro"]).some(i=>e.includes(i))}async hasAnthropicSupport(){return Kee()}resolveModelAlias(e){return DB[e]??e}async createAnthropicModel(e){let t=`anthropic-validation-${Date.now()}-${Math.random().toString(36).substring(2,11)}`;if(g.debug("[GoogleVertexProvider] \u{1F9E0} Starting comprehensive Anthropic model validation",{validationId:t,modelName:e,timestamp:new Date().toISOString()}),!Kee())return g.error("[GoogleVertexProvider] \u274C SDK module validation failed",{validationId:t,issue:"createVertexAnthropic function not available",solution:"Update @ai-sdk/google-vertex to latest version with Anthropic support",command:"npm install @ai-sdk/google-vertex@latest",documentation:"https://sdk.vercel.ai/providers/ai-sdk-providers/google-vertex#anthropic-models"}),null;let o=this.credentials&&(this.credentials.apiKey||this.credentials.clientEmail||this.credentials.privateKey||this.credentials.serviceAccountKey)?{isValid:!0,method:"per_request_credentials",issues:[]}:await this.validateVertexAuthentication();if(!o.isValid)return g.error("[GoogleVertexProvider] \u274C Authentication validation failed",{validationId:t,method:o.method,issues:o.issues,solutions:["Option 1: Set GOOGLE_APPLICATION_CREDENTIALS to valid service account OR ADC file","Option 2: Set individual env vars: GOOGLE_AUTH_CLIENT_EMAIL, GOOGLE_AUTH_PRIVATE_KEY","Option 3: Use gcloud auth application-default login for ADC","Documentation: https://cloud.google.com/docs/authentication/provide-credentials-adc"]}),null;let s=await this.validateVertexProjectConfiguration();if(!s.isValid)return g.error("[GoogleVertexProvider] \u274C Project configuration validation failed",{validationId:t,projectId:s.projectId,region:s.region,issues:s.issues,solutions:["Set GOOGLE_VERTEX_PROJECT or GOOGLE_CLOUD_PROJECT environment variable","Ensure project exists and has Vertex AI API enabled","Check: https://console.cloud.google.com/apis/library/aiplatform.googleapis.com"]}),null;await this.checkVertexRegionalSupport(s.region)||g.warn("[GoogleVertexProvider] \u26A0\uFE0F Regional support warning",{validationId:t,region:s.region,warning:"Anthropic models may not be available in this region",supportedRegions:["us-central1","us-east4","us-east5","us-west1","us-west4","europe-west1","europe-west4","asia-southeast1","asia-northeast1"],solution:"Set GOOGLE_CLOUD_LOCATION to a supported region"});let a=this.validateAnthropicModelName(e);if(!a.isValid)return g.error("[GoogleVertexProvider] \u274C Model name validation failed",{validationId:t,modelName:e,issue:a.issue,recommendedModels:["claude-sonnet-4-6","claude-opus-4-6","claude-sonnet-4-5@20250929","claude-opus-4@20250514","claude-3-5-sonnet-20241022"]}),null;try{g.debug("[GoogleVertexProvider] \u{1F527} Creating vertexAnthropic settings",{validationId:t,authMethod:o.method,projectId:s.projectId,region:s.region});let l=await C7t(this.location,this.credentials);if(!l.project||!l.location)return g.error("[GoogleVertexProvider] \u274C Settings validation failed",{validationId:t,hasProject:!!l.project,hasLocation:!!l.location,hasProxy:!!l.fetch,hasAuth:!!l.googleAuthOptions}),null;g.debug("[GoogleVertexProvider] \u2705 Creating vertexAnthropic instance",{validationId:t,modelName:e,project:l.project,location:l.location,hasProxy:!!l.fetch,hasAuth:!!l.googleAuthOptions});let d=lA(l)(e);return g.info("[GoogleVertexProvider] \u2705 Anthropic model created successfully",{validationId:t,modelName:e,hasModel:!!d,modelType:typeof d,authMethod:o.method,projectId:s.projectId,region:s.region,validationsPassed:["SDK_MODULE_AVAILABLE","AUTHENTICATION_VALID","PROJECT_CONFIGURED","MODEL_NAME_VALID","SETTINGS_CREATED","PROVIDER_INSTANCE_CREATED","MODEL_INSTANCE_CREATED"]}),d}catch(l){let u=this.analyzeAnthropicCreationError(l,{validationId:t,modelName:e,projectId:s.projectId,region:s.region,authMethod:o.method});return g.error("[GoogleVertexProvider] \u274C Anthropic model creation failed",{validationId:t,modelName:e,...u,detailedTroubleshooting:this.getAnthropicTroubleshootingSteps(u)}),null}}async validateVertexAuthentication(){let e={isValid:!1,method:"none",issues:[]};try{if(process.env.GOOGLE_APPLICATION_CREDENTIALS_NEUROLINK||process.env.GOOGLE_APPLICATION_CREDENTIALS){let t=process.env.GOOGLE_APPLICATION_CREDENTIALS_NEUROLINK?process.env.GOOGLE_APPLICATION_CREDENTIALS_NEUROLINK:process.env.GOOGLE_APPLICATION_CREDENTIALS||"";try{if(xo.existsSync(t)){let n=xo.readFileSync(t,"utf8"),o=JSON.parse(n);if(o.type==="service_account"&&o.project_id&&o.client_email&&o.private_key)return e.isValid=!0,e.method="service_account_file",e;if(o.client_id&&o.client_secret&&o.refresh_token&&o.type!=="service_account")return e.isValid=!0,e.method="application_default_credentials",e;e.issues.push("Credentials file missing required fields (not service account or ADC format)")}else e.issues.push(`Service account file not found: ${t}`)}catch(n){e.issues.push(`Service account file validation failed: ${n}`)}}if(process.env.GOOGLE_AUTH_CLIENT_EMAIL&&process.env.GOOGLE_AUTH_PRIVATE_KEY){let t=process.env.GOOGLE_AUTH_CLIENT_EMAIL,n=process.env.GOOGLE_AUTH_PRIVATE_KEY;if(t.includes("@")&&n.includes("BEGIN PRIVATE KEY"))return e.isValid=!0,e.method="environment_variables",e;e.issues.push("Individual credentials format validation failed")}else e.issues.push("Missing individual credential environment variables");e.isValid||e.issues.push("No valid authentication method found")}catch(t){e.issues.push(`Authentication validation error: ${t}`)}return e}async validateVertexProjectConfiguration(){let e={isValid:!1,projectId:void 0,region:void 0,issues:[]},t=process.env.GOOGLE_VERTEX_PROJECT||process.env.GOOGLE_CLOUD_PROJECT_ID||process.env.GOOGLE_PROJECT_ID||process.env.GOOGLE_CLOUD_PROJECT;t?(e.projectId=t,/^[a-z][a-z0-9-]{4,28}[a-z0-9]$/.test(t)?e.isValid=!0:e.issues.push(`Invalid project ID format: ${t}`)):e.issues.push("No project ID configured");let n=process.env.GOOGLE_CLOUD_LOCATION||process.env.VERTEX_LOCATION||process.env.GOOGLE_VERTEX_LOCATION||"us-central1";return e.region=n,/^([a-z]+-[a-z]+\d+|global)$/.test(n)||(e.issues.push(`Invalid region format: ${n} (expected format: 'us-central1' or 'global')`),e.isValid=!1),e}async checkVertexRegionalSupport(e="us-central1"){return["global","us-central1","us-east1","us-east4","us-east5","us-south1","us-west1","us-west4","northamerica-northeast1","northamerica-northeast2","europe-west1","europe-west2","europe-west3","europe-west4","europe-west6","europe-west8","europe-west9","europe-north1","europe-central2","europe-southwest1","asia-east1","asia-east2","asia-northeast1","asia-northeast2","asia-northeast3","asia-south1","asia-southeast1","asia-southeast2","australia-southeast1","australia-southeast2","me-west1","me-central1","africa-south1","southamerica-east1","southamerica-west1"].includes(e)}validateAnthropicModelName(e){return!e||typeof e!="string"?{isValid:!1,issue:"Model name is required and must be a string"}:e.toLowerCase().includes("claude")?[/^claude-opus-4-6$/,/^claude-sonnet-4-6$/,/^claude-sonnet-4@\d{8}$/,/^claude-sonnet-4-5@\d{8}$/,/^claude-opus-4@\d{8}$/,/^claude-opus-4-1@\d{8}$/,/^claude-opus-4-5@\d{8}$/,/^claude-haiku-4-5@\d{8}$/,/^claude-3-7-sonnet@\d{8}$/,/^claude-3-5-sonnet-\d{8}$/,/^claude-3-5-haiku-\d{8}$/,/^claude-3-sonnet-\d{8}$/,/^claude-3-haiku-\d{8}$/,/^claude-3-opus-\d{8}$/].some(o=>o.test(e))?{isValid:!0}:{isValid:!1,issue:'Model name format not recognized. Expected formats like "claude-3-5-sonnet-20241022" or "claude-sonnet-4@20250514"'}:{isValid:!1,issue:'Model name must be a Claude model (should contain "claude")'}}analyzeAnthropicCreationError(e,t){let n=e instanceof Error?e.message:String(e),o=e instanceof Error?e.name:"UnknownError",s={error:n,errorName:o,errorType:"UNKNOWN",isNetworkError:!1,isAuthError:!1,isConfigurationError:!1,isModelError:!1,isRegionalError:!1,specificIssue:"Unknown error occurred",errorStack:e instanceof Error?e.stack:void 0};return n.includes("ETIMEDOUT")||n.includes("ECONNREFUSED")||n.includes("ENOTFOUND")||n.includes("timeout")?(s.errorType="NETWORK",s.isNetworkError=!0,s.specificIssue="Network connectivity issue - cannot reach Google Cloud endpoints"):n.includes("PERMISSION_DENIED")||n.includes("401")||n.includes("403")||n.includes("Unauthorized")||n.includes("Forbidden")?(s.errorType="AUTHENTICATION",s.isAuthError=!0,s.specificIssue="Authentication failed - invalid credentials or insufficient permissions"):n.includes("NOT_FOUND")||n.includes("404")||n.includes("model")&&n.includes("not available")?(s.errorType="MODEL_AVAILABILITY",s.isModelError=!0,s.specificIssue=`Model "${t.modelName}" not available in region "${t.region}"`):n.includes("QUOTA_EXCEEDED")||n.includes("quota")||n.includes("limit")?(s.errorType="QUOTA",s.isRegionalError=!0,s.specificIssue="Quota exceeded or rate limit reached"):(n.includes("INVALID_ARGUMENT")||n.includes("BadRequest")||n.includes("400"))&&(s.errorType="CONFIGURATION",s.isConfigurationError=!0,s.specificIssue="Invalid configuration or request parameters"),s}getAnthropicTroubleshootingSteps(e){let t=[];switch(e.errorType){case"NETWORK":t.push("\u{1F310} Network Troubleshooting:","1. Check internet connectivity","2. Verify proxy configuration if behind corporate firewall","3. Ensure firewall allows HTTPS to *.googleapis.com","4. Try different network or wait for network issues to resolve","5. Check if using VPN that might block Google Cloud endpoints");break;case"AUTHENTICATION":t.push("\u{1F510} Authentication Troubleshooting:","1. Verify GOOGLE_APPLICATION_CREDENTIALS file exists and is valid","2. Check individual credentials: GOOGLE_AUTH_CLIENT_EMAIL, GOOGLE_AUTH_PRIVATE_KEY",'3. Ensure service account has "Vertex AI User" role',"4. Verify project ID matches the one in your credentials","5. Enable Vertex AI API: https://console.cloud.google.com/apis/library/aiplatform.googleapis.com");break;case"MODEL_AVAILABILITY":t.push("\u{1F916} Model Availability Troubleshooting:","1. Verify model name format and spelling","2. Check if Anthropic integration is enabled in your project","3. Enable Claude models: https://console.cloud.google.com/vertex-ai/publishers/anthropic","4. Try a different region if current region lacks Anthropic support","5. Accept Anthropic terms and conditions in Google Cloud Console");break;case"QUOTA":t.push("\u{1F4CA} Quota Troubleshooting:","1. Check Vertex AI quotas in Google Cloud Console","2. Request quota increase if needed","3. Try a different model with lower resource requirements","4. Wait before retrying if rate limited","5. Consider using a different region with available quota");break;case"CONFIGURATION":t.push("\u2699\uFE0F Configuration Troubleshooting:","1. Verify all required environment variables are set","2. Check project ID and region format","3. Ensure model name follows correct format","4. Verify request parameters are within model limits","5. Update @ai-sdk/google-vertex to latest version");break;default:t.push("\u{1F527} General Troubleshooting:","1. Update @ai-sdk/google-vertex to latest version","2. Check Google Cloud service status","3. Verify all authentication and configuration","4. Try with a simple Claude model like claude-3-haiku-20240307","5. Enable debug logging with NEUROLINK_DEBUG=true")}return t}registerTool(e,t,n,o){let s="GoogleVertexProvider.registerTool";try{let i={description:n,parameters:t,execute:async a=>{try{let l={...a,__context:this.toolContext};return await o(l)}catch(l){throw g.error(`${s}: Tool execution error`,{toolName:e,error:l instanceof Error?l.message:String(l)}),l}}};this.registeredTools.set(e,i),g.debug(`${s}: Tool registered`,{toolName:e,modelName:this.modelName})}catch(i){throw g.error(`${s}: Tool registration error`,{toolName:e,error:i instanceof Error?i.message:String(i)}),i}}setToolContext(e){this.toolContext={...this.toolContext,...e},g.debug("GoogleVertexProvider.setToolContext: Tool context set",{contextKeys:Object.keys(e)})}getToolContext(){return{...this.toolContext}}setToolExecutor(e){this.toolExecutor=e,g.debug("GoogleVertexProvider.setToolExecutor: Tool executor set",{hasExecutor:typeof e=="function"})}static clearCaches(){r.modelConfigCache.clear(),r.maxTokensCache.clear(),r.modelConfigCacheTime=0,r.maxTokensCacheTime=0,g.debug("GoogleVertexProvider: All caches cleared",{clearedAt:Date.now()})}static getCacheStats(){let e=Date.now();return{modelConfigCacheSize:r.modelConfigCache.size,maxTokensCacheSize:r.maxTokensCache.size,maxCacheSize:r.MAX_CACHE_SIZE,cacheAge:{modelConfig:e-r.modelConfigCacheTime,maxTokens:e-r.maxTokensCacheTime}}}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,"vertex")}async getImageGenerationAccessToken(){let{GoogleAuth:o}=await Promise.resolve().then(()=>(dR(),HZ)),s=process.env.GOOGLE_APPLICATION_CREDENTIALS_NEUROLINK||process.env.GOOGLE_APPLICATION_CREDENTIALS;for(let i=1;i<=3;i++){let a=new AbortController,l=setTimeout(()=>{a.abort(),g.warn(`[GoogleVertexProvider] Auth token refresh exceeded 15000ms timeout (attempt ${i}/3)`)},15e3);try{let p=await(await new o({...s&&{keyFilename:s},scopes:["https://www.googleapis.com/auth/cloud-platform"]}).getClient()).getAccessToken();if(!p.token)throw new kn("Failed to obtain access token from Google Auth",this.providerName);return p.token}catch(u){let d=u;if(!(a.signal.aborted||d?.code==="ECONNRESET"||d?.code==="ETIMEDOUT"||d?.code==="ENOTFOUND"||d?.message?.includes("socket hang up")||d?.message?.includes("network socket disconnected"))||i===3)throw u;let m=500*2**(i-1);g.warn(`[GoogleVertexProvider] Auth token transient error (${d?.code||d?.message}), retrying in ${m}ms (attempt ${i}/3)`),await new Promise(f=>setTimeout(f,m))}finally{clearTimeout(l)}}throw new kn("Failed to obtain access token after retries",this.providerName)}async buildImageGenerationParts(e,t,n){let o=[];e&&o.push({text:e});for(let s of t){let i;if(Buffer.isBuffer(s))i=s.toString("base64");else if(typeof s=="string")if(s.startsWith("/")||/^[a-zA-Z]:\\/.test(s)||s.startsWith("./")||s.startsWith("../")||s.startsWith("..\\")||s.startsWith(".\\")){let l=jc.resolve(s),u=process.cwd();if(!l.startsWith(u+jc.sep)&&l!==u)throw new ur("PDF file path must be within current directory for security",this.providerName);if(!xo.existsSync(l))throw new ur(`PDF file not found: ${l}`,this.providerName);i=xo.readFileSync(l).toString("base64")}else i=s;else{g.warn("Invalid PDF file format, skipping",{type:typeof s});continue}o.push({inlineData:{mimeType:"application/pdf",data:i}}),g.debug("Added PDF file to request",{dataLength:i.length})}for(let s=0;s<n.length;s++){let i=n[s],a,l;if(Buffer.isBuffer(i))a=i.toString("base64"),l=this.detectImageType(i);else if(typeof i=="string")if(i.startsWith("/")||/^[a-zA-Z]:\\/.test(i)||i.startsWith("./")||i.startsWith("../")||i.startsWith("..\\")||i.startsWith(".\\")){let d=jc.resolve(i);if(!xo.existsSync(d)){g.warn(`Image file not found: ${d}, skipping`);continue}let p=xo.readFileSync(d);a=p.toString("base64"),l=this.detectImageType(p)}else if(i.startsWith("data:")){let d=i.match(/^data:([^;]+);base64,(.+)$/);if(d)l=d[1],a=d[2];else{g.warn("Invalid data URL format, skipping image",{index:s});continue}}else if(i.startsWith("http://")||i.startsWith("https://"))try{let p=new URL(i).hostname;if(["localhost","127.0.0.1","0.0.0.0","[::1]"].some(v=>p===v)||/^(10\.|172\.(1[6-9]|2\d|3[01])\.|192\.168\.)/.test(p)){g.warn(`[GoogleVertexProvider] Blocked fetch to private/local URL: ${p}`,{index:s});continue}try{let{resolve4:v,resolve6:b}=RB.promises,w=[];try{w.push(...await v(p))}catch{}try{w.push(...await b(p))}catch{}if(w.length>0&&w.every(T=>w7t(T))){g.warn(`[GoogleVertexProvider] Blocked fetch: hostname ${p} resolves to private/loopback address`,{index:s,addresses:w});continue}}catch(v){g.warn(`[GoogleVertexProvider] DNS resolution failed for ${p}, blocking fetch`,{index:s,error:v instanceof Error?v.message:String(v)});continue}let f=await fetch(i,{signal:AbortSignal.timeout(15e3)});if(!f.ok){g.warn(`Failed to fetch image URL (${f.status}), skipping`,{index:s,url:i});continue}let h=f.headers.get("content-length");if(h&&Number(h)>OB){g.warn(`[GoogleVertexProvider] Image URL exceeds ${OB} byte limit (Content-Length: ${h}), skipping`,{index:s,url:i});continue}let y=Buffer.from(await f.arrayBuffer());if(y.byteLength>OB){g.warn(`[GoogleVertexProvider] Downloaded image exceeds ${OB} byte limit (${y.byteLength} bytes), skipping`,{index:s,url:i});continue}a=y.toString("base64"),l=this.detectImageType(y)}catch(d){g.warn(`Failed to download image from URL, skipping: ${d instanceof Error?d.message:String(d)}`,{index:s,url:i});continue}else{a=i;let d=Buffer.from(a,"base64");l=this.detectImageType(d)}else{g.warn("Invalid image format, skipping",{type:typeof i,index:s});continue}o.push({inlineData:{mimeType:l,data:a}}),g.debug("Added image to request",{index:s,mimeType:l,dataLength:a.length})}return o}parseImageGenerationResponse(e,t){let n=e.candidates?.[0];if(!n?.content?.parts)throw new ur("No content parts in Vertex AI response",this.providerName);let o=n.content.parts.find(a=>(a.inlineData||a.inline_data)&&(a.inlineData&&a.inlineData.mimeType||a.inline_data&&a.inline_data.mime_type)&&(a.inlineData&&a.inlineData.mimeType?.startsWith("image/")||a.inline_data&&a.inline_data.mime_type?.startsWith("image/")));if(!o){let a=n.content.parts.map(l=>typeof l.text=="string"?l.text:"").filter(l=>l.trim().length>0);if(a.length>0)return{textFallback:a.join("")};throw new ur(`Image generation completed but no image data was returned. Model: ${t}`,this.providerName)}let s=o.inlineData?.data||o.inline_data?.data,i=o.inlineData?.mimeType||o.inline_data?.mime_type||"image/png";if(!s)throw new ur("Image part found but no data available",this.providerName);return{imageData:s,mimeType:i}}async executeImageGeneration(e){let t=e.prompt||e.input?.text||"",n=e.input?.pdfFiles||[],o=e.input?.images||[],s=n.length>0,i=o.length>0;if(!t.trim()&&!s&&!i)throw new ur("Image generation requires either a prompt, PDF file, or image as input",this.providerName);let a=e.model||this.modelName||"gemini-3-pro-image-preview";s&&!a.includes("gemini-3-pro-image")&&(a="gemini-3-pro-image-preview");let l=process.env.GOOGLE_VERTEX_IMAGE_LOCATION||"global",d=Jfe.some(m=>a.includes(m)||m.includes(a))?l:this.location,p=Date.now();g.info("\u{1F3A8} Starting Vertex AI image generation (REST API)",{model:a,prompt:t.substring(0,100),provider:this.providerName,projectId:this.projectId,location:d,hasPdfInput:s,pdfCount:n.length,hasImageInput:i,imageCount:o.length});try{let m=await this.getImageGenerationAccessToken(),h={contents:[{role:"user",parts:await this.buildImageGenerationParts(t,n,o)}],generation_config:{response_modalities:["TEXT","IMAGE"],temperature:e.temperature||.7,candidate_count:1}},y;d==="global"?y=`https://aiplatform.googleapis.com/v1/projects/${this.projectId}/locations/global/publishers/google/models/${a}:generateContent`:y=`https://${d}-aiplatform.googleapis.com/v1/projects/${this.projectId}/locations/${d}/publishers/google/models/${a}:generateContent`,g.debug("Making REST API call to Vertex AI",{url:y,model:a,hasAccessToken:!0});let v=12e4,b=fetch(y,{method:"POST",headers:{Authorization:`Bearer ${m}`,"Content-Type":"application/json"},body:JSON.stringify(h)}),w=new Promise((E,M)=>{setTimeout(()=>{M(new zr(`Vertex AI image generation timed out after ${v}ms`,v))},v)}),T=await Promise.race([b,w]);if(!T.ok){let E=await T.text();throw new ur(`Vertex AI API error (${T.status}): ${E}`,this.providerName)}let _=await T.json(),k=this.parseImageGenerationResponse(_,a);if("textFallback"in k){g.info("Dual-mode image model returned text; returning as text result",{model:a,textLength:k.textFallback.length,responseTime:Date.now()-p});let E=this.estimateTokenCount(t),M=this.estimateTokenCount(k.textFallback),O={content:k.textFallback,provider:this.providerName,model:a,usage:{input:E,output:M,total:E+M}};return await this.enhanceResult(O,e,p)}let{imageData:R,mimeType:I}=k;g.info("Image generation successful",{model:a,mimeType:I,dataLength:R.length,responseTime:Date.now()-p});let C={content:`Generated image using ${a} (${I})`,imageOutput:{base64:R},provider:this.providerName,model:a,usage:{input:this.estimateTokenCount(t),output:0,total:this.estimateTokenCount(t)}};return await this.enhanceResult(C,e,p)}catch(m){throw g.error("Image generation failed",{error:m instanceof Error?m.message:String(m),model:a,prompt:t.substring(0,100)}),this.handleProviderError(m)}}async embed(e,t){let n=t||"text-embedding-004";g.debug("Generating embedding",{provider:this.providerName,model:n,textLength:e.length});try{let o=await NB(this.location,this.credentials),i=NA(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()||"text-embedding-004";g.debug("Generating batch embeddings",{provider:this.providerName,model:n,count:e.length});try{let o=await NB(this.location,this.credentials),i=NA(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)}}getModelSuggestions(e){let t={google:["gemini-3.1-pro-preview","gemini-3.1-flash-lite-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash","gemini-2.5-flash-lite","gemini-2.0-flash-001","gemini-2.0-flash-lite","gemini-1.5-pro","gemini-1.5-flash"],claude:["claude-sonnet-4-5@20250929","claude-sonnet-4@20250514","claude-opus-4@20250514","claude-3-5-sonnet-20241022","claude-3-5-haiku-20241022","claude-3-sonnet-20240229","claude-3-haiku-20240307","claude-3-opus-20240229"]},n=`
|
|
1915
1915
|
\u{1F916} Google Models (always available):
|
|
1916
1916
|
`;return t.google.forEach(o=>{n+=` \u2022 ${o}
|
|
1917
1917
|
`}),n+=`
|