blade-code 0.10.41 → 0.10.43

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 (110) hide show
  1. package/dist/blade.js +2 -2
  2. package/dist/{chunk-qgez5vw6.js → chunk-0qsssahq.js} +1 -1
  3. package/dist/{chunk-5ygv33qe.js → chunk-26wse17p.js} +2 -2
  4. package/dist/{chunk-eg5sz4bw.js → chunk-2eddqgnh.js} +1 -1
  5. package/dist/{chunk-01jt0mpr.js → chunk-2yvte5a7.js} +1 -1
  6. package/dist/chunk-32g59k4p.js +8 -0
  7. package/dist/{chunk-q87nwpsb.js → chunk-372mmzj3.js} +1 -1
  8. package/dist/{chunk-2bm55evt.js → chunk-3bpxvanm.js} +2 -2
  9. package/dist/chunk-3y784b9c.js +1 -0
  10. package/dist/{chunk-bdxaz350.js → chunk-56qew7w0.js} +2 -2
  11. package/dist/chunk-5wzjdfde.js +1 -0
  12. package/dist/chunk-6ch7a6xf.js +44 -0
  13. package/dist/chunk-6cx4t8r6.js +1 -0
  14. package/dist/chunk-6skymhz5.js +1 -0
  15. package/dist/{chunk-4ekrbk2w.js → chunk-7fqsgdee.js} +2 -2
  16. package/dist/{chunk-wvc6bx0t.js → chunk-7s5hw0gr.js} +7 -7
  17. package/dist/{chunk-gbbnjzy8.js → chunk-7sna3js9.js} +1 -1
  18. package/dist/chunk-8vsx6m43.js +10 -0
  19. package/dist/{chunk-t80e2bms.js → chunk-8vtyatd6.js} +1 -1
  20. package/dist/{chunk-0hqsdbkr.js → chunk-9rrced3b.js} +1 -1
  21. package/dist/chunk-ag5ea7ce.js +111 -0
  22. package/dist/{chunk-4mdy9d43.js → chunk-bct3s5vs.js} +1 -1
  23. package/dist/{chunk-5sbewyjn.js → chunk-bvf9syb2.js} +2 -2
  24. package/dist/chunk-c3020yav.js +22 -0
  25. package/dist/{chunk-wk0vpgwk.js → chunk-c8ddch38.js} +395 -395
  26. package/dist/{chunk-dp9xzsja.js → chunk-c9s4n31b.js} +1 -1
  27. package/dist/{chunk-tsskar00.js → chunk-cxzx7j0p.js} +1 -1
  28. package/dist/{chunk-sfbprf9r.js → chunk-d5x5wknc.js} +1 -1
  29. package/dist/{chunk-adgx9vd7.js → chunk-dcp5gg6q.js} +3 -3
  30. package/dist/{chunk-f4bx2n1y.js → chunk-e1vyznkn.js} +3 -3
  31. package/dist/chunk-egczvfsv.js +5 -0
  32. package/dist/{chunk-5zf8204m.js → chunk-f4sp074f.js} +1 -1
  33. package/dist/chunk-fer18bbe.js +1 -0
  34. package/dist/{chunk-fz55cnws.js → chunk-fhnkyqfb.js} +2 -2
  35. package/dist/{chunk-y30kw6gj.js → chunk-fk4wbmv6.js} +2 -2
  36. package/dist/chunk-fzqsea19.js +1 -0
  37. package/dist/{chunk-x04xb9g3.js → chunk-hcm55r3d.js} +1 -1
  38. package/dist/{chunk-22h5kh4z.js → chunk-hfrcwkc8.js} +1 -1
  39. package/dist/chunk-j7edwwg1.js +2 -0
  40. package/dist/{chunk-yhw0pvyt.js → chunk-jpz805fs.js} +2 -2
  41. package/dist/chunk-k87p7x1e.js +1 -0
  42. package/dist/{chunk-g9re8v25.js → chunk-kfpzrmq7.js} +1 -1
  43. package/dist/chunk-m8a2qj5c.js +1 -0
  44. package/dist/{chunk-b5b8fb9y.js → chunk-m8ss9rmx.js} +1 -1
  45. package/dist/{chunk-5cgyevqj.js → chunk-mrsc4a55.js} +1 -1
  46. package/dist/{chunk-xs7w13na.js → chunk-n7dvqbrc.js} +1 -1
  47. package/dist/{chunk-w07gb3h0.js → chunk-nsrghqdx.js} +1 -1
  48. package/dist/chunk-nwzjmcxq.js +1 -0
  49. package/dist/chunk-nynfqgsj.js +6 -0
  50. package/dist/chunk-pyk2ey7y.js +1 -0
  51. package/dist/{chunk-npgt73cg.js → chunk-q78s028m.js} +1 -1
  52. package/dist/{chunk-9neq5xrb.js → chunk-qb0sqh29.js} +2 -2
  53. package/dist/chunk-qmcj20g2.js +1 -0
  54. package/dist/chunk-qnxgzyyx.js +2 -0
  55. package/dist/{chunk-fxw1q5j5.js → chunk-qp2z1r7y.js} +1 -1
  56. package/dist/{chunk-djr17h80.js → chunk-rwjm6p0f.js} +1 -1
  57. package/dist/chunk-s9s9daak.js +1 -0
  58. package/dist/{chunk-8xfzbv9v.js → chunk-skb4h36j.js} +1 -1
  59. package/dist/{chunk-ens8nsge.js → chunk-sqd5ge5s.js} +1 -1
  60. package/dist/chunk-t2r7tqn0.js +2 -0
  61. package/dist/{chunk-n0ebpwxd.js → chunk-tpa75y39.js} +1 -1
  62. package/dist/chunk-txkrtgcd.js +2 -0
  63. package/dist/{chunk-3p32k12g.js → chunk-v9tzhe90.js} +2 -2
  64. package/dist/{chunk-358zaryv.js → chunk-vbpykrxd.js} +2 -2
  65. package/dist/{chunk-27w2k6t7.js → chunk-w5ayh9b8.js} +2 -2
  66. package/dist/{chunk-atsw605q.js → chunk-wwvb6znp.js} +1 -1
  67. package/dist/{chunk-yxwargqc.js → chunk-x2vqgssm.js} +2 -2
  68. package/dist/chunk-y6tkxqjx.js +2 -0
  69. package/dist/{chunk-nhzdkxnx.js → chunk-yk9pxkc1.js} +1 -1
  70. package/dist/{chunk-hjkdc185.js → chunk-yqy000kg.js} +2 -2
  71. package/dist/chunk-yt9qer14.js +1 -0
  72. package/dist/{chunk-6dma8han.js → chunk-yypnfmed.js} +2 -2
  73. package/dist/chunk-z1aqe7ms.js +1 -0
  74. package/dist/web/assets/{ChatView-BP89vdT_.js → ChatView-CyxiCTbL.js} +3 -3
  75. package/dist/web/assets/{CodeBlockHighlighter-UnjC3KVk.js → CodeBlockHighlighter-Bb3gIeQv.js} +1 -1
  76. package/dist/web/assets/{FilePreview-D0BiZowf.js → FilePreview-BXg9VaTv.js} +1 -1
  77. package/dist/web/assets/{MarkdownRenderer-CPu_rkPT.js → MarkdownRenderer-vxpqGt4L.js} +3 -3
  78. package/dist/web/assets/{SettingsModal-CM9pcJas.js → SettingsModal-4L1nPkh0.js} +1 -1
  79. package/dist/web/assets/{TaskSwitcher-BOCm7kPO.js → TaskSwitcher-DKSqTLK1.js} +1 -1
  80. package/dist/web/assets/{TerminalPanel-CUZ4slSS.js → TerminalPanel-Bv9PDclr.js} +1 -1
  81. package/dist/web/assets/index-Bz4W1-8a.js +11 -0
  82. package/dist/web/assets/{session-events-109FkhOM.js → session-events-DJh6SZcl.js} +5 -5
  83. package/dist/web/index.html +2 -2
  84. package/package.json +1 -1
  85. package/dist/chunk-1j2sf8mc.js +0 -1
  86. package/dist/chunk-1kwm2m6t.js +0 -1
  87. package/dist/chunk-5w8edqbt.js +0 -1
  88. package/dist/chunk-62jaf7ej.js +0 -22
  89. package/dist/chunk-6a3c496e.js +0 -1
  90. package/dist/chunk-6fe9kq17.js +0 -1
  91. package/dist/chunk-asnzpfzh.js +0 -10
  92. package/dist/chunk-atdeg922.js +0 -2
  93. package/dist/chunk-bw7fgs2n.js +0 -1
  94. package/dist/chunk-ck8sw2zp.js +0 -2
  95. package/dist/chunk-d61673v7.js +0 -5
  96. package/dist/chunk-f7y4m3y0.js +0 -1
  97. package/dist/chunk-fnz5g9ac.js +0 -1
  98. package/dist/chunk-kjn0yaqw.js +0 -1
  99. package/dist/chunk-m883e8d4.js +0 -1
  100. package/dist/chunk-mx5s93np.js +0 -6
  101. package/dist/chunk-nsawkccy.js +0 -2
  102. package/dist/chunk-p54vmne8.js +0 -1
  103. package/dist/chunk-qy9qkvwe.js +0 -1
  104. package/dist/chunk-s8f8amvg.js +0 -1
  105. package/dist/chunk-v80xem15.js +0 -2
  106. package/dist/chunk-w1vcjwbx.js +0 -8
  107. package/dist/chunk-x5s68axq.js +0 -44
  108. package/dist/chunk-z15h0370.js +0 -1
  109. package/dist/chunk-zracmha2.js +0 -111
  110. package/dist/web/assets/index-CthLsVgC.js +0 -11
