@juspay/neurolink 12.14.9 → 12.14.10

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.
@@ -661,7 +661,7 @@ Warning: ${t.alerts.high} high-severity alerts detected.
661
661
 
662
662
  Generate a new, complete response that incorporates this feedback.
663
663
  `}}}}),Xl,xq=S({"src/lib/evaluation/index.ts"(){"use strict";AG(),VG(),iwr(),vwr(),Awr(),ES(),Fwr(),kq(),zwr(),Gwr(),qwr(),VG(),jwr(),Xl=class{contextBuilder;config;ragasEvaluator;constructor(e={}){this.config=e,this.contextBuilder=new qR,this.ragasEvaluator=new JR(this.config.evaluationModel,this.config.provider,this.config.threshold,this.config.promptGenerator)}async evaluate(e,t,r,n){const o=this.config.evaluationStrategy||"ragas",s=this.config.customEvaluator;switch(o){case"ragas":{const{evaluationResult:i,evalContext:a}=await this.evaluateWithRAGAS(e,t);return FPe(a,i,r,n.offTopicThreshold,n.highSeverityThreshold)}case"custom":{if(s){const{evaluationResult:i,evalContext:a}=await s(e,t);return FPe(a,i,r,n.offTopicThreshold,n.highSeverityThreshold)}throw new Error("Custom evaluator function not provided in config.")}default:throw new Error(`Unsupported evaluation strategy: ${o} `)}}async evaluateWithRAGAS(e,t){const r=this.contextBuilder.buildContext(e,t);return{evaluationResult:await this.ragasEvaluator.evaluate(r),evalContext:r}}}}});function MNe(e={}){const t={id:"autoEvaluation",name:"Auto Evaluation",description:"Automatically evaluates response quality and retries if needed.",priority:90,defaultEnabled:!1};return p.debug("Auto-Evaluation Middleware Config:",e),{...{specificationVersion:"v3",wrapGenerate:async({doGenerate:n,params:o})=>{const s=o,i=await n(),a=i.reasoning,c=i.content.filter(f=>f.type==="text").map(f=>f.text),l=i.content.filter(f=>f.type==="tool-call"),u=i.usage.inputTokens.total??0,d=i.usage.outputTokens.total??0,m={content:c.join(""),finishReason:i.finishReason.unified,reasoning:typeof a=="string"?a:Array.isArray(a)?a.map(f=>typeof f=="string"?f:f?.text??JSON.stringify(f)).join(`
664
- `):void 0,usage:{input:u,output:d,total:u+d},toolCalls:l.length>0?l.map(f=>{let g;try{g=JSON.parse(f.input)}catch(y){p.warn(`Failed to parse tool call args for tool ${f.toolName}:`,y),g={raw:f.input}}return{toolCallId:f.toolCallId,toolName:f.toolName,args:g}}):void 0};if(e.blocking!==!1){const f=await Iq(e,s,m);return{...i,evaluationResult:f}}else return Iq(e,s,m).catch(f=>{p.error("Non-blocking auto-evaluation error:",f)}),i},wrapStream:async({doStream:n,params:o})=>{const s=o,i=await n(),[a,c]=i.stream.tee();return Hwr(e,s,c).catch(l=>{p.error("Non-blocking stream auto-evaluation error:",l)}),{...i,stream:a}}},metadata:t}}async function Iq(e,t,r){const n=e.blocking!==!1,o=e.threshold??(Number(process.env.NEUROLINK_EVALUATION_THRESHOLD)||7);try{const i=await new Xl({threshold:o,provider:e.provider,promptGenerator:e.promptGenerator,evaluationModel:e.evaluationModel}).evaluate(t,r,o,e);e.onEvaluationComplete&&await e.onEvaluationComplete(i)}catch(s){if(p.error("Error during auto-evaluation:",s),n)throw s}}async function Hwr(e,t,r){let n="",o;const s=[],i=r.getReader();try{for(;;){const{done:l,value:u}=await i.read();if(l)break;switch(u.type){case"text-delta":n+=u.delta;break;case"tool-call":{let d;try{d=JSON.parse(u.input)}catch(m){p.warn(`Failed to parse tool call args for tool ${u.toolName}:`,m),d={raw:u.input}}s.push({toolCallId:u.toolCallId,toolName:u.toolName,args:d})}break;case"finish":{const d=u.usage.inputTokens.total??0,m=u.usage.outputTokens.total??0;o={input:d,output:m,total:d+m}}break}}}finally{i.releaseLock()}const a={content:n,usage:o,toolCalls:s.length>0?s:void 0};e.blocking&&p.warn("Auto-evaluation 'blocking' mode is not supported for streaming responses. Evaluation will proceed non-blockingly.");const c={...e,blocking:!1};await Iq(c,t,a)}var Vwr=S({"src/lib/middleware/builtin/autoEvaluation.ts"(){"use strict";xq(),U()}});function PNe(e){try{Object.defineProperty(e,h1,{value:!0,enumerable:!1,writable:!1,configurable:!1})}catch{}}function _S(e){return e===null||typeof e!="object"?!1:e[h1]===!0}function p1(e){e===null||typeof e!="object"||e[h1]!==!0&&PNe(e)}function Rq(e,t,r){if(typeof e=="function"&&!_S(t)){t!==null&&typeof t=="object"&&PNe(t);try{const n=e(r);Promise.resolve(n).catch(()=>{})}catch{}}}var h1,Mq=S({"src/lib/utils/lifecycleCallbacks.ts"(){"use strict";h1=Symbol.for("neurolink.onErrorFired")}});function Pq(e){if(e instanceof Error)return e;if(typeof e=="object"&&e!==null){const t=e,r=typeof t.message=="string"?t.message:String(e);return Object.assign(new Error(r),t)}return new Error(String(e))}function Dq(e={}){return{...{specificationVersion:"v3",wrapGenerate:async({doGenerate:n})=>{const o=Date.now();try{const s=await n();if(e.onFinish)try{const i=s.content?.map(c=>c.type==="text"?c.text:"").join("")??"",a=e.onFinish({text:i,usage:s.usage?{promptTokens:s.usage.inputTokens?.total??0,completionTokens:s.usage.outputTokens?.total??0}:void 0,duration:Date.now()-o,finishReason:String(s.finishReason??"")});Promise.resolve(a).catch(c=>{p.warn("[LifecycleMiddleware] onFinish callback error:",c)})}catch(i){p.warn("[LifecycleMiddleware] onFinish callback error:",i)}return s}catch(s){const i=Pq(s);throw Rq(e.onError,i,{error:i,duration:Date.now()-o,recoverable:JI(i)}),i}},wrapStream:async({doStream:n})=>{const o=Date.now();try{const s=await n();if(!e.onChunk&&!e.onFinish&&!e.onError)return s;let i=0,a="";const c=new TransformStream({transform(l,u){try{if(l.type==="text-delta"&&(a+=l.textDelta),e.onChunk&&l.type)try{const d=e.onChunk({type:l.type,textDelta:l.type==="text-delta"?l.textDelta:void 0,sequenceNumber:i++});Promise.resolve(d).catch(m=>{p.warn("[LifecycleMiddleware] onChunk callback error:",m)})}catch(d){p.warn("[LifecycleMiddleware] onChunk callback error:",d)}u.enqueue(l)}catch(d){const m=Pq(d);throw Rq(e.onError,m,{error:m,duration:Date.now()-o,recoverable:JI(m)}),m}},flush(){if(e.onFinish)try{const l=e.onFinish({text:a,duration:Date.now()-o});Promise.resolve(l).catch(u=>{p.warn("[LifecycleMiddleware] onFinish callback error:",u)})}catch(l){p.warn("[LifecycleMiddleware] onFinish callback error:",l)}}});return{...s,stream:s.stream.pipeThrough(c)}}catch(s){const i=Pq(s);throw Rq(e.onError,i,{error:i,duration:Date.now()-o,recoverable:JI(i)}),i}}},metadata:{id:"lifecycle",name:"Lifecycle Callbacks",description:"Provides onFinish, onError, and onChunk callbacks for generation and streaming lifecycle events",priority:110,defaultEnabled:!1}}}var DNe=S({"src/lib/middleware/builtin/lifecycle.ts"(){"use strict";U(),tt(),Mq()}}),ONe,NNe,Wwr=S({"src/lib/middleware/wrapLanguageModel.ts"(){"use strict";ONe=(e,t)=>{const r=async(n,o)=>t.transformParams?await t.transformParams({type:o,params:n,model:e}):n;return{specificationVersion:"v3",provider:t.overrideProvider?.({model:e})??e.provider,modelId:t.overrideModelId?.({model:e})??e.modelId,supportedUrls:t.overrideSupportedUrls?.({model:e})??e.supportedUrls,async doGenerate(n){const o=await r(n,"generate"),s=()=>e.doGenerate(o),i=()=>e.doStream(o);return t.wrapGenerate?await t.wrapGenerate({doGenerate:s,doStream:i,params:o,model:e}):await s()},async doStream(n){const o=await r(n,"stream"),s=()=>e.doGenerate(o),i=()=>e.doStream(o);return t.wrapStream?await t.wrapStream({doGenerate:s,doStream:i,params:o,model:e}):await i()}}},NNe=({model:e,middleware:t})=>(Array.isArray(t)?[...t]:[t]).reverse().reduce((r,n)=>ONe(r,n),e)}}),Oq,LNe=S({"src/lib/middleware/factory.ts"(){"use strict";Fvr(),yxe(),Zvr(),Vwr(),DNe(),U(),Wwr(),Oq=class{registry;presets=new Map;options;constructor(e={}){this.options=e,this.registry=new gxe,this.initialize(e)}initialize(e){const t={analytics:bG,guardrails:bxe,autoEvaluation:MNe,lifecycle:Dq};if(this.registerPreset({name:"default",description:"Default preset with analytics enabled.",config:{analytics:{enabled:!0}}}),this.registerPreset({name:"all",description:"Enables all available middleware.",config:{analytics:{enabled:!0},guardrails:{enabled:!0}}}),this.registerPreset({name:"security",description:"Focuses on security with guardrails.",config:{guardrails:{enabled:!0}}}),p.debug("Initializing MiddlewareFactory",{options:e}),e.middleware){p.debug("Registering custom middleware");for(const r of e.middleware)this.register(r)}for(const r in t)if(!this.registry.has(r)){const n=t[r],o=e.middlewareConfig?.[r]?.config;p.debug(`Registering built-in middleware '${r}'`,o),this.registry.register(n(o))}}registerPreset(e,t=!1){if(this.presets.has(e.name)&&!t)throw new Error(`Preset with name '${e.name}' already exists. Use replace: true to override.`);this.presets.set(e.name,e)}register(e,t){this.registry.register(e,t)}applyMiddleware(e,t,r={}){const n=Date.now();try{const o={...this.options,...r,middlewareConfig:{...this.options.middlewareConfig,...r.middlewareConfig}},s=this.buildMiddlewareConfig(o);for(const[u,d]of Object.entries(s))if(p.debug(`Configuring middleware '${u}'`,{config:d}),d.enabled&&this.registry.has(u)){const m=this.getCreator(u);m&&this.registry.register(m(d.config),{replace:!0})}const i=this.registry.buildChain(t,s);if(i.length===0)return p.debug("No middleware to apply",{provider:t.provider}),e;p.debug(`Applying ${i.length} middleware to model`,{provider:t.provider,model:t.model,middlewareCount:i.length});const c=NNe({model:e,middleware:i}),l=Date.now()-n;return p.debug("Middleware applied successfully",{provider:t.provider,middlewareCount:i.length,processingTime:l}),c}catch(o){return p.error("Failed to apply middleware",{provider:t.provider,error:o instanceof Error?o.message:String(o)}),e}}getCreator(e){const t={analytics:bG,guardrails:bxe,autoEvaluation:MNe,lifecycle:Dq};return p.debug("Getting creator for middleware ID:",e),t[e]}buildMiddlewareConfig(e){const t={},r=this.registry.list();for(const o of r)t[o.metadata.id]={enabled:!1,config:{}};let n=e.preset;if(!n&&(!e.middlewareConfig||Object.keys(e.middlewareConfig).length===0)&&(!e.enabledMiddleware||e.enabledMiddleware.length===0)&&(n="default"),n){const o=this.getPresetConfig(n);if(o)for(const[s,i]of Object.entries(o))t[s]&&(t[s]={...t[s],...i})}if(e.middlewareConfig)for(const[o,s]of Object.entries(e.middlewareConfig))t[o]={...t[o],...s};if(e.enabledMiddleware)for(const o of e.enabledMiddleware)t[o]&&(t[o].enabled=!0);if(e.disabledMiddleware)for(const o of e.disabledMiddleware)t[o]&&(t[o].enabled=!1);return t}getPresetConfig(e){const t=this.presets.get(e);return t?t.config:null}createContext(e,t,r={},n){return{provider:e,model:t,options:r,session:n,metadata:{timestamp:Date.now(),requestId:`${e}-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}}}validateConfig(e){const t=[],r=[];for(const[n,o]of Object.entries(e)){if(!this.registry.has(n)){t.push(`Middleware '${n}' is not registered`);continue}o.enabled!==void 0&&typeof o.enabled!="boolean"&&t.push(`Middleware '${n}' enabled property must be boolean`),o.config&&typeof o.config!="object"&&t.push(`Middleware '${n}' config property must be an object`),o.conditions?.providers&&o.conditions.providers.length===0&&r.push(`Middleware '${n}' has empty providers condition`)}return{isValid:t.length===0,errors:t,warnings:r}}getAvailablePresets(){return Array.from(this.presets.values()).map(e=>({name:e.name,description:e.description,middleware:Object.keys(e.config)}))}getChainStats(e,t){const r=this.registry.buildChain(e,t),n=this.registry.getAggregatedStats(),o={};let s=0,i=0;for(const[a,c]of Object.entries(n))t[a]?.enabled&&(o[a]={applied:!0,executionTime:c.averageExecutionTime},s+=c.averageExecutionTime,i++);return{totalMiddleware:r.length,appliedMiddleware:i,totalExecutionTime:s,results:o}}createModelFactory(e,t={}){return async(r,n={})=>{const o=await e(),s={...t,...n,middlewareConfig:{...t.middlewareConfig,...n.middlewareConfig}};return this.applyMiddleware(o,r,s)}}}}}),f1,Nq=S({"src/lib/models/manifests/anthropic.ts"(){"use strict";f1={defaultContextWindow:2e5,familyRules:[{pattern:/claude-(?:opus|sonnet|haiku)-(?:[4-9]|\d{2,})/i,patch:{vision:!0}},{pattern:/claude-(?:fable|mythos)-\d/i,patch:{vision:!0}}],models:{"claude-sonnet-5":{aliases:["sonnet-5","claude-sonnet"],displayName:"Claude Sonnet 5",contextWindow:1e6,maxOutputTokens:64e3,vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,samplingParams:!1},"claude-opus-4-6":{aliases:["opus-4.6","claude-opus-latest"],displayName:"Claude Opus 4.6",contextWindow:1e6,maxOutputTokens:32e3,pricingPerMTok:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"claude-sonnet-4-6":{aliases:["sonnet-4.6"],displayName:"Claude Sonnet 4.6",contextWindow:1e6,maxOutputTokens:64e3,pricingPerMTok:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"claude-opus-4-5-20251101":{aliases:["claude-opus-4-5","opus-4.5"],displayName:"Claude Opus 4.5",contextWindow:2e5,maxOutputTokens:32e3,pricingPerMTok:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"medium",quality:"high",accuracy:"high"},useCases:{coding:10,creative:10,analysis:10,conversation:9,reasoning:10,translation:9,summarization:9},category:"reasoning"}},"claude-sonnet-4-5-20250929":{aliases:["claude-sonnet-4-5","sonnet-4.5"],displayName:"Claude Sonnet 4.5",contextWindow:2e5,maxOutputTokens:64e3,pricingPerMTok:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"medium",quality:"high",accuracy:"high"},useCases:{coding:10,creative:9,analysis:9,conversation:9,reasoning:10,translation:8,summarization:8},category:"coding"}},"claude-haiku-4-5-20251001":{aliases:["claude-haiku-4-5","haiku-4.5","claude-4-5-haiku"],displayName:"Claude 4.5 Haiku",contextWindow:2e5,maxOutputTokens:64e3,pricingPerMTok:{input:1,output:5,cacheRead:.1,cacheWrite:1.25},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"fast",quality:"high",accuracy:"high"},useCases:{coding:8,creative:8,analysis:8,conversation:9,reasoning:8,translation:8,summarization:9},category:"general"}},"claude-opus-4-1-20250805":{aliases:["claude-opus-4-1","opus-4.1"],displayName:"Claude Opus 4.1",contextWindow:2e5,maxOutputTokens:32e3,pricingPerMTok:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"claude-opus-4-20250514":{aliases:["claude-opus-4"],displayName:"Claude Opus 4",contextWindow:2e5,maxOutputTokens:32e3,pricingPerMTok:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"claude-sonnet-4-20250514":{aliases:["claude-sonnet-4"],displayName:"Claude Sonnet 4",contextWindow:2e5,maxOutputTokens:64e3,pricingPerMTok:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"claude-3-7-sonnet-20250219":{aliases:["claude-3-7-sonnet"],displayName:"Claude 3.7 Sonnet",contextWindow:2e5,maxOutputTokens:64e3,pricingPerMTok:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"claude-3-5-sonnet-20241022":{aliases:["claude-3-5-sonnet"],displayName:"Claude 3.5 Sonnet",contextWindow:2e5,maxOutputTokens:8192,pricingPerMTok:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},vision:!0,functionCalling:!0,reasoning:!1,jsonMode:!0,curated:{performance:{speed:"medium",quality:"high",accuracy:"high"},useCases:{coding:10,creative:9,analysis:9,conversation:9,reasoning:10,translation:8,summarization:8},category:"coding"}},"claude-3-5-haiku-20241022":{aliases:["claude-3-5-haiku"],displayName:"Claude 3.5 Haiku",contextWindow:2e5,maxOutputTokens:8192,pricingPerMTok:{input:.8,output:4,cacheRead:.08,cacheWrite:1},vision:!1,functionCalling:!0,reasoning:!1,jsonMode:!0,curated:{performance:{speed:"fast",quality:"high",accuracy:"high"},useCases:{coding:8,creative:7,analysis:8,conversation:8,reasoning:8,translation:8,summarization:9},category:"general"}},"claude-3-opus-20240229":{aliases:["claude-3-opus"],displayName:"Claude 3 Opus",contextWindow:2e5,maxOutputTokens:4096,pricingPerMTok:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},vision:!0,functionCalling:!0,reasoning:!1,jsonMode:!0},"claude-3-sonnet-20240229":{aliases:["claude-3-sonnet"],displayName:"Claude 3 Sonnet",contextWindow:2e5,maxOutputTokens:4096,pricingPerMTok:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},vision:!0,functionCalling:!0,reasoning:!1,jsonMode:!0},"claude-3-haiku-20240307":{aliases:["claude-3-haiku"],displayName:"Claude 3 Haiku",contextWindow:2e5,maxOutputTokens:4096,pricingPerMTok:{input:.25,output:1.25,cacheRead:.025,cacheWrite:.3125},vision:!0,functionCalling:!0,reasoning:!1,jsonMode:!0}}}}}),Lq,FNe=S({"src/lib/models/manifests/openai.ts"(){"use strict";Lq={defaultContextWindow:128e3,models:{"gpt-4o":{aliases:["gpt4o","gpt-4-omni","openai-flagship"],displayName:"GPT-4 Omni",contextWindow:128e3,maxOutputTokens:4096,pricingPerMTok:{input:2.5,output:10,cacheRead:.625},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"medium",quality:"high",accuracy:"high"},useCases:{coding:9,creative:8,analysis:9,conversation:9,reasoning:9,translation:8,summarization:8},category:"general"}},"gpt-4o-mini":{aliases:["gpt4o-mini","gpt-4-mini","fastest","cheap"],displayName:"GPT-4 Omni Mini",contextWindow:128e3,maxOutputTokens:16384,pricingPerMTok:{input:.15,output:.6,cacheRead:.0375},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"fast",quality:"high",accuracy:"high"},useCases:{coding:8,creative:7,analysis:8,conversation:8,reasoning:8,translation:8,summarization:9},category:"general"}},"gpt-5":{aliases:["gpt5","gpt-5-flagship","openai-latest"],displayName:"GPT-5",contextWindow:4e5,maxOutputTokens:32768,pricingPerMTok:{input:1.25,output:10,cacheRead:.3125},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"medium",quality:"high",accuracy:"high"},useCases:{coding:10,creative:10,analysis:10,conversation:10,reasoning:10,translation:9,summarization:9},category:"reasoning"}},"gpt-5-mini":{aliases:["gpt5-mini","gpt-5-fast"],displayName:"GPT-5 Mini",contextWindow:4e5,maxOutputTokens:16384,pricingPerMTok:{input:.25,output:2,cacheRead:.0625},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"fast",quality:"high",accuracy:"high"},useCases:{coding:8,creative:8,analysis:8,conversation:9,reasoning:8,translation:8,summarization:9},category:"general"}},o3:{aliases:["o3-reasoning","o3-thinking"],displayName:"O3",contextWindow:2e5,maxOutputTokens:1e5,pricingPerMTok:{input:2,output:8,cacheRead:.5},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"slow",quality:"high",accuracy:"high"},useCases:{coding:10,creative:8,analysis:10,conversation:7,reasoning:10,translation:7,summarization:8},category:"reasoning"}},"o3-mini":{aliases:["o3-mini-reasoning"],displayName:"O3 Mini",contextWindow:2e5,maxOutputTokens:65536,pricingPerMTok:{input:1.1,output:4.4,cacheRead:.275},vision:!1,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"medium",quality:"high",accuracy:"high"},useCases:{coding:9,creative:6,analysis:9,conversation:7,reasoning:9,translation:6,summarization:7},category:"reasoning"}},"gpt-5-nano":{aliases:["gpt5-nano","gpt-5-cheapest"],displayName:"GPT-5 Nano",contextWindow:4e5,maxOutputTokens:128e3,pricingPerMTok:{input:.05,output:.4,cacheRead:.0125},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"fast",quality:"medium",accuracy:"medium"},useCases:{coding:6,creative:6,analysis:6,conversation:8,reasoning:6,translation:7,summarization:8},category:"general"}},"gpt-5.2":{aliases:["gpt52","gpt-5.2-thinking","openai-latest-reasoning"],displayName:"GPT-5.2 Thinking",contextWindow:4e5,maxOutputTokens:64e3,pricingPerMTok:{input:1.75,output:14,cacheRead:.4375},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"medium",quality:"high",accuracy:"high"},useCases:{coding:10,creative:10,analysis:10,conversation:9,reasoning:10,translation:9,summarization:9},category:"reasoning"}},"gpt-5.2-chat-latest":{aliases:["gpt52-chat","gpt-5.2-instant","gpt52-fast"],displayName:"GPT-5.2 Instant",contextWindow:128e3,maxOutputTokens:32e3,pricingPerMTok:{input:1.75,output:14,cacheRead:.4375},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"fast",quality:"high",accuracy:"high"},useCases:{coding:9,creative:9,analysis:9,conversation:10,reasoning:9,translation:9,summarization:9},category:"general"}},"gpt-5.2-pro":{aliases:["gpt52-pro","gpt-5.2-professional","openai-science"],displayName:"GPT-5.2 Pro",contextWindow:4e5,maxOutputTokens:128e3,pricingPerMTok:{input:1.75,output:14,cacheRead:.4375},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"slow",quality:"high",accuracy:"high"},useCases:{coding:10,creative:9,analysis:10,conversation:8,reasoning:10,translation:9,summarization:9},category:"reasoning"}},"gpt-4.1":{aliases:["gpt-4.1","gpt41","million-context"],displayName:"GPT-4.1",contextWindow:1047576,maxOutputTokens:128e3,pricingPerMTok:{input:2,output:8,cacheRead:.5},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"medium",quality:"high",accuracy:"high"},useCases:{coding:10,creative:8,analysis:9,conversation:8,reasoning:9,translation:8,summarization:9},category:"coding"}},"gpt-4.1-mini":{aliases:["gpt-4.1-mini","gpt41-mini"],displayName:"GPT-4.1 Mini",contextWindow:1047576,maxOutputTokens:128e3,pricingPerMTok:{input:.4,output:1.6,cacheRead:.1},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"fast",quality:"high",accuracy:"high"},useCases:{coding:9,creative:7,analysis:8,conversation:8,reasoning:8,translation:8,summarization:9},category:"coding"}},"gpt-4.1-nano":{aliases:["gpt-4.1-nano","gpt41-nano"],displayName:"GPT-4.1 Nano",contextWindow:1047576,maxOutputTokens:128e3,pricingPerMTok:{input:.1,output:.4,cacheRead:.025},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"fast",quality:"medium",accuracy:"medium"},useCases:{coding:7,creative:6,analysis:7,conversation:7,reasoning:7,translation:7,summarization:8},category:"coding"}},"o3-pro":{aliases:["o3-pro","o3-professional"],displayName:"O3 Pro",contextWindow:2e5,maxOutputTokens:1e5,pricingPerMTok:{input:2,output:8,cacheRead:.5},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"slow",quality:"high",accuracy:"high"},useCases:{coding:10,creative:7,analysis:10,conversation:6,reasoning:10,translation:6,summarization:7},category:"reasoning"}},"o4-mini":{aliases:["o4-mini","o4-fast"],displayName:"O4 Mini",contextWindow:2e5,maxOutputTokens:1e5,pricingPerMTok:{input:1.1,output:4.4,cacheRead:.275},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"medium",quality:"high",accuracy:"high"},useCases:{coding:9,creative:6,analysis:9,conversation:7,reasoning:10,translation:6,summarization:7},category:"reasoning"}},o1:{aliases:["o1-full","o1-premium"],displayName:"O1",contextWindow:2e5,maxOutputTokens:32768,pricingPerMTok:{input:15,output:60,cacheRead:3.75},vision:!1,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"slow",quality:"high",accuracy:"high"},useCases:{coding:10,creative:7,analysis:10,conversation:6,reasoning:10,translation:6,summarization:7},category:"reasoning"}},"o1-mini":{aliases:["o1-mini","o1-budget"],displayName:"O1 Mini",contextWindow:128e3,maxOutputTokens:65536,pricingPerMTok:{input:.55,output:2.2,cacheRead:.1375},vision:!1,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"medium",quality:"high",accuracy:"high"},useCases:{coding:8,creative:5,analysis:8,conversation:6,reasoning:8,translation:5,summarization:6},category:"reasoning"}},"gpt-4":{aliases:["gpt4","gpt-4-base"],displayName:"GPT-4",contextWindow:8192,maxOutputTokens:4096,pricingPerMTok:{input:30,output:60},vision:!1,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"slow",quality:"high",accuracy:"high"},useCases:{coding:8,creative:8,analysis:8,conversation:8,reasoning:8,translation:8,summarization:8},category:"general"}},"gpt-4-turbo":{aliases:["gpt4-turbo","gpt-4-turbo-preview"],displayName:"GPT-4 Turbo",contextWindow:128e3,maxOutputTokens:4096,pricingPerMTok:{input:10,output:30},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"medium",quality:"high",accuracy:"high"},useCases:{coding:8,creative:8,analysis:9,conversation:8,reasoning:8,translation:8,summarization:8},category:"general"}},"gpt-3.5-turbo":{aliases:["gpt35","gpt-3.5","chatgpt"],displayName:"GPT-3.5 Turbo",contextWindow:16385,maxOutputTokens:4096,pricingPerMTok:{input:.5,output:1},vision:!1,functionCalling:!0,reasoning:!1,jsonMode:!0,curated:{performance:{speed:"fast",quality:"medium",accuracy:"medium"},useCases:{coding:6,creative:6,analysis:6,conversation:7,reasoning:5,translation:7,summarization:7},category:"general"}}}}}}),Fq,$Ne=S({"src/lib/models/manifests/google-ai.ts"(){"use strict";Fq={defaultContextWindow:1048576,models:{"gemini-2.5-pro":{aliases:["gemini-pro","google-flagship","best-analysis"],displayName:"Gemini 2.5 Pro",contextWindow:2097152,maxOutputTokens:8192,pricingPerMTok:{input:1.25,output:10},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"gemini-2.5-flash":{aliases:["gemini-flash","google-fast","best-value"],displayName:"Gemini 2.5 Flash",contextWindow:1048576,maxOutputTokens:8192,pricingPerMTok:{input:.3,output:2.5},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0}}}}}),$q,UNe=S({"src/lib/models/manifests/vertex.ts"(){"use strict";$q={defaultContextWindow:1048576,models:{_default:{aliases:[],contextWindow:1048576,maxOutputTokens:64e3,vision:!1,functionCalling:!1}}}}}),Uq,BNe=S({"src/lib/models/manifests/bedrock.ts"(){"use strict";Uq={defaultContextWindow:2e5,models:{"amazon.nova-premier-v1:0":{aliases:["nova-premier","aws-flagship"],displayName:"Amazon Nova Premier",contextWindow:1e6,maxOutputTokens:25e3,vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!1},"amazon.nova-pro-v1:0":{aliases:["nova-pro","aws-balanced"],displayName:"Amazon Nova Pro",contextWindow:3e5,maxOutputTokens:5e3,vision:!0,functionCalling:!0,reasoning:!1,jsonMode:!1},"amazon.nova-lite-v1:0":{aliases:["nova-lite","aws-lite","aws-cheap"],displayName:"Amazon Nova Lite",contextWindow:3e5,maxOutputTokens:5e3,vision:!0,functionCalling:!0,reasoning:!1,jsonMode:!1},"anthropic.claude-opus-4-5-20251101-v1:0":{aliases:["bedrock-claude-4.5-opus","bedrock-claude-flagship"],displayName:"Claude 4.5 Opus (Bedrock)",contextWindow:2e5,maxOutputTokens:64e3,pricingPerMTok:{input:5,output:25},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"meta.llama4-maverick-17b-instruct-v1:0":{aliases:["bedrock-llama4","bedrock-llama-maverick"],displayName:"Llama 4 Maverick (Bedrock)",contextWindow:1e6,maxOutputTokens:8192,vision:!0,functionCalling:!0,reasoning:!1,jsonMode:!1}}}}}),Bq,zNe=S({"src/lib/models/manifests/azure.ts"(){"use strict";Bq={defaultContextWindow:128e3,models:{"gpt-5.1":{aliases:["azure-gpt-5.1","gpt51-azure","azure-flagship"],displayName:"GPT-5.1 (Azure)",contextWindow:3e5,maxOutputTokens:64e3,pricingPerMTok:{input:.625,output:5},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"gpt-5.1-chat":{aliases:["azure-gpt-5.1-chat","gpt51-chat-azure"],displayName:"GPT-5.1 Chat (Azure)",contextWindow:3e5,maxOutputTokens:32e3,pricingPerMTok:{input:.625,output:5},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"gpt-5.1-codex":{aliases:["azure-gpt-5.1-codex","gpt51-codex-azure","azure-code"],displayName:"GPT-5.1 Codex (Azure)",contextWindow:3e5,maxOutputTokens:64e3,pricingPerMTok:{input:1.25,output:10},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"gpt-5.1-codex-mini":{aliases:["azure-gpt-5.1-codex-mini","gpt51-codex-mini-azure"],displayName:"GPT-5.1 Codex Mini (Azure)",contextWindow:2e5,maxOutputTokens:32e3,pricingPerMTok:{input:1.25,output:10},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"gpt-5.1-codex-max":{aliases:["azure-gpt-5.1-codex-max","gpt51-codex-max-azure","azure-enterprise"],displayName:"GPT-5.1 Codex Max (Azure)",contextWindow:5e5,maxOutputTokens:128e3,pricingPerMTok:{input:1.25,output:10},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"gpt-5-pro":{aliases:["azure-gpt-5-pro","gpt5-pro-azure"],displayName:"GPT-5 Pro (Azure)",contextWindow:256e3,maxOutputTokens:64e3,pricingPerMTok:{input:1.25,output:10},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"gpt-5-turbo":{aliases:["azure-gpt-5-turbo","gpt5-turbo-azure"],displayName:"GPT-5 Turbo (Azure)",contextWindow:2e5,maxOutputTokens:32768,pricingPerMTok:{input:1.25,output:10},vision:!1,functionCalling:!0,reasoning:!0,jsonMode:!0}}}}}),zq,GNe=S({"src/lib/models/manifests/mistral.ts"(){"use strict";zq={defaultContextWindow:128e3,models:{"mistral-large-latest":{aliases:["mistral-large","mistral-flagship"],displayName:"Mistral Large",contextWindow:131072,maxOutputTokens:8192,pricingPerMTok:{input:2,output:6},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"mistral-small-latest":{aliases:["mistral-small","mistral-cheap"],displayName:"Mistral Small",contextWindow:32768,maxOutputTokens:8192,pricingPerMTok:{input:.2,output:.6},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"codestral-latest":{aliases:["codestral","mistral-code"],displayName:"Codestral",contextWindow:32768,maxOutputTokens:8192,pricingPerMTok:{input:.3,output:.9},vision:!1,functionCalling:!0,reasoning:!0,jsonMode:!0},"pixtral-large":{aliases:["pixtral","mistral-vision"],displayName:"Pixtral Large",contextWindow:131072,maxOutputTokens:8192,vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0}}}}}),Gq,qNe=S({"src/lib/models/manifests/ollama.ts"(){"use strict";Gq={defaultContextWindow:128e3,models:{"llama4:latest":{aliases:["llama4","llama4-local"],displayName:"Llama 4",contextWindow:131072,maxOutputTokens:8192,vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"llama3.3:latest":{aliases:["llama3.3","llama3.3-local"],displayName:"Llama 3.3",contextWindow:131072,maxOutputTokens:8192,vision:!1,functionCalling:!0,reasoning:!0,jsonMode:!0},"llama3.2:latest":{aliases:["llama3.2","llama","local","offline"],displayName:"Llama 3.2 Latest",contextWindow:131072,maxOutputTokens:8192,vision:!1,functionCalling:!1,reasoning:!0,jsonMode:!1},"deepseek-r1:70b":{aliases:["deepseek-r1","deepseek-reasoning","local-reasoning"],displayName:"DeepSeek-R1 70B",contextWindow:65536,maxOutputTokens:8192,vision:!1,functionCalling:!1,reasoning:!0,jsonMode:!1},"qwen3:72b":{aliases:["qwen3","qwen3-72b-local"],displayName:"Qwen 3 72B",contextWindow:131072,maxOutputTokens:8192,vision:!1,functionCalling:!0,reasoning:!0,jsonMode:!0},"mistral-large:latest":{aliases:["mistral-large-local"],displayName:"Mistral Large (Local)",contextWindow:131072,maxOutputTokens:8192,vision:!1,functionCalling:!0,reasoning:!0,jsonMode:!0}}}}}),qq,jNe=S({"src/lib/models/manifests/litellm.ts"(){"use strict";qq={defaultContextWindow:128e3,models:{_default:{aliases:[],contextWindow:128e3,maxOutputTokens:128e3,vision:!1,functionCalling:!1}}}}});function Kwr(e){if(!e)return!1;for(const t of CS){if(e===t)return!0;const r=e.indexOf(t);if(r===-1)continue;const n=r===0?"":e[r-1],o=e[r+t.length]??"",s=i=>i===""||/[-_:./@]/.test(i);if(s(n)&&s(o))return!0}return!1}function bS(e){return e===null?null:e??HNe}function Yu(e){const t={};for(const[r,n]of Object.entries(e.models))r!=="_default"&&(t[r]=n.maxOutputTokens);return t}var CS,jq,Hq,Ds,mh,kS,HNe,VNe,Vq,WNe,ph,ws,Wq,Os,ca,KNe,Jwr,Lo=S({"src/lib/core/constants.ts"(){"use strict";Nq(),FNe(),$Ne(),UNe(),BNe(),zNe(),GNe(),qNe(),jNe(),CS=["gemini-3-pro-image-preview","gemini-2.5-flash-image","gemini-3.1-flash-image-preview","stable-image-ultra","stable-image-core","sd3.5-large","sd3.5-large-turbo","sd3.5-medium","V_1","V_1_TURBO","V_2","V_2_TURBO","V_2A","V_2A_TURBO","V_3","recraftv3","recraftv2","gpt-image-1","dall-e-3","dall-e-2","black-forest-labs/flux","stability-ai/sdxl","stability-ai/stable-diffusion"],jq=[...CS,"gemini-3.1-pro-preview","gemini-3.1-flash-lite-preview","gemini-3.1-pro-preview-customtools","gemini-3-pro-preview","gemini-3-pro-preview-11-2025","gemini-3-pro-latest","gemini-3-flash-preview"],Hq=.7,Ds=200,mh=2,kS=3e5,HNe=3e5,VNe=12e4,Vq=.85,WNe=3e4,ph=5e3,ws={min:1,max:500,default:Ds},Wq={anthropic:{default:64e3,...Yu(f1)},openai:{default:128e3,...Yu(Lq)},"google-ai":{default:64e3,...Yu(Fq)},vertex:{default:64e3,...Yu($q)},bedrock:{default:64e3,...Yu(Uq)},azure:{default:128e3,...Yu(Bq)},mistral:{default:128e3,...Yu(zq)},ollama:{default:64e3,...Yu(Gq)},litellm:{default:128e3,...Yu(qq)},default:64e3},Os={MAX_SIZE_MB:20,DEFAULT_MAX_PAGES:20,MAX_SCALE:10,MIN_SCALE:.1,DEFAULT_SCALE:1.5,PAGE_COUNT_TIMEOUT_MS:5e3,DEFAULT_MAX_CANVAS_PIXELS:16777216,MIN_EFFECTIVE_SCALE:.1},ca={MAX_PROMPT_LENGTH:1e6,HIGH_MEMORY_THRESHOLD:100,LONG_TIMEOUT_WARNING:3e5,DEFAULT_CONCURRENCY_LIMIT:3,MAX_CONCURRENCY_LIMIT:5,DEFAULT_RETRY_ATTEMPTS:3,DEFAULT_INITIAL_DELAY:1e3,DEFAULT_MAX_DELAY:3e4,DEFAULT_BACKOFF_MULTIPLIER:2},KNe=15e3,Jwr={maxTokens:(()=>{if(!process.env.NEUROLINK_DEFAULT_MAX_TOKENS)return;const e=parseInt(process.env.NEUROLINK_DEFAULT_MAX_TOKENS,10);return Number.isFinite(e)?e:void 0})(),temperature:process.env.NEUROLINK_DEFAULT_TEMPERATURE?(()=>{const e=parseFloat(process.env.NEUROLINK_DEFAULT_TEMPERATURE);return Number.isFinite(e)?e:Hq})():Hq}}}),JNe,Ywr=S({"src/lib/models/manifests/openai-compatible.ts"(){"use strict";JNe={defaultContextWindow:128e3,models:{_default:{aliases:[],contextWindow:128e3,maxOutputTokens:64e3,vision:!1,functionCalling:!1}}}}}),YNe,Zwr=S({"src/lib/models/manifests/openrouter.ts"(){"use strict";YNe={defaultContextWindow:128e3,models:{_default:{aliases:[],contextWindow:128e3,maxOutputTokens:64e3,vision:!1,functionCalling:!1}}}}}),ZNe,Xwr=S({"src/lib/models/manifests/huggingface.ts"(){"use strict";ZNe={defaultContextWindow:32e3,models:{_default:{aliases:[],contextWindow:32e3,maxOutputTokens:32e3,vision:!1,functionCalling:!1}}}}}),XNe,Qwr=S({"src/lib/models/manifests/sagemaker.ts"(){"use strict";XNe={defaultContextWindow:128e3,models:{_default:{aliases:[],contextWindow:128e3,maxOutputTokens:64e3,vision:!1,functionCalling:!1}}}}}),QNe,eTr=S({"src/lib/models/manifests/deepseek.ts"(){"use strict";QNe={defaultContextWindow:64e3,models:{_default:{aliases:[],contextWindow:64e3,maxOutputTokens:64e3,vision:!1,functionCalling:!1}}}}}),eLe,tTr=S({"src/lib/models/manifests/nvidia-nim.ts"(){"use strict";eLe={defaultContextWindow:128e3,models:{_default:{aliases:[],contextWindow:128e3,maxOutputTokens:64e3,vision:!1,functionCalling:!1}}}}}),tLe,rTr=S({"src/lib/models/manifests/lm-studio.ts"(){"use strict";tLe={defaultContextWindow:8192,models:{_default:{aliases:[],contextWindow:8192,maxOutputTokens:8192,vision:!1,functionCalling:!1}}}}}),rLe,nTr=S({"src/lib/models/manifests/llamacpp.ts"(){"use strict";rLe={defaultContextWindow:8192,models:{_default:{aliases:[],contextWindow:8192,maxOutputTokens:8192,vision:!1,functionCalling:!1}}}}}),nLe,oTr=S({"src/lib/models/manifests/xai.ts"(){"use strict";nLe={defaultContextWindow:131072,models:{_default:{aliases:[],contextWindow:131072,maxOutputTokens:64e3,vision:!1,functionCalling:!1}}}}}),oLe,sTr=S({"src/lib/models/manifests/groq.ts"(){"use strict";oLe={defaultContextWindow:128e3,models:{_default:{aliases:[],contextWindow:128e3,maxOutputTokens:64e3,vision:!1,functionCalling:!1}}}}}),sLe,iTr=S({"src/lib/models/manifests/cohere.ts"(){"use strict";sLe={defaultContextWindow:128e3,models:{_default:{aliases:[],contextWindow:128e3,maxOutputTokens:64e3,vision:!1,functionCalling:!1}}}}}),iLe,aTr=S({"src/lib/models/manifests/together-ai.ts"(){"use strict";iLe={defaultContextWindow:128e3,models:{_default:{aliases:[],contextWindow:128e3,maxOutputTokens:64e3,vision:!1,functionCalling:!1}}}}}),aLe,cTr=S({"src/lib/models/manifests/fireworks.ts"(){"use strict";aLe={defaultContextWindow:128e3,models:{_default:{aliases:[],contextWindow:128e3,maxOutputTokens:64e3,vision:!1,functionCalling:!1}}}}}),cLe,lTr=S({"src/lib/models/manifests/perplexity.ts"(){"use strict";cLe={defaultContextWindow:127e3,models:{_default:{aliases:[],contextWindow:127e3,maxOutputTokens:64e3,vision:!1,functionCalling:!1}}}}}),lLe,uTr=S({"src/lib/models/manifests/cloudflare.ts"(){"use strict";lLe={defaultContextWindow:8192,models:{_default:{aliases:[],contextWindow:8192,maxOutputTokens:8192,vision:!1,functionCalling:!1}}}}}),uLe,dTr=S({"src/lib/models/manifests/replicate.ts"(){"use strict";uLe={defaultContextWindow:32768,models:{_default:{aliases:[],contextWindow:32768,maxOutputTokens:32768,vision:!1,functionCalling:!1}}}}}),dLe,mTr=S({"src/lib/models/manifests/voyage.ts"(){"use strict";dLe={defaultContextWindow:32e3,models:{_default:{aliases:[],contextWindow:32e3,maxOutputTokens:32e3,vision:!1,functionCalling:!1}}}}}),mLe,pTr=S({"src/lib/models/manifests/jina.ts"(){"use strict";mLe={defaultContextWindow:8192,models:{_default:{aliases:[],contextWindow:8192,maxOutputTokens:8192,vision:!1,functionCalling:!1}}}}}),pLe,hTr=S({"src/lib/models/manifests/stability.ts"(){"use strict";pLe={defaultContextWindow:2e3,models:{_default:{aliases:[],contextWindow:2e3,maxOutputTokens:2e3,vision:!1,functionCalling:!1}}}}}),hLe,fTr=S({"src/lib/models/manifests/ideogram.ts"(){"use strict";hLe={defaultContextWindow:2e3,models:{_default:{aliases:[],contextWindow:2e3,maxOutputTokens:2e3,vision:!1,functionCalling:!1}}}}}),fLe,gTr=S({"src/lib/models/manifests/recraft.ts"(){"use strict";fLe={defaultContextWindow:2e3,models:{_default:{aliases:[],contextWindow:2e3,maxOutputTokens:2e3,vision:!1,functionCalling:!1}}}}});function yTr(e){const t=Object.fromEntries(Object.entries(e.models.catalog).map(([r,n])=>[r,{aliases:[],contextWindow:n.contextWindow??e.models.defaultContextWindow,maxOutputTokens:e.models.defaultMaxOutputTokens,vision:n.vision,functionCalling:e.capabilities.tools}]));return{defaultContextWindow:e.models.defaultContextWindow,models:{_default:{aliases:[],contextWindow:e.models.defaultContextWindow,maxOutputTokens:e.models.defaultMaxOutputTokens,vision:!1,functionCalling:e.capabilities.tools},...t}}}function gLe(e){return xS[e]}function yLe(){return Object.keys(xS)}function AS(e,t,r){if(!e.familyRules)return r;let n=r;for(const o of e.familyRules)o.pattern.test(t)&&(n={...n,...o.patch});return n}function Kq(e,t){const r=xS[e];if(!r)return;const n=r.models[t];if(n)return AS(r,t,n);const o=Object.entries(r.models).find(([s,i])=>s!=="_default"&&i.aliases.includes(t));if(o)return AS(r,t,o[1])}function vTr(e,t){const r=xS[e];if(!r)return;const n=r.models[t];if(n)return AS(r,t,n);const o=Object.entries(r.models).find(([a,c])=>a!=="_default"&&c.aliases.includes(t));if(o)return AS(r,t,o[1]);const i=Object.keys(r.models).filter(a=>a!=="_default").sort((a,c)=>c.length-a.length).find(a=>t.startsWith(a));if(i)return AS(r,t,r.models[i])}var Jq,xS,g1=S({"src/lib/models/manifestRegistry.ts"(){"use strict";gy(),Nq(),FNe(),zNe(),BNe(),qNe(),GNe(),$Ne(),Ywr(),Zwr(),UNe(),Xwr(),jNe(),Qwr(),eTr(),tTr(),rTr(),nTr(),oTr(),sTr(),iTr(),aTr(),cTr(),lTr(),uTr(),dTr(),mTr(),pTr(),hTr(),fTr(),gTr(),Jq=e=>{const t=fy().find(r=>r.id===e);if(!t)throw new Error(`No catalog JSON entry found for provider "${e}"`);return yTr(t)},xS={anthropic:f1,openai:Lq,azure:Bq,bedrock:Uq,ollama:Gq,mistral:zq,"google-ai":Fq,"openai-compatible":JNe,openrouter:YNe,vertex:$q,huggingface:ZNe,litellm:qq,sagemaker:XNe,deepseek:QNe,"nvidia-nim":eLe,"lm-studio":tLe,llamacpp:rLe,xai:nLe,groq:oLe,cerebras:Jq("cerebras"),sambanova:Jq("sambanova"),cohere:sLe,"together-ai":iLe,fireworks:aLe,perplexity:cLe,cloudflare:lLe,replicate:uLe,voyage:dLe,jina:mLe,stability:pLe,ideogram:hLe,recraft:fLe}}});function wTr(e){return/mini|nano|haiku|flash|lite/i.test(e)?"fast":/opus|^o1|^o3|-pro$/i.test(e)?"slow":"medium"}function vLe(e){return e.reasoning?"high":"medium"}function TTr(){const e={};for(const t of yLe()){const r=gLe(t);if(r)for(const[n,o]of Object.entries(r.models)){if(n==="_default"||!o.pricingPerMTok)continue;if(e[n]){p.debug(`[modelRegistry] Manifest id collision: "${n}" already derived from ${e[n].provider}; keeping first, skipping ${t}`);continue}const s=o.reasoning?9:6,i=Yq[n];e[n]={id:n,name:o.displayName??n,provider:t,description:o.displayName??n,capabilities:{vision:o.vision,functionCalling:o.functionCalling,codeGeneration:!0,reasoning:o.reasoning??!1,multimodal:o.vision||o.nativeAudio===!0,streaming:!0,jsonMode:o.jsonMode??!1,samplingParams:o.samplingParams},pricing:{inputCostPer1K:o.pricingPerMTok.input/1e3,outputCostPer1K:o.pricingPerMTok.output/1e3,currency:"USD"},performance:o.curated?.performance??{speed:wTr(n),quality:vLe(o),accuracy:vLe(o)},limits:{maxContextTokens:o.contextWindow,maxOutputTokens:o.maxOutputTokens,...i?.limits?.maxRequestsPerMinute!==void 0?{maxRequestsPerMinute:i.limits.maxRequestsPerMinute}:{}},useCases:o.curated?.useCases??{coding:o.functionCalling?8:5,creative:o.vision?7:6,analysis:s,conversation:7,reasoning:s,translation:6,summarization:7},aliases:o.aliases,deprecated:i?.deprecated??!1,...i?.releaseDate!==void 0?{releaseDate:i.releaseDate}:{},isLocal:t==="ollama"||t==="lm-studio"||t==="llamacpp",category:o.curated?.category??(o.reasoning?"reasoning":"general")}}}return e}function IS(){return Object.values(eu)}function ETr(e){return eu[e]}function STr(e,t,r){const n=r.toLowerCase(),o=Cm[n]??n,s=eu[o];return!s||s.provider!==t.toLowerCase()?!0:s.capabilities[e]??!0}function _Tr(e,t){const r=(t??"").toLowerCase();if(!r)return!0;const n=Cm[r]??r,o=eu[n];return o&&o.provider===e.toLowerCase()&&o.capabilities.samplingParams!==void 0?o.capabilities.samplingParams:!TLe.some(s=>s.test(n)||s.test(r))}function Ql(e,t,r,n){return _Tr(e,t)?r:((r.temperature!==void 0||r.topP!==void 0)&&p.debug(`[ModelRegistry] Stripping sampling params for ${e}/${t} at ${n} \u2014 model rejects temperature/topP`,{provider:e,model:t,site:n,hadTemperature:r.temperature!==void 0,hadTopP:r.topP!==void 0}),{})}function bTr(e){return Object.values(eu).filter(t=>t.provider===e)}function CTr(){return yLe()}function kTr(e,t,r){const n=t/1e3*e.pricing.inputCostPer1K,o=r/1e3*e.pricing.outputCostPer1K;return n+o}var Yq,eu,Cm,wLe,TLe,hh=S({"src/lib/models/modelRegistry.ts"(){"use strict";ut(),U(),g1(),Yq={"gpt-4o":{id:"gpt-4o",name:"GPT-4 Omni",provider:"openai",description:"Most capable OpenAI model with vision and advanced reasoning",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.005,outputCostPer1K:.015,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:128e3,maxOutputTokens:4096,maxRequestsPerMinute:500},useCases:{coding:9,creative:8,analysis:9,conversation:9,reasoning:9,translation:8,summarization:8},aliases:["gpt4o","gpt-4-omni","openai-flagship"],deprecated:!1,isLocal:!1,releaseDate:"2024-05-13",category:"general"},"gpt-4o-mini":{id:"gpt-4o-mini",name:"GPT-4 Omni Mini",provider:"openai",description:"Fast and cost-effective model with strong performance",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:15e-5,outputCostPer1K:6e-4,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:128e3,maxOutputTokens:16384,maxRequestsPerMinute:1e3},useCases:{coding:8,creative:7,analysis:8,conversation:8,reasoning:8,translation:8,summarization:9},aliases:["gpt4o-mini","gpt-4-mini","fastest","cheap"],deprecated:!1,isLocal:!1,releaseDate:"2024-07-18",category:"general"},"gpt-5":{id:"gpt-5",name:"GPT-5",provider:"openai",description:"OpenAI's most advanced model with breakthrough reasoning and multimodal capabilities",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.01,outputCostPer1K:.03,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:256e3,maxOutputTokens:32768,maxRequestsPerMinute:200},useCases:{coding:10,creative:10,analysis:10,conversation:10,reasoning:10,translation:9,summarization:9},aliases:["gpt5","gpt-5-flagship","openai-latest"],deprecated:!1,isLocal:!1,releaseDate:"2025-08-07",category:"reasoning"},"gpt-5-mini":{id:"gpt-5-mini",name:"GPT-5 Mini",provider:"openai",description:"Fast and efficient GPT-5 variant for everyday tasks",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.002,outputCostPer1K:.006,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:128e3,maxOutputTokens:16384,maxRequestsPerMinute:500},useCases:{coding:8,creative:8,analysis:8,conversation:9,reasoning:8,translation:8,summarization:9},aliases:["gpt5-mini","gpt-5-fast"],deprecated:!1,isLocal:!1,releaseDate:"2025-08-07",category:"general"},o3:{id:"o3",name:"O3",provider:"openai",description:"Advanced reasoning model with extended thinking capabilities for complex tasks",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.015,outputCostPer1K:.06,currency:"USD"},performance:{speed:"slow",quality:"high",accuracy:"high"},limits:{maxContextTokens:2e5,maxOutputTokens:1e5,maxRequestsPerMinute:100},useCases:{coding:10,creative:8,analysis:10,conversation:7,reasoning:10,translation:7,summarization:8},aliases:["o3-reasoning","o3-thinking"],deprecated:!1,isLocal:!1,releaseDate:"2025-01-31",category:"reasoning"},"o3-mini":{id:"o3-mini",name:"O3 Mini",provider:"openai",description:"Cost-effective reasoning model with strong logical capabilities",capabilities:{vision:!1,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.003,outputCostPer1K:.012,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:2e5,maxOutputTokens:65536,maxRequestsPerMinute:200},useCases:{coding:9,creative:6,analysis:9,conversation:7,reasoning:9,translation:6,summarization:7},aliases:["o3-mini-reasoning"],deprecated:!1,isLocal:!1,releaseDate:"2025-01-31",category:"reasoning"},"gpt-5-nano":{id:"gpt-5-nano",name:"GPT-5 Nano",provider:"openai",description:"Fastest and most cost-effective GPT-5 variant for simple tasks",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:5e-5,outputCostPer1K:4e-4,currency:"USD"},performance:{speed:"fast",quality:"medium",accuracy:"medium"},limits:{maxContextTokens:272e3,maxOutputTokens:128e3,maxRequestsPerMinute:2e3},useCases:{coding:6,creative:6,analysis:6,conversation:8,reasoning:6,translation:7,summarization:8},aliases:["gpt5-nano","gpt-5-cheapest"],deprecated:!1,isLocal:!1,releaseDate:"2025-08-07",category:"general"},"gpt-5.2":{id:"gpt-5.2",name:"GPT-5.2 Thinking",provider:"openai",description:"OpenAI's latest flagship model with deep reasoning capabilities, 100% on AIME 2025, 80% SWE-bench Verified",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.00175,outputCostPer1K:.014,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:256e3,maxOutputTokens:64e3,maxRequestsPerMinute:150},useCases:{coding:10,creative:10,analysis:10,conversation:9,reasoning:10,translation:9,summarization:9},aliases:["gpt52","gpt-5.2-thinking","openai-latest-reasoning"],deprecated:!1,isLocal:!1,releaseDate:"2025-12-11",category:"reasoning"},"gpt-5.2-chat-latest":{id:"gpt-5.2-chat-latest",name:"GPT-5.2 Instant",provider:"openai",description:"Fast everyday model for quick tasks with excellent performance across all domains",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.00175,outputCostPer1K:.014,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:256e3,maxOutputTokens:32e3,maxRequestsPerMinute:300},useCases:{coding:9,creative:9,analysis:9,conversation:10,reasoning:9,translation:9,summarization:9},aliases:["gpt52-chat","gpt-5.2-instant","gpt52-fast"],deprecated:!1,isLocal:!1,releaseDate:"2025-12-11",category:"general"},"gpt-5.2-pro":{id:"gpt-5.2-pro",name:"GPT-5.2 Pro",provider:"openai",description:"Highest quality model for science, math, and complex problem-solving with 92.4% GPQA Diamond performance",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.021,outputCostPer1K:.168,currency:"USD"},performance:{speed:"slow",quality:"high",accuracy:"high"},limits:{maxContextTokens:256e3,maxOutputTokens:128e3,maxRequestsPerMinute:50},useCases:{coding:10,creative:9,analysis:10,conversation:8,reasoning:10,translation:9,summarization:9},aliases:["gpt52-pro","gpt-5.2-professional","openai-science"],deprecated:!1,isLocal:!1,releaseDate:"2025-12-11",category:"reasoning"},"gpt-4.1":{id:"gpt-4.1",name:"GPT-4.1",provider:"openai",description:"Advanced coding model with 1 million token context window",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.002,outputCostPer1K:.008,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:1e6,maxOutputTokens:128e3,maxRequestsPerMinute:200},useCases:{coding:10,creative:8,analysis:9,conversation:8,reasoning:9,translation:8,summarization:9},aliases:["gpt-4.1","gpt41","million-context"],deprecated:!1,isLocal:!1,releaseDate:"2025-04-14",category:"coding"},"gpt-4.1-mini":{id:"gpt-4.1-mini",name:"GPT-4.1 Mini",provider:"openai",description:"Fast GPT-4.1 variant with 1M context for efficient coding",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:4e-4,outputCostPer1K:.0016,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:1e6,maxOutputTokens:128e3,maxRequestsPerMinute:500},useCases:{coding:9,creative:7,analysis:8,conversation:8,reasoning:8,translation:8,summarization:9},aliases:["gpt-4.1-mini","gpt41-mini"],deprecated:!1,isLocal:!1,releaseDate:"2025-04-14",category:"coding"},"gpt-4.1-nano":{id:"gpt-4.1-nano",name:"GPT-4.1 Nano",provider:"openai",description:"Most cost-effective GPT-4.1 variant with 1M context",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:1e-4,outputCostPer1K:4e-4,currency:"USD"},performance:{speed:"fast",quality:"medium",accuracy:"medium"},limits:{maxContextTokens:1e6,maxOutputTokens:128e3,maxRequestsPerMinute:1e3},useCases:{coding:7,creative:6,analysis:7,conversation:7,reasoning:7,translation:7,summarization:8},aliases:["gpt-4.1-nano","gpt41-nano"],deprecated:!1,isLocal:!1,releaseDate:"2025-04-14",category:"coding"},"o3-pro":{id:"o3-pro",name:"O3 Pro",provider:"openai",description:"Most powerful reasoning model for complex scientific and coding tasks",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.03,outputCostPer1K:.12,currency:"USD"},performance:{speed:"slow",quality:"high",accuracy:"high"},limits:{maxContextTokens:2e5,maxOutputTokens:1e5,maxRequestsPerMinute:50},useCases:{coding:10,creative:7,analysis:10,conversation:6,reasoning:10,translation:6,summarization:7},aliases:["o3-pro","o3-professional"],deprecated:!1,isLocal:!1,releaseDate:"2025-04-16",category:"reasoning"},"o4-mini":{id:"o4-mini",name:"O4 Mini",provider:"openai",description:"Fast reasoning model optimized for math, coding, and visual tasks",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.003,outputCostPer1K:.012,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:2e5,maxOutputTokens:1e5,maxRequestsPerMinute:200},useCases:{coding:9,creative:6,analysis:9,conversation:7,reasoning:10,translation:6,summarization:7},aliases:["o4-mini","o4-fast"],deprecated:!1,isLocal:!1,releaseDate:"2025-04-16",category:"reasoning"},o1:{id:"o1",name:"O1",provider:"openai",description:"Premium reasoning model with highest capability for mission-critical tasks",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.15,outputCostPer1K:.6,currency:"USD"},performance:{speed:"slow",quality:"high",accuracy:"high"},limits:{maxContextTokens:128e3,maxOutputTokens:32768,maxRequestsPerMinute:50},useCases:{coding:10,creative:7,analysis:10,conversation:6,reasoning:10,translation:6,summarization:7},aliases:["o1-full","o1-premium"],deprecated:!1,isLocal:!1,releaseDate:"2024-09-12",category:"reasoning"},"o1-preview":{id:"o1-preview",name:"O1 Preview",provider:"openai",description:"Preview version of O1 reasoning model",capabilities:{vision:!1,functionCalling:!1,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.015,outputCostPer1K:.06,currency:"USD"},performance:{speed:"slow",quality:"high",accuracy:"high"},limits:{maxContextTokens:128e3,maxOutputTokens:32768,maxRequestsPerMinute:100},useCases:{coding:9,creative:6,analysis:9,conversation:6,reasoning:9,translation:5,summarization:6},aliases:["o1-preview"],deprecated:!1,isLocal:!1,releaseDate:"2024-09-12",category:"reasoning"},"o1-mini":{id:"o1-mini",name:"O1 Mini",provider:"openai",description:"Cost-effective O1 variant with strong reasoning capabilities",capabilities:{vision:!1,functionCalling:!1,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.003,outputCostPer1K:.012,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:128e3,maxOutputTokens:65536,maxRequestsPerMinute:200},useCases:{coding:8,creative:5,analysis:8,conversation:6,reasoning:8,translation:5,summarization:6},aliases:["o1-mini","o1-budget"],deprecated:!1,isLocal:!1,releaseDate:"2024-09-12",category:"reasoning"},"gpt-4":{id:"gpt-4",name:"GPT-4",provider:"openai",description:"Previous generation flagship model (legacy)",capabilities:{vision:!1,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.03,outputCostPer1K:.06,currency:"USD"},performance:{speed:"slow",quality:"high",accuracy:"high"},limits:{maxContextTokens:8192,maxOutputTokens:4096,maxRequestsPerMinute:200},useCases:{coding:8,creative:8,analysis:8,conversation:8,reasoning:8,translation:8,summarization:8},aliases:["gpt4","gpt-4-base"],deprecated:!0,isLocal:!1,releaseDate:"2023-03-14",category:"general"},"gpt-4-turbo":{id:"gpt-4-turbo",name:"GPT-4 Turbo",provider:"openai",description:"Faster GPT-4 variant with extended context (legacy)",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.01,outputCostPer1K:.03,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:128e3,maxOutputTokens:4096,maxRequestsPerMinute:500},useCases:{coding:8,creative:8,analysis:9,conversation:8,reasoning:8,translation:8,summarization:8},aliases:["gpt4-turbo","gpt-4-turbo-preview"],deprecated:!0,isLocal:!1,releaseDate:"2024-04-09",category:"general"},"gpt-3.5-turbo":{id:"gpt-3.5-turbo",name:"GPT-3.5 Turbo",provider:"openai",description:"Fast and cost-effective model for simpler tasks (legacy)",capabilities:{vision:!1,functionCalling:!0,codeGeneration:!0,reasoning:!1,multimodal:!1,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:5e-4,outputCostPer1K:.0015,currency:"USD"},performance:{speed:"fast",quality:"medium",accuracy:"medium"},limits:{maxContextTokens:16385,maxOutputTokens:4096,maxRequestsPerMinute:3500},useCases:{coding:6,creative:6,analysis:6,conversation:7,reasoning:5,translation:7,summarization:7},aliases:["gpt35","gpt-3.5","chatgpt"],deprecated:!0,isLocal:!1,releaseDate:"2023-03-01",category:"general"},"gemini-2.5-pro":{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro",provider:"google-ai",description:"Google's most capable multimodal model with large context window",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.00125,outputCostPer1K:.005,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:2097152,maxOutputTokens:8192,maxRequestsPerMinute:360},useCases:{coding:9,creative:8,analysis:10,conversation:8,reasoning:9,translation:9,summarization:9},aliases:["gemini-pro","google-flagship","best-analysis"],deprecated:!1,isLocal:!1,releaseDate:"2024-12-11",category:"reasoning"},"gemini-2.5-flash":{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash",provider:"google-ai",description:"Fast and efficient multimodal model with large context",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:75e-6,outputCostPer1K:3e-4,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:1048576,maxOutputTokens:8192,maxRequestsPerMinute:1e3},useCases:{coding:8,creative:7,analysis:9,conversation:8,reasoning:8,translation:8,summarization:9},aliases:["gemini-flash","google-fast","best-value"],deprecated:!1,isLocal:!1,releaseDate:"2024-12-11",category:"general"},"claude-opus-4-5-20251101":{id:"claude-opus-4-5-20251101",name:"Claude Opus 4.5",provider:"anthropic",description:"Anthropic's most capable model with exceptional reasoning, coding, and multimodal capabilities",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:.005,outputCostPer1K:.025,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:2e5,maxOutputTokens:64e3,maxRequestsPerMinute:50},useCases:{coding:10,creative:10,analysis:10,conversation:9,reasoning:10,translation:9,summarization:9},aliases:["claude-4.5-opus","opus-4.5","anthropic-flagship"],deprecated:!1,isLocal:!1,releaseDate:"2025-11-24",category:"reasoning"},"claude-opus-5":{id:"claude-opus-5",name:"Claude Opus 5",provider:"anthropic",description:"For complex agentic coding and enterprise work",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:.005,outputCostPer1K:.025,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:1e6,maxOutputTokens:128e3,maxRequestsPerMinute:50},useCases:{coding:10,creative:10,analysis:10,conversation:9,reasoning:10,translation:9,summarization:9},aliases:["opus-5","claude-opus-latest"],deprecated:!1,isLocal:!1,releaseDate:"2026-07-24",category:"reasoning"},"claude-sonnet-5":{id:"claude-sonnet-5",name:"Claude Sonnet 5",provider:"anthropic",description:"The best combination of speed and intelligence",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:.002,outputCostPer1K:.01,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:1e6,maxOutputTokens:128e3,maxRequestsPerMinute:50},useCases:{coding:9,creative:9,analysis:9,conversation:9,reasoning:9,translation:9,summarization:9},aliases:["sonnet-5","claude-sonnet-latest"],deprecated:!1,isLocal:!1,releaseDate:"2026-06-30",category:"general"},"claude-fable-5":{id:"claude-fable-5",name:"Claude Fable 5",provider:"anthropic",description:"Next-generation intelligence for long-running agents",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:.01,outputCostPer1K:.05,currency:"USD"},performance:{speed:"slow",quality:"high",accuracy:"high"},limits:{maxContextTokens:1e6,maxOutputTokens:128e3,maxRequestsPerMinute:50},useCases:{coding:10,creative:10,analysis:10,conversation:9,reasoning:10,translation:9,summarization:9},aliases:["fable-5"],deprecated:!1,isLocal:!1,releaseDate:"2026-06-09",category:"reasoning"},"claude-opus-4-8":{id:"claude-opus-4-8",name:"Claude Opus 4.8",provider:"anthropic",description:"Anthropic Opus 4.8, superseded by Claude Opus 5",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:.005,outputCostPer1K:.025,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:1e6,maxOutputTokens:128e3,maxRequestsPerMinute:50},useCases:{coding:10,creative:9,analysis:10,conversation:9,reasoning:10,translation:9,summarization:9},aliases:["opus-4.8"],deprecated:!1,isLocal:!1,releaseDate:"2026-05-28",category:"reasoning"},"claude-opus-4-7":{id:"claude-opus-4-7",name:"Claude Opus 4.7",provider:"anthropic",description:"Anthropic Opus 4.7, superseded by Claude Opus 4.8",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:.005,outputCostPer1K:.025,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:1e6,maxOutputTokens:128e3,maxRequestsPerMinute:50},useCases:{coding:10,creative:9,analysis:10,conversation:9,reasoning:10,translation:9,summarization:9},aliases:["opus-4.7"],deprecated:!1,isLocal:!1,releaseDate:"2026-04-16",category:"reasoning"},"claude-sonnet-4-5-20250929":{id:"claude-sonnet-4-5-20250929",name:"Claude Sonnet 4.5",provider:"anthropic",description:"Balanced Claude model with excellent performance across all tasks including vision and reasoning",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:.003,outputCostPer1K:.015,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:2e5,maxOutputTokens:64e3,maxRequestsPerMinute:100},useCases:{coding:10,creative:9,analysis:9,conversation:9,reasoning:10,translation:8,summarization:8},aliases:["claude-4.5-sonnet","sonnet-4.5"],deprecated:!1,isLocal:!1,releaseDate:"2025-09-29",category:"coding"},"claude-haiku-4-5-20251001":{id:"claude-haiku-4-5-20251001",name:"Claude 4.5 Haiku",provider:"anthropic",description:"Latest fast and efficient Claude model with vision support",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:.001,outputCostPer1K:.005,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:2e5,maxOutputTokens:64e3,maxRequestsPerMinute:100},useCases:{coding:8,creative:8,analysis:8,conversation:9,reasoning:8,translation:8,summarization:9},aliases:["claude-4.5-haiku","claude-haiku-latest","haiku-4.5"],deprecated:!1,isLocal:!1,releaseDate:"2025-10-15",category:"general"},"claude-3-5-sonnet-20241022":{id:"claude-3-5-sonnet-20241022",name:"Claude 3.5 Sonnet",provider:"anthropic",description:"Anthropic's most capable model with excellent reasoning and coding",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:.003,outputCostPer1K:.015,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:2e5,maxOutputTokens:8192,maxRequestsPerMinute:50},useCases:{coding:10,creative:9,analysis:9,conversation:9,reasoning:10,translation:8,summarization:8},aliases:["claude-3.5-sonnet","claude-sonnet","best-coding","claude-latest"],deprecated:!1,isLocal:!1,releaseDate:"2024-10-22",category:"coding"},"claude-3-5-haiku-20241022":{id:"claude-3-5-haiku-20241022",name:"Claude 3.5 Haiku",provider:"anthropic",description:"Fast and efficient Claude model for quick tasks",capabilities:{vision:!1,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:.001,outputCostPer1K:.005,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:2e5,maxOutputTokens:8192,maxRequestsPerMinute:100},useCases:{coding:8,creative:7,analysis:8,conversation:8,reasoning:8,translation:8,summarization:9},aliases:["claude-3.5-haiku","claude-haiku","claude-fast"],deprecated:!1,isLocal:!1,releaseDate:"2024-10-22",category:"general"},"mistral-large-latest":{id:"mistral-large-latest",name:"Mistral Large",provider:"mistral",description:"Mistral's flagship model with excellent reasoning and multilingual capabilities",capabilities:{vision:!1,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.002,outputCostPer1K:.006,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:131072,maxOutputTokens:8192,maxRequestsPerMinute:100},useCases:{coding:9,creative:8,analysis:9,conversation:8,reasoning:9,translation:9,summarization:8},aliases:["mistral-large","mistral-flagship"],deprecated:!1,isLocal:!1,releaseDate:"2025-12-01",category:"reasoning"},"mistral-small-latest":{id:"mistral-small-latest",name:"Mistral Small",provider:"mistral",description:"Efficient model for simple tasks and cost-sensitive applications",capabilities:{vision:!1,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.001,outputCostPer1K:.003,currency:"USD"},performance:{speed:"fast",quality:"medium",accuracy:"medium"},limits:{maxContextTokens:32768,maxOutputTokens:8192,maxRequestsPerMinute:200},useCases:{coding:6,creative:6,analysis:7,conversation:7,reasoning:6,translation:7,summarization:7},aliases:["mistral-small","mistral-cheap"],deprecated:!1,isLocal:!1,releaseDate:"2024-02-26",category:"general"},"codestral-latest":{id:"codestral-latest",name:"Codestral",provider:"mistral",description:"Specialized code generation model trained on 80+ programming languages",capabilities:{vision:!1,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.001,outputCostPer1K:.003,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:32768,maxOutputTokens:8192,maxRequestsPerMinute:200},useCases:{coding:10,creative:5,analysis:7,conversation:5,reasoning:8,translation:5,summarization:6},aliases:["codestral","mistral-code"],deprecated:!1,isLocal:!1,releaseDate:"2024-05-29",category:"coding"},"pixtral-large":{id:"pixtral-large",name:"Pixtral Large",provider:"mistral",description:"Multimodal vision-language model for image understanding",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.002,outputCostPer1K:.006,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:131072,maxOutputTokens:8192,maxRequestsPerMinute:100},useCases:{coding:8,creative:8,analysis:9,conversation:7,reasoning:8,translation:7,summarization:8},aliases:["pixtral","mistral-vision"],deprecated:!0,isLocal:!1,releaseDate:"2024-09-01",category:"vision"},"llama4:latest":{id:"llama4:latest",name:"Llama 4",provider:"ollama",description:"Latest Llama 4 with multimodal vision and tool capabilities, runs locally",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:0,outputCostPer1K:0,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:131072,maxOutputTokens:8192},useCases:{coding:9,creative:8,analysis:9,conversation:8,reasoning:9,translation:8,summarization:8},aliases:["llama4","llama4-local"],deprecated:!1,isLocal:!0,releaseDate:"2025-04-01",category:"reasoning"},"llama3.3:latest":{id:"llama3.3:latest",name:"Llama 3.3",provider:"ollama",description:"High-performance Llama 3.3 for local inference",capabilities:{vision:!1,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:0,outputCostPer1K:0,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:131072,maxOutputTokens:8192},useCases:{coding:8,creative:8,analysis:8,conversation:8,reasoning:8,translation:8,summarization:8},aliases:["llama3.3","llama3.3-local"],deprecated:!1,isLocal:!0,releaseDate:"2024-12-01",category:"general"},"llama3.2:latest":{id:"llama3.2:latest",name:"Llama 3.2 Latest",provider:"ollama",description:"Local Llama model for private, offline AI generation",capabilities:{vision:!1,functionCalling:!1,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:0,outputCostPer1K:0,currency:"USD"},performance:{speed:"fast",quality:"medium",accuracy:"medium"},limits:{maxContextTokens:131072,maxOutputTokens:8192},useCases:{coding:6,creative:7,analysis:6,conversation:7,reasoning:6,translation:6,summarization:6},aliases:["llama3.2","llama","local","offline"],deprecated:!1,isLocal:!0,releaseDate:"2024-09-25",category:"general"},"deepseek-r1:70b":{id:"deepseek-r1:70b",name:"DeepSeek-R1 70B",provider:"ollama",description:"State-of-the-art reasoning model rivaling OpenAI O1, runs locally",capabilities:{vision:!1,functionCalling:!1,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:0,outputCostPer1K:0,currency:"USD"},performance:{speed:"slow",quality:"high",accuracy:"high"},limits:{maxContextTokens:65536,maxOutputTokens:8192},useCases:{coding:10,creative:7,analysis:10,conversation:6,reasoning:10,translation:7,summarization:7},aliases:["deepseek-r1","deepseek-reasoning","local-reasoning"],deprecated:!1,isLocal:!0,releaseDate:"2025-01-20",category:"reasoning"},"qwen3:72b":{id:"qwen3:72b",name:"Qwen 3 72B",provider:"ollama",description:"Advanced reasoning and multilingual model from Alibaba",capabilities:{vision:!1,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:0,outputCostPer1K:0,currency:"USD"},performance:{speed:"slow",quality:"high",accuracy:"high"},limits:{maxContextTokens:131072,maxOutputTokens:8192},useCases:{coding:9,creative:8,analysis:9,conversation:8,reasoning:9,translation:9,summarization:8},aliases:["qwen3","qwen3-72b-local"],deprecated:!1,isLocal:!0,releaseDate:"2025-04-01",category:"reasoning"},"mistral-large:latest":{id:"mistral-large:latest",name:"Mistral Large (Local)",provider:"ollama",description:"Mistral Large model for local inference",capabilities:{vision:!1,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:0,outputCostPer1K:0,currency:"USD"},performance:{speed:"slow",quality:"high",accuracy:"high"},limits:{maxContextTokens:131072,maxOutputTokens:8192},useCases:{coding:8,creative:8,analysis:8,conversation:8,reasoning:8,translation:9,summarization:8},aliases:["mistral-large-local"],deprecated:!1,isLocal:!0,releaseDate:"2024-02-26",category:"general"},"amazon.nova-premier-v1:0":{id:"amazon.nova-premier-v1:0",name:"Amazon Nova Premier",provider:"bedrock",description:"Amazon's most capable foundation model with advanced multimodal capabilities",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.0025,outputCostPer1K:.0125,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:3e5,maxOutputTokens:5e3,maxRequestsPerMinute:100},useCases:{coding:9,creative:9,analysis:10,conversation:8,reasoning:9,translation:8,summarization:9},aliases:["nova-premier","aws-flagship"],deprecated:!1,isLocal:!1,releaseDate:"2025-01-01",category:"reasoning"},"amazon.nova-pro-v1:0":{id:"amazon.nova-pro-v1:0",name:"Amazon Nova Pro",provider:"bedrock",description:"Highly capable multimodal model balancing accuracy and speed",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:8e-4,outputCostPer1K:.0032,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:3e5,maxOutputTokens:5e3,maxRequestsPerMinute:200},useCases:{coding:8,creative:8,analysis:9,conversation:8,reasoning:8,translation:8,summarization:9},aliases:["nova-pro","aws-balanced"],deprecated:!1,isLocal:!1,releaseDate:"2024-12-03",category:"general"},"amazon.nova-lite-v1:0":{id:"amazon.nova-lite-v1:0",name:"Amazon Nova Lite",provider:"bedrock",description:"Fast and cost-effective multimodal model optimized for everyday tasks",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:6e-5,outputCostPer1K:24e-5,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:3e5,maxOutputTokens:5e3,maxRequestsPerMinute:500},useCases:{coding:7,creative:7,analysis:8,conversation:8,reasoning:7,translation:8,summarization:9},aliases:["nova-lite","aws-lite","aws-cheap"],deprecated:!1,isLocal:!1,releaseDate:"2024-12-03",category:"general"},"anthropic.claude-opus-4-5-20251101-v1:0":{id:"anthropic.claude-opus-4-5-20251101-v1:0",name:"Claude 4.5 Opus (Bedrock)",provider:"bedrock",description:"Anthropic's most capable model available on Bedrock for enterprise workloads",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:.015,outputCostPer1K:.075,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:2e5,maxOutputTokens:64e3,maxRequestsPerMinute:50},useCases:{coding:10,creative:10,analysis:10,conversation:9,reasoning:10,translation:9,summarization:9},aliases:["bedrock-claude-4.5-opus","bedrock-claude-flagship"],deprecated:!1,isLocal:!1,releaseDate:"2025-11-24",category:"reasoning"},"meta.llama4-maverick-17b-instruct-v1:0":{id:"meta.llama4-maverick-17b-instruct-v1:0",name:"Llama 4 Maverick (Bedrock)",provider:"bedrock",description:"Meta's latest Llama 4 model with vision on Bedrock",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:19e-5,outputCostPer1K:55e-5,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:131072,maxOutputTokens:8192,maxRequestsPerMinute:200},useCases:{coding:8,creative:8,analysis:8,conversation:8,reasoning:8,translation:8,summarization:8},aliases:["bedrock-llama4","bedrock-llama-maverick"],deprecated:!1,isLocal:!1,releaseDate:"2025-04-01",category:"general"},"gpt-5.1":{id:"gpt-5.1",name:"GPT-5.1 (Azure)",provider:"azure",description:"Azure's latest GPT-5.1 flagship model with enhanced reasoning and multimodal capabilities",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.015,outputCostPer1K:.045,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:3e5,maxOutputTokens:64e3,maxRequestsPerMinute:100},useCases:{coding:10,creative:10,analysis:10,conversation:10,reasoning:10,translation:9,summarization:9},aliases:["azure-gpt-5.1","gpt51-azure","azure-flagship"],deprecated:!1,isLocal:!1,releaseDate:"2025-12-01",category:"reasoning"},"gpt-5.1-chat":{id:"gpt-5.1-chat",name:"GPT-5.1 Chat (Azure)",provider:"azure",description:"Azure GPT-5.1 optimized for conversational interactions",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.012,outputCostPer1K:.036,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:3e5,maxOutputTokens:32e3,maxRequestsPerMinute:150},useCases:{coding:8,creative:9,analysis:9,conversation:10,reasoning:9,translation:9,summarization:9},aliases:["azure-gpt-5.1-chat","gpt51-chat-azure"],deprecated:!1,isLocal:!1,releaseDate:"2025-12-01",category:"general"},"gpt-5.1-codex":{id:"gpt-5.1-codex",name:"GPT-5.1 Codex (Azure)",provider:"azure",description:"Azure GPT-5.1 specialized for code generation and software development",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.012,outputCostPer1K:.036,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:3e5,maxOutputTokens:64e3,maxRequestsPerMinute:100},useCases:{coding:10,creative:7,analysis:9,conversation:7,reasoning:10,translation:7,summarization:8},aliases:["azure-gpt-5.1-codex","gpt51-codex-azure","azure-code"],deprecated:!1,isLocal:!1,releaseDate:"2025-12-01",category:"coding"},"gpt-5.1-codex-mini":{id:"gpt-5.1-codex-mini",name:"GPT-5.1 Codex Mini (Azure)",provider:"azure",description:"Fast and efficient Azure code model for quick development tasks",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.003,outputCostPer1K:.009,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:2e5,maxOutputTokens:32e3,maxRequestsPerMinute:300},useCases:{coding:9,creative:6,analysis:8,conversation:7,reasoning:8,translation:6,summarization:7},aliases:["azure-gpt-5.1-codex-mini","gpt51-codex-mini-azure"],deprecated:!1,isLocal:!1,releaseDate:"2025-12-01",category:"coding"},"gpt-5.1-codex-max":{id:"gpt-5.1-codex-max",name:"GPT-5.1 Codex Max (Azure)",provider:"azure",description:"Azure's most powerful code model for complex enterprise development",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.025,outputCostPer1K:.075,currency:"USD"},performance:{speed:"slow",quality:"high",accuracy:"high"},limits:{maxContextTokens:5e5,maxOutputTokens:128e3,maxRequestsPerMinute:50},useCases:{coding:10,creative:8,analysis:10,conversation:7,reasoning:10,translation:7,summarization:8},aliases:["azure-gpt-5.1-codex-max","gpt51-codex-max-azure","azure-enterprise"],deprecated:!1,isLocal:!1,releaseDate:"2025-12-01",category:"coding"},"gpt-5-pro":{id:"gpt-5-pro",name:"GPT-5 Pro (Azure)",provider:"azure",description:"Azure GPT-5 Pro with enhanced enterprise features",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.02,outputCostPer1K:.06,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:256e3,maxOutputTokens:64e3,maxRequestsPerMinute:100},useCases:{coding:10,creative:10,analysis:10,conversation:9,reasoning:10,translation:9,summarization:9},aliases:["azure-gpt-5-pro","gpt5-pro-azure"],deprecated:!1,isLocal:!1,releaseDate:"2025-08-07",category:"reasoning"},"gpt-5-turbo":{id:"gpt-5-turbo",name:"GPT-5 Turbo (Azure)",provider:"azure",description:"Azure GPT-5 Turbo optimized for fast responses",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.008,outputCostPer1K:.024,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:2e5,maxOutputTokens:32768,maxRequestsPerMinute:300},useCases:{coding:9,creative:9,analysis:9,conversation:9,reasoning:9,translation:9,summarization:9},aliases:["azure-gpt-5-turbo","gpt5-turbo-azure"],deprecated:!0,isLocal:!1,releaseDate:"2025-08-07",category:"general"}},eu={...Yq,...TTr()},Cm={},Object.values(eu).forEach(e=>{e.aliases.forEach(t=>{Cm[t.toLowerCase()]=e.id})}),Object.entries(GI).forEach(([e,t])=>{Cm[e.toLowerCase().replace(/_/g,"-")]=t}),Cm.local="llama3.2:latest",wLe={coding:["gpt-5.2-pro","claude-opus-4-5-20251101","gpt-5.2","codestral-latest","claude-sonnet-4-5-20250929"],creative:["gpt-5.2","claude-opus-4-5-20251101","gpt-5","gemini-2.5-pro"],analysis:["gpt-5.2-pro","gemini-2.5-pro","claude-opus-4-5-20251101","o3","amazon.nova-premier-v1:0"],conversation:["gpt-5.2-chat-latest","gpt-5","claude-sonnet-4-5-20250929","gpt-4o"],reasoning:["gpt-5.2-pro","gpt-5.2","o3","claude-opus-4-5-20251101","gemini-2.5-pro","deepseek-r1:70b"],translation:["gemini-2.5-pro","mistral-large-latest","gpt-5"],summarization:["gemini-2.5-flash","gpt-5-mini","claude-haiku-4-5-20251001"],"cost-effective":["gemini-2.5-flash","gpt-4o-mini","mistral-small-latest","amazon.nova-lite-v1:0"],"high-quality":["gpt-5.2-pro","gpt-5.2","claude-opus-4-5-20251101","gemini-2.5-pro"],fast:["gpt-5.2-chat-latest","gpt-5-mini","gemini-2.5-flash","claude-haiku-4-5-20251001","o3-mini"],local:["llama4:latest","deepseek-r1:70b","qwen3:72b","llama3.3:latest"],multimodal:["gpt-5.2","gpt-5.2-pro","claude-opus-4-5-20251101","gemini-2.5-pro","amazon.nova-premier-v1:0"]},TLe=[/sonnet[-_.]?5(?![0-9])/i,/opus[-_.]?4[-_.]?(?:[7-9]|\d{2,})(?![0-9])/i,/opus[-_.]?5(?![0-9])/i,/fable/i,/mythos/i]}});function Zu(e,t){if(e.output?.mode==="music")return"music";if(e.output?.mode==="avatar")return"avatar";if(e.output?.mode==="video")return"video";if(e.output?.mode==="ppt")return"ppt";const r=e.output?.format==="json"||e.output?.format==="structured"||e.output?.format==="text";return Kwr(t)&&!r?"image":e.tts?.enabled&&!e.tts?.useAiResponse?"tts-direct":"text"}var fh=S({"src/lib/core/resolveRequestKind.ts"(){"use strict";Lo()}}),Zq,ELe,SLe,Xq,_Le=S({"otel-stub:@opentelemetry/sdk-trace-base"(){Zq={setAttribute(){return this},setAttributes(){return this},addEvent(){return this},setStatus(){return this},updateName(){return this},end(){},isRecording(){return!1},recordException(){},spanContext(){return{traceId:"0",spanId:"0",traceFlags:0}}},ELe={startSpan(){return Zq},startActiveSpan(e,t,r){return(typeof t=="function"?t:r)(Zq)}},SLe=class{constructor(){}register(){}addSpanProcessor(){}getTracer(){return ELe}shutdown(){return Promise.resolve()}},Xq=class{onStart(){}onEnd(){}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}}}}),Qq,bLe=S({"otel-stub:@opentelemetry/exporter-trace-otlp-http"(){Qq=class{export(){}shutdown(){return Promise.resolve()}}}}),y1,e8=S({"otel-stub:@opentelemetry/resources"(){y1=e=>({attributes:e||{},merge(){return this}})}}),t8,r8,CLe=S({"otel-stub:@opentelemetry/semantic-conventions"(){t8="service.name",r8="service.version"}}),kLe={};ne(kLe,{ATTR_SERVICE_NAME:()=>nFe,ATTR_SERVICE_VERSION:()=>oFe,AsyncLocalStorageContextManager:()=>tFe,BasicTracerProvider:()=>ULe,BatchLogRecordProcessor:()=>ZLe,BatchSpanProcessor:()=>GLe,DiagConsoleLogger:()=>ILe,DiagLogLevel:()=>RLe,ExportResultCode:()=>ALe,INVALID_SPAN_CONTEXT:()=>LLe,LangfuseSpanProcessor:()=>JLe,LoggerProvider:()=>YLe,MeterProvider:()=>XLe,NodeSDK:()=>$Le,NodeTracerProvider:()=>BLe,OTLPLogExporter:()=>jLe,OTLPMetricExporter:()=>HLe,OTLPTraceExporter:()=>qLe,PeriodicExportingMetricReader:()=>QLe,ROOT_CONTEXT:()=>DLe,SEMRESATTRS_SERVICE_NAME:()=>sFe,SEMRESATTRS_SERVICE_VERSION:()=>iFe,SeverityNumber:()=>eFe,SimpleSpanProcessor:()=>zLe,SpanKind:()=>c8,SpanStatusCode:()=>a8,TraceFlags:()=>xLe,ValueType:()=>MLe,W3CTraceContextPropagator:()=>rFe,baggageEntryMetadataFromString:()=>FLe,context:()=>o8,default:()=>aFe,diag:()=>T1,getNodeAutoInstrumentations:()=>VLe,isSpanContextValid:()=>PLe,isValidSpanId:()=>NLe,isValidTraceId:()=>OLe,metrics:()=>i8,propagation:()=>s8,registerInstrumentations:()=>WLe,resourceFromAttributes:()=>KLe,trace:()=>n8});var v1,RS,w1,Ny,n8,o8,s8,i8,T1,ALe,a8,c8,xLe,ILe,RLe,MLe,PLe,DLe,OLe,NLe,LLe,FLe,$Le,ULe,BLe,zLe,GLe,qLe,jLe,HLe,VLe,WLe,KLe,JLe,YLe,ZLe,XLe,QLe,eFe,tFe,rFe,nFe,oFe,sFe,iFe,aFe,ATr=S({"otel-stub:@opentelemetry/context-async-hooks"(){v1={setAttribute(){return this},setAttributes(){return this},addEvent(){return this},setStatus(){return this},updateName(){return this},end(){},isRecording(){return!1},recordException(){},spanContext(){return{traceId:"0",spanId:"0",traceFlags:0}}},RS={startSpan(){return v1},startActiveSpan(e,t,r){return(typeof t=="function"?t:r)(v1)}},w1={createCounter(){return{add(){}}},createHistogram(){return{record(){}}},createUpDownCounter(){return{add(){}}},createObservableGauge(){return{addCallback(){}}}},Ny={getValue(){},setValue(){return Ny},deleteValue(){return Ny}},n8={getTracer(){return RS},getTracerProvider(){return{getTracer(){return RS}}},setGlobalTracerProvider(){},getSpan(){return v1},getActiveSpan(){},setSpan(e){return e},deleteSpan(e){return e},setSpanContext(e){return e},getSpanContext(){}},o8={active(){return Ny},with(e,t){return t()},bind(e,t){return t},setValue(){return Ny},getValue(){}},s8={inject(){},extract(e){return e},setGlobalPropagator(){},getBaggage(){},setBaggage(e){return e},createBaggage(){return{getAllEntries(){return[]},getEntry(){},setEntry(){return this},removeEntry(){return this}}}},i8={getMeter(){return w1},getMeterProvider(){return{getMeter(){return w1}}},setGlobalMeterProvider(){}},T1={setLogger(){},verbose(){},debug(){},info(){},warn(){},error(){},createComponentLogger(){return T1}},ALe={SUCCESS:0,FAILED:1},a8={UNSET:0,OK:1,ERROR:2},c8={INTERNAL:0,SERVER:1,CLIENT:2,PRODUCER:3,CONSUMER:4},xLe={NONE:0,SAMPLED:1},ILe=class{},RLe={NONE:0,ERROR:30,WARN:50,INFO:60,DEBUG:70,VERBOSE:80,ALL:9999},MLe={INT:0,DOUBLE:1},PLe=()=>!1,DLe=Ny,OLe=()=>!1,NLe=()=>!1,LLe={traceId:"0",spanId:"0",traceFlags:0},FLe=()=>({}),$Le=class{start(){}shutdown(){return Promise.resolve()}},ULe=class{constructor(){}register(){}addSpanProcessor(){}getTracer(){return RS}shutdown(){return Promise.resolve()}},BLe=class{register(){}addSpanProcessor(){}getTracer(){return RS}shutdown(){return Promise.resolve()}},zLe=class{onStart(){}onEnd(){}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}},GLe=class{onStart(){}onEnd(){}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}},qLe=class{export(){}shutdown(){return Promise.resolve()}},jLe=class{export(){}shutdown(){return Promise.resolve()}},HLe=class{constructor(){}export(){}shutdown(){return Promise.resolve()}},VLe=()=>[],WLe=()=>{},KLe=e=>({attributes:e||{},merge(){return this}}),JLe=class{onStart(){}onEnd(){}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}},YLe=class{constructor(){}getLogger(){return{emit(){}}}forceFlush(){return Promise.resolve()}shutdown(){return Promise.resolve()}},ZLe=class{onStart(){}onEnd(){}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}},XLe=class{constructor(){}getMeter(){return w1}addMetricReader(){}forceFlush(){return Promise.resolve()}shutdown(){return Promise.resolve()}},QLe=class{constructor(){}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}},eFe={UNSPECIFIED:0,TRACE:1,TRACE2:2,TRACE3:3,TRACE4:4,DEBUG:5,DEBUG2:6,DEBUG3:7,DEBUG4:8,INFO:9,INFO2:10,INFO3:11,INFO4:12,WARN:13,WARN2:14,WARN3:15,WARN4:16,ERROR:17,ERROR2:18,ERROR3:19,ERROR4:20,FATAL:21,FATAL2:22,FATAL3:23,FATAL4:24},tFe=class{enable(){return this}disable(){return this}},rFe=class{inject(){}extract(e){return e}fields(){return[]}},nFe="service.name",oFe="service.version",sFe="service.name",iFe="service.version",aFe={trace:n8,context:o8,propagation:s8,metrics:i8,diag:T1,SpanStatusCode:a8,SpanKind:c8}}}),l8={};ne(l8,{TelemetryService:()=>gh});var gh,MS=S({"src/lib/telemetry/telemetryService.ts"(){"use strict";Kt(),_Le(),bLe(),e8(),CLe(),U(),gh=class SA{static instance;tracerProvider;enabled=!1;initialized=!1;usingExternalTracerProvider=!1;meter;tracer;aiRequestCounter;aiRequestDuration;aiTokensUsed;aiProviderErrors;aiCostUsd;mcpToolCalls;connectionCounter;responseTimeHistogram;activeConnectionCount=0;errorCount=0;requestCount=0;totalResponseTime=0;responseTimeCount=0;constructor(){this.enabled=this.isTelemetryEnabled(),this.enabled?this.initializeTelemetry():p.debug("[Telemetry] Disabled - set NEUROLINK_TELEMETRY_ENABLED=true or configure OTEL_EXPORTER_OTLP_ENDPOINT to enable")}static getInstance(){return SA.instance||(SA.instance=new SA),SA.instance}isTelemetryEnabled(){return this.hasExternalTracerProvider()||process.env.NEUROLINK_TELEMETRY_ENABLED==="true"||process.env.OTEL_EXPORTER_OTLP_ENDPOINT!==void 0}hasExternalTracerProvider(){try{const t=lt.getTracerProvider();if(!t)return!1;const r=t.constructor?.name||"";if(r&&r!=="ProxyTracerProvider"&&r!=="NoopTracerProvider")return!0;const o=(typeof t.getDelegate=="function"?t.getDelegate():t._delegate)?.constructor?.name||"";return!!(o&&o!=="NoopTracerProvider")}catch(t){return p.warn("[Telemetry] Failed checking for external TracerProvider",{error:t instanceof Error?t.message:String(t)}),!1}}adoptExternalTracerProvider(t){this.usingExternalTracerProvider=!0,this.tracerProvider=void 0,this.meter=xp.getMeter("neurolink-ai"),this.tracer=lt.getTracer("neurolink-ai"),this.initializeMetrics(),p.debug("[Telemetry] Reusing externally managed TracerProvider",{reason:t,endpoint:process.env.OTEL_EXPORTER_OTLP_ENDPOINT})}initializeTelemetry(){try{if(this.hasExternalTracerProvider()){this.adoptExternalTracerProvider("global tracer provider already registered");return}const t=y1({[t8]:process.env.OTEL_SERVICE_NAME||"neurolink-ai",[r8]:process.env.OTEL_SERVICE_VERSION||"3.0.1"}),r=new Qq({url:process.env.OTEL_EXPORTER_OTLP_ENDPOINT?`${process.env.OTEL_EXPORTER_OTLP_ENDPOINT}/v1/traces`:void 0});this.tracerProvider=new SLe({resource:t,spanProcessors:[new Xq(r)]}),this.meter=xp.getMeter("neurolink-ai"),this.tracer=this.tracerProvider.getTracer("neurolink-ai"),this.initializeMetrics(),p.debug("[Telemetry] Initialized local telemetry exporter",{endpoint:process.env.OTEL_EXPORTER_OTLP_ENDPOINT,globalTracerProviderOwnedBy:"observability/instrumentation"})}catch(t){const r=t instanceof Error?t.message:String(t);if((r.includes("duplicate registration")||r.includes("already registered")||r.includes("already set"))&&this.hasExternalTracerProvider()){this.adoptExternalTracerProvider("duplicate global tracer registration detected");return}p.error("[Telemetry] Failed to initialize:",t),this.enabled=!1}}initializeMetrics(){!this.enabled||!this.meter||(this.aiRequestCounter=this.meter.createCounter("ai_requests_total",{description:"Total number of AI requests"}),this.aiRequestDuration=this.meter.createHistogram("ai_request_duration_ms",{description:"AI request duration in milliseconds"}),this.aiTokensUsed=this.meter.createCounter("ai_tokens_used_total",{description:"Total number of AI tokens used"}),this.aiCostUsd=this.meter.createCounter("ai_cost_usd_total",{description:"Total accumulated AI cost in USD"}),this.aiProviderErrors=this.meter.createCounter("ai_provider_errors_total",{description:"Total number of AI provider errors"}),this.mcpToolCalls=this.meter.createCounter("mcp_tool_calls_total",{description:"Total number of MCP tool calls"}),this.connectionCounter=this.meter.createCounter("connections_total",{description:"Total number of connections"}),this.responseTimeHistogram=this.meter.createHistogram("response_time_ms",{description:"Response time in milliseconds"}))}async initialize(){if(this.enabled){if(this.usingExternalTracerProvider){this.initialized=!0,p.debug("[Telemetry] External TracerProvider already initialized by host");return}if(!this.tracerProvider){this.initialized=!0,p.debug("[Telemetry] Tracer provider already prepared during constructor");return}try{try{const{AsyncLocalStorageContextManager:t}=await Promise.resolve().then(()=>(ATr(),kLe));lr.setGlobalContextManager(new t().enable())}catch{}this.initialized=!0,p.debug("[Telemetry] Tracer provider started successfully")}catch(t){p.error("[Telemetry] Failed to start:",t),this.enabled=!1,this.initialized=!1}}}async traceAIRequest(t,r,n="generate_text"){if(!this.enabled||!this.tracer)return await r();const o=this.tracer.startSpan(`ai.${t}.${n}`,{attributes:{"ai.provider":t,"ai.operation":n}});try{const s=await r();return o.setStatus({code:1}),s}catch(s){throw o.setStatus({code:2,message:s instanceof Error?s.message:"Unknown error"}),o.recordException(s),s}finally{o.end()}}recordAIRequest(t,r,n,o,s){if(this.requestCount++,this.totalResponseTime+=o,this.responseTimeCount++,!this.enabled||!this.aiRequestCounter)return;const i={provider:t,model:r};this.aiRequestCounter.add(1,i),this.aiRequestDuration?.record(o,i),this.aiTokensUsed?.add(n,i),s!==void 0&&Number.isFinite(s)&&s>0&&this.aiCostUsd?.add(s,i)}recordAIError(t,r){this.errorCount++,!(!this.enabled||!this.aiProviderErrors)&&this.aiProviderErrors.add(1,{provider:t,error:r.name,message:r.message.substring(0,100)})}recordMCPToolCall(t,r,n){!this.enabled||!this.mcpToolCalls||this.mcpToolCalls.add(1,{tool:t,success:n.toString(),duration_bucket:this.getDurationBucket(r)})}recordConnection(t){this.activeConnectionCount++,!(!this.enabled||!this.connectionCounter)&&this.connectionCounter.add(1,{connection_type:t})}recordConnectionClosed(t){this.activeConnectionCount=Math.max(0,this.activeConnectionCount-1),!(!this.enabled||!this.connectionCounter)&&this.connectionCounter.add(-1,{connection_type:t,event:"disconnect"})}recordResponseTime(t,r,n){this.totalResponseTime+=n,this.responseTimeCount++,!(!this.enabled||!this.responseTimeHistogram)&&this.responseTimeHistogram.record(n,{endpoint:t,method:r,status_bucket:this.getStatusBucket(n)})}recordCustomMetric(t,r,n){if(!this.enabled||!this.meter)return;this.meter.createCounter(`custom_${t}`,{description:`Custom metric: ${t}`}).add(r,n||{})}recordCustomHistogram(t,r,n){if(!this.enabled||!this.meter)return;this.meter.createHistogram(`custom_${t}_histogram`,{description:`Custom histogram: ${t}`}).record(r,n||{})}async getHealthMetrics(){const t=process.memoryUsage(),r=this.requestCount>0?this.errorCount/this.requestCount*100:0,n=this.responseTimeCount>0?this.totalResponseTime/this.responseTimeCount:0;return{timestamp:Date.now(),memoryUsage:t,uptime:process.uptime(),activeConnections:this.activeConnectionCount,errorRate:Math.round(r*100)/100,averageResponseTime:Math.round(n*100)/100}}isEnabled(){return this.enabled}getStatus(){return{enabled:this.enabled,initialized:this.initialized,endpoint:process.env.OTEL_EXPORTER_OTLP_ENDPOINT,service:process.env.OTEL_SERVICE_NAME||"neurolink-ai",version:process.env.OTEL_SERVICE_VERSION||"3.0.1"}}getDurationBucket(t){return t<100?"fast":t<500?"medium":t<1e3?"slow":"very_slow"}getStatusBucket(t){return t<200?"excellent":t<500?"good":t<1e3?"acceptable":"poor"}async shutdown(){if(this.enabled&&this.tracerProvider&&!this.usingExternalTracerProvider)try{await this.tracerProvider.shutdown(),this.initialized=!1,p.debug("[Telemetry] Tracer provider shutdown completed")}catch(t){p.error("[Telemetry] Error during shutdown:",t)}}}}});function Ti(e,t=cFe){let r;try{r=typeof e=="string"?e:JSON.stringify(e)??String(e)}catch{r=String(e)}if(r.length>t){const n=`...[truncated ${r.length-t} chars]`,o=Math.max(0,t-n.length);return`${r.slice(0,o)}${n}`}return r}var we,jn,cFe,E1=S({"src/lib/telemetry/attributes.ts"(){"use strict";we={GEN_AI_SYSTEM:"gen_ai.system",GEN_AI_MODEL:"gen_ai.request.model",GEN_AI_OPERATION:"gen_ai.operation.name",GEN_AI_INPUT_TOKENS:"gen_ai.usage.input_tokens",GEN_AI_OUTPUT_TOKENS:"gen_ai.usage.output_tokens",GEN_AI_FINISH_REASON:"gen_ai.response.finish_reason",GEN_AI_COST_USD:"gen_ai.cost_usd",GEN_AI_TOOL_NAME:"gen_ai.tool.name",GEN_AI_TEMPERATURE:"gen_ai.request.temperature",GEN_AI_MAX_TOKENS:"gen_ai.request.max_tokens",NL_PROVIDER:"neurolink.provider",NL_MODEL:"neurolink.model",NL_STREAM_MODE:"neurolink.stream_mode",NL_TOOL_COUNT:"neurolink.tool_count",NL_MESSAGE_COUNT:"neurolink.message_count",NL_HAS_TOOLS:"neurolink.has_tools",NL_INPUT_LENGTH:"neurolink.input_length",NL_OUTPUT_LENGTH:"neurolink.output_length",NL_REQUEST_ID:"neurolink.request_id",NL_PATH:"neurolink.path",NL_HAS_MEMORY:"neurolink.has_conversation_memory",NL_COST:"neurolink.cost",NL_STRUCTURED_OUTPUT:"neurolink.structured_output",NL_HAS_FALLBACK:"neurolink.has_fallback",MCP_SERVER_ID:"mcp.server_id",MCP_TOOL_NAME:"mcp.tool_name",MCP_TIMEOUT_MS:"mcp.timeout_ms",MCP_TRANSPORT:"mcp.transport",MCP_CIRCUIT_STATE:"mcp.circuit_state",SESSION_ID:"session.id",USER_ID:"user.id",MEMORY_TYPE:"memory.type",MESSAGE_COUNT:"message.count",CONTENT_LENGTH:"content.length",RAG_FILE_COUNT:"rag.file_count",RAG_STRATEGY:"rag.strategy",RAG_CHUNK_SIZE:"rag.chunk_size",RAG_TOP_K:"rag.top_k",RAG_RESULT_COUNT:"rag.result_count",MSG_COUNT:"message.build.count",MSG_HAS_IMAGES:"message.has_images",MSG_HAS_FILES:"message.has_files",MSG_HAS_SYSTEM_PROMPT:"message.has_system_prompt",MSG_TOTAL_CONTENT_LENGTH:"message.total_content_length",MSG_IS_MULTIMODAL:"message.is_multimodal",FILE_NAME:"file.name",FILE_MIMETYPE:"file.mimetype",FILE_SIZE_BYTES:"file.size_bytes",FILE_CATEGORY:"file.category",FILE_OUTPUT_LENGTH:"file.output_length",FILE_SUCCESS:"file.success",FILE_PROCESSOR_USED:"file.processor_used",FILE_CONFIDENCE:"file.detection_confidence",FILE_HAS_IMAGES:"file.has_images",FILE_IMAGE_COUNT:"file.image_count",FILE_ERROR:"file.error",FILE_SKIPPED_REASON:"file.skipped_reason",FILE_TOTAL_COUNT:"file.total_count",FILE_INCLUDED_COUNT:"file.included_count",FILE_CONTENT_TYPE:"file.content_type",VIDEO_DURATION_SEC:"video.duration_sec",VIDEO_WIDTH:"video.width",VIDEO_HEIGHT:"video.height",VIDEO_CODEC:"video.codec",VIDEO_AUDIO_CODEC:"video.audio_codec",VIDEO_FORMAT:"video.format",VIDEO_BITRATE:"video.bitrate",VIDEO_KEYFRAMES_EXTRACTED:"video.keyframes_extracted",VIDEO_TARGET_FRAMES:"video.target_frames",VIDEO_INTERVAL_SEC:"video.interval_sec",VIDEO_FRAME_QUALITY:"video.frame_quality",VIDEO_FRAME_RESIZE_PX:"video.frame_resize_px",VIDEO_FRAMES_RESIZED:"video.frames_resized",VIDEO_TOTAL_FRAME_BYTES:"video.total_frame_bytes",VIDEO_HAS_SUBTITLES:"video.has_subtitles",VIDEO_SUBTITLE_LENGTH:"video.subtitle_length",VIDEO_TEXT_CONTENT_LENGTH:"video.text_content_length",VIDEO_HAS_METADATA:"video.has_metadata",VIDEO_HAS_KEYFRAMES:"video.has_keyframes",VIDEO_TEMP_PATH:"video.temp_path",VIDEO_BYTES_WRITTEN:"video.bytes_written",VIDEO_WRITE_DURATION_MS:"video.write_duration_ms",VIDEO_STEP:"video.step",CONTEXT_STAGE:"context.compaction_stage",CONTEXT_TOKENS_BEFORE:"context.tokens_before",CONTEXT_TOKENS_AFTER:"context.tokens_after",MW_COUNT:"middleware.count",MW_NAMES:"middleware.names",AR_TAG:"autoresearch.tag",AR_BRANCH:"autoresearch.branch",AR_PHASE:"autoresearch.phase",AR_PHASE_FROM:"autoresearch.phase_from",AR_PHASE_TO:"autoresearch.phase_to",AR_RUN_COUNT:"autoresearch.run_count",AR_KEEP_COUNT:"autoresearch.keep_count",AR_STATUS:"autoresearch.status",AR_METRIC:"autoresearch.metric",AR_BEST_METRIC:"autoresearch.best_metric",AR_DIRECTION:"autoresearch.metric_direction",AR_COMMIT:"autoresearch.commit",AR_DURATION_MS:"autoresearch.duration_ms",AR_DESCRIPTION:"autoresearch.description",AR_ERROR_CODE:"autoresearch.error_code"},jn={TRACE_NAME:"langfuse.trace.name",TRACE_INPUT:"langfuse.trace.input",TRACE_OUTPUT:"langfuse.trace.output",OBSERVATION_TYPE:"langfuse.observation.type",OBSERVATION_INPUT:"langfuse.observation.input",OBSERVATION_OUTPUT:"langfuse.observation.output",OBSERVATION_METADATA:"langfuse.observation.metadata",OBSERVATION_MODEL_NAME:"langfuse.observation.model.name",OBSERVATION_MODEL_PARAMETERS:"langfuse.observation.model.parameters",OBSERVATION_USAGE_DETAILS:"langfuse.observation.usage_details",OBSERVATION_LEVEL:"langfuse.observation.level",OBSERVATION_STATUS_MESSAGE:"langfuse.observation.status_message",OBSERVATION_COMPLETION_START_TIME:"langfuse.observation.completion_start_time"},cFe=4e4}});async function xTr(){const{TelemetryService:e}=await Promise.resolve().then(()=>(MS(),l8)),t=e.getInstance();return t.isEnabled()&&(await t.initialize(),p.info("[NeuroLink] Telemetry initialized")),t}async function ITr(){const{TelemetryService:e}=await Promise.resolve().then(()=>(MS(),l8));return e.getInstance().getStatus()}var $a=S({"src/lib/telemetry/index.ts"(){"use strict";cr(),Pr(),E1(),U()}}),lFe={};ne(lFe,{MODEL_NAMES:()=>er,ModelConfigurationManager:()=>S1,modelConfig:()=>yh});var er,S1,yh,vh=S({"src/lib/core/modelConfiguration.ts"(){"use strict";U(),er={GOOGLE_AI:{FAST:"gemini-2.5-flash",BALANCED:"gemini-2.5-pro",QUALITY:"gemini-2.5-pro"},GOOGLE_VERTEX:{FAST:"gemini-2.5-flash",BALANCED:"gemini-2.5-pro",QUALITY:"gemini-2.5-pro"},OPENAI:{FAST:"gpt-4o-mini",BALANCED:"gpt-4o",QUALITY:"gpt-4o"},ANTHROPIC:{FAST:"claude-3-haiku-20240307",BALANCED:"claude-3-sonnet-20240229",QUALITY:"claude-3-5-sonnet-20241022"},VERTEX:{FAST:"gemini-2.5-flash",BALANCED:"gemini-2.5-pro",QUALITY:"gemini-2.5-pro"},BEDROCK:{FAST:"anthropic.claude-3-haiku-20240307-v1:0",BALANCED:"anthropic.claude-3-sonnet-20240229-v1:0",QUALITY:"anthropic.claude-3-opus-20240229-v1:0"},AZURE:{FAST:"gpt-4o-mini",BALANCED:"gpt-4o",QUALITY:"gpt-4o"},OLLAMA:{FAST:"llama3.2:latest",BALANCED:"llama3.1:8b",QUALITY:"llama3.1:70b"},HUGGINGFACE:{FAST:"microsoft/DialoGPT-medium",BALANCED:"microsoft/DialoGPT-large",QUALITY:"meta-llama/Llama-2-7b-chat-hf"},MISTRAL:{FAST:"mistral-small-latest",BALANCED:"mistral-medium-latest",QUALITY:"mistral-large-latest"}},S1=class _A{static instance;configurations=new Map;configSource="default";lastUpdated=Date.now();constructor(){this.loadDefaultConfigurations()}static getInstance(){return _A.instance||(_A.instance=new _A),_A.instance}createGoogleAIConfig(){return{provider:"google-ai",models:{fast:this.getConfigValue("GOOGLE_AI_FAST_MODEL",er.GOOGLE_AI.FAST),balanced:this.getConfigValue("GOOGLE_AI_BALANCED_MODEL",er.GOOGLE_AI.BALANCED),quality:this.getConfigValue("GOOGLE_AI_QUALITY_MODEL",er.GOOGLE_AI.QUALITY)},defaultCost:{input:this.parseFloat(process.env.GOOGLE_AI_DEFAULT_INPUT_COST,75e-6),output:this.parseFloat(process.env.GOOGLE_AI_DEFAULT_OUTPUT_COST,3e-4)},requiredEnvVars:["GOOGLE_AI_API_KEY"],performance:{speed:this.parseInt(process.env.GOOGLE_AI_SPEED_RATING,3),quality:this.parseInt(process.env.GOOGLE_AI_QUALITY_RATING,3),cost:this.parseInt(process.env.GOOGLE_AI_COST_RATING,3)},modelBehavior:{maxTokensIssues:this.getConfigArray("GOOGLE_AI_MAX_TOKENS_ISSUES",[er.GOOGLE_AI.FAST,er.GOOGLE_AI.BALANCED])}}}createVertexConfig(){return{provider:"google-vertex",models:{fast:this.getConfigValue("GOOGLE_VERTEX_FAST_MODEL",er.GOOGLE_VERTEX.FAST),balanced:this.getConfigValue("GOOGLE_VERTEX_BALANCED_MODEL",er.GOOGLE_VERTEX.BALANCED),quality:this.getConfigValue("GOOGLE_VERTEX_QUALITY_MODEL",er.GOOGLE_VERTEX.QUALITY)},defaultCost:{input:this.parseFloat(process.env.GOOGLE_VERTEX_DEFAULT_INPUT_COST,75e-6),output:this.parseFloat(process.env.GOOGLE_VERTEX_DEFAULT_OUTPUT_COST,3e-4)},requiredEnvVars:["GOOGLE_VERTEX_PROJECT_ID","GOOGLE_VERTEX_LOCATION"],performance:{speed:this.parseInt(process.env.GOOGLE_VERTEX_SPEED_RATING,3),quality:this.parseInt(process.env.GOOGLE_VERTEX_QUALITY_RATING,3),cost:this.parseInt(process.env.GOOGLE_VERTEX_COST_RATING,3)},modelBehavior:{maxTokensIssues:this.getConfigArray("GOOGLE_VERTEX_MAX_TOKENS_ISSUES",[er.GOOGLE_VERTEX.FAST,er.GOOGLE_VERTEX.BALANCED])}}}createOpenAIConfig(){return{provider:"openai",models:{fast:this.getConfigValue("OPENAI_FAST_MODEL",er.OPENAI.FAST),balanced:this.getConfigValue("OPENAI_BALANCED_MODEL",er.OPENAI.BALANCED),quality:this.getConfigValue("OPENAI_QUALITY_MODEL",er.OPENAI.QUALITY)},defaultCost:{input:this.parseFloat(process.env.OPENAI_DEFAULT_INPUT_COST,15e-5),output:this.parseFloat(process.env.OPENAI_DEFAULT_OUTPUT_COST,6e-4)},requiredEnvVars:["OPENAI_API_KEY"],performance:{speed:this.parseInt(process.env.OPENAI_SPEED_RATING,2),quality:this.parseInt(process.env.OPENAI_QUALITY_RATING,3),cost:this.parseInt(process.env.OPENAI_COST_RATING,2)},modelBehavior:{maxTokensIssues:this.getConfigArray("OPENAI_MAX_TOKENS_ISSUES",[]),specialHandling:this.getConfigObject("OPENAI_SPECIAL_HANDLING",{})}}}createAllProviderConfigurations(){return{"google-ai":this.createGoogleAIConfig(),"google-vertex":this.createVertexConfig(),openai:this.createOpenAIConfig(),anthropic:this.createAnthropicConfig(),vertex:this.createVertexAlternativeConfig(),bedrock:this.createBedrockConfig(),azure:this.createAzureConfig(),ollama:this.createOllamaConfig(),huggingface:this.createHuggingFaceConfig(),mistral:this.createMistralConfig()}}createAnthropicConfig(){return{provider:"anthropic",models:{fast:this.getConfigValue("ANTHROPIC_FAST_MODEL",er.ANTHROPIC.FAST),balanced:this.getConfigValue("ANTHROPIC_BALANCED_MODEL",er.ANTHROPIC.BALANCED),quality:this.getConfigValue("ANTHROPIC_QUALITY_MODEL",er.ANTHROPIC.QUALITY)},defaultCost:{input:this.parseFloat(process.env.ANTHROPIC_DEFAULT_INPUT_COST,.0015),output:this.parseFloat(process.env.ANTHROPIC_DEFAULT_OUTPUT_COST,.0075)},requiredEnvVars:["ANTHROPIC_API_KEY"],performance:{speed:this.parseInt(process.env.ANTHROPIC_SPEED_RATING,3),quality:this.parseInt(process.env.ANTHROPIC_QUALITY_RATING,4),cost:this.parseInt(process.env.ANTHROPIC_COST_RATING,2)},modelBehavior:{maxTokensIssues:this.getConfigArray("ANTHROPIC_MAX_TOKENS_ISSUES",[])}}}createVertexAlternativeConfig(){return{provider:"vertex",models:{fast:this.getConfigValue("VERTEX_FAST_MODEL",er.VERTEX.FAST),balanced:this.getConfigValue("VERTEX_BALANCED_MODEL",er.VERTEX.BALANCED),quality:this.getConfigValue("VERTEX_QUALITY_MODEL",er.VERTEX.QUALITY)},defaultCost:{input:this.parseFloat(process.env.VERTEX_DEFAULT_INPUT_COST,75e-6),output:this.parseFloat(process.env.VERTEX_DEFAULT_OUTPUT_COST,3e-4)},requiredEnvVars:["GOOGLE_VERTEX_PROJECT_ID","GOOGLE_VERTEX_LOCATION"],performance:{speed:this.parseInt(process.env.VERTEX_SPEED_RATING,3),quality:this.parseInt(process.env.VERTEX_QUALITY_RATING,4),cost:this.parseInt(process.env.VERTEX_COST_RATING,3)},modelBehavior:{maxTokensIssues:this.getConfigArray("VERTEX_MAX_TOKENS_ISSUES",[])}}}createBedrockConfig(){return{provider:"bedrock",models:{fast:this.getConfigValue("BEDROCK_FAST_MODEL",er.BEDROCK.FAST),balanced:this.getConfigValue("BEDROCK_BALANCED_MODEL",er.BEDROCK.BALANCED),quality:this.getConfigValue("BEDROCK_QUALITY_MODEL",er.BEDROCK.QUALITY)},defaultCost:{input:this.parseFloat(process.env.BEDROCK_DEFAULT_INPUT_COST,.0015),output:this.parseFloat(process.env.BEDROCK_DEFAULT_OUTPUT_COST,.0075)},requiredEnvVars:["AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY"],performance:{speed:this.parseInt(process.env.BEDROCK_SPEED_RATING,3),quality:this.parseInt(process.env.BEDROCK_QUALITY_RATING,4),cost:this.parseInt(process.env.BEDROCK_COST_RATING,3)},modelBehavior:{maxTokensIssues:this.getConfigArray("BEDROCK_MAX_TOKENS_ISSUES",[])}}}createAzureConfig(){return{provider:"azure",models:{fast:this.getConfigValue("AZURE_FAST_MODEL",er.AZURE.FAST),balanced:this.getConfigValue("AZURE_BALANCED_MODEL",er.AZURE.BALANCED),quality:this.getConfigValue("AZURE_QUALITY_MODEL",er.AZURE.QUALITY)},defaultCost:{input:this.parseFloat(process.env.AZURE_DEFAULT_INPUT_COST,15e-5),output:this.parseFloat(process.env.AZURE_DEFAULT_OUTPUT_COST,6e-4)},requiredEnvVars:["AZURE_API_KEY","AZURE_ENDPOINT"],performance:{speed:this.parseInt(process.env.AZURE_SPEED_RATING,2),quality:this.parseInt(process.env.AZURE_QUALITY_RATING,3),cost:this.parseInt(process.env.AZURE_COST_RATING,2)},modelBehavior:{maxTokensIssues:this.getConfigArray("AZURE_MAX_TOKENS_ISSUES",[])}}}createOllamaConfig(){return{provider:"ollama",models:{fast:this.getConfigValue("OLLAMA_FAST_MODEL",er.OLLAMA.FAST),balanced:this.getConfigValue("OLLAMA_BALANCED_MODEL",er.OLLAMA.BALANCED),quality:this.getConfigValue("OLLAMA_QUALITY_MODEL",er.OLLAMA.QUALITY)},defaultCost:{input:this.parseFloat(process.env.OLLAMA_DEFAULT_INPUT_COST,0),output:this.parseFloat(process.env.OLLAMA_DEFAULT_OUTPUT_COST,0)},requiredEnvVars:[],performance:{speed:this.parseInt(process.env.OLLAMA_SPEED_RATING,4),quality:this.parseInt(process.env.OLLAMA_QUALITY_RATING,2),cost:this.parseInt(process.env.OLLAMA_COST_RATING,5)},modelBehavior:{maxTokensIssues:this.getConfigArray("OLLAMA_MAX_TOKENS_ISSUES",[er.OLLAMA.FAST,er.OLLAMA.BALANCED,er.OLLAMA.QUALITY]),toolCapableModels:this.getConfigArray("OLLAMA_TOOL_CAPABLE_MODELS",["llama3.1","mistral","hermes3","qwen2.5","codellama","dolphin","openchat","solar"]),specialHandling:this.getConfigObject("OLLAMA_SPECIAL_HANDLING",{baseUrl:this.getConfigValue("OLLAMA_BASE_URL","http://localhost:11434")})}}}createHuggingFaceConfig(){return{provider:"huggingface",models:{fast:this.getConfigValue("HUGGINGFACE_FAST_MODEL",er.HUGGINGFACE.FAST),balanced:this.getConfigValue("HUGGINGFACE_BALANCED_MODEL",er.HUGGINGFACE.BALANCED),quality:this.getConfigValue("HUGGINGFACE_QUALITY_MODEL",er.HUGGINGFACE.QUALITY)},defaultCost:{input:this.parseFloat(process.env.HUGGINGFACE_DEFAULT_INPUT_COST,2e-4),output:this.parseFloat(process.env.HUGGINGFACE_DEFAULT_OUTPUT_COST,8e-4)},requiredEnvVars:["HUGGINGFACE_API_KEY"],performance:{speed:this.parseInt(process.env.HUGGINGFACE_SPEED_RATING,3),quality:this.parseInt(process.env.HUGGINGFACE_QUALITY_RATING,3),cost:this.parseInt(process.env.HUGGINGFACE_COST_RATING,4)},modelBehavior:{maxTokensIssues:this.getConfigArray("HUGGINGFACE_MAX_TOKENS_ISSUES",[])}}}createMistralConfig(){return{provider:"mistral",models:{fast:this.getConfigValue("MISTRAL_FAST_MODEL",er.MISTRAL.FAST),balanced:this.getConfigValue("MISTRAL_BALANCED_MODEL",er.MISTRAL.BALANCED),quality:this.getConfigValue("MISTRAL_QUALITY_MODEL",er.MISTRAL.QUALITY)},defaultCost:{input:this.parseFloat(process.env.MISTRAL_DEFAULT_INPUT_COST,1e-4),output:this.parseFloat(process.env.MISTRAL_DEFAULT_OUTPUT_COST,3e-4)},requiredEnvVars:["MISTRAL_API_KEY"],performance:{speed:this.parseInt(process.env.MISTRAL_SPEED_RATING,3),quality:this.parseInt(process.env.MISTRAL_QUALITY_RATING,3),cost:this.parseInt(process.env.MISTRAL_COST_RATING,4)},modelBehavior:{maxTokensIssues:this.getConfigArray("MISTRAL_MAX_TOKENS_ISSUES",[])}}}loadDefaultConfigurations(){const t=this.createAllProviderConfigurations();for(const[r,n]of Object.entries(t))this.configurations.set(r,n);p.debug(`Loaded ${this.configurations.size} provider configurations from ${this.configSource}`)}getConfigValue(t,r){const n=process.env[t];return n&&!this.isValidConfigValue(n)?(p.warn(`Environment variable ${t} has an invalid value: "${n}". Falling back to default value.`),r):n||r}isValidConfigValue(t){return!(/[<>;"'`${}]/.test(t)||t.length>500||t.includes("\0")||new RegExp("[\0-\b\v\f-\x7F]").test(t))}getConfigArray(t,r){const n=process.env[t];return n?n.split(",").map(o=>o.trim()).filter(Boolean):r}parseFloat(t,r){if(!t)return r;const n=Number.parseFloat(t);return Number.isNaN(n)?r:n}parseInt(t,r){if(!t)return r;const n=Number.parseInt(t,10);return Number.isNaN(n)?r:n}getConfigObject(t,r){const n=process.env[t];if(!n)return r;try{const o=JSON.parse(n);return typeof o=="object"&&o!==null?o:r}catch{return p.warn(`Invalid JSON in environment variable ${t}, using default`),r}}getProviderConfiguration(t){return this.configurations.get(t)||null}getAllConfigurations(){return new Map(this.configurations)}getModelForTier(t,r){return this.getProviderConfiguration(t)?.models[r]||null}getCostInfo(t,r){const n=this.getProviderConfiguration(t);return n?r&&n.modelConfigs?.[r]?n.modelConfigs[r].cost:n.defaultCost:null}isProviderAvailable(t){const r=this.getProviderConfiguration(t);return r?r.requiredEnvVars.length===0?!0:r.requiredEnvVars.some(n=>!!process.env[n]):!1}getAvailableProviders(){return Array.from(this.configurations.values()).filter(t=>this.isProviderAvailable(t.provider))}},yh=S1.getInstance()}});function RTr(e){return typeof e.input=="number"?e.input:typeof e.inputTokens=="number"?e.inputTokens:typeof e.promptTokens=="number"?e.promptTokens:0}function MTr(e){return typeof e.output=="number"?e.output:typeof e.outputTokens=="number"?e.outputTokens:typeof e.completionTokens=="number"?e.completionTokens:0}function PTr(e,t,r){return typeof e.total=="number"&&e.total>0?e.total:typeof e.totalTokens=="number"&&e.totalTokens>0?e.totalTokens:t+r}function DTr(e){if(typeof e.reasoningTokens=="number"&&e.reasoningTokens>0)return e.reasoningTokens;if(typeof e.thinkingTokens=="number"&&e.thinkingTokens>0)return e.thinkingTokens;if(typeof e.reasoning_tokens=="number"&&e.reasoning_tokens>0)return e.reasoning_tokens;if(typeof e.reasoning=="number"&&e.reasoning>0)return e.reasoning}function OTr(e){if(typeof e.cacheCreationInputTokens=="number"&&e.cacheCreationInputTokens>0)return e.cacheCreationInputTokens;if(typeof e.cacheCreationTokens=="number"&&e.cacheCreationTokens>0)return e.cacheCreationTokens;if(typeof e.inputTokenDetails?.cacheWriteTokens=="number"&&e.inputTokenDetails.cacheWriteTokens>0)return e.inputTokenDetails.cacheWriteTokens}function NTr(e){if(typeof e.cacheReadInputTokens=="number"&&e.cacheReadInputTokens>0)return e.cacheReadInputTokens;if(typeof e.cacheReadTokens=="number"&&e.cacheReadTokens>0)return e.cacheReadTokens;if(typeof e.cachedInputTokens=="number"&&e.cachedInputTokens>0)return e.cachedInputTokens;if(typeof e.inputTokenDetails?.cacheReadTokens=="number"&&e.inputTokenDetails.cacheReadTokens>0)return e.inputTokenDetails.cacheReadTokens}function LTr(e){const t=e.prompt_tokens_details?.cached_tokens;if(typeof t=="number"&&t>0)return t}function FTr(e,t){if(e===void 0||e<=0)return;const r=t+e;if(!(r<=0))return Math.round(e/r*100)}function _1(e,t={}){const{calculateCacheSavings:r=!0,missingOptionalBehavior:n="undefined"}=t;if(!e)return{input:0,output:0,total:0};const o=e.usage&&typeof e.usage=="object"?e.usage:e;let s=RTr(o);const i=MTr(o),a=DTr(o),c=OTr(o);let l=NTr(o);if(l===void 0){const h=LTr(o);h!==void 0&&h<=s&&(l=h,s=Math.max(0,s-h))}if((l!==void 0||c!==void 0)&&o.cacheReadInputTokens===void 0&&o.cacheReadTokens===void 0&&o.cacheCreationInputTokens===void 0&&o.cacheCreationTokens===void 0&&o.prompt_tokens_details?.cached_tokens===void 0&&(o.cachedInputTokens!==void 0||o.inputTokenDetails!==void 0)){const h=o.inputTokenDetails?.noCacheTokens;typeof h=="number"?s=h:s=Math.max(0,s-(l??0)-(o.inputTokenDetails?.cacheWriteTokens??0))}const u=PTr(o,s+(l??0)+(c??0),i),d=r?FTr(l,s):void 0,m={input:s,output:i,total:u};return n==="zero"?(m.cacheCreationTokens=c??0,m.cacheReadTokens=l??0,m.reasoning=a??0,m.cacheSavingsPercent=d??0):(c!==void 0&&(m.cacheCreationTokens=c),l!==void 0&&(m.cacheReadTokens=l),a!==void 0&&(m.reasoning=a),d!==void 0&&(m.cacheSavingsPercent=d)),m}function uFe(){return{input:0,output:0,total:0}}var b1=S({"src/lib/utils/tokenUtils.ts"(){"use strict"}});function $Tr(){return Object.fromEntries(fy().flatMap(e=>{const t=r=>r.toLowerCase().replace(/[^a-z]/g,"");return[[t(e.id),e.id],...e.aliases.map(r=>[t(r),e.id])]}))}function UTr(e,t){return!e.startsWith(t)||e===t?!1:hFe.test(e.slice(t.length))}function BTr(e,t){const r=gLe(e);return r?Object.prototype.hasOwnProperty.call(r.models,t)?!0:Object.values(r.models).some(n=>n.aliases.includes(t)):!1}function dFe(e,t,r){const n=e.toLowerCase().replace(/[^a-z]/g,""),o=pFe[n]??n;if(o==="__cross_provider__"){for(const l of Object.values(DS)){if(l[t])return r&&(r.exact=!0),l[t];const u=Object.keys(l).sort((h,f)=>f.length-h.length),d=u.find(h=>h.startsWith(t));if(d)return l[d];const m=u.find(h=>t.startsWith(h));if(m)return l[m]}return}const s=DS[o]||DS[e];if(!s)return;const i=n==="bedrock"||n==="amazonbedrock"?t.replace(/^.*\banthropic\./,""):t;if(BTr(o,i)){const l=vTr(o,i);if(l?.pricingPerMTok)return r&&(r.exact=!0),{input:l.pricingPerMTok.input/1e6,output:l.pricingPerMTok.output/1e6,cacheRead:l.pricingPerMTok.cacheRead!==void 0?l.pricingPerMTok.cacheRead/1e6:void 0,cacheCreation:l.pricingPerMTok.cacheWrite!==void 0?l.pricingPerMTok.cacheWrite/1e6:void 0}}if(s[i])return r&&(r.exact=!0),s[i];const c=Object.keys(s).filter(l=>l!=="_default").sort((l,u)=>u.length-l.length).find(l=>i.startsWith(l));if(c)return r&&UTr(i,c)&&(r.exact=!0),s[c];if(o==="vertex"&&t.startsWith("gemini")){const l=DS.google;if(l){if(l[t])return r&&(r.exact=!0),l[t];const d=Object.keys(l).sort((m,h)=>h.length-m.length).find(m=>t.startsWith(m));if(d)return l[d]}}if(s._default)return s._default}function Ua(e,t,r){const n=dFe(e,t);if(!n)return 0;let o=0;return o+=(r.input||0)*n.input,o+=(r.output||0)*n.output,r.cacheReadTokens&&(o+=r.cacheReadTokens*(n.cacheRead??n.input)),r.cacheCreationTokens&&n.cacheCreation&&(o+=r.cacheCreationTokens*n.cacheCreation),Math.round(o*1e6)/1e6}function PS(e,t){const r=dFe(e,t);return r?r.input>0||r.output>0||(r.cacheRead??0)>0||(r.cacheCreation??0)>0:!1}var mFe,DS,pFe,hFe,tl=S({"src/lib/utils/pricing.ts"(){"use strict";g1(),gy(),mFe=Object.fromEntries(fy().flatMap(e=>{const t=Object.fromEntries(Object.entries(e.models.catalog).flatMap(([n,o])=>o.pricingPerMTok?[[n,{input:o.pricingPerMTok.input/1e6,output:o.pricingPerMTok.output/1e6,...o.pricingPerMTok.cachedInput!==void 0?{cacheRead:o.pricingPerMTok.cachedInput/1e6}:{}}]]:[]));if(Object.keys(t).length===0)return[];const r=e.models.catalog[e.models.default]?.pricingPerMTok;return[[e.id,{...r?{_default:{input:r.input/1e6,output:r.output/1e6,...r.cachedInput!==void 0?{cacheRead:r.cachedInput/1e6}:{}}}:{},...t}]]})),DS={anthropic:{"claude-fable-5":{input:10/1e6,output:50/1e6,cacheRead:1/1e6,cacheCreation:12.5/1e6},"claude-mythos-5":{input:10/1e6,output:50/1e6,cacheRead:1/1e6,cacheCreation:12.5/1e6},"claude-opus-5":{input:5/1e6,output:25/1e6,cacheRead:.5/1e6,cacheCreation:6.25/1e6},"claude-opus-4-8":{input:5/1e6,output:25/1e6,cacheRead:.5/1e6,cacheCreation:6.25/1e6},"claude-opus-4-7":{input:5/1e6,output:25/1e6,cacheRead:.5/1e6,cacheCreation:6.25/1e6},"claude-sonnet-5":{input:2/1e6,output:10/1e6,cacheRead:.2/1e6,cacheCreation:2.5/1e6},"claude-opus-4-6":{input:5/1e6,output:25/1e6,cacheRead:.5/1e6,cacheCreation:6.25/1e6},"claude-sonnet-4-6":{input:3/1e6,output:15/1e6,cacheRead:.3/1e6,cacheCreation:3.75/1e6},"claude-sonnet-4-5-20250929":{input:3/1e6,output:15/1e6,cacheRead:.3/1e6,cacheCreation:3.75/1e6},"claude-sonnet-4-5":{input:3/1e6,output:15/1e6,cacheRead:.3/1e6,cacheCreation:3.75/1e6},"claude-opus-4-5":{input:5/1e6,output:25/1e6,cacheRead:.5/1e6,cacheCreation:6.25/1e6},"claude-haiku-4-5-20251001":{input:1/1e6,output:5/1e6,cacheRead:.1/1e6,cacheCreation:1.25/1e6},"claude-haiku-4-5":{input:1/1e6,output:5/1e6,cacheRead:.1/1e6,cacheCreation:1.25/1e6},"claude-opus-4-1":{input:15/1e6,output:75/1e6,cacheRead:1.5/1e6,cacheCreation:18.75/1e6},"claude-opus-4":{input:15/1e6,output:75/1e6,cacheRead:1.5/1e6,cacheCreation:18.75/1e6},"claude-sonnet-4":{input:3/1e6,output:15/1e6,cacheRead:.3/1e6,cacheCreation:3.75/1e6},"claude-3-7-sonnet":{input:3/1e6,output:15/1e6,cacheRead:.3/1e6,cacheCreation:3.75/1e6},"claude-3-5-sonnet":{input:3/1e6,output:15/1e6,cacheRead:.3/1e6,cacheCreation:3.75/1e6},"claude-3-5-haiku":{input:.8/1e6,output:4/1e6,cacheRead:.08/1e6,cacheCreation:1/1e6},"claude-3-opus":{input:15/1e6,output:75/1e6,cacheRead:1.5/1e6,cacheCreation:18.75/1e6},"claude-3-sonnet":{input:3/1e6,output:15/1e6,cacheRead:.3/1e6,cacheCreation:3.75/1e6},"claude-3-haiku":{input:.25/1e6,output:1.25/1e6,cacheRead:.025/1e6,cacheCreation:.3125/1e6}},vertex:{"claude-sonnet-4-6":{input:3/1e6,output:15/1e6,cacheRead:.3/1e6,cacheCreation:3.75/1e6},"claude-opus-4-6":{input:5/1e6,output:25/1e6,cacheRead:.5/1e6,cacheCreation:6.25/1e6},"claude-sonnet-4-5":{input:3/1e6,output:15/1e6,cacheRead:.3/1e6,cacheCreation:3.75/1e6},"claude-opus-4-5":{input:5/1e6,output:25/1e6,cacheRead:.5/1e6,cacheCreation:6.25/1e6},"claude-haiku-4-5":{input:1/1e6,output:5/1e6,cacheRead:.1/1e6,cacheCreation:1.25/1e6},"claude-3-5-haiku":{input:.8/1e6,output:4/1e6,cacheRead:.08/1e6,cacheCreation:1/1e6},"claude-3-5-sonnet":{input:3/1e6,output:15/1e6,cacheRead:.3/1e6,cacheCreation:3.75/1e6}},openai:{"gpt-5.6-sol":{input:5/1e6,output:30/1e6,cacheRead:.5/1e6,cacheCreation:6.25/1e6},"gpt-5.6-terra":{input:2/1e6,output:12/1e6,cacheRead:.2/1e6,cacheCreation:2.5/1e6},"gpt-5.6-luna":{input:.2/1e6,output:1.2/1e6,cacheRead:.02/1e6,cacheCreation:.25/1e6},"gpt-5.5":{input:5/1e6,output:30/1e6,cacheRead:.5/1e6},"gpt-5.4":{input:2.5/1e6,output:15/1e6,cacheRead:.625/1e6},"gpt-5.2":{input:1.75/1e6,output:14/1e6,cacheRead:.4375/1e6},"gpt-5.1":{input:.625/1e6,output:5/1e6,cacheRead:.15625/1e6},"gpt-5.1-codex":{input:1.25/1e6,output:10/1e6,cacheRead:.3125/1e6},"gpt-5":{input:1.25/1e6,output:10/1e6,cacheRead:.3125/1e6},"gpt-5-mini":{input:.25/1e6,output:2/1e6,cacheRead:.0625/1e6},"gpt-5-nano":{input:.05/1e6,output:.4/1e6,cacheRead:.0125/1e6},"gpt-4.1":{input:2/1e6,output:8/1e6,cacheRead:.5/1e6},"gpt-4.1-mini":{input:.4/1e6,output:1.6/1e6,cacheRead:.1/1e6},"gpt-4.1-nano":{input:.1/1e6,output:.4/1e6,cacheRead:.025/1e6},"gpt-4o":{input:2.5/1e6,output:10/1e6,cacheRead:.625/1e6},"gpt-4o-mini":{input:.15/1e6,output:.6/1e6,cacheRead:.0375/1e6},o3:{input:2/1e6,output:8/1e6,cacheRead:.5/1e6},"o3-mini":{input:1.1/1e6,output:4.4/1e6,cacheRead:.275/1e6},"o4-mini":{input:1.1/1e6,output:4.4/1e6,cacheRead:.275/1e6},o1:{input:15/1e6,output:60/1e6,cacheRead:3.75/1e6},"o1-mini":{input:.55/1e6,output:2.2/1e6,cacheRead:.1375/1e6},"gpt-4-turbo":{input:10/1e6,output:30/1e6},"gpt-4":{input:30/1e6,output:60/1e6},"gpt-3.5-turbo":{input:.5/1e6,output:1/1e6}},google:{"gemini-3.1-pro-preview":{input:2/1e6,output:12/1e6,cacheRead:.5/1e6},"gemini-3.1-flash-lite-preview":{input:.25/1e6,output:1.5/1e6,cacheRead:.0625/1e6},"gemini-3.1-flash-image-preview":{input:.5/1e6,output:3/1e6,cacheRead:.125/1e6},"gemini-3.1-pro-preview-customtools":{input:2/1e6,output:12/1e6,cacheRead:.5/1e6},"gemini-3-flash-preview":{input:.5/1e6,output:3/1e6,cacheRead:.125/1e6},"gemini-3-pro-image-preview":{input:2/1e6,output:12/1e6,cacheRead:.5/1e6},"gemini-3-pro-preview":{input:2/1e6,output:12/1e6,cacheRead:.5/1e6},"gemini-2.5-flash":{input:.3/1e6,output:2.5/1e6,cacheRead:.075/1e6},"gemini-2.5-pro":{input:1.25/1e6,output:10/1e6,cacheRead:.3125/1e6},"gemini-2.5-flash-lite":{input:.1/1e6,output:.4/1e6,cacheRead:.025/1e6},"gemini-2.0-flash":{input:.15/1e6,output:.6/1e6,cacheRead:.0375/1e6},"gemini-2.0-flash-lite":{input:.075/1e6,output:.3/1e6,cacheRead:.01875/1e6},"gemini-1.5-pro":{input:1.25/1e6,output:5/1e6,cacheRead:.3125/1e6},"gemini-1.5-flash":{input:.075/1e6,output:.3/1e6,cacheRead:.01875/1e6}},mistral:{"mistral-large":{input:2/1e6,output:6/1e6},"mistral-medium":{input:2.7/1e6,output:8.1/1e6},"mistral-small":{input:.2/1e6,output:.6/1e6},codestral:{input:.3/1e6,output:.9/1e6},"open-mistral-nemo":{input:.15/1e6,output:.15/1e6}},deepseek:{"deepseek-chat":{input:.27/1e6,output:1.1/1e6,cacheRead:.07/1e6},"deepseek-reasoner":{input:.55/1e6,output:2.19/1e6,cacheRead:.14/1e6}},"nvidia-nim":{"openai/gpt-oss-20b":{input:.05/1e6,output:.2/1e6},"meta/llama-3.3-70b-instruct":{input:.4/1e6,output:.4/1e6},"meta/llama-3.1-405b-instruct":{input:1.79/1e6,output:1.79/1e6},"meta/llama-3.1-70b-instruct":{input:.4/1e6,output:.4/1e6},"meta/llama-3.2-90b-vision-instruct":{input:.5/1e6,output:.5/1e6},"nvidia/llama-3.3-nemotron-super-49b-v1":{input:.3/1e6,output:.3/1e6},"deepseek-ai/deepseek-r1":{input:.55/1e6,output:2.19/1e6},"mistralai/mixtral-8x22b-instruct-v0.1":{input:.6/1e6,output:.6/1e6},"mistralai/mixtral-8x7b-instruct-v0.1":{input:.24/1e6,output:.24/1e6},"microsoft/phi-4":{input:.07/1e6,output:.07/1e6},"google/gemma-3-27b-it":{input:.07/1e6,output:.07/1e6}},"lm-studio":{_default:{input:0,output:0}},llamacpp:{_default:{input:0,output:0}},...mFe,cohere:{_default:{input:2.5/1e6,output:10/1e6},"command-r-plus":{input:2.5/1e6,output:10/1e6},"command-r":{input:.15/1e6,output:.6/1e6},"command-r7b-12-2024":{input:.0375/1e6,output:.15/1e6}},fireworks:{_default:{input:.9/1e6,output:.9/1e6},"accounts/fireworks/models/llama-v3p1-70b-instruct":{input:.9/1e6,output:.9/1e6},"accounts/fireworks/models/llama-v3p1-405b-instruct":{input:3/1e6,output:3/1e6},"accounts/fireworks/models/llama-v3p1-8b-instruct":{input:.2/1e6,output:.2/1e6},"accounts/fireworks/models/llama-v3p3-70b-instruct":{input:.9/1e6,output:.9/1e6},"accounts/fireworks/models/mixtral-8x22b-instruct":{input:1.2/1e6,output:1.2/1e6},"accounts/fireworks/models/qwen2p5-72b-instruct":{input:.9/1e6,output:.9/1e6},"accounts/fireworks/models/qwen2p5-coder-32b-instruct":{input:.9/1e6,output:.9/1e6},"accounts/fireworks/models/deepseek-v3":{input:.75/1e6,output:3/1e6}},cloudflare:{_default:{input:.011/1e6,output:.011/1e6}},replicate:{_default:{input:.5/1e6,output:1.5/1e6}},voyage:{_default:{input:.18/1e6,output:0},"voyage-3.5":{input:.06/1e6,output:0},"voyage-3.5-lite":{input:.02/1e6,output:0},"voyage-3-large":{input:.18/1e6,output:0},"voyage-code-3":{input:.18/1e6,output:0},"voyage-finance-2":{input:.12/1e6,output:0},"voyage-law-2":{input:.12/1e6,output:0},"voyage-multilingual-2":{input:.12/1e6,output:0}},jina:{_default:{input:.02/1e6,output:0},"jina-embeddings-v3":{input:.02/1e6,output:0},"jina-reranker-v2-base-multilingual":{input:.05/1e6,output:0}},stability:{_default:{input:0,output:.04/1e3}},ideogram:{_default:{input:0,output:.08/1e3}},recraft:{_default:{input:0,output:.04/1e3}}},pFe={googleai:"google",googleaistudio:"google",googlevertex:"vertex",anthropic:"anthropic",openai:"openai",vertex:"vertex",google:"google",azure:"openai",azureopenai:"openai",bedrock:"anthropic",amazonbedrock:"anthropic",litellm:"__cross_provider__",openrouter:"__cross_provider__",openaicompatible:"__cross_provider__",deepseek:"deepseek",nvidianim:"nvidia-nim",nim:"nvidia-nim",nvidia:"nvidia-nim",lmstudio:"lm-studio",llamacpp:"llamacpp",cohere:"cohere",replicate:"replicate",voyage:"voyage",voyageai:"voyage",jina:"jina",jinaai:"jina",stability:"stability",stabilityai:"stability",sd:"stability",ideogram:"ideogram",recraft:"recraft",...$Tr(),mistralai:"mistral"},hFe=/^[-@](\d{8}|v\d+(:\d+)?|latest)([-@:](\d{8}|v\d+(:\d+)?))*$/}}),fFe={};ne(fFe,{createAnalytics:()=>Ly});function Ly(e,t,r,n,o){const s="createAnalytics";try{const i=zTr(r),a=GTr(e,t,i),c=r,l=Array.isArray(c.toolExecutions)?c.toolExecutions.length:Array.isArray(c.toolsUsed)?c.toolsUsed.length:void 0,u={provider:e,model:t,tokenUsage:i,cost:a,requestDuration:n,context:o,timestamp:new Date().toISOString(),...typeof c.stepsUsed=="number"&&{stepsUsed:c.stepsUsed},...l!==void 0&&{toolCallCount:l},...typeof c.stopReason=="string"&&{stopReason:c.stopReason},...typeof c.responseTime=="number"&&{elapsedMs:c.responseTime},...typeof c.rawFinishReason=="string"&&{rawFinishReason:c.rawFinishReason}};return p.debug(`[${s}] Analytics created`,{provider:e,model:t,tokens:i.total,responseTime:n,cost:a}),u}catch(i){return p.error(`[${s}] Failed to create analytics`,{error:i}),{provider:e,model:t,tokenUsage:{input:0,output:0,total:0},requestDuration:n,context:o,timestamp:new Date().toISOString()}}}function zTr(e){return _1(e.usage)}function GTr(e,t,r){try{if(PS(e,t))return Ua(e,t,r);const n=yh.getCostInfo(e.toLowerCase(),t);if(!n)return;const o=(r.input+(r.cacheReadTokens??0)+(r.cacheCreationTokens??0))/1e3*n.input,s=r.output/1e3*n.output;return Math.round((o+s)*1e6)/1e6}catch(n){p.debug("Cost estimation failed",{provider:e,model:t,error:n});return}}var OS=S({"src/lib/core/analytics.ts"(){"use strict";U(),vh(),b1(),tl()}});function u8(e){if(e&&typeof e.timeoutMs=="number"&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>=0)return e.timeoutMs;const t=process.env.NEUROLINK_LIFECYCLE_TIMEOUT_MS;if(t){const r=Number(t);if(Number.isFinite(r)&&r>=0)return r}return gFe}var gFe,yFe=S({"src/lib/utils/lifecycleTimeout.ts"(){"use strict";gFe=5e3}}),wh,Fy=S({"src/lib/core/handlerRegistry.ts"(){"use strict";U(),Qt(),wh=class{constructor(e){this.scopeName=e}scopeName;handlers=new Map;register(e,t){if(!e)throw new Error("Provider name is required");if(!t)throw new Error("Handler is required");const r=e.toLowerCase();this.handlers.has(r)&&p.warn(`[${this.scopeName}] Overwriting existing handler for provider: ${qr(r)}`),this.handlers.set(r,t)}supports(e){return e?this.handlers.has(e.toLowerCase()):!1}get(e){return this.handlers.get(e.toLowerCase())}list(){return Array.from(this.handlers.keys())}clear(){this.handlers.clear(),p.debug(`[${this.scopeName}] Cleared all handlers`)}}}});function vFe(e){e!==null&&typeof e=="object"&&typeof e.then=="function"&&typeof e.catch=="function"&&e.catch(()=>{})}function C1(e,t){return Object.defineProperty(e,d8,{value:t,enumerable:!1,configurable:!0,writable:!0}),e}function $y(e){if(e!=null&&!(typeof e!="object"&&typeof e!="function"))try{const t=e[d8];if(typeof t!="function")return;vFe(t())}catch{}}function k1(e){try{const t=e.return;if(typeof t!="function")return;vFe(t.call(e,void 0))}catch{}}var d8,A1=S({"src/lib/utils/streamCancellation.ts"(){"use strict";d8=Symbol.for("neurolink.streamCancel")}}),wFe={};ne(wFe,{IncrementalTTSSynthesisError:()=>x1,TTSError:()=>kt,TTSProcessor:()=>rl,TTS_ERROR_CODES:()=>Ot});function Uy(e){try{return e instanceof Error?String(e.message):String(e)}catch{return"[unprintable error]"}}function TFe(e,t){try{return e instanceof t}catch{return!1}}function qTr(e,t){if(TFe(e,Error))try{return String(e.name),String(e.message),String(e.stack),e}catch{return new Error(t)}}function jTr(e){if(!TFe(e,kt))return!1;try{return String(e.name),String(e.message),String(e.code),e.retriable,String(e.stack),!0}catch{return!1}}function HTr(e){const t=[];for(const r of e.matchAll(SFe))t.push((r.index??0)+r[0].length);return t}function VTr(e,t){if(t<=1||t>=e.length)return t;const r=e.charCodeAt(t-1),n=e.charCodeAt(t);return r>=_Fe&&r<=bFe&&n>=CFe&&n<=kFe?t-1:t}function WTr(e,t,r,n){const o=e.slice(0,r),s=HTr(o);let i=e.length>=t?s.at(-1):void 0;if(i===void 0&&e.length>=r&&(i=s.at(-1)??r),i===void 0&&n&&e.trim()&&(i=Math.min(e.length,r)),i===void 0)return;i=VTr(e,i);const a=e.slice(0,i).trim(),c=e.slice(i).trimStart();return a?{segment:a,remainder:c}:{segment:"",remainder:c}}function KTr(e,t){try{return new kt({...e,originalError:t})}catch{return new kt(e)}}var Ot,EFe,SFe,x1,_Fe,bFe,CFe,kFe,kt,rl,yc=S({"src/lib/utils/ttsProcessor.ts"(){"use strict";U(),ut(),tt(),Fy(),A1(),qn(),Ot={EMPTY_TEXT:"TTS_EMPTY_TEXT",TEXT_TOO_LONG:"TTS_TEXT_TOO_LONG",PROVIDER_NOT_SUPPORTED:"TTS_PROVIDER_NOT_SUPPORTED",PROVIDER_NOT_CONFIGURED:"TTS_PROVIDER_NOT_CONFIGURED",SYNTHESIS_FAILED:"TTS_SYNTHESIS_FAILED",INVALID_INPUT:"TTS_INVALID_INPUT"},EFe=120,SFe=/[.!?]+(?:["')\]]+)?(?=\s|$)/g,x1=class extends Error{firstError;failedSegments;constructor(e,t){super(`Incremental TTS failed for ${t.length} segment${t.length===1?"":"s"}`),this.name="IncrementalTTSSynthesisError",this.firstError=e,this.failedSegments=[...t]}},_Fe=55296,bFe=56319,CFe=56320,kFe=57343,kt=class extends be{constructor(e){super({code:e.code,message:e.message,category:e.category??"validation",severity:e.severity??"medium",retriable:e.retriable??!1,context:e.context,originalError:e.originalError}),this.name="TTSError"}},rl=class{static registry=new wh("TTSProcessor");static DEFAULT_MAX_TEXT_LENGTH=3e3;static registerHandler(e,t){const r=e&&e.toLowerCase();this.registry.register(e,t),p.debug(`[TTSProcessor] Registered TTS handler for provider: ${r}`)}static getHandler(e){return this.registry.get(e)}static listProviders(){return this.registry.list()}static clearHandlers(){this.registry.clear()}static supports(e){if(!e)return p.error("[TTSProcessor] Provider name is required for supports check"),!1;const t=this.registry.supports(e);return t||p.debug(`[TTSProcessor] Provider ${e} is not supported`),t}static async synthesize(e,t,r){const n=_e.createSpan("tts","tts.synthesize",{"tts.operation":"synthesize","tts.provider":t,"tts.voice":r.voice,"tts.format":r.format});try{const o=e.trim();if(!o)throw p.error("[TTSProcessor] Text is required for synthesis"),new kt({code:Ot.EMPTY_TEXT,message:"Text is required for TTS synthesis",severity:"low",retriable:!1,context:{provider:t}});const s=this.getHandler(t);if(!s)throw p.error(`[TTSProcessor] Provider "${t}" is not registered`),new kt({code:Ot.PROVIDER_NOT_SUPPORTED,message:`TTS provider "${t}" is not supported. Use TTSProcessor.registerHandler() to register it.`,severity:"high",retriable:!1,context:{provider:t,availableProviders:this.registry.list()}});const i=s.maxTextLength??this.DEFAULT_MAX_TEXT_LENGTH;if(o.length>i)throw p.error(`[TTSProcessor] Text exceeds maximum length of ${i} characters for provider "${t}"`),new kt({code:Ot.TEXT_TOO_LONG,message:`Text length (${o.length}) exceeds maximum allowed length (${i} characters) for provider "${t}"`,severity:"medium",retriable:!1,context:{provider:t,textLength:o.length,maxLength:i}});if(!s.isConfigured())throw p.warn(`[TTSProcessor] Provider "${t}" is not properly configured`),new kt({code:Ot.PROVIDER_NOT_CONFIGURED,message:`TTS provider "${t}" is not configured. Please set the required API keys.`,category:"configuration",severity:"high",retriable:!1,context:{provider:t}});p.debug(`[TTSProcessor] Starting synthesis with provider: ${t}`);const a=await s.synthesize(o,r),c={...a,voice:a.voice??r.voice};p.info(`[TTSProcessor] Successfully synthesized ${a.size} bytes of audio`);const l=_e.endSpan(n,1);return ot().recordSpan(l),c}catch(o){const s=_e.endSpan(n,2,Uy(o));throw ot().recordSpan(s),this.toSynthesisError(o,t,e,r)}}static toSynthesisError(e,t,r,n){if(jTr(e))return e;const o=e?Uy(e):"Unknown error";return p.error(`[TTSProcessor] Synthesis failed for provider "${t}": ${o}`),KTr({code:Ot.SYNTHESIS_FAILED,message:`TTS synthesis failed for provider "${t}": ${o}`,category:"execution",severity:"high",retriable:!0,context:{provider:t,textLength:r.trim().length,options:n}},qTr(e,o))}static startSynthesisSpan(e,t){return _e.createSpan("tts","tts.synthesize",{"tts.operation":"synthesize","tts.provider":e,"tts.voice":t.voice,"tts.format":t.format})}static finishSynthesisSpan(e,t,r){ot().recordSpan(_e.endSpan(e,t,r))}static isCallableMember(e){return typeof e=="function"}static isNativeStream(e){return e===null||typeof e!="object"&&typeof e!="function"?!1:typeof e[Symbol.asyncIterator]=="function"}static normalizeNativeChunk(e,t){if(e===null||typeof e!="object")return;const r=e,n=r.data;let o;if(Buffer.isBuffer(n))o=n;else if(n instanceof Uint8Array)o=Buffer.from(n.buffer,n.byteOffset,n.byteLength);else return;if(o.length===0)return;const s=typeof r.format=="string"&&mE.includes(r.format)?r.format:t.format??"mp3";return{data:o,format:s,voice:typeof r.voice=="string"?r.voice:void 0,sampleRate:typeof r.sampleRate=="number"?r.sampleRate:void 0,estimatedDuration:typeof r.estimatedDuration=="number"?r.estimatedDuration:void 0}}static resolveNativeStream(e,t,r,n){try{const o=e.synthesizeStream;if(!this.isCallableMember(o)||!e.isConfigured())return;const s=o.call(e,r,n);if(s===void 0)return;if(this.isNativeStream(s))return s}catch(o){p.warn(`[TTSProcessor] Provider "${t}" threw while establishing synthesizeStream(); using buffered synthesis for this segment: ${Uy(o)}`);return}p.warn(`[TTSProcessor] Provider "${t}" returned a non-iterable from synthesizeStream(); using buffered synthesis for this segment.`)}static synthesizeStream(e,t,r,n){const o=this;let s=!1,i,a;const c=()=>s||n?.()===!0,l=(async function*(){const u=o.getHandler(t),d=Math.max(1,u?.maxTextLength??o.DEFAULT_MAX_TEXT_LENGTH),m=r.streamingBufferSize??EFe,h=Math.min(Math.max(1,Math.trunc(m)),d);let f="",g=0,y=0,w=0,E,_=0,b;const A=[];let k=!1;const R=e[Symbol.asyncIterator]();let I=!1;const x=()=>{for(;;){const B=WTr(f,h,d,k);if(!B)return;if(f=B.remainder,B.segment)return B.segment}},M=async function*(B,P,D){const $=o.startSynthesisSpan(t,r);let F=!1;const z=(W,H)=>{F||(F=!0,o.finishSynthesisSpan($,W,H))};let q=!1,j=0;try{for(i=B,a=B[Symbol.asyncIterator]();!c();){const W=await a.next();if(W.done){q=!0;break}const H=o.normalizeNativeChunk(W.value,r);H&&(y+=H.data.length,w+=H.estimatedDuration??0,j+=1,yield{data:H.data,format:H.format,index:g++,isFinal:!1,cumulativeSize:y,estimatedDuration:w||void 0,voice:H.voice??r.voice,sampleRate:H.sampleRate})}j===0&&!c()&&(D.fellBackToBuffered=!0,p.warn(`[TTSProcessor] Provider "${t}" produced no audio from synthesizeStream(); falling back to buffered synthesis for this segment.`))}catch(W){throw z(2,Uy(W)),o.toSynthesisError(W,t,P,r)}finally{const W=a;a=void 0,i=void 0,!q&&W&&(c()&&$y(B),k1(W)),D.fellBackToBuffered||z(1)}},N=(B,P)=>{s||(A.length===0&&(b=P),A.push(B),p.warn(`[TTSProcessor] Incremental synthesis skipped a buffered segment: ${Uy(P)}`))};try{for(;!c();){const B=x();if(B===void 0){if(k)break;const z=await R.next();z.done?(I=!0,k=!0):f+=z.value;continue}const P=++_;let D;try{D=u?o.resolveNativeStream(u,t,B,r):void 0}catch(z){p.warn(`[TTSProcessor] Provider "${t}" threw during native capability discovery; using buffered synthesis for this segment: ${Uy(z)}`),D=void 0}if(D){const z={fellBackToBuffered:!1},q=M(D,B,z);let j=!1,W=!1;try{for(;;){let H;try{H=await q.next()}catch(se){j=!0,W=!0,N(P,se);break}if(H.done){j=!0;break}E&&(yield E),E=H.value}}finally{j||await q.return(void 0)}if(W||!z.fellBackToBuffered)continue}let $;try{$=await o.synthesize(B,t,r)}catch(z){N(P,z);continue}y+=$.size,w+=$.duration??0;const F={data:$.buffer,format:$.format,index:g++,isFinal:!1,cumulativeSize:y,estimatedDuration:w||void 0,voice:$.voice,sampleRate:$.sampleRate};E&&(yield E),E=F}}finally{if(!I){const B=R.return;typeof B=="function"&&await B.call(R,void 0)}}if(E&&(yield{...E,isFinal:!0}),A.length>0)throw new x1(b,A)})();return C1(l,()=>{s=!0,$y(i),a&&k1(a)})}}}});function JTr(e){const t=e instanceof x1?e:void 0,r=t?.firstError??e,n=ym(r).message;let o;r instanceof Bu?o={code:Ot.SYNTHESIS_FAILED,message:n,retriable:!0}:r instanceof be?o={code:r.code,message:n,retriable:r.retriable}:o={code:Ot.SYNTHESIS_FAILED,message:n};const s=t?.failedSegments,i=s?.length??1,a=s?.join(", ")??"unknown";return{...o,message:`Incremental TTS failed for ${i} segment${i===1?"":"s"} (segment${i===1?"":"s"} ${a}): ${o.message}`}}function AFe(e){return e.next().then(t=>({kind:"source",result:t}),t=>({kind:"source-error",error:t}))}function xFe(e){return e.next().then(t=>({kind:"audio",result:t}),t=>({kind:"audio-error",error:t}))}function YTr(e){if(e&&typeof e=="object"&&"content"in e&&typeof e.content=="string"&&e.content.length>0)return e.content}function IFe(e){const t=e.at(-1);if(!t)return;const r=Buffer.concat(e.map(n=>n.data));return{buffer:r,format:t.format,size:r.length,duration:t.estimatedDuration,voice:t.voice,sampleRate:t.sampleRate}}function ZTr(){return new Promise(e=>{setTimeout(e,PFe).unref?.()})}async function*RFe(e){const{stream:t,provider:r,options:n,onComplete:o}=e;if(!rl.supports(r)){try{for await(const f of t)yield f}finally{o?.(void 0)}return}const s=new MFe,i=t[Symbol.asyncIterator]();let a=!1;const c=rl.synthesizeStream(s,r,n,()=>a)[Symbol.asyncIterator](),l=[];let u=AFe(i),d=xFe(c),m=!1,h=!1;try{for(;u||d;){const f=u&&d?await Promise.race(h?[d,u]:[u,d]):u?await u:d?await d:void 0;if(!f)break;if(f.kind==="source-error")throw s.fail(f.error),f.error;if(f.kind==="audio-error"){s.end();const g=JTr(f.error);p.warn(`[TTSProcessor] Incremental stream disabled after an audio error: ${f.error instanceof Error?f.error.message:String(f.error)}`),d=void 0,h=!1,m=!0,o?.(IFe(l),g);continue}if(f.kind==="source"){if(f.result.done){u=void 0,s.end(),h=!0;continue}const g=YTr(f.result.value);g&&s.push(g),u=AFe(i),h=!0,yield f.result.value;continue}if(f.result.done){d=void 0,m=!0,o?.(IFe(l));continue}l.push(f.result.value),d=xFe(c),h=!1,yield{type:"tts_audio",audio:f.result.value}}}finally{m||(a=!0,$y(t),$y(c)),s.end();const f=[];u&&i.return&&f.push(Promise.resolve().then(()=>i.return?.(void 0))),d&&c.return&&f.push(Promise.resolve().then(()=>c.return?.(void 0))),await Promise.race([Promise.allSettled(f),ZTr()]),m||o?.(void 0)}}var MFe,PFe,DFe=S({"src/lib/utils/ttsStream.ts"(){"use strict";tt(),Qt(),U(),yc(),Mr(),A1(),MFe=class{values=[];waiters=[];ended=!1;failure;[Symbol.asyncIterator](){return this}next(){if(this.values.length>0){const e=this.values.shift();if(e!==void 0)return Promise.resolve({value:e,done:!1})}return this.failure!==void 0?Promise.reject(this.failure):this.ended?Promise.resolve({value:void 0,done:!0}):new Promise((e,t)=>{this.waiters.push({resolve:e,reject:t})})}push(e){if(this.ended||this.failure!==void 0)return;const t=this.waiters.shift();if(t){t.resolve({value:e,done:!1});return}this.values.push(e)}end(){if(!(this.ended||this.failure!==void 0)){this.ended=!0;for(const e of this.waiters.splice(0))e.resolve({value:void 0,done:!0})}}fail(e){if(!(this.ended||this.failure!==void 0)){this.failure=e;for(const t of this.waiters.splice(0))t.reject(e)}}},PFe=5e3}}),XTr=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/Types.js"(){}}),m8,p8=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/parsers/parseAnyOf.js"(){Ba(),m8=(e,t)=>e.anyOf.length?e.anyOf.length===1?Fo(e.anyOf[0],{...t,path:[...t.path,"anyOf",0]}):`z.union([${e.anyOf.map((r,n)=>Fo(r,{...t,path:[...t.path,"anyOf",n]})).join(", ")}])`:"z.any()"}}),OFe,NFe=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/parsers/parseBoolean.js"(){OFe=e=>"z.boolean()"}}),LFe,FFe=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/parsers/parseDefault.js"(){LFe=e=>"z.any()"}}),$Fe,UFe=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/parsers/parseMultipleType.js"(){Ba(),$Fe=(e,t)=>`z.union([${e.type.map(r=>Fo({...e,type:r},{...t,withoutDefaults:!0})).join(", ")}])`}}),BFe,zFe=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/parsers/parseNot.js"(){Ba(),BFe=(e,t)=>`z.any().refine((value) => !${Fo(e.not,{...t,path:[...t.path,"not"]})}.safeParse(value).success, "Invalid input: Should NOT be valid against schema")`}}),GFe,qFe=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/parsers/parseNull.js"(){GFe=e=>"z.null()"}}),jFe,HFe=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/utils/half.js"(){jFe=e=>[e.slice(0,e.length/2),e.slice(e.length/2)]}});function I1(e,t){if(e.allOf.length===0)return"z.never()";if(e.allOf.length===1){const r=e.allOf[0];return Fo(r,{...t,path:[...t.path,"allOf",r[By]]})}else{const[r,n]=jFe(VFe(e.allOf));return`z.intersection(${I1({allOf:r},t)}, ${I1({allOf:n},t)})`}}var By,VFe,h8=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/parsers/parseAllOf.js"(){Ba(),HFe(),By=Symbol("Original index"),VFe=e=>{let t=[];for(let r=0;r<e.length;r++){const n=e[r];if(typeof n=="boolean")t.push(n?{[By]:r}:{[By]:r,not:{}});else{if(By in n)return e;t.push({...n,[By]:r})}}return t}}});function Ts(e,t,r,n){const o=e[t];let s="";if(o!==void 0){const i=r({value:o,json:JSON.stringify(o)});if(i){const a=i[0],c=i.length===3?i[1]:"",l=i.length===3?i[2]:i[1];s+=a;const u=e.errorMessage?.[t]??n;u!==void 0&&(s+=c+JSON.stringify(u)),s+=l}}return s}var R1=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/utils/withMessage.js"(){}}),WFe,KFe=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/parsers/parseArray.js"(){R1(),Ba(),WFe=(e,t)=>{if(Array.isArray(e.items))return`z.tuple([${e.items.map((n,o)=>Fo(n,{...t,path:[...t.path,"items",o]}))}])`;let r=e.items?`z.array(${Fo(e.items,{...t,path:[...t.path,"items"]})})`:"z.array(z.any())";return r+=Ts(e,"minItems",({json:n})=>[`.min(${n}`,", ",")"]),r+=Ts(e,"maxItems",({json:n})=>[`.max(${n}`,", ",")"]),e.uniqueItems===!0&&(r+=Ts(e,"uniqueItems",()=>[".refine((arr) => arr.every((item, i) => arr.indexOf(item) == i)",", ",")"],"All items must be unique!")),r}}}),JFe,YFe=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/parsers/parseConst.js"(){JFe=e=>`z.literal(${JSON.stringify(e.const)})`}}),ZFe,XFe=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/parsers/parseEnum.js"(){ZFe=e=>e.enum.length===0?"z.never()":e.enum.length===1?`z.literal(${JSON.stringify(e.enum[0])})`:e.enum.every(t=>typeof t=="string")?`z.enum([${e.enum.map(t=>JSON.stringify(t))}])`:`z.union([${e.enum.map(t=>`z.literal(${JSON.stringify(t)})`).join(", ")}])`}}),QFe,e$e=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/parsers/parseIfThenElse.js"(){Ba(),QFe=(e,t)=>{const r=Fo(e.if,{...t,path:[...t.path,"if"]}),n=Fo(e.then,{...t,path:[...t.path,"then"]}),o=Fo(e.else,{...t,path:[...t.path,"else"]});return`z.union([${n}, ${o}]).superRefine((value,ctx) => {
664
+ `):void 0,usage:{input:u,output:d,total:u+d},toolCalls:l.length>0?l.map(f=>{let g;try{g=JSON.parse(f.input)}catch(y){p.warn(`Failed to parse tool call args for tool ${f.toolName}:`,y),g={raw:f.input}}return{toolCallId:f.toolCallId,toolName:f.toolName,args:g}}):void 0};if(e.blocking!==!1){const f=await Iq(e,s,m);return{...i,evaluationResult:f}}else return Iq(e,s,m).catch(f=>{p.error("Non-blocking auto-evaluation error:",f)}),i},wrapStream:async({doStream:n,params:o})=>{const s=o,i=await n(),[a,c]=i.stream.tee();return Hwr(e,s,c).catch(l=>{p.error("Non-blocking stream auto-evaluation error:",l)}),{...i,stream:a}}},metadata:t}}async function Iq(e,t,r){const n=e.blocking!==!1,o=e.threshold??(Number(process.env.NEUROLINK_EVALUATION_THRESHOLD)||7);try{const i=await new Xl({threshold:o,provider:e.provider,promptGenerator:e.promptGenerator,evaluationModel:e.evaluationModel}).evaluate(t,r,o,e);e.onEvaluationComplete&&await e.onEvaluationComplete(i)}catch(s){if(p.error("Error during auto-evaluation:",s),n)throw s}}async function Hwr(e,t,r){let n="",o;const s=[],i=r.getReader();try{for(;;){const{done:l,value:u}=await i.read();if(l)break;switch(u.type){case"text-delta":n+=u.delta;break;case"tool-call":{let d;try{d=JSON.parse(u.input)}catch(m){p.warn(`Failed to parse tool call args for tool ${u.toolName}:`,m),d={raw:u.input}}s.push({toolCallId:u.toolCallId,toolName:u.toolName,args:d})}break;case"finish":{const d=u.usage.inputTokens.total??0,m=u.usage.outputTokens.total??0;o={input:d,output:m,total:d+m}}break}}}finally{i.releaseLock()}const a={content:n,usage:o,toolCalls:s.length>0?s:void 0};e.blocking&&p.warn("Auto-evaluation 'blocking' mode is not supported for streaming responses. Evaluation will proceed non-blockingly.");const c={...e,blocking:!1};await Iq(c,t,a)}var Vwr=S({"src/lib/middleware/builtin/autoEvaluation.ts"(){"use strict";xq(),U()}});function PNe(e){try{Object.defineProperty(e,h1,{value:!0,enumerable:!1,writable:!1,configurable:!1})}catch{}}function _S(e){return e===null||typeof e!="object"?!1:e[h1]===!0}function p1(e){e===null||typeof e!="object"||e[h1]!==!0&&PNe(e)}function Rq(e,t,r){if(typeof e=="function"&&!_S(t)){t!==null&&typeof t=="object"&&PNe(t);try{const n=e(r);Promise.resolve(n).catch(()=>{})}catch{}}}var h1,Mq=S({"src/lib/utils/lifecycleCallbacks.ts"(){"use strict";h1=Symbol.for("neurolink.onErrorFired")}});function Pq(e){if(e instanceof Error)return e;if(typeof e=="object"&&e!==null){const t=e,r=typeof t.message=="string"?t.message:String(e);return Object.assign(new Error(r),t)}return new Error(String(e))}function Dq(e={}){return{...{specificationVersion:"v3",wrapGenerate:async({doGenerate:n})=>{const o=Date.now();try{const s=await n();if(e.onFinish)try{const i=s.content?.map(c=>c.type==="text"?c.text:"").join("")??"",a=e.onFinish({text:i,usage:s.usage?{promptTokens:s.usage.inputTokens?.total??0,completionTokens:s.usage.outputTokens?.total??0}:void 0,duration:Date.now()-o,finishReason:String(s.finishReason??"")});Promise.resolve(a).catch(c=>{p.warn("[LifecycleMiddleware] onFinish callback error:",c)})}catch(i){p.warn("[LifecycleMiddleware] onFinish callback error:",i)}return s}catch(s){const i=Pq(s);throw Rq(e.onError,i,{error:i,duration:Date.now()-o,recoverable:JI(i)}),i}},wrapStream:async({doStream:n})=>{const o=Date.now();try{const s=await n();if(!e.onChunk&&!e.onFinish&&!e.onError)return s;let i=0,a="";const c=new TransformStream({transform(l,u){try{if(l.type==="text-delta"&&(a+=l.textDelta),e.onChunk&&l.type)try{const d=e.onChunk({type:l.type,textDelta:l.type==="text-delta"?l.textDelta:void 0,sequenceNumber:i++});Promise.resolve(d).catch(m=>{p.warn("[LifecycleMiddleware] onChunk callback error:",m)})}catch(d){p.warn("[LifecycleMiddleware] onChunk callback error:",d)}u.enqueue(l)}catch(d){const m=Pq(d);throw Rq(e.onError,m,{error:m,duration:Date.now()-o,recoverable:JI(m)}),m}},flush(){if(e.onFinish)try{const l=e.onFinish({text:a,duration:Date.now()-o});Promise.resolve(l).catch(u=>{p.warn("[LifecycleMiddleware] onFinish callback error:",u)})}catch(l){p.warn("[LifecycleMiddleware] onFinish callback error:",l)}}});return{...s,stream:s.stream.pipeThrough(c)}}catch(s){const i=Pq(s);throw Rq(e.onError,i,{error:i,duration:Date.now()-o,recoverable:JI(i)}),i}}},metadata:{id:"lifecycle",name:"Lifecycle Callbacks",description:"Provides onFinish, onError, and onChunk callbacks for generation and streaming lifecycle events",priority:110,defaultEnabled:!1}}}var DNe=S({"src/lib/middleware/builtin/lifecycle.ts"(){"use strict";U(),tt(),Mq()}}),ONe,NNe,Wwr=S({"src/lib/middleware/wrapLanguageModel.ts"(){"use strict";ONe=(e,t)=>{const r=async(n,o)=>t.transformParams?await t.transformParams({type:o,params:n,model:e}):n;return{specificationVersion:"v3",provider:t.overrideProvider?.({model:e})??e.provider,modelId:t.overrideModelId?.({model:e})??e.modelId,supportedUrls:t.overrideSupportedUrls?.({model:e})??e.supportedUrls,async doGenerate(n){const o=await r(n,"generate"),s=()=>e.doGenerate(o),i=()=>e.doStream(o);return t.wrapGenerate?await t.wrapGenerate({doGenerate:s,doStream:i,params:o,model:e}):await s()},async doStream(n){const o=await r(n,"stream"),s=()=>e.doGenerate(o),i=()=>e.doStream(o);return t.wrapStream?await t.wrapStream({doGenerate:s,doStream:i,params:o,model:e}):await i()}}},NNe=({model:e,middleware:t})=>(Array.isArray(t)?[...t]:[t]).reverse().reduce((r,n)=>ONe(r,n),e)}}),Oq,LNe=S({"src/lib/middleware/factory.ts"(){"use strict";Fvr(),yxe(),Zvr(),Vwr(),DNe(),U(),Wwr(),Oq=class{registry;presets=new Map;options;constructor(e={}){this.options=e,this.registry=new gxe,this.initialize(e)}initialize(e){const t={analytics:bG,guardrails:bxe,autoEvaluation:MNe,lifecycle:Dq};if(this.registerPreset({name:"default",description:"Default preset with analytics enabled.",config:{analytics:{enabled:!0}}}),this.registerPreset({name:"all",description:"Enables all available middleware.",config:{analytics:{enabled:!0},guardrails:{enabled:!0}}}),this.registerPreset({name:"security",description:"Focuses on security with guardrails.",config:{guardrails:{enabled:!0}}}),p.debug("Initializing MiddlewareFactory",{options:e}),e.middleware){p.debug("Registering custom middleware");for(const r of e.middleware)this.register(r)}for(const r in t)if(!this.registry.has(r)){const n=t[r],o=e.middlewareConfig?.[r]?.config;p.debug(`Registering built-in middleware '${r}'`,o),this.registry.register(n(o))}}registerPreset(e,t=!1){if(this.presets.has(e.name)&&!t)throw new Error(`Preset with name '${e.name}' already exists. Use replace: true to override.`);this.presets.set(e.name,e)}register(e,t){this.registry.register(e,t)}applyMiddleware(e,t,r={}){const n=Date.now();try{const o={...this.options,...r,middlewareConfig:{...this.options.middlewareConfig,...r.middlewareConfig}},s=this.buildMiddlewareConfig(o);for(const[u,d]of Object.entries(s))if(p.debug(`Configuring middleware '${u}'`,{config:d}),d.enabled&&this.registry.has(u)){const m=this.getCreator(u);m&&this.registry.register(m(d.config),{replace:!0})}const i=this.registry.buildChain(t,s);if(i.length===0)return p.debug("No middleware to apply",{provider:t.provider}),e;p.debug(`Applying ${i.length} middleware to model`,{provider:t.provider,model:t.model,middlewareCount:i.length});const c=NNe({model:e,middleware:i}),l=Date.now()-n;return p.debug("Middleware applied successfully",{provider:t.provider,middlewareCount:i.length,processingTime:l}),c}catch(o){return p.error("Failed to apply middleware",{provider:t.provider,error:o instanceof Error?o.message:String(o)}),e}}getCreator(e){const t={analytics:bG,guardrails:bxe,autoEvaluation:MNe,lifecycle:Dq};return p.debug("Getting creator for middleware ID:",e),t[e]}buildMiddlewareConfig(e){const t={},r=this.registry.list();for(const o of r)t[o.metadata.id]={enabled:!1,config:{}};let n=e.preset;if(!n&&(!e.middlewareConfig||Object.keys(e.middlewareConfig).length===0)&&(!e.enabledMiddleware||e.enabledMiddleware.length===0)&&(n="default"),n){const o=this.getPresetConfig(n);if(o)for(const[s,i]of Object.entries(o))t[s]&&(t[s]={...t[s],...i})}if(e.middlewareConfig)for(const[o,s]of Object.entries(e.middlewareConfig))t[o]={...t[o],...s};if(e.enabledMiddleware)for(const o of e.enabledMiddleware)t[o]&&(t[o].enabled=!0);if(e.disabledMiddleware)for(const o of e.disabledMiddleware)t[o]&&(t[o].enabled=!1);return t}getPresetConfig(e){const t=this.presets.get(e);return t?t.config:null}createContext(e,t,r={},n){return{provider:e,model:t,options:r,session:n,metadata:{timestamp:Date.now(),requestId:`${e}-${Date.now()}-${Math.random().toString(36).substr(2,9)}`}}}validateConfig(e){const t=[],r=[];for(const[n,o]of Object.entries(e)){if(!this.registry.has(n)){t.push(`Middleware '${n}' is not registered`);continue}o.enabled!==void 0&&typeof o.enabled!="boolean"&&t.push(`Middleware '${n}' enabled property must be boolean`),o.config&&typeof o.config!="object"&&t.push(`Middleware '${n}' config property must be an object`),o.conditions?.providers&&o.conditions.providers.length===0&&r.push(`Middleware '${n}' has empty providers condition`)}return{isValid:t.length===0,errors:t,warnings:r}}getAvailablePresets(){return Array.from(this.presets.values()).map(e=>({name:e.name,description:e.description,middleware:Object.keys(e.config)}))}getChainStats(e,t){const r=this.registry.buildChain(e,t),n=this.registry.getAggregatedStats(),o={};let s=0,i=0;for(const[a,c]of Object.entries(n))t[a]?.enabled&&(o[a]={applied:!0,executionTime:c.averageExecutionTime},s+=c.averageExecutionTime,i++);return{totalMiddleware:r.length,appliedMiddleware:i,totalExecutionTime:s,results:o}}createModelFactory(e,t={}){return async(r,n={})=>{const o=await e(),s={...t,...n,middlewareConfig:{...t.middlewareConfig,...n.middlewareConfig}};return this.applyMiddleware(o,r,s)}}}}}),f1,Nq=S({"src/lib/models/manifests/anthropic.ts"(){"use strict";f1={defaultContextWindow:2e5,familyRules:[{pattern:/claude-(?:opus|sonnet|haiku)-(?:[4-9]|\d{2,})/i,patch:{vision:!0}},{pattern:/claude-(?:fable|mythos)-\d/i,patch:{vision:!0}}],models:{"claude-sonnet-5":{aliases:["sonnet-5","claude-sonnet"],displayName:"Claude Sonnet 5",contextWindow:1e6,maxOutputTokens:64e3,vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,samplingParams:!1},"claude-opus-4-6":{aliases:["opus-4.6","claude-opus-latest"],displayName:"Claude Opus 4.6",contextWindow:1e6,maxOutputTokens:32e3,pricingPerMTok:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"claude-sonnet-4-6":{aliases:["sonnet-4.6"],displayName:"Claude Sonnet 4.6",contextWindow:1e6,maxOutputTokens:64e3,pricingPerMTok:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"claude-opus-4-5-20251101":{aliases:["claude-opus-4-5","opus-4.5"],displayName:"Claude Opus 4.5",contextWindow:2e5,maxOutputTokens:32e3,pricingPerMTok:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"medium",quality:"high",accuracy:"high"},useCases:{coding:10,creative:10,analysis:10,conversation:9,reasoning:10,translation:9,summarization:9},category:"reasoning"}},"claude-sonnet-4-5-20250929":{aliases:["claude-sonnet-4-5","sonnet-4.5"],displayName:"Claude Sonnet 4.5",contextWindow:2e5,maxOutputTokens:64e3,pricingPerMTok:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"medium",quality:"high",accuracy:"high"},useCases:{coding:10,creative:9,analysis:9,conversation:9,reasoning:10,translation:8,summarization:8},category:"coding"}},"claude-haiku-4-5-20251001":{aliases:["claude-haiku-4-5","haiku-4.5","claude-4-5-haiku"],displayName:"Claude 4.5 Haiku",contextWindow:2e5,maxOutputTokens:64e3,pricingPerMTok:{input:1,output:5,cacheRead:.1,cacheWrite:1.25},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"fast",quality:"high",accuracy:"high"},useCases:{coding:8,creative:8,analysis:8,conversation:9,reasoning:8,translation:8,summarization:9},category:"general"}},"claude-opus-4-1-20250805":{aliases:["claude-opus-4-1","opus-4.1"],displayName:"Claude Opus 4.1",contextWindow:2e5,maxOutputTokens:32e3,pricingPerMTok:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"claude-opus-4-20250514":{aliases:["claude-opus-4"],displayName:"Claude Opus 4",contextWindow:2e5,maxOutputTokens:32e3,pricingPerMTok:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"claude-sonnet-4-20250514":{aliases:["claude-sonnet-4"],displayName:"Claude Sonnet 4",contextWindow:2e5,maxOutputTokens:64e3,pricingPerMTok:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"claude-3-7-sonnet-20250219":{aliases:["claude-3-7-sonnet"],displayName:"Claude 3.7 Sonnet",contextWindow:2e5,maxOutputTokens:64e3,pricingPerMTok:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"claude-3-5-sonnet-20241022":{aliases:["claude-3-5-sonnet"],displayName:"Claude 3.5 Sonnet",contextWindow:2e5,maxOutputTokens:8192,pricingPerMTok:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},vision:!0,functionCalling:!0,reasoning:!1,jsonMode:!0,curated:{performance:{speed:"medium",quality:"high",accuracy:"high"},useCases:{coding:10,creative:9,analysis:9,conversation:9,reasoning:10,translation:8,summarization:8},category:"coding"}},"claude-3-5-haiku-20241022":{aliases:["claude-3-5-haiku"],displayName:"Claude 3.5 Haiku",contextWindow:2e5,maxOutputTokens:8192,pricingPerMTok:{input:.8,output:4,cacheRead:.08,cacheWrite:1},vision:!1,functionCalling:!0,reasoning:!1,jsonMode:!0,curated:{performance:{speed:"fast",quality:"high",accuracy:"high"},useCases:{coding:8,creative:7,analysis:8,conversation:8,reasoning:8,translation:8,summarization:9},category:"general"}},"claude-3-opus-20240229":{aliases:["claude-3-opus"],displayName:"Claude 3 Opus",contextWindow:2e5,maxOutputTokens:4096,pricingPerMTok:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},vision:!0,functionCalling:!0,reasoning:!1,jsonMode:!0},"claude-3-sonnet-20240229":{aliases:["claude-3-sonnet"],displayName:"Claude 3 Sonnet",contextWindow:2e5,maxOutputTokens:4096,pricingPerMTok:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},vision:!0,functionCalling:!0,reasoning:!1,jsonMode:!0},"claude-3-haiku-20240307":{aliases:["claude-3-haiku"],displayName:"Claude 3 Haiku",contextWindow:2e5,maxOutputTokens:4096,pricingPerMTok:{input:.25,output:1.25,cacheRead:.025,cacheWrite:.3125},vision:!0,functionCalling:!0,reasoning:!1,jsonMode:!0}}}}}),Lq,FNe=S({"src/lib/models/manifests/openai.ts"(){"use strict";Lq={defaultContextWindow:128e3,models:{"gpt-4o":{aliases:["gpt4o","gpt-4-omni","openai-flagship"],displayName:"GPT-4 Omni",contextWindow:128e3,maxOutputTokens:4096,pricingPerMTok:{input:2.5,output:10,cacheRead:.625},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"medium",quality:"high",accuracy:"high"},useCases:{coding:9,creative:8,analysis:9,conversation:9,reasoning:9,translation:8,summarization:8},category:"general"}},"gpt-4o-mini":{aliases:["gpt4o-mini","gpt-4-mini","fastest","cheap"],displayName:"GPT-4 Omni Mini",contextWindow:128e3,maxOutputTokens:16384,pricingPerMTok:{input:.15,output:.6,cacheRead:.0375},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"fast",quality:"high",accuracy:"high"},useCases:{coding:8,creative:7,analysis:8,conversation:8,reasoning:8,translation:8,summarization:9},category:"general"}},"gpt-5":{aliases:["gpt5","gpt-5-flagship","openai-latest"],displayName:"GPT-5",contextWindow:4e5,maxOutputTokens:32768,pricingPerMTok:{input:1.25,output:10,cacheRead:.3125},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"medium",quality:"high",accuracy:"high"},useCases:{coding:10,creative:10,analysis:10,conversation:10,reasoning:10,translation:9,summarization:9},category:"reasoning"}},"gpt-5-mini":{aliases:["gpt5-mini","gpt-5-fast"],displayName:"GPT-5 Mini",contextWindow:4e5,maxOutputTokens:16384,pricingPerMTok:{input:.25,output:2,cacheRead:.0625},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"fast",quality:"high",accuracy:"high"},useCases:{coding:8,creative:8,analysis:8,conversation:9,reasoning:8,translation:8,summarization:9},category:"general"}},o3:{aliases:["o3-reasoning","o3-thinking"],displayName:"O3",contextWindow:2e5,maxOutputTokens:1e5,pricingPerMTok:{input:2,output:8,cacheRead:.5},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"slow",quality:"high",accuracy:"high"},useCases:{coding:10,creative:8,analysis:10,conversation:7,reasoning:10,translation:7,summarization:8},category:"reasoning"}},"o3-mini":{aliases:["o3-mini-reasoning"],displayName:"O3 Mini",contextWindow:2e5,maxOutputTokens:65536,pricingPerMTok:{input:1.1,output:4.4,cacheRead:.275},vision:!1,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"medium",quality:"high",accuracy:"high"},useCases:{coding:9,creative:6,analysis:9,conversation:7,reasoning:9,translation:6,summarization:7},category:"reasoning"}},"gpt-5-nano":{aliases:["gpt5-nano","gpt-5-cheapest"],displayName:"GPT-5 Nano",contextWindow:4e5,maxOutputTokens:128e3,pricingPerMTok:{input:.05,output:.4,cacheRead:.0125},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"fast",quality:"medium",accuracy:"medium"},useCases:{coding:6,creative:6,analysis:6,conversation:8,reasoning:6,translation:7,summarization:8},category:"general"}},"gpt-5.2":{aliases:["gpt52","gpt-5.2-thinking","openai-latest-reasoning"],displayName:"GPT-5.2 Thinking",contextWindow:4e5,maxOutputTokens:64e3,pricingPerMTok:{input:1.75,output:14,cacheRead:.4375},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"medium",quality:"high",accuracy:"high"},useCases:{coding:10,creative:10,analysis:10,conversation:9,reasoning:10,translation:9,summarization:9},category:"reasoning"}},"gpt-5.2-chat-latest":{aliases:["gpt52-chat","gpt-5.2-instant","gpt52-fast"],displayName:"GPT-5.2 Instant",contextWindow:128e3,maxOutputTokens:32e3,pricingPerMTok:{input:1.75,output:14,cacheRead:.4375},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"fast",quality:"high",accuracy:"high"},useCases:{coding:9,creative:9,analysis:9,conversation:10,reasoning:9,translation:9,summarization:9},category:"general"}},"gpt-5.2-pro":{aliases:["gpt52-pro","gpt-5.2-professional","openai-science"],displayName:"GPT-5.2 Pro",contextWindow:4e5,maxOutputTokens:128e3,pricingPerMTok:{input:1.75,output:14,cacheRead:.4375},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"slow",quality:"high",accuracy:"high"},useCases:{coding:10,creative:9,analysis:10,conversation:8,reasoning:10,translation:9,summarization:9},category:"reasoning"}},"gpt-4.1":{aliases:["gpt-4.1","gpt41","million-context"],displayName:"GPT-4.1",contextWindow:1047576,maxOutputTokens:128e3,pricingPerMTok:{input:2,output:8,cacheRead:.5},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"medium",quality:"high",accuracy:"high"},useCases:{coding:10,creative:8,analysis:9,conversation:8,reasoning:9,translation:8,summarization:9},category:"coding"}},"gpt-4.1-mini":{aliases:["gpt-4.1-mini","gpt41-mini"],displayName:"GPT-4.1 Mini",contextWindow:1047576,maxOutputTokens:128e3,pricingPerMTok:{input:.4,output:1.6,cacheRead:.1},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"fast",quality:"high",accuracy:"high"},useCases:{coding:9,creative:7,analysis:8,conversation:8,reasoning:8,translation:8,summarization:9},category:"coding"}},"gpt-4.1-nano":{aliases:["gpt-4.1-nano","gpt41-nano"],displayName:"GPT-4.1 Nano",contextWindow:1047576,maxOutputTokens:128e3,pricingPerMTok:{input:.1,output:.4,cacheRead:.025},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"fast",quality:"medium",accuracy:"medium"},useCases:{coding:7,creative:6,analysis:7,conversation:7,reasoning:7,translation:7,summarization:8},category:"coding"}},"o3-pro":{aliases:["o3-pro","o3-professional"],displayName:"O3 Pro",contextWindow:2e5,maxOutputTokens:1e5,pricingPerMTok:{input:2,output:8,cacheRead:.5},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"slow",quality:"high",accuracy:"high"},useCases:{coding:10,creative:7,analysis:10,conversation:6,reasoning:10,translation:6,summarization:7},category:"reasoning"}},"o4-mini":{aliases:["o4-mini","o4-fast"],displayName:"O4 Mini",contextWindow:2e5,maxOutputTokens:1e5,pricingPerMTok:{input:1.1,output:4.4,cacheRead:.275},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"medium",quality:"high",accuracy:"high"},useCases:{coding:9,creative:6,analysis:9,conversation:7,reasoning:10,translation:6,summarization:7},category:"reasoning"}},o1:{aliases:["o1-full","o1-premium"],displayName:"O1",contextWindow:2e5,maxOutputTokens:32768,pricingPerMTok:{input:15,output:60,cacheRead:3.75},vision:!1,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"slow",quality:"high",accuracy:"high"},useCases:{coding:10,creative:7,analysis:10,conversation:6,reasoning:10,translation:6,summarization:7},category:"reasoning"}},"o1-mini":{aliases:["o1-mini","o1-budget"],displayName:"O1 Mini",contextWindow:128e3,maxOutputTokens:65536,pricingPerMTok:{input:.55,output:2.2,cacheRead:.1375},vision:!1,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"medium",quality:"high",accuracy:"high"},useCases:{coding:8,creative:5,analysis:8,conversation:6,reasoning:8,translation:5,summarization:6},category:"reasoning"}},"gpt-4":{aliases:["gpt4","gpt-4-base"],displayName:"GPT-4",contextWindow:8192,maxOutputTokens:4096,pricingPerMTok:{input:30,output:60},vision:!1,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"slow",quality:"high",accuracy:"high"},useCases:{coding:8,creative:8,analysis:8,conversation:8,reasoning:8,translation:8,summarization:8},category:"general"}},"gpt-4-turbo":{aliases:["gpt4-turbo","gpt-4-turbo-preview"],displayName:"GPT-4 Turbo",contextWindow:128e3,maxOutputTokens:4096,pricingPerMTok:{input:10,output:30},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0,curated:{performance:{speed:"medium",quality:"high",accuracy:"high"},useCases:{coding:8,creative:8,analysis:9,conversation:8,reasoning:8,translation:8,summarization:8},category:"general"}},"gpt-3.5-turbo":{aliases:["gpt35","gpt-3.5","chatgpt"],displayName:"GPT-3.5 Turbo",contextWindow:16385,maxOutputTokens:4096,pricingPerMTok:{input:.5,output:1},vision:!1,functionCalling:!0,reasoning:!1,jsonMode:!0,curated:{performance:{speed:"fast",quality:"medium",accuracy:"medium"},useCases:{coding:6,creative:6,analysis:6,conversation:7,reasoning:5,translation:7,summarization:7},category:"general"}}}}}}),Fq,$Ne=S({"src/lib/models/manifests/google-ai.ts"(){"use strict";Fq={defaultContextWindow:1048576,models:{"gemini-2.5-pro":{aliases:["gemini-pro","google-flagship","best-analysis"],displayName:"Gemini 2.5 Pro",contextWindow:2097152,maxOutputTokens:8192,pricingPerMTok:{input:1.25,output:10},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"gemini-2.5-flash":{aliases:["gemini-flash","google-fast","best-value"],displayName:"Gemini 2.5 Flash",contextWindow:1048576,maxOutputTokens:8192,pricingPerMTok:{input:.3,output:2.5},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0}}}}}),$q,UNe=S({"src/lib/models/manifests/vertex.ts"(){"use strict";$q={defaultContextWindow:1048576,models:{_default:{aliases:[],contextWindow:1048576,maxOutputTokens:64e3,vision:!1,functionCalling:!1}}}}}),Uq,BNe=S({"src/lib/models/manifests/bedrock.ts"(){"use strict";Uq={defaultContextWindow:2e5,models:{"amazon.nova-premier-v1:0":{aliases:["nova-premier","aws-flagship"],displayName:"Amazon Nova Premier",contextWindow:1e6,maxOutputTokens:25e3,vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!1},"amazon.nova-pro-v1:0":{aliases:["nova-pro","aws-balanced"],displayName:"Amazon Nova Pro",contextWindow:3e5,maxOutputTokens:5e3,vision:!0,functionCalling:!0,reasoning:!1,jsonMode:!1},"amazon.nova-lite-v1:0":{aliases:["nova-lite","aws-lite","aws-cheap"],displayName:"Amazon Nova Lite",contextWindow:3e5,maxOutputTokens:5e3,vision:!0,functionCalling:!0,reasoning:!1,jsonMode:!1},"anthropic.claude-opus-4-5-20251101-v1:0":{aliases:["bedrock-claude-4.5-opus","bedrock-claude-flagship"],displayName:"Claude 4.5 Opus (Bedrock)",contextWindow:2e5,maxOutputTokens:64e3,pricingPerMTok:{input:5,output:25},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"meta.llama4-maverick-17b-instruct-v1:0":{aliases:["bedrock-llama4","bedrock-llama-maverick"],displayName:"Llama 4 Maverick (Bedrock)",contextWindow:1e6,maxOutputTokens:8192,vision:!0,functionCalling:!0,reasoning:!1,jsonMode:!1}}}}}),Bq,zNe=S({"src/lib/models/manifests/azure.ts"(){"use strict";Bq={defaultContextWindow:128e3,models:{"gpt-5.1":{aliases:["azure-gpt-5.1","gpt51-azure","azure-flagship"],displayName:"GPT-5.1 (Azure)",contextWindow:3e5,maxOutputTokens:64e3,pricingPerMTok:{input:.625,output:5},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"gpt-5.1-chat":{aliases:["azure-gpt-5.1-chat","gpt51-chat-azure"],displayName:"GPT-5.1 Chat (Azure)",contextWindow:3e5,maxOutputTokens:32e3,pricingPerMTok:{input:.625,output:5},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"gpt-5.1-codex":{aliases:["azure-gpt-5.1-codex","gpt51-codex-azure","azure-code"],displayName:"GPT-5.1 Codex (Azure)",contextWindow:3e5,maxOutputTokens:64e3,pricingPerMTok:{input:1.25,output:10},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"gpt-5.1-codex-mini":{aliases:["azure-gpt-5.1-codex-mini","gpt51-codex-mini-azure"],displayName:"GPT-5.1 Codex Mini (Azure)",contextWindow:2e5,maxOutputTokens:32e3,pricingPerMTok:{input:1.25,output:10},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"gpt-5.1-codex-max":{aliases:["azure-gpt-5.1-codex-max","gpt51-codex-max-azure","azure-enterprise"],displayName:"GPT-5.1 Codex Max (Azure)",contextWindow:5e5,maxOutputTokens:128e3,pricingPerMTok:{input:1.25,output:10},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"gpt-5-pro":{aliases:["azure-gpt-5-pro","gpt5-pro-azure"],displayName:"GPT-5 Pro (Azure)",contextWindow:256e3,maxOutputTokens:64e3,pricingPerMTok:{input:1.25,output:10},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"gpt-5-turbo":{aliases:["azure-gpt-5-turbo","gpt5-turbo-azure"],displayName:"GPT-5 Turbo (Azure)",contextWindow:2e5,maxOutputTokens:32768,pricingPerMTok:{input:1.25,output:10},vision:!1,functionCalling:!0,reasoning:!0,jsonMode:!0}}}}}),zq,GNe=S({"src/lib/models/manifests/mistral.ts"(){"use strict";zq={defaultContextWindow:128e3,models:{"mistral-large-latest":{aliases:["mistral-large","mistral-flagship"],displayName:"Mistral Large",contextWindow:131072,maxOutputTokens:8192,pricingPerMTok:{input:2,output:6},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"mistral-small-latest":{aliases:["mistral-small","mistral-cheap"],displayName:"Mistral Small",contextWindow:32768,maxOutputTokens:8192,pricingPerMTok:{input:.2,output:.6},vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"codestral-latest":{aliases:["codestral","mistral-code"],displayName:"Codestral",contextWindow:32768,maxOutputTokens:8192,pricingPerMTok:{input:.3,output:.9},vision:!1,functionCalling:!0,reasoning:!0,jsonMode:!0},"pixtral-large":{aliases:["pixtral","mistral-vision"],displayName:"Pixtral Large",contextWindow:131072,maxOutputTokens:8192,vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0}}}}}),Gq,qNe=S({"src/lib/models/manifests/ollama.ts"(){"use strict";Gq={defaultContextWindow:128e3,models:{"llama4:latest":{aliases:["llama4","llama4-local"],displayName:"Llama 4",contextWindow:131072,maxOutputTokens:8192,vision:!0,functionCalling:!0,reasoning:!0,jsonMode:!0},"llama3.3:latest":{aliases:["llama3.3","llama3.3-local"],displayName:"Llama 3.3",contextWindow:131072,maxOutputTokens:8192,vision:!1,functionCalling:!0,reasoning:!0,jsonMode:!0},"llama3.2:latest":{aliases:["llama3.2","llama","local","offline"],displayName:"Llama 3.2 Latest",contextWindow:131072,maxOutputTokens:8192,vision:!1,functionCalling:!1,reasoning:!0,jsonMode:!1},"deepseek-r1:70b":{aliases:["deepseek-r1","deepseek-reasoning","local-reasoning"],displayName:"DeepSeek-R1 70B",contextWindow:65536,maxOutputTokens:8192,vision:!1,functionCalling:!1,reasoning:!0,jsonMode:!1},"qwen3:72b":{aliases:["qwen3","qwen3-72b-local"],displayName:"Qwen 3 72B",contextWindow:131072,maxOutputTokens:8192,vision:!1,functionCalling:!0,reasoning:!0,jsonMode:!0},"mistral-large:latest":{aliases:["mistral-large-local"],displayName:"Mistral Large (Local)",contextWindow:131072,maxOutputTokens:8192,vision:!1,functionCalling:!0,reasoning:!0,jsonMode:!0}}}}}),qq,jNe=S({"src/lib/models/manifests/litellm.ts"(){"use strict";qq={defaultContextWindow:128e3,models:{_default:{aliases:[],contextWindow:128e3,maxOutputTokens:128e3,vision:!1,functionCalling:!1}}}}});function Kwr(e){if(!e)return!1;for(const t of CS){if(e===t)return!0;const r=e.indexOf(t);if(r===-1)continue;const n=r===0?"":e[r-1],o=e[r+t.length]??"",s=i=>i===""||/[-_:./@]/.test(i);if(s(n)&&s(o))return!0}return!1}function bS(e){return e===null?null:e??HNe}function Yu(e){const t={};for(const[r,n]of Object.entries(e.models))r!=="_default"&&(t[r]=n.maxOutputTokens);return t}var CS,jq,Hq,Ds,mh,kS,HNe,VNe,Vq,WNe,ph,ws,Wq,Os,ca,KNe,Jwr,Lo=S({"src/lib/core/constants.ts"(){"use strict";Nq(),FNe(),$Ne(),UNe(),BNe(),zNe(),GNe(),qNe(),jNe(),CS=["gemini-3-pro-image-preview","gemini-2.5-flash-image","gemini-3.1-flash-image-preview","stable-image-ultra","stable-image-core","sd3.5-large","sd3.5-large-turbo","sd3.5-medium","V_1","V_1_TURBO","V_2","V_2_TURBO","V_2A","V_2A_TURBO","V_3","recraftv3","recraftv2","gpt-image-1","dall-e-3","dall-e-2","black-forest-labs/flux","stability-ai/sdxl","stability-ai/stable-diffusion"],jq=[...CS,"gemini-3.1-pro-preview","gemini-3.1-flash-lite-preview","gemini-3.1-pro-preview-customtools","gemini-3-pro-preview","gemini-3-pro-preview-11-2025","gemini-3-pro-latest","gemini-3-flash-preview"],Hq=.7,Ds=200,mh=2,kS=3e5,HNe=3e5,VNe=12e4,Vq=.85,WNe=3e4,ph=5e3,ws={min:1,max:500,default:Ds},Wq={anthropic:{default:64e3,...Yu(f1)},openai:{default:128e3,...Yu(Lq)},"google-ai":{default:64e3,...Yu(Fq)},vertex:{default:64e3,...Yu($q)},bedrock:{default:64e3,...Yu(Uq)},azure:{default:128e3,...Yu(Bq)},mistral:{default:128e3,...Yu(zq)},ollama:{default:64e3,...Yu(Gq)},litellm:{default:128e3,...Yu(qq)},default:64e3},Os={MAX_SIZE_MB:20,DEFAULT_MAX_PAGES:20,MAX_SCALE:10,MIN_SCALE:.1,DEFAULT_SCALE:1.5,PAGE_COUNT_TIMEOUT_MS:5e3,DEFAULT_MAX_CANVAS_PIXELS:16777216,MIN_EFFECTIVE_SCALE:.1},ca={MAX_PROMPT_LENGTH:1e6,HIGH_MEMORY_THRESHOLD:100,LONG_TIMEOUT_WARNING:3e5,DEFAULT_CONCURRENCY_LIMIT:3,MAX_CONCURRENCY_LIMIT:5,DEFAULT_RETRY_ATTEMPTS:3,DEFAULT_INITIAL_DELAY:1e3,DEFAULT_MAX_DELAY:3e4,DEFAULT_BACKOFF_MULTIPLIER:2},KNe=15e3,Jwr={maxTokens:(()=>{if(!process.env.NEUROLINK_DEFAULT_MAX_TOKENS)return;const e=parseInt(process.env.NEUROLINK_DEFAULT_MAX_TOKENS,10);return Number.isFinite(e)?e:void 0})(),temperature:process.env.NEUROLINK_DEFAULT_TEMPERATURE?(()=>{const e=parseFloat(process.env.NEUROLINK_DEFAULT_TEMPERATURE);return Number.isFinite(e)?e:Hq})():Hq}}}),JNe,Ywr=S({"src/lib/models/manifests/openai-compatible.ts"(){"use strict";JNe={defaultContextWindow:128e3,models:{_default:{aliases:[],contextWindow:128e3,maxOutputTokens:64e3,vision:!1,functionCalling:!1}}}}}),YNe,Zwr=S({"src/lib/models/manifests/openrouter.ts"(){"use strict";YNe={defaultContextWindow:128e3,models:{_default:{aliases:[],contextWindow:128e3,maxOutputTokens:64e3,vision:!1,functionCalling:!1}}}}}),ZNe,Xwr=S({"src/lib/models/manifests/huggingface.ts"(){"use strict";ZNe={defaultContextWindow:32e3,models:{_default:{aliases:[],contextWindow:32e3,maxOutputTokens:32e3,vision:!1,functionCalling:!0}}}}}),XNe,Qwr=S({"src/lib/models/manifests/sagemaker.ts"(){"use strict";XNe={defaultContextWindow:128e3,models:{_default:{aliases:[],contextWindow:128e3,maxOutputTokens:64e3,vision:!1,functionCalling:!1}}}}}),QNe,eTr=S({"src/lib/models/manifests/deepseek.ts"(){"use strict";QNe={defaultContextWindow:64e3,models:{_default:{aliases:[],contextWindow:64e3,maxOutputTokens:64e3,vision:!1,functionCalling:!1}}}}}),eLe,tTr=S({"src/lib/models/manifests/nvidia-nim.ts"(){"use strict";eLe={defaultContextWindow:128e3,models:{_default:{aliases:[],contextWindow:128e3,maxOutputTokens:64e3,vision:!1,functionCalling:!1}}}}}),tLe,rTr=S({"src/lib/models/manifests/lm-studio.ts"(){"use strict";tLe={defaultContextWindow:8192,models:{_default:{aliases:[],contextWindow:8192,maxOutputTokens:8192,vision:!1,functionCalling:!1}}}}}),rLe,nTr=S({"src/lib/models/manifests/llamacpp.ts"(){"use strict";rLe={defaultContextWindow:8192,models:{_default:{aliases:[],contextWindow:8192,maxOutputTokens:8192,vision:!1,functionCalling:!1}}}}}),nLe,oTr=S({"src/lib/models/manifests/xai.ts"(){"use strict";nLe={defaultContextWindow:131072,models:{_default:{aliases:[],contextWindow:131072,maxOutputTokens:64e3,vision:!1,functionCalling:!1}}}}}),oLe,sTr=S({"src/lib/models/manifests/groq.ts"(){"use strict";oLe={defaultContextWindow:128e3,models:{_default:{aliases:[],contextWindow:128e3,maxOutputTokens:64e3,vision:!1,functionCalling:!1}}}}}),sLe,iTr=S({"src/lib/models/manifests/cohere.ts"(){"use strict";sLe={defaultContextWindow:128e3,models:{_default:{aliases:[],contextWindow:128e3,maxOutputTokens:64e3,vision:!1,functionCalling:!1}}}}}),iLe,aTr=S({"src/lib/models/manifests/together-ai.ts"(){"use strict";iLe={defaultContextWindow:128e3,models:{_default:{aliases:[],contextWindow:128e3,maxOutputTokens:64e3,vision:!1,functionCalling:!1}}}}}),aLe,cTr=S({"src/lib/models/manifests/fireworks.ts"(){"use strict";aLe={defaultContextWindow:128e3,models:{_default:{aliases:[],contextWindow:128e3,maxOutputTokens:64e3,vision:!1,functionCalling:!1}}}}}),cLe,lTr=S({"src/lib/models/manifests/perplexity.ts"(){"use strict";cLe={defaultContextWindow:127e3,models:{_default:{aliases:[],contextWindow:127e3,maxOutputTokens:64e3,vision:!1,functionCalling:!1}}}}}),lLe,uTr=S({"src/lib/models/manifests/cloudflare.ts"(){"use strict";lLe={defaultContextWindow:8192,models:{_default:{aliases:[],contextWindow:8192,maxOutputTokens:8192,vision:!1,functionCalling:!1}}}}}),uLe,dTr=S({"src/lib/models/manifests/replicate.ts"(){"use strict";uLe={defaultContextWindow:32768,models:{_default:{aliases:[],contextWindow:32768,maxOutputTokens:32768,vision:!1,functionCalling:!1}}}}}),dLe,mTr=S({"src/lib/models/manifests/voyage.ts"(){"use strict";dLe={defaultContextWindow:32e3,models:{_default:{aliases:[],contextWindow:32e3,maxOutputTokens:32e3,vision:!1,functionCalling:!1}}}}}),mLe,pTr=S({"src/lib/models/manifests/jina.ts"(){"use strict";mLe={defaultContextWindow:8192,models:{_default:{aliases:[],contextWindow:8192,maxOutputTokens:8192,vision:!1,functionCalling:!1}}}}}),pLe,hTr=S({"src/lib/models/manifests/stability.ts"(){"use strict";pLe={defaultContextWindow:2e3,models:{_default:{aliases:[],contextWindow:2e3,maxOutputTokens:2e3,vision:!1,functionCalling:!1}}}}}),hLe,fTr=S({"src/lib/models/manifests/ideogram.ts"(){"use strict";hLe={defaultContextWindow:2e3,models:{_default:{aliases:[],contextWindow:2e3,maxOutputTokens:2e3,vision:!1,functionCalling:!1}}}}}),fLe,gTr=S({"src/lib/models/manifests/recraft.ts"(){"use strict";fLe={defaultContextWindow:2e3,models:{_default:{aliases:[],contextWindow:2e3,maxOutputTokens:2e3,vision:!1,functionCalling:!1}}}}});function yTr(e){const t=Object.fromEntries(Object.entries(e.models.catalog).map(([r,n])=>[r,{aliases:[],contextWindow:n.contextWindow??e.models.defaultContextWindow,maxOutputTokens:e.models.defaultMaxOutputTokens,vision:n.vision,functionCalling:e.capabilities.tools}]));return{defaultContextWindow:e.models.defaultContextWindow,models:{_default:{aliases:[],contextWindow:e.models.defaultContextWindow,maxOutputTokens:e.models.defaultMaxOutputTokens,vision:!1,functionCalling:e.capabilities.tools},...t}}}function gLe(e){return xS[e]}function yLe(){return Object.keys(xS)}function AS(e,t,r){if(!e.familyRules)return r;let n=r;for(const o of e.familyRules)o.pattern.test(t)&&(n={...n,...o.patch});return n}function Kq(e,t){const r=xS[e];if(!r)return;const n=r.models[t];if(n)return AS(r,t,n);const o=Object.entries(r.models).find(([s,i])=>s!=="_default"&&i.aliases.includes(t));if(o)return AS(r,t,o[1])}function vTr(e,t){const r=xS[e];if(!r)return;const n=r.models[t];if(n)return AS(r,t,n);const o=Object.entries(r.models).find(([a,c])=>a!=="_default"&&c.aliases.includes(t));if(o)return AS(r,t,o[1]);const i=Object.keys(r.models).filter(a=>a!=="_default").sort((a,c)=>c.length-a.length).find(a=>t.startsWith(a));if(i)return AS(r,t,r.models[i])}var Jq,xS,g1=S({"src/lib/models/manifestRegistry.ts"(){"use strict";gy(),Nq(),FNe(),zNe(),BNe(),qNe(),GNe(),$Ne(),Ywr(),Zwr(),UNe(),Xwr(),jNe(),Qwr(),eTr(),tTr(),rTr(),nTr(),oTr(),sTr(),iTr(),aTr(),cTr(),lTr(),uTr(),dTr(),mTr(),pTr(),hTr(),fTr(),gTr(),Jq=e=>{const t=fy().find(r=>r.id===e);if(!t)throw new Error(`No catalog JSON entry found for provider "${e}"`);return yTr(t)},xS={anthropic:f1,openai:Lq,azure:Bq,bedrock:Uq,ollama:Gq,mistral:zq,"google-ai":Fq,"openai-compatible":JNe,openrouter:YNe,vertex:$q,huggingface:ZNe,litellm:qq,sagemaker:XNe,deepseek:QNe,"nvidia-nim":eLe,"lm-studio":tLe,llamacpp:rLe,xai:nLe,groq:oLe,cerebras:Jq("cerebras"),sambanova:Jq("sambanova"),cohere:sLe,"together-ai":iLe,fireworks:aLe,perplexity:cLe,cloudflare:lLe,replicate:uLe,voyage:dLe,jina:mLe,stability:pLe,ideogram:hLe,recraft:fLe}}});function wTr(e){return/mini|nano|haiku|flash|lite/i.test(e)?"fast":/opus|^o1|^o3|-pro$/i.test(e)?"slow":"medium"}function vLe(e){return e.reasoning?"high":"medium"}function TTr(){const e={};for(const t of yLe()){const r=gLe(t);if(r)for(const[n,o]of Object.entries(r.models)){if(n==="_default"||!o.pricingPerMTok)continue;if(e[n]){p.debug(`[modelRegistry] Manifest id collision: "${n}" already derived from ${e[n].provider}; keeping first, skipping ${t}`);continue}const s=o.reasoning?9:6,i=Yq[n];e[n]={id:n,name:o.displayName??n,provider:t,description:o.displayName??n,capabilities:{vision:o.vision,functionCalling:o.functionCalling,codeGeneration:!0,reasoning:o.reasoning??!1,multimodal:o.vision||o.nativeAudio===!0,streaming:!0,jsonMode:o.jsonMode??!1,samplingParams:o.samplingParams},pricing:{inputCostPer1K:o.pricingPerMTok.input/1e3,outputCostPer1K:o.pricingPerMTok.output/1e3,currency:"USD"},performance:o.curated?.performance??{speed:wTr(n),quality:vLe(o),accuracy:vLe(o)},limits:{maxContextTokens:o.contextWindow,maxOutputTokens:o.maxOutputTokens,...i?.limits?.maxRequestsPerMinute!==void 0?{maxRequestsPerMinute:i.limits.maxRequestsPerMinute}:{}},useCases:o.curated?.useCases??{coding:o.functionCalling?8:5,creative:o.vision?7:6,analysis:s,conversation:7,reasoning:s,translation:6,summarization:7},aliases:o.aliases,deprecated:i?.deprecated??!1,...i?.releaseDate!==void 0?{releaseDate:i.releaseDate}:{},isLocal:t==="ollama"||t==="lm-studio"||t==="llamacpp",category:o.curated?.category??(o.reasoning?"reasoning":"general")}}}return e}function IS(){return Object.values(eu)}function ETr(e){return eu[e]}function STr(e,t,r){const n=r.toLowerCase(),o=Cm[n]??n,s=eu[o];return!s||s.provider!==t.toLowerCase()?!0:s.capabilities[e]??!0}function _Tr(e,t){const r=(t??"").toLowerCase();if(!r)return!0;const n=Cm[r]??r,o=eu[n];return o&&o.provider===e.toLowerCase()&&o.capabilities.samplingParams!==void 0?o.capabilities.samplingParams:!TLe.some(s=>s.test(n)||s.test(r))}function Ql(e,t,r,n){return _Tr(e,t)?r:((r.temperature!==void 0||r.topP!==void 0)&&p.debug(`[ModelRegistry] Stripping sampling params for ${e}/${t} at ${n} \u2014 model rejects temperature/topP`,{provider:e,model:t,site:n,hadTemperature:r.temperature!==void 0,hadTopP:r.topP!==void 0}),{})}function bTr(e){return Object.values(eu).filter(t=>t.provider===e)}function CTr(){return yLe()}function kTr(e,t,r){const n=t/1e3*e.pricing.inputCostPer1K,o=r/1e3*e.pricing.outputCostPer1K;return n+o}var Yq,eu,Cm,wLe,TLe,hh=S({"src/lib/models/modelRegistry.ts"(){"use strict";ut(),U(),g1(),Yq={"gpt-4o":{id:"gpt-4o",name:"GPT-4 Omni",provider:"openai",description:"Most capable OpenAI model with vision and advanced reasoning",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.005,outputCostPer1K:.015,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:128e3,maxOutputTokens:4096,maxRequestsPerMinute:500},useCases:{coding:9,creative:8,analysis:9,conversation:9,reasoning:9,translation:8,summarization:8},aliases:["gpt4o","gpt-4-omni","openai-flagship"],deprecated:!1,isLocal:!1,releaseDate:"2024-05-13",category:"general"},"gpt-4o-mini":{id:"gpt-4o-mini",name:"GPT-4 Omni Mini",provider:"openai",description:"Fast and cost-effective model with strong performance",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:15e-5,outputCostPer1K:6e-4,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:128e3,maxOutputTokens:16384,maxRequestsPerMinute:1e3},useCases:{coding:8,creative:7,analysis:8,conversation:8,reasoning:8,translation:8,summarization:9},aliases:["gpt4o-mini","gpt-4-mini","fastest","cheap"],deprecated:!1,isLocal:!1,releaseDate:"2024-07-18",category:"general"},"gpt-5":{id:"gpt-5",name:"GPT-5",provider:"openai",description:"OpenAI's most advanced model with breakthrough reasoning and multimodal capabilities",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.01,outputCostPer1K:.03,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:256e3,maxOutputTokens:32768,maxRequestsPerMinute:200},useCases:{coding:10,creative:10,analysis:10,conversation:10,reasoning:10,translation:9,summarization:9},aliases:["gpt5","gpt-5-flagship","openai-latest"],deprecated:!1,isLocal:!1,releaseDate:"2025-08-07",category:"reasoning"},"gpt-5-mini":{id:"gpt-5-mini",name:"GPT-5 Mini",provider:"openai",description:"Fast and efficient GPT-5 variant for everyday tasks",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.002,outputCostPer1K:.006,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:128e3,maxOutputTokens:16384,maxRequestsPerMinute:500},useCases:{coding:8,creative:8,analysis:8,conversation:9,reasoning:8,translation:8,summarization:9},aliases:["gpt5-mini","gpt-5-fast"],deprecated:!1,isLocal:!1,releaseDate:"2025-08-07",category:"general"},o3:{id:"o3",name:"O3",provider:"openai",description:"Advanced reasoning model with extended thinking capabilities for complex tasks",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.015,outputCostPer1K:.06,currency:"USD"},performance:{speed:"slow",quality:"high",accuracy:"high"},limits:{maxContextTokens:2e5,maxOutputTokens:1e5,maxRequestsPerMinute:100},useCases:{coding:10,creative:8,analysis:10,conversation:7,reasoning:10,translation:7,summarization:8},aliases:["o3-reasoning","o3-thinking"],deprecated:!1,isLocal:!1,releaseDate:"2025-01-31",category:"reasoning"},"o3-mini":{id:"o3-mini",name:"O3 Mini",provider:"openai",description:"Cost-effective reasoning model with strong logical capabilities",capabilities:{vision:!1,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.003,outputCostPer1K:.012,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:2e5,maxOutputTokens:65536,maxRequestsPerMinute:200},useCases:{coding:9,creative:6,analysis:9,conversation:7,reasoning:9,translation:6,summarization:7},aliases:["o3-mini-reasoning"],deprecated:!1,isLocal:!1,releaseDate:"2025-01-31",category:"reasoning"},"gpt-5-nano":{id:"gpt-5-nano",name:"GPT-5 Nano",provider:"openai",description:"Fastest and most cost-effective GPT-5 variant for simple tasks",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:5e-5,outputCostPer1K:4e-4,currency:"USD"},performance:{speed:"fast",quality:"medium",accuracy:"medium"},limits:{maxContextTokens:272e3,maxOutputTokens:128e3,maxRequestsPerMinute:2e3},useCases:{coding:6,creative:6,analysis:6,conversation:8,reasoning:6,translation:7,summarization:8},aliases:["gpt5-nano","gpt-5-cheapest"],deprecated:!1,isLocal:!1,releaseDate:"2025-08-07",category:"general"},"gpt-5.2":{id:"gpt-5.2",name:"GPT-5.2 Thinking",provider:"openai",description:"OpenAI's latest flagship model with deep reasoning capabilities, 100% on AIME 2025, 80% SWE-bench Verified",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.00175,outputCostPer1K:.014,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:256e3,maxOutputTokens:64e3,maxRequestsPerMinute:150},useCases:{coding:10,creative:10,analysis:10,conversation:9,reasoning:10,translation:9,summarization:9},aliases:["gpt52","gpt-5.2-thinking","openai-latest-reasoning"],deprecated:!1,isLocal:!1,releaseDate:"2025-12-11",category:"reasoning"},"gpt-5.2-chat-latest":{id:"gpt-5.2-chat-latest",name:"GPT-5.2 Instant",provider:"openai",description:"Fast everyday model for quick tasks with excellent performance across all domains",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.00175,outputCostPer1K:.014,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:256e3,maxOutputTokens:32e3,maxRequestsPerMinute:300},useCases:{coding:9,creative:9,analysis:9,conversation:10,reasoning:9,translation:9,summarization:9},aliases:["gpt52-chat","gpt-5.2-instant","gpt52-fast"],deprecated:!1,isLocal:!1,releaseDate:"2025-12-11",category:"general"},"gpt-5.2-pro":{id:"gpt-5.2-pro",name:"GPT-5.2 Pro",provider:"openai",description:"Highest quality model for science, math, and complex problem-solving with 92.4% GPQA Diamond performance",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.021,outputCostPer1K:.168,currency:"USD"},performance:{speed:"slow",quality:"high",accuracy:"high"},limits:{maxContextTokens:256e3,maxOutputTokens:128e3,maxRequestsPerMinute:50},useCases:{coding:10,creative:9,analysis:10,conversation:8,reasoning:10,translation:9,summarization:9},aliases:["gpt52-pro","gpt-5.2-professional","openai-science"],deprecated:!1,isLocal:!1,releaseDate:"2025-12-11",category:"reasoning"},"gpt-4.1":{id:"gpt-4.1",name:"GPT-4.1",provider:"openai",description:"Advanced coding model with 1 million token context window",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.002,outputCostPer1K:.008,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:1e6,maxOutputTokens:128e3,maxRequestsPerMinute:200},useCases:{coding:10,creative:8,analysis:9,conversation:8,reasoning:9,translation:8,summarization:9},aliases:["gpt-4.1","gpt41","million-context"],deprecated:!1,isLocal:!1,releaseDate:"2025-04-14",category:"coding"},"gpt-4.1-mini":{id:"gpt-4.1-mini",name:"GPT-4.1 Mini",provider:"openai",description:"Fast GPT-4.1 variant with 1M context for efficient coding",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:4e-4,outputCostPer1K:.0016,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:1e6,maxOutputTokens:128e3,maxRequestsPerMinute:500},useCases:{coding:9,creative:7,analysis:8,conversation:8,reasoning:8,translation:8,summarization:9},aliases:["gpt-4.1-mini","gpt41-mini"],deprecated:!1,isLocal:!1,releaseDate:"2025-04-14",category:"coding"},"gpt-4.1-nano":{id:"gpt-4.1-nano",name:"GPT-4.1 Nano",provider:"openai",description:"Most cost-effective GPT-4.1 variant with 1M context",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:1e-4,outputCostPer1K:4e-4,currency:"USD"},performance:{speed:"fast",quality:"medium",accuracy:"medium"},limits:{maxContextTokens:1e6,maxOutputTokens:128e3,maxRequestsPerMinute:1e3},useCases:{coding:7,creative:6,analysis:7,conversation:7,reasoning:7,translation:7,summarization:8},aliases:["gpt-4.1-nano","gpt41-nano"],deprecated:!1,isLocal:!1,releaseDate:"2025-04-14",category:"coding"},"o3-pro":{id:"o3-pro",name:"O3 Pro",provider:"openai",description:"Most powerful reasoning model for complex scientific and coding tasks",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.03,outputCostPer1K:.12,currency:"USD"},performance:{speed:"slow",quality:"high",accuracy:"high"},limits:{maxContextTokens:2e5,maxOutputTokens:1e5,maxRequestsPerMinute:50},useCases:{coding:10,creative:7,analysis:10,conversation:6,reasoning:10,translation:6,summarization:7},aliases:["o3-pro","o3-professional"],deprecated:!1,isLocal:!1,releaseDate:"2025-04-16",category:"reasoning"},"o4-mini":{id:"o4-mini",name:"O4 Mini",provider:"openai",description:"Fast reasoning model optimized for math, coding, and visual tasks",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.003,outputCostPer1K:.012,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:2e5,maxOutputTokens:1e5,maxRequestsPerMinute:200},useCases:{coding:9,creative:6,analysis:9,conversation:7,reasoning:10,translation:6,summarization:7},aliases:["o4-mini","o4-fast"],deprecated:!1,isLocal:!1,releaseDate:"2025-04-16",category:"reasoning"},o1:{id:"o1",name:"O1",provider:"openai",description:"Premium reasoning model with highest capability for mission-critical tasks",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.15,outputCostPer1K:.6,currency:"USD"},performance:{speed:"slow",quality:"high",accuracy:"high"},limits:{maxContextTokens:128e3,maxOutputTokens:32768,maxRequestsPerMinute:50},useCases:{coding:10,creative:7,analysis:10,conversation:6,reasoning:10,translation:6,summarization:7},aliases:["o1-full","o1-premium"],deprecated:!1,isLocal:!1,releaseDate:"2024-09-12",category:"reasoning"},"o1-preview":{id:"o1-preview",name:"O1 Preview",provider:"openai",description:"Preview version of O1 reasoning model",capabilities:{vision:!1,functionCalling:!1,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.015,outputCostPer1K:.06,currency:"USD"},performance:{speed:"slow",quality:"high",accuracy:"high"},limits:{maxContextTokens:128e3,maxOutputTokens:32768,maxRequestsPerMinute:100},useCases:{coding:9,creative:6,analysis:9,conversation:6,reasoning:9,translation:5,summarization:6},aliases:["o1-preview"],deprecated:!1,isLocal:!1,releaseDate:"2024-09-12",category:"reasoning"},"o1-mini":{id:"o1-mini",name:"O1 Mini",provider:"openai",description:"Cost-effective O1 variant with strong reasoning capabilities",capabilities:{vision:!1,functionCalling:!1,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.003,outputCostPer1K:.012,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:128e3,maxOutputTokens:65536,maxRequestsPerMinute:200},useCases:{coding:8,creative:5,analysis:8,conversation:6,reasoning:8,translation:5,summarization:6},aliases:["o1-mini","o1-budget"],deprecated:!1,isLocal:!1,releaseDate:"2024-09-12",category:"reasoning"},"gpt-4":{id:"gpt-4",name:"GPT-4",provider:"openai",description:"Previous generation flagship model (legacy)",capabilities:{vision:!1,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.03,outputCostPer1K:.06,currency:"USD"},performance:{speed:"slow",quality:"high",accuracy:"high"},limits:{maxContextTokens:8192,maxOutputTokens:4096,maxRequestsPerMinute:200},useCases:{coding:8,creative:8,analysis:8,conversation:8,reasoning:8,translation:8,summarization:8},aliases:["gpt4","gpt-4-base"],deprecated:!0,isLocal:!1,releaseDate:"2023-03-14",category:"general"},"gpt-4-turbo":{id:"gpt-4-turbo",name:"GPT-4 Turbo",provider:"openai",description:"Faster GPT-4 variant with extended context (legacy)",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.01,outputCostPer1K:.03,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:128e3,maxOutputTokens:4096,maxRequestsPerMinute:500},useCases:{coding:8,creative:8,analysis:9,conversation:8,reasoning:8,translation:8,summarization:8},aliases:["gpt4-turbo","gpt-4-turbo-preview"],deprecated:!0,isLocal:!1,releaseDate:"2024-04-09",category:"general"},"gpt-3.5-turbo":{id:"gpt-3.5-turbo",name:"GPT-3.5 Turbo",provider:"openai",description:"Fast and cost-effective model for simpler tasks (legacy)",capabilities:{vision:!1,functionCalling:!0,codeGeneration:!0,reasoning:!1,multimodal:!1,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:5e-4,outputCostPer1K:.0015,currency:"USD"},performance:{speed:"fast",quality:"medium",accuracy:"medium"},limits:{maxContextTokens:16385,maxOutputTokens:4096,maxRequestsPerMinute:3500},useCases:{coding:6,creative:6,analysis:6,conversation:7,reasoning:5,translation:7,summarization:7},aliases:["gpt35","gpt-3.5","chatgpt"],deprecated:!0,isLocal:!1,releaseDate:"2023-03-01",category:"general"},"gemini-2.5-pro":{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro",provider:"google-ai",description:"Google's most capable multimodal model with large context window",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.00125,outputCostPer1K:.005,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:2097152,maxOutputTokens:8192,maxRequestsPerMinute:360},useCases:{coding:9,creative:8,analysis:10,conversation:8,reasoning:9,translation:9,summarization:9},aliases:["gemini-pro","google-flagship","best-analysis"],deprecated:!1,isLocal:!1,releaseDate:"2024-12-11",category:"reasoning"},"gemini-2.5-flash":{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash",provider:"google-ai",description:"Fast and efficient multimodal model with large context",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:75e-6,outputCostPer1K:3e-4,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:1048576,maxOutputTokens:8192,maxRequestsPerMinute:1e3},useCases:{coding:8,creative:7,analysis:9,conversation:8,reasoning:8,translation:8,summarization:9},aliases:["gemini-flash","google-fast","best-value"],deprecated:!1,isLocal:!1,releaseDate:"2024-12-11",category:"general"},"claude-opus-4-5-20251101":{id:"claude-opus-4-5-20251101",name:"Claude Opus 4.5",provider:"anthropic",description:"Anthropic's most capable model with exceptional reasoning, coding, and multimodal capabilities",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:.005,outputCostPer1K:.025,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:2e5,maxOutputTokens:64e3,maxRequestsPerMinute:50},useCases:{coding:10,creative:10,analysis:10,conversation:9,reasoning:10,translation:9,summarization:9},aliases:["claude-4.5-opus","opus-4.5","anthropic-flagship"],deprecated:!1,isLocal:!1,releaseDate:"2025-11-24",category:"reasoning"},"claude-opus-5":{id:"claude-opus-5",name:"Claude Opus 5",provider:"anthropic",description:"For complex agentic coding and enterprise work",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:.005,outputCostPer1K:.025,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:1e6,maxOutputTokens:128e3,maxRequestsPerMinute:50},useCases:{coding:10,creative:10,analysis:10,conversation:9,reasoning:10,translation:9,summarization:9},aliases:["opus-5","claude-opus-latest"],deprecated:!1,isLocal:!1,releaseDate:"2026-07-24",category:"reasoning"},"claude-sonnet-5":{id:"claude-sonnet-5",name:"Claude Sonnet 5",provider:"anthropic",description:"The best combination of speed and intelligence",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:.002,outputCostPer1K:.01,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:1e6,maxOutputTokens:128e3,maxRequestsPerMinute:50},useCases:{coding:9,creative:9,analysis:9,conversation:9,reasoning:9,translation:9,summarization:9},aliases:["sonnet-5","claude-sonnet-latest"],deprecated:!1,isLocal:!1,releaseDate:"2026-06-30",category:"general"},"claude-fable-5":{id:"claude-fable-5",name:"Claude Fable 5",provider:"anthropic",description:"Next-generation intelligence for long-running agents",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:.01,outputCostPer1K:.05,currency:"USD"},performance:{speed:"slow",quality:"high",accuracy:"high"},limits:{maxContextTokens:1e6,maxOutputTokens:128e3,maxRequestsPerMinute:50},useCases:{coding:10,creative:10,analysis:10,conversation:9,reasoning:10,translation:9,summarization:9},aliases:["fable-5"],deprecated:!1,isLocal:!1,releaseDate:"2026-06-09",category:"reasoning"},"claude-opus-4-8":{id:"claude-opus-4-8",name:"Claude Opus 4.8",provider:"anthropic",description:"Anthropic Opus 4.8, superseded by Claude Opus 5",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:.005,outputCostPer1K:.025,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:1e6,maxOutputTokens:128e3,maxRequestsPerMinute:50},useCases:{coding:10,creative:9,analysis:10,conversation:9,reasoning:10,translation:9,summarization:9},aliases:["opus-4.8"],deprecated:!1,isLocal:!1,releaseDate:"2026-05-28",category:"reasoning"},"claude-opus-4-7":{id:"claude-opus-4-7",name:"Claude Opus 4.7",provider:"anthropic",description:"Anthropic Opus 4.7, superseded by Claude Opus 4.8",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:.005,outputCostPer1K:.025,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:1e6,maxOutputTokens:128e3,maxRequestsPerMinute:50},useCases:{coding:10,creative:9,analysis:10,conversation:9,reasoning:10,translation:9,summarization:9},aliases:["opus-4.7"],deprecated:!1,isLocal:!1,releaseDate:"2026-04-16",category:"reasoning"},"claude-sonnet-4-5-20250929":{id:"claude-sonnet-4-5-20250929",name:"Claude Sonnet 4.5",provider:"anthropic",description:"Balanced Claude model with excellent performance across all tasks including vision and reasoning",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:.003,outputCostPer1K:.015,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:2e5,maxOutputTokens:64e3,maxRequestsPerMinute:100},useCases:{coding:10,creative:9,analysis:9,conversation:9,reasoning:10,translation:8,summarization:8},aliases:["claude-4.5-sonnet","sonnet-4.5"],deprecated:!1,isLocal:!1,releaseDate:"2025-09-29",category:"coding"},"claude-haiku-4-5-20251001":{id:"claude-haiku-4-5-20251001",name:"Claude 4.5 Haiku",provider:"anthropic",description:"Latest fast and efficient Claude model with vision support",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:.001,outputCostPer1K:.005,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:2e5,maxOutputTokens:64e3,maxRequestsPerMinute:100},useCases:{coding:8,creative:8,analysis:8,conversation:9,reasoning:8,translation:8,summarization:9},aliases:["claude-4.5-haiku","claude-haiku-latest","haiku-4.5"],deprecated:!1,isLocal:!1,releaseDate:"2025-10-15",category:"general"},"claude-3-5-sonnet-20241022":{id:"claude-3-5-sonnet-20241022",name:"Claude 3.5 Sonnet",provider:"anthropic",description:"Anthropic's most capable model with excellent reasoning and coding",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:.003,outputCostPer1K:.015,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:2e5,maxOutputTokens:8192,maxRequestsPerMinute:50},useCases:{coding:10,creative:9,analysis:9,conversation:9,reasoning:10,translation:8,summarization:8},aliases:["claude-3.5-sonnet","claude-sonnet","best-coding","claude-latest"],deprecated:!1,isLocal:!1,releaseDate:"2024-10-22",category:"coding"},"claude-3-5-haiku-20241022":{id:"claude-3-5-haiku-20241022",name:"Claude 3.5 Haiku",provider:"anthropic",description:"Fast and efficient Claude model for quick tasks",capabilities:{vision:!1,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:.001,outputCostPer1K:.005,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:2e5,maxOutputTokens:8192,maxRequestsPerMinute:100},useCases:{coding:8,creative:7,analysis:8,conversation:8,reasoning:8,translation:8,summarization:9},aliases:["claude-3.5-haiku","claude-haiku","claude-fast"],deprecated:!1,isLocal:!1,releaseDate:"2024-10-22",category:"general"},"mistral-large-latest":{id:"mistral-large-latest",name:"Mistral Large",provider:"mistral",description:"Mistral's flagship model with excellent reasoning and multilingual capabilities",capabilities:{vision:!1,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.002,outputCostPer1K:.006,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:131072,maxOutputTokens:8192,maxRequestsPerMinute:100},useCases:{coding:9,creative:8,analysis:9,conversation:8,reasoning:9,translation:9,summarization:8},aliases:["mistral-large","mistral-flagship"],deprecated:!1,isLocal:!1,releaseDate:"2025-12-01",category:"reasoning"},"mistral-small-latest":{id:"mistral-small-latest",name:"Mistral Small",provider:"mistral",description:"Efficient model for simple tasks and cost-sensitive applications",capabilities:{vision:!1,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.001,outputCostPer1K:.003,currency:"USD"},performance:{speed:"fast",quality:"medium",accuracy:"medium"},limits:{maxContextTokens:32768,maxOutputTokens:8192,maxRequestsPerMinute:200},useCases:{coding:6,creative:6,analysis:7,conversation:7,reasoning:6,translation:7,summarization:7},aliases:["mistral-small","mistral-cheap"],deprecated:!1,isLocal:!1,releaseDate:"2024-02-26",category:"general"},"codestral-latest":{id:"codestral-latest",name:"Codestral",provider:"mistral",description:"Specialized code generation model trained on 80+ programming languages",capabilities:{vision:!1,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.001,outputCostPer1K:.003,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:32768,maxOutputTokens:8192,maxRequestsPerMinute:200},useCases:{coding:10,creative:5,analysis:7,conversation:5,reasoning:8,translation:5,summarization:6},aliases:["codestral","mistral-code"],deprecated:!1,isLocal:!1,releaseDate:"2024-05-29",category:"coding"},"pixtral-large":{id:"pixtral-large",name:"Pixtral Large",provider:"mistral",description:"Multimodal vision-language model for image understanding",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.002,outputCostPer1K:.006,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:131072,maxOutputTokens:8192,maxRequestsPerMinute:100},useCases:{coding:8,creative:8,analysis:9,conversation:7,reasoning:8,translation:7,summarization:8},aliases:["pixtral","mistral-vision"],deprecated:!0,isLocal:!1,releaseDate:"2024-09-01",category:"vision"},"llama4:latest":{id:"llama4:latest",name:"Llama 4",provider:"ollama",description:"Latest Llama 4 with multimodal vision and tool capabilities, runs locally",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:0,outputCostPer1K:0,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:131072,maxOutputTokens:8192},useCases:{coding:9,creative:8,analysis:9,conversation:8,reasoning:9,translation:8,summarization:8},aliases:["llama4","llama4-local"],deprecated:!1,isLocal:!0,releaseDate:"2025-04-01",category:"reasoning"},"llama3.3:latest":{id:"llama3.3:latest",name:"Llama 3.3",provider:"ollama",description:"High-performance Llama 3.3 for local inference",capabilities:{vision:!1,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:0,outputCostPer1K:0,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:131072,maxOutputTokens:8192},useCases:{coding:8,creative:8,analysis:8,conversation:8,reasoning:8,translation:8,summarization:8},aliases:["llama3.3","llama3.3-local"],deprecated:!1,isLocal:!0,releaseDate:"2024-12-01",category:"general"},"llama3.2:latest":{id:"llama3.2:latest",name:"Llama 3.2 Latest",provider:"ollama",description:"Local Llama model for private, offline AI generation",capabilities:{vision:!1,functionCalling:!1,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:0,outputCostPer1K:0,currency:"USD"},performance:{speed:"fast",quality:"medium",accuracy:"medium"},limits:{maxContextTokens:131072,maxOutputTokens:8192},useCases:{coding:6,creative:7,analysis:6,conversation:7,reasoning:6,translation:6,summarization:6},aliases:["llama3.2","llama","local","offline"],deprecated:!1,isLocal:!0,releaseDate:"2024-09-25",category:"general"},"deepseek-r1:70b":{id:"deepseek-r1:70b",name:"DeepSeek-R1 70B",provider:"ollama",description:"State-of-the-art reasoning model rivaling OpenAI O1, runs locally",capabilities:{vision:!1,functionCalling:!1,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:0,outputCostPer1K:0,currency:"USD"},performance:{speed:"slow",quality:"high",accuracy:"high"},limits:{maxContextTokens:65536,maxOutputTokens:8192},useCases:{coding:10,creative:7,analysis:10,conversation:6,reasoning:10,translation:7,summarization:7},aliases:["deepseek-r1","deepseek-reasoning","local-reasoning"],deprecated:!1,isLocal:!0,releaseDate:"2025-01-20",category:"reasoning"},"qwen3:72b":{id:"qwen3:72b",name:"Qwen 3 72B",provider:"ollama",description:"Advanced reasoning and multilingual model from Alibaba",capabilities:{vision:!1,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:0,outputCostPer1K:0,currency:"USD"},performance:{speed:"slow",quality:"high",accuracy:"high"},limits:{maxContextTokens:131072,maxOutputTokens:8192},useCases:{coding:9,creative:8,analysis:9,conversation:8,reasoning:9,translation:9,summarization:8},aliases:["qwen3","qwen3-72b-local"],deprecated:!1,isLocal:!0,releaseDate:"2025-04-01",category:"reasoning"},"mistral-large:latest":{id:"mistral-large:latest",name:"Mistral Large (Local)",provider:"ollama",description:"Mistral Large model for local inference",capabilities:{vision:!1,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!1,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:0,outputCostPer1K:0,currency:"USD"},performance:{speed:"slow",quality:"high",accuracy:"high"},limits:{maxContextTokens:131072,maxOutputTokens:8192},useCases:{coding:8,creative:8,analysis:8,conversation:8,reasoning:8,translation:9,summarization:8},aliases:["mistral-large-local"],deprecated:!1,isLocal:!0,releaseDate:"2024-02-26",category:"general"},"amazon.nova-premier-v1:0":{id:"amazon.nova-premier-v1:0",name:"Amazon Nova Premier",provider:"bedrock",description:"Amazon's most capable foundation model with advanced multimodal capabilities",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.0025,outputCostPer1K:.0125,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:3e5,maxOutputTokens:5e3,maxRequestsPerMinute:100},useCases:{coding:9,creative:9,analysis:10,conversation:8,reasoning:9,translation:8,summarization:9},aliases:["nova-premier","aws-flagship"],deprecated:!1,isLocal:!1,releaseDate:"2025-01-01",category:"reasoning"},"amazon.nova-pro-v1:0":{id:"amazon.nova-pro-v1:0",name:"Amazon Nova Pro",provider:"bedrock",description:"Highly capable multimodal model balancing accuracy and speed",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:8e-4,outputCostPer1K:.0032,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:3e5,maxOutputTokens:5e3,maxRequestsPerMinute:200},useCases:{coding:8,creative:8,analysis:9,conversation:8,reasoning:8,translation:8,summarization:9},aliases:["nova-pro","aws-balanced"],deprecated:!1,isLocal:!1,releaseDate:"2024-12-03",category:"general"},"amazon.nova-lite-v1:0":{id:"amazon.nova-lite-v1:0",name:"Amazon Nova Lite",provider:"bedrock",description:"Fast and cost-effective multimodal model optimized for everyday tasks",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:6e-5,outputCostPer1K:24e-5,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:3e5,maxOutputTokens:5e3,maxRequestsPerMinute:500},useCases:{coding:7,creative:7,analysis:8,conversation:8,reasoning:7,translation:8,summarization:9},aliases:["nova-lite","aws-lite","aws-cheap"],deprecated:!1,isLocal:!1,releaseDate:"2024-12-03",category:"general"},"anthropic.claude-opus-4-5-20251101-v1:0":{id:"anthropic.claude-opus-4-5-20251101-v1:0",name:"Claude 4.5 Opus (Bedrock)",provider:"bedrock",description:"Anthropic's most capable model available on Bedrock for enterprise workloads",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!1},pricing:{inputCostPer1K:.015,outputCostPer1K:.075,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:2e5,maxOutputTokens:64e3,maxRequestsPerMinute:50},useCases:{coding:10,creative:10,analysis:10,conversation:9,reasoning:10,translation:9,summarization:9},aliases:["bedrock-claude-4.5-opus","bedrock-claude-flagship"],deprecated:!1,isLocal:!1,releaseDate:"2025-11-24",category:"reasoning"},"meta.llama4-maverick-17b-instruct-v1:0":{id:"meta.llama4-maverick-17b-instruct-v1:0",name:"Llama 4 Maverick (Bedrock)",provider:"bedrock",description:"Meta's latest Llama 4 model with vision on Bedrock",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:19e-5,outputCostPer1K:55e-5,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:131072,maxOutputTokens:8192,maxRequestsPerMinute:200},useCases:{coding:8,creative:8,analysis:8,conversation:8,reasoning:8,translation:8,summarization:8},aliases:["bedrock-llama4","bedrock-llama-maverick"],deprecated:!1,isLocal:!1,releaseDate:"2025-04-01",category:"general"},"gpt-5.1":{id:"gpt-5.1",name:"GPT-5.1 (Azure)",provider:"azure",description:"Azure's latest GPT-5.1 flagship model with enhanced reasoning and multimodal capabilities",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.015,outputCostPer1K:.045,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:3e5,maxOutputTokens:64e3,maxRequestsPerMinute:100},useCases:{coding:10,creative:10,analysis:10,conversation:10,reasoning:10,translation:9,summarization:9},aliases:["azure-gpt-5.1","gpt51-azure","azure-flagship"],deprecated:!1,isLocal:!1,releaseDate:"2025-12-01",category:"reasoning"},"gpt-5.1-chat":{id:"gpt-5.1-chat",name:"GPT-5.1 Chat (Azure)",provider:"azure",description:"Azure GPT-5.1 optimized for conversational interactions",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.012,outputCostPer1K:.036,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:3e5,maxOutputTokens:32e3,maxRequestsPerMinute:150},useCases:{coding:8,creative:9,analysis:9,conversation:10,reasoning:9,translation:9,summarization:9},aliases:["azure-gpt-5.1-chat","gpt51-chat-azure"],deprecated:!1,isLocal:!1,releaseDate:"2025-12-01",category:"general"},"gpt-5.1-codex":{id:"gpt-5.1-codex",name:"GPT-5.1 Codex (Azure)",provider:"azure",description:"Azure GPT-5.1 specialized for code generation and software development",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.012,outputCostPer1K:.036,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:3e5,maxOutputTokens:64e3,maxRequestsPerMinute:100},useCases:{coding:10,creative:7,analysis:9,conversation:7,reasoning:10,translation:7,summarization:8},aliases:["azure-gpt-5.1-codex","gpt51-codex-azure","azure-code"],deprecated:!1,isLocal:!1,releaseDate:"2025-12-01",category:"coding"},"gpt-5.1-codex-mini":{id:"gpt-5.1-codex-mini",name:"GPT-5.1 Codex Mini (Azure)",provider:"azure",description:"Fast and efficient Azure code model for quick development tasks",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.003,outputCostPer1K:.009,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:2e5,maxOutputTokens:32e3,maxRequestsPerMinute:300},useCases:{coding:9,creative:6,analysis:8,conversation:7,reasoning:8,translation:6,summarization:7},aliases:["azure-gpt-5.1-codex-mini","gpt51-codex-mini-azure"],deprecated:!1,isLocal:!1,releaseDate:"2025-12-01",category:"coding"},"gpt-5.1-codex-max":{id:"gpt-5.1-codex-max",name:"GPT-5.1 Codex Max (Azure)",provider:"azure",description:"Azure's most powerful code model for complex enterprise development",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.025,outputCostPer1K:.075,currency:"USD"},performance:{speed:"slow",quality:"high",accuracy:"high"},limits:{maxContextTokens:5e5,maxOutputTokens:128e3,maxRequestsPerMinute:50},useCases:{coding:10,creative:8,analysis:10,conversation:7,reasoning:10,translation:7,summarization:8},aliases:["azure-gpt-5.1-codex-max","gpt51-codex-max-azure","azure-enterprise"],deprecated:!1,isLocal:!1,releaseDate:"2025-12-01",category:"coding"},"gpt-5-pro":{id:"gpt-5-pro",name:"GPT-5 Pro (Azure)",provider:"azure",description:"Azure GPT-5 Pro with enhanced enterprise features",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.02,outputCostPer1K:.06,currency:"USD"},performance:{speed:"medium",quality:"high",accuracy:"high"},limits:{maxContextTokens:256e3,maxOutputTokens:64e3,maxRequestsPerMinute:100},useCases:{coding:10,creative:10,analysis:10,conversation:9,reasoning:10,translation:9,summarization:9},aliases:["azure-gpt-5-pro","gpt5-pro-azure"],deprecated:!1,isLocal:!1,releaseDate:"2025-08-07",category:"reasoning"},"gpt-5-turbo":{id:"gpt-5-turbo",name:"GPT-5 Turbo (Azure)",provider:"azure",description:"Azure GPT-5 Turbo optimized for fast responses",capabilities:{vision:!0,functionCalling:!0,codeGeneration:!0,reasoning:!0,multimodal:!0,streaming:!0,jsonMode:!0},pricing:{inputCostPer1K:.008,outputCostPer1K:.024,currency:"USD"},performance:{speed:"fast",quality:"high",accuracy:"high"},limits:{maxContextTokens:2e5,maxOutputTokens:32768,maxRequestsPerMinute:300},useCases:{coding:9,creative:9,analysis:9,conversation:9,reasoning:9,translation:9,summarization:9},aliases:["azure-gpt-5-turbo","gpt5-turbo-azure"],deprecated:!0,isLocal:!1,releaseDate:"2025-08-07",category:"general"}},eu={...Yq,...TTr()},Cm={},Object.values(eu).forEach(e=>{e.aliases.forEach(t=>{Cm[t.toLowerCase()]=e.id})}),Object.entries(GI).forEach(([e,t])=>{Cm[e.toLowerCase().replace(/_/g,"-")]=t}),Cm.local="llama3.2:latest",wLe={coding:["gpt-5.2-pro","claude-opus-4-5-20251101","gpt-5.2","codestral-latest","claude-sonnet-4-5-20250929"],creative:["gpt-5.2","claude-opus-4-5-20251101","gpt-5","gemini-2.5-pro"],analysis:["gpt-5.2-pro","gemini-2.5-pro","claude-opus-4-5-20251101","o3","amazon.nova-premier-v1:0"],conversation:["gpt-5.2-chat-latest","gpt-5","claude-sonnet-4-5-20250929","gpt-4o"],reasoning:["gpt-5.2-pro","gpt-5.2","o3","claude-opus-4-5-20251101","gemini-2.5-pro","deepseek-r1:70b"],translation:["gemini-2.5-pro","mistral-large-latest","gpt-5"],summarization:["gemini-2.5-flash","gpt-5-mini","claude-haiku-4-5-20251001"],"cost-effective":["gemini-2.5-flash","gpt-4o-mini","mistral-small-latest","amazon.nova-lite-v1:0"],"high-quality":["gpt-5.2-pro","gpt-5.2","claude-opus-4-5-20251101","gemini-2.5-pro"],fast:["gpt-5.2-chat-latest","gpt-5-mini","gemini-2.5-flash","claude-haiku-4-5-20251001","o3-mini"],local:["llama4:latest","deepseek-r1:70b","qwen3:72b","llama3.3:latest"],multimodal:["gpt-5.2","gpt-5.2-pro","claude-opus-4-5-20251101","gemini-2.5-pro","amazon.nova-premier-v1:0"]},TLe=[/sonnet[-_.]?5(?![0-9])/i,/opus[-_.]?4[-_.]?(?:[7-9]|\d{2,})(?![0-9])/i,/opus[-_.]?5(?![0-9])/i,/fable/i,/mythos/i]}});function Zu(e,t){if(e.output?.mode==="music")return"music";if(e.output?.mode==="avatar")return"avatar";if(e.output?.mode==="video")return"video";if(e.output?.mode==="ppt")return"ppt";const r=e.output?.format==="json"||e.output?.format==="structured"||e.output?.format==="text";return Kwr(t)&&!r?"image":e.tts?.enabled&&!e.tts?.useAiResponse?"tts-direct":"text"}var fh=S({"src/lib/core/resolveRequestKind.ts"(){"use strict";Lo()}}),Zq,ELe,SLe,Xq,_Le=S({"otel-stub:@opentelemetry/sdk-trace-base"(){Zq={setAttribute(){return this},setAttributes(){return this},addEvent(){return this},setStatus(){return this},updateName(){return this},end(){},isRecording(){return!1},recordException(){},spanContext(){return{traceId:"0",spanId:"0",traceFlags:0}}},ELe={startSpan(){return Zq},startActiveSpan(e,t,r){return(typeof t=="function"?t:r)(Zq)}},SLe=class{constructor(){}register(){}addSpanProcessor(){}getTracer(){return ELe}shutdown(){return Promise.resolve()}},Xq=class{onStart(){}onEnd(){}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}}}}),Qq,bLe=S({"otel-stub:@opentelemetry/exporter-trace-otlp-http"(){Qq=class{export(){}shutdown(){return Promise.resolve()}}}}),y1,e8=S({"otel-stub:@opentelemetry/resources"(){y1=e=>({attributes:e||{},merge(){return this}})}}),t8,r8,CLe=S({"otel-stub:@opentelemetry/semantic-conventions"(){t8="service.name",r8="service.version"}}),kLe={};ne(kLe,{ATTR_SERVICE_NAME:()=>nFe,ATTR_SERVICE_VERSION:()=>oFe,AsyncLocalStorageContextManager:()=>tFe,BasicTracerProvider:()=>ULe,BatchLogRecordProcessor:()=>ZLe,BatchSpanProcessor:()=>GLe,DiagConsoleLogger:()=>ILe,DiagLogLevel:()=>RLe,ExportResultCode:()=>ALe,INVALID_SPAN_CONTEXT:()=>LLe,LangfuseSpanProcessor:()=>JLe,LoggerProvider:()=>YLe,MeterProvider:()=>XLe,NodeSDK:()=>$Le,NodeTracerProvider:()=>BLe,OTLPLogExporter:()=>jLe,OTLPMetricExporter:()=>HLe,OTLPTraceExporter:()=>qLe,PeriodicExportingMetricReader:()=>QLe,ROOT_CONTEXT:()=>DLe,SEMRESATTRS_SERVICE_NAME:()=>sFe,SEMRESATTRS_SERVICE_VERSION:()=>iFe,SeverityNumber:()=>eFe,SimpleSpanProcessor:()=>zLe,SpanKind:()=>c8,SpanStatusCode:()=>a8,TraceFlags:()=>xLe,ValueType:()=>MLe,W3CTraceContextPropagator:()=>rFe,baggageEntryMetadataFromString:()=>FLe,context:()=>o8,default:()=>aFe,diag:()=>T1,getNodeAutoInstrumentations:()=>VLe,isSpanContextValid:()=>PLe,isValidSpanId:()=>NLe,isValidTraceId:()=>OLe,metrics:()=>i8,propagation:()=>s8,registerInstrumentations:()=>WLe,resourceFromAttributes:()=>KLe,trace:()=>n8});var v1,RS,w1,Ny,n8,o8,s8,i8,T1,ALe,a8,c8,xLe,ILe,RLe,MLe,PLe,DLe,OLe,NLe,LLe,FLe,$Le,ULe,BLe,zLe,GLe,qLe,jLe,HLe,VLe,WLe,KLe,JLe,YLe,ZLe,XLe,QLe,eFe,tFe,rFe,nFe,oFe,sFe,iFe,aFe,ATr=S({"otel-stub:@opentelemetry/context-async-hooks"(){v1={setAttribute(){return this},setAttributes(){return this},addEvent(){return this},setStatus(){return this},updateName(){return this},end(){},isRecording(){return!1},recordException(){},spanContext(){return{traceId:"0",spanId:"0",traceFlags:0}}},RS={startSpan(){return v1},startActiveSpan(e,t,r){return(typeof t=="function"?t:r)(v1)}},w1={createCounter(){return{add(){}}},createHistogram(){return{record(){}}},createUpDownCounter(){return{add(){}}},createObservableGauge(){return{addCallback(){}}}},Ny={getValue(){},setValue(){return Ny},deleteValue(){return Ny}},n8={getTracer(){return RS},getTracerProvider(){return{getTracer(){return RS}}},setGlobalTracerProvider(){},getSpan(){return v1},getActiveSpan(){},setSpan(e){return e},deleteSpan(e){return e},setSpanContext(e){return e},getSpanContext(){}},o8={active(){return Ny},with(e,t){return t()},bind(e,t){return t},setValue(){return Ny},getValue(){}},s8={inject(){},extract(e){return e},setGlobalPropagator(){},getBaggage(){},setBaggage(e){return e},createBaggage(){return{getAllEntries(){return[]},getEntry(){},setEntry(){return this},removeEntry(){return this}}}},i8={getMeter(){return w1},getMeterProvider(){return{getMeter(){return w1}}},setGlobalMeterProvider(){}},T1={setLogger(){},verbose(){},debug(){},info(){},warn(){},error(){},createComponentLogger(){return T1}},ALe={SUCCESS:0,FAILED:1},a8={UNSET:0,OK:1,ERROR:2},c8={INTERNAL:0,SERVER:1,CLIENT:2,PRODUCER:3,CONSUMER:4},xLe={NONE:0,SAMPLED:1},ILe=class{},RLe={NONE:0,ERROR:30,WARN:50,INFO:60,DEBUG:70,VERBOSE:80,ALL:9999},MLe={INT:0,DOUBLE:1},PLe=()=>!1,DLe=Ny,OLe=()=>!1,NLe=()=>!1,LLe={traceId:"0",spanId:"0",traceFlags:0},FLe=()=>({}),$Le=class{start(){}shutdown(){return Promise.resolve()}},ULe=class{constructor(){}register(){}addSpanProcessor(){}getTracer(){return RS}shutdown(){return Promise.resolve()}},BLe=class{register(){}addSpanProcessor(){}getTracer(){return RS}shutdown(){return Promise.resolve()}},zLe=class{onStart(){}onEnd(){}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}},GLe=class{onStart(){}onEnd(){}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}},qLe=class{export(){}shutdown(){return Promise.resolve()}},jLe=class{export(){}shutdown(){return Promise.resolve()}},HLe=class{constructor(){}export(){}shutdown(){return Promise.resolve()}},VLe=()=>[],WLe=()=>{},KLe=e=>({attributes:e||{},merge(){return this}}),JLe=class{onStart(){}onEnd(){}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}},YLe=class{constructor(){}getLogger(){return{emit(){}}}forceFlush(){return Promise.resolve()}shutdown(){return Promise.resolve()}},ZLe=class{onStart(){}onEnd(){}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}},XLe=class{constructor(){}getMeter(){return w1}addMetricReader(){}forceFlush(){return Promise.resolve()}shutdown(){return Promise.resolve()}},QLe=class{constructor(){}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}},eFe={UNSPECIFIED:0,TRACE:1,TRACE2:2,TRACE3:3,TRACE4:4,DEBUG:5,DEBUG2:6,DEBUG3:7,DEBUG4:8,INFO:9,INFO2:10,INFO3:11,INFO4:12,WARN:13,WARN2:14,WARN3:15,WARN4:16,ERROR:17,ERROR2:18,ERROR3:19,ERROR4:20,FATAL:21,FATAL2:22,FATAL3:23,FATAL4:24},tFe=class{enable(){return this}disable(){return this}},rFe=class{inject(){}extract(e){return e}fields(){return[]}},nFe="service.name",oFe="service.version",sFe="service.name",iFe="service.version",aFe={trace:n8,context:o8,propagation:s8,metrics:i8,diag:T1,SpanStatusCode:a8,SpanKind:c8}}}),l8={};ne(l8,{TelemetryService:()=>gh});var gh,MS=S({"src/lib/telemetry/telemetryService.ts"(){"use strict";Kt(),_Le(),bLe(),e8(),CLe(),U(),gh=class SA{static instance;tracerProvider;enabled=!1;initialized=!1;usingExternalTracerProvider=!1;meter;tracer;aiRequestCounter;aiRequestDuration;aiTokensUsed;aiProviderErrors;aiCostUsd;mcpToolCalls;connectionCounter;responseTimeHistogram;activeConnectionCount=0;errorCount=0;requestCount=0;totalResponseTime=0;responseTimeCount=0;constructor(){this.enabled=this.isTelemetryEnabled(),this.enabled?this.initializeTelemetry():p.debug("[Telemetry] Disabled - set NEUROLINK_TELEMETRY_ENABLED=true or configure OTEL_EXPORTER_OTLP_ENDPOINT to enable")}static getInstance(){return SA.instance||(SA.instance=new SA),SA.instance}isTelemetryEnabled(){return this.hasExternalTracerProvider()||process.env.NEUROLINK_TELEMETRY_ENABLED==="true"||process.env.OTEL_EXPORTER_OTLP_ENDPOINT!==void 0}hasExternalTracerProvider(){try{const t=lt.getTracerProvider();if(!t)return!1;const r=t.constructor?.name||"";if(r&&r!=="ProxyTracerProvider"&&r!=="NoopTracerProvider")return!0;const o=(typeof t.getDelegate=="function"?t.getDelegate():t._delegate)?.constructor?.name||"";return!!(o&&o!=="NoopTracerProvider")}catch(t){return p.warn("[Telemetry] Failed checking for external TracerProvider",{error:t instanceof Error?t.message:String(t)}),!1}}adoptExternalTracerProvider(t){this.usingExternalTracerProvider=!0,this.tracerProvider=void 0,this.meter=xp.getMeter("neurolink-ai"),this.tracer=lt.getTracer("neurolink-ai"),this.initializeMetrics(),p.debug("[Telemetry] Reusing externally managed TracerProvider",{reason:t,endpoint:process.env.OTEL_EXPORTER_OTLP_ENDPOINT})}initializeTelemetry(){try{if(this.hasExternalTracerProvider()){this.adoptExternalTracerProvider("global tracer provider already registered");return}const t=y1({[t8]:process.env.OTEL_SERVICE_NAME||"neurolink-ai",[r8]:process.env.OTEL_SERVICE_VERSION||"3.0.1"}),r=new Qq({url:process.env.OTEL_EXPORTER_OTLP_ENDPOINT?`${process.env.OTEL_EXPORTER_OTLP_ENDPOINT}/v1/traces`:void 0});this.tracerProvider=new SLe({resource:t,spanProcessors:[new Xq(r)]}),this.meter=xp.getMeter("neurolink-ai"),this.tracer=this.tracerProvider.getTracer("neurolink-ai"),this.initializeMetrics(),p.debug("[Telemetry] Initialized local telemetry exporter",{endpoint:process.env.OTEL_EXPORTER_OTLP_ENDPOINT,globalTracerProviderOwnedBy:"observability/instrumentation"})}catch(t){const r=t instanceof Error?t.message:String(t);if((r.includes("duplicate registration")||r.includes("already registered")||r.includes("already set"))&&this.hasExternalTracerProvider()){this.adoptExternalTracerProvider("duplicate global tracer registration detected");return}p.error("[Telemetry] Failed to initialize:",t),this.enabled=!1}}initializeMetrics(){!this.enabled||!this.meter||(this.aiRequestCounter=this.meter.createCounter("ai_requests_total",{description:"Total number of AI requests"}),this.aiRequestDuration=this.meter.createHistogram("ai_request_duration_ms",{description:"AI request duration in milliseconds"}),this.aiTokensUsed=this.meter.createCounter("ai_tokens_used_total",{description:"Total number of AI tokens used"}),this.aiCostUsd=this.meter.createCounter("ai_cost_usd_total",{description:"Total accumulated AI cost in USD"}),this.aiProviderErrors=this.meter.createCounter("ai_provider_errors_total",{description:"Total number of AI provider errors"}),this.mcpToolCalls=this.meter.createCounter("mcp_tool_calls_total",{description:"Total number of MCP tool calls"}),this.connectionCounter=this.meter.createCounter("connections_total",{description:"Total number of connections"}),this.responseTimeHistogram=this.meter.createHistogram("response_time_ms",{description:"Response time in milliseconds"}))}async initialize(){if(this.enabled){if(this.usingExternalTracerProvider){this.initialized=!0,p.debug("[Telemetry] External TracerProvider already initialized by host");return}if(!this.tracerProvider){this.initialized=!0,p.debug("[Telemetry] Tracer provider already prepared during constructor");return}try{try{const{AsyncLocalStorageContextManager:t}=await Promise.resolve().then(()=>(ATr(),kLe));lr.setGlobalContextManager(new t().enable())}catch{}this.initialized=!0,p.debug("[Telemetry] Tracer provider started successfully")}catch(t){p.error("[Telemetry] Failed to start:",t),this.enabled=!1,this.initialized=!1}}}async traceAIRequest(t,r,n="generate_text"){if(!this.enabled||!this.tracer)return await r();const o=this.tracer.startSpan(`ai.${t}.${n}`,{attributes:{"ai.provider":t,"ai.operation":n}});try{const s=await r();return o.setStatus({code:1}),s}catch(s){throw o.setStatus({code:2,message:s instanceof Error?s.message:"Unknown error"}),o.recordException(s),s}finally{o.end()}}recordAIRequest(t,r,n,o,s){if(this.requestCount++,this.totalResponseTime+=o,this.responseTimeCount++,!this.enabled||!this.aiRequestCounter)return;const i={provider:t,model:r};this.aiRequestCounter.add(1,i),this.aiRequestDuration?.record(o,i),this.aiTokensUsed?.add(n,i),s!==void 0&&Number.isFinite(s)&&s>0&&this.aiCostUsd?.add(s,i)}recordAIError(t,r){this.errorCount++,!(!this.enabled||!this.aiProviderErrors)&&this.aiProviderErrors.add(1,{provider:t,error:r.name,message:r.message.substring(0,100)})}recordMCPToolCall(t,r,n){!this.enabled||!this.mcpToolCalls||this.mcpToolCalls.add(1,{tool:t,success:n.toString(),duration_bucket:this.getDurationBucket(r)})}recordConnection(t){this.activeConnectionCount++,!(!this.enabled||!this.connectionCounter)&&this.connectionCounter.add(1,{connection_type:t})}recordConnectionClosed(t){this.activeConnectionCount=Math.max(0,this.activeConnectionCount-1),!(!this.enabled||!this.connectionCounter)&&this.connectionCounter.add(-1,{connection_type:t,event:"disconnect"})}recordResponseTime(t,r,n){this.totalResponseTime+=n,this.responseTimeCount++,!(!this.enabled||!this.responseTimeHistogram)&&this.responseTimeHistogram.record(n,{endpoint:t,method:r,status_bucket:this.getStatusBucket(n)})}recordCustomMetric(t,r,n){if(!this.enabled||!this.meter)return;this.meter.createCounter(`custom_${t}`,{description:`Custom metric: ${t}`}).add(r,n||{})}recordCustomHistogram(t,r,n){if(!this.enabled||!this.meter)return;this.meter.createHistogram(`custom_${t}_histogram`,{description:`Custom histogram: ${t}`}).record(r,n||{})}async getHealthMetrics(){const t=process.memoryUsage(),r=this.requestCount>0?this.errorCount/this.requestCount*100:0,n=this.responseTimeCount>0?this.totalResponseTime/this.responseTimeCount:0;return{timestamp:Date.now(),memoryUsage:t,uptime:process.uptime(),activeConnections:this.activeConnectionCount,errorRate:Math.round(r*100)/100,averageResponseTime:Math.round(n*100)/100}}isEnabled(){return this.enabled}getStatus(){return{enabled:this.enabled,initialized:this.initialized,endpoint:process.env.OTEL_EXPORTER_OTLP_ENDPOINT,service:process.env.OTEL_SERVICE_NAME||"neurolink-ai",version:process.env.OTEL_SERVICE_VERSION||"3.0.1"}}getDurationBucket(t){return t<100?"fast":t<500?"medium":t<1e3?"slow":"very_slow"}getStatusBucket(t){return t<200?"excellent":t<500?"good":t<1e3?"acceptable":"poor"}async shutdown(){if(this.enabled&&this.tracerProvider&&!this.usingExternalTracerProvider)try{await this.tracerProvider.shutdown(),this.initialized=!1,p.debug("[Telemetry] Tracer provider shutdown completed")}catch(t){p.error("[Telemetry] Error during shutdown:",t)}}}}});function Ti(e,t=cFe){let r;try{r=typeof e=="string"?e:JSON.stringify(e)??String(e)}catch{r=String(e)}if(r.length>t){const n=`...[truncated ${r.length-t} chars]`,o=Math.max(0,t-n.length);return`${r.slice(0,o)}${n}`}return r}var we,jn,cFe,E1=S({"src/lib/telemetry/attributes.ts"(){"use strict";we={GEN_AI_SYSTEM:"gen_ai.system",GEN_AI_MODEL:"gen_ai.request.model",GEN_AI_OPERATION:"gen_ai.operation.name",GEN_AI_INPUT_TOKENS:"gen_ai.usage.input_tokens",GEN_AI_OUTPUT_TOKENS:"gen_ai.usage.output_tokens",GEN_AI_FINISH_REASON:"gen_ai.response.finish_reason",GEN_AI_COST_USD:"gen_ai.cost_usd",GEN_AI_TOOL_NAME:"gen_ai.tool.name",GEN_AI_TEMPERATURE:"gen_ai.request.temperature",GEN_AI_MAX_TOKENS:"gen_ai.request.max_tokens",NL_PROVIDER:"neurolink.provider",NL_MODEL:"neurolink.model",NL_STREAM_MODE:"neurolink.stream_mode",NL_TOOL_COUNT:"neurolink.tool_count",NL_MESSAGE_COUNT:"neurolink.message_count",NL_HAS_TOOLS:"neurolink.has_tools",NL_INPUT_LENGTH:"neurolink.input_length",NL_OUTPUT_LENGTH:"neurolink.output_length",NL_REQUEST_ID:"neurolink.request_id",NL_PATH:"neurolink.path",NL_HAS_MEMORY:"neurolink.has_conversation_memory",NL_COST:"neurolink.cost",NL_STRUCTURED_OUTPUT:"neurolink.structured_output",NL_HAS_FALLBACK:"neurolink.has_fallback",MCP_SERVER_ID:"mcp.server_id",MCP_TOOL_NAME:"mcp.tool_name",MCP_TIMEOUT_MS:"mcp.timeout_ms",MCP_TRANSPORT:"mcp.transport",MCP_CIRCUIT_STATE:"mcp.circuit_state",SESSION_ID:"session.id",USER_ID:"user.id",MEMORY_TYPE:"memory.type",MESSAGE_COUNT:"message.count",CONTENT_LENGTH:"content.length",RAG_FILE_COUNT:"rag.file_count",RAG_STRATEGY:"rag.strategy",RAG_CHUNK_SIZE:"rag.chunk_size",RAG_TOP_K:"rag.top_k",RAG_RESULT_COUNT:"rag.result_count",MSG_COUNT:"message.build.count",MSG_HAS_IMAGES:"message.has_images",MSG_HAS_FILES:"message.has_files",MSG_HAS_SYSTEM_PROMPT:"message.has_system_prompt",MSG_TOTAL_CONTENT_LENGTH:"message.total_content_length",MSG_IS_MULTIMODAL:"message.is_multimodal",FILE_NAME:"file.name",FILE_MIMETYPE:"file.mimetype",FILE_SIZE_BYTES:"file.size_bytes",FILE_CATEGORY:"file.category",FILE_OUTPUT_LENGTH:"file.output_length",FILE_SUCCESS:"file.success",FILE_PROCESSOR_USED:"file.processor_used",FILE_CONFIDENCE:"file.detection_confidence",FILE_HAS_IMAGES:"file.has_images",FILE_IMAGE_COUNT:"file.image_count",FILE_ERROR:"file.error",FILE_SKIPPED_REASON:"file.skipped_reason",FILE_TOTAL_COUNT:"file.total_count",FILE_INCLUDED_COUNT:"file.included_count",FILE_CONTENT_TYPE:"file.content_type",VIDEO_DURATION_SEC:"video.duration_sec",VIDEO_WIDTH:"video.width",VIDEO_HEIGHT:"video.height",VIDEO_CODEC:"video.codec",VIDEO_AUDIO_CODEC:"video.audio_codec",VIDEO_FORMAT:"video.format",VIDEO_BITRATE:"video.bitrate",VIDEO_KEYFRAMES_EXTRACTED:"video.keyframes_extracted",VIDEO_TARGET_FRAMES:"video.target_frames",VIDEO_INTERVAL_SEC:"video.interval_sec",VIDEO_FRAME_QUALITY:"video.frame_quality",VIDEO_FRAME_RESIZE_PX:"video.frame_resize_px",VIDEO_FRAMES_RESIZED:"video.frames_resized",VIDEO_TOTAL_FRAME_BYTES:"video.total_frame_bytes",VIDEO_HAS_SUBTITLES:"video.has_subtitles",VIDEO_SUBTITLE_LENGTH:"video.subtitle_length",VIDEO_TEXT_CONTENT_LENGTH:"video.text_content_length",VIDEO_HAS_METADATA:"video.has_metadata",VIDEO_HAS_KEYFRAMES:"video.has_keyframes",VIDEO_TEMP_PATH:"video.temp_path",VIDEO_BYTES_WRITTEN:"video.bytes_written",VIDEO_WRITE_DURATION_MS:"video.write_duration_ms",VIDEO_STEP:"video.step",CONTEXT_STAGE:"context.compaction_stage",CONTEXT_TOKENS_BEFORE:"context.tokens_before",CONTEXT_TOKENS_AFTER:"context.tokens_after",MW_COUNT:"middleware.count",MW_NAMES:"middleware.names",AR_TAG:"autoresearch.tag",AR_BRANCH:"autoresearch.branch",AR_PHASE:"autoresearch.phase",AR_PHASE_FROM:"autoresearch.phase_from",AR_PHASE_TO:"autoresearch.phase_to",AR_RUN_COUNT:"autoresearch.run_count",AR_KEEP_COUNT:"autoresearch.keep_count",AR_STATUS:"autoresearch.status",AR_METRIC:"autoresearch.metric",AR_BEST_METRIC:"autoresearch.best_metric",AR_DIRECTION:"autoresearch.metric_direction",AR_COMMIT:"autoresearch.commit",AR_DURATION_MS:"autoresearch.duration_ms",AR_DESCRIPTION:"autoresearch.description",AR_ERROR_CODE:"autoresearch.error_code"},jn={TRACE_NAME:"langfuse.trace.name",TRACE_INPUT:"langfuse.trace.input",TRACE_OUTPUT:"langfuse.trace.output",OBSERVATION_TYPE:"langfuse.observation.type",OBSERVATION_INPUT:"langfuse.observation.input",OBSERVATION_OUTPUT:"langfuse.observation.output",OBSERVATION_METADATA:"langfuse.observation.metadata",OBSERVATION_MODEL_NAME:"langfuse.observation.model.name",OBSERVATION_MODEL_PARAMETERS:"langfuse.observation.model.parameters",OBSERVATION_USAGE_DETAILS:"langfuse.observation.usage_details",OBSERVATION_LEVEL:"langfuse.observation.level",OBSERVATION_STATUS_MESSAGE:"langfuse.observation.status_message",OBSERVATION_COMPLETION_START_TIME:"langfuse.observation.completion_start_time"},cFe=4e4}});async function xTr(){const{TelemetryService:e}=await Promise.resolve().then(()=>(MS(),l8)),t=e.getInstance();return t.isEnabled()&&(await t.initialize(),p.info("[NeuroLink] Telemetry initialized")),t}async function ITr(){const{TelemetryService:e}=await Promise.resolve().then(()=>(MS(),l8));return e.getInstance().getStatus()}var $a=S({"src/lib/telemetry/index.ts"(){"use strict";cr(),Pr(),E1(),U()}}),lFe={};ne(lFe,{MODEL_NAMES:()=>er,ModelConfigurationManager:()=>S1,modelConfig:()=>yh});var er,S1,yh,vh=S({"src/lib/core/modelConfiguration.ts"(){"use strict";U(),er={GOOGLE_AI:{FAST:"gemini-2.5-flash",BALANCED:"gemini-2.5-pro",QUALITY:"gemini-2.5-pro"},GOOGLE_VERTEX:{FAST:"gemini-2.5-flash",BALANCED:"gemini-2.5-pro",QUALITY:"gemini-2.5-pro"},OPENAI:{FAST:"gpt-4o-mini",BALANCED:"gpt-4o",QUALITY:"gpt-4o"},ANTHROPIC:{FAST:"claude-3-haiku-20240307",BALANCED:"claude-3-sonnet-20240229",QUALITY:"claude-3-5-sonnet-20241022"},VERTEX:{FAST:"gemini-2.5-flash",BALANCED:"gemini-2.5-pro",QUALITY:"gemini-2.5-pro"},BEDROCK:{FAST:"anthropic.claude-3-haiku-20240307-v1:0",BALANCED:"anthropic.claude-3-sonnet-20240229-v1:0",QUALITY:"anthropic.claude-3-opus-20240229-v1:0"},AZURE:{FAST:"gpt-4o-mini",BALANCED:"gpt-4o",QUALITY:"gpt-4o"},OLLAMA:{FAST:"llama3.2:latest",BALANCED:"llama3.1:8b",QUALITY:"llama3.1:70b"},HUGGINGFACE:{FAST:"meta-llama/Llama-3.1-8B-Instruct",BALANCED:"Qwen/Qwen2.5-72B-Instruct",QUALITY:"deepseek-ai/DeepSeek-V3"},MISTRAL:{FAST:"mistral-small-latest",BALANCED:"mistral-medium-latest",QUALITY:"mistral-large-latest"}},S1=class _A{static instance;configurations=new Map;configSource="default";lastUpdated=Date.now();constructor(){this.loadDefaultConfigurations()}static getInstance(){return _A.instance||(_A.instance=new _A),_A.instance}createGoogleAIConfig(){return{provider:"google-ai",models:{fast:this.getConfigValue("GOOGLE_AI_FAST_MODEL",er.GOOGLE_AI.FAST),balanced:this.getConfigValue("GOOGLE_AI_BALANCED_MODEL",er.GOOGLE_AI.BALANCED),quality:this.getConfigValue("GOOGLE_AI_QUALITY_MODEL",er.GOOGLE_AI.QUALITY)},defaultCost:{input:this.parseFloat(process.env.GOOGLE_AI_DEFAULT_INPUT_COST,75e-6),output:this.parseFloat(process.env.GOOGLE_AI_DEFAULT_OUTPUT_COST,3e-4)},requiredEnvVars:["GOOGLE_AI_API_KEY"],performance:{speed:this.parseInt(process.env.GOOGLE_AI_SPEED_RATING,3),quality:this.parseInt(process.env.GOOGLE_AI_QUALITY_RATING,3),cost:this.parseInt(process.env.GOOGLE_AI_COST_RATING,3)},modelBehavior:{maxTokensIssues:this.getConfigArray("GOOGLE_AI_MAX_TOKENS_ISSUES",[er.GOOGLE_AI.FAST,er.GOOGLE_AI.BALANCED])}}}createVertexConfig(){return{provider:"google-vertex",models:{fast:this.getConfigValue("GOOGLE_VERTEX_FAST_MODEL",er.GOOGLE_VERTEX.FAST),balanced:this.getConfigValue("GOOGLE_VERTEX_BALANCED_MODEL",er.GOOGLE_VERTEX.BALANCED),quality:this.getConfigValue("GOOGLE_VERTEX_QUALITY_MODEL",er.GOOGLE_VERTEX.QUALITY)},defaultCost:{input:this.parseFloat(process.env.GOOGLE_VERTEX_DEFAULT_INPUT_COST,75e-6),output:this.parseFloat(process.env.GOOGLE_VERTEX_DEFAULT_OUTPUT_COST,3e-4)},requiredEnvVars:["GOOGLE_VERTEX_PROJECT_ID","GOOGLE_VERTEX_LOCATION"],performance:{speed:this.parseInt(process.env.GOOGLE_VERTEX_SPEED_RATING,3),quality:this.parseInt(process.env.GOOGLE_VERTEX_QUALITY_RATING,3),cost:this.parseInt(process.env.GOOGLE_VERTEX_COST_RATING,3)},modelBehavior:{maxTokensIssues:this.getConfigArray("GOOGLE_VERTEX_MAX_TOKENS_ISSUES",[er.GOOGLE_VERTEX.FAST,er.GOOGLE_VERTEX.BALANCED])}}}createOpenAIConfig(){return{provider:"openai",models:{fast:this.getConfigValue("OPENAI_FAST_MODEL",er.OPENAI.FAST),balanced:this.getConfigValue("OPENAI_BALANCED_MODEL",er.OPENAI.BALANCED),quality:this.getConfigValue("OPENAI_QUALITY_MODEL",er.OPENAI.QUALITY)},defaultCost:{input:this.parseFloat(process.env.OPENAI_DEFAULT_INPUT_COST,15e-5),output:this.parseFloat(process.env.OPENAI_DEFAULT_OUTPUT_COST,6e-4)},requiredEnvVars:["OPENAI_API_KEY"],performance:{speed:this.parseInt(process.env.OPENAI_SPEED_RATING,2),quality:this.parseInt(process.env.OPENAI_QUALITY_RATING,3),cost:this.parseInt(process.env.OPENAI_COST_RATING,2)},modelBehavior:{maxTokensIssues:this.getConfigArray("OPENAI_MAX_TOKENS_ISSUES",[]),specialHandling:this.getConfigObject("OPENAI_SPECIAL_HANDLING",{})}}}createAllProviderConfigurations(){return{"google-ai":this.createGoogleAIConfig(),"google-vertex":this.createVertexConfig(),openai:this.createOpenAIConfig(),anthropic:this.createAnthropicConfig(),vertex:this.createVertexAlternativeConfig(),bedrock:this.createBedrockConfig(),azure:this.createAzureConfig(),ollama:this.createOllamaConfig(),huggingface:this.createHuggingFaceConfig(),mistral:this.createMistralConfig()}}createAnthropicConfig(){return{provider:"anthropic",models:{fast:this.getConfigValue("ANTHROPIC_FAST_MODEL",er.ANTHROPIC.FAST),balanced:this.getConfigValue("ANTHROPIC_BALANCED_MODEL",er.ANTHROPIC.BALANCED),quality:this.getConfigValue("ANTHROPIC_QUALITY_MODEL",er.ANTHROPIC.QUALITY)},defaultCost:{input:this.parseFloat(process.env.ANTHROPIC_DEFAULT_INPUT_COST,.0015),output:this.parseFloat(process.env.ANTHROPIC_DEFAULT_OUTPUT_COST,.0075)},requiredEnvVars:["ANTHROPIC_API_KEY"],performance:{speed:this.parseInt(process.env.ANTHROPIC_SPEED_RATING,3),quality:this.parseInt(process.env.ANTHROPIC_QUALITY_RATING,4),cost:this.parseInt(process.env.ANTHROPIC_COST_RATING,2)},modelBehavior:{maxTokensIssues:this.getConfigArray("ANTHROPIC_MAX_TOKENS_ISSUES",[])}}}createVertexAlternativeConfig(){return{provider:"vertex",models:{fast:this.getConfigValue("VERTEX_FAST_MODEL",er.VERTEX.FAST),balanced:this.getConfigValue("VERTEX_BALANCED_MODEL",er.VERTEX.BALANCED),quality:this.getConfigValue("VERTEX_QUALITY_MODEL",er.VERTEX.QUALITY)},defaultCost:{input:this.parseFloat(process.env.VERTEX_DEFAULT_INPUT_COST,75e-6),output:this.parseFloat(process.env.VERTEX_DEFAULT_OUTPUT_COST,3e-4)},requiredEnvVars:["GOOGLE_VERTEX_PROJECT_ID","GOOGLE_VERTEX_LOCATION"],performance:{speed:this.parseInt(process.env.VERTEX_SPEED_RATING,3),quality:this.parseInt(process.env.VERTEX_QUALITY_RATING,4),cost:this.parseInt(process.env.VERTEX_COST_RATING,3)},modelBehavior:{maxTokensIssues:this.getConfigArray("VERTEX_MAX_TOKENS_ISSUES",[])}}}createBedrockConfig(){return{provider:"bedrock",models:{fast:this.getConfigValue("BEDROCK_FAST_MODEL",er.BEDROCK.FAST),balanced:this.getConfigValue("BEDROCK_BALANCED_MODEL",er.BEDROCK.BALANCED),quality:this.getConfigValue("BEDROCK_QUALITY_MODEL",er.BEDROCK.QUALITY)},defaultCost:{input:this.parseFloat(process.env.BEDROCK_DEFAULT_INPUT_COST,.0015),output:this.parseFloat(process.env.BEDROCK_DEFAULT_OUTPUT_COST,.0075)},requiredEnvVars:["AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY"],performance:{speed:this.parseInt(process.env.BEDROCK_SPEED_RATING,3),quality:this.parseInt(process.env.BEDROCK_QUALITY_RATING,4),cost:this.parseInt(process.env.BEDROCK_COST_RATING,3)},modelBehavior:{maxTokensIssues:this.getConfigArray("BEDROCK_MAX_TOKENS_ISSUES",[])}}}createAzureConfig(){return{provider:"azure",models:{fast:this.getConfigValue("AZURE_FAST_MODEL",er.AZURE.FAST),balanced:this.getConfigValue("AZURE_BALANCED_MODEL",er.AZURE.BALANCED),quality:this.getConfigValue("AZURE_QUALITY_MODEL",er.AZURE.QUALITY)},defaultCost:{input:this.parseFloat(process.env.AZURE_DEFAULT_INPUT_COST,15e-5),output:this.parseFloat(process.env.AZURE_DEFAULT_OUTPUT_COST,6e-4)},requiredEnvVars:["AZURE_API_KEY","AZURE_ENDPOINT"],performance:{speed:this.parseInt(process.env.AZURE_SPEED_RATING,2),quality:this.parseInt(process.env.AZURE_QUALITY_RATING,3),cost:this.parseInt(process.env.AZURE_COST_RATING,2)},modelBehavior:{maxTokensIssues:this.getConfigArray("AZURE_MAX_TOKENS_ISSUES",[])}}}createOllamaConfig(){return{provider:"ollama",models:{fast:this.getConfigValue("OLLAMA_FAST_MODEL",er.OLLAMA.FAST),balanced:this.getConfigValue("OLLAMA_BALANCED_MODEL",er.OLLAMA.BALANCED),quality:this.getConfigValue("OLLAMA_QUALITY_MODEL",er.OLLAMA.QUALITY)},defaultCost:{input:this.parseFloat(process.env.OLLAMA_DEFAULT_INPUT_COST,0),output:this.parseFloat(process.env.OLLAMA_DEFAULT_OUTPUT_COST,0)},requiredEnvVars:[],performance:{speed:this.parseInt(process.env.OLLAMA_SPEED_RATING,4),quality:this.parseInt(process.env.OLLAMA_QUALITY_RATING,2),cost:this.parseInt(process.env.OLLAMA_COST_RATING,5)},modelBehavior:{maxTokensIssues:this.getConfigArray("OLLAMA_MAX_TOKENS_ISSUES",[er.OLLAMA.FAST,er.OLLAMA.BALANCED,er.OLLAMA.QUALITY]),toolCapableModels:this.getConfigArray("OLLAMA_TOOL_CAPABLE_MODELS",["llama3.1","mistral","hermes3","qwen2.5","codellama","dolphin","openchat","solar"]),specialHandling:this.getConfigObject("OLLAMA_SPECIAL_HANDLING",{baseUrl:this.getConfigValue("OLLAMA_BASE_URL","http://localhost:11434")})}}}createHuggingFaceConfig(){return{provider:"huggingface",models:{fast:this.getConfigValue("HUGGINGFACE_FAST_MODEL",er.HUGGINGFACE.FAST),balanced:this.getConfigValue("HUGGINGFACE_BALANCED_MODEL",er.HUGGINGFACE.BALANCED),quality:this.getConfigValue("HUGGINGFACE_QUALITY_MODEL",er.HUGGINGFACE.QUALITY)},defaultCost:{input:this.parseFloat(process.env.HUGGINGFACE_DEFAULT_INPUT_COST,2e-4),output:this.parseFloat(process.env.HUGGINGFACE_DEFAULT_OUTPUT_COST,8e-4)},requiredEnvVars:["HUGGINGFACE_API_KEY"],performance:{speed:this.parseInt(process.env.HUGGINGFACE_SPEED_RATING,3),quality:this.parseInt(process.env.HUGGINGFACE_QUALITY_RATING,3),cost:this.parseInt(process.env.HUGGINGFACE_COST_RATING,4)},modelBehavior:{maxTokensIssues:this.getConfigArray("HUGGINGFACE_MAX_TOKENS_ISSUES",[])}}}createMistralConfig(){return{provider:"mistral",models:{fast:this.getConfigValue("MISTRAL_FAST_MODEL",er.MISTRAL.FAST),balanced:this.getConfigValue("MISTRAL_BALANCED_MODEL",er.MISTRAL.BALANCED),quality:this.getConfigValue("MISTRAL_QUALITY_MODEL",er.MISTRAL.QUALITY)},defaultCost:{input:this.parseFloat(process.env.MISTRAL_DEFAULT_INPUT_COST,1e-4),output:this.parseFloat(process.env.MISTRAL_DEFAULT_OUTPUT_COST,3e-4)},requiredEnvVars:["MISTRAL_API_KEY"],performance:{speed:this.parseInt(process.env.MISTRAL_SPEED_RATING,3),quality:this.parseInt(process.env.MISTRAL_QUALITY_RATING,3),cost:this.parseInt(process.env.MISTRAL_COST_RATING,4)},modelBehavior:{maxTokensIssues:this.getConfigArray("MISTRAL_MAX_TOKENS_ISSUES",[])}}}loadDefaultConfigurations(){const t=this.createAllProviderConfigurations();for(const[r,n]of Object.entries(t))this.configurations.set(r,n);p.debug(`Loaded ${this.configurations.size} provider configurations from ${this.configSource}`)}getConfigValue(t,r){const n=process.env[t];return n&&!this.isValidConfigValue(n)?(p.warn(`Environment variable ${t} has an invalid value: "${n}". Falling back to default value.`),r):n||r}isValidConfigValue(t){return!(/[<>;"'`${}]/.test(t)||t.length>500||t.includes("\0")||new RegExp("[\0-\b\v\f-\x7F]").test(t))}getConfigArray(t,r){const n=process.env[t];return n?n.split(",").map(o=>o.trim()).filter(Boolean):r}parseFloat(t,r){if(!t)return r;const n=Number.parseFloat(t);return Number.isNaN(n)?r:n}parseInt(t,r){if(!t)return r;const n=Number.parseInt(t,10);return Number.isNaN(n)?r:n}getConfigObject(t,r){const n=process.env[t];if(!n)return r;try{const o=JSON.parse(n);return typeof o=="object"&&o!==null?o:r}catch{return p.warn(`Invalid JSON in environment variable ${t}, using default`),r}}getProviderConfiguration(t){return this.configurations.get(t)||null}getAllConfigurations(){return new Map(this.configurations)}getModelForTier(t,r){return this.getProviderConfiguration(t)?.models[r]||null}getCostInfo(t,r){const n=this.getProviderConfiguration(t);return n?r&&n.modelConfigs?.[r]?n.modelConfigs[r].cost:n.defaultCost:null}isProviderAvailable(t){const r=this.getProviderConfiguration(t);return r?r.requiredEnvVars.length===0?!0:r.requiredEnvVars.some(n=>!!process.env[n]):!1}getAvailableProviders(){return Array.from(this.configurations.values()).filter(t=>this.isProviderAvailable(t.provider))}},yh=S1.getInstance()}});function RTr(e){return typeof e.input=="number"?e.input:typeof e.inputTokens=="number"?e.inputTokens:typeof e.promptTokens=="number"?e.promptTokens:0}function MTr(e){return typeof e.output=="number"?e.output:typeof e.outputTokens=="number"?e.outputTokens:typeof e.completionTokens=="number"?e.completionTokens:0}function PTr(e,t,r){return typeof e.total=="number"&&e.total>0?e.total:typeof e.totalTokens=="number"&&e.totalTokens>0?e.totalTokens:t+r}function DTr(e){if(typeof e.reasoningTokens=="number"&&e.reasoningTokens>0)return e.reasoningTokens;if(typeof e.thinkingTokens=="number"&&e.thinkingTokens>0)return e.thinkingTokens;if(typeof e.reasoning_tokens=="number"&&e.reasoning_tokens>0)return e.reasoning_tokens;if(typeof e.reasoning=="number"&&e.reasoning>0)return e.reasoning}function OTr(e){if(typeof e.cacheCreationInputTokens=="number"&&e.cacheCreationInputTokens>0)return e.cacheCreationInputTokens;if(typeof e.cacheCreationTokens=="number"&&e.cacheCreationTokens>0)return e.cacheCreationTokens;if(typeof e.inputTokenDetails?.cacheWriteTokens=="number"&&e.inputTokenDetails.cacheWriteTokens>0)return e.inputTokenDetails.cacheWriteTokens}function NTr(e){if(typeof e.cacheReadInputTokens=="number"&&e.cacheReadInputTokens>0)return e.cacheReadInputTokens;if(typeof e.cacheReadTokens=="number"&&e.cacheReadTokens>0)return e.cacheReadTokens;if(typeof e.cachedInputTokens=="number"&&e.cachedInputTokens>0)return e.cachedInputTokens;if(typeof e.inputTokenDetails?.cacheReadTokens=="number"&&e.inputTokenDetails.cacheReadTokens>0)return e.inputTokenDetails.cacheReadTokens}function LTr(e){const t=e.prompt_tokens_details?.cached_tokens;if(typeof t=="number"&&t>0)return t}function FTr(e,t){if(e===void 0||e<=0)return;const r=t+e;if(!(r<=0))return Math.round(e/r*100)}function _1(e,t={}){const{calculateCacheSavings:r=!0,missingOptionalBehavior:n="undefined"}=t;if(!e)return{input:0,output:0,total:0};const o=e.usage&&typeof e.usage=="object"?e.usage:e;let s=RTr(o);const i=MTr(o),a=DTr(o),c=OTr(o);let l=NTr(o);if(l===void 0){const h=LTr(o);h!==void 0&&h<=s&&(l=h,s=Math.max(0,s-h))}if((l!==void 0||c!==void 0)&&o.cacheReadInputTokens===void 0&&o.cacheReadTokens===void 0&&o.cacheCreationInputTokens===void 0&&o.cacheCreationTokens===void 0&&o.prompt_tokens_details?.cached_tokens===void 0&&(o.cachedInputTokens!==void 0||o.inputTokenDetails!==void 0)){const h=o.inputTokenDetails?.noCacheTokens;typeof h=="number"?s=h:s=Math.max(0,s-(l??0)-(o.inputTokenDetails?.cacheWriteTokens??0))}const u=PTr(o,s+(l??0)+(c??0),i),d=r?FTr(l,s):void 0,m={input:s,output:i,total:u};return n==="zero"?(m.cacheCreationTokens=c??0,m.cacheReadTokens=l??0,m.reasoning=a??0,m.cacheSavingsPercent=d??0):(c!==void 0&&(m.cacheCreationTokens=c),l!==void 0&&(m.cacheReadTokens=l),a!==void 0&&(m.reasoning=a),d!==void 0&&(m.cacheSavingsPercent=d)),m}function uFe(){return{input:0,output:0,total:0}}var b1=S({"src/lib/utils/tokenUtils.ts"(){"use strict"}});function $Tr(){return Object.fromEntries(fy().flatMap(e=>{const t=r=>r.toLowerCase().replace(/[^a-z]/g,"");return[[t(e.id),e.id],...e.aliases.map(r=>[t(r),e.id])]}))}function UTr(e,t){return!e.startsWith(t)||e===t?!1:hFe.test(e.slice(t.length))}function BTr(e,t){const r=gLe(e);return r?Object.prototype.hasOwnProperty.call(r.models,t)?!0:Object.values(r.models).some(n=>n.aliases.includes(t)):!1}function dFe(e,t,r){const n=e.toLowerCase().replace(/[^a-z]/g,""),o=pFe[n]??n;if(o==="__cross_provider__"){for(const l of Object.values(DS)){if(l[t])return r&&(r.exact=!0),l[t];const u=Object.keys(l).sort((h,f)=>f.length-h.length),d=u.find(h=>h.startsWith(t));if(d)return l[d];const m=u.find(h=>t.startsWith(h));if(m)return l[m]}return}const s=DS[o]||DS[e];if(!s)return;const i=n==="bedrock"||n==="amazonbedrock"?t.replace(/^.*\banthropic\./,""):t;if(BTr(o,i)){const l=vTr(o,i);if(l?.pricingPerMTok)return r&&(r.exact=!0),{input:l.pricingPerMTok.input/1e6,output:l.pricingPerMTok.output/1e6,cacheRead:l.pricingPerMTok.cacheRead!==void 0?l.pricingPerMTok.cacheRead/1e6:void 0,cacheCreation:l.pricingPerMTok.cacheWrite!==void 0?l.pricingPerMTok.cacheWrite/1e6:void 0}}if(s[i])return r&&(r.exact=!0),s[i];const c=Object.keys(s).filter(l=>l!=="_default").sort((l,u)=>u.length-l.length).find(l=>i.startsWith(l));if(c)return r&&UTr(i,c)&&(r.exact=!0),s[c];if(o==="vertex"&&t.startsWith("gemini")){const l=DS.google;if(l){if(l[t])return r&&(r.exact=!0),l[t];const d=Object.keys(l).sort((m,h)=>h.length-m.length).find(m=>t.startsWith(m));if(d)return l[d]}}if(s._default)return s._default}function Ua(e,t,r){const n=dFe(e,t);if(!n)return 0;let o=0;return o+=(r.input||0)*n.input,o+=(r.output||0)*n.output,r.cacheReadTokens&&(o+=r.cacheReadTokens*(n.cacheRead??n.input)),r.cacheCreationTokens&&n.cacheCreation&&(o+=r.cacheCreationTokens*n.cacheCreation),Math.round(o*1e6)/1e6}function PS(e,t){const r=dFe(e,t);return r?r.input>0||r.output>0||(r.cacheRead??0)>0||(r.cacheCreation??0)>0:!1}var mFe,DS,pFe,hFe,tl=S({"src/lib/utils/pricing.ts"(){"use strict";g1(),gy(),mFe=Object.fromEntries(fy().flatMap(e=>{const t=Object.fromEntries(Object.entries(e.models.catalog).flatMap(([n,o])=>o.pricingPerMTok?[[n,{input:o.pricingPerMTok.input/1e6,output:o.pricingPerMTok.output/1e6,...o.pricingPerMTok.cachedInput!==void 0?{cacheRead:o.pricingPerMTok.cachedInput/1e6}:{}}]]:[]));if(Object.keys(t).length===0)return[];const r=e.models.catalog[e.models.default]?.pricingPerMTok;return[[e.id,{...r?{_default:{input:r.input/1e6,output:r.output/1e6,...r.cachedInput!==void 0?{cacheRead:r.cachedInput/1e6}:{}}}:{},...t}]]})),DS={anthropic:{"claude-fable-5":{input:10/1e6,output:50/1e6,cacheRead:1/1e6,cacheCreation:12.5/1e6},"claude-mythos-5":{input:10/1e6,output:50/1e6,cacheRead:1/1e6,cacheCreation:12.5/1e6},"claude-opus-5":{input:5/1e6,output:25/1e6,cacheRead:.5/1e6,cacheCreation:6.25/1e6},"claude-opus-4-8":{input:5/1e6,output:25/1e6,cacheRead:.5/1e6,cacheCreation:6.25/1e6},"claude-opus-4-7":{input:5/1e6,output:25/1e6,cacheRead:.5/1e6,cacheCreation:6.25/1e6},"claude-sonnet-5":{input:2/1e6,output:10/1e6,cacheRead:.2/1e6,cacheCreation:2.5/1e6},"claude-opus-4-6":{input:5/1e6,output:25/1e6,cacheRead:.5/1e6,cacheCreation:6.25/1e6},"claude-sonnet-4-6":{input:3/1e6,output:15/1e6,cacheRead:.3/1e6,cacheCreation:3.75/1e6},"claude-sonnet-4-5-20250929":{input:3/1e6,output:15/1e6,cacheRead:.3/1e6,cacheCreation:3.75/1e6},"claude-sonnet-4-5":{input:3/1e6,output:15/1e6,cacheRead:.3/1e6,cacheCreation:3.75/1e6},"claude-opus-4-5":{input:5/1e6,output:25/1e6,cacheRead:.5/1e6,cacheCreation:6.25/1e6},"claude-haiku-4-5-20251001":{input:1/1e6,output:5/1e6,cacheRead:.1/1e6,cacheCreation:1.25/1e6},"claude-haiku-4-5":{input:1/1e6,output:5/1e6,cacheRead:.1/1e6,cacheCreation:1.25/1e6},"claude-opus-4-1":{input:15/1e6,output:75/1e6,cacheRead:1.5/1e6,cacheCreation:18.75/1e6},"claude-opus-4":{input:15/1e6,output:75/1e6,cacheRead:1.5/1e6,cacheCreation:18.75/1e6},"claude-sonnet-4":{input:3/1e6,output:15/1e6,cacheRead:.3/1e6,cacheCreation:3.75/1e6},"claude-3-7-sonnet":{input:3/1e6,output:15/1e6,cacheRead:.3/1e6,cacheCreation:3.75/1e6},"claude-3-5-sonnet":{input:3/1e6,output:15/1e6,cacheRead:.3/1e6,cacheCreation:3.75/1e6},"claude-3-5-haiku":{input:.8/1e6,output:4/1e6,cacheRead:.08/1e6,cacheCreation:1/1e6},"claude-3-opus":{input:15/1e6,output:75/1e6,cacheRead:1.5/1e6,cacheCreation:18.75/1e6},"claude-3-sonnet":{input:3/1e6,output:15/1e6,cacheRead:.3/1e6,cacheCreation:3.75/1e6},"claude-3-haiku":{input:.25/1e6,output:1.25/1e6,cacheRead:.025/1e6,cacheCreation:.3125/1e6}},vertex:{"claude-sonnet-4-6":{input:3/1e6,output:15/1e6,cacheRead:.3/1e6,cacheCreation:3.75/1e6},"claude-opus-4-6":{input:5/1e6,output:25/1e6,cacheRead:.5/1e6,cacheCreation:6.25/1e6},"claude-sonnet-4-5":{input:3/1e6,output:15/1e6,cacheRead:.3/1e6,cacheCreation:3.75/1e6},"claude-opus-4-5":{input:5/1e6,output:25/1e6,cacheRead:.5/1e6,cacheCreation:6.25/1e6},"claude-haiku-4-5":{input:1/1e6,output:5/1e6,cacheRead:.1/1e6,cacheCreation:1.25/1e6},"claude-3-5-haiku":{input:.8/1e6,output:4/1e6,cacheRead:.08/1e6,cacheCreation:1/1e6},"claude-3-5-sonnet":{input:3/1e6,output:15/1e6,cacheRead:.3/1e6,cacheCreation:3.75/1e6}},openai:{"gpt-5.6-sol":{input:5/1e6,output:30/1e6,cacheRead:.5/1e6,cacheCreation:6.25/1e6},"gpt-5.6-terra":{input:2/1e6,output:12/1e6,cacheRead:.2/1e6,cacheCreation:2.5/1e6},"gpt-5.6-luna":{input:.2/1e6,output:1.2/1e6,cacheRead:.02/1e6,cacheCreation:.25/1e6},"gpt-5.5":{input:5/1e6,output:30/1e6,cacheRead:.5/1e6},"gpt-5.4":{input:2.5/1e6,output:15/1e6,cacheRead:.625/1e6},"gpt-5.2":{input:1.75/1e6,output:14/1e6,cacheRead:.4375/1e6},"gpt-5.1":{input:.625/1e6,output:5/1e6,cacheRead:.15625/1e6},"gpt-5.1-codex":{input:1.25/1e6,output:10/1e6,cacheRead:.3125/1e6},"gpt-5":{input:1.25/1e6,output:10/1e6,cacheRead:.3125/1e6},"gpt-5-mini":{input:.25/1e6,output:2/1e6,cacheRead:.0625/1e6},"gpt-5-nano":{input:.05/1e6,output:.4/1e6,cacheRead:.0125/1e6},"gpt-4.1":{input:2/1e6,output:8/1e6,cacheRead:.5/1e6},"gpt-4.1-mini":{input:.4/1e6,output:1.6/1e6,cacheRead:.1/1e6},"gpt-4.1-nano":{input:.1/1e6,output:.4/1e6,cacheRead:.025/1e6},"gpt-4o":{input:2.5/1e6,output:10/1e6,cacheRead:.625/1e6},"gpt-4o-mini":{input:.15/1e6,output:.6/1e6,cacheRead:.0375/1e6},o3:{input:2/1e6,output:8/1e6,cacheRead:.5/1e6},"o3-mini":{input:1.1/1e6,output:4.4/1e6,cacheRead:.275/1e6},"o4-mini":{input:1.1/1e6,output:4.4/1e6,cacheRead:.275/1e6},o1:{input:15/1e6,output:60/1e6,cacheRead:3.75/1e6},"o1-mini":{input:.55/1e6,output:2.2/1e6,cacheRead:.1375/1e6},"gpt-4-turbo":{input:10/1e6,output:30/1e6},"gpt-4":{input:30/1e6,output:60/1e6},"gpt-3.5-turbo":{input:.5/1e6,output:1/1e6}},google:{"gemini-3.1-pro-preview":{input:2/1e6,output:12/1e6,cacheRead:.5/1e6},"gemini-3.1-flash-lite-preview":{input:.25/1e6,output:1.5/1e6,cacheRead:.0625/1e6},"gemini-3.1-flash-image-preview":{input:.5/1e6,output:3/1e6,cacheRead:.125/1e6},"gemini-3.1-pro-preview-customtools":{input:2/1e6,output:12/1e6,cacheRead:.5/1e6},"gemini-3-flash-preview":{input:.5/1e6,output:3/1e6,cacheRead:.125/1e6},"gemini-3-pro-image-preview":{input:2/1e6,output:12/1e6,cacheRead:.5/1e6},"gemini-3-pro-preview":{input:2/1e6,output:12/1e6,cacheRead:.5/1e6},"gemini-2.5-flash":{input:.3/1e6,output:2.5/1e6,cacheRead:.075/1e6},"gemini-2.5-pro":{input:1.25/1e6,output:10/1e6,cacheRead:.3125/1e6},"gemini-2.5-flash-lite":{input:.1/1e6,output:.4/1e6,cacheRead:.025/1e6},"gemini-2.0-flash":{input:.15/1e6,output:.6/1e6,cacheRead:.0375/1e6},"gemini-2.0-flash-lite":{input:.075/1e6,output:.3/1e6,cacheRead:.01875/1e6},"gemini-1.5-pro":{input:1.25/1e6,output:5/1e6,cacheRead:.3125/1e6},"gemini-1.5-flash":{input:.075/1e6,output:.3/1e6,cacheRead:.01875/1e6}},mistral:{"mistral-large":{input:2/1e6,output:6/1e6},"mistral-medium":{input:2.7/1e6,output:8.1/1e6},"mistral-small":{input:.2/1e6,output:.6/1e6},codestral:{input:.3/1e6,output:.9/1e6},"open-mistral-nemo":{input:.15/1e6,output:.15/1e6}},deepseek:{"deepseek-chat":{input:.27/1e6,output:1.1/1e6,cacheRead:.07/1e6},"deepseek-reasoner":{input:.55/1e6,output:2.19/1e6,cacheRead:.14/1e6}},"nvidia-nim":{"openai/gpt-oss-20b":{input:.05/1e6,output:.2/1e6},"meta/llama-3.3-70b-instruct":{input:.4/1e6,output:.4/1e6},"meta/llama-3.1-405b-instruct":{input:1.79/1e6,output:1.79/1e6},"meta/llama-3.1-70b-instruct":{input:.4/1e6,output:.4/1e6},"meta/llama-3.2-90b-vision-instruct":{input:.5/1e6,output:.5/1e6},"nvidia/llama-3.3-nemotron-super-49b-v1":{input:.3/1e6,output:.3/1e6},"deepseek-ai/deepseek-r1":{input:.55/1e6,output:2.19/1e6},"mistralai/mixtral-8x22b-instruct-v0.1":{input:.6/1e6,output:.6/1e6},"mistralai/mixtral-8x7b-instruct-v0.1":{input:.24/1e6,output:.24/1e6},"microsoft/phi-4":{input:.07/1e6,output:.07/1e6},"google/gemma-3-27b-it":{input:.07/1e6,output:.07/1e6}},"lm-studio":{_default:{input:0,output:0}},llamacpp:{_default:{input:0,output:0}},...mFe,cohere:{_default:{input:2.5/1e6,output:10/1e6},"command-r-plus":{input:2.5/1e6,output:10/1e6},"command-r":{input:.15/1e6,output:.6/1e6},"command-r7b-12-2024":{input:.0375/1e6,output:.15/1e6}},fireworks:{_default:{input:.9/1e6,output:.9/1e6},"accounts/fireworks/models/llama-v3p1-70b-instruct":{input:.9/1e6,output:.9/1e6},"accounts/fireworks/models/llama-v3p1-405b-instruct":{input:3/1e6,output:3/1e6},"accounts/fireworks/models/llama-v3p1-8b-instruct":{input:.2/1e6,output:.2/1e6},"accounts/fireworks/models/llama-v3p3-70b-instruct":{input:.9/1e6,output:.9/1e6},"accounts/fireworks/models/mixtral-8x22b-instruct":{input:1.2/1e6,output:1.2/1e6},"accounts/fireworks/models/qwen2p5-72b-instruct":{input:.9/1e6,output:.9/1e6},"accounts/fireworks/models/qwen2p5-coder-32b-instruct":{input:.9/1e6,output:.9/1e6},"accounts/fireworks/models/deepseek-v3":{input:.75/1e6,output:3/1e6}},cloudflare:{_default:{input:.011/1e6,output:.011/1e6}},replicate:{_default:{input:.5/1e6,output:1.5/1e6}},voyage:{_default:{input:.18/1e6,output:0},"voyage-3.5":{input:.06/1e6,output:0},"voyage-3.5-lite":{input:.02/1e6,output:0},"voyage-3-large":{input:.18/1e6,output:0},"voyage-code-3":{input:.18/1e6,output:0},"voyage-finance-2":{input:.12/1e6,output:0},"voyage-law-2":{input:.12/1e6,output:0},"voyage-multilingual-2":{input:.12/1e6,output:0}},jina:{_default:{input:.02/1e6,output:0},"jina-embeddings-v3":{input:.02/1e6,output:0},"jina-reranker-v2-base-multilingual":{input:.05/1e6,output:0}},stability:{_default:{input:0,output:.04/1e3}},ideogram:{_default:{input:0,output:.08/1e3}},recraft:{_default:{input:0,output:.04/1e3}}},pFe={googleai:"google",googleaistudio:"google",googlevertex:"vertex",anthropic:"anthropic",openai:"openai",vertex:"vertex",google:"google",azure:"openai",azureopenai:"openai",bedrock:"anthropic",amazonbedrock:"anthropic",litellm:"__cross_provider__",openrouter:"__cross_provider__",openaicompatible:"__cross_provider__",deepseek:"deepseek",nvidianim:"nvidia-nim",nim:"nvidia-nim",nvidia:"nvidia-nim",lmstudio:"lm-studio",llamacpp:"llamacpp",cohere:"cohere",replicate:"replicate",voyage:"voyage",voyageai:"voyage",jina:"jina",jinaai:"jina",stability:"stability",stabilityai:"stability",sd:"stability",ideogram:"ideogram",recraft:"recraft",...$Tr(),mistralai:"mistral"},hFe=/^[-@](\d{8}|v\d+(:\d+)?|latest)([-@:](\d{8}|v\d+(:\d+)?))*$/}}),fFe={};ne(fFe,{createAnalytics:()=>Ly});function Ly(e,t,r,n,o){const s="createAnalytics";try{const i=zTr(r),a=GTr(e,t,i),c=r,l=Array.isArray(c.toolExecutions)?c.toolExecutions.length:Array.isArray(c.toolsUsed)?c.toolsUsed.length:void 0,u={provider:e,model:t,tokenUsage:i,cost:a,requestDuration:n,context:o,timestamp:new Date().toISOString(),...typeof c.stepsUsed=="number"&&{stepsUsed:c.stepsUsed},...l!==void 0&&{toolCallCount:l},...typeof c.stopReason=="string"&&{stopReason:c.stopReason},...typeof c.responseTime=="number"&&{elapsedMs:c.responseTime},...typeof c.rawFinishReason=="string"&&{rawFinishReason:c.rawFinishReason}};return p.debug(`[${s}] Analytics created`,{provider:e,model:t,tokens:i.total,responseTime:n,cost:a}),u}catch(i){return p.error(`[${s}] Failed to create analytics`,{error:i}),{provider:e,model:t,tokenUsage:{input:0,output:0,total:0},requestDuration:n,context:o,timestamp:new Date().toISOString()}}}function zTr(e){return _1(e.usage)}function GTr(e,t,r){try{if(PS(e,t))return Ua(e,t,r);const n=yh.getCostInfo(e.toLowerCase(),t);if(!n)return;const o=(r.input+(r.cacheReadTokens??0)+(r.cacheCreationTokens??0))/1e3*n.input,s=r.output/1e3*n.output;return Math.round((o+s)*1e6)/1e6}catch(n){p.debug("Cost estimation failed",{provider:e,model:t,error:n});return}}var OS=S({"src/lib/core/analytics.ts"(){"use strict";U(),vh(),b1(),tl()}});function u8(e){if(e&&typeof e.timeoutMs=="number"&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>=0)return e.timeoutMs;const t=process.env.NEUROLINK_LIFECYCLE_TIMEOUT_MS;if(t){const r=Number(t);if(Number.isFinite(r)&&r>=0)return r}return gFe}var gFe,yFe=S({"src/lib/utils/lifecycleTimeout.ts"(){"use strict";gFe=5e3}}),wh,Fy=S({"src/lib/core/handlerRegistry.ts"(){"use strict";U(),Qt(),wh=class{constructor(e){this.scopeName=e}scopeName;handlers=new Map;register(e,t){if(!e)throw new Error("Provider name is required");if(!t)throw new Error("Handler is required");const r=e.toLowerCase();this.handlers.has(r)&&p.warn(`[${this.scopeName}] Overwriting existing handler for provider: ${qr(r)}`),this.handlers.set(r,t)}supports(e){return e?this.handlers.has(e.toLowerCase()):!1}get(e){return this.handlers.get(e.toLowerCase())}list(){return Array.from(this.handlers.keys())}clear(){this.handlers.clear(),p.debug(`[${this.scopeName}] Cleared all handlers`)}}}});function vFe(e){e!==null&&typeof e=="object"&&typeof e.then=="function"&&typeof e.catch=="function"&&e.catch(()=>{})}function C1(e,t){return Object.defineProperty(e,d8,{value:t,enumerable:!1,configurable:!0,writable:!0}),e}function $y(e){if(e!=null&&!(typeof e!="object"&&typeof e!="function"))try{const t=e[d8];if(typeof t!="function")return;vFe(t())}catch{}}function k1(e){try{const t=e.return;if(typeof t!="function")return;vFe(t.call(e,void 0))}catch{}}var d8,A1=S({"src/lib/utils/streamCancellation.ts"(){"use strict";d8=Symbol.for("neurolink.streamCancel")}}),wFe={};ne(wFe,{IncrementalTTSSynthesisError:()=>x1,TTSError:()=>kt,TTSProcessor:()=>rl,TTS_ERROR_CODES:()=>Ot});function Uy(e){try{return e instanceof Error?String(e.message):String(e)}catch{return"[unprintable error]"}}function TFe(e,t){try{return e instanceof t}catch{return!1}}function qTr(e,t){if(TFe(e,Error))try{return String(e.name),String(e.message),String(e.stack),e}catch{return new Error(t)}}function jTr(e){if(!TFe(e,kt))return!1;try{return String(e.name),String(e.message),String(e.code),e.retriable,String(e.stack),!0}catch{return!1}}function HTr(e){const t=[];for(const r of e.matchAll(SFe))t.push((r.index??0)+r[0].length);return t}function VTr(e,t){if(t<=1||t>=e.length)return t;const r=e.charCodeAt(t-1),n=e.charCodeAt(t);return r>=_Fe&&r<=bFe&&n>=CFe&&n<=kFe?t-1:t}function WTr(e,t,r,n){const o=e.slice(0,r),s=HTr(o);let i=e.length>=t?s.at(-1):void 0;if(i===void 0&&e.length>=r&&(i=s.at(-1)??r),i===void 0&&n&&e.trim()&&(i=Math.min(e.length,r)),i===void 0)return;i=VTr(e,i);const a=e.slice(0,i).trim(),c=e.slice(i).trimStart();return a?{segment:a,remainder:c}:{segment:"",remainder:c}}function KTr(e,t){try{return new kt({...e,originalError:t})}catch{return new kt(e)}}var Ot,EFe,SFe,x1,_Fe,bFe,CFe,kFe,kt,rl,yc=S({"src/lib/utils/ttsProcessor.ts"(){"use strict";U(),ut(),tt(),Fy(),A1(),qn(),Ot={EMPTY_TEXT:"TTS_EMPTY_TEXT",TEXT_TOO_LONG:"TTS_TEXT_TOO_LONG",PROVIDER_NOT_SUPPORTED:"TTS_PROVIDER_NOT_SUPPORTED",PROVIDER_NOT_CONFIGURED:"TTS_PROVIDER_NOT_CONFIGURED",SYNTHESIS_FAILED:"TTS_SYNTHESIS_FAILED",INVALID_INPUT:"TTS_INVALID_INPUT"},EFe=120,SFe=/[.!?]+(?:["')\]]+)?(?=\s|$)/g,x1=class extends Error{firstError;failedSegments;constructor(e,t){super(`Incremental TTS failed for ${t.length} segment${t.length===1?"":"s"}`),this.name="IncrementalTTSSynthesisError",this.firstError=e,this.failedSegments=[...t]}},_Fe=55296,bFe=56319,CFe=56320,kFe=57343,kt=class extends be{constructor(e){super({code:e.code,message:e.message,category:e.category??"validation",severity:e.severity??"medium",retriable:e.retriable??!1,context:e.context,originalError:e.originalError}),this.name="TTSError"}},rl=class{static registry=new wh("TTSProcessor");static DEFAULT_MAX_TEXT_LENGTH=3e3;static registerHandler(e,t){const r=e&&e.toLowerCase();this.registry.register(e,t),p.debug(`[TTSProcessor] Registered TTS handler for provider: ${r}`)}static getHandler(e){return this.registry.get(e)}static listProviders(){return this.registry.list()}static clearHandlers(){this.registry.clear()}static supports(e){if(!e)return p.error("[TTSProcessor] Provider name is required for supports check"),!1;const t=this.registry.supports(e);return t||p.debug(`[TTSProcessor] Provider ${e} is not supported`),t}static async synthesize(e,t,r){const n=_e.createSpan("tts","tts.synthesize",{"tts.operation":"synthesize","tts.provider":t,"tts.voice":r.voice,"tts.format":r.format});try{const o=e.trim();if(!o)throw p.error("[TTSProcessor] Text is required for synthesis"),new kt({code:Ot.EMPTY_TEXT,message:"Text is required for TTS synthesis",severity:"low",retriable:!1,context:{provider:t}});const s=this.getHandler(t);if(!s)throw p.error(`[TTSProcessor] Provider "${t}" is not registered`),new kt({code:Ot.PROVIDER_NOT_SUPPORTED,message:`TTS provider "${t}" is not supported. Use TTSProcessor.registerHandler() to register it.`,severity:"high",retriable:!1,context:{provider:t,availableProviders:this.registry.list()}});const i=s.maxTextLength??this.DEFAULT_MAX_TEXT_LENGTH;if(o.length>i)throw p.error(`[TTSProcessor] Text exceeds maximum length of ${i} characters for provider "${t}"`),new kt({code:Ot.TEXT_TOO_LONG,message:`Text length (${o.length}) exceeds maximum allowed length (${i} characters) for provider "${t}"`,severity:"medium",retriable:!1,context:{provider:t,textLength:o.length,maxLength:i}});if(!s.isConfigured())throw p.warn(`[TTSProcessor] Provider "${t}" is not properly configured`),new kt({code:Ot.PROVIDER_NOT_CONFIGURED,message:`TTS provider "${t}" is not configured. Please set the required API keys.`,category:"configuration",severity:"high",retriable:!1,context:{provider:t}});p.debug(`[TTSProcessor] Starting synthesis with provider: ${t}`);const a=await s.synthesize(o,r),c={...a,voice:a.voice??r.voice};p.info(`[TTSProcessor] Successfully synthesized ${a.size} bytes of audio`);const l=_e.endSpan(n,1);return ot().recordSpan(l),c}catch(o){const s=_e.endSpan(n,2,Uy(o));throw ot().recordSpan(s),this.toSynthesisError(o,t,e,r)}}static toSynthesisError(e,t,r,n){if(jTr(e))return e;const o=e?Uy(e):"Unknown error";return p.error(`[TTSProcessor] Synthesis failed for provider "${t}": ${o}`),KTr({code:Ot.SYNTHESIS_FAILED,message:`TTS synthesis failed for provider "${t}": ${o}`,category:"execution",severity:"high",retriable:!0,context:{provider:t,textLength:r.trim().length,options:n}},qTr(e,o))}static startSynthesisSpan(e,t){return _e.createSpan("tts","tts.synthesize",{"tts.operation":"synthesize","tts.provider":e,"tts.voice":t.voice,"tts.format":t.format})}static finishSynthesisSpan(e,t,r){ot().recordSpan(_e.endSpan(e,t,r))}static isCallableMember(e){return typeof e=="function"}static isNativeStream(e){return e===null||typeof e!="object"&&typeof e!="function"?!1:typeof e[Symbol.asyncIterator]=="function"}static normalizeNativeChunk(e,t){if(e===null||typeof e!="object")return;const r=e,n=r.data;let o;if(Buffer.isBuffer(n))o=n;else if(n instanceof Uint8Array)o=Buffer.from(n.buffer,n.byteOffset,n.byteLength);else return;if(o.length===0)return;const s=typeof r.format=="string"&&mE.includes(r.format)?r.format:t.format??"mp3";return{data:o,format:s,voice:typeof r.voice=="string"?r.voice:void 0,sampleRate:typeof r.sampleRate=="number"?r.sampleRate:void 0,estimatedDuration:typeof r.estimatedDuration=="number"?r.estimatedDuration:void 0}}static resolveNativeStream(e,t,r,n){try{const o=e.synthesizeStream;if(!this.isCallableMember(o)||!e.isConfigured())return;const s=o.call(e,r,n);if(s===void 0)return;if(this.isNativeStream(s))return s}catch(o){p.warn(`[TTSProcessor] Provider "${t}" threw while establishing synthesizeStream(); using buffered synthesis for this segment: ${Uy(o)}`);return}p.warn(`[TTSProcessor] Provider "${t}" returned a non-iterable from synthesizeStream(); using buffered synthesis for this segment.`)}static synthesizeStream(e,t,r,n){const o=this;let s=!1,i,a;const c=()=>s||n?.()===!0,l=(async function*(){const u=o.getHandler(t),d=Math.max(1,u?.maxTextLength??o.DEFAULT_MAX_TEXT_LENGTH),m=r.streamingBufferSize??EFe,h=Math.min(Math.max(1,Math.trunc(m)),d);let f="",g=0,y=0,w=0,E,_=0,b;const A=[];let k=!1;const R=e[Symbol.asyncIterator]();let I=!1;const x=()=>{for(;;){const B=WTr(f,h,d,k);if(!B)return;if(f=B.remainder,B.segment)return B.segment}},M=async function*(B,P,D){const $=o.startSynthesisSpan(t,r);let F=!1;const z=(W,H)=>{F||(F=!0,o.finishSynthesisSpan($,W,H))};let q=!1,j=0;try{for(i=B,a=B[Symbol.asyncIterator]();!c();){const W=await a.next();if(W.done){q=!0;break}const H=o.normalizeNativeChunk(W.value,r);H&&(y+=H.data.length,w+=H.estimatedDuration??0,j+=1,yield{data:H.data,format:H.format,index:g++,isFinal:!1,cumulativeSize:y,estimatedDuration:w||void 0,voice:H.voice??r.voice,sampleRate:H.sampleRate})}j===0&&!c()&&(D.fellBackToBuffered=!0,p.warn(`[TTSProcessor] Provider "${t}" produced no audio from synthesizeStream(); falling back to buffered synthesis for this segment.`))}catch(W){throw z(2,Uy(W)),o.toSynthesisError(W,t,P,r)}finally{const W=a;a=void 0,i=void 0,!q&&W&&(c()&&$y(B),k1(W)),D.fellBackToBuffered||z(1)}},N=(B,P)=>{s||(A.length===0&&(b=P),A.push(B),p.warn(`[TTSProcessor] Incremental synthesis skipped a buffered segment: ${Uy(P)}`))};try{for(;!c();){const B=x();if(B===void 0){if(k)break;const z=await R.next();z.done?(I=!0,k=!0):f+=z.value;continue}const P=++_;let D;try{D=u?o.resolveNativeStream(u,t,B,r):void 0}catch(z){p.warn(`[TTSProcessor] Provider "${t}" threw during native capability discovery; using buffered synthesis for this segment: ${Uy(z)}`),D=void 0}if(D){const z={fellBackToBuffered:!1},q=M(D,B,z);let j=!1,W=!1;try{for(;;){let H;try{H=await q.next()}catch(se){j=!0,W=!0,N(P,se);break}if(H.done){j=!0;break}E&&(yield E),E=H.value}}finally{j||await q.return(void 0)}if(W||!z.fellBackToBuffered)continue}let $;try{$=await o.synthesize(B,t,r)}catch(z){N(P,z);continue}y+=$.size,w+=$.duration??0;const F={data:$.buffer,format:$.format,index:g++,isFinal:!1,cumulativeSize:y,estimatedDuration:w||void 0,voice:$.voice,sampleRate:$.sampleRate};E&&(yield E),E=F}}finally{if(!I){const B=R.return;typeof B=="function"&&await B.call(R,void 0)}}if(E&&(yield{...E,isFinal:!0}),A.length>0)throw new x1(b,A)})();return C1(l,()=>{s=!0,$y(i),a&&k1(a)})}}}});function JTr(e){const t=e instanceof x1?e:void 0,r=t?.firstError??e,n=ym(r).message;let o;r instanceof Bu?o={code:Ot.SYNTHESIS_FAILED,message:n,retriable:!0}:r instanceof be?o={code:r.code,message:n,retriable:r.retriable}:o={code:Ot.SYNTHESIS_FAILED,message:n};const s=t?.failedSegments,i=s?.length??1,a=s?.join(", ")??"unknown";return{...o,message:`Incremental TTS failed for ${i} segment${i===1?"":"s"} (segment${i===1?"":"s"} ${a}): ${o.message}`}}function AFe(e){return e.next().then(t=>({kind:"source",result:t}),t=>({kind:"source-error",error:t}))}function xFe(e){return e.next().then(t=>({kind:"audio",result:t}),t=>({kind:"audio-error",error:t}))}function YTr(e){if(e&&typeof e=="object"&&"content"in e&&typeof e.content=="string"&&e.content.length>0)return e.content}function IFe(e){const t=e.at(-1);if(!t)return;const r=Buffer.concat(e.map(n=>n.data));return{buffer:r,format:t.format,size:r.length,duration:t.estimatedDuration,voice:t.voice,sampleRate:t.sampleRate}}function ZTr(){return new Promise(e=>{setTimeout(e,PFe).unref?.()})}async function*RFe(e){const{stream:t,provider:r,options:n,onComplete:o}=e;if(!rl.supports(r)){try{for await(const f of t)yield f}finally{o?.(void 0)}return}const s=new MFe,i=t[Symbol.asyncIterator]();let a=!1;const c=rl.synthesizeStream(s,r,n,()=>a)[Symbol.asyncIterator](),l=[];let u=AFe(i),d=xFe(c),m=!1,h=!1;try{for(;u||d;){const f=u&&d?await Promise.race(h?[d,u]:[u,d]):u?await u:d?await d:void 0;if(!f)break;if(f.kind==="source-error")throw s.fail(f.error),f.error;if(f.kind==="audio-error"){s.end();const g=JTr(f.error);p.warn(`[TTSProcessor] Incremental stream disabled after an audio error: ${f.error instanceof Error?f.error.message:String(f.error)}`),d=void 0,h=!1,m=!0,o?.(IFe(l),g);continue}if(f.kind==="source"){if(f.result.done){u=void 0,s.end(),h=!0;continue}const g=YTr(f.result.value);g&&s.push(g),u=AFe(i),h=!0,yield f.result.value;continue}if(f.result.done){d=void 0,m=!0,o?.(IFe(l));continue}l.push(f.result.value),d=xFe(c),h=!1,yield{type:"tts_audio",audio:f.result.value}}}finally{m||(a=!0,$y(t),$y(c)),s.end();const f=[];u&&i.return&&f.push(Promise.resolve().then(()=>i.return?.(void 0))),d&&c.return&&f.push(Promise.resolve().then(()=>c.return?.(void 0))),await Promise.race([Promise.allSettled(f),ZTr()]),m||o?.(void 0)}}var MFe,PFe,DFe=S({"src/lib/utils/ttsStream.ts"(){"use strict";tt(),Qt(),U(),yc(),Mr(),A1(),MFe=class{values=[];waiters=[];ended=!1;failure;[Symbol.asyncIterator](){return this}next(){if(this.values.length>0){const e=this.values.shift();if(e!==void 0)return Promise.resolve({value:e,done:!1})}return this.failure!==void 0?Promise.reject(this.failure):this.ended?Promise.resolve({value:void 0,done:!0}):new Promise((e,t)=>{this.waiters.push({resolve:e,reject:t})})}push(e){if(this.ended||this.failure!==void 0)return;const t=this.waiters.shift();if(t){t.resolve({value:e,done:!1});return}this.values.push(e)}end(){if(!(this.ended||this.failure!==void 0)){this.ended=!0;for(const e of this.waiters.splice(0))e.resolve({value:void 0,done:!0})}}fail(e){if(!(this.ended||this.failure!==void 0)){this.failure=e;for(const t of this.waiters.splice(0))t.reject(e)}}},PFe=5e3}}),XTr=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/Types.js"(){}}),m8,p8=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/parsers/parseAnyOf.js"(){Ba(),m8=(e,t)=>e.anyOf.length?e.anyOf.length===1?Fo(e.anyOf[0],{...t,path:[...t.path,"anyOf",0]}):`z.union([${e.anyOf.map((r,n)=>Fo(r,{...t,path:[...t.path,"anyOf",n]})).join(", ")}])`:"z.any()"}}),OFe,NFe=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/parsers/parseBoolean.js"(){OFe=e=>"z.boolean()"}}),LFe,FFe=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/parsers/parseDefault.js"(){LFe=e=>"z.any()"}}),$Fe,UFe=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/parsers/parseMultipleType.js"(){Ba(),$Fe=(e,t)=>`z.union([${e.type.map(r=>Fo({...e,type:r},{...t,withoutDefaults:!0})).join(", ")}])`}}),BFe,zFe=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/parsers/parseNot.js"(){Ba(),BFe=(e,t)=>`z.any().refine((value) => !${Fo(e.not,{...t,path:[...t.path,"not"]})}.safeParse(value).success, "Invalid input: Should NOT be valid against schema")`}}),GFe,qFe=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/parsers/parseNull.js"(){GFe=e=>"z.null()"}}),jFe,HFe=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/utils/half.js"(){jFe=e=>[e.slice(0,e.length/2),e.slice(e.length/2)]}});function I1(e,t){if(e.allOf.length===0)return"z.never()";if(e.allOf.length===1){const r=e.allOf[0];return Fo(r,{...t,path:[...t.path,"allOf",r[By]]})}else{const[r,n]=jFe(VFe(e.allOf));return`z.intersection(${I1({allOf:r},t)}, ${I1({allOf:n},t)})`}}var By,VFe,h8=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/parsers/parseAllOf.js"(){Ba(),HFe(),By=Symbol("Original index"),VFe=e=>{let t=[];for(let r=0;r<e.length;r++){const n=e[r];if(typeof n=="boolean")t.push(n?{[By]:r}:{[By]:r,not:{}});else{if(By in n)return e;t.push({...n,[By]:r})}}return t}}});function Ts(e,t,r,n){const o=e[t];let s="";if(o!==void 0){const i=r({value:o,json:JSON.stringify(o)});if(i){const a=i[0],c=i.length===3?i[1]:"",l=i.length===3?i[2]:i[1];s+=a;const u=e.errorMessage?.[t]??n;u!==void 0&&(s+=c+JSON.stringify(u)),s+=l}}return s}var R1=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/utils/withMessage.js"(){}}),WFe,KFe=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/parsers/parseArray.js"(){R1(),Ba(),WFe=(e,t)=>{if(Array.isArray(e.items))return`z.tuple([${e.items.map((n,o)=>Fo(n,{...t,path:[...t.path,"items",o]}))}])`;let r=e.items?`z.array(${Fo(e.items,{...t,path:[...t.path,"items"]})})`:"z.array(z.any())";return r+=Ts(e,"minItems",({json:n})=>[`.min(${n}`,", ",")"]),r+=Ts(e,"maxItems",({json:n})=>[`.max(${n}`,", ",")"]),e.uniqueItems===!0&&(r+=Ts(e,"uniqueItems",()=>[".refine((arr) => arr.every((item, i) => arr.indexOf(item) == i)",", ",")"],"All items must be unique!")),r}}}),JFe,YFe=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/parsers/parseConst.js"(){JFe=e=>`z.literal(${JSON.stringify(e.const)})`}}),ZFe,XFe=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/parsers/parseEnum.js"(){ZFe=e=>e.enum.length===0?"z.never()":e.enum.length===1?`z.literal(${JSON.stringify(e.enum[0])})`:e.enum.every(t=>typeof t=="string")?`z.enum([${e.enum.map(t=>JSON.stringify(t))}])`:`z.union([${e.enum.map(t=>`z.literal(${JSON.stringify(t)})`).join(", ")}])`}}),QFe,e$e=S({"node_modules/.pnpm/json-schema-to-zod@2.8.0/node_modules/json-schema-to-zod/dist/esm/parsers/parseIfThenElse.js"(){Ba(),QFe=(e,t)=>{const r=Fo(e.if,{...t,path:[...t.path,"if"]}),n=Fo(e.then,{...t,path:[...t.path,"then"]}),o=Fo(e.else,{...t,path:[...t.path,"else"]});return`z.union([${n}, ${o}]).superRefine((value,ctx) => {
665
665
  const result = ${r}.safeParse(value).success
666
666
  ? ${n}.safeParse(value)
667
667
  : ${o}.safeParse(value);
@@ -1115,7 +1115,7 @@ Reason: ${i instanceof Error?i.message:"Unknown error"}`}}return{...t,prompt:n,i
1115
1115
  `}),t&&t.toLowerCase().includes("claude")&&(n+=`
1116
1116
  \u{1F4A1} Tip: "${t}" appears to be a Claude model.
1117
1117
  `,n+=`Ensure Anthropic integration is enabled in your Google Cloud project.
1118
- `,n+="Try using an available Claude model from the list above."),n}async embed(t,r){const n=r||this.getDefaultEmbeddingModel()||"text-embedding-004";p.debug("Generating embedding",{provider:this.providerName,model:n,textLength:t.length});try{const o=V0(n,void 0),a=(await(await this.createVertexGenAIClient(o)).models.embedContent({model:n,contents:[t]})).embeddings?.[0]?.values;if(!a||a.length===0)throw new dt("No embedding returned from Vertex AI",this.providerName);return p.debug("Embedding generated successfully",{provider:this.providerName,model:n,embeddingDimension:a.length}),a}catch(o){throw p.error("Embedding generation failed",{error:o instanceof Error?o.message:String(o),model:n,textLength:t.length}),this.handleProviderError(o)}}async embedMany(t,r){const n=r||this.getDefaultEmbeddingModel()||"text-embedding-004";p.debug("Generating batch embeddings",{provider:this.providerName,model:n,count:t.length});try{const o=V0(n,void 0),a=((await(await this.createVertexGenAIClient(o)).models.embedContent({model:n,contents:t})).embeddings||[]).map(c=>c.values||[]);return p.debug("Batch embeddings generated successfully",{provider:this.providerName,model:n,count:a.length,embeddingDimension:a[0]?.length}),a}catch(o){throw p.error("Batch embedding generation failed",{error:o instanceof Error?o.message:String(o),model:n,count:t.length}),this.handleProviderError(o)}}}}}),TEt,EEt,uJ,SEt,_Et,X1r=S({"src/lib/providers/googleVertex/constants.ts"(){"use strict";Kt(),TEt=10*1024*1024,EEt=lt.getTracer("neurolink.provider.vertex"),uJ=null,SEt={"claude-sonnet-4-5":"claude-sonnet-4-5@20250929","claude-opus-4-5":"claude-opus-4-5@20251101","claude-haiku-4-5":"claude-haiku-4-5@20251001","claude-sonnet-4":"claude-sonnet-4@20250514","claude-opus-4":"claude-opus-4@20250514","claude-opus-4-1":"claude-opus-4-1@20250805","claude-3-7-sonnet":"claude-3-7-sonnet@20250219","claude-3-5-sonnet":"claude-3-5-sonnet-20241022","claude-3-5-haiku":"claude-3-5-haiku-20241022","claude-3-opus":"claude-3-opus-20240229","claude-3-sonnet":"claude-3-sonnet-20240229","claude-3-haiku":"claude-3-haiku-20240307","gemini-3-pro":"gemini-3.1-pro-preview","gemini-3-flash":"gemini-3-flash-preview"},_Et=e=>{uJ=e}}}),bEt={};ne(bEt,{GoogleVertexAI:()=>lJ,GoogleVertexProvider:()=>lJ,MAX_IMAGE_DOWNLOAD_BYTES:()=>TEt,VERTEX_MODEL_ALIASES:()=>SEt,appendUserMessage:()=>iJ,buildAnthropicHistoryMessages:()=>sJ,cachedCredentialsPath:()=>uJ,resolveVertexLocation:()=>cJ,setCachedCredentialsPath:()=>_Et,streamTracer:()=>EEt,stripAdditionalPropertiesDeep:()=>vf});var Q1r=S({"src/lib/providers/googleVertex/index.ts"(){"use strict";Z1r(),X1r()}}),CEt,kEt,AEt,xEt,eMr=S({"src/lib/providers/huggingFace/client.ts"(){"use strict";ut(),Qs(),U(),Qt(),Vo(),Ha(),CEt="https://router.huggingface.co/v1",kEt=()=>yi(Klr()),AEt=()=>vi("HUGGINGFACE_MODEL","microsoft/DialoGPT-medium"),xEt=class extends fa{constructor(e,t,r,n){const o=n?.apiKey?.trim()?n.apiKey.trim():kEt(),s=n?.baseURL?.trim()||process.env.HUGGINGFACE_BASE_URL?.trim()||CEt;super("huggingface",e,t,{baseURL:s,apiKey:o}),p.debug("HuggingFaceProvider initialized",{modelName:this.modelName,providerName:this.providerName,baseURL:zn(this.config.baseURL)})}getProviderName(){return"huggingface"}getDefaultModel(){return AEt()}getFallbackModelName(){return"meta-llama/Llama-3.1-8B-Instruct"}supportsTools(){const e=this.modelName.toLowerCase();return["llama-3.1-8b-instruct","llama-3.1-70b-instruct","llama-3.1-405b-instruct","llama-3.1-nemotron-ultra","hermes-3-llama-3.2","hermes-2-pro","codellama-34b-instruct","codellama-13b-instruct","mistral-7b-instruct-v0.3","mistral-8x7b-instruct","nous-hermes","openchat","wizardcoder"].some(r=>e.includes(r))}formatProviderError(e){const t=[{match:r=>/API_TOKEN_INVALID|Invalid token/.test(r.message),errorClass:_r,message:"Invalid HuggingFace API token. Please check your HUGGINGFACE_API_KEY environment variable."},{match:r=>/rate limit/.test(r.message),errorClass:ms,message:"HuggingFace rate limit exceeded. Consider using a paid plan or try again later."},{match:r=>/model/.test(r.message)&&/not found/.test(r.message),errorClass:Bn,message:()=>`HuggingFace model '${this.modelName}' not found.
1118
+ `,n+="Try using an available Claude model from the list above."),n}async embed(t,r){const n=r||this.getDefaultEmbeddingModel()||"text-embedding-004";p.debug("Generating embedding",{provider:this.providerName,model:n,textLength:t.length});try{const o=V0(n,void 0),a=(await(await this.createVertexGenAIClient(o)).models.embedContent({model:n,contents:[t]})).embeddings?.[0]?.values;if(!a||a.length===0)throw new dt("No embedding returned from Vertex AI",this.providerName);return p.debug("Embedding generated successfully",{provider:this.providerName,model:n,embeddingDimension:a.length}),a}catch(o){throw p.error("Embedding generation failed",{error:o instanceof Error?o.message:String(o),model:n,textLength:t.length}),this.handleProviderError(o)}}async embedMany(t,r){const n=r||this.getDefaultEmbeddingModel()||"text-embedding-004";p.debug("Generating batch embeddings",{provider:this.providerName,model:n,count:t.length});try{const o=V0(n,void 0),a=((await(await this.createVertexGenAIClient(o)).models.embedContent({model:n,contents:t})).embeddings||[]).map(c=>c.values||[]);return p.debug("Batch embeddings generated successfully",{provider:this.providerName,model:n,count:a.length,embeddingDimension:a[0]?.length}),a}catch(o){throw p.error("Batch embedding generation failed",{error:o instanceof Error?o.message:String(o),model:n,count:t.length}),this.handleProviderError(o)}}}}}),TEt,EEt,uJ,SEt,_Et,X1r=S({"src/lib/providers/googleVertex/constants.ts"(){"use strict";Kt(),TEt=10*1024*1024,EEt=lt.getTracer("neurolink.provider.vertex"),uJ=null,SEt={"claude-sonnet-4-5":"claude-sonnet-4-5@20250929","claude-opus-4-5":"claude-opus-4-5@20251101","claude-haiku-4-5":"claude-haiku-4-5@20251001","claude-sonnet-4":"claude-sonnet-4@20250514","claude-opus-4":"claude-opus-4@20250514","claude-opus-4-1":"claude-opus-4-1@20250805","claude-3-7-sonnet":"claude-3-7-sonnet@20250219","claude-3-5-sonnet":"claude-3-5-sonnet-20241022","claude-3-5-haiku":"claude-3-5-haiku-20241022","claude-3-opus":"claude-3-opus-20240229","claude-3-sonnet":"claude-3-sonnet-20240229","claude-3-haiku":"claude-3-haiku-20240307","gemini-3-pro":"gemini-3.1-pro-preview","gemini-3-flash":"gemini-3-flash-preview"},_Et=e=>{uJ=e}}}),bEt={};ne(bEt,{GoogleVertexAI:()=>lJ,GoogleVertexProvider:()=>lJ,MAX_IMAGE_DOWNLOAD_BYTES:()=>TEt,VERTEX_MODEL_ALIASES:()=>SEt,appendUserMessage:()=>iJ,buildAnthropicHistoryMessages:()=>sJ,cachedCredentialsPath:()=>uJ,resolveVertexLocation:()=>cJ,setCachedCredentialsPath:()=>_Et,streamTracer:()=>EEt,stripAdditionalPropertiesDeep:()=>vf});var Q1r=S({"src/lib/providers/googleVertex/index.ts"(){"use strict";Z1r(),X1r()}}),CEt,kEt,AEt,xEt,eMr=S({"src/lib/providers/huggingFace/client.ts"(){"use strict";ut(),Qs(),U(),Qt(),Vo(),Ha(),CEt="https://router.huggingface.co/v1",kEt=()=>yi(Klr()),AEt=()=>vi("HUGGINGFACE_MODEL","Qwen/Qwen2.5-72B-Instruct"),xEt=class extends fa{constructor(e,t,r,n){const o=n?.apiKey?.trim()?n.apiKey.trim():kEt(),s=n?.baseURL?.trim()||process.env.HUGGINGFACE_BASE_URL?.trim()||CEt;super("huggingface",e,t,{baseURL:s,apiKey:o}),p.debug("HuggingFaceProvider initialized",{modelName:this.modelName,providerName:this.providerName,baseURL:zn(this.config.baseURL)})}getProviderName(){return"huggingface"}getDefaultModel(){return AEt()}getFallbackModelName(){return"meta-llama/Llama-3.1-8B-Instruct"}formatProviderError(e){const t=[{match:r=>/API_TOKEN_INVALID|Invalid token/.test(r.message),errorClass:_r,message:"Invalid HuggingFace API token. Please check your HUGGINGFACE_API_KEY environment variable."},{match:r=>/rate limit/.test(r.message),errorClass:ms,message:"HuggingFace rate limit exceeded. Consider using a paid plan or try again later."},{match:r=>/model/.test(r.message)&&/not found/.test(r.message),errorClass:Bn,message:()=>`HuggingFace model '${this.modelName}' not found.
1119
1119
 
1120
1120
  Suggestions:
1121
1121
  1. Check model name spelling