blade-code 0.10.47 → 0.10.63

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.
Files changed (114) hide show
  1. package/dist/blade.js +2 -2
  2. package/dist/chunk-0d1197b9.js +1 -0
  3. package/dist/chunk-0ft3egjr.js +710 -0
  4. package/dist/chunk-0jxh2zq5.js +5 -0
  5. package/dist/{chunk-7pprh90t.js → chunk-1hb0rt7n.js} +1 -1
  6. package/dist/{chunk-26wse17p.js → chunk-1jc7d3nt.js} +2 -2
  7. package/dist/{chunk-sqd5ge5s.js → chunk-2xbmkyb2.js} +1 -1
  8. package/dist/chunk-2xsrqsk9.js +44 -0
  9. package/dist/chunk-2yws8pqt.js +1 -0
  10. package/dist/{chunk-0qsssahq.js → chunk-2z3xe3rw.js} +1 -1
  11. package/dist/{chunk-fk4wbmv6.js → chunk-3tednchw.js} +2 -2
  12. package/dist/chunk-5sk6v1et.js +10 -0
  13. package/dist/{chunk-qp2z1r7y.js → chunk-69rc9hw6.js} +1 -1
  14. package/dist/chunk-6fdvffcc.js +2 -0
  15. package/dist/{chunk-c9s4n31b.js → chunk-6g3qzz9h.js} +1 -1
  16. package/dist/{chunk-2eddqgnh.js → chunk-6rg6mngq.js} +1 -1
  17. package/dist/{chunk-yre5973e.js → chunk-6x1g554w.js} +1 -1
  18. package/dist/{chunk-m8ss9rmx.js → chunk-7b467h8k.js} +1 -1
  19. package/dist/{chunk-8vtyatd6.js → chunk-83wm4akj.js} +1 -1
  20. package/dist/chunk-86gc2mqb.js +1 -0
  21. package/dist/{chunk-cxzx7j0p.js → chunk-87jz5600.js} +1 -1
  22. package/dist/{chunk-z699m84q.js → chunk-8an49nbn.js} +53 -53
  23. package/dist/chunk-8b1ehxzh.js +45 -0
  24. package/dist/{chunk-yk9pxkc1.js → chunk-8ekk8pa7.js} +1 -1
  25. package/dist/{chunk-5wjnbhpg.js → chunk-94d8hhqc.js} +2 -2
  26. package/dist/{chunk-hr79r0ee.js → chunk-95hvy6dn.js} +2 -2
  27. package/dist/chunk-9c31jemm.js +1 -0
  28. package/dist/chunk-9kmtcgm6.js +2 -0
  29. package/dist/{chunk-mrsc4a55.js → chunk-9r0yebs1.js} +1 -1
  30. package/dist/{chunk-nxcc0fbe.js → chunk-9rjaem5f.js} +2 -2
  31. package/dist/{chunk-v287pexf.js → chunk-adz2756v.js} +2 -2
  32. package/dist/{chunk-1h9pcmkk.js → chunk-atqnan6x.js} +2 -2
  33. package/dist/{chunk-hfrcwkc8.js → chunk-av10vmxk.js} +1 -1
  34. package/dist/{chunk-9rrced3b.js → chunk-b19f55s7.js} +1 -1
  35. package/dist/{chunk-q78s028m.js → chunk-cm9mph7j.js} +1 -1
  36. package/dist/chunk-cq77ah56.js +6 -0
  37. package/dist/{chunk-6pz076m9.js → chunk-cr154zrx.js} +2 -2
  38. package/dist/chunk-cx05we7e.js +1 -0
  39. package/dist/{chunk-qb0sqh29.js → chunk-cz68x56m.js} +2 -2
  40. package/dist/{chunk-tpa75y39.js → chunk-d1t91jgz.js} +1 -1
  41. package/dist/{chunk-2yvte5a7.js → chunk-detkh4dd.js} +1 -1
  42. package/dist/chunk-dpzx4mgb.js +1 -0
  43. package/dist/chunk-dq9ya06q.js +1 -0
  44. package/dist/{chunk-f4sp074f.js → chunk-eeac8teg.js} +1 -1
  45. package/dist/chunk-ej6h16ae.js +3 -0
  46. package/dist/{chunk-hcm55r3d.js → chunk-fp1h8wdh.js} +1 -1
  47. package/dist/{chunk-94zrzfyz.js → chunk-fp2fh7cn.js} +2 -2
  48. package/dist/chunk-g0n88mhg.js +1 -0
  49. package/dist/{chunk-b29dn3xe.js → chunk-hpehkz2x.js} +2 -2
  50. package/dist/{chunk-kr5wj66e.js → chunk-j8akkmc8.js} +1 -1
  51. package/dist/{chunk-7fqsgdee.js → chunk-j9snkjpe.js} +2 -2
  52. package/dist/{chunk-v9tzhe90.js → chunk-jk8bqc5b.js} +2 -2
  53. package/dist/{chunk-e8zc6vbq.js → chunk-k4ermznt.js} +1 -1
  54. package/dist/chunk-khkhsaan.js +2 -0
  55. package/dist/{chunk-kfpzrmq7.js → chunk-kjvntyr5.js} +1 -1
  56. package/dist/{chunk-yp1vvxyc.js → chunk-kxrss9sv.js} +1 -1
  57. package/dist/chunk-m0t7g2vg.js +1 -0
  58. package/dist/{chunk-26p6t5f2.js → chunk-ng0tkmrn.js} +2 -2
  59. package/dist/chunk-nnbfk60b.js +1 -0
  60. package/dist/chunk-nnc1abkf.js +1 -0
  61. package/dist/{chunk-k5f4kx9z.js → chunk-pdrqnywp.js} +1 -1
  62. package/dist/chunk-q7pznpyh.js +1 -0
  63. package/dist/{chunk-y6tkxqjx.js → chunk-qs4erqd0.js} +2 -2
  64. package/dist/chunk-rwy763tf.js +160 -0
  65. package/dist/chunk-tf4p1778.js +1 -0
  66. package/dist/{chunk-k2wnxzdx.js → chunk-ttkwrqtp.js} +1 -1
  67. package/dist/chunk-vhckw5e7.js +1 -0
  68. package/dist/{chunk-pgz8t0mk.js → chunk-w4sp56dn.js} +1 -1
  69. package/dist/{chunk-56qew7w0.js → chunk-wwsg165p.js} +2 -2
  70. package/dist/{chunk-wwvb6znp.js → chunk-wy4pn9sk.js} +1 -1
  71. package/dist/chunk-xsx1av03.js +1621 -0
  72. package/dist/{chunk-fhnkyqfb.js → chunk-y8r2knxm.js} +2 -2
  73. package/dist/chunk-yagna3ws.js +8 -0
  74. package/dist/web/assets/ChatView-B6IO9U-D.js +18 -0
  75. package/dist/web/assets/{CodeBlockHighlighter-D5L0d-8-.js → CodeBlockHighlighter-DVGtFQgX.js} +1 -1
  76. package/dist/web/assets/{FilePreview-Cb2olorI.js → FilePreview-C-8_o7yw.js} +1 -1
  77. package/dist/web/assets/{MarkdownRenderer-7ymM1e5M.js → MarkdownRenderer-D04IKQhF.js} +3 -3
  78. package/dist/web/assets/{SettingsModal-D6hLNUk9.js → SettingsModal-BMoZLVEe.js} +1 -1
  79. package/dist/web/assets/{TaskSwitcher-DAAp5x-y.js → TaskSwitcher-CIuCEbvU.js} +1 -1
  80. package/dist/web/assets/{TerminalPanel-BpDMAo49.js → TerminalPanel-fTk9D5hU.js} +1 -1
  81. package/dist/web/assets/{index-BdsO44FI.js → index-CO5sUiJn.js} +4 -4
  82. package/dist/web/assets/index-Dxdnbd79.css +1 -0
  83. package/dist/web/assets/{session-events-DJh6SZcl.js → session-events-BvtUOaNG.js} +8 -8
  84. package/dist/web/index.html +3 -3
  85. package/package.json +12 -2
  86. package/dist/chunk-0b1qj502.js +0 -45
  87. package/dist/chunk-12akr5tm.js +0 -1
  88. package/dist/chunk-1906ftqm.js +0 -1
  89. package/dist/chunk-3y784b9c.js +0 -1
  90. package/dist/chunk-4ntsj9x5.js +0 -1
  91. package/dist/chunk-5x4v6tkt.js +0 -1
  92. package/dist/chunk-64z1vsd7.js +0 -1612
  93. package/dist/chunk-6cx4t8r6.js +0 -1
  94. package/dist/chunk-6tcagnpd.js +0 -1
  95. package/dist/chunk-74nmcybn.js +0 -1
  96. package/dist/chunk-7sna3js9.js +0 -2
  97. package/dist/chunk-85d5jmk3.js +0 -1
  98. package/dist/chunk-b76w8nsk.js +0 -10
  99. package/dist/chunk-bvf9syb2.js +0 -3
  100. package/dist/chunk-cwcngsfq.js +0 -8
  101. package/dist/chunk-de1s7f6p.js +0 -710
  102. package/dist/chunk-egczvfsv.js +0 -5
  103. package/dist/chunk-fer18bbe.js +0 -1
  104. package/dist/chunk-j7edwwg1.js +0 -2
  105. package/dist/chunk-nvjkw9e5.js +0 -1
  106. package/dist/chunk-pxqgt2h6.js +0 -2
  107. package/dist/chunk-rcjpv1qs.js +0 -160
  108. package/dist/chunk-sx4mkt0c.js +0 -44
  109. package/dist/chunk-t1wxd1hj.js +0 -1
  110. package/dist/chunk-va43bd74.js +0 -6
  111. package/dist/chunk-xwe22whb.js +0 -1
  112. package/dist/chunk-z1aqe7ms.js +0 -1
  113. package/dist/web/assets/ChatView-DsPSY2pr.js +0 -18
  114. package/dist/web/assets/index-7zaeanZL.css +0 -1
