blade-code 0.10.67 → 0.10.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/blade.js +2 -2
- package/dist/chunk-0f8nn2h1.js +5 -0
- package/dist/{chunk-kccs7c9r.js → chunk-16n849z3.js} +1 -1
- package/dist/{chunk-nrh7qjat.js → chunk-1xjzd1jn.js} +1 -1
- package/dist/{chunk-eqqxr26g.js → chunk-2da7j2sw.js} +1 -1
- package/dist/{chunk-pf6ftbra.js → chunk-2e7sedzn.js} +2 -2
- package/dist/{chunk-amaxww4b.js → chunk-4ge1jkf8.js} +1 -1
- package/dist/{chunk-vavy5dw8.js → chunk-68zek95f.js} +1 -1
- package/dist/{chunk-w5jdnsyz.js → chunk-6pkyc8r6.js} +1 -1
- package/dist/{chunk-38x7njj5.js → chunk-7cm6tfnn.js} +1 -1
- package/dist/{chunk-pv576mrv.js → chunk-8gd0ksz7.js} +1 -1
- package/dist/{chunk-eq99gcj8.js → chunk-8gzm51m8.js} +1 -1
- package/dist/{chunk-0aja46wq.js → chunk-a0j0xwt1.js} +1 -1
- package/dist/{chunk-p0gyfy9p.js → chunk-asgyyv1s.js} +1 -1
- package/dist/{chunk-6am7zz57.js → chunk-b793bj62.js} +1 -1
- package/dist/{chunk-yq2891kc.js → chunk-bvyydst6.js} +1 -1
- package/dist/{chunk-tb363yj8.js → chunk-c8h3c8an.js} +1 -1
- package/dist/{chunk-37g8mh93.js → chunk-crkkpx3m.js} +1 -1
- package/dist/{chunk-8mr5vydg.js → chunk-dfrgc84s.js} +1 -1
- package/dist/chunk-efemjy9y.js +2 -0
- package/dist/{chunk-8t2xknh6.js → chunk-eym0bdee.js} +1 -1
- package/dist/{chunk-zd05g5qs.js → chunk-ftmbgtnk.js} +1 -1
- package/dist/{chunk-gayy8vky.js → chunk-g324ww9d.js} +271 -271
- package/dist/chunk-hsgcdk2a.js +1 -0
- package/dist/{chunk-gvxpdb2v.js → chunk-jj0b6n20.js} +1 -1
- package/dist/{chunk-nacssmem.js → chunk-kf070906.js} +1 -1
- package/dist/{chunk-7agkmjm7.js → chunk-kwv6vyst.js} +1 -1
- package/dist/{chunk-wr60s2qh.js → chunk-m65pse74.js} +1 -1
- package/dist/{chunk-7pxpwkeg.js → chunk-mgv3qr9b.js} +1 -1
- package/dist/{chunk-te88v4a8.js → chunk-n6rgqmf7.js} +1 -1
- package/dist/chunk-nxek5ev2.js +6 -0
- package/dist/{chunk-k5a3n7q5.js → chunk-ptcb5fb7.js} +1 -1
- package/dist/chunk-q9y9hxnt.js +1 -0
- package/dist/{chunk-5kz804w9.js → chunk-qd9vk8t1.js} +1 -1
- package/dist/{chunk-fs6ashcf.js → chunk-qjg390mv.js} +1 -1
- package/dist/{chunk-3j8q6yrf.js → chunk-qz0pe10c.js} +1 -1
- package/dist/{chunk-2a9rndk2.js → chunk-rpmmy3qs.js} +1 -1
- package/dist/{chunk-2wz3mf50.js → chunk-v712dqde.js} +1 -1
- package/dist/{chunk-rbdd49vr.js → chunk-w3fy09rw.js} +1 -1
- package/dist/{chunk-yy6h97k0.js → chunk-w67k19a1.js} +1 -1
- package/dist/{chunk-gak96awp.js → chunk-xjse24zd.js} +1 -1
- package/dist/{chunk-696t7mzc.js → chunk-z9p0by31.js} +1 -1
- package/package.json +1 -1
- package/dist/chunk-2kkpn41a.js +0 -5
- package/dist/chunk-53xbkvk1.js +0 -6
- package/dist/chunk-cn9jekw9.js +0 -1
- package/dist/chunk-f99n8812.js +0 -2
- package/dist/chunk-gn3fxtkj.js +0 -1
package/dist/chunk-2kkpn41a.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{Ag as e_,Bg as vf,Cg as Ff,Dg as n_,Eg as jf,Gg as Bf,Ig as Jf,Jg as Af,Kg as Sf,Lg as Wf,Ng as Cf,Og as $f,Qg as K}from"./chunk-6pyktfa4.js";import{Xg as a}from"./chunk-98n2rxmq.js";import{$g as T_,bh as sf}from"./chunk-ypqp368c.js";import{eh as m_}from"./chunk-t8xmh4w2.js";var SE={openrouter:{"HTTP-Referer":"https://github.com/echoVic/blade-code","X-Title":"Blade"},cerebras:{"X-Cerebras-3rd-Party-Integration":"blade"}},ef=(f)=>SE[f]||{};var CE=new Set(["user-cancel","interrupt","sibling-error","timeout"]);function Nf(f){return typeof f==="string"&&CE.has(f)}function Ut(f){if(!f.aborted)return;if(Nf(f.reason))return f.reason;return"user-cancel"}function Ot(f){if(Nf(f))return!0;if(!(f instanceof Error))return!1;if(f.name==="AbortError")return!0;if(f instanceof DOMException&&f.name==="AbortError")return!0;if(f.message.includes("aborted"))return!0;return!1}function nf(...f){let _=f.filter(Boolean);if(_.length===0)return new AbortController().signal;if(_.length===1)return _[0];let E=AbortSignal;if(typeof E.any==="function")return E.any(_);for(let h of _)if(h.aborted)return h;let t=new AbortController,T=new Map;for(let h of _){let S=()=>{t.abort(h.reason);for(let[A,x]of T)A.removeEventListener("abort",x)};T.set(h,S)}for(let[h,S]of T)h.addEventListener("abort",S,{once:!0});return t.signal}function d(f,_,E){let t=E?.throwOnAbort??!1;if(_?.aborted){if(t)return Promise.reject(new DOMException("Aborted","AbortError"));return Promise.resolve()}return new Promise((T,h)=>{let S,A=setTimeout(()=>{if(_&&S)_.removeEventListener("abort",S);T()},f);if(_)S=()=>{if(clearTimeout(A),t)h(new DOMException("Aborted","AbortError"));else T()},_.addEventListener("abort",S,{once:!0})})}var PE=a("Chat"),uE={input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}};function Of(f){if(typeof f==="string")return f;return f.filter((_)=>_.type==="text").map((_)=>_.text).join(`
|
|
2
|
-
`)}function DE(f){if(!f)return{};try{let _=JSON.parse(f);return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}catch{return PE.warn("[PiAIChatService] Invalid historical tool arguments",{value:f}),{}}}function bE(f){let _=f.match(/^data:([^;,]+);base64,(.+)$/s);return _?{mimeType:_[1],data:_[2]}:void 0}async function HE(f,_){let E=bE(f);if(E)return{type:"image",...E};if(!/^https?:\/\//i.test(f))return{type:"text",text:`[Unsupported image source: ${f}]`};let t=await fetch(f,{signal:_});if(!t.ok)throw Error(`Failed to load image ${f}: HTTP ${t.status}`);return{type:"image",mimeType:t.headers.get("content-type")?.split(";")[0]??"image/png",data:Buffer.from(await t.arrayBuffer()).toString("base64")}}async function __(f,_,E,t,T){let h=f.filter((x)=>x.role==="system").map((x)=>Of(x.content)).filter(Boolean).join(`
|
|
3
|
-
|
|
4
|
-
`),S=[];for(let x of f){if(x.role==="system")continue;if(x.role==="user"){let C=_.input.includes("image"),c=typeof x.content==="string"?x.content:await Promise.all(x.content.map((R)=>R.type==="text"?Promise.resolve({type:"text",text:R.text}):C?HE(R.image_url.url,t):Promise.resolve({type:"text",text:"[Image omitted: current model does not support image input]"})));S.push({role:"user",content:c,timestamp:Date.now()});continue}if(x.role==="assistant"){let C=[];if(x.reasoningContent?.trim())C.push({type:"thinking",thinking:x.reasoningContent});let c=Of(x.content);if(c)C.push({type:"text",text:c});for(let R of x.tool_calls??[]){if(!("function"in R))continue;C.push({type:"toolCall",id:R.id,name:R.function.name,arguments:DE(R.function.arguments)})}S.push({role:"assistant",content:C,api:_.api,provider:_.provider,model:_.id,usage:uE,stopReason:x.tool_calls?.length?"toolUse":"stop",timestamp:Date.now()});continue}S.push({role:"toolResult",toolCallId:x.tool_call_id??"",toolName:x.name??"unknown",content:[{type:"text",text:Of(x.content)}],isError:!1,timestamp:Date.now()})}let A=E?.filter((x)=>!T||x.name===T).map((x)=>({name:x.name,description:x.description,parameters:x.parameters,constrainedSampling:x.constrainedSampling})).sort((x,C)=>x.name<C.name?-1:x.name>C.name?1:0);return{...h?{systemPrompt:h}:{},messages:S,...A?.length?{tools:A}:{}}}function E_(f){let _=[];for(let E=0;E<f.length;E++){let t=f[E];if(t.role==="tool")continue;let T=t.role==="assistant"&&t.tool_calls?.length?t.tool_calls:void 0;if(!T){_.push(t);continue}let h=[],S=E+1;while(S<f.length&&f[S].role==="tool")h.push(f[S++]);let A=new Set(T.map((c)=>c.id)),x=h.filter((c)=>c.tool_call_id&&A.has(c.tool_call_id)),C=new Set(x.map((c)=>c.tool_call_id));if(A.size===T.length&&x.length===A.size&&C.size===A.size)_.push(t,...x);E=S-1}return _}function t_(f){return f.some((_)=>_.role==="assistant"&&Boolean(_.tool_calls?.length)&&!_.reasoningContent?.trim())}function h_(f,_){return{...f,..._.baseUrl?{baseUrl:T_(f.api,_.baseUrl)}:{},..._.maxOutputTokens?{maxTokens:_.maxOutputTokens}:{}}}function kf(f){let _=f.modelCatalog??sf();return{models:_.models,model:h_(_.getModel(f.provider,f.model),f)}}function x_(f,_){let E=f.modelCatalog??sf();return h_(E.getModel(_.provider,_.model),f)}import{createHash as UE}from"node:crypto";var YE=32,NE=1000,OE=512,sE=2000,kE=0.1,VE=0.05,jE=0.9,BE=300000,XE=3600000;class Vf{sessions=new Map;observe(f){if(f.retention==="none"){this.sessions.delete(f.sessionId);return}let _=f.now??Date.now(),E=zE(f,_),t=this.sessions.get(f.sessionId);if(E.callCount=(t?.callCount??0)+1,this.touch(f.sessionId,E),t&&E.contextEpoch!==t.contextEpoch)return;if(!t||t.cacheReadTokens<NE)return;let T=t.cacheReadTokens-E.cacheReadTokens,h=Math.min(sE,Math.max(OE,t.cacheReadTokens*kE));if(T<h||E.cacheReadTokens>=t.cacheReadTokens*(1-VE))return;let S=E.modelIdentity!==t.modelIdentity,A=E.systemHash!==t.systemHash,x=E.toolsHash!==t.toolsHash,C=E.policyHash!==t.policyHash;if(!(S||A||x||C)&&E.promptTokens<t.promptTokens*jE)return;let R=Math.max(0,_-t.recordedAt),u=t.retention==="long"?XE:BE,H=S?"model_changed":A?"system_prompt_changed":x?"tools_changed":C?"request_policy_changed":R>=u?"ttl_expired":"server_side",X=IE(t,E);return{reason:H,previousCacheReadTokens:t.cacheReadTokens,cacheReadTokens:E.cacheReadTokens,cacheWriteTokens:Math.max(0,f.usage.cacheCreationInputTokens??0),tokenDrop:T,elapsedMs:R,callNumber:E.callCount,systemPromptChanged:A,systemCharDelta:E.systemChars-t.systemChars,toolsChanged:x,addedToolCount:X.added,removedToolCount:X.removed,changedToolCount:X.changed,modelChanged:S,requestPolicyChanged:C}}clear(f){if(f)this.sessions.delete(f);else this.sessions.clear()}statsForTests(){return{sessions:this.sessions.size}}touch(f,_){this.sessions.delete(f),this.sessions.set(f,_);while(this.sessions.size>YE){let E=this.sessions.keys().next().value;if(E===void 0)break;this.sessions.delete(E)}}}function zE(f,_){let E=[...f.tools??f.context.tools??[]].map((t)=>({identityHash:e(t.name),contractHash:e(n(t))})).sort((t,T)=>t.identityHash<T.identityHash?-1:t.identityHash>T.identityHash?1:0);return{modelIdentity:f.modelIdentity,systemHash:e(f.context.systemPrompt??""),systemChars:f.context.systemPrompt?.length??0,toolsHash:e(n(E)),toolFingerprints:E,policyHash:e(n(f.policy)),contextEpoch:f.contextEpoch??"",retention:f.retention,promptTokens:Number.isFinite(f.usage.promptTokens)?Math.max(0,f.usage.promptTokens):0,cacheReadTokens:Math.max(0,f.usage.cacheReadInputTokens??0),recordedAt:_,callCount:1}}function IE(f,_){let E=new Map(f.toolFingerprints.map((T)=>[T.identityHash,T.contractHash])),t=new Map(_.toolFingerprints.map((T)=>[T.identityHash,T.contractHash]));return{added:[...t.keys()].filter((T)=>!E.has(T)).length,removed:[...E.keys()].filter((T)=>!t.has(T)).length,changed:[...t].filter(([T,h])=>E.has(T)&&E.get(T)!==h).length}}function n(f){if(f===null||typeof f!=="object")return JSON.stringify(f)??"undefined";if(Array.isArray(f))return`[${f.map(n).join(",")}]`;let _=f;return`{${Object.keys(_).sort().map((E)=>`${JSON.stringify(E)}:${n(_[E])}`).join(",")}}`}function e(f){return UE("sha256").update(f).digest("hex")}import{randomBytes as LE}from"node:crypto";import{createHmac as JE}from"node:crypto";function WE(f){try{let _=new URL(f);if(_.hash="",_.hostname=_.hostname.toLowerCase(),_.searchParams.sort(),_.pathname!=="/")_.pathname=_.pathname.replace(/\/+$/,"");return _.toString()}catch{return f.trim().replace(/\/+$/,"")}}function $E(f){if(!f)return[];return Object.entries(f).map(([_,E])=>[_.trim().toLowerCase(),E.trim()]).sort(([_],[E])=>_.localeCompare(E))}function cf(f,_,E){let t=JSON.stringify([f.provider.trim(),String(f.api).trim(),WE(f.baseUrl),f.model.trim(),f.serviceTier?.trim()??"",f.apiVersion?.trim()??"",f.apiKey??"",$E(f.customHeaders),E]);return JE("sha256",Buffer.from(_)).update(t).digest("hex")}var GE=60000,ZE=4,KE=0.8;var Mf=300000,Xf=600000;var c_=128,R_=256,QE=1800000,Rf=50;class ff extends Error{circuit;code="PROVIDER_CIRCUIT_OPEN";constructor(f){super(`Provider circuit open; retry after ${f.retryAfterMs??0}ms`);this.circuit=f;this.name="ProviderCircuitOpenError"}}function zf(f){return f instanceof ff||f!==null&&typeof f==="object"&&"code"in f&&f.code==="PROVIDER_CIRCUIT_OPEN"}function m(f,_){return f!==void 0&&Number.isSafeInteger(f)&&f>0?f:_}function oE(f,_){return f!==void 0&&Number.isFinite(f)&&f>0&&f<=1?f:_}function vE(f,_){return cf(f,_,{providerCircuitOpenDurationMs:f.openDurationMs})}function i(f){let _=0;for(let E of f)if(E.failure)_++;return _}function M_(f){return f!==void 0&&Number.isInteger(f)&&f>=100&&f<=599?f:void 0}function A_(f){if(f===void 0||!Number.isFinite(f)||f<0)return;return Math.min(Math.ceil(f),Bf)}class C_{#h=new Map;#R=new WeakMap;#f;#_;#t;#E;constructor(f={}){this.#f=f.processSecret?new Uint8Array(f.processSecret):LE(32),this.#_=f.now??(()=>performance.now()),this.#t=f.wallNow??f.now??Date.now,this.#E={maxEntries:Math.min(m(f.maxEntries,c_),c_),maxWindowEntries:Math.min(m(f.maxWindowEntries,R_),R_),windowMs:m(f.windowMs,GE),minSamples:m(f.minSamples,ZE),errorRateThreshold:oE(f.errorRateThreshold,KE),idleTtlMs:m(f.idleTtlMs,QE)}}get size(){return this.#h.size}get(f){if(f.openDurationMs===0)return this.#x();let _=this.#_();this.#U(_);let E=vE(f,this.#f),t=this.#h.get(E);if(t)return t.lastTouchedAt=_,this.#T(t,f.probeLeaseMs);if(this.#h.size>=this.#E.maxEntries)this.#O();if(this.#h.size>=this.#E.maxEntries)return this.#x();let T={key:E,state:"closed",samples:[],generation:0,nextAttemptId:1,nextProbeLeaseId:1,configuredOpenDurationMs:f.openDurationMs,effectiveOpenDurationMs:f.openDurationMs,lastTouchedAt:_,detached:!1};return this.#h.set(E,T),this.#T(T,f.probeLeaseMs)}#T(f,_){let E=this,t=Math.max(Mf,Math.min(m(_,Mf),Xf));return{preflight:()=>E.#C(f),check:()=>E.#P(f,t),recordSuccess:(T)=>E.#b(T,"success"),recordFailure:(T,h)=>E.#b(T,"failure",h),recordNeutral:(T)=>E.#b(T,"neutral"),abandon:(T)=>E.#N(T),snapshot:()=>E.#Y(f)}}#x(){let f=this;return{preflight:()=>({eligible:!0}),check:()=>{let _=Object.freeze({kind:"noop"});return f.#R.set(_,{generation:0,attemptId:0,kind:"noop",settled:!1}),{allowed:!0,probe:!1,token:_}},recordSuccess:(_)=>f.#c(_),recordFailure:(_)=>f.#c(_),recordNeutral:(_)=>f.#c(_),abandon:(_)=>f.#N(_),snapshot:()=>({state:"closed",sampleCount:0,failureCount:0,noop:!0,detached:!1})}}#c(f){let _=this.#R.get(f);if(_?.kind==="noop")_.settled=!0;return}#C(f){let _=this.#_();if(f.detached)return{eligible:!0};if(f.lastTouchedAt=_,this.#H(f,_),f.state==="closed")return{eligible:!0};if(f.state==="open"){let t=f.nextProbeAt??_;return _<t?this.#M(f,t-_):{eligible:!0}}if(f.probeLeaseId===void 0||f.probeLeaseExpiresAt!==void 0&&_>=f.probeLeaseExpiresAt)return{eligible:!0};let E=Math.max(1,(f.probeLeaseExpiresAt??_+Rf)-_);return this.#M(f,Math.min(Rf,E))}#M(f,_){let{allowed:E,...t}=this.#D(f,_);return{eligible:!1,...t}}#P(f,_){let E=this.#_();if(f.detached)return this.#x().check();if(f.lastTouchedAt=E,this.#H(f,E),f.state==="closed")return this.#A(f,"regular");if(f.state==="open"){let T=f.nextProbeAt??E;if(E<T)return this.#D(f,T-E);f.state="half_open",f.generation++,f.probeLeaseId=void 0,f.probeLeaseExpiresAt=void 0}if(f.probeLeaseId===void 0||f.probeLeaseExpiresAt!==void 0&&E>=f.probeLeaseExpiresAt)return this.#u(f,E,_);let t=Math.max(1,(f.probeLeaseExpiresAt??E+Rf)-E);return this.#D(f,Math.min(Rf,t))}#A(f,_,E){let t=Object.freeze({kind:_});return this.#R.set(t,{entry:f,generation:f.generation,attemptId:f.nextAttemptId++,kind:_,...E!==void 0?{probeLeaseId:E}:{},settled:!1}),{allowed:!0,probe:_==="probe",token:t}}#u(f,_,E){let t=f.nextProbeLeaseId++;f.probeLeaseId=t,f.probeLeaseExpiresAt=_+E,f.lastTouchedAt=_;let T=this.#A(f,"probe",t),h=f.lastFailure??{reason:"server_error"};return{...T,reason:h.reason,...h.statusCode!==void 0?{statusCode:h.statusCode}:{},openDurationMs:f.effectiveOpenDurationMs,sampleCount:f.samples.length,failureCount:i(f.samples)}}#D(f,_){let E=f.lastFailure??{reason:"server_error"};return{allowed:!1,state:f.state==="open"?"open":"half_open",reason:E.reason,...E.statusCode!==void 0?{statusCode:E.statusCode}:{},retryAfterMs:Math.max(0,Math.ceil(_)),nextProbeAt:this.#t()+Math.max(0,Math.ceil(_)),openDurationMs:f.effectiveOpenDurationMs,sampleCount:f.samples.length,failureCount:i(f.samples)}}#b(f,_,E){let t=this.#R.get(f);if(!t||t.settled)return;if(t.settled=!0,t.kind==="noop"||!t.entry)return;let T=t.entry;if(T.detached||t.generation!==T.generation||t.kind==="regular"&&T.state!=="closed"||t.kind==="probe"&&(T.state!=="half_open"||t.probeLeaseId!==T.probeLeaseId))return;let h=this.#_();if(T.lastTouchedAt=h,t.kind==="probe"){if(_==="failure"&&E)return this.#S(T,E,h,"reopened");return this.#k(T)}if(_==="neutral")return;if(this.#V(T,_==="failure",h),_!=="failure"||!E)return;let S=i(T.samples),A=T.samples.length===0?0:S/T.samples.length;if(T.samples.length>=this.#E.minSamples&&A>=this.#E.errorRateThreshold)return this.#S(T,E,h,"opened");return}#S(f,_,E,t){let T={reason:_.reason,...M_(_.statusCode)!==void 0?{statusCode:M_(_.statusCode)}:{},...A_(_.retryAfterMs)!==void 0?{retryAfterMs:A_(_.retryAfterMs)}:{}},h=T.retryAfterMs??0,S=Math.max(f.configuredOpenDurationMs,h);return f.state="open",f.generation++,f.probeLeaseId=void 0,f.probeLeaseExpiresAt=void 0,f.effectiveOpenDurationMs=S,f.nextProbeAt=E+S,f.lastFailure=T,{phase:t,reason:T.reason,...T.statusCode!==void 0?{statusCode:T.statusCode}:{},retryAfterMs:S,nextProbeAt:this.#t()+S,openDurationMs:S,sampleCount:f.samples.length,failureCount:i(f.samples)}}#k(f){let _=f.lastFailure??{reason:"server_error"};return f.state="closed",f.generation++,f.samples=[],f.probeLeaseId=void 0,f.probeLeaseExpiresAt=void 0,f.nextProbeAt=void 0,f.effectiveOpenDurationMs=f.configuredOpenDurationMs,{phase:"closed",reason:_.reason,..._.statusCode!==void 0?{statusCode:_.statusCode}:{},openDurationMs:f.effectiveOpenDurationMs,sampleCount:0,failureCount:0}}#N(f){let _=this.#R.get(f);if(!_||_.settled)return!1;if(_.settled=!0,_.kind==="noop")return!0;let E=_.entry;if(!E||E.detached||_.kind!=="probe"||_.generation!==E.generation||_.probeLeaseId!==E.probeLeaseId)return!1;return E.probeLeaseId=void 0,E.probeLeaseExpiresAt=void 0,E.lastTouchedAt=this.#_(),!0}#V(f,_,E){if(this.#H(f,E),f.samples.length>=this.#E.maxWindowEntries)f.samples.shift();f.samples.push({at:E,failure:_})}#H(f,_){let E=_-this.#E.windowMs,t=0;while(t<f.samples.length&&f.samples[t].at<E)t++;if(t>0)f.samples.splice(0,t)}#Y(f){if(!f.detached)this.#H(f,this.#_());return{state:f.state,sampleCount:f.samples.length,failureCount:i(f.samples),...f.nextProbeAt!==void 0?{nextProbeAt:f.nextProbeAt}:{},noop:!1,detached:f.detached}}#U(f){for(let[_,E]of this.#h)if(E.state==="closed"&&f-E.lastTouchedAt>this.#E.idleTtlMs)this.#s(_,E)}#O(){let f;for(let _ of this.#h.values())if(_.state==="closed"&&(!f||_.lastTouchedAt<f.lastTouchedAt))f=_;if(f)this.#s(f.key,f)}#s(f,_){_.detached=!0,this.#h.delete(f)}}var S_;function P_(){return S_??=new C_,S_}import{randomBytes as FE}from"node:crypto";var u_=16,D_=128,b_=32,H_=3,U_=16,Y_=96,N_=24,O_=12,s_=16,k_=4,V_=4,j_=67108864,B_=33554432,X_=12,z_=2,I_=2,J_=1,G_=15000,W_=30000;class _f extends Error{reason;scope;requestClass;resource;inFlight;limit;queued;maxWaitMs;code="PROVIDER_ADMISSION_BUSY";retryable;constructor(f,_,E,t,T,h,S,A){super(f==="queue_full"?`Provider request admission ${_} ${t} queue is full`:f==="wait_timeout"?`Provider request admission timed out waiting for ${_} capacity`:"Provider request admission scheduler is closed");this.reason=f;this.scope=_;this.requestClass=E;this.resource=t;this.inFlight=T;this.limit=h;this.queued=S;this.maxWaitMs=A;this.name="ProviderAdmissionError",this.retryable=f!=="closed"}}function Ef(f){return f instanceof _f||f!==null&&typeof f==="object"&&"code"in f&&f.code==="PROVIDER_ADMISSION_BUSY"}function j(f,_,E){if(f===void 0||!Number.isSafeInteger(f)||f<=0)return _;return Math.min(f,E)}function pE(f){let _=j(f.globalMaxInFlight,u_,u_),E=j(f.globalMaxPending,D_,D_),t=j(f.domainMaxPending,b_,b_),T=Math.min(j(f.ownerMaxInFlight,H_,H_),_),h=Math.min(j(f.ownerMaxPending,U_,U_),E),S=Math.min(j(f.nonForegroundGlobalMaxPending,Math.min(Y_,Math.max(1,Math.floor(E*3/4))),Y_),E),A=Math.min(j(f.nonForegroundDomainMaxPending,Math.min(N_,Math.max(1,Math.floor(t*3/4))),N_),t),x=Math.min(j(f.nonForegroundOwnerMaxPending,Math.min(O_,Math.max(1,Math.floor(h*3/4))),O_),h),C=Math.min(j(f.internalGlobalMaxPending,Math.min(s_,Math.max(1,Math.floor(E/8))),s_),S),c=Math.min(j(f.internalDomainMaxPending,Math.min(k_,Math.max(1,Math.floor(t/8))),k_),A),R=Math.min(j(f.internalOwnerMaxPending,Math.min(V_,Math.max(1,Math.floor(h/4))),V_),x),u=j(f.globalMaxPendingBytes,K,K),H=Math.min(j(f.domainMaxPendingBytes,j_,j_),u),X=Math.min(j(f.ownerMaxPendingBytes,B_,B_),u),W=Math.min(j(f.nonForegroundGlobalMaxInFlight,Math.min(X_,_),X_),_),$=Math.min(j(f.nonForegroundOwnerMaxInFlight,Math.min(z_,T),z_),T),Z=Math.min(j(f.internalGlobalMaxInFlight,Math.min(I_,_),I_),_),uf=j(f.internalDomainMaxInFlight,J_,J_),tf=j(f.agingMs,W_,W_);return{globalMaxInFlight:_,globalMaxPending:E,domainMaxPending:t,ownerMaxInFlight:T,ownerMaxPending:h,nonForegroundGlobalMaxPending:S,nonForegroundDomainMaxPending:A,nonForegroundOwnerMaxPending:x,internalGlobalMaxPending:C,internalDomainMaxPending:c,internalOwnerMaxPending:R,globalMaxPendingBytes:u,domainMaxPendingBytes:H,ownerMaxPendingBytes:X,nonForegroundGlobalMaxInFlight:W,nonForegroundOwnerMaxInFlight:$,internalGlobalMaxInFlight:Z,internalDomainMaxInFlight:uf,agingMs:tf}}function $_(f,_){if(!f.trim())throw Error(`${_} must not be blank`)}function aE(f){if($_(f.sessionId,"sessionId"),$_(f.ownerId,"ownerId"),!Number.isSafeInteger(f.scope.maxConcurrent)||f.scope.maxConcurrent<Af||f.scope.maxConcurrent>Sf)throw Error(`maxConcurrent must be between ${Af} and ${Sf}`);if(!Number.isSafeInteger(f.scope.maxPendingBytes)||f.scope.maxPendingBytes<=0||f.scope.maxPendingBytes>K)throw Error(`maxPendingBytes must be between 1 and ${K}`);if(!Number.isSafeInteger(f.pendingBytes)||f.pendingBytes<=0||f.pendingBytes>K+1)throw Error(`pendingBytes must be between 1 and ${K+1}`);if(!Number.isSafeInteger(f.maxWaitMs)||f.maxWaitMs<0||f.maxWaitMs>Cf)throw Error(`maxWaitMs must be 0-${Cf}`)}function If(f,_){if(_!==void 0)return _;if(f?.reason!==void 0)return f.reason;return new DOMException("Provider request admission cancelled","AbortError")}function mE(f,_){return cf(f,_,{providerRequestConcurrency:f.maxConcurrent,providerRequestPendingBytes:f.maxPendingBytes})}class Z_{#h;#R;#f;#_=[];#t=new Map;#E=new Map;#T=0;#x=0;#c=0;#C=0;#M=0;#P=0;#A=0;#u=0;#D=1;#b=0;#S=!1;constructor(f={}){this.#h=f.processSecret?new Uint8Array(f.processSecret):FE(32),this.#R=f.now??(()=>performance.now()),this.#f=pE(f)}admit(f){if(aE(f),this.#S)throw this.#X("closed",f,{scope:"global",resource:"stream",inFlight:this.#T,limit:this.#f.globalMaxInFlight},this.#_.length);if(f.signal?.aborted)throw If(f.signal);let _=mE(f.scope,this.#h),E=this.#t.get(_),t=this.#E.get(f.ownerId),T=E??this.#V(f.scope.maxConcurrent),h=t??this.#H();if(this.#_.length===0&&this.#Y(T,h,f.requestClass)){if(!E)this.#t.set(_,T);if(!t)this.#E.set(f.ownerId,h),this.#D++;let u=this.#O(_,f.ownerId,f.requestClass),H=this.#Q(f,0);return{ready:Promise.resolve(u),getSnapshot:()=>({...H}),cancel:()=>{H={...H}}}}let S=this.#k(f,T,h);if(S)throw this.#X("queue_full",f,S,this.#_.length);let A=this.#U(T,h,f.requestClass);if(f.maxWaitMs===0)throw this.#X("wait_timeout",f,A,this.#_.length);if(!E)this.#t.set(_,T);if(!t)this.#E.set(f.ownerId,h),this.#D++;let x,C,c=new Promise((u,H)=>{x=u,C=H});c.catch(()=>{return});let R={domainKey:_,sessionId:f.sessionId,ownerId:f.ownerId,requestClass:f.requestClass,maxWaitMs:f.maxWaitMs,pendingBytes:f.pendingBytes,enqueuedAt:this.#R(),signal:f.signal,resolve:x,reject:C,settled:!1,admitted:!1};if(f.signal)R.abortListener=()=>this.#z(R,If(f.signal)),f.signal.addEventListener("abort",R.abortListener,{once:!0});return R.timer=setTimeout(()=>this.#L(R),f.maxWaitMs),R.timer.unref?.(),this.#_.push(R),this.#N(T,h,R),this.#j(),{ready:c,getSnapshot:()=>this.#K(R),cancel:(u)=>this.#z(R,If(f.signal,u))}}close(){if(this.#S)return;this.#S=!0;for(let f of[...this.#_]){let _=this.#t.get(f.domainKey),E=this.#E.get(f.ownerId),t=_&&E?this.#U(_,E,f.requestClass):{scope:"global",resource:"stream",inFlight:this.#T,limit:this.#f.globalMaxInFlight};this.#B(f,new _f("closed",t.scope,f.requestClass,t.resource,t.inFlight,t.limit,this.#_.length,f.maxWaitMs))}}getStats(){return{inFlight:this.#T,queued:this.#_.length,pendingBytes:this.#P,nonForegroundInFlight:this.#x,internalInFlight:this.#c,nonForegroundQueued:this.#C,internalQueued:this.#M,nonForegroundPendingBytes:this.#A,internalPendingBytes:this.#u,domainCount:this.#t.size,ownerCount:this.#E.size,closed:this.#S}}#k(f,_,E){let t=(c,R,u)=>R>=u?{scope:c,resource:"pending_count",inFlight:R,limit:u}:void 0;if(f.requestClass==="internal"){let c=t("class",this.#M,this.#f.internalGlobalMaxPending)??t("class",E.internalQueued,this.#f.internalOwnerMaxPending)??t("class",_.internalQueued,this.#f.internalDomainMaxPending);if(c)return c}if(f.requestClass!=="foreground"){let c=t("class",this.#C,this.#f.nonForegroundGlobalMaxPending)??t("class",E.nonForegroundQueued,this.#f.nonForegroundOwnerMaxPending)??t("class",_.nonForegroundQueued,this.#f.nonForegroundDomainMaxPending);if(c)return c}let T=t("global",this.#_.length,this.#f.globalMaxPending)??t("owner",E.queued,this.#f.ownerMaxPending)??t("domain",_.queued,this.#f.domainMaxPending);if(T)return T;let h=Math.min(f.scope.maxPendingBytes,this.#f.globalMaxPendingBytes),S=Math.min(h,this.#f.domainMaxPendingBytes),A=Math.min(h,this.#f.ownerMaxPendingBytes),x=(c,R)=>f.pendingBytes>R-c,C=(c)=>{if(c==="owner")return{scope:c,resource:"pending_bytes",inFlight:E.inFlight,limit:this.#f.ownerMaxInFlight};if(c==="domain")return{scope:c,resource:"pending_bytes",inFlight:_.inFlight,limit:_.maxConcurrent};return{scope:c,resource:"pending_bytes",inFlight:this.#T,limit:this.#f.globalMaxInFlight}};if(f.requestClass==="internal"){let c=Math.max(1,Math.floor(h/8)),R=Math.max(1,Math.floor(S/4)),u=Math.max(1,Math.floor(A/4));if(x(this.#u,c)||x(E.internalPendingBytes,u)||x(_.internalPendingBytes,R))return C("class")}if(f.requestClass!=="foreground"){let c=Math.max(1,Math.floor(h*3/4)),R=Math.max(1,Math.floor(S*3/4)),u=Math.max(1,Math.floor(A/2));if(x(this.#A,c)||x(E.nonForegroundPendingBytes,u)||x(_.nonForegroundPendingBytes,R))return C("class")}if(x(this.#P,h))return C("global");if(x(E.pendingBytes,A))return C("owner");if(x(_.pendingBytes,S))return C("domain");return}#N(f,_,E){if(f.queued++,_.queued++,this.#P+=E.pendingBytes,f.pendingBytes+=E.pendingBytes,_.pendingBytes+=E.pendingBytes,E.requestClass!=="foreground")this.#C++,f.nonForegroundQueued++,_.nonForegroundQueued++,this.#A+=E.pendingBytes,f.nonForegroundPendingBytes+=E.pendingBytes,_.nonForegroundPendingBytes+=E.pendingBytes;if(E.requestClass==="internal")this.#M++,f.internalQueued++,_.internalQueued++,this.#u+=E.pendingBytes,f.internalPendingBytes+=E.pendingBytes,_.internalPendingBytes+=E.pendingBytes}#V(f){return{maxConcurrent:f,inFlight:0,nonForegroundInFlight:0,internalInFlight:0,queued:0,nonForegroundQueued:0,internalQueued:0,pendingBytes:0,nonForegroundPendingBytes:0,internalPendingBytes:0}}#H(){return{order:this.#D,inFlight:0,nonForegroundInFlight:0,internalInFlight:0,queued:0,nonForegroundQueued:0,internalQueued:0,pendingBytes:0,nonForegroundPendingBytes:0,internalPendingBytes:0}}#Y(f,_,E){if(this.#T>=this.#f.globalMaxInFlight)return!1;if(f.inFlight>=f.maxConcurrent)return!1;if(_.inFlight>=this.#f.ownerMaxInFlight)return!1;if(E==="foreground")return!0;if(this.#x>=this.#f.nonForegroundGlobalMaxInFlight)return!1;if(_.nonForegroundInFlight>=this.#f.nonForegroundOwnerMaxInFlight)return!1;let t=Math.max(1,f.maxConcurrent-1);if(f.nonForegroundInFlight>=t)return!1;if(E!=="internal")return!0;return this.#c<this.#f.internalGlobalMaxInFlight&&f.internalInFlight<this.#f.internalDomainMaxInFlight}#U(f,_,E){if(_.inFlight>=this.#f.ownerMaxInFlight)return{scope:"owner",resource:"stream",inFlight:_.inFlight,limit:this.#f.ownerMaxInFlight};if(E!=="foreground"&&_.nonForegroundInFlight>=this.#f.nonForegroundOwnerMaxInFlight)return{scope:"class",resource:"stream",inFlight:_.nonForegroundInFlight,limit:this.#f.nonForegroundOwnerMaxInFlight};if(f.inFlight>=f.maxConcurrent)return{scope:"domain",resource:"stream",inFlight:f.inFlight,limit:f.maxConcurrent};if(E!=="foreground"){let t=Math.max(1,f.maxConcurrent-1);if(f.nonForegroundInFlight>=t)return{scope:"class",resource:"stream",inFlight:f.nonForegroundInFlight,limit:t}}if(E==="internal"&&f.internalInFlight>=this.#f.internalDomainMaxInFlight)return{scope:"class",resource:"stream",inFlight:f.internalInFlight,limit:this.#f.internalDomainMaxInFlight};if(this.#T>=this.#f.globalMaxInFlight)return{scope:"global",resource:"stream",inFlight:this.#T,limit:this.#f.globalMaxInFlight};if(E!=="foreground"&&this.#x>=this.#f.nonForegroundGlobalMaxInFlight)return{scope:"class",resource:"stream",inFlight:this.#x,limit:this.#f.nonForegroundGlobalMaxInFlight};if(E==="internal"&&this.#c>=this.#f.internalGlobalMaxInFlight)return{scope:"class",resource:"stream",inFlight:this.#c,limit:this.#f.internalGlobalMaxInFlight};return{scope:"domain",resource:"stream",inFlight:f.inFlight,limit:f.maxConcurrent}}#O(f,_,E){let t=this.#t.get(f),T=this.#E.get(_);if(!t||!T)throw Error("Provider admission accounting state is unavailable");if(this.#T++,t.inFlight++,T.inFlight++,E!=="foreground")this.#x++,t.nonForegroundInFlight++,T.nonForegroundInFlight++;if(E==="internal")this.#c++,t.internalInFlight++,T.internalInFlight++;let h=!1;return{release:()=>{if(h)return;h=!0,this.#s(f,_,E)}}}#s(f,_,E){let t=this.#t.get(f),T=this.#E.get(_);if(this.#T=Math.max(0,this.#T-1),t)t.inFlight=Math.max(0,t.inFlight-1);if(T)T.inFlight=Math.max(0,T.inFlight-1);if(E!=="foreground"){if(this.#x=Math.max(0,this.#x-1),t)t.nonForegroundInFlight=Math.max(0,t.nonForegroundInFlight-1);if(T)T.nonForegroundInFlight=Math.max(0,T.nonForegroundInFlight-1)}if(E==="internal"){if(this.#c=Math.max(0,this.#c-1),t)t.internalInFlight=Math.max(0,t.internalInFlight-1);if(T)T.internalInFlight=Math.max(0,T.internalInFlight-1)}this.#J(f,_),this.#j()}#j(){if(this.#S)return;while(this.#_.length>0){let f=this.#R(),_=new Map;for(let[A,x]of this.#_.entries()){let C=this.#t.get(x.domainKey),c=this.#E.get(x.ownerId);if(C===void 0||c===void 0||!this.#Y(C,c,x.requestClass))continue;let R=this.#W(x,f),u=_.get(x.ownerId);if(!u||R<u.rank||R===u.rank&&A<u.index)_.set(x.ownerId,{pending:x,rank:R,index:A})}let E=[..._.values()].filter(({pending:A})=>{let x=this.#t.get(A.domainKey),C=this.#E.get(A.ownerId);return x!==void 0&&C!==void 0&&this.#Y(x,C,A.requestClass)}).map(({pending:A,rank:x})=>({pending:A,rank:x,order:this.#E.get(A.ownerId).order}));if(E.length===0)return;let t=Math.min(...E.map((A)=>A.rank)),T=E.filter((A)=>A.rank===t),S=T.filter((A)=>A.order>this.#b).sort((A,x)=>A.order-x.order)[0]??T.sort((A,x)=>A.order-x.order)[0];this.#$(S.pending,S.order)}}#W(f,_){let E=f.requestClass==="foreground"?0:f.requestClass==="background"?1:2,t=Math.floor(Math.max(0,_-f.enqueuedAt)/this.#f.agingMs);return Math.max(0,E-t)}#$(f,_){if(!this.#I(f,!1))return;f.settled=!0,f.admitted=!0,this.#b=_;let E=this.#O(f.domainKey,f.ownerId,f.requestClass);f.permit=E,f.resolve(E)}#L(f){let _=this.#t.get(f.domainKey),E=this.#E.get(f.ownerId),t=_&&E?this.#U(_,E,f.requestClass):{scope:"global",resource:"stream",inFlight:this.#T,limit:this.#f.globalMaxInFlight};this.#B(f,new _f("wait_timeout",t.scope,f.requestClass,t.resource,t.inFlight,t.limit,this.#_.length,f.maxWaitMs))}#z(f,_){this.#B(f,_)}#B(f,_){if(!this.#I(f))return;f.settled=!0,f.reject(_),this.#j()}#I(f,_=!0){if(f.settled||f.admitted)return!1;let E=this.#_.indexOf(f);if(E<0)return!1;this.#_.splice(E,1);let t=this.#t.get(f.domainKey),T=this.#E.get(f.ownerId);if(t&&T)this.#G(t,T,f);if(this.#Z(f),_)this.#J(f.domainKey,f.ownerId);return!0}#G(f,_,E){if(f.queued=Math.max(0,f.queued-1),_.queued=Math.max(0,_.queued-1),this.#P=Math.max(0,this.#P-E.pendingBytes),f.pendingBytes=Math.max(0,f.pendingBytes-E.pendingBytes),_.pendingBytes=Math.max(0,_.pendingBytes-E.pendingBytes),E.requestClass!=="foreground")this.#C=Math.max(0,this.#C-1),f.nonForegroundQueued=Math.max(0,f.nonForegroundQueued-1),_.nonForegroundQueued=Math.max(0,_.nonForegroundQueued-1),this.#A=Math.max(0,this.#A-E.pendingBytes),f.nonForegroundPendingBytes=Math.max(0,f.nonForegroundPendingBytes-E.pendingBytes),_.nonForegroundPendingBytes=Math.max(0,_.nonForegroundPendingBytes-E.pendingBytes);if(E.requestClass==="internal")this.#M=Math.max(0,this.#M-1),f.internalQueued=Math.max(0,f.internalQueued-1),_.internalQueued=Math.max(0,_.internalQueued-1),this.#u=Math.max(0,this.#u-E.pendingBytes),f.internalPendingBytes=Math.max(0,f.internalPendingBytes-E.pendingBytes),_.internalPendingBytes=Math.max(0,_.internalPendingBytes-E.pendingBytes)}#Z(f){if(f.timer)clearTimeout(f.timer);if(f.timer=void 0,f.signal&&f.abortListener)f.signal.removeEventListener("abort",f.abortListener);f.abortListener=void 0,f.signal=void 0}#J(f,_){let E=this.#t.get(f);if(E&&E.inFlight===0&&E.queued===0)this.#t.delete(f);let t=this.#E.get(_);if(t&&t.inFlight===0&&t.queued===0)this.#E.delete(_)}#K(f){let _=Math.max(0,Math.floor(this.#R()-f.enqueuedAt));if(f.admitted)return{state:"admitted",requestClass:f.requestClass,resource:"stream",scope:"domain",queuePosition:0,queueDepth:this.#_.length,inFlight:this.#T,limit:this.#f.globalMaxInFlight,waitMs:_,maxWaitMs:f.maxWaitMs};let E=this.#t.get(f.domainKey),t=this.#E.get(f.ownerId),T=E&&t?this.#U(E,t,f.requestClass):{scope:"global",resource:"stream",inFlight:this.#T,limit:this.#f.globalMaxInFlight};return{state:"queued",requestClass:f.requestClass,resource:T.resource,scope:T.scope,reason:"capacity",queuePosition:this.#o(f,T.scope),queueDepth:this.#_.length,inFlight:T.inFlight,limit:T.limit,waitMs:_,maxWaitMs:f.maxWaitMs}}#Q(f,_){return{state:"admitted",requestClass:f.requestClass,resource:"stream",scope:"domain",queuePosition:0,queueDepth:this.#_.length,inFlight:this.#T,limit:this.#f.globalMaxInFlight,waitMs:_,maxWaitMs:f.maxWaitMs}}#o(f,_){let E=this.#_.filter((t)=>{switch(_){case"owner":return t.ownerId===f.ownerId;case"domain":return t.domainKey===f.domainKey;case"class":return t.requestClass===f.requestClass;case"global":return!0}});return Math.max(1,E.indexOf(f)+1)}#X(f,_,E,t){return new _f(f,E.scope,_.requestClass,E.resource,E.inFlight,E.limit,t,_.maxWaitMs)}}var L_;function K_(){return L_??=new Z_,L_}function Q_(f,_={}){let E=_.maxBytes??134217728,t=_.maxNodes??1e5;if(!Number.isSafeInteger(E)||E<=0||E>=Number.MAX_SAFE_INTEGER)throw Error("maxBytes must be a positive safe integer");if(!Number.isSafeInteger(t)||t<=0)throw Error("maxNodes must be a positive safe integer");let T=new WeakSet,h=0,S=0,A=!1,x=(c)=>{if(A||c<=0)return;if(!Number.isSafeInteger(c)||c>E-h){h=E+1,A=!0;return}h+=c},C=(c)=>{if(A)return;if(S+=1,S>t){x(E+1);return}if(c===null){x(4);return}switch(typeof c){case"string":x(Buffer.byteLength(c,"utf8"));return;case"number":case"bigint":x(8);return;case"boolean":x(4);return;case"undefined":case"function":case"symbol":return;case"object":break}if(T.has(c))return;if(T.add(c),ArrayBuffer.isView(c)){x(32+c.byteLength);return}if(c instanceof ArrayBuffer){x(32+c.byteLength);return}if(c instanceof Date){x(40);return}if(c instanceof RegExp){x(32+Buffer.byteLength(c.source,"utf8"));return}if(c instanceof Map){x(32);for(let[R,u]of c)if(C(R),C(u),A)return;return}if(c instanceof Set){x(32);for(let R of c)if(C(R),A)return;return}if(c instanceof WeakMap||c instanceof WeakSet){x(32);return}if(Array.isArray(c)){x(16);for(let R of c)if(C(R),A)return;return}x(32);for(let R of Reflect.ownKeys(c)){if(typeof R!=="string")continue;let u=Object.getOwnPropertyDescriptor(c,R);if(!u?.enumerable||!("value"in u))continue;if(x(8+Buffer.byteLength(R,"utf8")),C(u.value),A)return}};return C(f),h}function o_(f){return Q_([f.messages,f.context,f.tools,f.requestOptions],{maxBytes:K})}var v_=new WeakSet;class w extends Error{budgetMs;elapsedMs;code="PROVIDER_RECOVERY_BUDGET_EXCEEDED";constructor(f,_){super(`Provider recovery budget exhausted after ${f}ms`);this.budgetMs=f;this.elapsedMs=_;this.name="ProviderRecoveryBudgetExceededError"}}class Lf extends Error{timeoutMs;code="PROVIDER_REQUEST_DEADLINE_EXCEEDED";constructor(f){super(`Provider request deadline exceeded after ${f}ms`);this.timeoutMs=f;this.name="ProviderRequestDeadlineExceededError"}}var wE=["gousagelimiterror","freeusagelimiterror","monthly usage limit reached","available balance","insufficient_quota","out of budget","quota exceeded","billing"],qE=["prompt_too_long","prompt is too long","maximum context length","context length exceeded","context_length_exceeded","request too large"],lE=["econnreset","econnrefused","enotfound","eai_again","etimedout","fetch failed","network error","connection error","connection refused","connection lost","other side closed","socket hang up","socket connection was closed","upstream connect","reset before headers","websocket closed","websocket error","http2 request did not get a response"];function F_(f){return(f instanceof Error?f.message:String(f)).toLowerCase()}function yE(f){let _=F_(f);return qE.some((E)=>_.includes(E))}function Gf(f){if(f!==null&&typeof f==="object")v_.add(f)}function _T(f){return f!==null&&typeof f==="object"&&v_.has(f)}function gE(f){return f!==null&&typeof f==="object"&&"code"in f?f.code:void 0}function rE(f){if(f===null||typeof f!=="object")return;let _=f;for(let E of["status","statusCode"]){let t=_[E];if(typeof t==="number"&&Number.isInteger(t))return t}return}function dE(f){let _=f.match(/^(?:error:\s*)?(\d{3})\b/),E=f.match(/\b(?:status(?:\s+code)?|http)[:\s]+(\d{3})\b/),t=Number(_?.[1]??E?.[1]);return Number.isInteger(t)?t:void 0}function q(f,_){let E=F_(f),t=gE(f);if(t==="STREAM_IDLE_TIMEOUT"||t==="PROVIDER_RECOVERY_BUDGET_EXCEEDED"||f instanceof Error&&f.name==="AbortError"||E.includes("request aborted")||E==="aborted")return{retryable:!1};if(wE.some((h)=>E.includes(h))||yE(f))return{retryable:!1};if(_?.shouldRetry==="false")return{retryable:!1,statusCode:_.statusCode};if(t==="PROVIDER_REQUEST_DEADLINE_EXCEEDED")return{retryable:!0,reason:"timeout"};let T=_?.statusCode??rE(f)??dE(E);if(_?.shouldRetry==="true")return{retryable:!0,reason:T===429?"rate_limit":T===408||T===409?"timeout":"server_error",statusCode:T};if(T===429)return{retryable:!0,reason:"rate_limit",statusCode:T};if(T===408||T===409)return{retryable:!0,reason:"timeout",statusCode:T};if(T!==void 0&&T>=500&&T<=599)return{retryable:!0,reason:"server_error",statusCode:T};if(t==="PROVIDER_STREAM_CLOSED"||E.includes("stream closed before completion")||E.includes("ended without")||E.includes("stream ended before"))return{retryable:!0,reason:"stream_closed",statusCode:T};if(lE.some((h)=>E.includes(h)))return{retryable:!0,reason:"transport",statusCode:T};if(E.includes("timeout")||E.includes("timed out")||E.includes("temporarily unavailable")||E.includes("upstream_error")||E.includes("overloaded")||E.includes("rate limit")||E.includes("too many requests")||E.includes("service unavailable")||E.includes("server error")||E.includes("internal error")||E.includes("please retry")||E.includes("try your request again"))return{retryable:!0,reason:E.includes("rate")||E.includes("too many")?"rate_limit":E.includes("timeout")||E.includes("timed out")?"timeout":"server_error",statusCode:T};return{retryable:!1,statusCode:T}}function Zf(f,_){if(!f)return;if(f.retryAfterMs!==void 0){let T=Number.parseFloat(f.retryAfterMs);if(Number.isFinite(T))return Math.max(0,T)}if(f.retryAfter===void 0)return;let E=Number.parseFloat(f.retryAfter);if(Number.isFinite(E))return Math.max(0,E*1000);let t=Date.parse(f.retryAfter);return Number.isFinite(t)?Math.max(0,t-_):void 0}function p_(f,_,E={}){let t=E.now??Date.now(),T=E.maxDelayMs??60000,h=Zf(_,t);if(h!==void 0)return Math.min(Math.ceil(h),T);let S=Math.max(0,f-1),A=E.maxExponentialDelayMs??8000,x=Math.min(500*2**S,A),C=Math.max(0,Math.min(1,E.random??Math.random())),c=x*(0.75+C*0.25);return Math.min(Math.round(c),T)}function w_(f,_){let E=f.onPayload;f.onPayload=async(t,T)=>{let h=E?await E(t,T):t;return _(h===void 0?t:h,T)}}function eE(f){if(!f.reasoningEnabled)return;return f.reasoningEffort??f.reasoningLevel??"high"}function Kf(f,_,E){if(!f.enablePromptCaching)return"none";if(E&&_.api==="openai-completions"&&!_.baseUrl.includes("api.openai.com"))return"long";return"short"}function nE(f){switch(f){case"minimal":return"MINIMAL";case"low":return"LOW";case"medium":return"MEDIUM";default:return"HIGH"}}function iE(f,_,E,t){let T=t?void 0:eE(E);if(!T){if(_.api==="anthropic-messages")f.thinkingEnabled=!1;if(_.api==="google-generative-ai"||_.api==="google-vertex")f.thinking={enabled:!1};return}switch(_.api){case"anthropic-messages":f.thinkingEnabled=!0,f.effort=T;break;case"google-generative-ai":case"google-vertex":f.thinking={enabled:!0,level:nE(T)};break;case"mistral-conversations":f.reasoningEffort="high";break;case"bedrock-converse-stream":case"pi-messages":f.reasoning=T;break;default:f.reasoningEffort=T}}function ft(f,_,E){if(!E)return;switch(_){case"anthropic-messages":case"bedrock-converse-stream":f.toolChoice={type:"tool",name:E};break;case"openai-completions":case"mistral-conversations":case"pi-messages":f.toolChoice={type:"function",function:{name:E}};break;case"openai-responses":case"openai-codex-responses":case"azure-openai-responses":f.toolChoice={type:"function",name:E};break;case"google-generative-ai":case"google-vertex":f.toolChoice="any";break}}function _t(f,_,E){let t=E.serviceTier;if(!t)return;if(_.api==="openai-responses"||_.api==="openai-codex-responses"||_.api==="azure-openai-responses"){f.serviceTier=t;return}if(_.api!=="openai-completions"&&!(_.api==="anthropic-messages"&&t==="fast"))return;w_(f,(T)=>{if(!T||typeof T!=="object"||Array.isArray(T))return T;return _.api==="anthropic-messages"?{...T,speed:"fast"}:{...T,service_tier:t}})}function Et(f,_,E){let t=E.responseVerbosity;if(!t)return;if(m_(_,t),_.api==="openai-codex-responses"){f.textVerbosity=t;return}w_(f,(T)=>{if(!T||typeof T!=="object"||Array.isArray(T))return T;if(_.api==="openai-completions")return{...T,verbosity:t};let h="text"in T&&T.text&&typeof T.text==="object"&&!Array.isArray(T.text)?T.text:{};return{...T,text:{...h,verbosity:t}}})}function q_(f,_,E,t,T=!1){let h={apiKey:f.apiKey,headers:f.customHeaders,signal:E,temperature:t?.temperature??f.temperature??0,maxTokens:t?.maxOutputTokens??f.maxOutputTokens,timeoutMs:f.timeout,maxRetries:0,cacheRetention:Kf(f,_,t?.providerSessionId),sessionId:t?.providerSessionId};if(iE(h,_,f,T),ft(h,_.api,t?.toolChoice?.toolName),_t(h,_,f),Et(h,_,f),_.api==="azure-openai-responses")h.azureBaseUrl=f.baseUrl,h.azureApiVersion=f.apiVersion,h.azureDeploymentName=_.id;return h}function a_(f,_){let E=_.get("x-should-retry");return{statusCode:f,..._.get("retry-after")!==null?{retryAfter:_.get("retry-after")??void 0}:{},..._.get("retry-after-ms")!==null?{retryAfterMs:_.get("retry-after-ms")??void 0}:{},...E==="true"||E==="false"?{shouldRetry:E}:{}}}var tt=new Set(["anthropic-messages","openai-completions","openai-responses","openai-codex-responses","azure-openai-responses","pi-messages"]);function l_(f,_,E){let t=f.onResponse;if(f.onResponse=async(h,S)=>{let A=new Headers(h.headers);E(a_(h.status,A)),await t?.(h,S)},!tt.has(_.api)||typeof globalThis.fetch!=="function")return;let T=typeof f.fetch==="function"?f.fetch:globalThis.fetch.bind(globalThis);f.fetch=async(h,S)=>{let A=await T(h,S);return E(a_(A.status,A.headers)),A}}function y_(f){return{promptTokens:f.input+f.cacheRead+f.cacheWrite,completionTokens:f.output,totalTokens:f.totalTokens,costUsd:f.cost.total,...f.reasoning!==void 0?{reasoningTokens:f.reasoning}:{},...f.cacheWrite>0?{cacheCreationInputTokens:f.cacheWrite}:{},...f.cacheRead>0?{cacheReadInputTokens:f.cacheRead}:{}}}var Pf=300000,Tt=30000;class g_ extends Error{timeoutMs;code="STREAM_IDLE_TIMEOUT";constructor(f){super(`Provider stream idle timeout after ${f}ms without an event`);this.timeoutMs=f;this.name="StreamIdleTimeoutError"}}class r_ extends Error{code="PROVIDER_STREAM_CLOSED";constructor(){super("Provider stream closed before completion");this.name="ProviderStreamClosedError"}}function Qf(f){return f.reason instanceof Error?f.reason:new DOMException("Aborted","AbortError")}function ht(f){return f.idleTimeoutMs&&f.idleTimeoutMs>0?f.idleTimeoutMs:Pf}function xt(f,_){if(_===0)return;let E=_!==void 0&&_>0?_:Tt;return Math.max(1,Math.min(E,Math.floor(f/2)))}function ct(f,_,E){if(E?.aborted)return Promise.reject(Qf(E));return new Promise((t,T)=>{let h=!1,S=()=>{clearTimeout(c),E?.removeEventListener("abort",C)},A=(R)=>{if(h)return;h=!0,S(),t(R)},x=(R)=>{if(h)return;h=!0,S(),T(R instanceof Error?R:Error(String(R)))},C=()=>{if(E)x(Qf(E))},c=setTimeout(()=>A({kind:"timer"}),Math.max(0,_));if(E?.addEventListener("abort",C,{once:!0}),E?.aborted){C();return}f.then((R)=>A({kind:"next",result:R}),x)})}async function*Rt(f,_,E){let t=ht(_),T=xt(t,_.stallWarningMs);if(_.signal?.aborted)throw Qf(_.signal);let h=Date.now(),S=Promise.resolve().then(()=>f.next()),A;for(;;){let C=await ct(S,(A?t:T??t)-(Date.now()-h),_.signal);if(C.kind==="next"){if(A)yield{...A,phase:"recovered",durationMs:Math.max(A.durationMs,Date.now()-h)};return C.result}if(!A&&T!==void 0){E.stallCount++,A={phase:"detected",stallCount:E.stallCount,durationMs:T,warningAfterMs:T,timeoutMs:t,outputStarted:E.outputStarted},yield A;continue}let c=new g_(t);throw _.abort?.(c),c}}async function*d_(f,_,E,t,T={}){let S=f.stream(_,E,t)[Symbol.asyncIterator](),A=0,x=!1,C={stallCount:0,outputStarted:!1};try{while(!0){let c=Rt(S,T,C),R=await c.next();while(!R.done)yield{providerStall:R.value},R=await c.next();let u=R.value;if(u.done)throw new r_;let H=u.value;switch(H.type){case"text_delta":C.outputStarted=!0,yield{content:H.delta};break;case"thinking_delta":C.outputStarted=!0,yield{reasoningContent:H.delta};break;case"toolcall_end":C.outputStarted=!0,yield{toolCalls:[{index:A++,id:H.toolCall.id,type:"function",function:{name:H.toolCall.name,arguments:JSON.stringify(H.toolCall.arguments)}}]};break;case"done":x=!0,yield{finishReason:H.reason,usage:y_(H.message.usage)};return;case"error":throw Error(H.error.errorMessage??`Request ${H.reason==="aborted"?"aborted":"failed"}`)}}}finally{if(!x)Promise.resolve(S.return?.()).catch(()=>{return})}}var of=a("Chat"),Mt=1;function At(f){return Boolean(f&&f.role==="user"&&Array.isArray(f.content)&&f.content.some((_)=>_.type==="image_url"))}function St(f){let E=f.findLast((t)=>{let T=t.metadata;return T!==null&&typeof T==="object"&&!Array.isArray(T)&&T.isCompactSummary===!0})?.metadata;return E!==null&&typeof E==="object"&&!Array.isArray(E)&&typeof E.parentId==="string"?E.parentId:""}function Ct(f,_){let E=q(f,_);if(!E.retryable||!E.reason)return;let t=E.statusCode;switch(E.reason){case"rate_limit":if(t!==429)return;break;case"server_error":if(t===void 0||t<500||t>599)return;break;case"transport":case"stream_closed":break;case"timeout":return}let T=Zf(_,Date.now());return{reason:E.reason,...t!==void 0?{statusCode:t}:{},...T!==void 0?{retryAfterMs:T}:{}}}function Pt(f){return f!==null&&typeof f==="object"&&"code"in f&&f.code==="STREAM_IDLE_TIMEOUT"}class pf{config;models;model;promptCacheBreakMonitor=new Vf;admissionFallbackOwnerId=`pi-service-${process.pid}-${Mt++}`;constructor(f){let _=kf(f);this.config={...f,maxContextTokens:_.model.contextWindow,maxOutputTokens:f.maxOutputTokens??_.model.maxTokens},this.models=_.models,this.model=_.model,of.debug("[PiAIChatService] Initialized",{provider:this.model.provider,model:this.model.id,api:this.model.api})}async chat(f,_,E,t){let T="",h="",S=[],A,x;for await(let C of this.streamChat(f,_,E,t)){T+=C.content??"",h+=C.reasoningContent??"";for(let c of C.toolCalls??[])if(c.id&&c.type==="function"&&c.function?.name)S.push(c);A=C.usage??A,x=C.finishReason??x}return{content:T,...h?{reasoningContent:h}:{},...S.length>0?{toolCalls:S}:{},usage:A,finishReason:x}}async*streamChat(f,_,E,t){let T=t?.toolChoice?.toolName;if(T&&!_?.some((M)=>M.name===T))throw Error(`Required tool is unavailable: ${T}`);let h=E_(f);if(h.some((M)=>At(M))&&!this.model.input.includes("image"))throw Error(`${this.model.name} does not support image input`);let S=Boolean(T)||t_(h),A=await __(h,this.model,_,E,T),x=(M,P)=>{let k=t?.providerSessionId;if(!k||!M.usage)return M;if(!this.config.enablePromptCaching)return this.promptCacheBreakMonitor.clear(k),M;let D=Kf(this.config,P,k),N=this.promptCacheBreakMonitor.observe({sessionId:k,modelIdentity:`${P.provider}\x00${P.api}\x00${P.id}`,context:A,retention:D,contextEpoch:St(h),policy:{baseUrl:P.baseUrl??this.config.baseUrl??"",retention:D,requiredTool:T??"",reasoningEnabled:this.config.reasoningEnabled??!1,reasoningEffort:this.config.reasoningEffort??this.config.reasoningLevel??"",serviceTier:this.config.serviceTier??"",responseVerbosity:this.config.responseVerbosity??"",temperature:t?.temperature??this.config.temperature??0,maxOutputTokens:t?.maxOutputTokens??this.config.maxOutputTokens??0,customHeaders:this.config.customHeaders??{}},usage:M.usage});if(!N)return M;return of.warn("[PiAIChatService] Prompt cache break detected",{reason:N.reason,previousCacheReadTokens:N.previousCacheReadTokens,cacheReadTokens:N.cacheReadTokens,tokenDrop:N.tokenDrop,callNumber:N.callNumber}),{...M,usage:{...M.usage,promptCacheBreak:N}}},C=o_({messages:h,context:A,tools:_,requestOptions:t}),c=t?.providerRecovery;if(c&&!n_(c.budgetMs))throw Error("Invalid bounded foreground Provider recovery budget");let R=c?.mode==="bounded_foreground"&&c.budgetMs>0?{budgetMs:c.budgetMs,startedAt:void 0}:void 0,u=R?"bounded_foreground":"standard",H=this.config.maxRetries??2,X=this.config.maxRetries??(R?e_:2),W=R!==void 0&&this.config.maxRetries===void 0,$=0,Z,uf=this.config.providerCircuitRegistry??P_(),tf=this.config.providerCircuitBreakerOpenMs??jf,i_=Math.max(Mf,Math.min(this.config.streamIdleTimeout??Pf,Xf)),fE=this.config.providerRequestAdmissionScheduler??K_(),_E=this.config.providerRequestConcurrency??Jf,af=this.config.providerRequestAdmissionMs??Wf,EE=this.config.providerRequestPendingBytes??$f,Df=t?.providerAdmission??{sessionId:this.admissionFallbackOwnerId,ownerId:this.admissionFallbackOwnerId,requestClass:"internal"},tE=(M)=>uf.get({provider:M.provider,api:M.api,baseUrl:M.baseUrl??this.config.baseUrl??"",model:M.id,serviceTier:this.config.serviceTier,apiVersion:this.config.apiVersion,apiKey:this.config.apiKey,customHeaders:this.config.customHeaders,openDurationMs:tf,probeLeaseMs:i_}),TE=(M)=>({provider:M.provider,api:M.api,baseUrl:M.baseUrl??this.config.baseUrl??"",model:M.id,serviceTier:this.config.serviceTier,apiVersion:this.config.apiVersion,apiKey:this.config.apiKey,customHeaders:this.config.customHeaders,maxConcurrent:_E,maxPendingBytes:EE}),s=(M=Date.now())=>{if(!R)return;let P=R.startedAt===void 0?0:Math.min(R.budgetMs,Math.max(0,M-R.startedAt));return{recoveryBudgetMs:R.budgetMs,recoveryElapsedMs:P,recoveryRemainingMs:Math.max(0,R.budgetMs-P)}},Q=()=>({mode:u,...s()??{}}),mf=()=>{if(R&&R.startedAt===void 0)R.startedAt=Date.now()},o=()=>{let M=s();return new w(R?.budgetMs??0,M?.recoveryElapsedMs??0)},l=()=>!W||$<X+1,bf=(M,P)=>{let{state:k,...D}=P;return{phase:M,...D,...s()?{recoveryRemainingMs:s()?.recoveryRemainingMs}:{}}},wf=(M)=>({phase:"rejected",requestClass:M.requestClass,resource:M.resource,scope:M.scope,reason:M.reason,queuePosition:0,queueDepth:Math.max(0,M.queued),inFlight:Math.max(0,M.inFlight),limit:Math.max(0,M.limit),waitMs:M.reason==="wait_timeout"?M.maxWaitMs:0,maxWaitMs:M.maxWaitMs,...s()?{recoveryRemainingMs:s()?.recoveryRemainingMs}:{}}),hE=async function*(M){let P=s()?.recoveryRemainingMs,k=P!==void 0&&R?.startedAt!==void 0?Math.min(af,P):af,D;try{D=fE.admit({scope:TE(M),sessionId:Df.sessionId,ownerId:Df.ownerId,requestClass:Df.requestClass,maxWaitMs:k,pendingBytes:C,signal:E})}catch(U){if(Ef(U)){if(U.reason==="wait_timeout"&&R?.startedAt!==void 0&&(s()?.recoveryRemainingMs??0)<=0)throw o();yield{providerAdmission:wf(U)}}throw U}let N=D.getSnapshot();if(N.state==="admitted")return await D.ready;yield{providerAdmission:bf("queued",N)};let G=D.ready.then((U)=>({kind:"ready",permit:U}),(U)=>({kind:"error",error:U}));while(!0){let U=D.getSnapshot(),Y=Math.max(1,Math.min(G_,Math.max(1,k-U.waitMs))),B,V=new Promise((v)=>{B=setTimeout(()=>v({kind:"heartbeat"}),Y),B.unref?.()}),I=await Promise.race([G,V]);if(B)clearTimeout(B);if(I.kind==="heartbeat"){yield{providerAdmission:bf("queued",D.getSnapshot())};continue}if(I.kind==="error"){if(Ef(I.error)){if(I.error.reason==="wait_timeout"&&R?.startedAt!==void 0&&(s()?.recoveryRemainingMs??0)<=0)throw o();yield{providerAdmission:wf(I.error)}}throw I.error}return yield{providerAdmission:bf("admitted",D.getSnapshot())},I.permit}},xE=(M)=>{if(!l())throw o();if(W)$++;Z=void 0;let P=new AbortController,k=E?nf(E,P.signal):P.signal,D=typeof this.config.timeout==="number"&&Number.isFinite(this.config.timeout)&&this.config.timeout>0?Math.max(1,Math.floor(this.config.timeout)):void 0,N;if(R?.startedAt!==void 0){let Y=s()?.recoveryRemainingMs??0;if(Y<=0)throw o();N={remainingMs:Y,error:new w(R.budgetMs,R.budgetMs)}}let G=q_(this.config,M,k,t,S);l_(G,M,(Y)=>{Z=Y});let U=d_(this.models,M,A,G,{idleTimeoutMs:this.config.streamIdleTimeout??Pf,signal:k,abort:(Y)=>P.abort(Y)});return async function*(){let Y,B;try{if(D!==void 0&&(N===void 0||D<N.remainingMs)){let V=new Lf(D);Y=setTimeout(()=>P.abort(V),D),Y.unref?.()}if(N){let V=N;B=setTimeout(()=>P.abort(V.error),V.remainingMs),B.unref?.()}yield*U}finally{if(Y)clearTimeout(Y);if(B)clearTimeout(B)}}()},qf=this,p=(M)=>({phase:M.phase,reason:M.reason,...M.statusCode!==void 0?{statusCode:M.statusCode}:{},...M.retryAfterMs!==void 0?{retryAfterMs:M.retryAfterMs}:{},...M.nextProbeAt!==void 0?{nextProbeAt:M.nextProbeAt}:{},openDurationMs:M.openDurationMs,sampleCount:M.sampleCount,failureCount:M.failureCount,...s()?{recoveryRemainingMs:s()?.recoveryRemainingMs}:{}}),lf=(M,P)=>({phase:M,reason:P.reason,...P.statusCode!==void 0?{statusCode:P.statusCode}:{},retryAfterMs:P.retryAfterMs,...P.nextProbeAt!==void 0?{nextProbeAt:P.nextProbeAt}:{},openDurationMs:P.openDurationMs,sampleCount:P.sampleCount,failureCount:P.failureCount,...s()?{recoveryRemainingMs:s()?.recoveryRemainingMs}:{}}),cE=(M)=>({phase:"probe",reason:M.reason??"server_error",...M.statusCode!==void 0?{statusCode:M.statusCode}:{},openDurationMs:M.openDurationMs??tf,...M.sampleCount!==void 0?{sampleCount:M.sampleCount}:{},...M.failureCount!==void 0?{failureCount:M.failureCount}:{},...s()?{recoveryRemainingMs:s()?.recoveryRemainingMs}:{}}),Hf=(M,P,k)=>({providerRetry:{phase:"exhausted",attempt:M,maxRetries:X,reason:P,...k!==void 0?{statusCode:k}:{},...Q(),exhaustedBy:"recovery_budget"}}),yf=async function*(M,P,k,D){let N,G=!1,U,Y,B=tE(M);for(let V=0;V<=k;V++){if(!l())break;let I,v;while(!I){let b=B.preflight();while(!b.eligible){if(U=b.reason,Y=b.statusCode,!R||!D){let L=lf("rejected",b);throw yield{providerCircuit:L},new ff(L)}mf();let O=s()?.recoveryRemainingMs??0;if(O<=0){let L=o();throw yield Hf(W?Math.max(0,$-1):V,b.reason,b.statusCode),L}yield{providerCircuit:lf("waiting",b)};let F=Math.min(Math.max(1,b.retryAfterMs),vf,O);if(await d(F,E,{throwOnAbort:!0}),(s()?.recoveryRemainingMs??0)<=0){let L=o();throw yield Hf(W?Math.max(0,$-1):V,b.reason,b.statusCode),L}b=B.preflight()}try{v=yield*hE(M)}catch(J){if(J instanceof w)yield Hf(W?Math.max(0,$-1):V,U??"timeout",Y);throw J}let z=B.check();if(z.allowed)I=z;else v.release(),v=void 0}let y=I.token;if(I.probe)yield{providerCircuit:cE(I)};try{let b=!1,z=!1;for await(let J of xE(M)){if(J.providerStall){yield J;continue}let O=W?$-1:V;if(O>0&&U&&!b)b=!0,yield{providerRetry:{phase:"recovered",attempt:O,maxRetries:X,reason:U,...Y!==void 0?{statusCode:Y}:{},...Q()}};if(!z){z=!0;let F=B.recordSuccess(y);if(F)yield{providerCircuit:p(F)}}G=!0,P(),yield x(J,M)}if(!z){let J=B.recordSuccess(y);if(J)yield{providerCircuit:p(J)}}return}catch(b){if(v?.release(),N=b,qf.logIdleTimeout(b,G,M),await qf.handleAbort(E),b instanceof w){if(G)throw Gf(b),b;throw yield{providerRetry:{phase:"exhausted",attempt:W?Math.max(0,$-1):V,maxRetries:X,reason:U??"timeout",...Y!==void 0?{statusCode:Y}:{},...Q(),exhaustedBy:"recovery_budget"}},b}let z=q(b,Z);if(G)throw Gf(b),b;let J=Ct(b,Z),O=J?B.recordFailure(y,J):Z&&!Pt(b)?B.recordNeutral(y):void 0;if(O)yield{providerCircuit:p(O)};if(!z.retryable||!z.reason){if(V>0&&U)yield{providerRetry:{phase:"exhausted",attempt:W?Math.max(0,$-1):V,maxRetries:X,reason:U,...Y!==void 0?{statusCode:Y}:{},...Q()}};throw b}U=z.reason,Y=z.statusCode;let F=V<k&&l();if(O&&O.phase!=="closed"&&F&&(!R||!D)){let L={...p(O),phase:"rejected"};throw yield{providerCircuit:L},new ff(L)}if(F){mf();let L=W?$:V+1,ME=p_(L,Z,R?{maxDelayMs:Ff,maxExponentialDelayMs:Ff}:void 0),rf=O&&O.phase!=="closed"?O.retryAfterMs??0:0;if(R&&rf>0&&O)yield{providerCircuit:{...p(O),phase:"waiting"}};let AE=s(),Yf=Math.max(ME,rf),g=R?Math.min(Yf,AE?.recoveryRemainingMs??Yf):Yf,hf={attempt:L,maxRetries:X,reason:z.reason,...z.statusCode!==void 0?{statusCode:z.statusCode}:{}};if(yield{providerRetry:{phase:"scheduled",...hf,delayMs:g,nextRetryAt:Date.now()+g,...Q()}},R){let r=g;while(r>0){let df=Math.min(r,vf);if(await d(df,E,{throwOnAbort:!0}),r-=df,(s()?.recoveryRemainingMs??0)<=0){let xf=o();throw yield{providerRetry:{phase:"exhausted",...hf,...Q(),exhaustedBy:"recovery_budget"}},xf}if(r>0){if(O&&O.phase!=="closed"&&O.nextProbeAt!==void 0){let xf=Math.max(0,O.nextProbeAt-Date.now());if(xf>0)yield{providerCircuit:{...p(O),phase:"waiting",retryAfterMs:xf}}}yield{providerRetry:{phase:"waiting",...hf,delayMs:g,nextRetryAt:Date.now()+r,...Q()}}}}}else await d(g,E,{throwOnAbort:!0});yield{providerRetry:{phase:"attempt",...hf,...Q()}}}else yield{providerRetry:{phase:"exhausted",attempt:W?Math.max(0,$-1):V,maxRetries:X,reason:z.reason,...z.statusCode!==void 0?{statusCode:z.statusCode}:{},...Q(),...R&&(D||!l())?{exhaustedBy:"attempt_limit"}:{}}}}finally{B.abandon(y),v?.release()}}throw N},Uf,gf=!1,Tf=this.config.fallbackModels??[],RE=R&&Tf.length>0?Math.min(H,X):X;try{for await(let M of yf(this.model,()=>{gf=!0},RE,Tf.length===0))yield M;return}catch(M){if(Uf=M,gf||!Ef(M)&&!zf(M)&&!q(M,Z).retryable)throw M}for(let[M,P]of Tf.entries()){if(!l())break;yield{modelFallback:!0};let k=!1;try{let D=x_(this.config,P),N=M===Tf.length-1,G=R&&!N?Math.min(H,X):X;for await(let U of yf(D,()=>{k=!0},G,N))yield U;return}catch(D){if(Uf=D,k||!Ef(D)&&!zf(D)&&!q(D,Z).retryable)throw D}}throw Uf}async handleAbort(f){if(f?.aborted)await d(0,f,{throwOnAbort:!0})}logIdleTimeout(f,_,E){if(f===null||typeof f!=="object"||!("code"in f)||f.code!=="STREAM_IDLE_TIMEOUT"||!("timeoutMs"in f)||typeof f.timeoutMs!=="number")return;of.warn("[PiAIChatService] Provider stream idle timeout",{provider:E.provider,model:E.id,timeoutMs:f.timeoutMs,replayBoundaryCrossed:_})}getConfig(){return{...this.config}}updateConfig(f){let _={...this.config,...f},E=kf(_);this.config={..._,maxContextTokens:E.model.contextWindow,maxOutputTokens:_.maxOutputTokens??E.model.maxTokens},this.models=E.models,this.model=E.model}}var ut=a("Service");async function jT(f){let _=f;if(_.provider){let E=ef(_.provider);if(Object.keys(E).length>0)_={..._,customHeaders:{...E,..._.customHeaders}},ut.debug(`Injected ${_.provider} specific headers:`,Object.keys(E))}return Dt(_)}function Dt(f){return new pf(f)}
|
|
5
|
-
export{Ut as Yd,Ot as Zd,nf as _d,Ef as $d,Q_ as ae,yE as be,_T as ce,pf as de,jT as ee};
|
package/dist/chunk-53xbkvk1.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{od as o}from"./chunk-s7jsadnc.js";import{Hd as n}from"./chunk-5kz804w9.js";import{Hf as Y,If as x,Kf as I,Mf as N,Nf as j,Pf as F,Tf as R,Uf as E,Vf as _,Wf as f,Yf as C,Zf as S,bg as m,gg as d,hg as l}from"./chunk-nacssmem.js";import{ig as V}from"./chunk-h0ft81a3.js";import{kg as X,mg as k,pg as Z}from"./chunk-v0rsz1rt.js";import{ug as Q}from"./chunk-k0pa8874.js";import{Fg as h,Gg as A,Jg as P,Kg as T,Mg as U,Ng as L,Pg as M,Qg as O,yg as y,zg as D}from"./chunk-6pyktfa4.js";import{Xg as u}from"./chunk-98n2rxmq.js";import{promises as s}from"node:fs";import i from"node:path";var t=["systemPrompt","appendSystemPrompt","initialMessage","resumeSessionId","forkSession","allowedTools","disallowedTools","mcpConfigPaths","strictMcpConfig","model","addDirs","outputFormat","inputFormat","print","includePartialMessages","replayUserMessages","agentsConfig","settingSources"],e=new Set([...Object.keys(m),...t]),W=k.Number({exclusiveMinimum:0}),z=k.String({minLength:1}),$=k.Array(k.String()),v=k.Object({currentModelId:k.Optional(k.String()),modelProviders:k.Optional(k.Record(z,k.Object({name:z,baseUrl:z,wireApi:Z(["openai-completions","anthropic-messages"]),apiKeyEnv:k.Optional(z)}))),models:k.Optional(k.Array(k.Object({id:z,displayName:k.Optional(z),provider:z,model:z,overrides:k.Optional(k.Object({baseUrl:k.Optional(k.String()),temperature:k.Optional(k.Number()),maxOutputTokens:k.Optional(W),timeout:k.Optional(W),streamIdleTimeout:k.Optional(k.Number({minimum:1000})),apiVersion:k.Optional(k.String()),customHeaders:k.Optional(k.Record(k.String(),k.String())),maxRetries:k.Optional(k.Integer({minimum:0})),enablePromptCaching:k.Optional(k.Boolean())})),fallbackModels:k.Optional(k.Array(k.Object({provider:z,model:z})))}))),temperature:k.Optional(k.Number()),maxOutputTokens:k.Optional(W),stream:k.Optional(k.Boolean()),topP:k.Optional(k.Number()),topK:k.Optional(k.Number()),timeout:k.Optional(W),bashForegroundHandoffMs:k.Optional(k.Union([k.Literal(0),k.Integer({minimum:Y,maximum:x})])),providerForegroundRecoveryMs:k.Optional(k.Union([k.Literal(0),k.Integer({minimum:y,maximum:D})])),providerCircuitBreakerOpenMs:k.Optional(k.Union([k.Literal(0),k.Integer({minimum:h,maximum:A})])),providerRequestConcurrency:k.Optional(k.Integer({minimum:P,maximum:T})),providerRequestAdmissionMs:k.Optional(k.Union([k.Literal(0),k.Integer({minimum:U,maximum:L})])),providerRequestPendingBytes:k.Optional(k.Integer({minimum:M,maximum:O})),codeTheme:k.Optional(k.String()),uiTheme:k.Optional(Z(["light","dark","system"])),language:k.Optional(k.String()),fontSize:k.Optional(W),autoSaveSessions:k.Optional(k.Boolean()),notifyBuild:k.Optional(k.Boolean()),notifyErrors:k.Optional(k.Boolean()),notifySounds:k.Optional(k.Boolean()),privacyTelemetry:k.Optional(k.Boolean()),privacyCrash:k.Optional(k.Boolean()),debug:k.Optional(k.Union([k.Boolean(),k.String()])),mcpEnabled:k.Optional(k.Boolean()),mcpServers:k.Optional(k.Record(k.String(),k.Record(k.String(),k.Unknown()))),lspServers:k.Optional(k.Record(z,k.Object({command:z,args:k.Optional(k.Array(k.String())),extensionToLanguage:k.Record(z,z),env:k.Optional(k.Record(k.String(),k.String())),initializationOptions:k.Optional(k.Unknown()),settings:k.Optional(k.Unknown()),enabled:k.Optional(k.Boolean()),priority:k.Optional(k.Integer()),startupTimeout:k.Optional(k.Integer({minimum:100})),shutdownTimeout:k.Optional(k.Integer({minimum:100})),requestTimeout:k.Optional(k.Integer({minimum:100})),diagnosticWaitTimeout:k.Optional(k.Integer({minimum:0})),maxRestarts:k.Optional(k.Integer({minimum:0,maximum:10}))}))),permissionMode:k.Optional(k.Enum(V)),maxTurns:k.Optional(k.Integer({minimum:-1})),maxConcurrentTasks:k.Optional(k.Integer({minimum:R,maximum:E})),maxQueuedTasks:k.Optional(k.Integer({minimum:_,maximum:f})),maxQueuedTaskBytes:k.Optional(k.Integer({minimum:C,maximum:S})),maxResidentSessionRuntimes:k.Optional(k.Integer({minimum:I,maximum:N})),sessionRuntimeIdleMs:k.Optional(k.Integer({minimum:j,maximum:F})),systemPrompt:k.Optional(k.String()),appendSystemPrompt:k.Optional(k.String()),initialMessage:k.Optional(k.String()),resumeSessionId:k.Optional(k.String()),forkSession:k.Optional(k.Boolean()),allowedTools:k.Optional(k.Array(z)),disallowedTools:k.Optional(k.Array(z)),mcpConfigPaths:k.Optional(k.Array(z)),strictMcpConfig:k.Optional(k.Boolean()),model:k.Optional(z),addDirs:k.Optional(k.Array(z)),outputFormat:k.Optional(Z(["text","json","stream-json","jsonl"])),inputFormat:k.Optional(Z(["text","stream-json"])),print:k.Optional(k.Boolean()),includePartialMessages:k.Optional(k.Boolean()),replayUserMessages:k.Optional(k.Boolean()),agentsConfig:k.Optional(k.String()),settingSources:k.Optional(k.String()),permissions:k.Optional(k.Object({allow:k.Optional($),ask:k.Optional($),deny:k.Optional($)})),env:k.Optional(k.Record(k.String(),k.String())),hooks:k.Optional(k.Record(k.String(),k.Unknown())),enabledPlugins:k.Optional(k.Record(z,k.Boolean())),pluginSourcePolicy:k.Optional(k.Object({restrictToAllowedSources:k.Optional(k.Boolean()),requireGitCommitSha:k.Optional(k.Boolean()),allowedGitHosts:k.Optional(k.Array(z)),allowedMarketplaces:k.Optional(k.Array(z)),allowedLocalRoots:k.Optional(k.Array(z))})),disableAllHooks:k.Optional(k.Boolean())}),a=[["systemPrompt","systemPrompt"],["appendSystemPrompt","appendSystemPrompt"],["initialMessage","initialMessage"],["resumeSessionId","sessionId"],["forkSession","forkSession"],["allowedTools","allowedTools"],["disallowedTools","disallowedTools"],["mcpConfigPaths","mcpConfig"],["strictMcpConfig","strictMcpConfig"],["model","model"],["addDirs","addDir"],["outputFormat","outputFormat"],["inputFormat","inputFormat"],["print","print"],["includePartialMessages","includePartialMessages"],["replayUserMessages","replayUserMessages"],["agentsConfig","agents"],["settingSources","settingSources"],["permissionMode","permissionMode"],["maxTurns","maxTurns"],["maxConcurrentTasks","maxConcurrentTasks"],["maxQueuedTasks","maxQueuedTasks"],["maxQueuedTaskBytes","maxQueuedTaskBytes"],["maxResidentSessionRuntimes","maxResidentSessionRuntimes"],["sessionRuntimeIdleMs","sessionRuntimeIdleMs"]];function G(q,B){let w;try{w=JSON.parse(q)}catch(H){let K=H instanceof Error?`: ${H.message}`:"";throw Error(`Invalid JSON provided to --settings (${B})${K}`)}if(!w||typeof w!=="object"||Array.isArray(w))throw Error("--settings must contain a JSON object");for(let H of Object.keys(w))if(!e.has(H))throw Error(`Unknown --settings field: ${H}`);let J=X(v,w);if(!J.success){let H=J.error.issues.map((K)=>`${K.path.join(".")||"settings"}: ${K.message}`).join("; ");throw Error(`Invalid --settings value: ${H}`)}return J.data}async function c(q){if(q===void 0)return;let B=q.trim();if(!B)throw Error("--settings requires a JSON object or file path");if(B.startsWith("{"))return G(B,"inline JSON");let w=i.resolve(Q(),B),J;try{J=await s.readFile(w,"utf8")}catch(H){let K=H instanceof Error?`: ${H.message}`:"";throw Error(`Unable to read --settings file ${w}${K}`)}return G(J,w)}function p(q,B){if(!B)return;let w=B;for(let[J,H]of a){if(J==="permissionMode"&&q.yolo===!0)continue;if(q[H]===void 0&&w[J]!==void 0)q[H]=w[J]}}var b=u("General"),yk=(q)=>{if(q.yolo){if(q.permissionMode&&q.permissionMode!=="yolo")throw Error("Cannot use both --yolo and --permission-mode with different values");q.permissionMode="yolo"}if(Array.isArray(q.allowedTools))q.allowedTools=q.allowedTools.flatMap((B)=>B.split(",").map((w)=>w.trim()).filter((w)=>w.length>0));if(Array.isArray(q.disallowedTools))q.disallowedTools=q.disallowedTools.flatMap((B)=>B.split(",").map((w)=>w.trim()).filter((w)=>w.length>0));if(Array.isArray(q.allowedTools)&&Array.isArray(q.disallowedTools)){let B=q.allowedTools.filter((w)=>q.disallowedTools.includes(w));if(B.length>0)throw Error(`Tools cannot be both allowed and disallowed: ${B.join(", ")}`)}},Dk=async(q)=>{let B=await c(typeof q.settings==="string"?q.settings:void 0);if(p(q,B),typeof q.agents==="string")o(q.agents);g(q);try{let J=await d.getInstance().initialize(B),H=l(J,q);if(n().config.actions.setConfig(H),q.debug)b.info("[CLI] 配置已加载到 Store")}catch(w){b.error("[CLI] [FAIL] 配置初始化失败",w instanceof Error?w.message:w),console.error(`
|
|
2
|
-
[FAIL] 配置初始化失败
|
|
3
|
-
`),console.error("原因:",w instanceof Error?w.message:"未知错误"),console.error(`
|
|
4
|
-
请检查:`),console.error(" 1. 配置文件格式是否正确 (~/.blade/config.json)"),console.error(" 2. 是否需要运行 blade 进行首次配置"),console.error(` 3. 配置文件权限是否正确
|
|
5
|
-
`),process.exit(1)}};function g(q){if(q.continue&&q.resume)throw Error("Cannot use both --continue and --resume flags simultaneously");if(q.forkSession&&!q.continue&&!q.resume)throw Error("--fork-session requires --resume or --continue");if(q.sessionId&&(q.continue||q.resume)&&!q.forkSession)throw Error("--session-id can only be combined with --resume or --continue when --fork-session is set")}var hk=(q)=>{if(q.jsonSchema&&q.outputSchema)throw Error("--json-schema cannot be combined with --output-schema");if((q.jsonSchema||q.outputSchema)&&!q.print&&!q.headless)throw Error("--json-schema and --output-schema can only be used with --print or --headless");if(q.outputFormat&&q.outputFormat!=="text"&&!q.print&&!q.headless)throw Error("--output-format can only be used with --print or --headless");if(q.headless&&q.outputFormat&&!["text","jsonl"].includes(q.outputFormat))throw Error(`--headless only supports --output-format text|jsonl, but got "${q.outputFormat}". Use --print for json|stream-json support.`);if(q.print&&q.outputFormat&&!["text","json","stream-json"].includes(q.outputFormat))throw Error(`--print only supports --output-format text|json|stream-json, but got "${q.outputFormat}". Use --headless for jsonl support.`);if(q.inputFormat==="stream-json"&&q.print)b.warn("[WARN] Warning: stream-json input format may not work as expected with --print")};
|
|
6
|
-
export{yk as ld,Dk as md,hk as nd};
|
package/dist/chunk-cn9jekw9.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{jd as a,kd as b}from"./chunk-38x7njj5.js";import"./chunk-amaxww4b.js";import"./chunk-hcv17986.js";export{a as globalOptions,b as cliConfig};
|
package/dist/chunk-f99n8812.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{je as B}from"./chunk-yn51162x.js";import{bh as Y}from"./chunk-ypqp368c.js";import{eh as Z,hh as $}from"./chunk-t8xmh4w2.js";import{createHash as D}from"node:crypto";var F="fast-mode-2026-02-01";function H(q,w,W){if(w.api!=="anthropic-messages"||W.providerValue!=="fast")return q;let G={...q},J=Object.keys(G).find((x)=>x.toLowerCase()==="anthropic-beta")??"anthropic-beta",L=new Set((G[J]??"").split(",").map((x)=>x.trim()).filter(Boolean));return L.add(F),G[J]=[...L].join(","),G}function K(q){return`BLADE_MODEL_API_KEY_${D("sha256").update(q).digest("hex").slice(0,32).toUpperCase()}`}function O(q,w,W,G=Y(),J="auto",L="auto"){let x=G.resolveConfig(q),Q=B(x,W),U=$(x,J),X=Z(x,L),z=q.overrides;return{config:q,model:x,displayName:q.displayName??x.name,chat:{provider:q.provider,model:q.model,apiKey:process.env[K(q.id)]??process.env.BLADE_API_KEY,baseUrl:process.env.BLADE_BASE_URL??z?.baseUrl,temperature:z?.temperature??w.temperature,maxContextTokens:x.contextWindow,maxOutputTokens:z?.maxOutputTokens,timeout:z?.timeout??w.timeout,streamIdleTimeout:z?.streamIdleTimeout,reasoningEnabled:Q.effective!=="off",...Q.effective==="off"?{}:{reasoningEffort:Q.effective},...U.providerValue?{serviceTier:U.providerValue}:{},...X.providerValue?{responseVerbosity:X.providerValue}:{},fallbackModels:q.fallbackModels,enablePromptCaching:z?.enablePromptCaching,customHeaders:H(z?.customHeaders,x,U),apiVersion:z?.apiVersion,maxRetries:z?.maxRetries,providerCircuitBreakerOpenMs:w.providerCircuitBreakerOpenMs,providerRequestConcurrency:w.providerRequestConcurrency,providerRequestAdmissionMs:w.providerRequestAdmissionMs,providerRequestPendingBytes:w.providerRequestPendingBytes,modelCatalog:G},reasoning:Q,serviceTier:U,responseVerbosity:X}}function E(q,w=Y()){try{return q.displayName??w.getModel(q.provider,q.model).name}catch{return q.displayName??q.model}}
|
|
2
|
-
export{K as fe,O as ge,E as he};
|
package/dist/chunk-gn3fxtkj.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a,b,c,d,e}from"./chunk-2wz3mf50.js";import"./chunk-amaxww4b.js";import"./chunk-hcv17986.js";export{b as setSkipUntilVersion,d as performUpgrade,c as getUpgradeCommand,e as checkVersionOnStartup,a as checkVersion};
|