@@ -1,5 +0,0 @@
1
- import{$f as Uf,Sf as ax,Tf as uf,Uf as cf,Vf as ox,Wf as kf,Yf as Sf,_f as Kf,ag as hf,bg as Qf,dg as Df,eg as bf,gg as B}from"./chunk-nhzdkxnx.js";import{ng as t}from"./chunk-fz55cnws.js";import{rg as ef,tg as Zf}from"./chunk-5ygv33qe.js";import{wg as wx}from"./chunk-x04xb9g3.js";var P_={openrouter:{"HTTP-Referer":"https://github.com/echoVic/blade-code","X-Title":"Blade"},cerebras:{"X-Cerebras-3rd-Party-Integration":"blade"}},sf=(f)=>P_[f]||{};var E_=new Set(["user-cancel","interrupt","sibling-error","timeout"]);function Gf(f){return typeof f==="string"&&E_.has(f)}function P0(f){if(!f.aborted)return;if(Gf(f.reason))return f.reason;return"user-cancel"}function h0(f){if(Gf(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 af(...f){let x=f.filter(Boolean);if(x.length===0)return new AbortController().signal;if(x.length===1)return x[0];let _=AbortSignal;if(typeof _.any==="function")return _.any(x);for(let P of x)if(P.aborted)return P;let M=new AbortController,T=new Map;for(let P of x){let D=()=>{M.abort(P.reason);for(let[U,E]of T)U.removeEventListener("abort",E)};T.set(P,D)}for(let[P,D]of T)P.addEventListener("abort",D,{once:!0});return M.signal}function r(f,x,_){let M=_?.throwOnAbort??!1;if(x?.aborted){if(M)return Promise.reject(new DOMException("Aborted","AbortError"));return Promise.resolve()}return new Promise((T,P)=>{let D,U=setTimeout(()=>{if(x&&D)x.removeEventListener("abort",D);T()},f);if(x)D=()=>{if(clearTimeout(U),M)P(new DOMException("Aborted","AbortError"));else T()},x.addEventListener("abort",D,{once:!0})})}var U_=t("Chat"),h_={input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}};function Yf(f){if(typeof f==="string")return f;return f.filter((x)=>x.type==="text").map((x)=>x.text).join(`
2
- `)}function D_(f){if(!f)return{};try{let x=JSON.parse(f);return x&&typeof x==="object"&&!Array.isArray(x)?x:{}}catch{return U_.warn("[PiAIChatService] Invalid historical tool arguments",{value:f}),{}}}function R_(f){let x=f.match(/^data:([^;,]+);base64,(.+)$/s);return x?{mimeType:x[1],data:x[2]}:void 0}async function V_(f,x){let _=R_(f);if(_)return{type:"image",..._};if(!/^https?:\/\//i.test(f))return{type:"text",text:`[Unsupported image source: ${f}]`};let M=await fetch(f,{signal:x});if(!M.ok)throw Error(`Failed to load image ${f}: HTTP ${M.status}`);return{type:"image",mimeType:M.headers.get("content-type")?.split(";")[0]??"image/png",data:Buffer.from(await M.arrayBuffer()).toString("base64")}}async function df(f,x,_,M,T){let P=f.filter((E)=>E.role==="system").map((E)=>Yf(E.content)).filter(Boolean).join(`
3
-
4
- `),D=[];for(let E of f){if(E.role==="system")continue;if(E.role==="user"){let V=x.input.includes("image"),A=typeof E.content==="string"?E.content:await Promise.all(E.content.map((R)=>R.type==="text"?Promise.resolve({type:"text",text:R.text}):V?V_(R.image_url.url,M):Promise.resolve({type:"text",text:"[Image omitted: current model does not support image input]"})));D.push({role:"user",content:A,timestamp:Date.now()});continue}if(E.role==="assistant"){let V=[];if(E.reasoningContent?.trim())V.push({type:"thinking",thinking:E.reasoningContent});let A=Yf(E.content);if(A)V.push({type:"text",text:A});for(let R of E.tool_calls??[]){if(!("function"in R))continue;V.push({type:"toolCall",id:R.id,name:R.function.name,arguments:D_(R.function.arguments)})}D.push({role:"assistant",content:V,api:x.api,provider:x.provider,model:x.id,usage:h_,stopReason:E.tool_calls?.length?"toolUse":"stop",timestamp:Date.now()});continue}D.push({role:"toolResult",toolCallId:E.tool_call_id??"",toolName:E.name??"unknown",content:[{type:"text",text:Yf(E.content)}],isError:!1,timestamp:Date.now()})}let U=_?.filter((E)=>!T||E.name===T).map((E)=>({name:E.name,description:E.description,parameters:E.parameters,constrainedSampling:E.constrainedSampling}));return{...P?{systemPrompt:P}:{},messages:D,...U?.length?{tools:U}:{}}}function rf(f){let x=[];for(let _=0;_<f.length;_++){let M=f[_];if(M.role==="tool")continue;let T=M.role==="assistant"&&M.tool_calls?.length?M.tool_calls:void 0;if(!T){x.push(M);continue}let P=[],D=_+1;while(D<f.length&&f[D].role==="tool")P.push(f[D++]);let U=new Set(T.map((A)=>A.id)),E=P.filter((A)=>A.tool_call_id&&U.has(A.tool_call_id)),V=new Set(E.map((A)=>A.tool_call_id));if(U.size===T.length&&E.length===U.size&&V.size===U.size)x.push(M,...E);_=D-1}return x}function nf(f){return f.some((x)=>x.role==="assistant"&&Boolean(x.tool_calls?.length)&&!x.reasoningContent?.trim())}function fx(f,x){return{...f,...x.baseUrl?{baseUrl:ef(f.api,x.baseUrl)}:{},...x.maxOutputTokens?{maxTokens:x.maxOutputTokens}:{}}}function Cf(f){let x=f.modelCatalog??Zf();return{models:x.models,model:fx(x.getModel(f.provider,f.model),f)}}function xx(f,x){let _=f.modelCatalog??Zf();return fx(_.getModel(x.provider,x.model),f)}import{randomBytes as W_}from"node:crypto";import{createHmac as j_}from"node:crypto";function z_(f){try{let x=new URL(f);if(x.hash="",x.hostname=x.hostname.toLowerCase(),x.searchParams.sort(),x.pathname!=="/")x.pathname=x.pathname.replace(/\/+$/,"");return x.toString()}catch{return f.trim().replace(/\/+$/,"")}}function H_(f){if(!f)return[];return Object.entries(f).map(([x,_])=>[x.trim().toLowerCase(),_.trim()]).sort(([x],[_])=>x.localeCompare(_))}function Af(f,x,_){let M=JSON.stringify([f.provider.trim(),String(f.api).trim(),z_(f.baseUrl),f.model.trim(),f.serviceTier?.trim()??"",f.apiVersion?.trim()??"",f.apiKey??"",H_(f.customHeaders),_]);return j_("sha256",Buffer.from(x)).update(M).digest("hex")}var $_=60000,X_=4,G_=0.8;var Ef=300000,Jf=600000;var _x=128,Mx=256,Y_=1800000,Pf=50;class n 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 Nf(f){return f instanceof n||f!==null&&typeof f==="object"&&"code"in f&&f.code==="PROVIDER_CIRCUIT_OPEN"}function l(f,x){return f!==void 0&&Number.isSafeInteger(f)&&f>0?f:x}function Z_(f,x){return f!==void 0&&Number.isFinite(f)&&f>0&&f<=1?f:x}function C_(f,x){return Af(f,x,{providerCircuitOpenDurationMs:f.openDurationMs})}function i(f){let x=0;for(let _ of f)if(_.failure)x++;return x}function Tx(f){return f!==void 0&&Number.isInteger(f)&&f>=100&&f<=599?f:void 0}function Ax(f){if(f===void 0||!Number.isFinite(f)||f<0)return;return Math.min(Math.ceil(f),Sf)}class Ex{#A=new Map;#U=new WeakMap;#f;#x;#M;#_;constructor(f={}){this.#f=f.processSecret?new Uint8Array(f.processSecret):W_(32),this.#x=f.now??(()=>performance.now()),this.#M=f.wallNow??f.now??Date.now,this.#_={maxEntries:Math.min(l(f.maxEntries,_x),_x),maxWindowEntries:Math.min(l(f.maxWindowEntries,Mx),Mx),windowMs:l(f.windowMs,$_),minSamples:l(f.minSamples,X_),errorRateThreshold:Z_(f.errorRateThreshold,G_),idleTtlMs:l(f.idleTtlMs,Y_)}}get size(){return this.#A.size}get(f){if(f.openDurationMs===0)return this.#P();let x=this.#x();this.#X(x);let _=C_(f,this.#f),M=this.#A.get(_);if(M)return M.lastTouchedAt=x,this.#T(M,f.probeLeaseMs);if(this.#A.size>=this.#_.maxEntries)this.#Z();if(this.#A.size>=this.#_.maxEntries)return this.#P();let T={key:_,state:"closed",samples:[],generation:0,nextAttemptId:1,nextProbeLeaseId:1,configuredOpenDurationMs:f.openDurationMs,effectiveOpenDurationMs:f.openDurationMs,lastTouchedAt:x,detached:!1};return this.#A.set(_,T),this.#T(T,f.probeLeaseMs)}#T(f,x){let _=this,M=Math.max(Ef,Math.min(l(x,Ef),Jf));return{preflight:()=>_.#V(f),check:()=>_.#j(f,M),recordSuccess:(T)=>_.#W(T,"success"),recordFailure:(T,P)=>_.#W(T,"failure",P),recordNeutral:(T)=>_.#W(T,"neutral"),abandon:(T)=>_.#Y(T),snapshot:()=>_.#G(f)}}#P(){let f=this;return{preflight:()=>({eligible:!0}),check:()=>{let x=Object.freeze({kind:"noop"});return f.#U.set(x,{generation:0,attemptId:0,kind:"noop",settled:!1}),{allowed:!0,probe:!1,token:x}},recordSuccess:(x)=>f.#E(x),recordFailure:(x)=>f.#E(x),recordNeutral:(x)=>f.#E(x),abandon:(x)=>f.#Y(x),snapshot:()=>({state:"closed",sampleCount:0,failureCount:0,noop:!0,detached:!1})}}#E(f){let x=this.#U.get(f);if(x?.kind==="noop")x.settled=!0;return}#V(f){let x=this.#x();if(f.detached)return{eligible:!0};if(f.lastTouchedAt=x,this.#$(f,x),f.state==="closed")return{eligible:!0};if(f.state==="open"){let M=f.nextProbeAt??x;return x<M?this.#h(f,M-x):{eligible:!0}}if(f.probeLeaseId===void 0||f.probeLeaseExpiresAt!==void 0&&x>=f.probeLeaseExpiresAt)return{eligible:!0};let _=Math.max(1,(f.probeLeaseExpiresAt??x+Pf)-x);return this.#h(f,Math.min(Pf,_))}#h(f,x){let{allowed:_,...M}=this.#H(f,x);return{eligible:!1,...M}}#j(f,x){let _=this.#x();if(f.detached)return this.#P().check();if(f.lastTouchedAt=_,this.#$(f,_),f.state==="closed")return this.#D(f,"regular");if(f.state==="open"){let T=f.nextProbeAt??_;if(_<T)return this.#H(f,T-_);f.state="half_open",f.generation++,f.probeLeaseId=void 0,f.probeLeaseExpiresAt=void 0}if(f.probeLeaseId===void 0||f.probeLeaseExpiresAt!==void 0&&_>=f.probeLeaseExpiresAt)return this.#z(f,_,x);let M=Math.max(1,(f.probeLeaseExpiresAt??_+Pf)-_);return this.#H(f,Math.min(Pf,M))}#D(f,x,_){let M=Object.freeze({kind:x});return this.#U.set(M,{entry:f,generation:f.generation,attemptId:f.nextAttemptId++,kind:x,..._!==void 0?{probeLeaseId:_}:{},settled:!1}),{allowed:!0,probe:x==="probe",token:M}}#z(f,x,_){let M=f.nextProbeLeaseId++;f.probeLeaseId=M,f.probeLeaseExpiresAt=x+_,f.lastTouchedAt=x;let T=this.#D(f,"probe",M),P=f.lastFailure??{reason:"server_error"};return{...T,reason:P.reason,...P.statusCode!==void 0?{statusCode:P.statusCode}:{},openDurationMs:f.effectiveOpenDurationMs,sampleCount:f.samples.length,failureCount:i(f.samples)}}#H(f,x){let _=f.lastFailure??{reason:"server_error"};return{allowed:!1,state:f.state==="open"?"open":"half_open",reason:_.reason,..._.statusCode!==void 0?{statusCode:_.statusCode}:{},retryAfterMs:Math.max(0,Math.ceil(x)),nextProbeAt:this.#M()+Math.max(0,Math.ceil(x)),openDurationMs:f.effectiveOpenDurationMs,sampleCount:f.samples.length,failureCount:i(f.samples)}}#W(f,x,_){let M=this.#U.get(f);if(!M||M.settled)return;if(M.settled=!0,M.kind==="noop"||!M.entry)return;let T=M.entry;if(T.detached||M.generation!==T.generation||M.kind==="regular"&&T.state!=="closed"||M.kind==="probe"&&(T.state!=="half_open"||M.probeLeaseId!==T.probeLeaseId))return;let P=this.#x();if(T.lastTouchedAt=P,M.kind==="probe"){if(x==="failure"&&_)return this.#R(T,_,P,"reopened");return this.#k(T)}if(x==="neutral")return;if(this.#S(T,x==="failure",P),x!=="failure"||!_)return;let D=i(T.samples),U=T.samples.length===0?0:D/T.samples.length;if(T.samples.length>=this.#_.minSamples&&U>=this.#_.errorRateThreshold)return this.#R(T,_,P,"opened");return}#R(f,x,_,M){let T={reason:x.reason,...Tx(x.statusCode)!==void 0?{statusCode:Tx(x.statusCode)}:{},...Ax(x.retryAfterMs)!==void 0?{retryAfterMs:Ax(x.retryAfterMs)}:{}},P=T.retryAfterMs??0,D=Math.max(f.configuredOpenDurationMs,P);return f.state="open",f.generation++,f.probeLeaseId=void 0,f.probeLeaseExpiresAt=void 0,f.effectiveOpenDurationMs=D,f.nextProbeAt=_+D,f.lastFailure=T,{phase:M,reason:T.reason,...T.statusCode!==void 0?{statusCode:T.statusCode}:{},retryAfterMs:D,nextProbeAt:this.#M()+D,openDurationMs:D,sampleCount:f.samples.length,failureCount:i(f.samples)}}#k(f){let x=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:x.reason,...x.statusCode!==void 0?{statusCode:x.statusCode}:{},openDurationMs:f.effectiveOpenDurationMs,sampleCount:0,failureCount:0}}#Y(f){let x=this.#U.get(f);if(!x||x.settled)return!1;if(x.settled=!0,x.kind==="noop")return!0;let _=x.entry;if(!_||_.detached||x.kind!=="probe"||x.generation!==_.generation||x.probeLeaseId!==_.probeLeaseId)return!1;return _.probeLeaseId=void 0,_.probeLeaseExpiresAt=void 0,_.lastTouchedAt=this.#x(),!0}#S(f,x,_){if(this.#$(f,_),f.samples.length>=this.#_.maxWindowEntries)f.samples.shift();f.samples.push({at:_,failure:x})}#$(f,x){let _=x-this.#_.windowMs,M=0;while(M<f.samples.length&&f.samples[M].at<_)M++;if(M>0)f.samples.splice(0,M)}#G(f){if(!f.detached)this.#$(f,this.#x());return{state:f.state,sampleCount:f.samples.length,failureCount:i(f.samples),...f.nextProbeAt!==void 0?{nextProbeAt:f.nextProbeAt}:{},noop:!1,detached:f.detached}}#X(f){for(let[x,_]of this.#A)if(_.state==="closed"&&f-_.lastTouchedAt>this.#_.idleTtlMs)this.#C(x,_)}#Z(){let f;for(let x of this.#A.values())if(x.state==="closed"&&(!f||x.lastTouchedAt<f.lastTouchedAt))f=x;if(f)this.#C(f.key,f)}#C(f,x){x.detached=!0,this.#A.delete(f)}}var Px;function Ux(){return Px??=new Ex,Px}import{randomBytes as k_}from"node:crypto";var hx=16,Dx=128,Rx=32,Vx=3,jx=16,zx=96,Hx=24,Wx=12,$x=16,Xx=4,Gx=4,Yx=67108864,Zx=33554432,Cx=12,kx=2,Sx=2,Jx=1,Qx=15000,Nx=30000;class e extends Error{reason;scope;requestClass;resource;inFlight;limit;queued;maxWaitMs;code="PROVIDER_ADMISSION_BUSY";retryable;constructor(f,x,_,M,T,P,D,U){super(f==="queue_full"?`Provider request admission ${x} ${M} queue is full`:f==="wait_timeout"?`Provider request admission timed out waiting for ${x} capacity`:"Provider request admission scheduler is closed");this.reason=f;this.scope=x;this.requestClass=_;this.resource=M;this.inFlight=T;this.limit=P;this.queued=D;this.maxWaitMs=U;this.name="ProviderAdmissionError",this.retryable=f!=="closed"}}function ff(f){return f instanceof e||f!==null&&typeof f==="object"&&"code"in f&&f.code==="PROVIDER_ADMISSION_BUSY"}function Z(f,x,_){if(f===void 0||!Number.isSafeInteger(f)||f<=0)return x;return Math.min(f,_)}function S_(f){let x=Z(f.globalMaxInFlight,hx,hx),_=Z(f.globalMaxPending,Dx,Dx),M=Z(f.domainMaxPending,Rx,Rx),T=Math.min(Z(f.ownerMaxInFlight,Vx,Vx),x),P=Math.min(Z(f.ownerMaxPending,jx,jx),_),D=Math.min(Z(f.nonForegroundGlobalMaxPending,Math.min(zx,Math.max(1,Math.floor(_*3/4))),zx),_),U=Math.min(Z(f.nonForegroundDomainMaxPending,Math.min(Hx,Math.max(1,Math.floor(M*3/4))),Hx),M),E=Math.min(Z(f.nonForegroundOwnerMaxPending,Math.min(Wx,Math.max(1,Math.floor(P*3/4))),Wx),P),V=Math.min(Z(f.internalGlobalMaxPending,Math.min($x,Math.max(1,Math.floor(_/8))),$x),D),A=Math.min(Z(f.internalDomainMaxPending,Math.min(Xx,Math.max(1,Math.floor(M/8))),Xx),U),R=Math.min(Z(f.internalOwnerMaxPending,Math.min(Gx,Math.max(1,Math.floor(P/4))),Gx),E),j=Z(f.globalMaxPendingBytes,B,B),z=Math.min(Z(f.domainMaxPendingBytes,Yx,Yx),j),Q=Math.min(Z(f.ownerMaxPendingBytes,Zx,Zx),j),b=Math.min(Z(f.nonForegroundGlobalMaxInFlight,Math.min(Cx,x),Cx),x),u=Math.min(Z(f.nonForegroundOwnerMaxInFlight,Math.min(kx,T),kx),T),Vf=Math.min(Z(f.internalGlobalMaxInFlight,Math.min(Sx,x),Sx),x),xf=Z(f.internalDomainMaxInFlight,Jx,Jx),jf=Z(f.agingMs,Nx,Nx);return{globalMaxInFlight:x,globalMaxPending:_,domainMaxPending:M,ownerMaxInFlight:T,ownerMaxPending:P,nonForegroundGlobalMaxPending:D,nonForegroundDomainMaxPending:U,nonForegroundOwnerMaxPending:E,internalGlobalMaxPending:V,internalDomainMaxPending:A,internalOwnerMaxPending:R,globalMaxPendingBytes:j,domainMaxPendingBytes:z,ownerMaxPendingBytes:Q,nonForegroundGlobalMaxInFlight:b,nonForegroundOwnerMaxInFlight:u,internalGlobalMaxInFlight:Vf,internalDomainMaxInFlight:xf,agingMs:jf}}function Ox(f,x){if(!f.trim())throw Error(`${x} must not be blank`)}function J_(f){if(Ox(f.sessionId,"sessionId"),Ox(f.ownerId,"ownerId"),!Number.isSafeInteger(f.scope.maxConcurrent)||f.scope.maxConcurrent<Uf||f.scope.maxConcurrent>hf)throw Error(`maxConcurrent must be between ${Uf} and ${hf}`);if(!Number.isSafeInteger(f.scope.maxPendingBytes)||f.scope.maxPendingBytes<=0||f.scope.maxPendingBytes>B)throw Error(`maxPendingBytes must be between 1 and ${B}`);if(!Number.isSafeInteger(f.pendingBytes)||f.pendingBytes<=0||f.pendingBytes>B+1)throw Error(`pendingBytes must be between 1 and ${B+1}`);if(!Number.isSafeInteger(f.maxWaitMs)||f.maxWaitMs<0||f.maxWaitMs>Df)throw Error(`maxWaitMs must be 0-${Df}`)}function Of(f,x){if(x!==void 0)return x;if(f?.reason!==void 0)return f.reason;return new DOMException("Provider request admission cancelled","AbortError")}function N_(f,x){return Af(f,x,{providerRequestConcurrency:f.maxConcurrent,providerRequestPendingBytes:f.maxPendingBytes})}class bx{#A;#U;#f;#x=[];#M=new Map;#_=new Map;#T=0;#P=0;#E=0;#V=0;#h=0;#j=0;#D=0;#z=0;#H=1;#W=0;#R=!1;constructor(f={}){this.#A=f.processSecret?new Uint8Array(f.processSecret):k_(32),this.#U=f.now??(()=>performance.now()),this.#f=S_(f)}admit(f){if(J_(f),this.#R)throw this.#O("closed",f,{scope:"global",resource:"stream",inFlight:this.#T,limit:this.#f.globalMaxInFlight},this.#x.length);if(f.signal?.aborted)throw Of(f.signal);let x=N_(f.scope,this.#A),_=this.#M.get(x),M=this.#_.get(f.ownerId),T=_??this.#S(f.scope.maxConcurrent),P=M??this.#$();if(this.#x.length===0&&this.#G(T,P,f.requestClass)){if(!_)this.#M.set(x,T);if(!M)this.#_.set(f.ownerId,P),this.#H++;let j=this.#Z(x,f.ownerId,f.requestClass),z=this.#v(f,0);return{ready:Promise.resolve(j),getSnapshot:()=>({...z}),cancel:()=>{z={...z}}}}let D=this.#k(f,T,P);if(D)throw this.#O("queue_full",f,D,this.#x.length);let U=this.#X(T,P,f.requestClass);if(f.maxWaitMs===0)throw this.#O("wait_timeout",f,U,this.#x.length);if(!_)this.#M.set(x,T);if(!M)this.#_.set(f.ownerId,P),this.#H++;let E,V,A=new Promise((j,z)=>{E=j,V=z});A.catch(()=>{return});let R={domainKey:x,sessionId:f.sessionId,ownerId:f.ownerId,requestClass:f.requestClass,maxWaitMs:f.maxWaitMs,pendingBytes:f.pendingBytes,enqueuedAt:this.#U(),signal:f.signal,resolve:E,reject:V,settled:!1,admitted:!1};if(f.signal)R.abortListener=()=>this.#K(R,Of(f.signal)),f.signal.addEventListener("abort",R.abortListener,{once:!0});return R.timer=setTimeout(()=>this.#B(R),f.maxWaitMs),R.timer.unref?.(),this.#x.push(R),this.#Y(T,P,R),this.#J(),{ready:A,getSnapshot:()=>this.#F(R),cancel:(j)=>this.#K(R,Of(f.signal,j))}}close(){if(this.#R)return;this.#R=!0;for(let f of[...this.#x]){let x=this.#M.get(f.domainKey),_=this.#_.get(f.ownerId),M=x&&_?this.#X(x,_,f.requestClass):{scope:"global",resource:"stream",inFlight:this.#T,limit:this.#f.globalMaxInFlight};this.#N(f,new e("closed",M.scope,f.requestClass,M.resource,M.inFlight,M.limit,this.#x.length,f.maxWaitMs))}}getStats(){return{inFlight:this.#T,queued:this.#x.length,pendingBytes:this.#j,nonForegroundInFlight:this.#P,internalInFlight:this.#E,nonForegroundQueued:this.#V,internalQueued:this.#h,nonForegroundPendingBytes:this.#D,internalPendingBytes:this.#z,domainCount:this.#M.size,ownerCount:this.#_.size,closed:this.#R}}#k(f,x,_){let M=(A,R,j)=>R>=j?{scope:A,resource:"pending_count",inFlight:R,limit:j}:void 0;if(f.requestClass==="internal"){let A=M("class",this.#h,this.#f.internalGlobalMaxPending)??M("class",_.internalQueued,this.#f.internalOwnerMaxPending)??M("class",x.internalQueued,this.#f.internalDomainMaxPending);if(A)return A}if(f.requestClass!=="foreground"){let A=M("class",this.#V,this.#f.nonForegroundGlobalMaxPending)??M("class",_.nonForegroundQueued,this.#f.nonForegroundOwnerMaxPending)??M("class",x.nonForegroundQueued,this.#f.nonForegroundDomainMaxPending);if(A)return A}let T=M("global",this.#x.length,this.#f.globalMaxPending)??M("owner",_.queued,this.#f.ownerMaxPending)??M("domain",x.queued,this.#f.domainMaxPending);if(T)return T;let P=Math.min(f.scope.maxPendingBytes,this.#f.globalMaxPendingBytes),D=Math.min(P,this.#f.domainMaxPendingBytes),U=Math.min(P,this.#f.ownerMaxPendingBytes),E=(A,R)=>f.pendingBytes>R-A,V=(A)=>{if(A==="owner")return{scope:A,resource:"pending_bytes",inFlight:_.inFlight,limit:this.#f.ownerMaxInFlight};if(A==="domain")return{scope:A,resource:"pending_bytes",inFlight:x.inFlight,limit:x.maxConcurrent};return{scope:A,resource:"pending_bytes",inFlight:this.#T,limit:this.#f.globalMaxInFlight}};if(f.requestClass==="internal"){let A=Math.max(1,Math.floor(P/8)),R=Math.max(1,Math.floor(D/4)),j=Math.max(1,Math.floor(U/4));if(E(this.#z,A)||E(_.internalPendingBytes,j)||E(x.internalPendingBytes,R))return V("class")}if(f.requestClass!=="foreground"){let A=Math.max(1,Math.floor(P*3/4)),R=Math.max(1,Math.floor(D*3/4)),j=Math.max(1,Math.floor(U/2));if(E(this.#D,A)||E(_.nonForegroundPendingBytes,j)||E(x.nonForegroundPendingBytes,R))return V("class")}if(E(this.#j,P))return V("global");if(E(_.pendingBytes,U))return V("owner");if(E(x.pendingBytes,D))return V("domain");return}#Y(f,x,_){if(f.queued++,x.queued++,this.#j+=_.pendingBytes,f.pendingBytes+=_.pendingBytes,x.pendingBytes+=_.pendingBytes,_.requestClass!=="foreground")this.#V++,f.nonForegroundQueued++,x.nonForegroundQueued++,this.#D+=_.pendingBytes,f.nonForegroundPendingBytes+=_.pendingBytes,x.nonForegroundPendingBytes+=_.pendingBytes;if(_.requestClass==="internal")this.#h++,f.internalQueued++,x.internalQueued++,this.#z+=_.pendingBytes,f.internalPendingBytes+=_.pendingBytes,x.internalPendingBytes+=_.pendingBytes}#S(f){return{maxConcurrent:f,inFlight:0,nonForegroundInFlight:0,internalInFlight:0,queued:0,nonForegroundQueued:0,internalQueued:0,pendingBytes:0,nonForegroundPendingBytes:0,internalPendingBytes:0}}#$(){return{order:this.#H,inFlight:0,nonForegroundInFlight:0,internalInFlight:0,queued:0,nonForegroundQueued:0,internalQueued:0,pendingBytes:0,nonForegroundPendingBytes:0,internalPendingBytes:0}}#G(f,x,_){if(this.#T>=this.#f.globalMaxInFlight)return!1;if(f.inFlight>=f.maxConcurrent)return!1;if(x.inFlight>=this.#f.ownerMaxInFlight)return!1;if(_==="foreground")return!0;if(this.#P>=this.#f.nonForegroundGlobalMaxInFlight)return!1;if(x.nonForegroundInFlight>=this.#f.nonForegroundOwnerMaxInFlight)return!1;let M=Math.max(1,f.maxConcurrent-1);if(f.nonForegroundInFlight>=M)return!1;if(_!=="internal")return!0;return this.#E<this.#f.internalGlobalMaxInFlight&&f.internalInFlight<this.#f.internalDomainMaxInFlight}#X(f,x,_){if(x.inFlight>=this.#f.ownerMaxInFlight)return{scope:"owner",resource:"stream",inFlight:x.inFlight,limit:this.#f.ownerMaxInFlight};if(_!=="foreground"&&x.nonForegroundInFlight>=this.#f.nonForegroundOwnerMaxInFlight)return{scope:"class",resource:"stream",inFlight:x.nonForegroundInFlight,limit:this.#f.nonForegroundOwnerMaxInFlight};if(f.inFlight>=f.maxConcurrent)return{scope:"domain",resource:"stream",inFlight:f.inFlight,limit:f.maxConcurrent};if(_!=="foreground"){let M=Math.max(1,f.maxConcurrent-1);if(f.nonForegroundInFlight>=M)return{scope:"class",resource:"stream",inFlight:f.nonForegroundInFlight,limit:M}}if(_==="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(_!=="foreground"&&this.#P>=this.#f.nonForegroundGlobalMaxInFlight)return{scope:"class",resource:"stream",inFlight:this.#P,limit:this.#f.nonForegroundGlobalMaxInFlight};if(_==="internal"&&this.#E>=this.#f.internalGlobalMaxInFlight)return{scope:"class",resource:"stream",inFlight:this.#E,limit:this.#f.internalGlobalMaxInFlight};return{scope:"domain",resource:"stream",inFlight:f.inFlight,limit:f.maxConcurrent}}#Z(f,x,_){let M=this.#M.get(f),T=this.#_.get(x);if(!M||!T)throw Error("Provider admission accounting state is unavailable");if(this.#T++,M.inFlight++,T.inFlight++,_!=="foreground")this.#P++,M.nonForegroundInFlight++,T.nonForegroundInFlight++;if(_==="internal")this.#E++,M.internalInFlight++,T.internalInFlight++;let P=!1;return{release:()=>{if(P)return;P=!0,this.#C(f,x,_)}}}#C(f,x,_){let M=this.#M.get(f),T=this.#_.get(x);if(this.#T=Math.max(0,this.#T-1),M)M.inFlight=Math.max(0,M.inFlight-1);if(T)T.inFlight=Math.max(0,T.inFlight-1);if(_!=="foreground"){if(this.#P=Math.max(0,this.#P-1),M)M.nonForegroundInFlight=Math.max(0,M.nonForegroundInFlight-1);if(T)T.nonForegroundInFlight=Math.max(0,T.nonForegroundInFlight-1)}if(_==="internal"){if(this.#E=Math.max(0,this.#E-1),M)M.internalInFlight=Math.max(0,M.internalInFlight-1);if(T)T.internalInFlight=Math.max(0,T.internalInFlight-1)}this.#b(f,x),this.#J()}#J(){if(this.#R)return;while(this.#x.length>0){let f=this.#U(),x=new Map;for(let[U,E]of this.#x.entries()){let V=this.#M.get(E.domainKey),A=this.#_.get(E.ownerId);if(V===void 0||A===void 0||!this.#G(V,A,E.requestClass))continue;let R=this.#L(E,f),j=x.get(E.ownerId);if(!j||R<j.rank||R===j.rank&&U<j.index)x.set(E.ownerId,{pending:E,rank:R,index:U})}let _=[...x.values()].filter(({pending:U})=>{let E=this.#M.get(U.domainKey),V=this.#_.get(U.ownerId);return E!==void 0&&V!==void 0&&this.#G(E,V,U.requestClass)}).map(({pending:U,rank:E})=>({pending:U,rank:E,order:this.#_.get(U.ownerId).order}));if(_.length===0)return;let M=Math.min(..._.map((U)=>U.rank)),T=_.filter((U)=>U.rank===M),D=T.filter((U)=>U.order>this.#W).sort((U,E)=>U.order-E.order)[0]??T.sort((U,E)=>U.order-E.order)[0];this.#I(D.pending,D.order)}}#L(f,x){let _=f.requestClass==="foreground"?0:f.requestClass==="background"?1:2,M=Math.floor(Math.max(0,x-f.enqueuedAt)/this.#f.agingMs);return Math.max(0,_-M)}#I(f,x){if(!this.#Q(f,!1))return;f.settled=!0,f.admitted=!0,this.#W=x;let _=this.#Z(f.domainKey,f.ownerId,f.requestClass);f.permit=_,f.resolve(_)}#B(f){let x=this.#M.get(f.domainKey),_=this.#_.get(f.ownerId),M=x&&_?this.#X(x,_,f.requestClass):{scope:"global",resource:"stream",inFlight:this.#T,limit:this.#f.globalMaxInFlight};this.#N(f,new e("wait_timeout",M.scope,f.requestClass,M.resource,M.inFlight,M.limit,this.#x.length,f.maxWaitMs))}#K(f,x){this.#N(f,x)}#N(f,x){if(!this.#Q(f))return;f.settled=!0,f.reject(x),this.#J()}#Q(f,x=!0){if(f.settled||f.admitted)return!1;let _=this.#x.indexOf(f);if(_<0)return!1;this.#x.splice(_,1);let M=this.#M.get(f.domainKey),T=this.#_.get(f.ownerId);if(M&&T)this.#u(M,T,f);if(this.#c(f),x)this.#b(f.domainKey,f.ownerId);return!0}#u(f,x,_){if(f.queued=Math.max(0,f.queued-1),x.queued=Math.max(0,x.queued-1),this.#j=Math.max(0,this.#j-_.pendingBytes),f.pendingBytes=Math.max(0,f.pendingBytes-_.pendingBytes),x.pendingBytes=Math.max(0,x.pendingBytes-_.pendingBytes),_.requestClass!=="foreground")this.#V=Math.max(0,this.#V-1),f.nonForegroundQueued=Math.max(0,f.nonForegroundQueued-1),x.nonForegroundQueued=Math.max(0,x.nonForegroundQueued-1),this.#D=Math.max(0,this.#D-_.pendingBytes),f.nonForegroundPendingBytes=Math.max(0,f.nonForegroundPendingBytes-_.pendingBytes),x.nonForegroundPendingBytes=Math.max(0,x.nonForegroundPendingBytes-_.pendingBytes);if(_.requestClass==="internal")this.#h=Math.max(0,this.#h-1),f.internalQueued=Math.max(0,f.internalQueued-1),x.internalQueued=Math.max(0,x.internalQueued-1),this.#z=Math.max(0,this.#z-_.pendingBytes),f.internalPendingBytes=Math.max(0,f.internalPendingBytes-_.pendingBytes),x.internalPendingBytes=Math.max(0,x.internalPendingBytes-_.pendingBytes)}#c(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}#b(f,x){let _=this.#M.get(f);if(_&&_.inFlight===0&&_.queued===0)this.#M.delete(f);let M=this.#_.get(x);if(M&&M.inFlight===0&&M.queued===0)this.#_.delete(x)}#F(f){let x=Math.max(0,Math.floor(this.#U()-f.enqueuedAt));if(f.admitted)return{state:"admitted",requestClass:f.requestClass,resource:"stream",scope:"domain",queuePosition:0,queueDepth:this.#x.length,inFlight:this.#T,limit:this.#f.globalMaxInFlight,waitMs:x,maxWaitMs:f.maxWaitMs};let _=this.#M.get(f.domainKey),M=this.#_.get(f.ownerId),T=_&&M?this.#X(_,M,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.#w(f,T.scope),queueDepth:this.#x.length,inFlight:T.inFlight,limit:T.limit,waitMs:x,maxWaitMs:f.maxWaitMs}}#v(f,x){return{state:"admitted",requestClass:f.requestClass,resource:"stream",scope:"domain",queuePosition:0,queueDepth:this.#x.length,inFlight:this.#T,limit:this.#f.globalMaxInFlight,waitMs:x,maxWaitMs:f.maxWaitMs}}#w(f,x){let _=this.#x.filter((M)=>{switch(x){case"owner":return M.ownerId===f.ownerId;case"domain":return M.domainKey===f.domainKey;case"class":return M.requestClass===f.requestClass;case"global":return!0}});return Math.max(1,_.indexOf(f)+1)}#O(f,x,_,M){return new e(f,_.scope,x.requestClass,_.resource,_.inFlight,_.limit,M,x.maxWaitMs)}}var Kx;function Lx(){return Kx??=new bx,Kx}var O_=1e5,K_=4,Q_=4,Ix=8,b_=16,v=32,L_=8;function I_(f,x={}){let _=x.maxBytes??B,M=x.maxNodes??O_;if(!Number.isSafeInteger(_)||_<=0||_>=Number.MAX_SAFE_INTEGER)throw Error("maxBytes must be a positive safe integer");if(!Number.isSafeInteger(M)||M<=0)throw Error("maxNodes must be a positive safe integer");let T=new WeakSet,P=0,D=0,U=!1,E=(A)=>{if(U||A<=0)return;if(!Number.isSafeInteger(A)||A>_-P){P=_+1,U=!0;return}P+=A},V=(A)=>{if(U)return;if(D+=1,D>M){E(_+1);return}if(A===null){E(K_);return}switch(typeof A){case"string":E(Buffer.byteLength(A,"utf8"));return;case"number":case"bigint":E(Ix);return;case"boolean":E(Q_);return;case"undefined":case"function":case"symbol":return;case"object":break}if(T.has(A))return;if(T.add(A),ArrayBuffer.isView(A)){E(v+A.byteLength);return}if(A instanceof ArrayBuffer){E(v+A.byteLength);return}if(A instanceof Date){E(v+Ix);return}if(A instanceof RegExp){E(v+Buffer.byteLength(A.source,"utf8"));return}if(A instanceof Map){E(v);for(let[R,j]of A)if(V(R),V(j),U)return;return}if(A instanceof Set){E(v);for(let R of A)if(V(R),U)return;return}if(A instanceof WeakMap||A instanceof WeakSet){E(v);return}if(Array.isArray(A)){E(b_);for(let R of A)if(V(R),U)return;return}E(v);for(let R of Reflect.ownKeys(A)){if(typeof R!=="string")continue;let j=Object.getOwnPropertyDescriptor(A,R);if(!j?.enumerable||!("value"in j))continue;if(E(L_+Buffer.byteLength(R,"utf8")),V(j.value),U)return}};return V(f),P}function Bx(f){return I_([f.messages,f.context,f.tools,f.requestOptions],{maxBytes:B})}var ux=new WeakSet;class y extends Error{budgetMs;elapsedMs;code="PROVIDER_RECOVERY_BUDGET_EXCEEDED";constructor(f,x){super(`Provider recovery budget exhausted after ${f}ms`);this.budgetMs=f;this.elapsedMs=x;this.name="ProviderRecoveryBudgetExceededError"}}var B_=["gousagelimiterror","freeusagelimiterror","monthly usage limit reached","available balance","insufficient_quota","out of budget","quota exceeded","billing"],u_=["prompt_too_long","prompt is too long","maximum context length","context length exceeded","context_length_exceeded","request too large"],c_=["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 cx(f){return(f instanceof Error?f.message:String(f)).toLowerCase()}function F_(f){let x=cx(f);return u_.some((_)=>x.includes(_))}function Lf(f){if(f!==null&&typeof f==="object")ux.add(f)}function w0(f){return f!==null&&typeof f==="object"&&ux.has(f)}function v_(f){return f!==null&&typeof f==="object"&&"code"in f?f.code:void 0}function w_(f){if(f===null||typeof f!=="object")return;let x=f;for(let _ of["status","statusCode"]){let M=x[_];if(typeof M==="number"&&Number.isInteger(M))return M}return}function q_(f){let x=f.match(/^(?:error:\s*)?(\d{3})\b/),_=f.match(/\b(?:status(?:\s+code)?|http)[:\s]+(\d{3})\b/),M=Number(x?.[1]??_?.[1]);return Number.isInteger(M)?M:void 0}function g(f,x){let _=cx(f),M=v_(f);if(M==="STREAM_IDLE_TIMEOUT"||M==="PROVIDER_RECOVERY_BUDGET_EXCEEDED"||f instanceof Error&&f.name==="AbortError"||_.includes("request aborted")||_==="aborted")return{retryable:!1};if(B_.some((P)=>_.includes(P))||F_(f))return{retryable:!1};if(x?.shouldRetry==="false")return{retryable:!1,statusCode:x.statusCode};let T=x?.statusCode??w_(f)??q_(_);if(x?.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(M==="PROVIDER_STREAM_CLOSED"||_.includes("stream closed before completion")||_.includes("ended without")||_.includes("stream ended before"))return{retryable:!0,reason:"stream_closed",statusCode:T};if(c_.some((P)=>_.includes(P)))return{retryable:!0,reason:"transport",statusCode:T};if(_.includes("timeout")||_.includes("timed out")||_.includes("temporarily unavailable")||_.includes("upstream_error")||_.includes("overloaded")||_.includes("rate limit")||_.includes("too many requests")||_.includes("service unavailable")||_.includes("server error")||_.includes("internal error")||_.includes("please retry")||_.includes("try your request again"))return{retryable:!0,reason:_.includes("rate")||_.includes("too many")?"rate_limit":_.includes("timeout")||_.includes("timed out")?"timeout":"server_error",statusCode:T};return{retryable:!1,statusCode:T}}function If(f,x){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 _=Number.parseFloat(f.retryAfter);if(Number.isFinite(_))return Math.max(0,_*1000);let M=Date.parse(f.retryAfter);return Number.isFinite(M)?Math.max(0,M-x):void 0}function Fx(f,x,_={}){let M=_.now??Date.now(),T=_.maxDelayMs??60000,P=If(x,M);if(P!==void 0)return Math.min(Math.ceil(P),T);let D=Math.max(0,f-1),U=_.maxExponentialDelayMs??8000,E=Math.min(500*2**D,U),V=Math.max(0,Math.min(1,_.random??Math.random())),A=E*(0.75+V*0.25);return Math.min(Math.round(A),T)}function qx(f,x){let _=f.onPayload;f.onPayload=async(M,T)=>{let P=_?await _(M,T):M;return x(P===void 0?M:P,T)}}function p_(f){if(!f.reasoningEnabled)return;return f.reasoningEffort??f.reasoningLevel??"high"}function m_(f){switch(f){case"minimal":return"MINIMAL";case"low":return"LOW";case"medium":return"MEDIUM";default:return"HIGH"}}function t_(f,x,_,M){let T=M?void 0:p_(_);if(!T){if(x.api==="anthropic-messages")f.thinkingEnabled=!1;if(x.api==="google-generative-ai"||x.api==="google-vertex")f.thinking={enabled:!1};return}switch(x.api){case"anthropic-messages":f.thinkingEnabled=!0,f.effort=T;break;case"google-generative-ai":case"google-vertex":f.thinking={enabled:!0,level:m_(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 l_(f,x,_){if(!_)return;switch(x){case"anthropic-messages":case"bedrock-converse-stream":f.toolChoice={type:"tool",name:_};break;case"openai-completions":case"mistral-conversations":case"pi-messages":f.toolChoice={type:"function",function:{name:_}};break;case"openai-responses":case"openai-codex-responses":case"azure-openai-responses":f.toolChoice={type:"function",name:_};break;case"google-generative-ai":case"google-vertex":f.toolChoice="any";break}}function y_(f,x,_){let M=_.serviceTier;if(!M)return;if(x.api==="openai-responses"||x.api==="openai-codex-responses"||x.api==="azure-openai-responses"){f.serviceTier=M;return}if(x.api!=="openai-completions"&&!(x.api==="anthropic-messages"&&M==="fast"))return;qx(f,(T)=>{if(!T||typeof T!=="object"||Array.isArray(T))return T;return x.api==="anthropic-messages"?{...T,speed:"fast"}:{...T,service_tier:M}})}function g_(f,x,_){let M=_.responseVerbosity;if(!M)return;if(wx(x,M),x.api==="openai-codex-responses"){f.textVerbosity=M;return}qx(f,(T)=>{if(!T||typeof T!=="object"||Array.isArray(T))return T;if(x.api==="openai-completions")return{...T,verbosity:M};let P="text"in T&&T.text&&typeof T.text==="object"&&!Array.isArray(T.text)?T.text:{};return{...T,text:{...P,verbosity:M}}})}function px(f,x,_,M,T=!1){let P={apiKey:f.apiKey,headers:f.customHeaders,signal:_,temperature:M?.temperature??f.temperature??0,maxTokens:M?.maxOutputTokens??f.maxOutputTokens,timeoutMs:f.timeout,maxRetries:0,cacheRetention:f.enablePromptCaching?"short":"none"};if(t_(P,x,f,T),l_(P,x.api,M?.toolChoice?.toolName),y_(P,x,f),g_(P,x,f),x.api==="azure-openai-responses")P.azureBaseUrl=f.baseUrl,P.azureApiVersion=f.apiVersion,P.azureDeploymentName=x.id;return P}function vx(f,x){let _=x.get("x-should-retry");return{statusCode:f,...x.get("retry-after")!==null?{retryAfter:x.get("retry-after")??void 0}:{},...x.get("retry-after-ms")!==null?{retryAfterMs:x.get("retry-after-ms")??void 0}:{},..._==="true"||_==="false"?{shouldRetry:_}:{}}}var s_=new Set(["anthropic-messages","openai-completions","openai-responses","openai-codex-responses","azure-openai-responses","pi-messages"]);function mx(f,x,_){let M=f.onResponse;if(f.onResponse=async(P,D)=>{let U=new Headers(P.headers);_(vx(P.status,U)),await M?.(P,D)},!s_.has(x.api)||typeof globalThis.fetch!=="function")return;let T=typeof f.fetch==="function"?f.fetch:globalThis.fetch.bind(globalThis);f.fetch=async(P,D)=>{let U=await T(P,D);return _(vx(U.status,U.headers)),U}}function tx(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 Rf=300000,a_=30000;class lx 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 yx extends Error{code="PROVIDER_STREAM_CLOSED";constructor(){super("Provider stream closed before completion");this.name="ProviderStreamClosedError"}}function Bf(f){return f.reason instanceof Error?f.reason:new DOMException("Aborted","AbortError")}function o_(f){return f.idleTimeoutMs&&f.idleTimeoutMs>0?f.idleTimeoutMs:Rf}function d_(f,x){if(x===0)return;let _=x!==void 0&&x>0?x:a_;return Math.max(1,Math.min(_,Math.floor(f/2)))}function r_(f,x,_){if(_?.aborted)return Promise.reject(Bf(_));return new Promise((M,T)=>{let P=!1,D=()=>{clearTimeout(A),_?.removeEventListener("abort",V)},U=(R)=>{if(P)return;P=!0,D(),M(R)},E=(R)=>{if(P)return;P=!0,D(),T(R instanceof Error?R:Error(String(R)))},V=()=>{if(_)E(Bf(_))},A=setTimeout(()=>U({kind:"timer"}),Math.max(0,x));if(_?.addEventListener("abort",V,{once:!0}),_?.aborted){V();return}f.then((R)=>U({kind:"next",result:R}),E)})}async function*i_(f,x,_){let M=o_(x),T=d_(M,x.stallWarningMs);if(x.signal?.aborted)throw Bf(x.signal);let P=Date.now(),D=Promise.resolve().then(()=>f.next()),U;for(;;){let V=await r_(D,(U?M:T??M)-(Date.now()-P),x.signal);if(V.kind==="next"){if(U)yield{...U,phase:"recovered",durationMs:Math.max(U.durationMs,Date.now()-P)};return V.result}if(!U&&T!==void 0){_.stallCount++,U={phase:"detected",stallCount:_.stallCount,durationMs:T,warningAfterMs:T,timeoutMs:M,outputStarted:_.outputStarted},yield U;continue}let A=new lx(M);throw x.abort?.(A),A}}async function*gx(f,x,_,M,T={}){let D=f.stream(x,_,M)[Symbol.asyncIterator](),U=0,E=!1,V={stallCount:0,outputStarted:!1};try{while(!0){let A=i_(D,T,V),R=await A.next();while(!R.done)yield{providerStall:R.value},R=await A.next();let j=R.value;if(j.done)throw new yx;let z=j.value;switch(z.type){case"text_delta":V.outputStarted=!0,yield{content:z.delta};break;case"thinking_delta":V.outputStarted=!0,yield{reasoningContent:z.delta};break;case"toolcall_end":V.outputStarted=!0,yield{toolCalls:[{index:U++,id:z.toolCall.id,type:"function",function:{name:z.toolCall.name,arguments:JSON.stringify(z.toolCall.arguments)}}]};break;case"done":E=!0,yield{finishReason:z.reason,usage:tx(z.message.usage)};return;case"error":throw Error(z.error.errorMessage??`Request ${z.reason==="aborted"?"aborted":"failed"}`)}}}finally{if(!E)Promise.resolve(D.return?.()).catch(()=>{return})}}var sx=t("Chat"),n_=1;function e_(f){return Boolean(f&&f.role==="user"&&Array.isArray(f.content)&&f.content.some((x)=>x.type==="image_url"))}function f0(f,x){let _=g(f,x);if(!_.retryable||!_.reason)return;let M=_.statusCode;switch(_.reason){case"rate_limit":if(M!==429)return;break;case"server_error":if(M===void 0||M<500||M>599)return;break;case"transport":case"stream_closed":break;case"timeout":return}let T=If(x,Date.now());return{reason:_.reason,...M!==void 0?{statusCode:M}:{},...T!==void 0?{retryAfterMs:T}:{}}}function x0(f){return f!==null&&typeof f==="object"&&"code"in f&&f.code==="STREAM_IDLE_TIMEOUT"}class Ff{config;models;model;admissionFallbackOwnerId=`pi-service-${process.pid}-${n_++}`;constructor(f){let x=Cf(f);this.config={...f,maxContextTokens:x.model.contextWindow,maxOutputTokens:f.maxOutputTokens??x.model.maxTokens},this.models=x.models,this.model=x.model,sx.debug("[PiAIChatService] Initialized",{provider:this.model.provider,model:this.model.id,api:this.model.api})}async chat(f,x,_,M){let T="",P="",D=[],U,E;for await(let V of this.streamChat(f,x,_,M)){T+=V.content??"",P+=V.reasoningContent??"";for(let A of V.toolCalls??[])if(A.id&&A.type==="function"&&A.function?.name)D.push(A);U=V.usage??U,E=V.finishReason??E}return{content:T,...P?{reasoningContent:P}:{},...D.length>0?{toolCalls:D}:{},usage:U,finishReason:E}}async*streamChat(f,x,_,M){let T=M?.toolChoice?.toolName;if(T&&!x?.some((h)=>h.name===T))throw Error(`Required tool is unavailable: ${T}`);let P=rf(f);if(P.some((h)=>e_(h))&&!this.model.input.includes("image"))throw Error(`${this.model.name} does not support image input`);let D=Boolean(T)||nf(P),U=await df(P,this.model,x,_,T),E=Bx({messages:P,context:U,tools:x,requestOptions:M}),V=M?.providerRecovery;if(V&&!ox(V.budgetMs))throw Error("Invalid bounded foreground Provider recovery budget");let A=V?.mode==="bounded_foreground"&&V.budgetMs>0?{budgetMs:V.budgetMs,startedAt:void 0}:void 0,R=A?"bounded_foreground":"standard",j=this.config.maxRetries??2,z=this.config.maxRetries??(A?ax:2),Q=A!==void 0&&this.config.maxRetries===void 0,b=0,u,Vf=this.config.providerCircuitRegistry??Ux(),xf=this.config.providerCircuitBreakerOpenMs??kf,jf=Math.max(Ef,Math.min(this.config.streamIdleTimeout??Rf,Jf)),dx=this.config.providerRequestAdmissionScheduler??Lx(),rx=this.config.providerRequestConcurrency??Kf,vf=this.config.providerRequestAdmissionMs??Qf,ix=this.config.providerRequestPendingBytes??bf,zf=M?.providerAdmission??{sessionId:this.admissionFallbackOwnerId,ownerId:this.admissionFallbackOwnerId,requestClass:"internal"},nx=(h)=>Vf.get({provider:h.provider,api:h.api,baseUrl:h.baseUrl??this.config.baseUrl??"",model:h.id,serviceTier:this.config.serviceTier,apiVersion:this.config.apiVersion,apiKey:this.config.apiKey,customHeaders:this.config.customHeaders,openDurationMs:xf,probeLeaseMs:jf}),ex=(h)=>({provider:h.provider,api:h.api,baseUrl:h.baseUrl??this.config.baseUrl??"",model:h.id,serviceTier:this.config.serviceTier,apiVersion:this.config.apiVersion,apiKey:this.config.apiKey,customHeaders:this.config.customHeaders,maxConcurrent:rx,maxPendingBytes:ix}),Y=(h=Date.now())=>{if(!A)return;let H=A.startedAt===void 0?0:Math.min(A.budgetMs,Math.max(0,h-A.startedAt));return{recoveryBudgetMs:A.budgetMs,recoveryElapsedMs:H,recoveryRemainingMs:Math.max(0,A.budgetMs-H)}},F=()=>({mode:R,...Y()??{}}),wf=()=>{if(A&&A.startedAt===void 0)A.startedAt=Date.now()},w=()=>{let h=Y();return new y(A?.budgetMs??0,h?.recoveryElapsedMs??0)},s=()=>!Q||b<z+1,Hf=(h,H)=>{let{state:k,...X}=H;return{phase:h,...X,...Y()?{recoveryRemainingMs:Y()?.recoveryRemainingMs}:{}}},qf=(h)=>({phase:"rejected",requestClass:h.requestClass,resource:h.resource,scope:h.scope,reason:h.reason,queuePosition:0,queueDepth:Math.max(0,h.queued),inFlight:Math.max(0,h.inFlight),limit:Math.max(0,h.limit),waitMs:h.reason==="wait_timeout"?h.maxWaitMs:0,maxWaitMs:h.maxWaitMs,...Y()?{recoveryRemainingMs:Y()?.recoveryRemainingMs}:{}}),f_=async function*(h){let H=Y()?.recoveryRemainingMs,k=H!==void 0&&A?.startedAt!==void 0?Math.min(vf,H):vf,X;try{X=dx.admit({scope:ex(h),sessionId:zf.sessionId,ownerId:zf.ownerId,requestClass:zf.requestClass,maxWaitMs:k,pendingBytes:E,signal:_})}catch(W){if(ff(W)){if(W.reason==="wait_timeout"&&A?.startedAt!==void 0&&(Y()?.recoveryRemainingMs??0)<=0)throw w();yield{providerAdmission:qf(W)}}throw W}let I=X.getSnapshot();if(I.state==="admitted")return await X.ready;yield{providerAdmission:Hf("queued",I)};let c=X.ready.then((W)=>({kind:"ready",permit:W}),(W)=>({kind:"error",error:W}));while(!0){let W=X.getSnapshot(),J=Math.max(1,Math.min(Qx,Math.max(1,k-W.waitMs))),N,S=new Promise((q)=>{N=setTimeout(()=>q({kind:"heartbeat"}),J),N.unref?.()}),O=await Promise.race([c,S]);if(N)clearTimeout(N);if(O.kind==="heartbeat"){yield{providerAdmission:Hf("queued",X.getSnapshot())};continue}if(O.kind==="error"){if(ff(O.error)){if(O.error.reason==="wait_timeout"&&A?.startedAt!==void 0&&(Y()?.recoveryRemainingMs??0)<=0)throw w();yield{providerAdmission:qf(O.error)}}throw O.error}return yield{providerAdmission:Hf("admitted",X.getSnapshot())},O.permit}},x_=(h)=>{if(!s())throw w();if(Q)b++;u=void 0;let H=new AbortController,k=_?af(_,H.signal):H.signal,X;if(A?.startedAt!==void 0){let W=Y()?.recoveryRemainingMs??0;if(W<=0)throw w();let J=new y(A.budgetMs,A.budgetMs);X=setTimeout(()=>H.abort(J),W),X.unref?.()}let I=px(this.config,h,k,M,D);mx(I,h,(W)=>{u=W});let c=gx(this.models,h,U,I,{idleTimeoutMs:this.config.streamIdleTimeout??Rf,signal:k,abort:(W)=>H.abort(W)});return async function*(){try{yield*c}finally{if(X)clearTimeout(X)}}()},pf=this,m=(h)=>({phase:h.phase,reason:h.reason,...h.statusCode!==void 0?{statusCode:h.statusCode}:{},...h.retryAfterMs!==void 0?{retryAfterMs:h.retryAfterMs}:{},...h.nextProbeAt!==void 0?{nextProbeAt:h.nextProbeAt}:{},openDurationMs:h.openDurationMs,sampleCount:h.sampleCount,failureCount:h.failureCount,...Y()?{recoveryRemainingMs:Y()?.recoveryRemainingMs}:{}}),mf=(h,H)=>({phase:h,reason:H.reason,...H.statusCode!==void 0?{statusCode:H.statusCode}:{},retryAfterMs:H.retryAfterMs,...H.nextProbeAt!==void 0?{nextProbeAt:H.nextProbeAt}:{},openDurationMs:H.openDurationMs,sampleCount:H.sampleCount,failureCount:H.failureCount,...Y()?{recoveryRemainingMs:Y()?.recoveryRemainingMs}:{}}),__=(h)=>({phase:"probe",reason:h.reason??"server_error",...h.statusCode!==void 0?{statusCode:h.statusCode}:{},openDurationMs:h.openDurationMs??xf,...h.sampleCount!==void 0?{sampleCount:h.sampleCount}:{},...h.failureCount!==void 0?{failureCount:h.failureCount}:{},...Y()?{recoveryRemainingMs:Y()?.recoveryRemainingMs}:{}}),Wf=(h,H,k)=>({providerRetry:{phase:"exhausted",attempt:h,maxRetries:z,reason:H,...k!==void 0?{statusCode:k}:{},...F(),exhaustedBy:"recovery_budget"}}),tf=async function*(h,H,k,X){let I,c=!1,W,J,N=nx(h);for(let S=0;S<=k;S++){if(!s())break;let O,q;while(!O){let $=N.preflight();while(!$.eligible){if(W=$.reason,J=$.statusCode,!A||!X){let L=mf("rejected",$);throw yield{providerCircuit:L},new n(L)}wf();let G=Y()?.recoveryRemainingMs??0;if(G<=0){let L=w();throw yield Wf(Q?Math.max(0,b-1):S,$.reason,$.statusCode),L}yield{providerCircuit:mf("waiting",$)};let p=Math.min(Math.max(1,$.retryAfterMs),uf,G);if(await r(p,_,{throwOnAbort:!0}),(Y()?.recoveryRemainingMs??0)<=0){let L=w();throw yield Wf(Q?Math.max(0,b-1):S,$.reason,$.statusCode),L}$=N.preflight()}try{q=yield*f_(h)}catch(K){if(K instanceof y)yield Wf(Q?Math.max(0,b-1):S,W??"timeout",J);throw K}let C=N.check();if(C.allowed)O=C;else q.release(),q=void 0}let a=O.token;if(O.probe)yield{providerCircuit:__(O)};try{let $=!1,C=!1;for await(let K of x_(h)){if(K.providerStall){yield K;continue}let G=Q?b-1:S;if(G>0&&W&&!$)$=!0,yield{providerRetry:{phase:"recovered",attempt:G,maxRetries:z,reason:W,...J!==void 0?{statusCode:J}:{},...F()}};if(!C){C=!0;let p=N.recordSuccess(a);if(p)yield{providerCircuit:m(p)}}c=!0,H(),yield K}if(!C){let K=N.recordSuccess(a);if(K)yield{providerCircuit:m(K)}}return}catch($){if(q?.release(),I=$,pf.logIdleTimeout($,c,h),await pf.handleAbort(_),$ instanceof y){if(c)throw Lf($),$;throw yield{providerRetry:{phase:"exhausted",attempt:Q?Math.max(0,b-1):S,maxRetries:z,reason:W??"timeout",...J!==void 0?{statusCode:J}:{},...F(),exhaustedBy:"recovery_budget"}},$}let C=g($,u);if(c)throw Lf($),$;let K=f0($,u),G=K?N.recordFailure(a,K):u&&!x0($)?N.recordNeutral(a):void 0;if(G)yield{providerCircuit:m(G)};if(!C.retryable||!C.reason){if(S>0&&W)yield{providerRetry:{phase:"exhausted",attempt:Q?Math.max(0,b-1):S,maxRetries:z,reason:W,...J!==void 0?{statusCode:J}:{},...F()}};throw $}W=C.reason,J=C.statusCode;let p=S<k&&s();if(G&&G.phase!=="closed"&&p&&(!A||!X)){let L={...m(G),phase:"rejected"};throw yield{providerCircuit:L},new n(L)}if(p){wf();let L=Q?b:S+1,T_=Fx(L,u,A?{maxDelayMs:cf,maxExponentialDelayMs:cf}:void 0),yf=G&&G.phase!=="closed"?G.retryAfterMs??0:0;if(A&&yf>0&&G)yield{providerCircuit:{...m(G),phase:"waiting"}};let A_=Y(),Xf=Math.max(T_,yf),o=A?Math.min(Xf,A_?.recoveryRemainingMs??Xf):Xf,Mf={attempt:L,maxRetries:z,reason:C.reason,...C.statusCode!==void 0?{statusCode:C.statusCode}:{}};if(yield{providerRetry:{phase:"scheduled",...Mf,delayMs:o,nextRetryAt:Date.now()+o,...F()}},A){let d=o;while(d>0){let gf=Math.min(d,uf);if(await r(gf,_,{throwOnAbort:!0}),d-=gf,(Y()?.recoveryRemainingMs??0)<=0){let Tf=w();throw yield{providerRetry:{phase:"exhausted",...Mf,...F(),exhaustedBy:"recovery_budget"}},Tf}if(d>0){if(G&&G.phase!=="closed"&&G.nextProbeAt!==void 0){let Tf=Math.max(0,G.nextProbeAt-Date.now());if(Tf>0)yield{providerCircuit:{...m(G),phase:"waiting",retryAfterMs:Tf}}}yield{providerRetry:{phase:"waiting",...Mf,delayMs:o,nextRetryAt:Date.now()+d,...F()}}}}}else await r(o,_,{throwOnAbort:!0});yield{providerRetry:{phase:"attempt",...Mf,...F()}}}else yield{providerRetry:{phase:"exhausted",attempt:Q?Math.max(0,b-1):S,maxRetries:z,reason:C.reason,...C.statusCode!==void 0?{statusCode:C.statusCode}:{},...F(),...A&&(X||!s())?{exhaustedBy:"attempt_limit"}:{}}}}finally{N.abandon(a),q?.release()}}throw I},$f,lf=!1,_f=this.config.fallbackModels??[],M_=A&&_f.length>0?Math.min(j,z):z;try{for await(let h of tf(this.model,()=>{lf=!0},M_,_f.length===0))yield h;return}catch(h){if($f=h,lf||!ff(h)&&!Nf(h)&&!g(h,u).retryable)throw h}for(let[h,H]of _f.entries()){if(!s())break;yield{modelFallback:!0};let k=!1;try{let X=xx(this.config,H),I=h===_f.length-1,c=A&&!I?Math.min(j,z):z;for await(let W of tf(X,()=>{k=!0},c,I))yield W;return}catch(X){if($f=X,k||!ff(X)&&!Nf(X)&&!g(X,u).retryable)throw X}}throw $f}async handleAbort(f){if(f?.aborted)await r(0,f,{throwOnAbort:!0})}logIdleTimeout(f,x,_){if(f===null||typeof f!=="object"||!("code"in f)||f.code!=="STREAM_IDLE_TIMEOUT"||!("timeoutMs"in f)||typeof f.timeoutMs!=="number")return;sx.warn("[PiAIChatService] Provider stream idle timeout",{provider:_.provider,model:_.id,timeoutMs:f.timeoutMs,replayBoundaryCrossed:x})}getConfig(){return{...this.config}}updateConfig(f){let x={...this.config,...f},_=Cf(x);this.config={...x,maxContextTokens:_.model.contextWindow,maxOutputTokens:x.maxOutputTokens??_.model.maxTokens},this.models=_.models,this.model=_.model}}var _0=t("Service");async function EM(f){let x=f;if(x.provider){let _=sf(x.provider);if(Object.keys(_).length>0)x={...x,customHeaders:{..._,...x.customHeaders}},_0.debug(`Injected ${x.provider} specific headers:`,Object.keys(_))}return M0(x)}function M0(f){return new Ff(f)}
5
- export{P0 as Hd,h0 as Id,af as Jd,ff as Kd,F_ as Ld,w0 as Md,Ff as Nd,EM as Od};
@@ -1 +0,0 @@
1
- import{Pd as a,Qd as b,Rd as c}from"./chunk-4ekrbk2w.js";import"./chunk-fxw1q5j5.js";import"./chunk-5ygv33qe.js";import"./chunk-x04xb9g3.js";import"./chunk-9neq5xrb.js";import"./chunk-22h5kh4z.js";export{b as resolveModelConfig,c as getModelDisplayName,a as getModelApiKeyEnvironmentVariable};
@@ -1 +0,0 @@
1
- import{ne as a,oe as b,pe as c,qe as d,re as e}from"./chunk-6dma8han.js";import"./chunk-n0ebpwxd.js";import"./chunk-01jt0mpr.js";import"./chunk-ens8nsge.js";import"./chunk-f4bx2n1y.js";import"./chunk-tsskar00.js";import"./chunk-x5s68axq.js";import"./chunk-gbbnjzy8.js";import"./chunk-b5b8fb9y.js";import"./chunk-atdeg922.js";import"./chunk-g9re8v25.js";import"./chunk-nhzdkxnx.js";import"./chunk-fz55cnws.js";import"./chunk-5ygv33qe.js";import"./chunk-x04xb9g3.js";import"./chunk-358zaryv.js";import"./chunk-5sbewyjn.js";import"./chunk-npgt73cg.js";import"./chunk-9neq5xrb.js";import"./chunk-22h5kh4z.js";export{d as snapshotWorkspaceAgentResources,c as resolveWorkspaceAgentResources,e as resetWorkspaceAgentResources,a as refreshWorkspaceCommunicationStyles,b as configureInvocationPluginDirs};
@@ -1 +0,0 @@
1
- import{Od as a}from"./chunk-d61673v7.js";import"./chunk-nhzdkxnx.js";import"./chunk-fz55cnws.js";import"./chunk-5ygv33qe.js";import"./chunk-x04xb9g3.js";import"./chunk-9neq5xrb.js";import"./chunk-22h5kh4z.js";export{a as createChatServiceAsync};
@@ -1 +0,0 @@
1
- import{Gg as a}from"./chunk-5sbewyjn.js";import"./chunk-npgt73cg.js";import"./chunk-9neq5xrb.js";import"./chunk-22h5kh4z.js";export{a as WorkspaceTrustService};
@@ -1,6 +0,0 @@
1
- import{Zc as c}from"./chunk-3p32k12g.js";import{qd as m}from"./chunk-27w2k6t7.js";import{Af as C,lf as Y,mf as x,of as O,tf as P,uf as _,vf as E,wf as R,zf as f}from"./chunk-x5s68axq.js";import{Bf as V}from"./chunk-gbbnjzy8.js";import{Cf as X,Ef as k,Hf as Z}from"./chunk-b5b8fb9y.js";import{Mf as Q}from"./chunk-g9re8v25.js";import{$f as N,Qf as y,Rf as D,Xf as I,Yf as M,ag as T,cg as U,dg as h,fg as A,gg as L}from"./chunk-nhzdkxnx.js";import{ng as S}from"./chunk-fz55cnws.js";import{promises as p}from"node:fs";import u from"node:path";var d=["systemPrompt","appendSystemPrompt","initialMessage","resumeSessionId","forkSession","allowedTools","disallowedTools","mcpConfigPaths","strictMcpConfig","model","addDirs","outputFormat","inputFormat","print","includePartialMessages","replayUserMessages","agentsConfig","settingSources"],l=new Set([...Object.keys(O),...d]),W=k.Number({exclusiveMinimum:0}),z=k.String({minLength:1}),$=k.Array(k.String()),n=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:I,maximum:M})])),providerRequestConcurrency:k.Optional(k.Integer({minimum:N,maximum:T})),providerRequestAdmissionMs:k.Optional(k.Union([k.Literal(0),k.Integer({minimum:U,maximum:h})])),providerRequestPendingBytes:k.Optional(k.Integer({minimum:A,maximum:L})),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:P,maximum:_})),maxQueuedTasks:k.Optional(k.Integer({minimum:E,maximum:R})),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())}),o=[["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"]];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(!l.has(H))throw Error(`Unknown --settings field: ${H}`);let J=X(n,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 j(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=u.resolve(Q(),B),J;try{J=await p.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 F(q,B){if(!B)return;let w=B;for(let[J,H]of o){if(J==="permissionMode"&&q.yolo===!0)continue;if(q[H]===void 0&&w[J]!==void 0)q[H]=w[J]}}var b=S("General"),bk=(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(", ")}`)}},Gk=async(q)=>{let B=await j(typeof q.settings==="string"?q.settings:void 0);if(F(q,B),typeof q.agents==="string")c(q.agents);s(q);try{let J=await f.getInstance().initialize(B),H=C(J,q);if(m().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 s(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 Qk=(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{bk as Wc,Gk as Xc,Qk as Yc};
@@ -1,2 +0,0 @@
1
- import{I}from"./chunk-wk0vpgwk.js";import{xc as D}from"./chunk-zracmha2.js";import w from"node:path";function C(a){let t=a.replace(/\s+/g," ").trim();return t.length<=72?t:`${t.slice(0,69)}...`}function P(a){let t=a.replace(/\s+/g," ").trim();return t.length<=500?t:`${t.slice(0,497)}...`}function S(a){return`task/${a.replace(/[^a-zA-Z0-9_-]/g,"-").slice(0,40)}`}class z{static async createSessionTask(a){if(!a.prompt.trim())throw Error("Task prompt must not be blank");if(!w.isAbsolute(a.sourceProjectPath))throw Error("Task source project path must be absolute");let t=w.resolve(a.sourceProjectPath),s;try{return s=a.isolation==="worktree"?await I.enter({sessionId:a.sessionId,workspaceRoot:t,name:S(a.sessionId)}):void 0,{metadata:await D.createSessionMetadata(a.sessionId,s?.workspaceRoot??t,{title:a.title?.trim()||C(a.prompt),taskPromptSummary:P(a.prompt),taskDispatch:a.dispatch,taskModelId:a.dispatch?.modelId,selectedModelId:a.dispatch?.modelId,permissionMode:a.dispatch?.permissionMode,reasoningEffort:a.dispatch?.reasoningEffort,serviceTier:a.dispatch?.serviceTier,responseVerbosity:a.dispatch?.responseVerbosity,communicationStyle:a.dispatch?.communicationStyle,communicationStyleDigest:a.dispatch?.communicationStyleDigest,projectInstructionsDigest:a.dispatch?.projectInstructionsDigest,taskRetriedFrom:a.retriedFrom,taskIsolation:a.isolation,taskSourceProjectPath:t,taskWorktree:s}),taskWorktree:s}}catch(k){if(s)await I.exit({sessionId:a.sessionId,action:"remove",discardChanges:!0}).catch(()=>{return});throw k}}}var N=256,Z=8388608,_=30000;class c extends Error{kind;pendingItems;pendingBytes;constructor(a,t,s){super(t,s);this.kind=a;this.name="BoundedSerialEgressError",this.pendingItems=s?.pendingItems,this.pendingBytes=s?.pendingBytes}}function m(a){a.catch(()=>{return})}class F{options;pending=[];flushWaiters=[];pendingBytes=0;nextSequence=0;completedSequence=0;draining=!1;closed=!1;failure;activeWriteAbort;activeWriteStop;activeWriteTimeout;constructor(a){this.options=a;if(this.assertPositiveInteger(a.maxPendingItems,"maxPendingItems"),this.assertPositiveInteger(a.maxPendingBytes,"maxPendingBytes"),this.assertPositiveInteger(a.writeTimeoutMs,"writeTimeoutMs"),a.signal?.addEventListener("abort",this.handleAbort,{once:!0}),a.signal?.aborted)this.handleAbort()}offer(a){if(this.closed)return{accepted:!1,error:this.failure??new c("closed","Egress is already closed")};let t;try{t=this.options.sizeOf(a)}catch(i){return this.rejectAdmission(new c("invalid_size","Egress size calculation failed",{cause:i}))}if(!Number.isSafeInteger(t)||t<0)return this.rejectAdmission(new c("invalid_size","Egress size must be a non-negative safe integer"));if(t>this.options.maxPendingBytes)return this.rejectAdmission(new c("oversized",`Egress value requires ${t} bytes; limit is ${this.options.maxPendingBytes}`));if(this.pending.length>=this.options.maxPendingItems||this.pendingBytes+t>this.options.maxPendingBytes)return this.rejectAdmission(new c("overflow",`Egress pending limit exceeded (${this.pending.length} items, ${this.pendingBytes} bytes)`));let s,k,h=new Promise((i,f)=>{s=i,k=f});return m(h),this.nextSequence+=1,this.pending.push({value:a,bytes:t,sequence:this.nextSequence,resolve:s,reject:k,completion:h}),this.pendingBytes+=t,this.startDrain(),{accepted:!0,completion:h}}flush(){if(this.failure){let h=Promise.reject(this.failure);return m(h),h}let a=this.nextSequence;if(a<=this.completedSequence)return Promise.resolve();let t,s,k=new Promise((h,i)=>{t=h,s=i});return m(k),this.flushWaiters.push({targetSequence:a,resolve:t,reject:s}),k}close(a){let t=a instanceof c?a:new c("closed","Egress was closed",{cause:a});this.fail(t)}stats(){return{closed:this.closed,pendingItems:this.pending.length,pendingBytes:this.pendingBytes}}handleAbort=()=>{this.fail(new c("aborted","Egress was aborted",{cause:this.options.signal?.reason}))};rejectAdmission(a){return this.fail(a),{accepted:!1,error:a}}startDrain(){if(this.draining||this.closed)return;this.draining=!0;let a=this.drain();m(a)}async drain(){try{while(!this.closed){let a=this.pending[0];if(!a)return;try{await this.writeOne(a.value)}catch(t){this.fail(this.normalizeWriteError(t));return}if(this.closed||this.pending[0]!==a)return;this.pending.shift(),this.pendingBytes-=a.bytes,this.completedSequence=a.sequence,a.resolve(),this.settleFlushWaiters()}}finally{if(this.draining=!1,!this.closed&&this.pending.length>0)this.startDrain()}}async writeOne(a){let t=new AbortController;this.activeWriteAbort=t;let s,k,h=new Promise((W,T)=>{k=T});m(h),this.activeWriteStop=k;let i=Promise.resolve().then(()=>this.options.write(a,t.signal));m(i);let f=new Promise((W,T)=>{s=setTimeout(()=>{let M=new c("write_timeout",`Egress write timed out after ${this.options.writeTimeoutMs}ms`);t.abort(M),T(M)},this.options.writeTimeoutMs),this.activeWriteTimeout=s});m(f);try{await Promise.race([i,f,h])}finally{if(s!==void 0)clearTimeout(s);if(this.activeWriteTimeout===s)this.activeWriteTimeout=void 0;if(this.activeWriteAbort===t)this.activeWriteAbort=void 0;if(this.activeWriteStop===k)this.activeWriteStop=void 0}}normalizeWriteError(a){if(a instanceof c)return a;return new c("write_failed","Egress write failed",{cause:a})}fail(a){if(this.closed)return;if(a.pendingItems??=this.pending.length,a.pendingBytes??=this.pendingBytes,this.closed=!0,this.failure=a,this.options.signal?.removeEventListener("abort",this.handleAbort),this.activeWriteTimeout!==void 0)clearTimeout(this.activeWriteTimeout),this.activeWriteTimeout=void 0;this.activeWriteAbort?.abort(a),this.activeWriteStop?.(a),this.activeWriteAbort=void 0,this.activeWriteStop=void 0;let t=this.pending.splice(0);this.pendingBytes=0;for(let s of t)s.reject(a);for(let s of this.flushWaiters.splice(0))s.reject(a);try{this.options.onFailure?.(a)}catch{}}settleFlushWaiters(){for(let a=0;a<this.flushWaiters.length;){let t=this.flushWaiters[a];if(t.targetSequence>this.completedSequence){a+=1;continue}this.flushWaiters.splice(a,1),t.resolve()}}assertPositiveInteger(a,t){if(!Number.isSafeInteger(a)||a<=0)throw RangeError(`${t} must be a positive safe integer`)}}
2
- export{z as t,N as u,Z as v,_ as w,c as x,F as y};
@@ -1 +0,0 @@
1
- import{Wc as a,Xc as b,Yc as c}from"./chunk-mx5s93np.js";import"./chunk-3p32k12g.js";import"./chunk-27w2k6t7.js";import"./chunk-v508x7cg.js";import"./chunk-atsw605q.js";import"./chunk-ens8nsge.js";import"./chunk-x5s68axq.js";import"./chunk-gbbnjzy8.js";import"./chunk-b5b8fb9y.js";import"./chunk-atdeg922.js";import"./chunk-g9re8v25.js";import"./chunk-nhzdkxnx.js";import"./chunk-fz55cnws.js";import"./chunk-5ygv33qe.js";import"./chunk-x04xb9g3.js";import"./chunk-358zaryv.js";import"./chunk-5sbewyjn.js";import"./chunk-npgt73cg.js";import"./chunk-9neq5xrb.js";import"./chunk-22h5kh4z.js";export{a as validatePermissions,c as validateOutput,b as loadConfiguration};
@@ -1 +0,0 @@
1
- import{Uc as a,Vc as b}from"./chunk-ck8sw2zp.js";import"./chunk-358zaryv.js";import"./chunk-22h5kh4z.js";export{a as globalOptions,b as cliConfig};
@@ -1 +0,0 @@
1
- import{rc as a,sc as b,tc as c,uc as d,vc as e,wc as f,xc as g}from"./chunk-zracmha2.js";import"./chunk-qgez5vw6.js";import"./chunk-bdxaz350.js";import"./chunk-fxw1q5j5.js";import"./chunk-01jt0mpr.js";import"./chunk-tsskar00.js";import"./chunk-atdeg922.js";import"./chunk-g9re8v25.js";import"./chunk-fz55cnws.js";import"./chunk-x04xb9g3.js";import"./chunk-358zaryv.js";import"./chunk-9neq5xrb.js";import"./chunk-22h5kh4z.js";export{b as __setSessionSnapshotIOForTesting,c as __resetSessionSnapshotIOForTesting,g as SessionService,d as SessionMissingCreationError,e as SessionArchivedError,f as SessionArchiveConflictError,a as STALE_EMPTY_SESSION_AGE_MS};
@@ -1,2 +0,0 @@
1
- import{Ef as J,Ff as $,Gf as O,Hf as K}from"./chunk-b5b8fb9y.js";import{If as v,Jf as S,Kf as l}from"./chunk-atdeg922.js";import{ng as o}from"./chunk-fz55cnws.js";import{Qg as n}from"./chunk-9neq5xrb.js";var G=[{min:0,max:59},{min:0,max:23},{min:1,max:31},{min:1,max:12},{min:0,max:7}],a={Sun:0,Mon:1,Tue:2,Wed:3,Thu:4,Fri:5,Sat:6},f=new Map;function D(Q,Z,W){let B=new Set;for(let X of Q.split(",")){let[Y,k]=X.split("/"),V=k?Number.parseInt(k,10):1;if(!Number.isInteger(V)||V<1)throw Error(`Invalid cron step in "${Q}"`);let j=Z,H=W;if(Y!=="*"&&Y!=="")if(Y.includes("-")){let[U,i]=Y.split("-");j=Number.parseInt(U,10),H=Number.parseInt(i,10)}else j=Number.parseInt(Y,10),H=j;if(!Number.isInteger(j)||!Number.isInteger(H)||j<Z||H>W||j>H)throw Error(`Invalid cron range "${Y}" in field "${Q}"`);for(let U=j;U<=H;U+=V)B.add(U)}return B}function C(Q){let Z=Q.trim().split(/\s+/);if(Z.length!==5)throw Error(`Cron expression must have 5 fields (min hour dom mon dow), got ${Z.length}`);let[W,B,X,Y,k]=Z,V=D(k,G[4].min,G[4].max),j=new Set([...V].map((H)=>H===7?0:H));return{minutes:D(W,G[0].min,G[0].max),hours:D(B,G[1].min,G[1].max),daysOfMonth:D(X,G[2].min,G[2].max),months:D(Y,G[3].min,G[3].max),daysOfWeek:j,domRestricted:X.trim()!=="*",dowRestricted:k.trim()!=="*"}}function t(Q,Z){if(!Z)return{minute:Q.getMinutes(),hour:Q.getHours(),dayOfMonth:Q.getDate(),month:Q.getMonth()+1,dayOfWeek:Q.getDay()};let W=f.get(Z);if(!W)W=new Intl.DateTimeFormat("en-US",{timeZone:Z,month:"numeric",day:"numeric",hour:"numeric",minute:"numeric",weekday:"short",hourCycle:"h23"}),f.set(Z,W);let B=Object.fromEntries(W.formatToParts(Q).filter((X)=>X.type!=="literal").map((X)=>[X.type,X.value]));return{minute:Number(B.minute),hour:Number(B.hour),dayOfMonth:Number(B.day),month:Number(B.month),dayOfWeek:a[B.weekday]??-1}}function r(Q,Z,W){let B=t(Z,W);if(!Q.minutes.has(B.minute))return!1;if(!Q.hours.has(B.hour))return!1;if(!Q.months.has(B.month))return!1;let X=Q.daysOfMonth.has(B.dayOfMonth),Y=Q.daysOfWeek.has(B.dayOfWeek);if(Q.domRestricted&&Q.dowRestricted)return X||Y;if(Q.domRestricted)return X;if(Q.dowRestricted)return Y;return!0}function T(Q,Z,W){let B=C(Q),X=new Date(Z.getTime());X.setSeconds(0,0),X.setMinutes(X.getMinutes()+1);let Y=new Date(Z.getTime());Y.setFullYear(Y.getFullYear()+4);while(X.getTime()<=Y.getTime()){if(r(B,X,W))return new Date(X.getTime());X.setMinutes(X.getMinutes()+1)}return null}var E={s:1000,m:60000,h:3600000,d:86400000};function DJ(Q){let W=Q.trim().toLowerCase().match(/^(\d+)\s*([smhd]?)$/);if(!W)return null;let B=Number.parseInt(W[1],10);if(!Number.isInteger(B)||B<=0)return null;let X=W[2]||"m";return B*E[X]}function y(Q){for(let Z of["d","h","m","s"]){let W=E[Z];if(Q%W===0)return`${Q/W}${Z}`}return`${Math.round(Q/1000)}s`}function A(Q,Z,W){switch(Q.kind){case"cron":{if(!Q.cron)return null;try{return T(Q.cron,Z,Q.timezone)}catch{return null}}case"interval":{if(!Q.intervalMs||Q.intervalMs<=0)return null;let X=new Date((W??Z).getTime()+Q.intervalMs);return X.getTime()<=Z.getTime()?new Date(Z.getTime()+1000):X}case"once":{if(!Q.runAt)return null;let B=new Date(Q.runAt);if(Number.isNaN(B.getTime()))return null;return B.getTime()>Z.getTime()?B:null}default:return null}}function _(Q){switch(Q.kind){case"cron":if(!Q.cron)return"cron trigger requires a cron expression";try{if(C(Q.cron),Q.timezone)new Intl.DateTimeFormat("en-US",{timeZone:Q.timezone}).format();return null}catch(Z){return Z instanceof Error?Z.message:"invalid cron expression"}case"interval":if(!Q.intervalMs||Q.intervalMs<60000)return"interval trigger requires intervalMs >= 60000 (1 minute)";return null;case"once":{if(!Q.runAt)return"once trigger requires runAt timestamp";let Z=new Date(Q.runAt);if(Number.isNaN(Z.getTime()))return"once trigger runAt is not a valid date";return null}default:return"unknown trigger kind"}}function FJ(Q){switch(Q.kind){case"cron":return`cron: ${Q.cron??"?"}`;case"interval":return`every ${Q.intervalMs?y(Q.intervalMs):"?"}`;case"once":return`once at ${Q.runAt??"?"}`;default:return"unknown"}}import{mkdir as bJ,readFile as wJ}from"node:fs/promises";import s from"node:path";import{nanoid as LJ}from"nanoid";import PJ from"write-file-atomic";var w=$(K(["default","autoEdit","yolo","plan"]));var N=$(K(["user","assistant","system","tool"])),p=$(J.Union([J.Object({type:J.Literal("text"),text:J.String()}),J.Object({type:J.Literal("image_url"),image_url:J.Object({url:J.String()})})])),h=J.Union([J.String(),J.Array(p)]),NJ=$(J.Object({id:J.String(),role:N,content:h,timestamp:J.Number(),metadata:J.Optional(J.Record(J.String(),J.Unknown())),thinkingContent:J.Optional(J.String()),tool_call_id:J.Optional(J.String()),name:J.Optional(J.String()),tool_calls:J.Optional(J.Unknown())})),e=$(K(["queued","running","completed","failed","cancelled","interrupted"])),F=$(K(["local","worktree"])),JJ=$(K(["applied","discarded","conflicted"])),QJ=$(J.Object({status:JJ,updatedAt:J.String(),sourceCommit:J.Optional(J.String()),changedFiles:J.Optional(J.Integer({minimum:0})),message:J.Optional(J.String())})),ZJ=$(J.Object({changedFiles:J.Integer({minimum:0}),additions:J.Integer({minimum:0}),deletions:J.Integer({minimum:0}),commits:J.Integer({minimum:0})})),$J=$(J.Object({path:J.String({minLength:1}),patch:J.String({maxLength:2097152}),additions:J.Integer({minimum:0}),deletions:J.Integer({minimum:0}),binary:J.Boolean(),truncated:J.Boolean()})),qJ=$(J.Object({sessionId:J.String(),projectPath:J.String(),baseCommit:J.String(),files:J.Array($J,{maxItems:100}),truncated:J.Boolean()})),BJ=J.Union([J.String(),J.Number(),J.Boolean(),J.Array(J.String())]),KJ=$(J.Object({name:J.String(),type:K(["string","number","integer","boolean","select","multi-select"]),title:J.String(),description:J.Optional(J.String()),required:J.Boolean(),defaultValue:J.Optional(BJ),options:J.Optional(J.Array(J.Object({value:J.String(),label:J.String()}))),format:J.Optional(K(["date","uri","email","date-time"])),minimum:J.Optional(J.Number()),maximum:J.Optional(J.Number()),minLength:J.Optional(J.Number()),maxLength:J.Optional(J.Number()),minItems:J.Optional(J.Number()),maxItems:J.Optional(J.Number())})),xJ=$(J.Object({serverName:J.String(),mode:K(["form","url"]),message:J.String(),fields:J.Optional(J.Array(KJ)),requestedSchema:J.Optional(J.Record(J.String(),J.Unknown())),url:J.Optional(J.String()),domain:J.Optional(J.String()),elicitationId:J.Optional(J.String())})),WJ=$(J.Object({type:K(["permission","question","elicitation"]),requestId:J.String()})),XJ=$(J.Object({code:K(["authentication","permission","rate_limit","timeout","network","model_unavailable","context_limit","unsupported_input","runtime"]),message:J.String({minLength:1,maxLength:500}),retryable:J.Boolean()})),L=$(K(["auto","off","minimal","low","medium","high","xhigh","max"])),P=$(K(["auto","standard","fast","flex"])),M=$(K(["auto","low","medium","high"])),b=$(J.Union([K(["auto","pragmatic","friendly","explanatory"]),J.String({minLength:7,maxLength:300,pattern:"^(?:(?:user|project):[a-z0-9][a-z0-9._-]{0,63}(?::[a-z0-9][a-z0-9._-]{0,63}){0,3}|plugin:[a-z0-9][a-z0-9._-]{0,63}:[a-z0-9][a-z0-9._-]{0,63}(?::[a-z0-9][a-z0-9._-]{0,63}){0,3})$"})])),z=$(J.Object({sessionId:J.String(),projectPath:J.String(),title:J.Optional(J.String()),gitBranch:J.Optional(J.String()),rootId:J.String(),parentId:J.Optional(J.String()),relationType:J.Optional(K(["subagent","fork"])),resumedFrom:J.Optional(J.String()),rootAgentId:J.Optional(J.String()),resumeDepth:J.Optional(J.Integer({minimum:0})),taskStatus:O(e,"completed"),taskStatusReason:J.Optional(J.String()),taskFailure:J.Optional(XJ),taskStartedAt:J.Optional(J.String()),taskCompletedAt:J.Optional(J.String()),taskPromptSummary:J.Optional(J.String()),taskModelId:J.Optional(J.String()),selectedModelId:J.Optional(J.String()),permissionMode:J.Optional(w),reasoningEffort:J.Optional(L),serviceTier:J.Optional(P),responseVerbosity:J.Optional(M),communicationStyle:J.Optional(b),communicationStyleDigest:J.Optional(J.String({pattern:"^[a-f0-9]{64}$"})),projectInstructionsDigest:J.Optional(J.String({pattern:"^[a-f0-9]{64}$"})),taskRetryAvailable:J.Optional(J.Boolean()),taskRetriedFrom:J.Optional(J.Object({sessionId:J.String(),projectPath:J.String()})),taskDelivery:J.Optional(QJ),taskIsolation:J.Optional(F),taskSourceProjectPath:J.Optional(J.String()),taskWorktreePath:J.Optional(J.String()),taskWorktreeBranch:J.Optional(J.String()),taskBaseCommit:J.Optional(J.String()),taskDiffStat:J.Optional(ZJ),taskQueuePosition:J.Optional(J.Integer({minimum:1})),taskQueueDepth:J.Optional(J.Integer({minimum:0})),taskConcurrencyLimit:J.Optional(J.Integer({minimum:1})),archivedAt:J.Optional(J.String()),archivedBySessionId:J.Optional(J.String()),pendingInteraction:J.Optional(WJ),messageCount:J.Number(),firstMessageTime:J.String(),lastMessageTime:J.String(),hasErrors:J.Boolean()})),fJ=$(J.Object({sessions:J.Array(z),nextCursor:J.Optional(J.String())})),CJ=$(J.Object({session:z,archivedSessionIds:J.Array(J.String())})),EJ=$(J.Object({session:z,restoredSessionIds:J.Array(J.String())})),RJ=$(J.Object({version:J.Literal(1),sessionId:J.String(),goalId:J.String(),objective:J.String(),status:K(["active","verifying","paused","blocked","usage_limited","budget_limited","complete"]),tokenBudget:J.Optional(J.Number()),tokensUsed:J.Number(),timeUsedSeconds:J.Number(),continuationCount:J.Number(),statusReason:J.Optional(J.String()),completionVerification:J.Optional(J.Object({attempt:J.Integer({minimum:1}),status:K(["pending","pass","fail","partial"]),requestedAt:J.String(),completedAt:J.Optional(J.String()),verifierSessionId:J.Optional(J.String()),summary:J.Optional(J.String()),evidenceSha256:J.Optional(J.String({pattern:"^[a-f0-9]{64}$"}))})),createdAt:J.String(),updatedAt:J.String()})),u=$(J.Object({role:N,content:h,metadata:J.Optional(J.Unknown()),reasoningContent:J.Optional(J.String()),thinkingContent:J.Optional(J.String()),tool_call_id:J.Optional(J.String()),name:J.Optional(J.String()),tool_calls:J.Optional(J.Unknown())})),SJ=$(J.Object({session:z,messages:J.Array(u)})),d=$(K(["conversation","code","both"])),YJ=$(J.Object({messageId:J.String(),preview:J.String(),createdAt:J.String(),fileCount:J.Integer({minimum:0})})),lJ=$(J.Object({targetMessageId:J.String({minLength:1}),mode:O(d,"conversation")})),hJ=$(J.Object({checkpoint:YJ,mode:d,removedTurns:J.Integer({minimum:1}),restoredFiles:J.Array(J.String()),messages:J.Array(u)})),HJ=K(["running","completed","failed","cancelled"]),R=$(J.Object({id:J.String(),subagentType:J.String(),description:J.String(),status:HJ,background:J.Boolean(),rootAgentId:J.String(),resumedFrom:J.Optional(J.String()),resumeDepth:J.Integer({minimum:0}),createdAt:J.Number(),lastActiveAt:J.Number(),completedAt:J.Optional(J.Number()),restartRecovery:J.Optional(J.Object({outcome:K(["completed","interrupted","failed"]),recoveredAt:J.Number()})),result:J.Optional(J.Object({success:J.Boolean(),message:J.String(),error:J.Optional(J.String()),verificationCommands:J.Optional(J.Array(J.String())),verificationVerdict:J.Optional(K(["pass","fail","partial"])),modifiedFiles:J.Optional(J.Array(J.String()))})),stats:J.Optional(J.Object({tokens:J.Optional(J.Number()),toolCalls:J.Optional(J.Number()),duration:J.Optional(J.Number())}))})),uJ=$(J.Object({prompt:J.String({minLength:1,maxLength:32000,pattern:"\\S"})})),dJ=$(J.Object({source:R,session:R})),mJ=$(J.Object({sessionId:J.String(),projectPath:J.String()})),cJ=$(J.Object({path:J.String(),name:J.String(),gitBranch:J.Optional(J.String()),available:J.Boolean(),isCurrent:J.Boolean(),boundAt:J.String()})),gJ=$(J.Union([J.Object({cancelled:J.Literal(!0)}),J.Object({cancelled:J.Literal(!1),path:J.String({minLength:1})})])),nJ=$(J.Object({type:J.String(),seq:J.Optional(J.Number()),properties:J.Record(J.String(),J.Unknown())})),m=J.Object({type:K(["file","image","url"]),path:J.Optional(J.String()),url:J.Optional(J.String()),content:J.Optional(J.String({maxLength:S})),mimeType:J.Optional(J.String()),name:J.Optional(J.String())}),c=J.Record(J.String(),J.Unknown()),oJ=$(J.Object({prompt:J.String({minLength:1,maxLength:32000,pattern:"\\S"}),title:J.Optional(J.String({minLength:1,maxLength:200})),projectPath:J.Optional(J.String()),modelId:J.Optional(J.String({minLength:1,maxLength:500})),reasoningEffort:J.Optional(L),serviceTier:J.Optional(P),responseVerbosity:J.Optional(M),communicationStyle:J.Optional(b),isolation:O(F,"worktree"),permissionMode:O(w,"default"),attachments:J.Optional(J.Array(m,{maxItems:v})),outputSchema:J.Optional(c)})),sJ=$(J.Object({session:z,runId:J.String(),messageId:J.String(),status:K(["queued","running"]),queuePosition:J.Optional(J.Integer({minimum:1})),queueDepth:J.Optional(J.Integer({minimum:0})),maxConcurrentTasks:J.Optional(J.Integer({minimum:1}))})),iJ=$(J.Object({action:K(["apply","discard"])})),q=$(J.Object({kind:K(["cron","interval","once"]),cron:J.Optional(J.String({minLength:1,maxLength:120})),intervalMs:J.Optional(J.Integer({minimum:60000})),runAt:J.Optional(J.String({minLength:1,maxLength:40})),timezone:J.Optional(J.String({minLength:1,maxLength:80}))})),jJ=$(J.Object({modelId:J.Optional(J.String({minLength:1,maxLength:500})),reasoningEffort:J.Optional(L),serviceTier:J.Optional(P),responseVerbosity:J.Optional(M),communicationStyle:J.Optional(b),isolation:O(F,"worktree"),permissionMode:O(w,"default")})),x=$(J.Object({id:J.String(),title:J.Optional(J.String({minLength:1,maxLength:200})),prompt:J.String({minLength:1,maxLength:32000,pattern:"\\S"}),projectPath:J.String({minLength:1}),trigger:q,dispatch:jJ,enabled:J.Boolean(),createdAt:J.String(),updatedAt:J.String(),nextRunAt:J.Union([J.String(),J.Null()]),expiresAt:J.Union([J.String(),J.Null()]),lastRunAt:J.Optional(J.String()),lastRunSessionId:J.Optional(J.String()),lastStatus:J.Optional(K(["queued","running","completed","failed","cancelled","interrupted","error"])),lastError:J.Optional(J.String()),runCount:J.Integer({minimum:0})})),aJ=$(J.Object({title:J.Optional(J.String({minLength:1,maxLength:200})),prompt:J.String({minLength:1,maxLength:32000,pattern:"\\S"}),projectPath:J.String({minLength:1}),trigger:q,modelId:J.Optional(J.String({minLength:1,maxLength:500})),reasoningEffort:J.Optional(L),serviceTier:J.Optional(P),responseVerbosity:J.Optional(M),communicationStyle:J.Optional(b),isolation:O(F,"worktree"),permissionMode:O(w,"default"),enabled:O(J.Boolean(),!0)})),tJ=$(J.Object({title:J.Optional(J.String({minLength:1,maxLength:200})),prompt:J.Optional(J.String({minLength:1,maxLength:32000,pattern:"\\S"})),trigger:J.Optional(q),modelId:J.Optional(J.String({minLength:1,maxLength:500})),reasoningEffort:J.Optional(L),serviceTier:J.Optional(P),responseVerbosity:J.Optional(M),communicationStyle:J.Optional(b),isolation:J.Optional(F),permissionMode:J.Optional(w),enabled:J.Optional(J.Boolean())})),rJ=$(J.Object({schedules:J.Array(x)})),TJ=$(J.Object({content:J.String({maxLength:l}),projectPath:J.Optional(J.String()),modelId:J.Optional(J.String({minLength:1,maxLength:500})),reasoningEffort:J.Optional(L),serviceTier:J.Optional(P),responseVerbosity:J.Optional(M),communicationStyle:J.Optional(b),permissionMode:J.Optional(w),attachments:J.Optional(J.Array(m,{maxItems:v})),outputSchema:J.Optional(c)})),UJ=K(["completed","failed","aborted","timed_out","spawn_error"]),kJ=$(J.Object({version:J.Literal(1),command:J.String(),status:UJ,exitCode:J.Union([J.Integer(),J.Null()]),durationMs:J.Number({minimum:0}),stdout:J.String(),stderr:J.String(),stdoutOmittedBytes:J.Integer({minimum:0}),stderrOmittedBytes:J.Integer({minimum:0}),binaryOutput:J.Boolean(),truncated:J.Boolean()})),yJ=$(J.Object({command:J.String({minLength:1,maxLength:32768,pattern:"^(?![\\s\\S]*\\u0000)(?=[\\s\\S]*\\S)[\\s\\S]*$"}),projectPath:J.Optional(J.String())})),pJ=$(J.Object({executionId:J.String(),messageId:J.String(),record:kJ,auxiliary:J.Boolean(),delivery:J.Optional(K(["current_turn","next_turn"])),queued:J.Optional(J.Integer({minimum:0}))})),eJ=$(J.Object({projectPath:J.String(),kind:K(["uncommitted","base","commit"]),ref:J.Optional(J.String({maxLength:200})),instructions:J.Optional(J.String({maxLength:4000})),modelId:J.Optional(J.String({minLength:1,maxLength:200}))})),JQ=$(J.Object({reviewId:J.String(),status:J.Literal("running")})),QQ=$(J.Object({messageId:J.String(),role:N,content:J.String(),timestamp:J.String()})),ZQ=$(J.Object({approved:J.Boolean(),remember:J.Optional(J.Boolean()),scope:J.Optional(K(["once","session","project"])),targetMode:J.Optional(w),feedback:J.Optional(J.String()),answers:J.Optional(J.Record(J.String(),J.Union([J.String(),J.Array(J.String())]))),elicitation:J.Optional(J.Object({action:K(["accept","decline","cancel"]),content:J.Optional(J.Record(J.String(),J.Union([J.String({maxLength:4000}),J.Number(),J.Boolean(),J.Array(J.String({maxLength:1000}),{maxItems:100})]),{maxProperties:32}))}))})),VJ=$(J.Object({id:b,name:J.String({minLength:1,maxLength:80}),description:J.String({minLength:1,maxLength:256}),source:K(["built-in","user","project","plugin"]),contentSha256:J.Optional(J.String({pattern:"^[a-f0-9]{64}$"}))})),$Q=$(J.Object({id:J.String(),displayName:J.Optional(J.String()),provider:J.String(),model:J.String(),contextWindow:J.Optional(J.Number()),maxTokens:J.Optional(J.Number()),reasoning:J.Optional(J.Boolean()),supportedReasoningEfforts:J.Optional(J.Array(K(["off","minimal","low","medium","high","xhigh","max"]))),supportedServiceTiers:J.Optional(J.Array(K(["standard","fast","flex"]))),supportedResponseVerbosities:J.Optional(J.Array(K(["low","medium","high"]))),communicationStyles:J.Optional(J.Array(VJ,{maxItems:36})),input:J.Optional(J.Array(K(["text","image"]))),overrides:J.Optional(J.Object({baseUrl:J.Optional(J.String()),temperature:J.Optional(J.Number()),maxOutputTokens:J.Optional(J.Number()),timeout:J.Optional(J.Number()),streamIdleTimeout:J.Optional(J.Number({minimum:1000}))}))})),BQ=$(K(["vs-dark","vs-light","hc-black"])),GJ=$(K(["light","dark","system"])),OJ=$(J.Object({language:J.String(),codeTheme:J.String(),uiTheme:GJ,autoSaveSessions:J.Boolean(),notifyBuild:J.Boolean(),notifyErrors:J.Boolean(),notifySounds:J.Boolean(),privacyTelemetry:J.Boolean(),privacyCrash:J.Boolean(),communicationStyle:J.Optional(b)})),KQ=$(J.Partial(OJ));var g=o("Service"),MJ=1;function IJ(){return s.join(n(),"schedules.json")}class I{filePath;static instance;static getInstance(){if(!I.instance)I.instance=new I;return I.instance}writeChain=Promise.resolve();constructor(Q=IJ()){this.filePath=Q}async readFile(){try{let Q=await wJ(this.filePath,"utf-8"),Z=JSON.parse(Q);if(!Z||!Array.isArray(Z.schedules))return[];let W=[],B=0;for(let X of Z.schedules){let Y=x.safeParse(X);if(Y.success)W.push(Y.data);else B+=1}if(B>0)g.warn(`[ScheduleStore] Ignored ${B} invalid persisted schedule(s)`);return W}catch(Q){let Z=Q;if(Z.code!=="ENOENT")g.warn("[ScheduleStore] Failed to read schedules; treating as empty:",Z);return[]}}async writeFile(Q){await bJ(s.dirname(this.filePath),{recursive:!0,mode:493});let Z={version:MJ,schedules:Q};await PJ(this.filePath,JSON.stringify(Z,null,2),{mode:384})}serializeWrite(Q){let Z=this.writeChain.then(Q,Q);return this.writeChain=Z.then(()=>{return},()=>{return}),Z}async list(){return this.readFile()}async get(Q){return(await this.readFile()).find((W)=>W.id===Q)}async create(Q){return this.serializeWrite(async()=>{let Z=Q.trigger.kind==="cron"&&!Q.trigger.timezone?{...Q.trigger,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone}:Q.trigger,W=_(Z);if(W)throw Error(W);let B=new Date;if(Z.kind==="once"&&new Date(Z.runAt).getTime()<=B.getTime())throw Error("once trigger runAt must be in the future");let X=B.toISOString(),Y=A(Z,B),k={id:LJ(10),title:Q.title,prompt:Q.prompt,projectPath:Q.projectPath,trigger:Z,dispatch:{modelId:Q.modelId,reasoningEffort:Q.reasoningEffort,serviceTier:Q.serviceTier,responseVerbosity:Q.responseVerbosity,communicationStyle:Q.communicationStyle,isolation:Q.isolation??"worktree",permissionMode:Q.permissionMode??"default"},enabled:Q.enabled??!0,createdAt:X,updatedAt:X,nextRunAt:Y?Y.toISOString():null,expiresAt:null,runCount:0},V=await this.readFile();return V.push(k),await this.writeFile(V),k})}async update(Q,Z){return this.serializeWrite(async()=>{let W=await this.readFile(),B=W.findIndex((H)=>H.id===Q);if(B===-1)return;let X=W[B];if(Z.trigger){let H=Z.trigger.kind==="cron"&&!Z.trigger.timezone?{...Z.trigger,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone}:Z.trigger,U=_(H);if(U)throw Error(U);if(H.kind==="once"&&new Date(H.runAt).getTime()<=Date.now())throw Error("once trigger runAt must be in the future");Z={...Z,trigger:H}}let Y={...X,...Z,dispatch:Z.dispatch?{...X.dispatch,...Z.dispatch}:X.dispatch,updatedAt:new Date().toISOString()},k=!X.enabled,V=Y.enabled,j=Z.trigger!==void 0;if((j||k&&V)&&Z.nextRunAt===void 0){let H=new Date,U=A(Y.trigger,H);if(Y.nextRunAt=U?U.toISOString():null,j)Y.expiresAt=null}return W[B]=Y,await this.writeFile(W),Y})}async remove(Q){return this.serializeWrite(async()=>{let Z=await this.readFile(),W=Z.filter((B)=>B.id!==Q);if(W.length===Z.length)return!1;return await this.writeFile(W),!0})}async setEnabled(Q,Z){return this.update(Q,{enabled:Z})}}var LQ=I.getInstance();
2
- export{DJ as sa,A as ta,_ as ua,FJ as va,qJ as wa,z as xa,lJ as ya,uJ as za,oJ as Aa,sJ as Ba,iJ as Ca,x as Da,aJ as Ea,tJ as Fa,rJ as Ga,TJ as Ha,yJ as Ia,eJ as Ja,I as Ka,LQ as La};