@@ -1,5 +0,0 @@
1
- import{hg as y_,ig as Qf,jg as Kf,kg as g_,lg as zf,ng as Wf,pg as Hf,qg as hf,rg as Rf,sg as $f,ug as Sf,vg as Gf,xg as I}from"./chunk-yk9pxkc1.js";import{Eg as q}from"./chunk-fhnkyqfb.js";import{Ig as ef,Kg as Cf}from"./chunk-26wse17p.js";import{Ng as v_}from"./chunk-hcm55r3d.js";var ME={openrouter:{"HTTP-Referer":"https://github.com/echoVic/blade-code","X-Title":"Blade"},cerebras:{"X-Cerebras-3rd-Party-Integration":"blade"}},af=(f)=>ME[f]||{};var AE=new Set(["user-cancel","interrupt","sibling-error","timeout"]);function Vf(f){return typeof f==="string"&&AE.has(f)}function nE(f){if(!f.aborted)return;if(Vf(f.reason))return f.reason;return"user-cancel"}function ET(f){if(Vf(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 yf(...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 A of _)if(A.aborted)return A;let T=new AbortController,x=new Map;for(let A of _){let Y=()=>{T.abort(A.reason);for(let[R,h]of x)R.removeEventListener("abort",h)};x.set(A,Y)}for(let[A,Y]of x)A.addEventListener("abort",Y,{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((x,A)=>{let Y,R=setTimeout(()=>{if(_&&Y)_.removeEventListener("abort",Y);x()},f);if(_)Y=()=>{if(clearTimeout(R),T)A(new DOMException("Aborted","AbortError"));else x()},_.addEventListener("abort",Y,{once:!0})})}var hE=q("Chat"),RE={input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}};function bf(f){if(typeof f==="string")return f;return f.filter((_)=>_.type==="text").map((_)=>_.text).join(`
2
- `)}function SE(f){if(!f)return{};try{let _=JSON.parse(f);return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}catch{return hE.warn("[PiAIChatService] Invalid historical tool arguments",{value:f}),{}}}function YE(f){let _=f.match(/^data:([^;,]+);base64,(.+)$/s);return _?{mimeType:_[1],data:_[2]}:void 0}async function PE(f,_){let E=YE(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 of(f,_,E,T,x){let A=f.filter((h)=>h.role==="system").map((h)=>bf(h.content)).filter(Boolean).join(`
3
-
4
- `),Y=[];for(let h of f){if(h.role==="system")continue;if(h.role==="user"){let U=_.input.includes("image"),M=typeof h.content==="string"?h.content:await Promise.all(h.content.map((P)=>P.type==="text"?Promise.resolve({type:"text",text:P.text}):U?PE(P.image_url.url,T):Promise.resolve({type:"text",text:"[Image omitted: current model does not support image input]"})));Y.push({role:"user",content:M,timestamp:Date.now()});continue}if(h.role==="assistant"){let U=[];if(h.reasoningContent?.trim())U.push({type:"thinking",thinking:h.reasoningContent});let M=bf(h.content);if(M)U.push({type:"text",text:M});for(let P of h.tool_calls??[]){if(!("function"in P))continue;U.push({type:"toolCall",id:P.id,name:P.function.name,arguments:SE(P.function.arguments)})}Y.push({role:"assistant",content:U,api:_.api,provider:_.provider,model:_.id,usage:RE,stopReason:h.tool_calls?.length?"toolUse":"stop",timestamp:Date.now()});continue}Y.push({role:"toolResult",toolCallId:h.tool_call_id??"",toolName:h.name??"unknown",content:[{type:"text",text:bf(h.content)}],isError:!1,timestamp:Date.now()})}let R=E?.filter((h)=>!x||h.name===x).map((h)=>({name:h.name,description:h.description,parameters:h.parameters,constrainedSampling:h.constrainedSampling}));return{...A?{systemPrompt:A}:{},messages:Y,...R?.length?{tools:R}:{}}}function df(f){let _=[];for(let E=0;E<f.length;E++){let T=f[E];if(T.role==="tool")continue;let x=T.role==="assistant"&&T.tool_calls?.length?T.tool_calls:void 0;if(!x){_.push(T);continue}let A=[],Y=E+1;while(Y<f.length&&f[Y].role==="tool")A.push(f[Y++]);let R=new Set(x.map((M)=>M.id)),h=A.filter((M)=>M.tool_call_id&&R.has(M.tool_call_id)),U=new Set(h.map((M)=>M.tool_call_id));if(R.size===x.length&&h.length===R.size&&U.size===R.size)_.push(T,...h);E=Y-1}return _}function rf(f){return f.some((_)=>_.role==="assistant"&&Boolean(_.tool_calls?.length)&&!_.reasoningContent?.trim())}function nf(f,_){return{...f,..._.baseUrl?{baseUrl:ef(f.api,_.baseUrl)}:{},..._.maxOutputTokens?{maxTokens:_.maxOutputTokens}:{}}}function jf(f){let _=f.modelCatalog??Cf();return{models:_.models,model:nf(_.getModel(f.provider,f.model),f)}}function f_(f,_){let E=f.modelCatalog??Cf();return nf(E.getModel(_.provider,_.model),f)}import{randomBytes as OE}from"node:crypto";import{createHmac as UE}from"node:crypto";function uE(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 DE(f){if(!f)return[];return Object.entries(f).map(([_,E])=>[_.trim().toLowerCase(),E.trim()]).sort(([_],[E])=>_.localeCompare(E))}function xf(f,_,E){let T=JSON.stringify([f.provider.trim(),String(f.api).trim(),uE(f.baseUrl),f.model.trim(),f.serviceTier?.trim()??"",f.apiVersion?.trim()??"",f.apiKey??"",DE(f.customHeaders),E]);return UE("sha256",Buffer.from(_)).update(T).digest("hex")}var NE=60000,BE=4,VE=0.8;var Af=300000,Xf=600000;var __=128,E_=256,bE=1800000,Mf=50;class e 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 Jf(f){return f instanceof e||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 CE(f,_){return f!==void 0&&Number.isFinite(f)&&f>0&&f<=1?f:_}function jE(f,_){return xf(f,_,{providerCircuitOpenDurationMs:f.openDurationMs})}function r(f){let _=0;for(let E of f)if(E.failure)_++;return _}function T_(f){return f!==void 0&&Number.isInteger(f)&&f>=100&&f<=599?f:void 0}function x_(f){if(f===void 0||!Number.isFinite(f)||f<0)return;return Math.min(Math.ceil(f),Wf)}class A_{#M=new Map;#R=new WeakMap;#f;#_;#T;#E;constructor(f={}){this.#f=f.processSecret?new Uint8Array(f.processSecret):OE(32),this.#_=f.now??(()=>performance.now()),this.#T=f.wallNow??f.now??Date.now,this.#E={maxEntries:Math.min(m(f.maxEntries,__),__),maxWindowEntries:Math.min(m(f.maxWindowEntries,E_),E_),windowMs:m(f.windowMs,NE),minSamples:m(f.minSamples,BE),errorRateThreshold:CE(f.errorRateThreshold,VE),idleTtlMs:m(f.idleTtlMs,bE)}}get size(){return this.#M.size}get(f){if(f.openDurationMs===0)return this.#A();let _=this.#_();this.#V(_);let E=jE(f,this.#f),T=this.#M.get(E);if(T)return T.lastTouchedAt=_,this.#x(T,f.probeLeaseMs);if(this.#M.size>=this.#E.maxEntries)this.#j();if(this.#M.size>=this.#E.maxEntries)return this.#A();let x={key:E,state:"closed",samples:[],generation:0,nextAttemptId:1,nextProbeLeaseId:1,configuredOpenDurationMs:f.openDurationMs,effectiveOpenDurationMs:f.openDurationMs,lastTouchedAt:_,detached:!1};return this.#M.set(E,x),this.#x(x,f.probeLeaseMs)}#x(f,_){let E=this,T=Math.max(Af,Math.min(m(_,Af),Xf));return{preflight:()=>E.#U(f),check:()=>E.#u(f,T),recordSuccess:(x)=>E.#N(x,"success"),recordFailure:(x,A)=>E.#N(x,"failure",A),recordNeutral:(x)=>E.#N(x,"neutral"),abandon:(x)=>E.#C(x),snapshot:()=>E.#b(f)}}#A(){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.#h(_),recordFailure:(_)=>f.#h(_),recordNeutral:(_)=>f.#h(_),abandon:(_)=>f.#C(_),snapshot:()=>({state:"closed",sampleCount:0,failureCount:0,noop:!0,detached:!1})}}#h(f){let _=this.#R.get(f);if(_?.kind==="noop")_.settled=!0;return}#U(f){let _=this.#_();if(f.detached)return{eligible:!0};if(f.lastTouchedAt=_,this.#B(f,_),f.state==="closed")return{eligible:!0};if(f.state==="open"){let T=f.nextProbeAt??_;return _<T?this.#S(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??_+Mf)-_);return this.#S(f,Math.min(Mf,E))}#S(f,_){let{allowed:E,...T}=this.#O(f,_);return{eligible:!1,...T}}#u(f,_){let E=this.#_();if(f.detached)return this.#A().check();if(f.lastTouchedAt=E,this.#B(f,E),f.state==="closed")return this.#Y(f,"regular");if(f.state==="open"){let x=f.nextProbeAt??E;if(E<x)return this.#O(f,x-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.#D(f,E,_);let T=Math.max(1,(f.probeLeaseExpiresAt??E+Mf)-E);return this.#O(f,Math.min(Mf,T))}#Y(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}}#D(f,_,E){let T=f.nextProbeLeaseId++;f.probeLeaseId=T,f.probeLeaseExpiresAt=_+E,f.lastTouchedAt=_;let x=this.#Y(f,"probe",T),A=f.lastFailure??{reason:"server_error"};return{...x,reason:A.reason,...A.statusCode!==void 0?{statusCode:A.statusCode}:{},openDurationMs:f.effectiveOpenDurationMs,sampleCount:f.samples.length,failureCount:r(f.samples)}}#O(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:r(f.samples)}}#N(f,_,E){let T=this.#R.get(f);if(!T||T.settled)return;if(T.settled=!0,T.kind==="noop"||!T.entry)return;let x=T.entry;if(x.detached||T.generation!==x.generation||T.kind==="regular"&&x.state!=="closed"||T.kind==="probe"&&(x.state!=="half_open"||T.probeLeaseId!==x.probeLeaseId))return;let A=this.#_();if(x.lastTouchedAt=A,T.kind==="probe"){if(_==="failure"&&E)return this.#P(x,E,A,"reopened");return this.#W(x)}if(_==="neutral")return;if(this.#X(x,_==="failure",A),_!=="failure"||!E)return;let Y=r(x.samples),R=x.samples.length===0?0:Y/x.samples.length;if(x.samples.length>=this.#E.minSamples&&R>=this.#E.errorRateThreshold)return this.#P(x,E,A,"opened");return}#P(f,_,E,T){let x={reason:_.reason,...T_(_.statusCode)!==void 0?{statusCode:T_(_.statusCode)}:{},...x_(_.retryAfterMs)!==void 0?{retryAfterMs:x_(_.retryAfterMs)}:{}},A=x.retryAfterMs??0,Y=Math.max(f.configuredOpenDurationMs,A);return f.state="open",f.generation++,f.probeLeaseId=void 0,f.probeLeaseExpiresAt=void 0,f.effectiveOpenDurationMs=Y,f.nextProbeAt=E+Y,f.lastFailure=x,{phase:T,reason:x.reason,...x.statusCode!==void 0?{statusCode:x.statusCode}:{},retryAfterMs:Y,nextProbeAt:this.#T()+Y,openDurationMs:Y,sampleCount:f.samples.length,failureCount:r(f.samples)}}#W(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}}#C(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}#X(f,_,E){if(this.#B(f,E),f.samples.length>=this.#E.maxWindowEntries)f.samples.shift();f.samples.push({at:E,failure:_})}#B(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)}#b(f){if(!f.detached)this.#B(f,this.#_());return{state:f.state,sampleCount:f.samples.length,failureCount:r(f.samples),...f.nextProbeAt!==void 0?{nextProbeAt:f.nextProbeAt}:{},noop:!1,detached:f.detached}}#V(f){for(let[_,E]of this.#M)if(E.state==="closed"&&f-E.lastTouchedAt>this.#E.idleTtlMs)this.#z(_,E)}#j(){let f;for(let _ of this.#M.values())if(_.state==="closed"&&(!f||_.lastTouchedAt<f.lastTouchedAt))f=_;if(f)this.#z(f.key,f)}#z(f,_){_.detached=!0,this.#M.delete(f)}}var M_;function h_(){return M_??=new A_,M_}import{randomBytes as zE}from"node:crypto";var R_=16,S_=128,Y_=32,P_=3,U_=16,u_=96,D_=24,O_=12,N_=16,B_=4,V_=4,b_=67108864,C_=33554432,j_=12,z_=2,W_=2,X_=1,$_=15000,J_=30000;class i extends Error{reason;scope;requestClass;resource;inFlight;limit;queued;maxWaitMs;code="PROVIDER_ADMISSION_BUSY";retryable;constructor(f,_,E,T,x,A,Y,R){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=x;this.limit=A;this.queued=Y;this.maxWaitMs=R;this.name="ProviderAdmissionError",this.retryable=f!=="closed"}}function n(f){return f instanceof i||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 WE(f){let _=j(f.globalMaxInFlight,R_,R_),E=j(f.globalMaxPending,S_,S_),T=j(f.domainMaxPending,Y_,Y_),x=Math.min(j(f.ownerMaxInFlight,P_,P_),_),A=Math.min(j(f.ownerMaxPending,U_,U_),E),Y=Math.min(j(f.nonForegroundGlobalMaxPending,Math.min(u_,Math.max(1,Math.floor(E*3/4))),u_),E),R=Math.min(j(f.nonForegroundDomainMaxPending,Math.min(D_,Math.max(1,Math.floor(T*3/4))),D_),T),h=Math.min(j(f.nonForegroundOwnerMaxPending,Math.min(O_,Math.max(1,Math.floor(A*3/4))),O_),A),U=Math.min(j(f.internalGlobalMaxPending,Math.min(N_,Math.max(1,Math.floor(E/8))),N_),Y),M=Math.min(j(f.internalDomainMaxPending,Math.min(B_,Math.max(1,Math.floor(T/8))),B_),R),P=Math.min(j(f.internalOwnerMaxPending,Math.min(V_,Math.max(1,Math.floor(A/4))),V_),h),u=j(f.globalMaxPendingBytes,I,I),D=Math.min(j(f.domainMaxPendingBytes,b_,b_),u),G=Math.min(j(f.ownerMaxPendingBytes,C_,C_),u),L=Math.min(j(f.nonForegroundGlobalMaxInFlight,Math.min(j_,_),j_),_),Q=Math.min(j(f.nonForegroundOwnerMaxInFlight,Math.min(z_,x),z_),x),Pf=Math.min(j(f.internalGlobalMaxInFlight,Math.min(W_,_),W_),_),ff=j(f.internalDomainMaxInFlight,X_,X_),Uf=j(f.agingMs,J_,J_);return{globalMaxInFlight:_,globalMaxPending:E,domainMaxPending:T,ownerMaxInFlight:x,ownerMaxPending:A,nonForegroundGlobalMaxPending:Y,nonForegroundDomainMaxPending:R,nonForegroundOwnerMaxPending:h,internalGlobalMaxPending:U,internalDomainMaxPending:M,internalOwnerMaxPending:P,globalMaxPendingBytes:u,domainMaxPendingBytes:D,ownerMaxPendingBytes:G,nonForegroundGlobalMaxInFlight:L,nonForegroundOwnerMaxInFlight:Q,internalGlobalMaxInFlight:Pf,internalDomainMaxInFlight:ff,agingMs:Uf}}function k_(f,_){if(!f.trim())throw Error(`${_} must not be blank`)}function XE(f){if(k_(f.sessionId,"sessionId"),k_(f.ownerId,"ownerId"),!Number.isSafeInteger(f.scope.maxConcurrent)||f.scope.maxConcurrent<hf||f.scope.maxConcurrent>Rf)throw Error(`maxConcurrent must be between ${hf} and ${Rf}`);if(!Number.isSafeInteger(f.scope.maxPendingBytes)||f.scope.maxPendingBytes<=0||f.scope.maxPendingBytes>I)throw Error(`maxPendingBytes must be between 1 and ${I}`);if(!Number.isSafeInteger(f.pendingBytes)||f.pendingBytes<=0||f.pendingBytes>I+1)throw Error(`pendingBytes must be between 1 and ${I+1}`);if(!Number.isSafeInteger(f.maxWaitMs)||f.maxWaitMs<0||f.maxWaitMs>Sf)throw Error(`maxWaitMs must be 0-${Sf}`)}function kf(f,_){if(_!==void 0)return _;if(f?.reason!==void 0)return f.reason;return new DOMException("Provider request admission cancelled","AbortError")}function JE(f,_){return xf(f,_,{providerRequestConcurrency:f.maxConcurrent,providerRequestPendingBytes:f.maxPendingBytes})}class G_{#M;#R;#f;#_=[];#T=new Map;#E=new Map;#x=0;#A=0;#h=0;#U=0;#S=0;#u=0;#Y=0;#D=0;#O=1;#N=0;#P=!1;constructor(f={}){this.#M=f.processSecret?new Uint8Array(f.processSecret):zE(32),this.#R=f.now??(()=>performance.now()),this.#f=WE(f)}admit(f){if(XE(f),this.#P)throw this.#H("closed",f,{scope:"global",resource:"stream",inFlight:this.#x,limit:this.#f.globalMaxInFlight},this.#_.length);if(f.signal?.aborted)throw kf(f.signal);let _=JE(f.scope,this.#M),E=this.#T.get(_),T=this.#E.get(f.ownerId),x=E??this.#X(f.scope.maxConcurrent),A=T??this.#B();if(this.#_.length===0&&this.#b(x,A,f.requestClass)){if(!E)this.#T.set(_,x);if(!T)this.#E.set(f.ownerId,A),this.#O++;let u=this.#j(_,f.ownerId,f.requestClass),D=this.#v(f,0);return{ready:Promise.resolve(u),getSnapshot:()=>({...D}),cancel:()=>{D={...D}}}}let Y=this.#W(f,x,A);if(Y)throw this.#H("queue_full",f,Y,this.#_.length);let R=this.#V(x,A,f.requestClass);if(f.maxWaitMs===0)throw this.#H("wait_timeout",f,R,this.#_.length);if(!E)this.#T.set(_,x);if(!T)this.#E.set(f.ownerId,A),this.#O++;let h,U,M=new Promise((u,D)=>{h=u,U=D});M.catch(()=>{return});let P={domainKey:_,sessionId:f.sessionId,ownerId:f.ownerId,requestClass:f.requestClass,maxWaitMs:f.maxWaitMs,pendingBytes:f.pendingBytes,enqueuedAt:this.#R(),signal:f.signal,resolve:h,reject:U,settled:!1,admitted:!1};if(f.signal)P.abortListener=()=>this.#$(P,kf(f.signal)),f.signal.addEventListener("abort",P.abortListener,{once:!0});return P.timer=setTimeout(()=>this.#Q(P),f.maxWaitMs),P.timer.unref?.(),this.#_.push(P),this.#C(x,A,P),this.#J(),{ready:M,getSnapshot:()=>this.#F(P),cancel:(u)=>this.#$(P,kf(f.signal,u))}}close(){if(this.#P)return;this.#P=!0;for(let f of[...this.#_]){let _=this.#T.get(f.domainKey),E=this.#E.get(f.ownerId),T=_&&E?this.#V(_,E,f.requestClass):{scope:"global",resource:"stream",inFlight:this.#x,limit:this.#f.globalMaxInFlight};this.#k(f,new i("closed",T.scope,f.requestClass,T.resource,T.inFlight,T.limit,this.#_.length,f.maxWaitMs))}}getStats(){return{inFlight:this.#x,queued:this.#_.length,pendingBytes:this.#u,nonForegroundInFlight:this.#A,internalInFlight:this.#h,nonForegroundQueued:this.#U,internalQueued:this.#S,nonForegroundPendingBytes:this.#Y,internalPendingBytes:this.#D,domainCount:this.#T.size,ownerCount:this.#E.size,closed:this.#P}}#W(f,_,E){let T=(M,P,u)=>P>=u?{scope:M,resource:"pending_count",inFlight:P,limit:u}:void 0;if(f.requestClass==="internal"){let M=T("class",this.#S,this.#f.internalGlobalMaxPending)??T("class",E.internalQueued,this.#f.internalOwnerMaxPending)??T("class",_.internalQueued,this.#f.internalDomainMaxPending);if(M)return M}if(f.requestClass!=="foreground"){let M=T("class",this.#U,this.#f.nonForegroundGlobalMaxPending)??T("class",E.nonForegroundQueued,this.#f.nonForegroundOwnerMaxPending)??T("class",_.nonForegroundQueued,this.#f.nonForegroundDomainMaxPending);if(M)return M}let x=T("global",this.#_.length,this.#f.globalMaxPending)??T("owner",E.queued,this.#f.ownerMaxPending)??T("domain",_.queued,this.#f.domainMaxPending);if(x)return x;let A=Math.min(f.scope.maxPendingBytes,this.#f.globalMaxPendingBytes),Y=Math.min(A,this.#f.domainMaxPendingBytes),R=Math.min(A,this.#f.ownerMaxPendingBytes),h=(M,P)=>f.pendingBytes>P-M,U=(M)=>{if(M==="owner")return{scope:M,resource:"pending_bytes",inFlight:E.inFlight,limit:this.#f.ownerMaxInFlight};if(M==="domain")return{scope:M,resource:"pending_bytes",inFlight:_.inFlight,limit:_.maxConcurrent};return{scope:M,resource:"pending_bytes",inFlight:this.#x,limit:this.#f.globalMaxInFlight}};if(f.requestClass==="internal"){let M=Math.max(1,Math.floor(A/8)),P=Math.max(1,Math.floor(Y/4)),u=Math.max(1,Math.floor(R/4));if(h(this.#D,M)||h(E.internalPendingBytes,u)||h(_.internalPendingBytes,P))return U("class")}if(f.requestClass!=="foreground"){let M=Math.max(1,Math.floor(A*3/4)),P=Math.max(1,Math.floor(Y*3/4)),u=Math.max(1,Math.floor(R/2));if(h(this.#Y,M)||h(E.nonForegroundPendingBytes,u)||h(_.nonForegroundPendingBytes,P))return U("class")}if(h(this.#u,A))return U("global");if(h(E.pendingBytes,R))return U("owner");if(h(_.pendingBytes,Y))return U("domain");return}#C(f,_,E){if(f.queued++,_.queued++,this.#u+=E.pendingBytes,f.pendingBytes+=E.pendingBytes,_.pendingBytes+=E.pendingBytes,E.requestClass!=="foreground")this.#U++,f.nonForegroundQueued++,_.nonForegroundQueued++,this.#Y+=E.pendingBytes,f.nonForegroundPendingBytes+=E.pendingBytes,_.nonForegroundPendingBytes+=E.pendingBytes;if(E.requestClass==="internal")this.#S++,f.internalQueued++,_.internalQueued++,this.#D+=E.pendingBytes,f.internalPendingBytes+=E.pendingBytes,_.internalPendingBytes+=E.pendingBytes}#X(f){return{maxConcurrent:f,inFlight:0,nonForegroundInFlight:0,internalInFlight:0,queued:0,nonForegroundQueued:0,internalQueued:0,pendingBytes:0,nonForegroundPendingBytes:0,internalPendingBytes:0}}#B(){return{order:this.#O,inFlight:0,nonForegroundInFlight:0,internalInFlight:0,queued:0,nonForegroundQueued:0,internalQueued:0,pendingBytes:0,nonForegroundPendingBytes:0,internalPendingBytes:0}}#b(f,_,E){if(this.#x>=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.#A>=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.#h<this.#f.internalGlobalMaxInFlight&&f.internalInFlight<this.#f.internalDomainMaxInFlight}#V(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.#x>=this.#f.globalMaxInFlight)return{scope:"global",resource:"stream",inFlight:this.#x,limit:this.#f.globalMaxInFlight};if(E!=="foreground"&&this.#A>=this.#f.nonForegroundGlobalMaxInFlight)return{scope:"class",resource:"stream",inFlight:this.#A,limit:this.#f.nonForegroundGlobalMaxInFlight};if(E==="internal"&&this.#h>=this.#f.internalGlobalMaxInFlight)return{scope:"class",resource:"stream",inFlight:this.#h,limit:this.#f.internalGlobalMaxInFlight};return{scope:"domain",resource:"stream",inFlight:f.inFlight,limit:f.maxConcurrent}}#j(f,_,E){let T=this.#T.get(f),x=this.#E.get(_);if(!T||!x)throw Error("Provider admission accounting state is unavailable");if(this.#x++,T.inFlight++,x.inFlight++,E!=="foreground")this.#A++,T.nonForegroundInFlight++,x.nonForegroundInFlight++;if(E==="internal")this.#h++,T.internalInFlight++,x.internalInFlight++;let A=!1;return{release:()=>{if(A)return;A=!0,this.#z(f,_,E)}}}#z(f,_,E){let T=this.#T.get(f),x=this.#E.get(_);if(this.#x=Math.max(0,this.#x-1),T)T.inFlight=Math.max(0,T.inFlight-1);if(x)x.inFlight=Math.max(0,x.inFlight-1);if(E!=="foreground"){if(this.#A=Math.max(0,this.#A-1),T)T.nonForegroundInFlight=Math.max(0,T.nonForegroundInFlight-1);if(x)x.nonForegroundInFlight=Math.max(0,x.nonForegroundInFlight-1)}if(E==="internal"){if(this.#h=Math.max(0,this.#h-1),T)T.internalInFlight=Math.max(0,T.internalInFlight-1);if(x)x.internalInFlight=Math.max(0,x.internalInFlight-1)}this.#L(f,_),this.#J()}#J(){if(this.#P)return;while(this.#_.length>0){let f=this.#R(),_=new Map;for(let[R,h]of this.#_.entries()){let U=this.#T.get(h.domainKey),M=this.#E.get(h.ownerId);if(U===void 0||M===void 0||!this.#b(U,M,h.requestClass))continue;let P=this.#Z(h,f),u=_.get(h.ownerId);if(!u||P<u.rank||P===u.rank&&R<u.index)_.set(h.ownerId,{pending:h,rank:P,index:R})}let E=[..._.values()].filter(({pending:R})=>{let h=this.#T.get(R.domainKey),U=this.#E.get(R.ownerId);return h!==void 0&&U!==void 0&&this.#b(h,U,R.requestClass)}).map(({pending:R,rank:h})=>({pending:R,rank:h,order:this.#E.get(R.ownerId).order}));if(E.length===0)return;let T=Math.min(...E.map((R)=>R.rank)),x=E.filter((R)=>R.rank===T),Y=x.filter((R)=>R.order>this.#N).sort((R,h)=>R.order-h.order)[0]??x.sort((R,h)=>R.order-h.order)[0];this.#c(Y.pending,Y.order)}}#Z(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)}#c(f,_){if(!this.#G(f,!1))return;f.settled=!0,f.admitted=!0,this.#N=_;let E=this.#j(f.domainKey,f.ownerId,f.requestClass);f.permit=E,f.resolve(E)}#Q(f){let _=this.#T.get(f.domainKey),E=this.#E.get(f.ownerId),T=_&&E?this.#V(_,E,f.requestClass):{scope:"global",resource:"stream",inFlight:this.#x,limit:this.#f.globalMaxInFlight};this.#k(f,new i("wait_timeout",T.scope,f.requestClass,T.resource,T.inFlight,T.limit,this.#_.length,f.maxWaitMs))}#$(f,_){this.#k(f,_)}#k(f,_){if(!this.#G(f))return;f.settled=!0,f.reject(_),this.#J()}#G(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),x=this.#E.get(f.ownerId);if(T&&x)this.#K(T,x,f);if(this.#I(f),_)this.#L(f.domainKey,f.ownerId);return!0}#K(f,_,E){if(f.queued=Math.max(0,f.queued-1),_.queued=Math.max(0,_.queued-1),this.#u=Math.max(0,this.#u-E.pendingBytes),f.pendingBytes=Math.max(0,f.pendingBytes-E.pendingBytes),_.pendingBytes=Math.max(0,_.pendingBytes-E.pendingBytes),E.requestClass!=="foreground")this.#U=Math.max(0,this.#U-1),f.nonForegroundQueued=Math.max(0,f.nonForegroundQueued-1),_.nonForegroundQueued=Math.max(0,_.nonForegroundQueued-1),this.#Y=Math.max(0,this.#Y-E.pendingBytes),f.nonForegroundPendingBytes=Math.max(0,f.nonForegroundPendingBytes-E.pendingBytes),_.nonForegroundPendingBytes=Math.max(0,_.nonForegroundPendingBytes-E.pendingBytes);if(E.requestClass==="internal")this.#S=Math.max(0,this.#S-1),f.internalQueued=Math.max(0,f.internalQueued-1),_.internalQueued=Math.max(0,_.internalQueued-1),this.#D=Math.max(0,this.#D-E.pendingBytes),f.internalPendingBytes=Math.max(0,f.internalPendingBytes-E.pendingBytes),_.internalPendingBytes=Math.max(0,_.internalPendingBytes-E.pendingBytes)}#I(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}#L(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(_)}#F(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.#x,limit:this.#f.globalMaxInFlight,waitMs:_,maxWaitMs:f.maxWaitMs};let E=this.#T.get(f.domainKey),T=this.#E.get(f.ownerId),x=E&&T?this.#V(E,T,f.requestClass):{scope:"global",resource:"stream",inFlight:this.#x,limit:this.#f.globalMaxInFlight};return{state:"queued",requestClass:f.requestClass,resource:x.resource,scope:x.scope,reason:"capacity",queuePosition:this.#t(f,x.scope),queueDepth:this.#_.length,inFlight:x.inFlight,limit:x.limit,waitMs:_,maxWaitMs:f.maxWaitMs}}#v(f,_){return{state:"admitted",requestClass:f.requestClass,resource:"stream",scope:"domain",queuePosition:0,queueDepth:this.#_.length,inFlight:this.#x,limit:this.#f.globalMaxInFlight,waitMs:_,maxWaitMs:f.maxWaitMs}}#t(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)}#H(f,_,E,T){return new i(f,E.scope,_.requestClass,E.resource,E.inFlight,E.limit,T,_.maxWaitMs)}}var H_;function L_(){return H_??=new G_,H_}function Z_(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 x=new WeakSet,A=0,Y=0,R=!1,h=(M)=>{if(R||M<=0)return;if(!Number.isSafeInteger(M)||M>E-A){A=E+1,R=!0;return}A+=M},U=(M)=>{if(R)return;if(Y+=1,Y>T){h(E+1);return}if(M===null){h(4);return}switch(typeof M){case"string":h(Buffer.byteLength(M,"utf8"));return;case"number":case"bigint":h(8);return;case"boolean":h(4);return;case"undefined":case"function":case"symbol":return;case"object":break}if(x.has(M))return;if(x.add(M),ArrayBuffer.isView(M)){h(32+M.byteLength);return}if(M instanceof ArrayBuffer){h(32+M.byteLength);return}if(M instanceof Date){h(40);return}if(M instanceof RegExp){h(32+Buffer.byteLength(M.source,"utf8"));return}if(M instanceof Map){h(32);for(let[P,u]of M)if(U(P),U(u),R)return;return}if(M instanceof Set){h(32);for(let P of M)if(U(P),R)return;return}if(M instanceof WeakMap||M instanceof WeakSet){h(32);return}if(Array.isArray(M)){h(16);for(let P of M)if(U(P),R)return;return}h(32);for(let P of Reflect.ownKeys(M)){if(typeof P!=="string")continue;let u=Object.getOwnPropertyDescriptor(M,P);if(!u?.enumerable||!("value"in u))continue;if(h(8+Buffer.byteLength(P,"utf8")),U(u.value),R)return}};return U(f),A}function c_(f){return Z_([f.messages,f.context,f.tools,f.requestOptions],{maxBytes:I})}var Q_=new WeakSet;class s 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"}}var kE=["gousagelimiterror","freeusagelimiterror","monthly usage limit reached","available balance","insufficient_quota","out of budget","quota exceeded","billing"],HE=["prompt_too_long","prompt is too long","maximum context length","context length exceeded","context_length_exceeded","request too large"],$E=["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 K_(f){return(f instanceof Error?f.message:String(f)).toLowerCase()}function GE(f){let _=K_(f);return HE.some((E)=>_.includes(E))}function Lf(f){if(f!==null&&typeof f==="object")Q_.add(f)}function KT(f){return f!==null&&typeof f==="object"&&Q_.has(f)}function LE(f){return f!==null&&typeof f==="object"&&"code"in f?f.code:void 0}function ZE(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 cE(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 l(f,_){let E=K_(f),T=LE(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(kE.some((A)=>E.includes(A))||GE(f))return{retryable:!1};if(_?.shouldRetry==="false")return{retryable:!1,statusCode:_.statusCode};let x=_?.statusCode??ZE(f)??cE(E);if(_?.shouldRetry==="true")return{retryable:!0,reason:x===429?"rate_limit":x===408||x===409?"timeout":"server_error",statusCode:x};if(x===429)return{retryable:!0,reason:"rate_limit",statusCode:x};if(x===408||x===409)return{retryable:!0,reason:"timeout",statusCode:x};if(x!==void 0&&x>=500&&x<=599)return{retryable:!0,reason:"server_error",statusCode:x};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:x};if($E.some((A)=>E.includes(A)))return{retryable:!0,reason:"transport",statusCode:x};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:x};return{retryable:!1,statusCode:x}}function Zf(f,_){if(!f)return;if(f.retryAfterMs!==void 0){let x=Number.parseFloat(f.retryAfterMs);if(Number.isFinite(x))return Math.max(0,x)}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 I_(f,_,E={}){let T=E.now??Date.now(),x=E.maxDelayMs??60000,A=Zf(_,T);if(A!==void 0)return Math.min(Math.ceil(A),x);let Y=Math.max(0,f-1),R=E.maxExponentialDelayMs??8000,h=Math.min(500*2**Y,R),U=Math.max(0,Math.min(1,E.random??Math.random())),M=h*(0.75+U*0.25);return Math.min(Math.round(M),x)}function t_(f,_){let E=f.onPayload;f.onPayload=async(T,x)=>{let A=E?await E(T,x):T;return _(A===void 0?T:A,x)}}function QE(f){if(!f.reasoningEnabled)return;return f.reasoningEffort??f.reasoningLevel??"high"}function KE(f){switch(f){case"minimal":return"MINIMAL";case"low":return"LOW";case"medium":return"MEDIUM";default:return"HIGH"}}function IE(f,_,E,T){let x=T?void 0:QE(E);if(!x){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=x;break;case"google-generative-ai":case"google-vertex":f.thinking={enabled:!0,level:KE(x)};break;case"mistral-conversations":f.reasoningEffort="high";break;case"bedrock-converse-stream":case"pi-messages":f.reasoning=x;break;default:f.reasoningEffort=x}}function FE(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 vE(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;t_(f,(x)=>{if(!x||typeof x!=="object"||Array.isArray(x))return x;return _.api==="anthropic-messages"?{...x,speed:"fast"}:{...x,service_tier:T}})}function tE(f,_,E){let T=E.responseVerbosity;if(!T)return;if(v_(_,T),_.api==="openai-codex-responses"){f.textVerbosity=T;return}t_(f,(x)=>{if(!x||typeof x!=="object"||Array.isArray(x))return x;if(_.api==="openai-completions")return{...x,verbosity:T};let A="text"in x&&x.text&&typeof x.text==="object"&&!Array.isArray(x.text)?x.text:{};return{...x,text:{...A,verbosity:T}}})}function w_(f,_,E,T,x=!1){let A={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:f.enablePromptCaching?"short":"none"};if(IE(A,_,f,x),FE(A,_.api,T?.toolChoice?.toolName),vE(A,_,f),tE(A,_,f),_.api==="azure-openai-responses")A.azureBaseUrl=f.baseUrl,A.azureApiVersion=f.apiVersion,A.azureDeploymentName=_.id;return A}function F_(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 wE=new Set(["anthropic-messages","openai-completions","openai-responses","openai-codex-responses","azure-openai-responses","pi-messages"]);function p_(f,_,E){let T=f.onResponse;if(f.onResponse=async(A,Y)=>{let R=new Headers(A.headers);E(F_(A.status,R)),await T?.(A,Y)},!wE.has(_.api)||typeof globalThis.fetch!=="function")return;let x=typeof f.fetch==="function"?f.fetch:globalThis.fetch.bind(globalThis);f.fetch=async(A,Y)=>{let R=await x(A,Y);return E(F_(R.status,R.headers)),R}}function q_(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 Yf=300000,pE=30000;class m_ 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 s_ extends Error{code="PROVIDER_STREAM_CLOSED";constructor(){super("Provider stream closed before completion");this.name="ProviderStreamClosedError"}}function cf(f){return f.reason instanceof Error?f.reason:new DOMException("Aborted","AbortError")}function qE(f){return f.idleTimeoutMs&&f.idleTimeoutMs>0?f.idleTimeoutMs:Yf}function mE(f,_){if(_===0)return;let E=_!==void 0&&_>0?_:pE;return Math.max(1,Math.min(E,Math.floor(f/2)))}function sE(f,_,E){if(E?.aborted)return Promise.reject(cf(E));return new Promise((T,x)=>{let A=!1,Y=()=>{clearTimeout(M),E?.removeEventListener("abort",U)},R=(P)=>{if(A)return;A=!0,Y(),T(P)},h=(P)=>{if(A)return;A=!0,Y(),x(P instanceof Error?P:Error(String(P)))},U=()=>{if(E)h(cf(E))},M=setTimeout(()=>R({kind:"timer"}),Math.max(0,_));if(E?.addEventListener("abort",U,{once:!0}),E?.aborted){U();return}f.then((P)=>R({kind:"next",result:P}),h)})}async function*lE(f,_,E){let T=qE(_),x=mE(T,_.stallWarningMs);if(_.signal?.aborted)throw cf(_.signal);let A=Date.now(),Y=Promise.resolve().then(()=>f.next()),R;for(;;){let U=await sE(Y,(R?T:x??T)-(Date.now()-A),_.signal);if(U.kind==="next"){if(R)yield{...R,phase:"recovered",durationMs:Math.max(R.durationMs,Date.now()-A)};return U.result}if(!R&&x!==void 0){E.stallCount++,R={phase:"detected",stallCount:E.stallCount,durationMs:x,warningAfterMs:x,timeoutMs:T,outputStarted:E.outputStarted},yield R;continue}let M=new m_(T);throw _.abort?.(M),M}}async function*l_(f,_,E,T,x={}){let Y=f.stream(_,E,T)[Symbol.asyncIterator](),R=0,h=!1,U={stallCount:0,outputStarted:!1};try{while(!0){let M=lE(Y,x,U),P=await M.next();while(!P.done)yield{providerStall:P.value},P=await M.next();let u=P.value;if(u.done)throw new s_;let D=u.value;switch(D.type){case"text_delta":U.outputStarted=!0,yield{content:D.delta};break;case"thinking_delta":U.outputStarted=!0,yield{reasoningContent:D.delta};break;case"toolcall_end":U.outputStarted=!0,yield{toolCalls:[{index:R++,id:D.toolCall.id,type:"function",function:{name:D.toolCall.name,arguments:JSON.stringify(D.toolCall.arguments)}}]};break;case"done":h=!0,yield{finishReason:D.reason,usage:q_(D.message.usage)};return;case"error":throw Error(D.error.errorMessage??`Request ${D.reason==="aborted"?"aborted":"failed"}`)}}}finally{if(!h)Promise.resolve(Y.return?.()).catch(()=>{return})}}var a_=q("Chat"),aE=1;function yE(f){return Boolean(f&&f.role==="user"&&Array.isArray(f.content)&&f.content.some((_)=>_.type==="image_url"))}function gE(f,_){let E=l(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 x=Zf(_,Date.now());return{reason:E.reason,...T!==void 0?{statusCode:T}:{},...x!==void 0?{retryAfterMs:x}:{}}}function oE(f){return f!==null&&typeof f==="object"&&"code"in f&&f.code==="STREAM_IDLE_TIMEOUT"}class If{config;models;model;admissionFallbackOwnerId=`pi-service-${process.pid}-${aE++}`;constructor(f){let _=jf(f);this.config={...f,maxContextTokens:_.model.contextWindow,maxOutputTokens:f.maxOutputTokens??_.model.maxTokens},this.models=_.models,this.model=_.model,a_.debug("[PiAIChatService] Initialized",{provider:this.model.provider,model:this.model.id,api:this.model.api})}async chat(f,_,E,T){let x="",A="",Y=[],R,h;for await(let U of this.streamChat(f,_,E,T)){x+=U.content??"",A+=U.reasoningContent??"";for(let M of U.toolCalls??[])if(M.id&&M.type==="function"&&M.function?.name)Y.push(M);R=U.usage??R,h=U.finishReason??h}return{content:x,...A?{reasoningContent:A}:{},...Y.length>0?{toolCalls:Y}:{},usage:R,finishReason:h}}async*streamChat(f,_,E,T){let x=T?.toolChoice?.toolName;if(x&&!_?.some((S)=>S.name===x))throw Error(`Required tool is unavailable: ${x}`);let A=df(f);if(A.some((S)=>yE(S))&&!this.model.input.includes("image"))throw Error(`${this.model.name} does not support image input`);let Y=Boolean(x)||rf(A),R=await of(A,this.model,_,E,x),h=c_({messages:A,context:R,tools:_,requestOptions:T}),U=T?.providerRecovery;if(U&&!g_(U.budgetMs))throw Error("Invalid bounded foreground Provider recovery budget");let M=U?.mode==="bounded_foreground"&&U.budgetMs>0?{budgetMs:U.budgetMs,startedAt:void 0}:void 0,P=M?"bounded_foreground":"standard",u=this.config.maxRetries??2,D=this.config.maxRetries??(M?y_:2),G=M!==void 0&&this.config.maxRetries===void 0,L=0,Q,Pf=this.config.providerCircuitRegistry??h_(),ff=this.config.providerCircuitBreakerOpenMs??zf,Uf=Math.max(Af,Math.min(this.config.streamIdleTimeout??Yf,Xf)),o_=this.config.providerRequestAdmissionScheduler??L_(),d_=this.config.providerRequestConcurrency??Hf,Ff=this.config.providerRequestAdmissionMs??$f,r_=this.config.providerRequestPendingBytes??Gf,uf=T?.providerAdmission??{sessionId:this.admissionFallbackOwnerId,ownerId:this.admissionFallbackOwnerId,requestClass:"internal"},e_=(S)=>Pf.get({provider:S.provider,api:S.api,baseUrl:S.baseUrl??this.config.baseUrl??"",model:S.id,serviceTier:this.config.serviceTier,apiVersion:this.config.apiVersion,apiKey:this.config.apiKey,customHeaders:this.config.customHeaders,openDurationMs:ff,probeLeaseMs:Uf}),i_=(S)=>({provider:S.provider,api:S.api,baseUrl:S.baseUrl??this.config.baseUrl??"",model:S.id,serviceTier:this.config.serviceTier,apiVersion:this.config.apiVersion,apiKey:this.config.apiKey,customHeaders:this.config.customHeaders,maxConcurrent:d_,maxPendingBytes:r_}),C=(S=Date.now())=>{if(!M)return;let O=M.startedAt===void 0?0:Math.min(M.budgetMs,Math.max(0,S-M.startedAt));return{recoveryBudgetMs:M.budgetMs,recoveryElapsedMs:O,recoveryRemainingMs:Math.max(0,M.budgetMs-O)}},F=()=>({mode:P,...C()??{}}),vf=()=>{if(M&&M.startedAt===void 0)M.startedAt=Date.now()},v=()=>{let S=C();return new s(M?.budgetMs??0,S?.recoveryElapsedMs??0)},a=()=>!G||L<D+1,Df=(S,O)=>{let{state:W,...V}=O;return{phase:S,...V,...C()?{recoveryRemainingMs:C()?.recoveryRemainingMs}:{}}},tf=(S)=>({phase:"rejected",requestClass:S.requestClass,resource:S.resource,scope:S.scope,reason:S.reason,queuePosition:0,queueDepth:Math.max(0,S.queued),inFlight:Math.max(0,S.inFlight),limit:Math.max(0,S.limit),waitMs:S.reason==="wait_timeout"?S.maxWaitMs:0,maxWaitMs:S.maxWaitMs,...C()?{recoveryRemainingMs:C()?.recoveryRemainingMs}:{}}),n_=async function*(S){let O=C()?.recoveryRemainingMs,W=O!==void 0&&M?.startedAt!==void 0?Math.min(Ff,O):Ff,V;try{V=o_.admit({scope:i_(S),sessionId:uf.sessionId,ownerId:uf.ownerId,requestClass:uf.requestClass,maxWaitMs:W,pendingBytes:h,signal:E})}catch(N){if(n(N)){if(N.reason==="wait_timeout"&&M?.startedAt!==void 0&&(C()?.recoveryRemainingMs??0)<=0)throw v();yield{providerAdmission:tf(N)}}throw N}let c=V.getSnapshot();if(c.state==="admitted")return await V.ready;yield{providerAdmission:Df("queued",c)};let K=V.ready.then((N)=>({kind:"ready",permit:N}),(N)=>({kind:"error",error:N}));while(!0){let N=V.getSnapshot(),J=Math.max(1,Math.min($_,Math.max(1,W-N.waitMs))),k,X=new Promise((t)=>{k=setTimeout(()=>t({kind:"heartbeat"}),J),k.unref?.()}),H=await Promise.race([K,X]);if(k)clearTimeout(k);if(H.kind==="heartbeat"){yield{providerAdmission:Df("queued",V.getSnapshot())};continue}if(H.kind==="error"){if(n(H.error)){if(H.error.reason==="wait_timeout"&&M?.startedAt!==void 0&&(C()?.recoveryRemainingMs??0)<=0)throw v();yield{providerAdmission:tf(H.error)}}throw H.error}return yield{providerAdmission:Df("admitted",V.getSnapshot())},H.permit}},fE=(S)=>{if(!a())throw v();if(G)L++;Q=void 0;let O=new AbortController,W=E?yf(E,O.signal):O.signal,V;if(M?.startedAt!==void 0){let N=C()?.recoveryRemainingMs??0;if(N<=0)throw v();let J=new s(M.budgetMs,M.budgetMs);V=setTimeout(()=>O.abort(J),N),V.unref?.()}let c=w_(this.config,S,W,T,Y);p_(c,S,(N)=>{Q=N});let K=l_(this.models,S,R,c,{idleTimeoutMs:this.config.streamIdleTimeout??Yf,signal:W,abort:(N)=>O.abort(N)});return async function*(){try{yield*K}finally{if(V)clearTimeout(V)}}()},wf=this,p=(S)=>({phase:S.phase,reason:S.reason,...S.statusCode!==void 0?{statusCode:S.statusCode}:{},...S.retryAfterMs!==void 0?{retryAfterMs:S.retryAfterMs}:{},...S.nextProbeAt!==void 0?{nextProbeAt:S.nextProbeAt}:{},openDurationMs:S.openDurationMs,sampleCount:S.sampleCount,failureCount:S.failureCount,...C()?{recoveryRemainingMs:C()?.recoveryRemainingMs}:{}}),pf=(S,O)=>({phase:S,reason:O.reason,...O.statusCode!==void 0?{statusCode:O.statusCode}:{},retryAfterMs:O.retryAfterMs,...O.nextProbeAt!==void 0?{nextProbeAt:O.nextProbeAt}:{},openDurationMs:O.openDurationMs,sampleCount:O.sampleCount,failureCount:O.failureCount,...C()?{recoveryRemainingMs:C()?.recoveryRemainingMs}:{}}),_E=(S)=>({phase:"probe",reason:S.reason??"server_error",...S.statusCode!==void 0?{statusCode:S.statusCode}:{},openDurationMs:S.openDurationMs??ff,...S.sampleCount!==void 0?{sampleCount:S.sampleCount}:{},...S.failureCount!==void 0?{failureCount:S.failureCount}:{},...C()?{recoveryRemainingMs:C()?.recoveryRemainingMs}:{}}),Of=(S,O,W)=>({providerRetry:{phase:"exhausted",attempt:S,maxRetries:D,reason:O,...W!==void 0?{statusCode:W}:{},...F(),exhaustedBy:"recovery_budget"}}),qf=async function*(S,O,W,V){let c,K=!1,N,J,k=e_(S);for(let X=0;X<=W;X++){if(!a())break;let H,t;while(!H){let B=k.preflight();while(!B.eligible){if(N=B.reason,J=B.statusCode,!M||!V){let Z=pf("rejected",B);throw yield{providerCircuit:Z},new e(Z)}vf();let b=C()?.recoveryRemainingMs??0;if(b<=0){let Z=v();throw yield Of(G?Math.max(0,L-1):X,B.reason,B.statusCode),Z}yield{providerCircuit:pf("waiting",B)};let w=Math.min(Math.max(1,B.retryAfterMs),Qf,b);if(await d(w,E,{throwOnAbort:!0}),(C()?.recoveryRemainingMs??0)<=0){let Z=v();throw yield Of(G?Math.max(0,L-1):X,B.reason,B.statusCode),Z}B=k.preflight()}try{t=yield*n_(S)}catch($){if($ instanceof s)yield Of(G?Math.max(0,L-1):X,N??"timeout",J);throw $}let z=k.check();if(z.allowed)H=z;else t.release(),t=void 0}let y=H.token;if(H.probe)yield{providerCircuit:_E(H)};try{let B=!1,z=!1;for await(let $ of fE(S)){if($.providerStall){yield $;continue}let b=G?L-1:X;if(b>0&&N&&!B)B=!0,yield{providerRetry:{phase:"recovered",attempt:b,maxRetries:D,reason:N,...J!==void 0?{statusCode:J}:{},...F()}};if(!z){z=!0;let w=k.recordSuccess(y);if(w)yield{providerCircuit:p(w)}}K=!0,O(),yield $}if(!z){let $=k.recordSuccess(y);if($)yield{providerCircuit:p($)}}return}catch(B){if(t?.release(),c=B,wf.logIdleTimeout(B,K,S),await wf.handleAbort(E),B instanceof s){if(K)throw Lf(B),B;throw yield{providerRetry:{phase:"exhausted",attempt:G?Math.max(0,L-1):X,maxRetries:D,reason:N??"timeout",...J!==void 0?{statusCode:J}:{},...F(),exhaustedBy:"recovery_budget"}},B}let z=l(B,Q);if(K)throw Lf(B),B;let $=gE(B,Q),b=$?k.recordFailure(y,$):Q&&!oE(B)?k.recordNeutral(y):void 0;if(b)yield{providerCircuit:p(b)};if(!z.retryable||!z.reason){if(X>0&&N)yield{providerRetry:{phase:"exhausted",attempt:G?Math.max(0,L-1):X,maxRetries:D,reason:N,...J!==void 0?{statusCode:J}:{},...F()}};throw B}N=z.reason,J=z.statusCode;let w=X<W&&a();if(b&&b.phase!=="closed"&&w&&(!M||!V)){let Z={...p(b),phase:"rejected"};throw yield{providerCircuit:Z},new e(Z)}if(w){vf();let Z=G?L:X+1,TE=I_(Z,Q,M?{maxDelayMs:Kf,maxExponentialDelayMs:Kf}:void 0),sf=b&&b.phase!=="closed"?b.retryAfterMs??0:0;if(M&&sf>0&&b)yield{providerCircuit:{...p(b),phase:"waiting"}};let xE=C(),Bf=Math.max(TE,sf),g=M?Math.min(Bf,xE?.recoveryRemainingMs??Bf):Bf,Ef={attempt:Z,maxRetries:D,reason:z.reason,...z.statusCode!==void 0?{statusCode:z.statusCode}:{}};if(yield{providerRetry:{phase:"scheduled",...Ef,delayMs:g,nextRetryAt:Date.now()+g,...F()}},M){let o=g;while(o>0){let lf=Math.min(o,Qf);if(await d(lf,E,{throwOnAbort:!0}),o-=lf,(C()?.recoveryRemainingMs??0)<=0){let Tf=v();throw yield{providerRetry:{phase:"exhausted",...Ef,...F(),exhaustedBy:"recovery_budget"}},Tf}if(o>0){if(b&&b.phase!=="closed"&&b.nextProbeAt!==void 0){let Tf=Math.max(0,b.nextProbeAt-Date.now());if(Tf>0)yield{providerCircuit:{...p(b),phase:"waiting",retryAfterMs:Tf}}}yield{providerRetry:{phase:"waiting",...Ef,delayMs:g,nextRetryAt:Date.now()+o,...F()}}}}}else await d(g,E,{throwOnAbort:!0});yield{providerRetry:{phase:"attempt",...Ef,...F()}}}else yield{providerRetry:{phase:"exhausted",attempt:G?Math.max(0,L-1):X,maxRetries:D,reason:z.reason,...z.statusCode!==void 0?{statusCode:z.statusCode}:{},...F(),...M&&(V||!a())?{exhaustedBy:"attempt_limit"}:{}}}}finally{k.abandon(y),t?.release()}}throw c},Nf,mf=!1,_f=this.config.fallbackModels??[],EE=M&&_f.length>0?Math.min(u,D):D;try{for await(let S of qf(this.model,()=>{mf=!0},EE,_f.length===0))yield S;return}catch(S){if(Nf=S,mf||!n(S)&&!Jf(S)&&!l(S,Q).retryable)throw S}for(let[S,O]of _f.entries()){if(!a())break;yield{modelFallback:!0};let W=!1;try{let V=f_(this.config,O),c=S===_f.length-1,K=M&&!c?Math.min(u,D):D;for await(let N of qf(V,()=>{W=!0},K,c))yield N;return}catch(V){if(Nf=V,W||!n(V)&&!Jf(V)&&!l(V,Q).retryable)throw V}}throw Nf}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;a_.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=jf(_);this.config={..._,maxContextTokens:E.model.contextWindow,maxOutputTokens:_.maxOutputTokens??E.model.maxTokens},this.models=E.models,this.model=E.model}}var dE=q("Service");async function Tx(f){let _=f;if(_.provider){let E=af(_.provider);if(Object.keys(E).length>0)_={..._,customHeaders:{...E,..._.customHeaders}},dE.debug(`Injected ${_.provider} specific headers:`,Object.keys(E))}return rE(_)}function rE(f){return new If(f)}
5
- export{nE as Kd,ET as Ld,yf as Md,n as Nd,Z_ as Od,GE as Pd,KT as Qd,If as Rd,Tx as Sd};
@@ -1 +0,0 @@
1
- import{Td as a,Ud as b,Vd as c}from"./chunk-7fqsgdee.js";import"./chunk-qp2z1r7y.js";import"./chunk-26wse17p.js";import"./chunk-hcm55r3d.js";import"./chunk-qb0sqh29.js";import"./chunk-hfrcwkc8.js";export{b as resolveModelConfig,c as getModelDisplayName,a as getModelApiKeyEnvironmentVariable};
@@ -1,2 +0,0 @@
1
- var _=20,T=5242880,A=32000;
2
- export{_ as Zf,T as _f,A as $f};
@@ -1 +0,0 @@
1
- import{Ad as i,Bd as j,Cd as k,Dd as l,Ed as m,Fd as n,Gd as o,Hd as p,Id as q,sd as a,td as b,ud as c,vd as d,wd as e,xd as f,yd as g,zd as h}from"./chunk-94zrzfyz.js";import"./chunk-v508x7cg.js";import"./chunk-wwvb6znp.js";import"./chunk-sx4mkt0c.js";import"./chunk-7sna3js9.js";import"./chunk-m8ss9rmx.js";import"./chunk-j7edwwg1.js";import"./chunk-kfpzrmq7.js";import"./chunk-yk9pxkc1.js";import"./chunk-fhnkyqfb.js";import"./chunk-26wse17p.js";import"./chunk-hcm55r3d.js";import"./chunk-pxqgt2h6.js";import"./chunk-bvf9syb2.js";import"./chunk-q78s028m.js";import"./chunk-qb0sqh29.js";import"./chunk-hfrcwkc8.js";export{a as vanillaStore,c as sessionActions,l as getThinkingModeEnabled,b as getState,n as getServiceTier,o as getResponseVerbosity,m as getReasoningEffort,j as getModelById,e as getMessages,k as getMcpServers,i as getCurrentModel,f as getConfig,p as getCommunicationStyle,h as getAllModels,g as ensureStoreInitialized,q as configActions,d as appActions};
@@ -1,2 +0,0 @@
1
- import{readFileSync as l}from"node:fs";import{dirname as o,join as a}from"node:path";import{fileURLToPath as u}from"node:url";var t={name:"blade-code",version:"0.10.47",private:!1,description:"🗡️ Blade Code - 智能代码助手命令行工具",type:"module",bin:{blade:"dist/blade.js"},files:["dist","vendor/ripgrep/**","README.md"],scripts:{dev:"node scripts/run-bun.js --watch src/blade.tsx","dev:serve":"node scripts/run-bun.js --watch src/blade.tsx serve --port 4097",build:"rm -rf dist && node scripts/run-bun.js run scripts/build.ts",start:"node scripts/run-bun.js run dist/blade.js",test:"node scripts/test.js","test:all":"vitest run --config vitest.config.ts --project='!performance' && vitest run --config vitest.config.ts --project=performance","test:unit":"node scripts/test.js unit","test:integration":"node scripts/test.js integration","test:real-api":"node scripts/test.js realApi","test:real-api:qualification":"node scripts/test.js realApiQualification","test:cli":"node scripts/test.js cli","test:headless-core":"node scripts/test.js headlessCore","test:e2e":"node scripts/test.js e2e","test:performance":"node scripts/test.js performance","test:snapshot":"node scripts/test.js snapshot","test:security":"node scripts/test.js security","browser:install":"playwright install chromium","browser:check":"node scripts/run-bun.js run scripts/browser-check.ts","test:coverage":"node scripts/test.js all --coverage","test:watch":"vitest --watch --config vitest.config.ts","qualify:local":"node scripts/run-bun.js run scripts/qualify.ts local","qualify:production":"node scripts/run-bun.js run scripts/qualify.ts production","benchmark:repo":"node scripts/run-bun.js run scripts/run-real-repo-benchmark.ts","test:update-snapshots":"node scripts/test.js snapshot --update",lint:"biome lint src tests","lint:fix":"biome lint --write src tests","type-check":"tsc --noEmit","format:check":"biome format src tests",ready:"node scripts/run-bun.js run scripts/qualify.ts production","detect-unused":"node scripts/run-bun.js run scripts/detect-unused.ts",prepack:"node scripts/run-bun.js run build",release:"node scripts/release.js","release:dry":"node scripts/release.js --dry-run","release:major":"node scripts/release.js --major","release:minor":"node scripts/release.js --minor","release:patch":"node scripts/release.js --patch"},keywords:["cli","blade","ai","assistant","agent","llm"],author:"echoVic",license:"MIT",engines:{node:">=22.19.0"},optionalDependencies:{"@vscode/ripgrep":"^1.18.0","better-sqlite3":"^11.8.1","bun-pty":"^0.4.8","node-pty":"1.1.0"},dependencies:{"@agentclientprotocol/sdk":"^1.3.0","@anthropic-ai/sandbox-runtime":"0.0.67","@earendil-works/pi-ai":"0.83.0","@inkjs/ui":"^2.0.0","@modelcontextprotocol/sdk":"^1.30.0",ahooks:"^3.9.7","ansi-escapes":"^7.3.0",ajv:"^8.17.1","async-mutex":"^0.5.0",axios:"^1.19.0",chalk:"^5.4.1",diff:"^8.0.2","fast-glob":"^3.3.3","fuse.js":"^7.5.0","gray-matter":"^4.0.3",hono:"^4.13.0",ink:"npm:@jrichman/ink@6.4.10","ink-big-text":"^2.0.0","ink-gradient":"^3.0.0","ink-select-input":"^6.2.0","ink-spinner":"^5.0.0","ink-text-input":"^6.0.0","js-tiktoken":"^1.0.21","lodash-es":"^4.18.1",lowlight:"^3.3.0","lru-cache":"^11.5.2",nanoid:"^5.1.6",open:"^10.1.2",picomatch:"^4.0.5",react:"19.2.4","react-dom":"19.2.4",semver:"^7.8.5","string-width":"^8.2.2",typebox:"1.3.10",undici:"^7.16.0","vscode-jsonrpc":"8.2.1","vscode-languageserver-protocol":"3.17.5","vscode-languageserver-types":"3.17.5","write-file-atomic":"^7.0.0",ws:"^8.21.2",yaml:"^2.9.0",yargs:"^18.1.0",zustand:"^5.0.14"},devDependencies:{"@biomejs/biome":"2.5.7","@types/bun":"^1.3.14","@types/json-schema":"^7.0.15","@types/lodash-es":"^4.17.12","@types/node":"^22.15.24","@types/picomatch":"^4.0.3","@types/react":"19.2.10","@types/react-dom":"19.2.3","@types/semver":"^7.8.0","@types/write-file-atomic":"^4.0.3","@types/ws":"^8.18.1","@types/yargs":"^17.0.35","@vitest/coverage-v8":"^4.1.10",jsdom:"^26.0.0",playwright:"1.62.1",typescript:"^5.9.2",vitest:"^4.1.10"}};var s;function r(){if(s)return s;let i=o(u(import.meta.url));for(let n=0;n<5;n++){try{let e=JSON.parse(l(a(i,"package.json"),"utf8"));if(e.name===t.name&&typeof e.version==="string"&&typeof e.description==="string")return s=e,s}catch{}i=o(i)}return s={name:t.name,version:process.env.BLADE_VERSION??t.version,description:t.description},s}function v(){return{...r()}}function p(){return r().version}function h(){return r().name}function w(){return r().description}function f(){return`v${p()}`}function g(){return`v${p()} © 2025 Blade Code`}
2
- export{v as Rg,p as Sg,h as Tg,w as Ug,f as Vg,g as Wg};