@cortexkit/opencode-openai-auth 1.5.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.js +2 -2
- package/dist/{codex-request-BjGT9yWg.d.ts → codex-request-D_In8uaR.d.ts} +43 -26
- package/dist/{index-gmmakhbt.js → index-1qxz4s8a.js} +2 -2
- package/dist/{index-2rw81dtm.js → index-79y7w9bz.js} +1 -1
- package/dist/{index-2yszc75z.js → index-7nmdsmpp.js} +2 -2
- package/dist/{index-3y453wg4.js → index-8xq099qf.js} +2 -2
- package/dist/index-agaatt62.js +65 -0
- package/dist/{index-mhfja8yr.js → index-b0ty9qam.js} +2 -2
- package/dist/index-ge60xry3.js +90 -0
- package/dist/{index-krcqvyqf.js → index-jkpg9d1p.js} +1 -1
- package/dist/index-k5anexvs.js +69 -0
- package/dist/{index-e416r885.js → index-rf0ht3gc.js} +2 -2
- package/dist/{index-4w0nsq5s.js → index-x9nffaye.js} +1 -1
- package/dist/{index-7vkn2e46.js → index-ya9c5e4m.js} +1 -1
- package/dist/{index-djnfq652.js → index-z8bptbrk.js} +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/{model-BMq5SCUB.d.ts → model-D22uj0OB.d.ts} +1 -1
- package/dist/{port-file-CjMFUWcX.d.ts → port-file-8ElfwDcq.d.ts} +1 -1
- package/dist/{protocol-BC3ndToM.d.ts → protocol-CK9guiFy.d.ts} +1 -1
- package/dist/rpc/port-file.d.ts +1 -1
- package/dist/rpc/port-file.js +1 -1
- package/dist/rpc/protocol.d.ts +1 -1
- package/dist/rpc/protocol.js +1 -1
- package/dist/rpc/rpc-client.d.ts +3 -3
- package/dist/rpc/rpc-client.js +1 -1
- package/dist/rpc/rpc-dir.js +1 -1
- package/dist/{sidebar-state-DfYyqiOH.d.ts → sidebar-state-Bb9L9oPq.d.ts} +4 -4
- package/dist/sidebar-state.d.ts +1 -1
- package/dist/sidebar-state.js +1 -1
- package/dist/token-util-nyvn9866.js +1 -0
- package/dist/{token-ycw7dyev.js → token-xtq3457d.js} +1 -1
- package/dist/tui-preferences.js +1 -1
- package/dist/tui.d.ts +2 -2
- package/dist/v2/server.d.ts +2 -2
- package/dist/v2/server.js +2 -2
- package/package.json +2 -2
- package/src/tui-compiled/raw/shared/81dddd203f1b92a3-quota-writer.js +4 -54
- package/src/tui-compiled/raw/shared/a62a27a204266acd-attribution.js +39 -25
- package/src/tui-compiled/raw/shared/a910277ac43a8626-pull.js +3 -1
- package/src/tui-compiled/raw/shared/c852a15cfe489d12-pool.js +18 -3
- package/src/tui-compiled/raw/shared/c911dbb64c9d85c7-quota-writer.js +298 -0
- package/src/tui-compiled/raw/shared/e1c5e56df0ba4053-pending.js +48 -0
- package/src/tui-compiled/runtime/shared/81dddd203f1b92a3-quota-writer.js +4 -54
- package/src/tui-compiled/runtime/shared/a62a27a204266acd-attribution.js +39 -25
- package/src/tui-compiled/runtime/shared/a910277ac43a8626-pull.js +3 -1
- package/src/tui-compiled/runtime/shared/c852a15cfe489d12-pool.js +18 -3
- package/src/tui-compiled/runtime/shared/c911dbb64c9d85c7-quota-writer.js +298 -0
- package/src/tui-compiled/runtime/shared/e1c5e56df0ba4053-pending.js +48 -0
- package/dist/index-2p3gcjsa.js +0 -69
- package/dist/index-6fdmqk6p.js +0 -90
- package/dist/index-fztcacjr.js +0 -65
- package/dist/token-util-ed4az5gg.js +0 -1
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import{$a as S9,Aa as S$,Ab as e9,Ba as d3,Bb as e4,Ca as zX,Cb as FX,Da as ZY,Ea as KX,Fa as HX,Fb as h$,Ka as UX,La as ZX,Ma as VX,Na as BX,Oa as E9,Pa as n1,Qa as x6,Ra as JY,Sa as o6,Ta as XY,Ua as QY,Va as GY,Wa as $Y,Xa as WY,Za as bY,_a as kY,ab as L3,bb as N3,cb as j3,db as F3,eb as O3,fb as w9,hb as y6,jb as Q9,kb as k$,lb as U0,nb as NX,ob as dJ,pb as iJ,qa as O9,qb as jX,ra as oX,rb as x$,sa as F$,sb as t4,ta as n,tb as v$,ub as t9,vb as m8,wa as C$,wb as H8,xa as R3,xb as U8,ya as C3,yb as D9,za as w$,zb as D3}from"./index-k5anexvs.js";import{Jb as dY,Lb as $3,Nb as N6,Ob as g$,Rb as f$,Vb as t3,Wb as m$,Xb as c$,Yb as u$,bc as c8,cc as u8,dc as p$,ec as l$,hc as d$,ic as i$,jc as n$,lc as z8,mc as K8,nc as o$,oc as r$,pc as U9,qc as s$}from"./index-1qxz4s8a.js";import{$c as XX,$d as R$,Ac as F9,Ad as M$,Bd as o0,Dd as E$,Gc as W8,Gd as lJ,Hd as R0,Id as r1,Kc as E3,Kd as A3,Ld as b1,Md as cY,Nc as pJ,Nd as k1,Od as X8,Pc as U1,Pd as Z1,Qc as D$,Qd as Z9,Rc as E6,Rd as A$,Sc as a4,Sd as T$,Tc as _$,Td as B3,Uc as tJ,Ud as T3,Vc as eJ,Vd as V6,Wc as J6,Wd as n0,Xc as X6,Xd as s6,Yc as t6,Yd as HY,Zc as YX,_c as JX,ad as QX,ae as A9,bd as GX,be as T6,cd as $X,ce as R6,dd as o1,de as w3,ed as X9,ee as V1,fd as f9,fe as I$,gd as gG,ge as S3,he as I3,id as G3,je as b$,ke as b3,le as gY,me as k3,ne as x3,od as WX,oe as v3,ud as m0,vd as P$,wd as I1,xd as Y1,yc as g6,yd as q$}from"./index-ge60xry3.js";import{te as Q8}from"./index-8xq099qf.js";import{Ae as pX,Be as H2,Ce as O$,De as d1,ye as cX,ze as uX}from"./index-z8bptbrk.js";import{Ke as CX,Me as J8,Oe as z0,Te as y9,Ve as LX}from"./index-b0ty9qam.js";import{$e as AX,We as B6,Xe as X1,_e as EX,af as jY,bf as TX,ef as RX}from"./index-7nmdsmpp.js";import{gf as lX,if as y$}from"./index-x9nffaye.js";import{kf as aY}from"./index-ya9c5e4m.js";import{createHash as uB,randomUUID as pB}from"node:crypto";import{statSync as lB}from"node:fs";import n4 from"node:os";import{join as dB}from"node:path";import{readFile as vW}from"node:fs/promises";import{readFileSync as ZW,statSync as VW}from"node:fs";import{homedir as BW,tmpdir as LW}from"node:os";import{join as u1}from"node:path";var NW="https://chatgpt.com/backend-api/codex/responses",kJ=536870912,jW=z0("config"),xJ=!1,FW="openai-auth.json",Y6={webSockets:"CORTEXKIT_OPENAI_AUTH_WEBSOCKETS",rawWebSocket:"CORTEXKIT_OPENAI_AUTH_RAW_WS",responsesLite:"CORTEXKIT_OPENAI_AUTH_RESPONSES_LITE",dump:"CORTEXKIT_OPENAI_AUTH_DUMP",dumpDir:"OPENCODE_OPENAI_AUTH_DUMP_DIR",dumpMaxBytes:"OPENCODE_OPENAI_AUTH_DUMP_MAX_BYTES",codexApiEndpoint:"CORTEXKIT_OPENAI_AUTH_CODEX_ENDPOINT",configFile:"OPENCODE_OPENAI_AUTH_FILE",stateFile:"OPENCODE_OPENAI_AUTH_STATE_FILE",configDir:"OPENCODE_CONFIG_DIR"};function zY(){let Y=process.env[Y6.configDir]?.trim();if(Y)return Y;return u1(process.env.XDG_CONFIG_HOME||u1(BW(),".config"),"opencode")}function J0(){return process.env[Y6.configFile]?.trim()||u1(zY(),FW)}function vJ(){try{let Y=JSON.parse(ZW(J0(),"utf8"));return Y!=null&&typeof Y==="object"&&!Array.isArray(Y)?Y:{}}catch{return{}}}function hJ(Y){let J=process.env[Y];if(J===void 0)return;let X=J.trim().toLowerCase();if(X==="1"||X==="true"||X==="yes"||X==="on")return!0;if(X===""||X==="0"||X==="false"||X==="no"||X==="off")return!1;return}function s9(Y,J,X){let Q=hJ(Y);if(Q!==void 0)return Q;if(typeof J==="boolean")return J;return X}function OW(Y){let J=process.env[Y6.dumpMaxBytes],X=J??Y;if(X===void 0)return kJ;let Q=J?.trim()?Number(J):X;if(typeof Q==="number"&&Number.isSafeInteger(Q)&&Q>=0)return Q;if(!xJ)xJ=!0,jW.warn("Invalid dumpMaxBytes; using the default 512 MiB cap",{env:Y6.dumpMaxBytes});return kJ}function yJ(Y){if(typeof Y.dump==="boolean")return Y.dump;if(Y.dump&&typeof Y.dump==="object")return Y.dump.enabled;return}var r6;function a9(){let Y=hJ(Y6.dump);if(Y!==void 0)return Y;let J=J0(),X;try{X=VW(J)}catch{}if(r6?.path===J&&r6.mtimeMs===X?.mtimeMs&&r6.ctimeMs===X?.ctimeMs&&r6.size===X?.size)return r6.enabled;let Q=s9(Y6.dump,yJ(vJ()),!1);return r6={path:J,mtimeMs:X?.mtimeMs,ctimeMs:X?.ctimeMs,size:X?.size,enabled:Q},Q}function DW(){let Y=vJ();return{webSockets:s9(Y6.webSockets,Y.webSockets,!1),rawWebSocket:s9(Y6.rawWebSocket,Y.rawWebSocket,!1),responsesLite:s9(Y6.responsesLite,Y.responsesLite,!1),dump:s9(Y6.dump,yJ(Y),!1),dumpDir:process.env[Y6.dumpDir]?.trim()||(typeof Y.dumpDir==="string"&&Y.dumpDir.trim()?Y.dumpDir.trim():u1(LW(),"opencode-openai-auth-dumps")),dumpMaxBytes:OW(Y.dumpMaxBytes),codexApiEndpoint:process.env[Y6.codexApiEndpoint]?.trim()||(typeof Y.codexApiEndpoint==="string"&&Y.codexApiEndpoint.trim()?Y.codexApiEndpoint.trim():NW)}}var c1;function i0(){if(!c1)c1=DW();return c1}function gJ(){return c1=void 0,r6=void 0,i0()}import{readFileSync as _W}from"node:fs";var PW="The `main` account holds the login OpenCode signs in with (its login slot only points at it), so it cannot be removed. Sign in with another account through `opencode auth login` to replace it.";function qW(Y){return`The account-pool migration is moving OpenCode's login into \`${Y}\` right now, so it cannot be removed yet. Try again once the migration has finished.`}function _9(Y,J={}){return O9({provider:"openai",configPath:Y.configPath,statePath:Y.statePath,quota:F9,...J})}function KY(Y){try{let J=JSON.parse(_W(Y,"utf8"));if(!J||typeof J!=="object"||Array.isArray(J))return!1;return t9(J).migratedAt!==void 0}catch{return!1}}async function p1(Y,J){if(!KY(Y.configPath))return;let X=await J.read();return X.status==="ready"?X.rows:void 0}function l1(Y,J){if(Y===V6)return PW;if(t9(J.config).pending?.rowId===Y)return qW(Y);return}function MW(Y,J){return D9(Y,V6,J.legacyLocks).filter((X)=>X.name===e9)}function M6(Y,J={}){return MW(Y,J)}var P9="This setup has no OpenAI login in its account store. Sign in for this setup with opencode auth login, or point OPENCODE_OPENAI_AUTH_FILE and OPENCODE_OPENAI_AUTH_STATE_FILE at the store that holds the login.";class a6 extends Error{constructor(){super("The main OpenAI account lives in the account pool");this.name="MainAccountInPoolError"}}async function fJ(Y){let J=Y.storage,X=s6(J);if(!J||!X||m0(X))return;let Q=X,G=Y.now(),$=(J.refresh?.refreshBeforeExpiryMinutes??240)*60000;if((!Q.access||!Q.expires||Q.expires-G<=$)&&!E6(Q.lastRefreshError,Q.refresh,G))try{Q=await Y.refreshAccount(Q,J)}catch(H){Y.warn?.("pool main row refresh failed",{error:H instanceof Error?H.message:String(H)})}let K=Q.access?.trim();if(!K)return;if(typeof Q.expires!=="number"||Q.expires<=Y.now())return;return{account:Q,token:K}}import{readdir as EW,readFile as AW}from"node:fs/promises";import{homedir as TW}from"node:os";import{join as q9}from"node:path";function cJ(){return process.env.XDG_STATE_HOME||q9(TW(),".local","state")}function RW(Y=cJ()){return q9(Y,"cortexkit","openai-auth","processes")}function CW(Y=cJ()){return q9(Y,"cortexkit","openai-auth","rpc")}function wW(Y){try{return process.kill(Y,0),!0}catch(J){return J.code==="EPERM"}}function mJ(Y){let J=/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z.-]+)?$/.exec(Y.trim());if(!J)return;return{core:[Number(J[1]),Number(J[2]),Number(J[3])],pre:J[4]?J[4].split("."):[]}}function SW(Y,J){let X=mJ(Y),Q=mJ(J);if(!X||!Q)return;for(let G=0;G<3;G++){let $=X.core[G]-Q.core[G];if($!==0)return Math.sign($)}if(X.pre.length===0||Q.pre.length===0)return Math.sign(Q.pre.length-X.pre.length);for(let G=0;G<Math.max(X.pre.length,Q.pre.length);G++){let $=X.pre[G],W=Q.pre[G];if($===void 0)return-1;if(W===void 0)return 1;let K=/^\d+$/.test($),H=/^\d+$/.test(W);if(K&&H){let U=Number($)-Number(W);if(U!==0)return Math.sign(U)}else if(K!==H)return K?-1:1;else if($!==W)return $<W?-1:1}return 0}async function UY(Y){try{return{ok:!0,names:await EW(Y)}}catch(J){let X=J.code;if(X==="ENOENT")return{ok:!0,names:[]};return{ok:!1,code:X,error:`${Y}: ${String(J)}`}}}async function IW(Y,J){let X;try{X=await AW(Y,"utf8")}catch(Q){if(Q.code==="ENOENT")return{kind:"gone"};return{kind:"unreadable"}}try{let Q=JSON.parse(X);if(Q!==null&&typeof Q==="object"&&Q.pid===J&&typeof Q.version==="string")return{kind:"ok",version:Q.version}}catch{}return{kind:"unreadable"}}async function M9(Y){let J=Y.isAlive??wW,X=Y.selfPid??process.pid,Q=new Map,G=(B)=>{let F=B.pid==="unknown"?`dir:${B.detail}`:B.pid;if(!Q.has(F))Q.set(F,B)},$=(B)=>{try{return J(B)}catch{return!0}},W=(B,F)=>{let P=F.exec(B),q=P?Number(P[1]):Number.NaN;return Number.isSafeInteger(q)&&q>=1?q:void 0},K=RW(Y.stateHome),H=new Set,U=await UY(K);if(!U.ok)G({pid:"unknown",version:"unknown",detail:U.error});for(let B of U.ok?U.names:[]){let F=W(B,/^(\d+)\.json$/);if(F===void 0||F===X)continue;let P=q9(K,B),q=await IW(P,F);if(q.kind==="gone")continue;if(H.add(F),!$(F))continue;if(q.kind==="unreadable"){G({pid:F,version:"unknown",detail:P});continue}let E=SW(q.version,Y.currentVersion);if(E===void 0||E<0)G({pid:F,version:q.version,detail:P})}let V=Y.rpcDir??CW(Y.stateHome),D=await UY(V);if(!D.ok)G({pid:"unknown",version:"unknown",detail:D.error});for(let B of D.ok?D.names:[]){if(!d1(B))continue;let F=q9(V,B),P=await UY(F);if(!P.ok){if(P.code==="ENOTDIR")continue;G({pid:"unknown",version:"unknown",detail:P.error});continue}for(let q of P.names){let E=W(q,/^port-(\d+)\.json$/);if(E===void 0||E===X||H.has(E))continue;if($(E))G({pid:E,version:"unknown",detail:q9(F,q)})}}let L=(B)=>B.pid==="unknown"?Number.POSITIVE_INFINITY:B.pid;return Q.size===0?{open:!0}:{open:!1,blockers:[...Q.values()].sort((B,F)=>L(B)-L(F))}}var v6="1.6.0";import{readFile as nJ}from"node:fs/promises";function i1(Y){return typeof Y==="object"&&Y!==null&&!Array.isArray(Y)}async function oJ(Y){let J=await lJ(Y.configPath),X=[];try{let G=JSON.parse(await nJ(Y.statePath,"utf8"));if(i1(G)){let $=G.accounts;if(i1($))X=Object.keys($)}}catch(G){if(G.code!=="ENOENT")throw G}return{rosterIds:J?[...J]:[],stateIds:X,orphanStateIds:J?X.filter((G)=>!J.has(G)):[]}}async function bW(Y){try{let J=JSON.parse(await nJ(Y.configPath,"utf8"));return i1(J)&&i1(J.claustrum)&&J.claustrum.mode==="claustrum"}catch{return!1}}var uJ="Connect this host to the Claustrum vault (`opencode auth login` > Connect to the Claustrum vault, or the Vault section of `/openai`) if the vault holds the account, or sign in to the account again.";function rJ(Y){if(!Y)return;let J=Y.accounts.find((X)=>X.id==="main"&&o0(X));if(J)return J;if(!Y.mainAccountId)return;return Y.accounts.find((X)=>o0(X)&&X.accountId===Y.mainAccountId)}function kW(Y,J){let X=Y.lastRefreshError;return E6(X,Y.refresh,J)&&X!==void 0&&X.nextRetryAt!==void 0&&X.nextRetryAt-X.checkedAt>=pJ}function xW(Y){let J=[],X=[],Q=Y.now??Date.now(),G=rJ(Y.storage),$=!1;if(m0(Y.auth))J.push({code:"tombstoned-host-slot",message:`OpenCode's OpenAI slot holds a tombstone left by the vault custody of an older version, not a credential; it is never sent. ${uJ}`});else if(n0(Y.auth)){if(!s6(Y.storage))J.push({code:"main-pool-row-missing",message:"The main account was moved into the account pool, but the pool has no usable `main` row."})}else if(!Y.auth)J.push({code:"auth-slot-missing",message:"OpenCode's OpenAI auth slot is missing."}),$=!0;else if(Y.auth.type!=="oauth")J.push({code:"auth-slot-not-oauth",message:"OpenCode's OpenAI auth slot is not OAuth."}),$=!0;else if(G&&(!Y.auth.refresh||G.refresh!==Y.auth.refresh))J.push({code:"main-refresh-not-in-store",message:"OpenCode's main credential does not match the copy in the account store."}),$=!0;if($&&G){let H={type:"restore-main-credential"};X.push(H);let U=J.find((V)=>V.code==="auth-slot-missing"||V.code==="auth-slot-not-oauth"||V.code==="main-refresh-not-in-store");if(U)U.repair=H}let W=Y.storage?.accounts??[];if(W.length===0)J.push({code:"no-accounts",message:"The account store has no accounts."});else if(!W.some((H)=>H.enabled!==!1))J.push({code:"no-enabled-accounts",message:"The account store has no enabled accounts."});for(let H of W){if(!o0(H)||!m0(H))continue;J.push({code:"tombstoned-account",accountId:H.id,message:`Account ${H.id} holds a tombstone left by the vault custody of an older version, not a credential; it is never sent. ${uJ}`})}if(Y.retiredCustodyMode)J.push({code:"retired-custody-mode",message:"The config still selects the vault custody mode of an older version (`claustrum.mode`). It is ignored, and dropped at the next settings write; vault accounts are served once this host is connected to the Claustrum vault."});for(let H of W){if(!o0(H))continue;if(!kW(H,Q))continue;let U={type:"clear-refresh-backoff",accountId:H.id};X.push(U),J.push({code:"armed-non-transient-refresh-backoff",accountId:H.id,message:`Account ${H.id} has an armed non-transient refresh backoff.`,repair:U})}let K=[...Y.orphanStateIds??[]];if(K.length>0){let H={type:"prune-orphan-state-ids",ids:K};X.push(H),J.push({code:"orphan-state-ids",message:`State contains ids absent from the config roster: ${K.join(", ")}.`,repair:H})}return{findings:J,repairs:X}}function sJ(Y){let J=(X)=>{if(X.type==="restore-main-credential")return{label:"Copy the stored main credential back into OpenCode's slot",apply:async()=>{if(n0(await Y.readAuth()))return;let Q=rJ(await Y.loadAccounts(Y.paths));if(!Q)return;await Y.setMainAuth({refresh:Q.refresh,access:Q.access??"",expires:Q.expires??0})}};if(Y.migrated)return;if(X.type==="prune-orphan-state-ids")return{label:`Drop the state entries of ${X.ids.join(", ")}`,apply:async()=>{await Y.mutateAccounts((Q)=>Q,Y.paths)}};return{label:`Clear the refresh backoff of ${X.accountId}`,apply:async()=>{await Y.mutateAccounts((Q)=>{let G=Q.accounts.find(($)=>$.id===X.accountId&&o0($));if(G)G.lastRefreshError=void 0;return Q},Y.paths)}}};return[{id:"openai-auth",run:async()=>{let[X,Q,G,$]=await Promise.all([Y.loadAccounts(Y.paths),Y.readStoreIds(Y.paths),Y.readAuth(),bW(Y.paths)]),W=xW({auth:G.type==="missing"?void 0:G,storage:X,orphanStateIds:Q.orphanStateIds,retiredCustodyMode:$,now:Y.now()}),K=await O9({provider:"openai",quota:F9,configPath:Y.paths.configPath,statePath:Y.paths.statePath}).read();if(K.status==="ready")for(let H of K.rows){if(H.disabledReason!==dJ)continue;W.findings.push({code:"slot-transfer-origin-unknown",accountId:H.id,message:`Account ${H.id} was preserved disabled after an interrupted transfer with an untagged placeholder; sole ownership could not be established. ${iJ}`})}return W.findings.map((H)=>{let U=H.repair?J(H.repair):void 0;return{code:H.code,message:H.message,...H.accountId!==void 0?{accountId:H.accountId}:{},...U?{repair:U}:{}}})}}]}var hW=LX,aJ="OpenAI accounts",yW="ChatGPT accounts in the vault",gW="Uses the ChatGPT accounts in the Claustrum vault, with no sign-in. This works only while this host is connected to the vault and OpenCode has no OpenAI login stored; otherwise it fails and changes nothing.";async function fW(){let{redirectUri:Y}=await XX(),J=await eJ(),X=tJ(crypto.getRandomValues(new Uint8Array(32)).buffer),Q=YX(Y,J,X),G=QX(J,X);return{url:Q,instructions:"Complete authorization in your browser. This window will close automatically.",method:"auto",callback:async()=>{try{let $=await G;return{type:"success",refresh:$.refresh_token,access:$.access_token,expires:Date.now()+($.expires_in??3600)*1000,accountId:t6($)}}finally{JX(X)}}}}async function mW(Y){let{deviceData:J,url:X,instructions:Q}=await GX(Y);return{url:X,instructions:Q,method:"auto",async callback(){try{let G=await $X(J,Y);return{type:"success",refresh:G.refresh_token,access:G.access_token,expires:Date.now()+(G.expires_in??3600)*1000,accountId:t6(G)}}catch{return{type:"failed"}}}}}function OX({client:Y,getAuth:J,getPaths:X=()=>U0(J0()),fetchImpl:Q=fetch,packageVersion:G=v6,dependencies:$,onMainSlotWritten:W,vault:K}){let H={authorizeBrowser:$?.authorizeBrowser??fW,authorizeHeadless:$?.authorizeHeadless??(()=>mW(G)),beginAccountLogin:$?.beginAccountLogin??o1,loadAccounts:$?.loadAccounts??R0,mutateAccounts:$?.mutateAccounts??r1,readStoreIds:$?.readStoreIds??oJ,openBrowser:$?.openBrowser??hW,now:$?.now??Date.now,openAccountPool:$?.openAccountPool??_9,migrationBlockers:$?.migrationBlockers??(async()=>{let j=await M9({currentVersion:G});return j.open?[]:j.blockers.map((C)=>({pid:C.pid,version:C.version}))}),...$?.terminal?{terminal:$.terminal}:{},...$?.vaultWait?{vaultWait:$.vaultWait}:{}},U=async()=>await J?.().catch(()=>{return})??{type:"missing"},V=async()=>{if(K&&await K.authority()!=="local")return!0;if((await U()).type!=="missing")return!0;let j=X(),C=H.openAccountPool(j);if((await C.read()).status==="ready")return ZX(C);return((await H.loadAccounts(j))?.accounts.length??0)>0},D=async(j)=>{if(await jX(X().configPath,async()=>{if(K&&await K.authority()!=="local")return!1;if(n0(await U()))return!1;return await Y.auth.set({path:{id:"openai"},body:{type:"oauth",...j}}),!0}))await W?.().catch(()=>{})},L=(j)=>({begin:async({headless:C,signal:h})=>{if(K&&await K.authority()!=="local")throw Error(E9);let A=await H.beginAccountLogin({version:G,headless:C,...h?{signal:h}:{}});return{url:A.url,instructions:A.instructions,completion:A.completion.then(async(g)=>{if(K&&await K.authority()!=="local")throw Error(E9);let r=await j.read(),i=r.status==="ready"?r.rows.find((B0)=>B0.id===V6)?.identity:void 0;if(g.accountId&&i&&g.accountId===i)throw Error("that account is already the OpenCode main credential");return{id:g.id,credential:{type:"oauth",refresh:g.refresh,...g.access!==void 0?{access:g.access}:{},...g.expires!==void 0?{expires:g.expires}:{}},...g.accountId!==void 0?{identity:g.accountId}:{},...g.label!==void 0?{label:g.label}:{}}})}},openBrowser:(C)=>H.openBrowser(C)}),B=async(j)=>{if(K&&await K.authority()!=="local")throw Error(E9);let C=j.credential;if(C?.type!=="oauth"||!C.access)throw Error("no usable access token for a quota check");let h=await Y1({accessToken:C.access,fetchImpl:Q,now:H.now,...j.identity?{accountId:j.identity}:{},accountKey:j.id});return A9(h,H.now(),!0)},F=(j)=>sJ({paths:X(),migrated:j,readAuth:U,loadAccounts:H.loadAccounts,readStoreIds:H.readStoreIds,mutateAccounts:H.mutateAccounts,setMainAuth:D,now:H.now}),P=(j,C)=>({title:aJ,store:JY(C,{rowLocks:(h)=>D9(j,h)}),...H.terminal?{terminal:H.terminal}:{},login:L(C),protect:(h,A)=>l1(h,A),extraLocks:M6(j),pollQuota:B,doctor:F(!0),status:async()=>{let h=await K?.status();if(K&&await K.authority()!=="local"&&h)return[ZY(K.host,K.name,h.enrollment)];return[`Routing: ${(await H.loadAccounts(j))?.routing?.mode??"main-first"}`,...K?[ZY(K.host,K.name,(await K.status()).enrollment)]:[]]},...K?{extraActions:[q(K)]}:{}}),q=(j)=>{let C=j.enrolled();return{id:C?"vault-disconnect":"vault-connect",label:C?"Disconnect from the Claustrum vault":"Connect to the Claustrum vault",hint:"serve OpenAI accounts held in the vault",run:async(h)=>{let A=await j.authority();if(C){if(A!=="local")await j.disconnect();h.print("Disconnected from the Claustrum vault.");return}if(A!=="local"){h.print("Nothing was changed: this host is already connected or its enrollment is unreadable. Reopen the menu to disconnect.");return}h.print(`Asking the Claustrum vault to enroll ${j.name}…`);let g,r=await j.waitForApproval({...H.vaultWait,onPending:(i)=>{let V0=i.state==="pending"?i.requestId??i.retryCode??"":i.state;if(V0===g)return;g=V0;for(let B0 of zX(j.name,i))h.print(B0);h.print("Waiting for the approval… (stop with Ctrl-C; Connect picks the request up again)")}});h.print(KX(j,r).text)}}},E=async()=>{let j=await H.migrationBlockers();return UX({title:aJ,status:["Accounts move to the new account layout once every OpenCode process on this machine runs this version of OpenAI auth. Account management opens after the move.",...j.length>0?["These processes still hold the move back:",...j.map((C)=>` ${C.pid==="unknown"?"processes that could not be read":`pid ${C.pid}`}: version ${C.version}`)]:[]],actions:[HX({checks:F(!1)})],...H.terminal?{terminal:H.terminal}:{}})},S=async(j)=>{let C=X(),h=H.openAccountPool(C);if(K&&await K.authority()!=="local")return n1(P(C,h),K);if(await p1(C,h)===void 0)return E();let A=P(C,h);return K?n1(A,K):VX(A)},x=(j)=>async()=>{if(K&&await K.authority()!=="local")throw Error(E9);let C=await j();if(C.method!=="auto")return C;return{...C,callback:async()=>{let h=await C.callback();if(K&&await K.authority()!=="local")return{type:"failed"};return h}}};return[{label:"ChatGPT Pro/Plus (browser)",type:"oauth",authorize:BX({hasCredential:V,openMenu:S,login:x(()=>H.authorizeBrowser())})},{label:"ChatGPT Pro/Plus (headless)",type:"oauth",authorize:x(()=>H.authorizeHeadless())},{label:"Manually enter API Key",type:"api"},...K?.enrolled()?[{label:yW,type:"oauth",authorize:async()=>({url:"",instructions:gW,method:"auto",callback:async()=>{if(await WX(K.paths,K.name)!=="vault")return{type:"failed"};try{let j=JSON.parse(await vW(FX(),"utf8"));if(!j||typeof j!=="object"||Array.isArray(j)||Object.hasOwn(j,"openai"))return{type:"failed"}}catch(j){if(j.code!=="ENOENT")return{type:"failed"}}return{...NX,type:"success"}}})}]:[]]}var VY=["type","model","instructions","previous_response_id","input","tools","tool_choice","parallel_tool_calls","reasoning","store","stream","include","prompt_cache_key","text","generate","client_metadata"];function e6(Y){let J={};for(let X of VY)if(X in Y)J[X]=Y[X];for(let X of Object.keys(Y))if(!(X in J))J[X]=Y[X];return J}import{createHash as $z}from"node:crypto";import{createHash as cW,randomBytes as DX}from"node:crypto";import{chmod as uW,lstat as _X,mkdir as pW,open as lW,readdir as wX,rename as dW,unlink as FY,writeFile as iW}from"node:fs/promises";import{join as s1,resolve as BY}from"node:path";var nW=100,LY="session-unknown",oW=300000,rW=60000,sW=600000,aW=/\.(body|meta|request|response)\.json$/,tW=/^\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}-\d{3}Z-\d+-\d{6,}-[a-zA-Z0-9._-]+$/,eW=/\.[a-f0-9]{24}\.partial$/;function SX(Y){let J=Y.replace(aW,"");if(J===Y||!tW.test(J))return;return J}function Yz(Y){let J=Y.replace(eW,"");return J!==Y&&SX(J)!==void 0}async function PX(Y){let{dir:J,maxBytes:X}=Y,Q=Y.now??Date.now(),G=Y.minAgeMs??rW,$=Y.partialStaleMs??sW,W={removed:0,freedBytes:0};if(!(X>0))return W;try{if(B6)await EX(J,"directory");if((await _X(J)).isSymbolicLink())return W;let K=new Set((Y.protectedPaths??[]).map((q)=>BY(q))),H=await wX(J,{withFileTypes:!0}),U=[];await Promise.all(H.map(async(q)=>{if(!q.isFile())return;let E=Yz(q.name),S=E?void 0:SX(q.name);if(!E&&S===void 0)return;let x=s1(J,q.name);try{let j=await _X(x);if(!j.isFile())return;U.push({path:x,size:j.size,mtimeMs:j.mtimeMs,group:S})}catch{}}));let V=U.reduce((q,E)=>q+E.size,0),D=0,L=0,B=async(q)=>{try{await FY(q.path),V-=q.size,L+=q.size,D+=1}catch{}};for(let q of U){if(q.group!==void 0)continue;if(K.has(BY(q.path)))continue;if(Q-q.mtimeMs<$)continue;await B(q)}let F=new Map;for(let q of U){if(q.group===void 0)continue;let E=F.get(q.group)??{files:[],newest:0};E.files.push(q),E.newest=Math.max(E.newest,q.mtimeMs),F.set(q.group,E)}let P=[...F.entries()].sort(([q,E],[S,x])=>E.newest-x.newest||q.localeCompare(S));for(let[,q]of P){if(V<=X)break;if(Q-q.newest<G)continue;if(q.files.some((E)=>K.has(BY(E.path))))continue;for(let E of q.files)await B(E)}if(D>0)Y.logger?.debug("removed old dump files",{removed:D,freedBytes:L});return{removed:D,freedBytes:L}}catch(K){if(K instanceof X1&&K.code==="ERR_PRIVATE_FILES_SECURITY")throw K;return W}}async function Jz(Y,J,X){if(B6)return RX(Y,J,{stagePath:`${Y}.${X?X():DX(12).toString("hex")}.partial`});for(let Q=0;;Q+=1){let G=`${Y}.${X?X():DX(12).toString("hex")}.partial`,$=!1,W;try{W=await lW(G,"wx",384),$=!0,await W.writeFile(J,"utf8"),await W.chmod(384),await W.close(),W=void 0,await dW(G,Y);return}catch(K){if(await W?.close().catch(()=>{}),$)await FY(G).catch(()=>{});if(K.code==="EEXIST"&&Q===0)continue;throw K}}}function NY(Y){return Y.length<=16?Y:`${Y.slice(0,12)}…`}function J1(Y,J){let X=Y.trim().replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"");if(!X)return J;return X.slice(0,80)}function qX(Y){return cW("sha256").update(Y).digest("hex")}function Xz(Y){return Y.toLowerCase().replace(/[-_]/g,"")}function MX(Y){return Y!==null&&typeof Y==="object"&&!Array.isArray(Y)}function Qz(Y,J){if(Y===void 0)return null;if(Y===J)return{changed:!1,firstByte:-1,lastPreviousByte:-1,lastCurrentByte:-1,previousBytes:Y.length,currentBytes:J.length};let X=0;while(X<Y.length&&X<J.length&&Y[X]===J[X])X++;let Q=Y.length-1,G=J.length-1;while(Q>=X&&G>=X&&Y[Q]===J[G])Q--,G--;return{changed:!0,firstByte:X,lastPreviousByte:Q,lastCurrentByte:G,changedPreviousBytes:Q-X+1,changedCurrentBytes:G-X+1,previousBytes:Y.length,currentBytes:J.length}}var Gz=0;function IX(Y){let J=Y.enabled===!0,X=Y.pid??process.pid,Q=Y.now??Date.now,G=Y.logger,$=new Set((Y.secretKeys??[]).map(Xz)),W=CX({extraSecretKeys:(A)=>$.has(A),extraValuePatterns:[...Y.secretPatterns??[]]}),K=new Set(Y.schemaKeys??["tools"]),H=new Map,U=()=>typeof Y.dir==="function"?Y.dir():Y.dir;function V(A){let g=W.redact({[A]:null})[A];return g===null?void 0:g}function D(A){if(Array.isArray(A))return A.map(D);if(MX(A)){let g={};for(let[r,i]of Object.entries(A)){let V0=V(r);if(K.has(r))g[r]=W.redactStrings(i);else if(V0!==void 0)g[r]=V0;else g[r]=D(i)}return g}return W.redactStrings(A)}function L(A){let g;try{g=JSON.parse(A)}catch{return{text:W.redactStrings(A),parsed:void 0}}let r=D(g),i=JSON.stringify(r);return{text:JSON.stringify(g)===i?A:i,parsed:MX(r)?r:void 0}}async function B(A,g,r,i){let V0=`-${J1(g,LY)}-${J1(r,"channel")}`,B0;try{B0=await wX(A)}catch{return}let p=B0.filter((t)=>t.endsWith(".meta.json")&&t.includes(V0)).sort().reverse();for(let t of p)try{if(JSON.parse(await jY(s1(A,t),B6))?.baselineKey!==i)continue;return await jY(s1(A,t.replace(/\.meta\.json$/,".body.json")),B6)}catch(L0){if(L0 instanceof X1&&(B6||L0.code==="ERR_PRIVATE_FILES_SECURITY"))throw L0}return}function F(A,g){if(!H.has(A))while(H.size>=nW){let r=H.keys().next().value;if(r===void 0)break;H.delete(r)}H.set(A,g)}async function P(A){if(!J)return;let g=++Gz,r=A.session?.trim()||LY,i=U(),V0=new Date(Q()).toISOString(),B0=[V0.replace(/[:.]/g,"-"),String(X),String(g).padStart(6,"0"),J1(r,LY),J1(A.channel,"channel"),...A.phase?[J1(A.phase,"phase")]:[]].join("-"),p=s1(i,B0),t={body:`${p}.body.json`,metadata:`${p}.meta.json`,request:`${p}.request.json`},L0=qX(`${A.channel}\x00${r}`);try{if(B6)await AX(i);else await pW(i,{recursive:!0,mode:448}),await uW(i,448);let v=H.get(L0),x0=v===void 0?void 0:"memory";if(v===void 0){if(v=await B(i,r,A.channel,L0),v!==void 0)x0="disk"}let T0=L(A.bodyText),H0={id:B0,createdAt:V0,pid:X,session:NY(r),channel:A.channel,...A.phase?{phase:A.phase}:{},accountId:A.accountId,status:A.status,error:A.error===void 0?void 0:W.redactStrings(A.error),baselineKey:L0,bodyBytes:Buffer.byteLength(A.bodyText,"utf8"),bodyHash:qX(A.bodyText),diff:Qz(v,T0.text),baselineSource:x0,body:T0.parsed?{parseable:!0,...Y.summarize?.(T0.parsed)}:{parseable:!1},...A.meta?{extra:D(A.meta)}:{},files:t},s=D({url:A.url,method:A.method,accountId:A.accountId,headers:A.headers===void 0?void 0:Object.fromEntries(new Headers(A.headers).entries())}),P0=(d,y)=>B6?TX(d,y):iW(d,y,{encoding:"utf8",mode:384,flag:"wx"}),l=[[t.body,T0.text],[t.metadata,`${JSON.stringify(H0,null,2)}
|
|
2
|
+
`],[t.request,`${JSON.stringify(s,null,2)}
|
|
3
|
+
`]],I=await Promise.allSettled(l.map(([d,y])=>P0(d,y))),u=I.find((d)=>d.status==="rejected");if(u){if(Y.cleanupFailedDumps)await q(l,I);throw u.reason}return F(L0,T0.text),G?.debug("dumped request",{id:B0,session:NY(r),body:t.body}),C(i,Object.values(t)),{id:B0,files:t,responseFile:`${p}.response.json`}}catch(v){if(v instanceof X1&&(B6||v.code==="ERR_PRIVATE_FILES_SECURITY"))throw v;G?.warn("request dump failed",{session:NY(r),error:v instanceof Error?v.message:String(v)});return}}async function q(A,g){await Promise.all(A.map(async([r],i)=>{let V0=g[i];if(V0?.status==="rejected"&&V0.reason?.code==="EEXIST")return;await FY(r).catch(()=>{})}))}let E=Y.maxBytes??0,S=Y.sweepIntervalMs??oW,x=0;function j(A,g){return{dir:A,maxBytes:E,protectedPaths:g,now:Q(),minAgeMs:Y.sweepMinAgeMs,partialStaleMs:Y.partialStaleMs,logger:G}}function C(A,g){if(!(E>0))return;let r=Q();if(r-x<S)return;x=r,PX(j(A,g))}async function h(A,g){if(!A)return;let r=D({status:g.status,requestId:g.requestId,usage:g.usage,...g.fields,complete:g.complete??!0});try{return await Jz(A.responseFile,`${JSON.stringify(r,null,2)}
|
|
4
|
+
`,Y.stageName),A.responseFile}catch(i){if(i instanceof X1&&(B6||i.code==="ERR_PRIVATE_FILES_SECURITY"))throw i;G?.warn("response dump failed",{id:A.id,error:i instanceof Error?i.message:String(i)});return}}return{isEnabled:()=>J,setEnabled:(A)=>{J=A},dump:P,dumpResponse:h,sweep:(A)=>PX(j(U(),A))}}var bX=z0("dump"),h6="x-cortexkit-openai-auth-dump-session",Wz=["chatgpt-account-id","email","org_name","organization_name"],zz=["tools"];function OY(Y){return $z("sha256").update(JSON.stringify(Y)).digest("hex")}function Kz(Y){return Y!=null&&typeof Y==="object"&&"type"in Y&&typeof Y.type==="string"?Y.type:"unknown"}function Hz(Y){let J=Array.isArray(Y.input)?Y.input:[],X=Array.isArray(Y.tools)?Y.tools:[],Q=Y.client_metadata!=null&&typeof Y.client_metadata==="object"&&!Array.isArray(Y.client_metadata)?Y.client_metadata:void 0;return{model:typeof Y.model==="string"?Y.model:void 0,stream:Y.stream,generate:Y.generate,store:Y.store,previousResponseID:typeof Y.previous_response_id==="string"?Y.previous_response_id:void 0,promptCacheKey:typeof Y.prompt_cache_key==="string"?Y.prompt_cache_key:void 0,reasoning:Y.reasoning,inputCount:J.length,inputHash:OY(J),inputBytes:JSON.stringify(J).length,firstInputHash:J[0]===void 0?null:OY(J[0]),toolsCount:X.length,toolTypes:X.map(Kz),toolsHash:OY(X),clientMetadataKeys:Q?Object.keys(Q).sort():[]}}var DY;function kX(){return DY=i0().dumpMaxBytes,IX({dir:()=>i0().dumpDir,maxBytes:DY,logger:bX,secretKeys:Wz,schemaKeys:zz,summarize:Hz})}var a1=kX();async function T9(Y){if(!a9()){a1.setEnabled(!1);return}if(i0().dumpMaxBytes!==DY)a1=kX();a1.setEnabled(!0);let J=typeof Y.bodyText==="function"?Y.bodyText():Y.bodyText;await a1.dump({session:Y.sessionID,channel:Y.transport,phase:Y.phase,bodyText:J,accountId:Y.accountId,url:Y.url,method:Y.method,headers:Y.headers,status:Y.status,error:Y.error})}async function Y9(Y){if(!a9())return;bX.debug("diagnostic",Y)}function R9(Y){return JSON.stringify(_Y(Y))??"undefined"}function _Y(Y){if(Array.isArray(Y))return Y.map(_Y);if(!n(Y))return Y;return Object.fromEntries(Object.keys(Y).sort().map((J)=>[J,_Y(Y[J])]))}var Uz=512,Zz=2097152;function PY(Y,J){if(typeof Y==="function"||typeof J==="function")return!1;if(J!==null&&typeof J==="object"&&Object.hasOwn(J,"toJSON")&&typeof J.toJSON==="function")return!1;if(Y===J)return!0;if(Array.isArray(Y))return Array.isArray(J)&&Y.length===J.length&&Y.every(($,W)=>PY($,J[W]));if(Y===null||J===null||typeof Y!=="object"||typeof J!=="object"||Array.isArray(J))return!1;let X=Y,Q=J,G=Object.keys(X);return G.length===Object.keys(Q).length&&G.every(($)=>Object.prototype.propertyIsEnumerable.call(Q,$)&&PY(X[$],Q[$]))}function J9(Y,J){let X=[],Q=[],G=0;for(let $=0;$<Y.length;$++){let W=J?.texts[$],K=W!==void 0&&PY(J?.snapshots[$],Y[$]),H=K?W:R9(Y[$]);X.push(H),Q.push(K?J?.snapshots[$]:H==="undefined"?void 0:JSON.parse(H)),G+=H.length}return{texts:X,snapshots:Q,retainable:Y.length<=Uz&&G<=Zz}}function Q1(Y){return Y.retainable?Y:void 0}function G1(Y,J){if(Y.texts.length>J.texts.length)return;for(let X=0;X<Y.texts.length;X++)if(Y.texts[X]!==J.texts[X])return;return Y.texts.length}function A6(){let Y=crypto.getRandomValues(new Uint8Array(16)),J=Date.now();Y[0]=J/1099511627776&255,Y[1]=J/4294967296&255,Y[2]=J/16777216&255,Y[3]=J/65536&255,Y[4]=J/256&255,Y[5]=J&255,Y[6]=(Y[6]??0)&15|112,Y[8]=(Y[8]??0)&63|128;let X=Array.from(Y,(Q)=>Q.toString(16).padStart(2,"0")).join("");return`${X.slice(0,8)}-${X.slice(8,12)}-${X.slice(12,16)}-${X.slice(16,20)}-${X.slice(20)}`}var xX=new Set(["gpt-5.6-sol","gpt-5.6-terra","gpt-5.6-luna","gpt-6-astra","gpt-6-sol","gpt-6-luna","gpt-6.1-sol"]),Vz="terminal_resize_reflow",t1="0.159.0",vX=`codex_exec/${t1} (Debian 12.0.0; aarch64) unknown (codex_exec; ${t1})`,Bz="seccomp",$1="x-openai-auth-agent";function Lz(Y){if(typeof Y!=="string")return;try{let J=JSON.parse(Y);return typeof J==="object"&&J!==null&&!Array.isArray(J)?J:void 0}catch{return}}function W1(Y,J){return n(Y)&&(Y.type==="message"||("role"in Y))&&Y.role===J}function Nz(Y,J,X){if(!Y.input)return J.length>0;let Q=Y.canonicalInput??J9(Y.input);if(G1(Q,X)===void 0)return!0;return J.slice(Y.input.length).some(($)=>W1($,"user")||W1($,"developer"))}function jz(Y,J,X){let Q=Array.isArray(J?.input)?J.input:void 0,G=Q?J9(Q,Y.canonicalInput):void 0;if(Q&&G&&(Nz(Y,Q,G)||!Y.turnID))Y.turnID=(X?.uuid??A6)(),Y.turnStartedAt=(X?.now??Date.now)();else if(!Y.turnStartedAt)Y.turnStartedAt=(X?.now??Date.now)();if(Q&&G)Y.input=Q.slice(),Y.canonicalInput=Q1(G)}function hX(Y){let J=Y.headers.get($1);if(Y.headers.delete($1),!Y.metadata)return{init:Y.init};let X=Lz(Y.init?.body),Q=Y.runtime?.now??Date.now;if(!Y.skipTurnUpdate){if(!Y.websocket)jz(Y.metadata,X,Y.runtime);else if(!Y.metadata.turnStartedAt)Y.metadata.turnStartedAt=Q();if(!Y.metadata.turnStartedAt)Y.metadata.turnStartedAt=Q()}let G=JSON.stringify({session_id:Y.metadata.threadID,thread_id:Y.metadata.threadID,thread_source:"user",turn_id:Y.metadata.turnID,sandbox:Bz,turn_started_at_unix_ms:Y.metadata.turnStartedAt,request_kind:"turn",window_id:Y.metadata.windowID});if(Y.headers.set("originator","codex_exec"),Y.websocket)Y.headers.delete("accept"),Y.headers.delete("content-type");else Y.headers.set("accept","text/event-stream");if(Y.headers.set("session-id",Y.metadata.threadID),Y.headers.delete("x-session-id"),Y.headers.delete("x-session-affinity"),Y.headers.set("thread-id",Y.metadata.threadID),Y.headers.set("x-codex-window-id",Y.metadata.windowID),Y.headers.set("x-client-request-id",Y.metadata.threadID),Y.headers.set("x-codex-beta-features",Vz),Y.headers.set("x-codex-turn-metadata",G),Y.headers.set("user-agent",vX),Y.headers.set("version",t1),Y.dumpSessionID)Y.headers.set(h6,Y.dumpSessionID);let $=X;if(!$)return{init:Y.init};let W=Y.responsesLite&&typeof $.model==="string"&&xX.has($.model);if(W&&!Y.websocket)Y.headers.set("x-openai-internal-codex-responses-lite","true");if($.prompt_cache_key=Y.metadata.threadID,$.parallel_tool_calls??=!0,Array.isArray($.tools))$.tools=$.tools.map(Fz);if(Y.applyEffort?.($,Y.metadata,J),W)Y.rewriteLite($);let K={...typeof $.client_metadata==="object"&&$.client_metadata!==null?$.client_metadata:{},"x-codex-installation-id":Y.installationID,"x-codex-window-id":Y.metadata.windowID};if(Y.websocket){if(K["x-codex-turn-metadata"]=G,K["x-codex-ws-stream-request-start-ms"]=String(Q()),W)K.ws_request_header_x_openai_internal_codex_responses_lite="true"}return $.client_metadata=K,Y.headers.delete("content-length"),Y.headers.delete("Content-Length"),{init:{...Y.init,body:JSON.stringify(e6($))}}}function Fz(Y){if(!n(Y)||Y.type!=="function")return Y;let J=n(Y.parameters)&&"$schema"in Y.parameters?(()=>{let{$schema:H,...U}=Y.parameters;return U})():Y.parameters,{type:X,name:Q,description:G,strict:$,parameters:W,...K}=Y;return{type:X,name:Q,description:G,strict:$??!1,parameters:J,...K}}import{mkdirSync as Oz,readFileSync as Dz,renameSync as _z,writeFileSync as Pz}from"node:fs";import{dirname as qz}from"node:path";function Mz(Y){let J=new Map,X=JSON.parse(Dz(Y,"utf8"));if(!n(X.sessions))return J;for(let[Q,G]of Object.entries(X.sessions)){if(!n(G)||typeof G.threadID!=="string")continue;J.set(Q,G.threadID)}return J}function yX(Y,J=A6){let X=new Map,Q;try{Q=Mz(Y)}catch{return X}for(let[G,$]of Q)X.set(G,{threadID:$,turnID:J(),windowID:`${$}:0`});return X}function Ez(Y,J){let X=`${Y}.tmp-${process.pid}`;Oz(qz(Y),{recursive:!0});let Q={version:1,sessions:Object.fromEntries([...J].map(([G,$])=>[G,{threadID:$}]))};Pz(X,`${JSON.stringify(Q,null,2)}
|
|
5
|
+
`,"utf8"),_z(X,Y)}function gX(Y,J){try{Ez(Y,[...J.entries()].map(([X,Q])=>[X,Q.threadID]))}catch{}}import{lstat as fX,opendir as Az}from"node:fs/promises";import{join as Tz}from"node:path";async function mX(Y){try{if(!(await fX(Y)).isDirectory())return;let J=0,X=!1,Q=[],G=async($)=>{try{let W=await fX(Tz(Y,$));if(W.isFile())J+=W.size}catch(W){if(W.code!=="ENOENT")X=!0}};for await(let $ of await Az(Y)){if(!$.isFile())continue;if(Q.push(G($.name)),Q.length===32)await Promise.all(Q),Q=[]}return await Promise.all(Q),X?void 0:J}catch(J){return J.code==="ENOENT"?0:void 0}}function qY(Y){let J=["B","KiB","MiB","GiB","TiB","PiB"],X=0,Q=Y;while(Q>=1024&&X<J.length-1)Q/=1024,X++;return`${Number(Q.toFixed(1))} ${J[X]}`}var MY={rpcRoot:"openai-auth",directoryPrefix:lX,registrationSessionId:"process"};function e1(Y,J){cX(MY,Y,J)}function dX(Y=0,J){return uX(MY,Y,J)}function iX(Y){return pX(MY,Y)}var Y8=z0("commands");function C9(Y){return{configPath:Y.accountStoragePath,statePath:Y.accountStatePath}}function EY(Y){return`${String(Y.startHour).padStart(2,"0")}-${String(Y.endHour).padStart(2,"0")}`}function Rz(Y){let J=/^(\d{1,2})-(\d{1,2})$/.exec(Y.trim());if(!J)return{ok:!1,reason:"expected HH-HH, e.g. 9-18 or 22-6"};let X=Number(J[1]),Q=Number(J[2]);if(X>23||Q>23||X===Q)return{ok:!1,reason:"hours must be integers 0-23 and start ≠ end"};return{ok:!0,startHour:X,endHour:Q}}var Cz="Sustain keeps main-agent sessions warming past the idle cap for this process. Clock windows still apply.\n\nBefore enabling sustain with Magic Context, set a non-expiring `cache_ttl` for models used by main sessions; elapsed-time cold-cache assumptions are no longer valid.";function wz(Y){let J=(X)=>o6(Y.store(),M6(C9(Y)),(Q)=>{let G={...Q.cacheKeep??{}};X(G),Q.cacheKeep=G});return{title:"Cache",build:async()=>{let X=Y.cacheKeepManager;if(!X)return{lines:["Keep-warm unavailable"]};let Q=X8(await Y.loadAccounts(C9(Y))),G=Q?.enabled===!0,$=Q?.subagents===!0,W=X.status(),K=W.window?EY(W.window):"always (no window)";return{lines:[`Keep-warm ${G?"on":"off"} · ${W.tracked===0?"no sessions":`${W.tracked} session${W.tracked===1?"":"s"}`}`,`Timer ${W.running?"armed":"idle"} · subagents ${$?"on":"off"} · sustain ${W.sustain?"on":"off"}`,`Window ${K}`,...Y.cacheKeepNotice?[Y.cacheKeepNotice]:[],`TTL ${Math.round(W.ttlMs/1000)}s · lead ${Math.round(W.leadMs/1000)}s · idle cap ${Math.round(W.maxIdleWarmMs/60000)}min (subagents ${Math.round(W.maxSubagentIdleMs/60000)}min)`],items:W.targets.map((H)=>({id:H.sessionKey,label:H.sessionKey,group:"Sessions",detail:[H.accountId??"main",`expires in ${Math.ceil((H.cacheExpiresAt-W.generatedAt)/1000)}s`,...H.lastWarmedAt?[`last warm ${Math.ceil((W.generatedAt-H.lastWarmedAt)/1000)}s ago`]:[],...H.backoffUntil&&H.backoffUntil>W.generatedAt?[`backoff ${Math.ceil((H.backoffUntil-W.generatedAt)/1000)}s`]:[]].join(" · ")})),actions:[{id:"enabled",label:G?"Turn keep-warm off":"Turn keep-warm on",knobs:[{kind:"toggle",id:"enabled",label:"Keep-warm",value:!G}],run:async({values:H})=>{let U=H.enabled===!0;if(await J((V)=>{V.enabled=U}),Y.setCacheKeepEnabled?.(U),U)X.start();else X.stop();return Y8.info(U?"cachekeep enabled":"cachekeep disabled"),U?`Keep-warm is on. TTL ${Math.round(W.ttlMs/1000)}s, idle cap ${Math.round(W.maxIdleWarmMs/60000)}min.`:"Keep-warm is off."}},{id:"subagents",label:$?"Stop warming subagent sessions":"Warm subagent sessions too",knobs:[{kind:"toggle",id:"subagents",label:"Subagent warming",value:!$}],run:async({values:H})=>{let U=H.subagents===!0;return await J((V)=>{V.subagents=U}),Y.setCacheKeepSubagents?.(U),`Subagent warming is ${U?"on":"off"}.`}},{id:"sustain",label:W.sustain?"Stop sustaining main sessions":"Sustain main sessions past the idle cap",knobs:[{kind:"toggle",id:"sustain",label:"Sustain",value:!W.sustain}],run:async({values:H})=>{let U=H.sustain===!0;return await J((V)=>{V.sustain=U}),Y.setCacheKeepSustain?.(U),U?Cz:"Main-agent sessions again stop warming at the configured idle cap."}},{id:"window",label:"Set the warm window",description:"Warm only between these local hours, e.g. 9-18 or 22-6. Leave it empty to warm at any hour.",knobs:[{kind:"text",id:"window",label:"Window (HH-HH)",placeholder:"9-18",...W.window?{value:EY(W.window)}:{}}],run:async({values:H})=>{let U=H.window;if(typeof U!=="string"||U.trim()==="")return await J((B)=>{delete B.startHour,delete B.endHour}),Y.setCacheKeepWindow?.(void 0),"Warm window cleared: keep-warm warms at any hour (within idle caps).";let V=Rz(U);if(!V.ok)return{ok:!1,text:`Invalid window: ${V.reason}`};let{startHour:D,endHour:L}=V;return await J((B)=>{B.startHour=D,B.endHour=L}),Y.setCacheKeepWindow?.({startHour:D,endHour:L}),`Warming limited to ${EY(V)} local hours.`}}]}}}}var nX=["error","warn","info","debug","trace"];function Sz(Y){return{title:"Diagnostics",build:async()=>{let J=i0(),X=a9(),G=(await Y.loadAccounts(C9(Y)))?.logging?.level??"info",$=X?await mX(J.dumpDir):void 0,W=$===void 0?"size unavailable":qY($),K=J.dumpMaxBytes===0?"no cap":`${qY(J.dumpMaxBytes)} cap`;return{lines:[X?`Dumps on (${W} / ${K})`:"Dumps off",`Dump directory: ${J.dumpDir}`,`Log level: ${G}`],actions:[{id:"dump",label:X?"Turn request dumps off":"Turn request dumps on",knobs:[{kind:"toggle",id:"enabled",label:"Request dumps",value:!X}],run:async({values:H})=>{let U=H.enabled===!0;await o6(Y.store(),M6(C9(Y)),(D)=>{D.dump={...D.dump??{},enabled:U}});let V=gJ();return Y8.info(U?"request dump enabled":"request dump disabled"),U?`Request dumps are on, written to ${V.dumpDir}.
|
|
6
|
+
|
|
7
|
+
Body dumps may contain prompt and session content. Turn this off after debugging.`:"Request dumps are off."}},{id:"logging",label:"Set the log level",knobs:[{kind:"choice",id:"level",label:"Level",choices:nX.map((H)=>({value:H,label:H})),value:nX.includes(G)?G:"info"}],run:async({values:H})=>{let U=String(H.level);return await o6(Y.store(),M6(C9(Y)),(V)=>{V.logging={...V.logging??{},level:U}}),J8(U),Y8.info("log level changed",{level:U}),`Log level set to ${U}.`}}]}}}}async function Iz(Y){let J=await Y.store().read(),X=J.status==="ready"?J.rows:[];return[...new Set(["main",...X.filter((Q)=>Q.enabled&&Q.type==="oauth").map((Q)=>Q.id)])]}function rX(Y){let J=C9(Y),X=M6(J),Q=Y.quotaManager&&Y.resolveResetTarget&&Y.refreshResetTargetQuota&&Y.fetchImpl&&Y.now&&Y.randomUUID?$Y({configPath:J.configPath,statePath:J.statePath,quotaManager:Y.quotaManager,loadAccounts:Y.loadAccounts,mutateAccounts:XY(Y.store(),X),resolveResetTarget:Y.resolveResetTarget,refreshResetTargetQuota:Y.refreshResetTargetQuota,fetchImpl:Y.fetchImpl,now:Y.now,randomUUID:Y.randomUUID,accountKeys:()=>Iz(Y)}):void 0,G=Y.beginAccountLogin;return WY({store:Y.store(),...Y.readOnly?{readOnly:!0}:{},...Y.allowAction?{allowAction:Y.allowAction}:{},...Y.unavailableSections?{unavailableSections:Y.unavailableSections}:{},...Y.vault?{vault:Y.vault}:{},...Y.now?{now:Y.now}:{},extraLocks:X,rowLocks:($)=>D9(J,$),migration:Y.migration,...G?{login:{begin:($)=>G({...$,version:Y.packageVersion}),mainIdentity:async()=>{let $=await Y.store().read();if($.status!=="ready")return;return $.rows.find((W)=>W.id==="main")?.identity}}}:{},protect:($,W)=>l1($,W),...Y.refreshAllQuota?{quotaCheck:async($)=>{if($.length===1){let H=Y.store();for(let U of $)await H.requestReading(U);await H.pullsSettled();return}let K=(await Y.refreshAllQuota?.()??[]).filter((H)=>!H.ok);if(K.length>0)throw new oX("quota-check-failed",K.map((H)=>H.permanent?`${H.account}: sign-in no longer accepted — remove and add this account again`:`${H.account}: fetch failed — check again to retry`).join(`
|
|
8
|
+
`))}}:{},cache:wz(Y),diagnostics:Sz(Y),extras:[...Q?[Q]:[],QY({...Y.getStickyRouting?{getPin:Y.getStickyRouting}:{},...Y.clearStickyRouting?{clearPin:Y.clearStickyRouting}:{}}),...Y.vault?[GY({vault:Y.vault,changed:Y.afterWrite})]:[]],afterApply:async()=>{await Y.afterWrite?.(),await Y.refreshSidebar?.().catch(()=>{})}})}function sX(Y){return(J,X="info")=>{Y8.info("menu notification",{sessionId:Y,kind:X}),e1({command:x6,notify:{message:J,kind:X}},Y)}}function aX(Y,J){return rX(Y).open({...J!==void 0?{sessionId:J}:{},notify:sX(J)})}function tX(Y,J){return rX(Y).apply(J,{...J.sessionId!==void 0?{sessionId:J.sessionId}:{},notify:sX(J.sessionId)})}function eX(Y){let J=[`## ${Y.title}`];for(let X of Y.sections){J.push("",`### ${X.title}`);for(let Q of X.lines)J.push(Q);for(let Q of X.items){let G=Q.detail??Q.status;J.push(`- ${Q.label}${G?`: ${G}`:""}`)}}return J.push("","Open the OpenCode TUI to change these settings."),J.join(`
|
|
9
|
+
`)}var bz=300000,kz=30000,Y3=240000,xz="bg-quota-refresh",vz=120000;function AY(Y,J){return Q8({name:xz,ttlMs:vz,path:Y,renew:!0,...J})}function J3(Y,J=w9,X=()=>AY(Y.paths.configPath)){return hz(Y,J,X)}function hz(Y,J,X){return X3(async()=>J({...Y,respectBackoff:!0,skipFresherThanMs:Y3}),X,[])}async function X3(Y,J,X){let Q;try{Q=await J()}catch{Q=void 0}if(Q===null)return X;try{return await Y()}finally{await Q?.release().catch(()=>{})}}function Q3(Y,J,X){return X3(async()=>{return await Y.refreshDueTokens(J),Y.pollRows(J,{skipReadWithinMs:Y3})},X,[])}class TY{setIntervalFn;clearIntervalFn;random;onError;run;timer;tickPromise;stopped=!1;constructor(Y={}){this.setIntervalFn=Y.setIntervalFn??setInterval,this.clearIntervalFn=Y.clearIntervalFn??clearInterval,this.random=Y.random??Math.random,this.onError=Y.onError}start(Y,J=this.onError){if(this.run=Y,this.onError=J,this.stopped=!1,this.timer)return;let X=Math.round((this.random()*2-1)*kz);if(this.timer=this.setIntervalFn(()=>{let Q=this.run;if(this.stopped||!Q||this.tickPromise)return;let G=Q().catch(($)=>{try{this.onError?.($)}catch{}}).finally(()=>{if(this.tickPromise===G)this.tickPromise=void 0});this.tickPromise=G},bz+X),"unref"in this.timer)this.timer.unref()}stop(){if(this.stopped=!0,this.run=void 0,!this.timer)return;this.clearIntervalFn(this.timer),this.timer=void 0}isStopped(){return this.stopped}}function RY(Y){if(!Y||typeof Y!=="object")return;let J=Y,X=Number(J.startHour),Q=Number(J.endHour);if(!Number.isInteger(X)||!Number.isInteger(Q)||X<0||X>23||Q<0||Q>23||X===Q)return;return{startHour:X,endHour:Q}}function z1(Y,J=new Date){if(!Y)return!1;let X=J.getHours();if(Y.startHour<Y.endHour)return X>=Y.startHour&&X<Y.endHour;return X>=Y.startHour||X<Y.endHour}var yz=300000,gz=3600000,fz=1800000,mz=60000,cz=32,uz=8388608,pz=30000,lz=600000;function L6(Y,J){return typeof Y==="number"&&Number.isFinite(Y)&&Y>0?Y:J}function G8(Y){return Y instanceof Error?Y.message:String(Y)}class K1{targets=new Map;adapter;now;log;ttlMs;leadMs;maxIdleWarmMs;maxSubagentIdleMs;tickIntervalMs;maxTargets;maxBytes;warmTimeoutMs;backoff;getWindow;getSustain;setIntervalImpl;clearIntervalImpl;timer=null;startedAt=null;totalBytes=0;tickPromise=null;disposed=!1;abortController=new AbortController;constructor(Y){this.adapter=Y.adapter,this.now=Y.now,this.log=Y.logger,this.ttlMs=L6(Y.ttlMs,yz),this.tickIntervalMs=L6(Y.tickIntervalMs,mz),this.leadMs=L6(Y.leadMs,this.tickIntervalMs+15000),this.maxIdleWarmMs=L6(Y.maxIdleWarmMs,gz),this.maxSubagentIdleMs=L6(Y.maxSubagentIdleMs,fz),this.maxTargets=L6(Y.maxTargets,cz),this.maxBytes=L6(Y.maxBytes,uz),this.warmTimeoutMs=L6(Y.warmTimeoutMs,pz),this.backoff=Y.backoffMs??lz,this.getWindow=Y.getWindow,this.getSustain=Y.getSustain,this.setIntervalImpl=Y.setIntervalImpl??globalThis.setInterval,this.clearIntervalImpl=Y.clearIntervalImpl??globalThis.clearInterval}track(Y){let{sessionKey:J,bodyText:X}=Y;this.pruneStale();let Q=Buffer.byteLength(X,"utf8");if(Q>this.maxBytes)return this.log?.debug("cachekeep track skipped (body exceeds maxBytes)",{sessionKey:J,bodyBytes:Q,maxBytes:this.maxBytes}),{tracked:!1,reason:"body-exceeds-max-bytes"};let G=this.getWindow?.();if(G&&!z1(G,new Date(this.now())))return this.log?.debug("cachekeep track skipped (outside window)",{sessionKey:J,startHour:G.startHour,endHour:G.endHour}),{tracked:!1,reason:"outside-window"};this.drop(J);while(this.targets.size>=this.maxTargets||this.totalBytes+Q>this.maxBytes&&this.targets.size>0){let V=this.leastRecentlyTouched();if(V===void 0)break;this.log?.debug("cachekeep evicted least recently used target",{sessionKey:V}),this.drop(V)}let $=Y.isSubagent===!0,W=Y.accountId||void 0,K=this.adapter.profile?.({bodyText:X,isSubagent:$,accountId:W,meta:Y.meta}),H=L6(K?.ttlMs,this.ttlMs),U=this.now();return this.targets.set(J,{bodyText:X,bodyBytes:Q,accountId:W,isSubagent:$,meta:Y.meta,ttlMs:H,maxWarms:K?.maxWarms!==void 0&&K.maxWarms>0?Math.floor(K.maxWarms):void 0,maxIdleMs:K?.maxIdleMs!==void 0?L6(K.maxIdleMs,this.idleDefault($)):void 0,cacheExpiresAt:U+H,lastRealRequestAt:U,failures:0,warmCount:0}),this.totalBytes+=Q,this.log?.debug("cachekeep captured target",{sessionKey:J,accountId:W}),this.start(),{tracked:!0}}remove(Y){if(this.drop(Y))this.log?.debug("cachekeep removed target",{sessionKey:Y})}start(){if(this.disposed=!1,this.timer)return;if(this.startedAt=this.now(),this.timer=this.setIntervalImpl(()=>{this.tick().catch((Y)=>{this.log?.warn("cachekeep tick failed",{error:G8(Y)})})},this.tickIntervalMs),typeof this.timer==="object"&&"unref"in this.timer)this.timer.unref();this.log?.debug("cachekeep started",{ttlMs:this.ttlMs,leadMs:this.leadMs,maxIdleWarmMs:this.maxIdleWarmMs})}stop(){if(this.disposed=!0,this.abortController.abort(),this.abortController=new AbortController,this.timer)this.clearIntervalImpl(this.timer),this.timer=null;this.startedAt=null,this.targets.clear(),this.totalBytes=0,this.log?.debug("cachekeep stopped")}status(){let Y=this.getWindow?.();return{running:this.timer!==null,tracked:this.targets.size,totalBytes:this.totalBytes,generatedAt:this.now(),startedAt:this.startedAt,ttlMs:this.ttlMs,leadMs:this.leadMs,maxIdleWarmMs:this.maxIdleWarmMs,maxSubagentIdleMs:this.maxSubagentIdleMs,sustain:this.getSustain?.()===!0,...Y?{window:Y}:{},targets:[...this.targets].map(([J,X])=>({sessionKey:J,accountId:X.accountId,isSubagent:X.isSubagent,cacheExpiresAt:X.cacheExpiresAt,lastRealRequestAt:X.lastRealRequestAt,...X.lastWarmedAt!==void 0?{lastWarmedAt:X.lastWarmedAt}:{},...X.backoffUntil!==void 0?{backoffUntil:X.backoffUntil}:{},failures:X.failures,warmCount:X.warmCount,ttlMs:X.ttlMs,bodyBytes:X.bodyBytes}))}}tick(){if(this.tickPromise)return this.tickPromise;let Y=this.runTick().finally(()=>{if(this.tickPromise===Y)this.tickPromise=null});return this.tickPromise=Y,Y}async runTick(){this.pruneStale();let Y=this.getWindow?.();if(Y&&!z1(Y,new Date(this.now())))return;let J=this.now(),X=J+this.leadMs;for(let[Q,G]of[...this.targets]){if(this.disposed)return;if(this.targets.get(Q)!==G)continue;if(G.backoffUntil!==void 0&&J<G.backoffUntil)continue;if(G.cacheExpiresAt>X)continue;await this.warm(Q,G)}}retireIfExpired(Y,J){if(this.now()<J.cacheExpiresAt)return!1;return this.log?.debug("cachekeep retired target (cache lifetime ended)",{sessionKey:Y,accountId:J.accountId,cacheExpiresAt:J.cacheExpiresAt,failures:J.failures}),this.drop(Y),!0}isCurrent(Y,J){return!this.disposed&&this.targets.get(Y)===J}view(Y,J){return{sessionKey:Y,accountId:J.accountId,bodyText:J.bodyText,isSubagent:J.isSubagent,meta:J.meta,warmCount:J.warmCount,ttlMs:J.ttlMs}}fail(Y,J,X,Q={}){if(!this.isCurrent(Y,J))return;J.failures+=1;let G=typeof this.backoff==="function"?this.backoff({sessionKey:Y,failures:J.failures}):this.backoff;J.backoffUntil=this.now()+(Number.isFinite(G)&&G>0?G:0),this.log?.warn(X,{sessionKey:Y,accountId:J.accountId,failures:J.failures,backoffUntil:J.backoffUntil,...Q})}async warm(Y,J){if(this.retireIfExpired(Y,J))return;let X=this.view(Y,J);if(this.adapter.activeAccount){let V;try{V=await this.adapter.activeAccount(Y,X)}catch(D){this.fail(Y,J,"cachekeep skip (active account unknown)",{error:G8(D)});return}if(!this.isCurrent(Y,J))return;if(V!==void 0&&V!==J.accountId){this.log?.debug("cachekeep dropped target (session changed account)",{sessionKey:Y,accountId:J.accountId,activeAccountId:V}),this.drop(Y);return}}let Q;try{Q=await this.adapter.buildBody(X)}catch(V){this.fail(Y,J,"cachekeep skip (replay body unbuildable)",{error:G8(V)});return}if(!this.isCurrent(Y,J))return;if(this.retireIfExpired(Y,J))return;let G=G3([AbortSignal.timeout(this.warmTimeoutMs),this.abortController.signal]),$=G.signal,W,K="";try{W=await this.adapter.send({target:X,body:Q,signal:$}),K=await W.text().catch(()=>"")}catch(V){this.fail(Y,J,"cachekeep failed",{error:G8(V)});return}finally{G.dispose()}if(!this.isCurrent(Y,J))return;if(!W.ok){this.fail(Y,J,"cachekeep failed",{status:W.status,responseBody:K.slice(0,600)});return}let H;try{H=this.adapter.readUsage?.({target:X,response:W,text:K})}catch{}let U=this.now();if(J.cacheExpiresAt=U+J.ttlMs,J.lastWarmedAt=U,J.backoffUntil=void 0,J.failures=0,J.warmCount+=1,this.log?.debug("cachekeep fired",{sessionKey:Y,accountId:J.accountId,warmCount:J.warmCount,...H}),J.maxWarms!==void 0&&J.warmCount>=J.maxWarms)this.log?.debug("cachekeep retired target (warm cap reached)",{sessionKey:Y,warmCount:J.warmCount}),this.drop(Y)}idleDefault(Y){return Y?this.maxSubagentIdleMs:this.maxIdleWarmMs}pruneStale(){let Y=this.now(),J=this.getSustain?.()===!0;for(let[X,Q]of[...this.targets]){if(this.retireIfExpired(X,Q))continue;if(J&&!Q.isSubagent)continue;let G=Q.maxIdleMs??this.idleDefault(Q.isSubagent);if(Q.lastRealRequestAt>=Y-G)continue;this.log?.debug("cachekeep pruned idle target",{sessionKey:X,accountId:Q.accountId,lastRealRequestAt:Q.lastRealRequestAt,maxIdleMs:G}),this.drop(X)}}leastRecentlyTouched(){let Y,J=Number.POSITIVE_INFINITY;for(let[X,Q]of this.targets){let G=Math.max(Q.lastRealRequestAt,Q.lastWarmedAt??0);if(G<J)Y=X,J=G}return Y}drop(Y){let J=this.targets.get(Y);if(!J)return!1;return this.totalBytes-=J.bodyBytes,this.targets.delete(Y),!0}}function CY(Y){if(typeof Y!=="string")return!1;try{let J=JSON.parse(Y);return n(J)&&n(J.client_metadata)&&J.client_metadata.ws_request_header_x_openai_internal_codex_responses_lite==="true"}catch{return!1}}function wY(Y){if(typeof Y!=="string")return Y;try{let J=JSON.parse(Y);if(!n(J)||!n(J.client_metadata))return Y;if(!(("x-codex-turn-metadata"in J.client_metadata)||("x-codex-ws-stream-request-start-ms"in J.client_metadata)||("ws_request_header_x_openai_internal_codex_responses_lite"in J.client_metadata)))return Y;let X={...J.client_metadata};return delete X["x-codex-turn-metadata"],delete X["x-codex-ws-stream-request-start-ms"],delete X.ws_request_header_x_openai_internal_codex_responses_lite,JSON.stringify({...J,client_metadata:X})}catch{return Y}}function $8(Y){if(Y?.method?.toUpperCase()!=="POST")return Y;let J=new Headers(Y.headers);if(J.set("accept","text/event-stream"),J.set("content-type","application/json"),CY(Y.body))J.set("x-openai-internal-codex-responses-lite","true");return{...Y,headers:J,body:wY(Y.body)}}var gj=Object.freeze({maxTargets:32,maxBytes:8388608});function W3(Y){if(!Y.enabled||typeof Y.body!=="string")return;let J=Y.headers.has("x-parent-session-id");if(J&&!Y.includeSubagents)return;let X=Y.headers.get("session-id")??Y.headers.get("x-opencode-session")??Y.headers.get("x-session-affinity")??void 0;if(!X)return;let Q={};for(let G of["session-id","x-session-affinity","x-parent-session-id","user-agent","version","x-codex-beta-features","x-codex-turn-metadata","x-codex-window-id","x-client-request-id","thread-id","x-openai-internal-codex-responses-lite"]){let $=Y.headers.get(G);if($)Q[G]=$}return{sessionKey:X,bodyText:Y.body,replayHeaders:Q,isSubagent:J}}function z3(Y){return RY(Y?.cachekeep)}var SY=1800000,dz=2,iz=2*SY+900000,nz=/^gpt-(\d+)(?:\.(\d+))?(?:-|$)/;function oz(Y){try{let X=JSON.parse(Y).model;if(typeof X!=="string")return!1;let Q=nz.exec(X);if(!Q)return!1;let G=Number(Q[1]),$=Q[2]===void 0?0:Number(Q[2]);return G>5||G===5&&$>=6}catch{return!1}}function rz(Y){if(!oz(Y.bodyText))return;if(!Y.isSubagent)return{ttlMs:SY};return{ttlMs:SY,maxWarms:dz,maxIdleMs:iz}}function sz(Y){let X=JSON.parse(Y);return X.store=!1,delete X.max_output_tokens,delete X.max_tokens,delete X.max_completion_tokens,JSON.stringify(X)}function IY(){return{input_tokens:0,output_tokens:0,cached_tokens:0,hit_rate:null}}function K3(Y){if(!Y||typeof Y!=="object")return IY();let J=Y,X=Number(J.input_tokens)||Number(J.prompt_tokens)||0,Q=Number(J.output_tokens)||Number(J.completion_tokens)||0,G=J.input_tokens_details??J.prompt_tokens_details,$=Number(G?.cached_tokens)||Number(J.cached_tokens)||0,W=X>0?$/X:null;return{input_tokens:X,output_tokens:Q,cached_tokens:$,hit_rate:W}}function az(Y){try{let J=JSON.parse(Y);return K3(J.usage)}catch{return IY()}}function tz(Y){let J,X=[],Q,G=()=>{if(!X.length)return;let $=X.join(`
|
|
10
|
+
`).trim();X=[];let W=J;if(J=void 0,!$||$==="[DONE]")return;try{let K=JSON.parse($),H=K.type??W;if(H!=="response.completed"&&H!=="response.done")return;let U=K.response;Q=K3(U?.usage??K.usage)}catch{}};for(let $ of Y.split(/\r?\n/)){if($===""){G();continue}if($.startsWith("event:")){J=$.slice(6).trim();continue}if($.startsWith("data:"))X.push($.slice(5).trim())}return G(),Q??IY()}function H3(Y,J,X=Date.now()){if(!J)return;if(Y.route==="sticky-balanced"){let G=Y.stickyAssignments?.[N6(J)];if(!G)return;if(G.lastSeenAt<X-$3)return;return G.accountId}let Q=Y.activeRouting?.[J];if(!Q||Q.route!==Y.route)return;return Q.activeId}function ez(Y){let J=J6(Y);return J?X6(J):void 0}function YK(Y){let{logger:J,activeAccount:X}=Y;return{buildBody:(Q)=>sz(Q.bodyText),async send({target:Q,body:G,signal:$}){let W=async(L,B,F)=>{if($.throwIfAborted(),Y.verifyCredential)await Y.verifyCredential({target:Q,mode:B?"vault":"local",identity:(B?B.accountIdentity:F)??ez(L)});let P={...Q.meta.replayHeaders,authorization:`Bearer ${L}`,"content-type":"application/json"};if(Q.meta.chatgptAccountId)P["ChatGPT-Account-Id"]=Q.meta.chatgptAccountId;else delete P["ChatGPT-Account-Id"];let q;try{let E=JSON.parse(G);q={warmBodyKeys:Object.keys(E),stream:E.stream,max_output_tokens:E.max_output_tokens,store:E.store,has_stream_options:"stream_options"in E,has_max_tokens:"max_tokens"in E,model:E.model}}catch{}J?.debug("cachekeep warm request",{...q,headerKeys:Object.keys(P),hasChatGptAccountId:"ChatGPT-Account-Id"in P});try{let E=await Y.fetchImpl(Q.meta.url??Y.codexResponsesUrl,$8({method:"POST",headers:P,body:G,signal:$}));return await Q9(E,L,"event-stream")}catch(E){throw y6(E,L)}};if(Q.accountId&&Y.vault?.owns(Q.accountId)){let L=await Y.vault.send(Q.accountId,W,{site:"cachekeep",signal:$});if(!L)throw Error(`vault refused warm for ${Q.accountId}`);return L}if(Y.vault&&await Y.vault.authority()!=="local")throw Error("local accounts are not warmed while this host is connected to the vault");let K,H,U,V=Y.resolveLocal?await Y.resolveLocal(Q):Q.accountId&&Q.accountId!=="main"?await Y.refreshFallback(Q.accountId):await Y.getMainToken();if(typeof V==="string")K=V;else K=V.token,H=V.identity,U=V.onAuthFailure;if(Y.vault&&await Y.vault.authority()!=="local")throw Error("local accounts are not warmed while this host is connected to the vault");let D=await W(K,void 0,H);if(D.status===401)await U?.(D.status);return D},readUsage({response:Q,text:G}){let $=Q.headers.get("content-type")??"",W=$.includes("text/event-stream")||/(^|\n)(data:|event:)/.test(G.slice(0,200));J?.debug("cachekeep warm response",{status:Q.status,contentType:$,bodyLen:G.length,isSse:W});let K=W?tz(G):az(G),H=X9(Q.headers);return{...K,quota_primary_pct:H.primary?.usedPercent??null,quota_secondary_pct:H.secondary?.usedPercent??null}},profile:rz,...X?{activeAccount:(Q,G)=>X(G.meta.routingSessionId)}:{}}}function U3(Y){let{fetchImpl:J,getMainToken:X,refreshFallback:Q,resolveLocal:G,vault:$,codexResponsesUrl:W,activeAccount:K,verifyCredential:H,logger:U,...V}=Y,D=Y.resolveLocal!==void 0?{resolveLocal:Y.resolveLocal}:{getMainToken:Y.getMainToken,refreshFallback:Y.refreshFallback};return new K1({...V,logger:U,adapter:YK({fetchImpl:J,...D,vault:$,codexResponsesUrl:W,activeAccount:K,verifyCredential:H,logger:U})})}function Z3(Y){let J,X=0,Q=0,G=!1,$;return{read(){let W=Y.path(),K=Y.stat(W);if(K&&J?.path===W&&J.mtimeMs===K.mtimeMs&&J.size===K.size)return J.value;if(!K)J=void 0;let H=++X;return Y.read(W).catch(Y.fallback).then((U)=>{if(H>Q){if(Q=H,$=U,G=!0,K)J={...K,path:W,value:U};return Y.onRead(U),U}return G?$:U})},invalidate(){J=void 0}}}import{readFileSync as JK}from"node:fs";var XK=60000,QK=15000,xY=2000,vY=1e4;async function H1(Y,J){let X,Q=await Promise.race([Y.then(()=>!0,()=>!0),new Promise((G)=>{X=setTimeout(()=>G(!1),J),X.unref?.()})]);return clearTimeout(X),Q}function GK(Y){if(!g6(Y.quota))return;let J=W8(Y.quota);return J.limits.some((X)=>X.kind==="reading")?J.checkedAt:void 0}function $K(Y){if(!Y)return;let J=J6(Y);return J?X6(J):void 0}function V3(Y){try{let J=JSON.parse(JK(Y,"utf8"));if(!J||typeof J!=="object"||Array.isArray(J))return;return t9(J).migratedAt}catch{return}}function WK(Y){if(Y.type!=="oauth")return!1;return Y.candidate||Y.torn===!0&&Y.enabled}class hY{listeners=new Set;deps;now;log;snapshot={active:!1,rows:[],key:void 0,readAt:0};inflightRead;store;stores=new Set;disposal;refreshing=new Map;backoff=new Map;rotated=new Map;pending=new Map;writes=new Map;marks=new Map;lastPull=new Map;quotaPulls=new Map;polled=new Set;pollOutcomes=new Map;disposed=!1;vaultRosterSettled;pollsAwaitVault=!1;constructor(Y){this.deps=Y,this.now=Y.now??Date.now,this.log=Y.log??z0("pool"),this.vaultRosterSettled=Y.vaultFirstRoster===void 0;let J=()=>{this.vaultRosterSettled=!0};Y.vaultFirstRoster?.then(J,J)}async awaitVaultRoster(Y){let J=this.deps.vaultFirstRoster;if(this.vaultRosterSettled||!J)return;await H1(J,Y)}peek(){return{active:this.snapshot.active,rows:this.snapshot.rows}}subscribe(Y){return this.listeners.add(Y),()=>{this.listeners.delete(Y)}}async sidebarView(){let Y=this.deps.paths();if(V3(Y.configPath)===void 0)return{active:!1,rows:[]};let J=await this.storeFor(Y).read();return J.status==="ready"?{active:!0,rows:this.withLocalState(J.rows)}:{active:!1,rows:[]}}changed(){for(let Y of this.listeners)Y()}async current(){if(this.disposed)return this.peek();let Y=this.filesKey();if(this.snapshot.key===Y)return this.peek();let J=this.startRead(Y),X=await K8(J,this.deps.readBudgetMs??z8,()=>this.snapshot);return{active:X.active,rows:X.rows}}async load(){if(this.disposed)return this.peek();if(await this.deps.vaultAuthority?.(),this.disposed)return this.peek();let Y=await this.startRead(this.filesKey());return{active:Y.active,rows:Y.rows}}filesKey(){let Y=this.deps.paths();return`${Y.configPath}|${kY(Y.configPath)}|${kY(Y.statePath)}`}storeFor(Y){if(this.store?.configPath===Y.configPath)return this.store.store;let J=O9({provider:"openai",configPath:Y.configPath,statePath:Y.statePath,quota:F9,coalesceQuota:!0,now:this.now,pull:(X)=>this.coalescedPull(X),onPullFailure:(X,Q)=>{this.pollOutcomes.set(X,{id:X,ok:!1,error:Q.message}),this.log.warn("pool quota poll failed",{rowId:X,kind:Q.kind,error:Q.message})},logger:this.log,...this.deps.store,onStep:async(X,Q)=>{if(await this.deps.store?.onStep?.(X,Q),Q.operation!=="updateSettings"&&X.startsWith("before-")&&this.deps.vaultAuthority&&await this.deps.vaultAuthority()!=="local")throw Error("Local account writes are disabled while connected to the vault.")}});return this.store={configPath:Y.configPath,store:J},this.stores.add(J),J}startRead(Y){if(this.disposed)return Promise.resolve(this.snapshot);if(this.inflightRead?.key===Y)return this.inflightRead.promise;let J=this.now(),X=this.read(Y,J),Q={key:Y,promise:X};this.inflightRead=Q;let G=()=>{if(this.inflightRead===Q)this.inflightRead=void 0};return X.then(G,G),X}async read(Y,J){let X=this.deps.paths(),Q={active:!1,rows:[],key:Y,readAt:J};try{if(V3(X.configPath)!==void 0){let W=await this.storeFor(X).read();if(W.status==="ready")Q={active:!0,rows:W.rows,key:Y,readAt:J};else this.log.warn("migrated install has no readable account pool",{status:W.status,...W.status==="error"?{reason:W.reason}:{}})}}catch($){return this.log.warn("account pool read failed",{error:$ instanceof Error?$.message:String($)}),this.snapshot}if(this.disposed)return this.snapshot;let G=this.snapshot.active;if(J>=this.snapshot.readAt)this.snapshot={...Q,rows:this.withLocalState(Q.rows)},this.changed();if(this.snapshot.active){if(!G)this.log.info("account pool serves requests");this.pollUnseenRows()}return this.snapshot}withLocalState(Y){let J=this.now();return Y.map((X)=>{let Q=X,G=this.rotated.get(X.id),$=G?.credential;if(G&&G.credentialEpoch!==X.credentialEpoch)this.rotated.delete(X.id);else if($?.type==="oauth"&&X.credential?.type==="oauth"){let W=X.credential.lastRefreshedAt??0,K=$.lastRefreshedAt??0;if(W>=K)this.rotated.delete(X.id);else Q={...Q,credential:$}}return j3(Q,this.pending,J)})}replaceRow(Y,J){this.snapshot={...this.snapshot,rows:this.snapshot.rows.map((X)=>X.id===Y?J(X):X)},this.changed()}vaultOwned(Y){if(this.deps.vaultMode?.())return!0;return Y.identity!==void 0&&(this.deps.vaultIdentities?.().has(Y.identity)??!1)}pollUnseenRows(){if(this.disposed)return;let Y=this.deps.vaultFirstRoster;if(!this.vaultRosterSettled&&Y&&!this.deps.vaultMode?.()){if(this.pollsAwaitVault)return;this.pollsAwaitVault=!0,H1(Y,this.deps.vaultFirstRosterBackgroundWaitMs??vY).then((J)=>{if(this.pollsAwaitVault=!1,J)this.pollUnseenRows();else this.log.info("first quota polls skipped: the vault has not read its accounts yet")});return}for(let J of this.snapshot.rows){if(!WK(J)||this.vaultOwned(J))continue;let X=`${J.id}\x00${J.credentialEpoch??0}\x00${J.identity??""}`;if(this.polled.has(X))continue;this.polled.add(X),this.requestReading(J.id,!0)}}requestReading(Y,J=!1){if(this.disposed||this.deps.vaultMode?.())return;let X=this.now(),Q=this.lastPull.get(Y);if(!J&&Q!==void 0&&X-Q<(this.deps.pullRetryMs??QK))return this.storeFor(this.deps.paths()).pullsSettled();this.lastPull.set(Y,X);let G=this.storeFor(this.deps.paths());return G.requestReading(Y),G.pullsSettled()}coalescedPull(Y){let J=JSON.stringify([this.deps.paths().configPath,Y.id,Y.credentialEpoch,Y.identity]),X=this.quotaPulls.get(J);if(X)return X;let Q=this.pull(Y).finally(()=>this.quotaPulls.delete(J));return this.quotaPulls.set(J,Q),Q}async pull(Y){if(this.deps.vaultAuthority&&await this.deps.vaultAuthority()!=="local")throw Error("local accounts are not polled while this host is connected to the vault");let J;try{if(J=await this.deps.pullQuota(Y),!J)throw Error("the quota poll returned no reading")}catch(Q){throw this.pollOutcomes.set(Y.id,{id:Y.id,ok:!1,error:Q instanceof Error?Q.message:String(Q)}),Q}this.pollOutcomes.set(Y.id,{id:Y.id,ok:!0});let X=this.snapshot.rows.find((Q)=>Q.id===Y.id);if(X&&X.credentialEpoch===Y.credentialEpoch&&X.identity===Y.identity)this.applyObservation(X,J);return J}applyObservation(Y,J){N3(this.pending,Y,J),this.replaceRow(Y.id,(X)=>({...X,quota:L3(X.quota,J),needsFirstReading:!1}))}recordSnapshot(Y,J,X,Q){if(!this.snapshot.active||this.disposed||this.deps.vaultMode?.())return;let G=this.snapshot.rows.find((L)=>L.id===Y);if(G?.type!=="oauth")return;let $=$K(X);if(!($&&G.identity?$===G.identity:S9(G)?.access===X))return;let K=A9(J,this.now(),Q);if(!K)return;if(this.applyObservation(G,K),G.credentialEpoch===void 0)return;let H={credentialEpoch:G.credentialEpoch,...G.identity!==void 0?{identity:G.identity}:{}},U=this.storeFor(this.deps.paths()),D=(this.writes.get(G.id)??Promise.resolve()).then(async()=>{if(this.deps.vaultAuthority&&await this.deps.vaultAuthority()!=="local")return;return U.recordQuota(G.id,H,K)}).catch((L)=>{this.log.warn("pool quota not recorded",{rowId:G.id,error:L instanceof Error?L.message:String(L)})});this.writes.set(G.id,D),D.finally(()=>{if(this.writes.get(G.id)===D)this.writes.delete(G.id)})}markRateLimited(Y,J){let X=this.snapshot.rows.find(($)=>$.id===Y);if(!X)return;let Q=bY(X),G=this.marks.get(Q);if(G!==void 0&&G>J)return;this.marks.set(Q,J)}rateLimitMarks(Y){let J=new Map;for(let X of Y){let Q=this.marks.get(bY(X));if(Q!==void 0)J.set(X.id,Q)}return J}async prepareTokens(Y,J,X={}){if(this.deps.vaultAuthority&&await this.deps.vaultAuthority()!=="local")return;if(!this.deps.vaultMode?.())await this.awaitVaultRoster(this.deps.vaultFirstRosterWaitMs??xY);let Q=this.now(),G=B3(J),$=[];for(let W of Y){if(!W.candidate||this.vaultOwned(W))continue;let K=S9(W);if(!K)continue;let H=(K.expires??0)-Q;if(!(!K.access||!K.expires||H<=G)||this.refreshBackedOff(W,J,Q))continue;let V=this.refresh(W.id);if(X.waitForAll||!K.access||!K.expires||H<=XK)$.push(V)}await Promise.all($)}refreshBackedOff(Y,J,X=this.now()){let Q=S9(Y);if(!Q)return!1;let G=U1(Q.refresh),$=this.backoff.get(Y.id);if($&&$.tokenHash===G&&$.nextRetryAt>X)return!0;let W=J?.accounts.find((K)=>K.id===Y.id);return Boolean(W?.type==="oauth"&&W.corrupt!==!0&&E6(W.lastRefreshError,Q.refresh,X))}usableToken(Y,J=this.now()){let X=this.snapshot.rows.find((G)=>G.id===Y.id);if(!X?.enabled||!X.candidate||X.type!=="oauth"||X.identity!==Y.identity||X.credentialEpoch!==Y.credentialEpoch||this.vaultOwned(X))return;let Q=S9(X);if(!Q?.access.trim())return;if(typeof Q.expires!=="number"||Q.expires<=J)return;return Q.access}refresh(Y){let J=this.refreshing.get(Y);if(J)return J;let X=this.runRefresh(Y).finally(()=>{if(this.refreshing.get(Y)===X)this.refreshing.delete(Y)});return this.refreshing.set(Y,X),X}async runRefresh(Y){if(this.deps.vaultAuthority&&await this.deps.vaultAuthority()!=="local")return;let J=this.deps.paths(),X=this.snapshot.rows.find((W)=>W.id===Y),Q=X?S9(X)?.refresh:void 0,G,$=(W,K)=>{return G=K.credentialEpoch,this.deps.refreshProvider(W,K)};try{let W=await D3({paths:J,store:this.storeFor(J),now:this.now,...this.deps.legacyLocks?{legacyLocks:this.deps.legacyLocks}:{}},Y,$);if(W.status==="rotated"){this.backoff.delete(Y),this.rotated.set(Y,{credential:W.credential,credentialEpoch:G}),this.replaceRow(Y,(K)=>K.credentialEpoch!==G?K:{...K,credential:W.credential,...W.identity!==void 0&&K.identity===void 0?{identity:W.identity}:{}});return}if(W.status==="identity-contradicted"){this.backoff.delete(Y),this.replaceRow(Y,(K)=>({...K,enabled:!1,candidate:!1})),this.log.warn("pool row disabled: its refresh returned a different account",{rowId:Y});return}this.recordRefreshFailure(Y,Q,Error(W.reason))}catch(W){this.recordRefreshFailure(Y,Q,W)}}recordRefreshFailure(Y,J,X){if(this.log.warn("pool row refresh failed",{rowId:Y,error:X instanceof Error?X.message:String(X)}),!J)return;this.backoff.set(Y,F3(J,X,this.now(),this.backoff.get(Y)))}refreshBackoffFor(Y){return O3(Y,this.backoff,this.now(),(J,X)=>this.usableToken(J,X))}async active(){return(await this.current()).active}poolStore(){return this.storeFor(this.deps.paths())}async refreshDueTokens(Y){let J=await this.current();if(!J.active||this.disposed)return;await this.prepareTokens(J.rows,Y,{waitForAll:!0})}async pollRows(Y,J={}){let X=await this.load();if(!X.active||this.disposed)return[];let Q=this.now(),G=X.rows.filter(($)=>{if(!$.candidate||$.type!=="oauth"||this.vaultOwned($))return!1;if(J.ids&&!J.ids.includes($.id))return!1;if(J.skipReadWithinMs===void 0)return!0;let W=GK($);return W===void 0||Q-W>=J.skipReadWithinMs});if(G.length===0)return[];await this.prepareTokens(G,Y,{waitForAll:!0});for(let $ of G)this.pollOutcomes.delete($.id),this.requestReading($.id,!0);return await this.poolStore().pullsSettled(),G.map(($)=>this.pollOutcomes.get($.id)??{id:$.id,ok:!1,error:"the quota poll did not run"})}async accessFor(Y,J){let X=await this.current();if(!X.active)return;let Q=X.rows.find((W)=>W.id===Y);if(!Q?.candidate)return;await this.prepareTokens([Q],J);let G=this.snapshot.rows.find((W)=>W.id===Y)??Q;if(!G.candidate)return;let $=this.usableToken(G);return $?{row:G,token:$}:void 0}async rowAccess(Y,J){let X=await this.current();if(!X.active)return;let Q=X.rows.find(($)=>$.id===Y);if(!Q)return{};let G=await this.accessFor(Y,J);return{row:{id:Q.id,type:Q.type,enabled:Q.enabled,...Q.label!==void 0?{label:Q.label}:{},...Q.identity!==void 0?{identity:Q.identity}:{}},...G?{token:G.token}:{}}}dispose(){return this.disposed=!0,this.disposal??=(async()=>{await Promise.allSettled([...this.writes.values()]),await Promise.all([...this.stores].map((Y)=>Y.close()))})(),this.disposal}async settled(){for(;;){let Y=[...this.writes.values(),...this.refreshing.values(),...this.inflightRead?[this.inflightRead.promise]:[]];if(await Promise.allSettled(Y),await this.store?.store.pullsSettled(),this.writes.size===0&&this.refreshing.size===0&&!this.inflightRead){await this.disposal;return}}}}var _3=60000,yY=900000,zK={set(Y,J){let X=setTimeout(Y,J);return X.unref?.(),X},clear(Y){clearTimeout(Y)}};function KK(Y){return Y.status==="completed"||Y.status==="already-migrated"||Y.status==="nothing-to-import"||Y.status==="ambiguous"}function P3(Y){return Y.status==="deferred"||Y.status==="retry"||Y.status==="error"}function q3(Y){let J=Y.log??z0("pool-migration"),X=Y.timers??zK,Q=Y.random??Math.random,G=Y.migrate??H8,$=Y.adopt??U8,W=Y.fence??(()=>M9({currentVersion:Y.version})),K=!1,H=new AbortController,U=!1,V=!1,D=0,L,B=Promise.resolve(),F,P,q,E=!1;function S(){if(E)return;E=!0,J.warn(P9,{reason:"placeholder-without-main"})}let x=()=>({paths:Y.paths(),slot:Y.slot,log:J,...Y.runDeps,signal:H.signal});function j(p){let t=B.then(p).catch((L0)=>{J.warn("account pool background run failed",{error:L0 instanceof Error?L0.message:String(L0)})});return B=t,t}function C(p){if(U)return;if(L!==void 0)X.clear(L);L=X.set(()=>{L=void 0,j(V0)},p)}function h(){let p=Math.min(_3*2**Math.min(D,10),yY);return D++,A(p)}let A=(p)=>Math.round(p*(1-0.2*Q()));async function g(){if(!await Y.paused?.())return!1;return C(A(_3)),!0}async function r(){if(U||await g()||U)return;let p;try{p=await G({...x(),fence:W})}catch(t){J.warn("account pool migration failed; it will be tried again",{error:t instanceof Error?t.message:String(t)}),C(h());return}if(p.status==="refused"){if(p.reason==="placeholder-without-main")S();C(A(yY));return}if(KK(p)){if(V=!0,D=0,p.status==="completed")J.info("account pool migration completed",{rowId:p.rowId});await i();return}if(P3(p)){if(p.status!=="deferred")J.warn("account pool migration will be tried again",{outcome:p});C(h())}}async function i(){if(U||await g()||U)return;let p;try{let t=await W();if(U)return;if(!t.open){let L0=JSON.stringify(t.blockers);if(L0!==q)q=L0,J.info("host login adoption waits for older plugin versions",{blockers:t.blockers});C(h());return}p=await $(x())}catch(t){J.warn("adopting the host login into the account pool failed",{error:t instanceof Error?t.message:String(t)}),C(h());return}if(p.status==="not-migrated")return;if(p.status==="slot-read-only")return;if(V=!0,p.status==="completed")J.info("host login adopted into the account pool",{rowId:p.rowId,operation:p.operation});if(P3(p)){J.warn("host login adoption will be tried again",{outcome:p}),C(h());return}if(D=0,V)C(A(yY))}async function V0(){if(U)return;if(V)await i();else await r()}function B0(){if(F)return F;let p=j(async()=>{if(F=void 0,!U)if(V)await i();else await r()});return F=p,p}return{start(){if(K||U)return;K=!0,j(r)},requestAdoption:B0,noticePlaceholderWithoutMain:S,noticeRealSlot(p){if(!V||U||p===P)return;P=p,B0()},dispose(){if(U=!0,H.abort(),L!==void 0)X.clear(L);L=void 0},idle:async()=>{for(;;){let p=B;if(await p,p===B)return}},migrated:()=>V}}var G9={"missing-main":"Request refused locally: this setup has no main login in its account store. Sign in with opencode auth login.","no-accounts":"Request refused locally: no eligible account is configured. Sign in with opencode auth login.",unusable:"Request refused locally: no usable account credential. Sign in with opencode auth login.",...C3};function uY(Y){return Y!==void 0&&R3.includes(Y)}function HK(Y,J,X,Q=new Set){return Y.filter((G)=>{if(!G.enabled||!G.candidate||G.type!=="oauth")return!1;if(G.credential?.type!=="oauth")return!1;if(m0(G.credential))return!1;if(G.identity!==void 0&&Q.has(G.identity))return!1;if(G.id===R6)return!0;if(T3(J,{accountId:G.identity}))return!1;return cY(T6(G.quota),J,X)})}function fY(Y){let J=Y.vault;return[...(J?[]:HK(Y.source.peek().rows,Y.storage,Y.now())).map((Q)=>({id:Q.id,kind:"oauth",...Q.identity!==void 0?{identity:Q.identity}:{},...Q.quota!==void 0?{quota:Q.quota}:{},row:Q})),...(J?.routes()??[]).filter((Q)=>cY(T6(Q.quota),Y.storage,Y.now())).map((Q)=>({id:Q.id,kind:Q.kind,...Q.identity!==void 0?{identity:Q.identity}:{},...Q.quota!==void 0?{quota:Q.quota}:{}}))]}function UK(Y){return Y.flatMap((J)=>J.row?[J.row]:[])}function Z8(Y,J){let X=Y.now(),Q=V1(J,Y.storage,X),G=J.map((H)=>({id:H.id,kind:H.kind,...g6(H.quota)?{quota:H.quota}:{}})),$=UK(J),W=new Set(J.filter((H)=>!H.row).map((H)=>H.id)),K=Y.source.rateLimitMarks($);for(let[H,U]of Y.vault?.rateLimitMarks?.()??[])if(W.has(H)&&U>X)K.set(H,U);return{rows:G,now:X,rateLimitMarks:K,refreshBackoff:Y.source.refreshBackoffFor($),killswitch:Q,requestPull:(H)=>W.has(H)?Y.vault?.requestReading(H):Y.source.requestReading(H)}}function M3(Y){let J=Y.find((X)=>X.id===R6);return{main:J?T6(J.quota):void 0,fallbacks:Y.filter((X)=>X.id!==R6).map((X)=>{let Q=T6(X.quota);return{accountId:X.id,...Q?{quota:Q}:{}}})}}async function mY(Y,J){if(J.row){let X=Y.source.usableToken(J.row);if(!X)return;let Q=await Y.send(J,X);return Y.recordQuota(Q,J,X),Q}return Y.vault?.send(J.id,async(X,Q)=>{let G=await Y.send(J,X,Q);return Y.recordQuota(G,J,X,Q),G})}async function h3(Y){if(Y.vault)await Y.vault.awaitRoster();else await Y.source.current(),await Y.source.prepareTokens(Y.source.peek().rows,Y.storage);let J=fY(Y),X=Y.replayable===!1&&J.some((G)=>G.id===R6)?J.filter((G)=>G.id===R6):J,Q=I3(Z8(Y,X));if(Q)await Q,J=fY(Y);if(Y.mode==="sticky-balanced"&&Y.sessionId&&Y.replayable&&Y.body!==void 0){let G=await VK(Y,J,Y.sessionId,Y.body);if(G)return G}return ZK(Y,J)}async function ZK(Y,J){let X=S3(Y.mode),Q=Z8(Y,J),G=b3({...Q,placement:X,mainId:Y.vault?Y.mode==="sticky-balanced"?null:w3(Y.vault.routes()):void 0,replayable:Y.replayable});if(G.kind==="block")return Y.log.debug("pool admission blocked the request",{pid:process.pid,reason:G.block.reason}),{response:Y.blocked(G.block,M3(J),Y.vault?J.length===0?Y.vault.noRouteCause():void 0:J.length===0?"no-accounts":"unusable"),servedId:R6};if(G.lastPath)Y.log.debug("pool admission: every account is exhausted; probing anyway",{pid:process.pid,order:G.order});let $=new Map(J.map((D)=>[D.id,D])),W=A3(Y.storage),K=[],H=new Set,U,V=!1;for(;;){let D=E3(G.order.filter((F)=>!H.has(F)),K,W),L=D===void 0?void 0:$.get(D);if(!L)break;let B;try{B=await mY(Y,L)}catch(F){if(Y.isAbort(F)||!U||Y.mode==="fallback-first")throw F;return Y.log.debug("pool fallback attempt threw; stopping",{pid:process.pid,accountId:L.id}),U}if(!B){if(!L.row)V=!0;H.add(L.id);continue}U?.response.body?.cancel().catch(()=>{}),U={response:B,servedId:L.id},K.push({id:L.id,status:B.status})}if(U)return y3(Y,Q,U.servedId),U;return{response:Y.blocked({reason:"no-credential"},M3(J),V?"vault-refused":Y.vault?"vault-empty":"unusable"),servedId:R6}}async function VK(Y,J,X,Q){let G=Buffer.byteLength(Q,"utf8"),$=new Map(J.map((E)=>[E.id,E])),W=Z8(Y,J),K=gY(W),H={requestBytes:G,reservePercent:(E)=>Z1(Y.storage,E===R6?void 0:E),resetCredits:Y.resetCredits,onEmptyWeightedSet:()=>{Y.log.debug("sticky routing: no fresh weighted candidates; using configured order")}},U=(E,S)=>(x,j)=>{let C=new Set(x);return Y.placePin({sessionId:X,requestBytes:G,now:E.now,validPinnedAccountIds:E.rows.map((h)=>h.id).filter((h)=>!S.excluded.has(h)),excludeAccountIds:x,quotaCheckedAtByAccount:Object.fromEntries(E.rows.map((h)=>[h.id,S.projections.get(h.id)?.checkedAt])),wireAccountIdByAccount:Object.fromEntries(J.map((h)=>[h.id,h.identity])),select:(h)=>k3(E,H,C,h),persist:j})},V=U(W,K),D=V([],!0);if(!D)return;let L=D.accountId,B=(E)=>{let S=V([L],!0);if(!S)return!1;return Y.log.debug("sticky routing: migrated session pin",{pid:process.pid,fromAccountId:L,toAccountId:S.accountId,reason:E}),L=S.accountId,!0},F=x3(W,H,L);if(F.kind==="none")return;if(F.kind==="move"){if(!B(F.reason)&&F.reason==="killswitch")return}else if(F.kind==="detour"){let E=V([L],!1);if(!E)return;Y.log.debug("sticky routing: pinned account awaits a quota reading",{pid:process.pid,pinnedAccountId:L,servedAccountId:E.accountId}),L=E.accountId}let P=$.get(L);if(!P)return;let q=await mY(Y,P);if(!q)return;if(q.status===401||q.status===403||q.status===429){let E=fY(Y);W=Z8(Y,E),K=gY(W),V=U(W,K);let S=v3(W,K,L,q.status);if(S.action==="migrate"){let x=L;if(B(S.reason)&&L!==x){let j=E.find((h)=>h.id===L),C=j?await mY(Y,j):void 0;if(j&&C){let h=q;q=C,h.body?.cancel().catch(()=>{}),P=j}else L=x}}}return y3(Y,W,P.id),{response:q,servedId:P.id}}function y3(Y,J,X){let Q=Y.log.info;Y.creditsServing?.served(J,X,Q?{info:(G,$)=>Q.call(Y.log,G,$)}:void 0)}var BK=new Map([["needs_reauth","needs sign-in"],["retired","turned off in vault"],["corrupt","unavailable"]]);function B1(Y){return typeof Y==="number"&&Number.isFinite(Y)}function LK(Y){if(!g6(Y))return;let J=Y.budget;if(J?.kind!=="reading")return;let{limit:X,used:Q,remaining:G,usedPercent:$,remainingPercent:W}=J;if(!B1(X)||!B1(Q)||!B1(G)||!B1($)||!B1(W))return;return{limit:X,used:Q,remaining:G,usedPercent:$,remainingPercent:W,reached:J.reached,...J.resetsAt!==void 0?{resetsAt:J.resetsAt}:{},...J.unit!==void 0?{unit:J.unit}:{}}}function pY(Y,J){let X=T6(Y),Q=LK(Y),G=g6(Y)?Y.credits:void 0;if(!X&&!Q&&!G)return null;let $=g6(Y)?W8(Y).checkedAt:void 0;return{...$!==void 0?{checkedAt:$}:{},...X?.primary?{primary:X.primary}:{},...X?.secondary?{secondary:X.secondary}:{},...Q?{spendControl:Q}:{},...J!==void 0?{resetCreditsAvailable:J}:{},...G?{credits:{...G}}:{}}}function g3(Y,J,X,Q){let G=V1(Y.map(($)=>({id:$.routeId,quota:$.quota})),{version:1,accounts:[],...X},Q);return{main:{quota:null,killed:!1},fallbacks:[],vaultAccounts:Y.map(($)=>{let W=$.quota?.counters?.resetCredits?.value;return{id:$.routeId,credentialId:$.credentialId,label:$.email||$.label||$.routeId,...$.accountIdentity!==void 0?{accountId:$.accountIdentity}:{},quota:pY($.quota,W),killed:G.get($.routeId)===!1,enabled:$.enabled,routable:J.has($.routeId),...$.state!=="active"||$.stale||$.unclaimed||$.enabled&&!J.has($.routeId)?{vaultState:BK.get($.state)??"unavailable"}:{},...W!==void 0?{resetCredits:W}:{}}}),route:X?.routing?.mode??"main-first",lastUpdated:Q}}function f3(Y,J,X,Q=()=>{return}){let G=V1(Y,{version:1,accounts:[],...J},X),$=Y.find((K)=>K.id===V6),W=$?Q($.id):void 0;return{main:{quota:$?pY($.quota,W):null,...$?.identity!==void 0?{mainAccountId:$.identity}:{},killed:G.get(V6)===!1,...W!==void 0?{resetCredits:W}:{}},fallbacks:Y.filter((K)=>K.id!==V6&&K.enabled).map((K)=>{let H=Q(K.id);return{id:K.id,label:K.label,...K.identity!==void 0?{accountId:K.identity}:{},quota:pY(K.quota,H),killed:G.get(K.id)===!1,enabled:!0,...H!==void 0?{resetCredits:H}:{}}}),route:J?.routing?.mode??"main-first",lastUpdated:X,accountPool:!0}}import{randomUUID as NK}from"node:crypto";import{chmod as jK,mkdir as FK,rename as OK,rm as c3,writeFile as DK}from"node:fs/promises";import{homedir as _K}from"node:os";import{join as lY}from"node:path";function u3(){let Y=process.env.XDG_STATE_HOME||lY(_K(),".local","state");return lY(Y,"cortexkit","openai-auth","processes")}function p3(Y=process.pid,J=u3()){return lY(J,`${Y}.json`)}var V8=0,m3;async function PK(Y,J){await FK(Y,{recursive:!0,mode:448}),await jK(Y,448);let X=p3(J.pid,Y),Q=`${X}.${NK()}.tmp`;try{await DK(Q,`${JSON.stringify(J)}
|
|
11
|
+
`,{mode:384}),await OK(Q,X)}catch(G){throw await c3(Q,{force:!0}).catch(()=>{}),G}return X}async function l3(Y){let J=Y.pid??process.pid,X=Y.dir??u3();m3??=(Y.now??Date.now)(),V8++;let Q;try{Q=await PK(X,{pid:J,version:Y.version,startedAt:m3})}catch($){Y.logger.warn("process heartbeat not written",{dir:X,error:$ instanceof Error?$.message:String($)})}let G=!1;return{path:Q,async release(){if(G)return;if(G=!0,V8=Math.max(0,V8-1),V8>0)return;await c3(p3(J,X),{force:!0}).catch(($)=>{Y.logger.warn("process heartbeat not removed",{dir:X,error:$ instanceof Error?$.message:String($)})})}}}import{resolve as B8}from"node:path";import{resolveClaustrumConnectionPath as qK}from"@cortexkit/claustrum-client";var MK=z0("vault"),EK=60000,AK=240000,i3=Symbol.for("@cortexkit/openai-auth/opencode-vaults"),n3=globalThis,L1=n3[i3]??new Map;n3[i3]=L1;function o3(Y,J){let X=Boolean(Y.connectScoped||Y.connectEnrollment),Q=B8(Y.stateDir),G=B8((Y.connectionFile??qK)()),$=JSON.stringify([Y.host,Q,G,B8(J.configPath),B8(J.statePath)]),W={reservedRouteIds:Y.reservedRouteIds??(()=>[])},K=X?void 0:L1.get($);if(!K){let V=new Set;if(K={vault:new d3({...Y,stateDir:Q,connectionFile:()=>G,...!X?{projectRoot:Q}:{},reservedRouteIds:()=>new Set([...V].flatMap((L)=>[...L.reservedRouteIds()]))}),holders:V,firstRoster:Promise.withResolvers(),started:!1},!X)L1.set($,K)}K.holders.add(W);let H=K,U=!1;return{vault:H.vault,firstRoster:H.firstRoster.promise,start(){if(U||H.started)return;H.started=!0;let V=async()=>{try{if(H.holders.size&&await H.vault.authority()!=="local")await H.vault.pollStale(AK)}catch(L){MK.warn("vault background quota poll failed",{error:L instanceof Error?L.message:String(L)})}};H.vault.start(),H.vault.firstRoster().finally(()=>{H.firstRoster.resolve(),V()}),H.quotaPoll=setInterval(V,EK),H.quotaPoll.unref?.()},release(){if(U)return;if(U=!0,H.holders.delete(W),H.holders.size!==0)return;if(H.quotaPoll)clearInterval(H.quotaPoll);if(H.vault.close(),H.firstRoster.resolve(),!X&&L1.get($)===H)L1.delete($)}}}var e3=900000,TK=0.016666666666666666,r3=0.000001;function iY(Y,J){for(let X of[Y?.primary?.checkedAt,Y?.checkedAt,J])if(typeof X==="number"&&Number.isFinite(X))return X;return}function nY(Y){if(Y.status===401||Y.status===403)return{action:"migrate",reason:"permanent"};if(!Y.quota)return{action:"retain",reason:"unknown"};let J=iY(Y.quota,Y.quotaCheckedAt);if(J===void 0||!Number.isFinite(J)||Y.now-J>e3)return{action:"retain",reason:"stale"};if(Y.killswitchPasses===!1)return{action:"migrate",reason:"killswitch"};let X=dY(Y.quota).sort((G,$)=>{let W=G.windowMs,K=$.windowMs,H=typeof W==="number"&&Number.isFinite(W),U=typeof K==="number"&&Number.isFinite(K);if(H!==U)return H?-1:1;if(H&&U)return K-W;return 0});for(let{key:G,window:$}of X)if(Number.isFinite($.remainingPercent)&&$.remainingPercent<=0)return{action:"migrate",reason:"exhausted",windowKey:G,...typeof $.resetsAt==="string"?{resetsAt:$.resetsAt}:{}};let Q=t3(Y.quota,Y.now);if(Q)return{action:"migrate",reason:"exhausted",resetsAt:Q.resetsAt};if(Y.status===void 0||Y.status===0||!Number.isFinite(Y.status)||Y.status>=500&&Y.status<=599||Y.status===429)return{action:"retain",reason:"transient"};return{action:"retain",reason:"healthy"}}function s3(Y,J,X){let Q=Math.max(0,Y.remainingPercent-J);if(Q<=0)return 0;if(!Y.resetsAt)return Q;let G=Date.parse(Y.resetsAt);if(!Number.isFinite(G)||G<=X)return Q;let $=Math.max((G-X)/3600000,TK);return Q/$}function a3(Y,J){if(Y<J)return-1;if(Y>J)return 1;return 0}function RK(Y,J){if(!Y.quota)return;let X=iY(Y.quota,Y.quotaCheckedAt);if(X===void 0||J-X>e3)return;let Q=dY(Y.quota).map(({key:W,window:K})=>{return s3(K,Y.reservePercent[W]??0,J)}),G=Y.quota.spendControl;if(G&&Number.isFinite(G.remainingPercent))Q.push(s3(G,0,J));let $=Q.length>0?Math.min(...Q):0;return $>0?{candidate:Y,quotaCheckedAt:X,weight:$}:void 0}function Y2(Y){let J=Y.candidates.filter((G)=>G.killswitchPasses!==!1);if(Y.candidates.length===0)throw Error("Cannot select a sticky candidate: input.candidates is empty");if(J.length===0)return;let X=J.map((G)=>RK(G,Y.now)).filter((G)=>G!==void 0);if(X.length>0){X.sort(($,W)=>{let K=((Y.pendingBytes.get($.candidate.accountId)??0)+Y.requestBytes)/Math.max($.weight,r3),H=((Y.pendingBytes.get(W.candidate.accountId)??0)+Y.requestBytes)/Math.max(W.weight,r3);return K-H||$.candidate.configuredOrder-W.candidate.configuredOrder||a3($.candidate.accountId,W.candidate.accountId)});let G=X[0];if(G)return{accountId:G.candidate.accountId,quotaCheckedAt:G.quotaCheckedAt,source:"weighted"}}Y.onEmptyWeightedSet?.();let Q=[...J].sort((G,$)=>{let W=(G.resetCreditsApplicable??0)>0?1:0;return(($.resetCreditsApplicable??0)>0?1:0)-W||G.configuredOrder-$.configuredOrder||a3(G.accountId,$.accountId)})[0];if(!Q)throw Error("Cannot select a sticky candidate: input.candidates is empty");return{accountId:Q.accountId,quotaCheckedAt:iY(Q.quota,Q.quotaCheckedAt),source:"mode-fallback"}}import{readFile as CK}from"node:fs/promises";import{homedir as wK}from"node:os";import{join as J2}from"node:path";var SK="https://models.dev/api.json",IK="OPENCODE_OPENAI_AUTH_MODELS_CACHE",bK="OPENCODE_MODELS_PATH",kK="OPENCODE_DISABLE_MODELS_FETCH",xK=1e4,vK=300000;function f6(Y){return Y!==null&&typeof Y==="object"&&!Array.isArray(Y)?Y:null}function X2(Y){if(Y===void 0)return 0;return typeof Y==="number"&&Number.isFinite(Y)&&Y>=0?Y:null}function oY(Y){let{input:J,output:X}=Y;if(typeof J!=="number"||!Number.isFinite(J)||J<0)return null;if(typeof X!=="number"||!Number.isFinite(X)||X<0)return null;let Q=X2(Y.cache_read),G=X2(Y.cache_write);if(Q===null||G===null)return null;return{input:J,output:X,cache:{read:Q,write:G}}}function hK(Y){let J=f6(Y);if(!J)return null;let X=oY(J);if(!X)return null;let Q=X;if(Array.isArray(J.tiers)){let W=[];for(let K of J.tiers){let H=f6(K);if(!H)continue;let U=f6(H.tier),V=U?.size;if(U?.type!=="context")continue;if(typeof V!=="number"||!Number.isFinite(V)||V<=0)continue;let D=oY(H);if(!D)continue;W.push({...D,tier:{type:"context",size:V}})}if(W.length>0)Q.tiers=W}let G=f6(J.context_over_200k),$=G?oY(G):null;if($)Q.experimentalOver200K=$;return Q}function Q2(Y){let J=f6(Y),X=f6(J?.openai),Q=f6(X?.models);if(!Q)return null;let G={};for(let[$,W]of Object.entries(Q)){let K=f6(W),H=hK(K?.cost);if(H)G[$]=H}return Object.keys(G).length>0?G:null}function yK(){let Y=process.env[IK]?.trim();if(Y)return Y;let J=process.env[bK]?.trim();if(J)return J;let X=process.env.XDG_CACHE_HOME?.trim()||(process.platform==="win32"?process.env.LOCALAPPDATA?.trim():void 0)||J2(wK(),".cache");return J2(X,"opencode","models.json")}function gK(){let Y=process.env[kK]?.toLowerCase();return Y==="true"||Y==="1"}async function fK(){try{let Y=Q2(JSON.parse(await CK(yK(),"utf8")));if(Y)return Y}catch{}if(gK())return null;try{let Y=await fetch(SK,{signal:AbortSignal.timeout(xK)});if(!Y.ok)return null;return Q2(await Y.json())}catch{return null}}var I9;function G2(){let Y=Date.now();if(I9&&I9.expiresAt>Y)return I9.promise;let J={expiresAt:Y+vK,promise:fK()};return I9=J,J.promise.then((X)=>{if(X===null&&I9===J)I9=void 0}),J.promise}function b9(Y){return typeof Y==="object"&&Y!==null}function mK(Y){if(Array.isArray(Y))return Y;if(b9(Y)&&Array.isArray(Y.data))return Y.data;return[]}function cK(Y){if(!b9(Y)||!b9(Y.info))return;return typeof Y.info.role==="string"?Y.info.role:void 0}function $2(Y){if(!b9(Y)||!b9(Y.info))return null;let J=Y.info,X=b9(J.model)?J.model:void 0,Q=typeof J.agent==="string"?J.agent:void 0,G=typeof X?.providerID==="string"?X.providerID:typeof J.providerID==="string"?J.providerID:void 0,$=typeof X?.modelID==="string"?X.modelID:typeof J.modelID==="string"?J.modelID:void 0,W=typeof X?.variant==="string"?X.variant:typeof J.variant==="string"?J.variant:void 0;if(!Q&&(!G||!$)&&!W)return null;let K={};if(Q)K.agent=Q;if(G&&$)K.model={providerID:G,modelID:$};if(W)K.variant=W;return K}function W2(Y,J){return{agent:Y.agent??J.agent,model:Y.model??J.model,variant:Y.variant??J.variant}}function z2(Y){return Boolean(Y.agent&&Y.model&&Y.variant)}async function K2(Y,J){if(!Y||!J)return null;let X=Y;if(typeof X.session?.messages!=="function")return null;let Q=[];try{Q=mK(await Promise.resolve(X.session.messages({path:{id:J},query:{limit:100}})))}catch{return null}if(Q.length===0)return null;let G={};for(let $=Q.length-1;$>=0;$--){if(cK(Q[$])!=="assistant")continue;let W=$2(Q[$]);if(!W)continue;if(G=W2(G,W),z2(G))return G}for(let $=Q.length-1;$>=0;$--){let W=$2(Q[$]);if(!W)continue;if(G=W2(G,W),z2(G))return G}if(!G.agent&&!G.model&&!G.variant)return null;return G}var uK=z0("rpc"),U2="__openaiAuthRpcServers";function Z2(Y){return H2({...Y,isManagedDir:d1,log:uK,drain:(J,X)=>Y.drain(J,X),apply:async(J)=>await Y.apply(J)})}var k6={};aY(k6,{withoutInternalHeaders:()=>W$,sanitizeHttpFallbackBody:()=>wY,orderCodexBody:()=>e6,hasWebSocketResponsesLiteMetadata:()=>CY,createWebSocketFetch:()=>RB,applyTurnId:()=>Y$,advanceTurn:()=>i4,TITLE_HEADER:()=>d4,QUOTA_ACCOUNT_HEADER:()=>g8,OpenAIWebSocketPool:()=>k6,CODEX_BODY_KEY_ORDER:()=>VY});import{createHash as qB}from"node:crypto";var pK=Symbol.for("vercel.ai.error"),C6=class Y extends Error{constructor({name:J,message:X,cause:Q}){super(X);this[pK]=!0,this.name=J,this.cause=Q}static isInstance(J){return Y.hasMarker(J,"vercel.ai.error")}static hasMarker(J,X){let Q=Symbol.for(X);return J!=null&&typeof J==="object"&&Q in J&&typeof J[Q]==="boolean"&&J[Q]===!0}},lK="AI_DecisionUnsupportedQuestionTypeError",hF=`vercel.ai.error.${lK}`;var V2="AI_APICallError",B2=`vercel.ai.error.${V2}`,dK=Symbol.for(B2),$9=class extends C6{constructor({message:Y,url:J,requestBodyValues:X,statusCode:Q,responseHeaders:G,responseBody:$,cause:W,isRetryable:K=Q!=null&&(Q===408||Q===409||Q===429||Q>=500),data:H}){super({name:V2,message:Y,cause:W});this[dK]=!0,this.url=J,this.requestBodyValues=X,this.statusCode=Q,this.responseHeaders=G,this.responseBody=$,this.isRetryable=K,this.data=H}static isInstance(Y){return C6.hasMarker(Y,B2)}},iK="AI_EmptyResponseBodyError",yF=`vercel.ai.error.${iK}`;var nK="AI_DecisionRefusalError",gF=`vercel.ai.error.${nK}`;var L2="AI_InvalidArgumentError",N2=`vercel.ai.error.${L2}`,oK=Symbol.for(N2),rY=class extends C6{constructor({message:Y,cause:J,argument:X}){super({name:L2,message:Y,cause:J});this[oK]=!0,this.argument=X}static isInstance(Y){return C6.hasMarker(Y,N2)}},rK="AI_InvalidPromptError",fF=`vercel.ai.error.${rK}`;var sK="AI_InvalidResponseDataError",mF=`vercel.ai.error.${sK}`;var aK="AI_JSONParseError",cF=`vercel.ai.error.${aK}`;var tK="AI_LoadAPIKeyError",uF=`vercel.ai.error.${tK}`;var eK="AI_LoadSettingError",pF=`vercel.ai.error.${eK}`;var YH="AI_NoContentGeneratedError",lF=`vercel.ai.error.${YH}`;var JH="AI_NoSuchModelError",dF=`vercel.ai.error.${JH}`;var XH="AI_NoSuchProviderReferenceError",iF=`vercel.ai.error.${XH}`;var QH="AI_TooManyEmbeddingValuesForCallError",nF=`vercel.ai.error.${QH}`;var GH="AI_TypeValidationError",oF=`vercel.ai.error.${GH}`;var $H="AI_UnsupportedFunctionalityError",rF=`vercel.ai.error.${$H}`;var eF=Object.freeze({status:"aborted"});function _(Y,J,X){function Q(K,H){var U;Object.defineProperty(K,"_zod",{value:K._zod??{},enumerable:!1}),(U=K._zod).traits??(U.traits=new Set),K._zod.traits.add(Y),J(K,H);for(let V in W.prototype)if(!(V in K))Object.defineProperty(K,V,{value:W.prototype[V].bind(K)});K._zod.constr=W,K._zod.def=H}let G=X?.Parent??Object;class $ extends G{}Object.defineProperty($,"name",{value:Y});function W(K){var H;let U=X?.Parent?new $:this;Q(U,K),(H=U._zod).deferred??(H.deferred=[]);for(let V of U._zod.deferred)V();return U}return Object.defineProperty(W,"init",{value:Q}),Object.defineProperty(W,Symbol.hasInstance,{value:(K)=>{if(X?.Parent&&K instanceof X.Parent)return!0;return K?._zod?.traits?.has(Y)}}),Object.defineProperty(W,"name",{value:Y}),W}var YO=Symbol("zod_brand");class w6 extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class N1 extends Error{constructor(Y){super(`Encountered unidirectional transform during encode: ${Y}`);this.name="ZodEncodeError"}}var L8={};function j6(Y){if(Y)Object.assign(L8,Y);return L8}var Q0={};aY(Q0,{unwrapMessage:()=>j1,uint8ArrayToHex:()=>IH,uint8ArrayToBase64url:()=>wH,uint8ArrayToBase64:()=>M2,stringifyPrimitive:()=>D2,shallowClone:()=>F2,safeExtend:()=>MH,required:()=>TH,randomString:()=>jH,propertyKeyTypes:()=>Y4,promiseAllObject:()=>NH,primitiveTypes:()=>O2,prefixIssues:()=>I6,pick:()=>_H,partial:()=>AH,optionalKeys:()=>J4,omit:()=>PH,objectClone:()=>VH,numKeys:()=>FH,nullish:()=>O1,normalizeParams:()=>o,mergeDefs:()=>c6,merge:()=>EH,jsonStringifyReplacer:()=>k9,joinValues:()=>ZH,issue:()=>v9,isPlainObject:()=>u6,isObject:()=>W9,hexToUint8Array:()=>SH,getSizableOrigin:()=>P2,getParsedType:()=>OH,getLengthableOrigin:()=>_1,getEnumValues:()=>F1,getElementAtPath:()=>LH,floatSafeRemainder:()=>tY,finalizeIssue:()=>$6,extend:()=>qH,escapeRegex:()=>S6,esc:()=>N8,defineLazy:()=>G0,createTransparentProxy:()=>DH,cloneDef:()=>BH,clone:()=>G6,cleanRegex:()=>D1,cleanEnum:()=>RH,captureStackTrace:()=>j8,cached:()=>x9,base64urlToUint8Array:()=>CH,base64ToUint8Array:()=>q2,assignProp:()=>m6,assertNotEqual:()=>zH,assertNever:()=>HH,assertIs:()=>KH,assertEqual:()=>WH,assert:()=>UH,allowsEval:()=>eY,aborted:()=>p6,NUMBER_FORMAT_RANGES:()=>X4,Class:()=>E2,BIGINT_FORMAT_RANGES:()=>_2});function WH(Y){return Y}function zH(Y){return Y}function KH(Y){}function HH(Y){throw Error()}function UH(Y){}function F1(Y){let J=Object.values(Y).filter((Q)=>typeof Q==="number");return Object.entries(Y).filter(([Q,G])=>J.indexOf(+Q)===-1).map(([Q,G])=>G)}function ZH(Y,J="|"){return Y.map((X)=>D2(X)).join(J)}function k9(Y,J){if(typeof J==="bigint")return J.toString();return J}function x9(Y){return{get value(){{let X=Y();return Object.defineProperty(this,"value",{value:X}),X}throw Error("cached value already set")}}}function O1(Y){return Y===null||Y===void 0}function D1(Y){let J=Y.startsWith("^")?1:0,X=Y.endsWith("$")?Y.length-1:Y.length;return Y.slice(J,X)}function tY(Y,J){let X=(Y.toString().split(".")[1]||"").length,Q=J.toString(),G=(Q.split(".")[1]||"").length;if(G===0&&/\d?e-\d?/.test(Q)){let H=Q.match(/\d?e-(\d?)/);if(H?.[1])G=Number.parseInt(H[1])}let $=X>G?X:G,W=Number.parseInt(Y.toFixed($).replace(".","")),K=Number.parseInt(J.toFixed($).replace(".",""));return W%K/10**$}var j2=Symbol("evaluating");function G0(Y,J,X){let Q=void 0;Object.defineProperty(Y,J,{get(){if(Q===j2)return;if(Q===void 0)Q=j2,Q=X();return Q},set(G){Object.defineProperty(Y,J,{value:G})},configurable:!0})}function VH(Y){return Object.create(Object.getPrototypeOf(Y),Object.getOwnPropertyDescriptors(Y))}function m6(Y,J,X){Object.defineProperty(Y,J,{value:X,writable:!0,enumerable:!0,configurable:!0})}function c6(...Y){let J={};for(let X of Y){let Q=Object.getOwnPropertyDescriptors(X);Object.assign(J,Q)}return Object.defineProperties({},J)}function BH(Y){return c6(Y._zod.def)}function LH(Y,J){if(!J)return Y;return J.reduce((X,Q)=>X?.[Q],Y)}function NH(Y){let J=Object.keys(Y),X=J.map((Q)=>Y[Q]);return Promise.all(X).then((Q)=>{let G={};for(let $=0;$<J.length;$++)G[J[$]]=Q[$];return G})}function jH(Y=10){let X="";for(let Q=0;Q<Y;Q++)X+="abcdefghijklmnopqrstuvwxyz"[Math.floor(Math.random()*26)];return X}function N8(Y){return JSON.stringify(Y)}var j8="captureStackTrace"in Error?Error.captureStackTrace:(...Y)=>{};function W9(Y){return typeof Y==="object"&&Y!==null&&!Array.isArray(Y)}var eY=x9(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(Y){return!1}});function u6(Y){if(W9(Y)===!1)return!1;let J=Y.constructor;if(J===void 0)return!0;let X=J.prototype;if(W9(X)===!1)return!1;if(Object.prototype.hasOwnProperty.call(X,"isPrototypeOf")===!1)return!1;return!0}function F2(Y){if(u6(Y))return{...Y};if(Array.isArray(Y))return[...Y];return Y}function FH(Y){let J=0;for(let X in Y)if(Object.prototype.hasOwnProperty.call(Y,X))J++;return J}var OH=(Y)=>{let J=typeof Y;switch(J){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(Y)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":if(Array.isArray(Y))return"array";if(Y===null)return"null";if(Y.then&&typeof Y.then==="function"&&Y.catch&&typeof Y.catch==="function")return"promise";if(typeof Map<"u"&&Y instanceof Map)return"map";if(typeof Set<"u"&&Y instanceof Set)return"set";if(typeof Date<"u"&&Y instanceof Date)return"date";if(typeof File<"u"&&Y instanceof File)return"file";return"object";default:throw Error(`Unknown data type: ${J}`)}},Y4=new Set(["string","number","symbol"]),O2=new Set(["string","number","bigint","boolean","symbol","undefined"]);function S6(Y){return Y.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function G6(Y,J,X){let Q=new Y._zod.constr(J??Y._zod.def);if(!J||X?.parent)Q._zod.parent=Y;return Q}function o(Y){let J=Y;if(!J)return{};if(typeof J==="string")return{error:()=>J};if(J?.message!==void 0){if(J?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");J.error=J.message}if(delete J.message,typeof J.error==="string")return{...J,error:()=>J.error};return J}function DH(Y){let J;return new Proxy({},{get(X,Q,G){return J??(J=Y()),Reflect.get(J,Q,G)},set(X,Q,G,$){return J??(J=Y()),Reflect.set(J,Q,G,$)},has(X,Q){return J??(J=Y()),Reflect.has(J,Q)},deleteProperty(X,Q){return J??(J=Y()),Reflect.deleteProperty(J,Q)},ownKeys(X){return J??(J=Y()),Reflect.ownKeys(J)},getOwnPropertyDescriptor(X,Q){return J??(J=Y()),Reflect.getOwnPropertyDescriptor(J,Q)},defineProperty(X,Q,G){return J??(J=Y()),Reflect.defineProperty(J,Q,G)}})}function D2(Y){if(typeof Y==="bigint")return Y.toString()+"n";if(typeof Y==="string")return`"${Y}"`;return`${Y}`}function J4(Y){return Object.keys(Y).filter((J)=>{return Y[J]._zod.optin==="optional"&&Y[J]._zod.optout==="optional"})}var X4={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-340282346638528860000000000000000000000,340282346638528860000000000000000000000],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},_2={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function _H(Y,J){let X=Y._zod.def,Q=c6(Y._zod.def,{get shape(){let G={};for(let $ in J){if(!($ in X.shape))throw Error(`Unrecognized key: "${$}"`);if(!J[$])continue;G[$]=X.shape[$]}return m6(this,"shape",G),G},checks:[]});return G6(Y,Q)}function PH(Y,J){let X=Y._zod.def,Q=c6(Y._zod.def,{get shape(){let G={...Y._zod.def.shape};for(let $ in J){if(!($ in X.shape))throw Error(`Unrecognized key: "${$}"`);if(!J[$])continue;delete G[$]}return m6(this,"shape",G),G},checks:[]});return G6(Y,Q)}function qH(Y,J){if(!u6(J))throw Error("Invalid input to extend: expected a plain object");let X=Y._zod.def.checks;if(X&&X.length>0)throw Error("Object schemas containing refinements cannot be extended. Use `.safeExtend()` instead.");let G=c6(Y._zod.def,{get shape(){let $={...Y._zod.def.shape,...J};return m6(this,"shape",$),$},checks:[]});return G6(Y,G)}function MH(Y,J){if(!u6(J))throw Error("Invalid input to safeExtend: expected a plain object");let X={...Y._zod.def,get shape(){let Q={...Y._zod.def.shape,...J};return m6(this,"shape",Q),Q},checks:Y._zod.def.checks};return G6(Y,X)}function EH(Y,J){let X=c6(Y._zod.def,{get shape(){let Q={...Y._zod.def.shape,...J._zod.def.shape};return m6(this,"shape",Q),Q},get catchall(){return J._zod.def.catchall},checks:[]});return G6(Y,X)}function AH(Y,J,X){let Q=c6(J._zod.def,{get shape(){let G=J._zod.def.shape,$={...G};if(X)for(let W in X){if(!(W in G))throw Error(`Unrecognized key: "${W}"`);if(!X[W])continue;$[W]=Y?new Y({type:"optional",innerType:G[W]}):G[W]}else for(let W in G)$[W]=Y?new Y({type:"optional",innerType:G[W]}):G[W];return m6(this,"shape",$),$},checks:[]});return G6(J,Q)}function TH(Y,J,X){let Q=c6(J._zod.def,{get shape(){let G=J._zod.def.shape,$={...G};if(X)for(let W in X){if(!(W in $))throw Error(`Unrecognized key: "${W}"`);if(!X[W])continue;$[W]=new Y({type:"nonoptional",innerType:G[W]})}else for(let W in G)$[W]=new Y({type:"nonoptional",innerType:G[W]});return m6(this,"shape",$),$},checks:[]});return G6(J,Q)}function p6(Y,J=0){if(Y.aborted===!0)return!0;for(let X=J;X<Y.issues.length;X++)if(Y.issues[X]?.continue!==!0)return!0;return!1}function I6(Y,J){return J.map((X)=>{var Q;return(Q=X).path??(Q.path=[]),X.path.unshift(Y),X})}function j1(Y){return typeof Y==="string"?Y:Y?.message}function $6(Y,J,X){let Q={...Y,path:Y.path??[]};if(!Y.message){let G=j1(Y.inst?._zod.def?.error?.(Y))??j1(J?.error?.(Y))??j1(X.customError?.(Y))??j1(X.localeError?.(Y))??"Invalid input";Q.message=G}if(delete Q.inst,delete Q.continue,!J?.reportInput)delete Q.input;return Q}function P2(Y){if(Y instanceof Set)return"set";if(Y instanceof Map)return"map";if(Y instanceof File)return"file";return"unknown"}function _1(Y){if(Array.isArray(Y))return"array";if(typeof Y==="string")return"string";return"unknown"}function v9(...Y){let[J,X,Q]=Y;if(typeof J==="string")return{message:J,code:"custom",input:X,inst:Q};return{...J}}function RH(Y){return Object.entries(Y).filter(([J,X])=>{return Number.isNaN(Number.parseInt(J,10))}).map((J)=>J[1])}function q2(Y){let J=atob(Y),X=new Uint8Array(J.length);for(let Q=0;Q<J.length;Q++)X[Q]=J.charCodeAt(Q);return X}function M2(Y){let J="";for(let X=0;X<Y.length;X++)J+=String.fromCharCode(Y[X]);return btoa(J)}function CH(Y){let J=Y.replace(/-/g,"+").replace(/_/g,"/"),X="=".repeat((4-J.length%4)%4);return q2(J+X)}function wH(Y){return M2(Y).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function SH(Y){let J=Y.replace(/^0x/,"");if(J.length%2!==0)throw Error("Invalid hex string length");let X=new Uint8Array(J.length/2);for(let Q=0;Q<J.length;Q+=2)X[Q/2]=Number.parseInt(J.slice(Q,Q+2),16);return X}function IH(Y){return Array.from(Y).map((J)=>J.toString(16).padStart(2,"0")).join("")}class E2{constructor(...Y){}}var A2=(Y,J)=>{Y.name="$ZodError",Object.defineProperty(Y,"_zod",{value:Y._zod,enumerable:!1}),Object.defineProperty(Y,"issues",{value:J,enumerable:!1}),Y.message=JSON.stringify(J,k9,2),Object.defineProperty(Y,"toString",{value:()=>Y.message,enumerable:!1})},F8=_("$ZodError",A2),Q4=_("$ZodError",A2,{Parent:Error});function T2(Y,J=(X)=>X.message){let X={},Q=[];for(let G of Y.issues)if(G.path.length>0)X[G.path[0]]=X[G.path[0]]||[],X[G.path[0]].push(J(G));else Q.push(J(G));return{formErrors:Q,fieldErrors:X}}function R2(Y,J){let X=J||function($){return $.message},Q={_errors:[]},G=($)=>{for(let W of $.issues)if(W.code==="invalid_union"&&W.errors.length)W.errors.map((K)=>G({issues:K}));else if(W.code==="invalid_key")G({issues:W.issues});else if(W.code==="invalid_element")G({issues:W.issues});else if(W.path.length===0)Q._errors.push(X(W));else{let K=Q,H=0;while(H<W.path.length){let U=W.path[H];if(H!==W.path.length-1)K[U]=K[U]||{_errors:[]};else K[U]=K[U]||{_errors:[]},K[U]._errors.push(X(W));K=K[U],H++}}};return G(Y),Q}var O8=(Y)=>(J,X,Q,G)=>{let $=Q?Object.assign(Q,{async:!1}):{async:!1},W=J._zod.run({value:X,issues:[]},$);if(W instanceof Promise)throw new w6;if(W.issues.length){let K=new(G?.Err??Y)(W.issues.map((H)=>$6(H,$,j6())));throw j8(K,G?.callee),K}return W.value};var D8=(Y)=>async(J,X,Q,G)=>{let $=Q?Object.assign(Q,{async:!0}):{async:!0},W=J._zod.run({value:X,issues:[]},$);if(W instanceof Promise)W=await W;if(W.issues.length){let K=new(G?.Err??Y)(W.issues.map((H)=>$6(H,$,j6())));throw j8(K,G?.callee),K}return W.value};var P1=(Y)=>(J,X,Q)=>{let G=Q?{...Q,async:!1}:{async:!1},$=J._zod.run({value:X,issues:[]},G);if($ instanceof Promise)throw new w6;return $.issues.length?{success:!1,error:new(Y??F8)($.issues.map((W)=>$6(W,G,j6())))}:{success:!0,data:$.value}},C2=P1(Q4),q1=(Y)=>async(J,X,Q)=>{let G=Q?Object.assign(Q,{async:!0}):{async:!0},$=J._zod.run({value:X,issues:[]},G);if($ instanceof Promise)$=await $;return $.issues.length?{success:!1,error:new Y($.issues.map((W)=>$6(W,G,j6())))}:{success:!0,data:$.value}},w2=q1(Q4),S2=(Y)=>(J,X,Q)=>{let G=Q?Object.assign(Q,{direction:"backward"}):{direction:"backward"};return O8(Y)(J,X,G)};var I2=(Y)=>(J,X,Q)=>{return O8(Y)(J,X,Q)};var b2=(Y)=>async(J,X,Q)=>{let G=Q?Object.assign(Q,{direction:"backward"}):{direction:"backward"};return D8(Y)(J,X,G)};var k2=(Y)=>async(J,X,Q)=>{return D8(Y)(J,X,Q)};var x2=(Y)=>(J,X,Q)=>{let G=Q?Object.assign(Q,{direction:"backward"}):{direction:"backward"};return P1(Y)(J,X,G)};var v2=(Y)=>(J,X,Q)=>{return P1(Y)(J,X,Q)};var h2=(Y)=>async(J,X,Q)=>{let G=Q?Object.assign(Q,{direction:"backward"}):{direction:"backward"};return q1(Y)(J,X,G)};var y2=(Y)=>async(J,X,Q)=>{return q1(Y)(J,X,Q)};var g2=/^[cC][^\s-]{8,}$/,f2=/^[0-9a-z]+$/,m2=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,c2=/^[0-9a-vA-V]{20}$/,u2=/^[A-Za-z0-9]{27}$/,p2=/^[a-zA-Z0-9_-]{21}$/,l2=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/;var d2=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,G4=(Y)=>{if(!Y)return/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${Y}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`)};var i2=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;function n2(){return new RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")}var o2=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,r2=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,s2=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,a2=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,t2=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,$4=/^[A-Za-z0-9_-]*$/,e2=/^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/;var Y7=/^\+(?:[0-9]){6,14}[0-9]$/,J7="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",X7=new RegExp(`^${J7}$`);function Q7(Y){return typeof Y.precision==="number"?Y.precision===-1?"(?:[01]\\d|2[0-3]):[0-5]\\d":Y.precision===0?"(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d":`(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{${Y.precision}}`:"(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?"}function G7(Y){return new RegExp(`^${Q7(Y)}$`)}function $7(Y){let J=Q7({precision:Y.precision}),X=["Z"];if(Y.local)X.push("");if(Y.offset)X.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let Q=`${J}(?:${X.join("|")})`;return new RegExp(`^${J7}T(?:${Q})$`)}var W7=(Y)=>{let J=Y?`[\\s\\S]{${Y?.minimum??0},${Y?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${J}$`)};var z7=/^-?\d+$/,K7=/^-?\d+(?:\.\d+)?/,H7=/^(?:true|false)$/i,U7=/^null$/i;var Z7=/^[^A-Z]*$/,V7=/^[^a-z]*$/;var k0=_("$ZodCheck",(Y,J)=>{var X;Y._zod??(Y._zod={}),Y._zod.def=J,(X=Y._zod).onattach??(X.onattach=[])}),B7={number:"number",bigint:"bigint",object:"date"},W4=_("$ZodCheckLessThan",(Y,J)=>{k0.init(Y,J);let X=B7[typeof J.value];Y._zod.onattach.push((Q)=>{let G=Q._zod.bag,$=(J.inclusive?G.maximum:G.exclusiveMaximum)??Number.POSITIVE_INFINITY;if(J.value<$)if(J.inclusive)G.maximum=J.value;else G.exclusiveMaximum=J.value}),Y._zod.check=(Q)=>{if(J.inclusive?Q.value<=J.value:Q.value<J.value)return;Q.issues.push({origin:X,code:"too_big",maximum:J.value,input:Q.value,inclusive:J.inclusive,inst:Y,continue:!J.abort})}}),z4=_("$ZodCheckGreaterThan",(Y,J)=>{k0.init(Y,J);let X=B7[typeof J.value];Y._zod.onattach.push((Q)=>{let G=Q._zod.bag,$=(J.inclusive?G.minimum:G.exclusiveMinimum)??Number.NEGATIVE_INFINITY;if(J.value>$)if(J.inclusive)G.minimum=J.value;else G.exclusiveMinimum=J.value}),Y._zod.check=(Q)=>{if(J.inclusive?Q.value>=J.value:Q.value>J.value)return;Q.issues.push({origin:X,code:"too_small",minimum:J.value,input:Q.value,inclusive:J.inclusive,inst:Y,continue:!J.abort})}}),L7=_("$ZodCheckMultipleOf",(Y,J)=>{k0.init(Y,J),Y._zod.onattach.push((X)=>{var Q;(Q=X._zod.bag).multipleOf??(Q.multipleOf=J.value)}),Y._zod.check=(X)=>{if(typeof X.value!==typeof J.value)throw Error("Cannot mix number and bigint in multiple_of check.");if(typeof X.value==="bigint"?X.value%J.value===BigInt(0):tY(X.value,J.value)===0)return;X.issues.push({origin:typeof X.value,code:"not_multiple_of",divisor:J.value,input:X.value,inst:Y,continue:!J.abort})}}),N7=_("$ZodCheckNumberFormat",(Y,J)=>{k0.init(Y,J),J.format=J.format||"float64";let X=J.format?.includes("int"),Q=X?"int":"number",[G,$]=X4[J.format];Y._zod.onattach.push((W)=>{let K=W._zod.bag;if(K.format=J.format,K.minimum=G,K.maximum=$,X)K.pattern=z7}),Y._zod.check=(W)=>{let K=W.value;if(X){if(!Number.isInteger(K)){W.issues.push({expected:Q,format:J.format,code:"invalid_type",continue:!1,input:K,inst:Y});return}if(!Number.isSafeInteger(K)){if(K>0)W.issues.push({input:K,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:Y,origin:Q,continue:!J.abort});else W.issues.push({input:K,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:Y,origin:Q,continue:!J.abort});return}}if(K<G)W.issues.push({origin:"number",input:K,code:"too_small",minimum:G,inclusive:!0,inst:Y,continue:!J.abort});if(K>$)W.issues.push({origin:"number",input:K,code:"too_big",maximum:$,inst:Y})}});var j7=_("$ZodCheckMaxLength",(Y,J)=>{var X;k0.init(Y,J),(X=Y._zod.def).when??(X.when=(Q)=>{let G=Q.value;return!O1(G)&&G.length!==void 0}),Y._zod.onattach.push((Q)=>{let G=Q._zod.bag.maximum??Number.POSITIVE_INFINITY;if(J.maximum<G)Q._zod.bag.maximum=J.maximum}),Y._zod.check=(Q)=>{let G=Q.value;if(G.length<=J.maximum)return;let W=_1(G);Q.issues.push({origin:W,code:"too_big",maximum:J.maximum,inclusive:!0,input:G,inst:Y,continue:!J.abort})}}),F7=_("$ZodCheckMinLength",(Y,J)=>{var X;k0.init(Y,J),(X=Y._zod.def).when??(X.when=(Q)=>{let G=Q.value;return!O1(G)&&G.length!==void 0}),Y._zod.onattach.push((Q)=>{let G=Q._zod.bag.minimum??Number.NEGATIVE_INFINITY;if(J.minimum>G)Q._zod.bag.minimum=J.minimum}),Y._zod.check=(Q)=>{let G=Q.value;if(G.length>=J.minimum)return;let W=_1(G);Q.issues.push({origin:W,code:"too_small",minimum:J.minimum,inclusive:!0,input:G,inst:Y,continue:!J.abort})}}),O7=_("$ZodCheckLengthEquals",(Y,J)=>{var X;k0.init(Y,J),(X=Y._zod.def).when??(X.when=(Q)=>{let G=Q.value;return!O1(G)&&G.length!==void 0}),Y._zod.onattach.push((Q)=>{let G=Q._zod.bag;G.minimum=J.length,G.maximum=J.length,G.length=J.length}),Y._zod.check=(Q)=>{let G=Q.value,$=G.length;if($===J.length)return;let W=_1(G),K=$>J.length;Q.issues.push({origin:W,...K?{code:"too_big",maximum:J.length}:{code:"too_small",minimum:J.length},inclusive:!0,exact:!0,input:Q.value,inst:Y,continue:!J.abort})}}),M1=_("$ZodCheckStringFormat",(Y,J)=>{var X,Q;if(k0.init(Y,J),Y._zod.onattach.push((G)=>{let $=G._zod.bag;if($.format=J.format,J.pattern)$.patterns??($.patterns=new Set),$.patterns.add(J.pattern)}),J.pattern)(X=Y._zod).check??(X.check=(G)=>{if(J.pattern.lastIndex=0,J.pattern.test(G.value))return;G.issues.push({origin:"string",code:"invalid_format",format:J.format,input:G.value,...J.pattern?{pattern:J.pattern.toString()}:{},inst:Y,continue:!J.abort})});else(Q=Y._zod).check??(Q.check=()=>{})}),D7=_("$ZodCheckRegex",(Y,J)=>{M1.init(Y,J),Y._zod.check=(X)=>{if(J.pattern.lastIndex=0,J.pattern.test(X.value))return;X.issues.push({origin:"string",code:"invalid_format",format:"regex",input:X.value,pattern:J.pattern.toString(),inst:Y,continue:!J.abort})}}),_7=_("$ZodCheckLowerCase",(Y,J)=>{J.pattern??(J.pattern=Z7),M1.init(Y,J)}),P7=_("$ZodCheckUpperCase",(Y,J)=>{J.pattern??(J.pattern=V7),M1.init(Y,J)}),q7=_("$ZodCheckIncludes",(Y,J)=>{k0.init(Y,J);let X=S6(J.includes),Q=new RegExp(typeof J.position==="number"?`^.{${J.position}}${X}`:X);J.pattern=Q,Y._zod.onattach.push((G)=>{let $=G._zod.bag;$.patterns??($.patterns=new Set),$.patterns.add(Q)}),Y._zod.check=(G)=>{if(G.value.includes(J.includes,J.position))return;G.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:J.includes,input:G.value,inst:Y,continue:!J.abort})}}),M7=_("$ZodCheckStartsWith",(Y,J)=>{k0.init(Y,J);let X=new RegExp(`^${S6(J.prefix)}.*`);J.pattern??(J.pattern=X),Y._zod.onattach.push((Q)=>{let G=Q._zod.bag;G.patterns??(G.patterns=new Set),G.patterns.add(X)}),Y._zod.check=(Q)=>{if(Q.value.startsWith(J.prefix))return;Q.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:J.prefix,input:Q.value,inst:Y,continue:!J.abort})}}),E7=_("$ZodCheckEndsWith",(Y,J)=>{k0.init(Y,J);let X=new RegExp(`.*${S6(J.suffix)}$`);J.pattern??(J.pattern=X),Y._zod.onattach.push((Q)=>{let G=Q._zod.bag;G.patterns??(G.patterns=new Set),G.patterns.add(X)}),Y._zod.check=(Q)=>{if(Q.value.endsWith(J.suffix))return;Q.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:J.suffix,input:Q.value,inst:Y,continue:!J.abort})}});var A7=_("$ZodCheckOverwrite",(Y,J)=>{k0.init(Y,J),Y._zod.check=(X)=>{X.value=J.tx(X.value)}});class K4{constructor(Y=[]){if(this.content=[],this.indent=0,this)this.args=Y}indented(Y){this.indent+=1,Y(this),this.indent-=1}write(Y){if(typeof Y==="function"){Y(this,{execution:"sync"}),Y(this,{execution:"async"});return}let X=Y.split(`
|
|
12
|
+
`).filter(($)=>$),Q=Math.min(...X.map(($)=>$.length-$.trimStart().length)),G=X.map(($)=>$.slice(Q)).map(($)=>" ".repeat(this.indent*2)+$);for(let $ of G)this.content.push($)}compile(){let Y=Function,J=this?.args,Q=[...(this?.content??[""]).map((G)=>` ${G}`)];return new Y(...J,Q.join(`
|
|
13
|
+
`))}}var R7={major:4,minor:1,patch:8};var F0=_("$ZodType",(Y,J)=>{var X;Y??(Y={}),Y._zod.def=J,Y._zod.bag=Y._zod.bag||{},Y._zod.version=R7;let Q=[...Y._zod.def.checks??[]];if(Y._zod.traits.has("$ZodCheck"))Q.unshift(Y);for(let G of Q)for(let $ of G._zod.onattach)$(Y);if(Q.length===0)(X=Y._zod).deferred??(X.deferred=[]),Y._zod.deferred?.push(()=>{Y._zod.run=Y._zod.parse});else{let G=(W,K,H)=>{let U=p6(W),V;for(let D of K){if(D._zod.def.when){if(!D._zod.def.when(W))continue}else if(U)continue;let L=W.issues.length,B=D._zod.check(W);if(B instanceof Promise&&H?.async===!1)throw new w6;if(V||B instanceof Promise)V=(V??Promise.resolve()).then(async()=>{if(await B,W.issues.length===L)return;if(!U)U=p6(W,L)});else{if(W.issues.length===L)continue;if(!U)U=p6(W,L)}}if(V)return V.then(()=>{return W});return W},$=(W,K,H)=>{if(p6(W))return W.aborted=!0,W;let U=G(K,Q,H);if(U instanceof Promise){if(H.async===!1)throw new w6;return U.then((V)=>Y._zod.parse(V,H))}return Y._zod.parse(U,H)};Y._zod.run=(W,K)=>{if(K.skipChecks)return Y._zod.parse(W,K);if(K.direction==="backward"){let U=Y._zod.parse({value:W.value,issues:[]},{...K,skipChecks:!0});if(U instanceof Promise)return U.then((V)=>{return $(V,W,K)});return $(U,W,K)}let H=Y._zod.parse(W,K);if(H instanceof Promise){if(K.async===!1)throw new w6;return H.then((U)=>G(U,Q,K))}return G(H,Q,K)}}Y["~standard"]={validate:(G)=>{try{let $=C2(Y,G);return $.success?{value:$.data}:{issues:$.error?.issues}}catch($){return w2(Y,G).then((W)=>W.success?{value:W.data}:{issues:W.error?.issues})}},vendor:"zod",version:1}}),M8=_("$ZodString",(Y,J)=>{F0.init(Y,J),Y._zod.pattern=[...Y?._zod.bag?.patterns??[]].pop()??W7(Y._zod.bag),Y._zod.parse=(X,Q)=>{if(J.coerce)try{X.value=String(X.value)}catch(G){}if(typeof X.value==="string")return X;return X.issues.push({expected:"string",code:"invalid_type",input:X.value,inst:Y}),X}}),O0=_("$ZodStringFormat",(Y,J)=>{M1.init(Y,J),M8.init(Y,J)}),h7=_("$ZodGUID",(Y,J)=>{J.pattern??(J.pattern=d2),O0.init(Y,J)}),y7=_("$ZodUUID",(Y,J)=>{if(J.version){let Q={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[J.version];if(Q===void 0)throw Error(`Invalid UUID version: "${J.version}"`);J.pattern??(J.pattern=G4(Q))}else J.pattern??(J.pattern=G4());O0.init(Y,J)}),g7=_("$ZodEmail",(Y,J)=>{J.pattern??(J.pattern=i2),O0.init(Y,J)}),f7=_("$ZodURL",(Y,J)=>{O0.init(Y,J),Y._zod.check=(X)=>{try{let Q=X.value.trim(),G=new URL(Q);if(J.hostname){if(J.hostname.lastIndex=0,!J.hostname.test(G.hostname))X.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:e2.source,input:X.value,inst:Y,continue:!J.abort})}if(J.protocol){if(J.protocol.lastIndex=0,!J.protocol.test(G.protocol.endsWith(":")?G.protocol.slice(0,-1):G.protocol))X.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:J.protocol.source,input:X.value,inst:Y,continue:!J.abort})}if(J.normalize)X.value=G.href;else X.value=Q;return}catch(Q){X.issues.push({code:"invalid_format",format:"url",input:X.value,inst:Y,continue:!J.abort})}}}),m7=_("$ZodEmoji",(Y,J)=>{J.pattern??(J.pattern=n2()),O0.init(Y,J)}),c7=_("$ZodNanoID",(Y,J)=>{J.pattern??(J.pattern=p2),O0.init(Y,J)}),u7=_("$ZodCUID",(Y,J)=>{J.pattern??(J.pattern=g2),O0.init(Y,J)}),p7=_("$ZodCUID2",(Y,J)=>{J.pattern??(J.pattern=f2),O0.init(Y,J)}),l7=_("$ZodULID",(Y,J)=>{J.pattern??(J.pattern=m2),O0.init(Y,J)}),d7=_("$ZodXID",(Y,J)=>{J.pattern??(J.pattern=c2),O0.init(Y,J)}),i7=_("$ZodKSUID",(Y,J)=>{J.pattern??(J.pattern=u2),O0.init(Y,J)}),n7=_("$ZodISODateTime",(Y,J)=>{J.pattern??(J.pattern=$7(J)),O0.init(Y,J)}),o7=_("$ZodISODate",(Y,J)=>{J.pattern??(J.pattern=X7),O0.init(Y,J)}),r7=_("$ZodISOTime",(Y,J)=>{J.pattern??(J.pattern=G7(J)),O0.init(Y,J)}),s7=_("$ZodISODuration",(Y,J)=>{J.pattern??(J.pattern=l2),O0.init(Y,J)}),a7=_("$ZodIPv4",(Y,J)=>{J.pattern??(J.pattern=o2),O0.init(Y,J),Y._zod.onattach.push((X)=>{let Q=X._zod.bag;Q.format="ipv4"})}),t7=_("$ZodIPv6",(Y,J)=>{J.pattern??(J.pattern=r2),O0.init(Y,J),Y._zod.onattach.push((X)=>{let Q=X._zod.bag;Q.format="ipv6"}),Y._zod.check=(X)=>{try{new URL(`http://[${X.value}]`)}catch{X.issues.push({code:"invalid_format",format:"ipv6",input:X.value,inst:Y,continue:!J.abort})}}}),e7=_("$ZodCIDRv4",(Y,J)=>{J.pattern??(J.pattern=s2),O0.init(Y,J)}),Y5=_("$ZodCIDRv6",(Y,J)=>{J.pattern??(J.pattern=a2),O0.init(Y,J),Y._zod.check=(X)=>{let Q=X.value.split("/");try{if(Q.length!==2)throw Error();let[G,$]=Q;if(!$)throw Error();let W=Number($);if(`${W}`!==$)throw Error();if(W<0||W>128)throw Error();new URL(`http://[${G}]`)}catch{X.issues.push({code:"invalid_format",format:"cidrv6",input:X.value,inst:Y,continue:!J.abort})}}});function J5(Y){if(Y==="")return!0;if(Y.length%4!==0)return!1;try{return atob(Y),!0}catch{return!1}}var X5=_("$ZodBase64",(Y,J)=>{J.pattern??(J.pattern=t2),O0.init(Y,J),Y._zod.onattach.push((X)=>{X._zod.bag.contentEncoding="base64"}),Y._zod.check=(X)=>{if(J5(X.value))return;X.issues.push({code:"invalid_format",format:"base64",input:X.value,inst:Y,continue:!J.abort})}});function kH(Y){if(!$4.test(Y))return!1;let J=Y.replace(/[-_]/g,(Q)=>Q==="-"?"+":"/"),X=J.padEnd(Math.ceil(J.length/4)*4,"=");return J5(X)}var Q5=_("$ZodBase64URL",(Y,J)=>{J.pattern??(J.pattern=$4),O0.init(Y,J),Y._zod.onattach.push((X)=>{X._zod.bag.contentEncoding="base64url"}),Y._zod.check=(X)=>{if(kH(X.value))return;X.issues.push({code:"invalid_format",format:"base64url",input:X.value,inst:Y,continue:!J.abort})}}),G5=_("$ZodE164",(Y,J)=>{J.pattern??(J.pattern=Y7),O0.init(Y,J)});function xH(Y,J=null){try{let X=Y.split(".");if(X.length!==3)return!1;let[Q]=X;if(!Q)return!1;let G=JSON.parse(atob(Q));if("typ"in G&&G?.typ!=="JWT")return!1;if(!G.alg)return!1;if(J&&(!("alg"in G)||G.alg!==J))return!1;return!0}catch{return!1}}var $5=_("$ZodJWT",(Y,J)=>{O0.init(Y,J),Y._zod.check=(X)=>{if(xH(X.value,J.alg))return;X.issues.push({code:"invalid_format",format:"jwt",input:X.value,inst:Y,continue:!J.abort})}});var U4=_("$ZodNumber",(Y,J)=>{F0.init(Y,J),Y._zod.pattern=Y._zod.bag.pattern??K7,Y._zod.parse=(X,Q)=>{if(J.coerce)try{X.value=Number(X.value)}catch(W){}let G=X.value;if(typeof G==="number"&&!Number.isNaN(G)&&Number.isFinite(G))return X;let $=typeof G==="number"?Number.isNaN(G)?"NaN":!Number.isFinite(G)?"Infinity":void 0:void 0;return X.issues.push({expected:"number",code:"invalid_type",input:G,inst:Y,...$?{received:$}:{}}),X}}),W5=_("$ZodNumber",(Y,J)=>{N7.init(Y,J),U4.init(Y,J)}),z5=_("$ZodBoolean",(Y,J)=>{F0.init(Y,J),Y._zod.pattern=H7,Y._zod.parse=(X,Q)=>{if(J.coerce)try{X.value=Boolean(X.value)}catch($){}let G=X.value;if(typeof G==="boolean")return X;return X.issues.push({expected:"boolean",code:"invalid_type",input:G,inst:Y}),X}});var K5=_("$ZodNull",(Y,J)=>{F0.init(Y,J),Y._zod.pattern=U7,Y._zod.values=new Set([null]),Y._zod.parse=(X,Q)=>{let G=X.value;if(G===null)return X;return X.issues.push({expected:"null",code:"invalid_type",input:G,inst:Y}),X}});var H5=_("$ZodUnknown",(Y,J)=>{F0.init(Y,J),Y._zod.parse=(X)=>X}),U5=_("$ZodNever",(Y,J)=>{F0.init(Y,J),Y._zod.parse=(X,Q)=>{return X.issues.push({expected:"never",code:"invalid_type",input:X.value,inst:Y}),X}});function C7(Y,J,X){if(Y.issues.length)J.issues.push(...I6(X,Y.issues));J.value[X]=Y.value}var Z5=_("$ZodArray",(Y,J)=>{F0.init(Y,J),Y._zod.parse=(X,Q)=>{let G=X.value;if(!Array.isArray(G))return X.issues.push({expected:"array",code:"invalid_type",input:G,inst:Y}),X;X.value=Array(G.length);let $=[];for(let W=0;W<G.length;W++){let K=G[W],H=J.element._zod.run({value:K,issues:[]},Q);if(H instanceof Promise)$.push(H.then((U)=>C7(U,X,W)));else C7(H,X,W)}if($.length)return Promise.all($).then(()=>X);return X}});function q8(Y,J,X,Q){if(Y.issues.length)J.issues.push(...I6(X,Y.issues));if(Y.value===void 0){if(X in Q)J.value[X]=void 0}else J.value[X]=Y.value}function V5(Y){let J=Object.keys(Y.shape);for(let Q of J)if(!Y.shape?.[Q]?._zod?.traits?.has("$ZodType"))throw Error(`Invalid element at key "${Q}": expected a Zod schema`);let X=J4(Y.shape);return{...Y,keys:J,keySet:new Set(J),numKeys:J.length,optionalKeys:new Set(X)}}function B5(Y,J,X,Q,G,$){let W=[],K=G.keySet,H=G.catchall._zod,U=H.def.type;for(let V of Object.keys(J)){if(K.has(V))continue;if(U==="never"){W.push(V);continue}let D=H.run({value:J[V],issues:[]},Q);if(D instanceof Promise)Y.push(D.then((L)=>q8(L,X,V,J)));else q8(D,X,V,J)}if(W.length)X.issues.push({code:"unrecognized_keys",keys:W,input:J,inst:$});if(!Y.length)return X;return Promise.all(Y).then(()=>{return X})}var vH=_("$ZodObject",(Y,J)=>{F0.init(Y,J);let X=x9(()=>V5(J));G0(Y._zod,"propValues",()=>{let W=J.shape,K={};for(let H in W){let U=W[H]._zod;if(U.values){K[H]??(K[H]=new Set);for(let V of U.values)K[H].add(V)}}return K});let Q=W9,G=J.catchall,$;Y._zod.parse=(W,K)=>{$??($=X.value);let H=W.value;if(!Q(H))return W.issues.push({expected:"object",code:"invalid_type",input:H,inst:Y}),W;W.value={};let U=[],V=$.shape;for(let D of $.keys){let B=V[D]._zod.run({value:H[D],issues:[]},K);if(B instanceof Promise)U.push(B.then((F)=>q8(F,W,D,H)));else q8(B,W,D,H)}if(!G)return U.length?Promise.all(U).then(()=>W):W;return B5(U,H,W,K,X.value,Y)}}),L5=_("$ZodObjectJIT",(Y,J)=>{vH.init(Y,J);let X=Y._zod.parse,Q=x9(()=>V5(J)),G=(L)=>{let B=new K4(["shape","payload","ctx"]),F=Q.value,P=(x)=>{let j=N8(x);return`shape[${j}]._zod.run({ value: input[${j}], issues: [] }, ctx)`};B.write("const input = payload.value;");let q=Object.create(null),E=0;for(let x of F.keys)q[x]=`key_${E++}`;B.write("const newResult = {};");for(let x of F.keys){let j=q[x],C=N8(x);B.write(`const ${j} = ${P(x)};`),B.write(`
|
|
14
|
+
if (${j}.issues.length) {
|
|
15
|
+
payload.issues = payload.issues.concat(${j}.issues.map(iss => ({
|
|
16
|
+
...iss,
|
|
17
|
+
path: iss.path ? [${C}, ...iss.path] : [${C}]
|
|
18
|
+
})));
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
if (${j}.value === undefined) {
|
|
23
|
+
if (${C} in input) {
|
|
24
|
+
newResult[${C}] = undefined;
|
|
25
|
+
}
|
|
26
|
+
} else {
|
|
27
|
+
newResult[${C}] = ${j}.value;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
`)}B.write("payload.value = newResult;"),B.write("return payload;");let S=B.compile();return(x,j)=>S(L,x,j)},$,W=W9,K=!L8.jitless,U=K&&eY.value,V=J.catchall,D;Y._zod.parse=(L,B)=>{D??(D=Q.value);let F=L.value;if(!W(F))return L.issues.push({expected:"object",code:"invalid_type",input:F,inst:Y}),L;if(K&&U&&B?.async===!1&&B.jitless!==!0){if(!$)$=G(J.shape);if(L=$(L,B),!V)return L;return B5([],F,L,B,D,Y)}return X(L,B)}});function w7(Y,J,X,Q){for(let $ of Y)if($.issues.length===0)return J.value=$.value,J;let G=Y.filter(($)=>!p6($));if(G.length===1)return J.value=G[0].value,G[0];return J.issues.push({code:"invalid_union",input:J.value,inst:X,errors:Y.map(($)=>$.issues.map((W)=>$6(W,Q,j6())))}),J}var Z4=_("$ZodUnion",(Y,J)=>{F0.init(Y,J),G0(Y._zod,"optin",()=>J.options.some((G)=>G._zod.optin==="optional")?"optional":void 0),G0(Y._zod,"optout",()=>J.options.some((G)=>G._zod.optout==="optional")?"optional":void 0),G0(Y._zod,"values",()=>{if(J.options.every((G)=>G._zod.values))return new Set(J.options.flatMap((G)=>Array.from(G._zod.values)));return}),G0(Y._zod,"pattern",()=>{if(J.options.every((G)=>G._zod.pattern)){let G=J.options.map(($)=>$._zod.pattern);return new RegExp(`^(${G.map(($)=>D1($.source)).join("|")})$`)}return});let X=J.options.length===1,Q=J.options[0]._zod.run;Y._zod.parse=(G,$)=>{if(X)return Q(G,$);let W=!1,K=[];for(let H of J.options){let U=H._zod.run({value:G.value,issues:[]},$);if(U instanceof Promise)K.push(U),W=!0;else{if(U.issues.length===0)return U;K.push(U)}}if(!W)return w7(K,G,Y,$);return Promise.all(K).then((H)=>{return w7(H,G,Y,$)})}}),N5=_("$ZodDiscriminatedUnion",(Y,J)=>{Z4.init(Y,J);let X=Y._zod.parse;G0(Y._zod,"propValues",()=>{let G={};for(let $ of J.options){let W=$._zod.propValues;if(!W||Object.keys(W).length===0)throw Error(`Invalid discriminated union option at index "${J.options.indexOf($)}"`);for(let[K,H]of Object.entries(W)){if(!G[K])G[K]=new Set;for(let U of H)G[K].add(U)}}return G});let Q=x9(()=>{let G=J.options,$=new Map;for(let W of G){let K=W._zod.propValues?.[J.discriminator];if(!K||K.size===0)throw Error(`Invalid discriminated union option at index "${J.options.indexOf(W)}"`);for(let H of K){if($.has(H))throw Error(`Duplicate discriminator value "${String(H)}"`);$.set(H,W)}}return $});Y._zod.parse=(G,$)=>{let W=G.value;if(!W9(W))return G.issues.push({code:"invalid_type",expected:"object",input:W,inst:Y}),G;let K=Q.value.get(W?.[J.discriminator]);if(K)return K._zod.run(G,$);if(J.unionFallback)return X(G,$);return G.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:J.discriminator,input:W,path:[J.discriminator],inst:Y}),G}}),j5=_("$ZodIntersection",(Y,J)=>{F0.init(Y,J),Y._zod.parse=(X,Q)=>{let G=X.value,$=J.left._zod.run({value:G,issues:[]},Q),W=J.right._zod.run({value:G,issues:[]},Q);if($ instanceof Promise||W instanceof Promise)return Promise.all([$,W]).then(([H,U])=>{return S7(X,H,U)});return S7(X,$,W)}});function H4(Y,J){if(Y===J)return{valid:!0,data:Y};if(Y instanceof Date&&J instanceof Date&&+Y===+J)return{valid:!0,data:Y};if(u6(Y)&&u6(J)){let X=Object.keys(J),Q=Object.keys(Y).filter(($)=>X.indexOf($)!==-1),G={...Y,...J};for(let $ of Q){let W=H4(Y[$],J[$]);if(!W.valid)return{valid:!1,mergeErrorPath:[$,...W.mergeErrorPath]};G[$]=W.data}return{valid:!0,data:G}}if(Array.isArray(Y)&&Array.isArray(J)){if(Y.length!==J.length)return{valid:!1,mergeErrorPath:[]};let X=[];for(let Q=0;Q<Y.length;Q++){let G=Y[Q],$=J[Q],W=H4(G,$);if(!W.valid)return{valid:!1,mergeErrorPath:[Q,...W.mergeErrorPath]};X.push(W.data)}return{valid:!0,data:X}}return{valid:!1,mergeErrorPath:[]}}function S7(Y,J,X){if(J.issues.length)Y.issues.push(...J.issues);if(X.issues.length)Y.issues.push(...X.issues);if(p6(Y))return Y;let Q=H4(J.value,X.value);if(!Q.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(Q.mergeErrorPath)}`);return Y.value=Q.data,Y}var F5=_("$ZodRecord",(Y,J)=>{F0.init(Y,J),Y._zod.parse=(X,Q)=>{let G=X.value;if(!u6(G))return X.issues.push({expected:"record",code:"invalid_type",input:G,inst:Y}),X;let $=[];if(J.keyType._zod.values){let W=J.keyType._zod.values;X.value={};for(let H of W)if(typeof H==="string"||typeof H==="number"||typeof H==="symbol"){let U=J.valueType._zod.run({value:G[H],issues:[]},Q);if(U instanceof Promise)$.push(U.then((V)=>{if(V.issues.length)X.issues.push(...I6(H,V.issues));X.value[H]=V.value}));else{if(U.issues.length)X.issues.push(...I6(H,U.issues));X.value[H]=U.value}}let K;for(let H in G)if(!W.has(H))K=K??[],K.push(H);if(K&&K.length>0)X.issues.push({code:"unrecognized_keys",input:G,inst:Y,keys:K})}else{X.value={};for(let W of Reflect.ownKeys(G)){if(W==="__proto__")continue;let K=J.keyType._zod.run({value:W,issues:[]},Q);if(K instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(K.issues.length){X.issues.push({code:"invalid_key",origin:"record",issues:K.issues.map((U)=>$6(U,Q,j6())),input:W,path:[W],inst:Y}),X.value[K.value]=K.value;continue}let H=J.valueType._zod.run({value:G[W],issues:[]},Q);if(H instanceof Promise)$.push(H.then((U)=>{if(U.issues.length)X.issues.push(...I6(W,U.issues));X.value[K.value]=U.value}));else{if(H.issues.length)X.issues.push(...I6(W,H.issues));X.value[K.value]=H.value}}}if($.length)return Promise.all($).then(()=>X);return X}});var O5=_("$ZodEnum",(Y,J)=>{F0.init(Y,J);let X=F1(J.entries),Q=new Set(X);Y._zod.values=Q,Y._zod.pattern=new RegExp(`^(${X.filter((G)=>Y4.has(typeof G)).map((G)=>typeof G==="string"?S6(G):G.toString()).join("|")})$`),Y._zod.parse=(G,$)=>{let W=G.value;if(Q.has(W))return G;return G.issues.push({code:"invalid_value",values:X,input:W,inst:Y}),G}}),D5=_("$ZodLiteral",(Y,J)=>{if(F0.init(Y,J),J.values.length===0)throw Error("Cannot create literal schema with no valid values");Y._zod.values=new Set(J.values),Y._zod.pattern=new RegExp(`^(${J.values.map((X)=>typeof X==="string"?S6(X):X?S6(X.toString()):String(X)).join("|")})$`),Y._zod.parse=(X,Q)=>{let G=X.value;if(Y._zod.values.has(G))return X;return X.issues.push({code:"invalid_value",values:J.values,input:G,inst:Y}),X}});var _5=_("$ZodTransform",(Y,J)=>{F0.init(Y,J),Y._zod.parse=(X,Q)=>{if(Q.direction==="backward")throw new N1(Y.constructor.name);let G=J.transform(X.value,X);if(Q.async)return(G instanceof Promise?G:Promise.resolve(G)).then((W)=>{return X.value=W,X});if(G instanceof Promise)throw new w6;return X.value=G,X}});function I7(Y,J){if(Y.issues.length&&J===void 0)return{issues:[],value:void 0};return Y}var P5=_("$ZodOptional",(Y,J)=>{F0.init(Y,J),Y._zod.optin="optional",Y._zod.optout="optional",G0(Y._zod,"values",()=>{return J.innerType._zod.values?new Set([...J.innerType._zod.values,void 0]):void 0}),G0(Y._zod,"pattern",()=>{let X=J.innerType._zod.pattern;return X?new RegExp(`^(${D1(X.source)})?$`):void 0}),Y._zod.parse=(X,Q)=>{if(J.innerType._zod.optin==="optional"){let G=J.innerType._zod.run(X,Q);if(G instanceof Promise)return G.then(($)=>I7($,X.value));return I7(G,X.value)}if(X.value===void 0)return X;return J.innerType._zod.run(X,Q)}}),q5=_("$ZodNullable",(Y,J)=>{F0.init(Y,J),G0(Y._zod,"optin",()=>J.innerType._zod.optin),G0(Y._zod,"optout",()=>J.innerType._zod.optout),G0(Y._zod,"pattern",()=>{let X=J.innerType._zod.pattern;return X?new RegExp(`^(${D1(X.source)}|null)$`):void 0}),G0(Y._zod,"values",()=>{return J.innerType._zod.values?new Set([...J.innerType._zod.values,null]):void 0}),Y._zod.parse=(X,Q)=>{if(X.value===null)return X;return J.innerType._zod.run(X,Q)}}),M5=_("$ZodDefault",(Y,J)=>{F0.init(Y,J),Y._zod.optin="optional",G0(Y._zod,"values",()=>J.innerType._zod.values),Y._zod.parse=(X,Q)=>{if(Q.direction==="backward")return J.innerType._zod.run(X,Q);if(X.value===void 0)return X.value=J.defaultValue,X;let G=J.innerType._zod.run(X,Q);if(G instanceof Promise)return G.then(($)=>b7($,J));return b7(G,J)}});function b7(Y,J){if(Y.value===void 0)Y.value=J.defaultValue;return Y}var E5=_("$ZodPrefault",(Y,J)=>{F0.init(Y,J),Y._zod.optin="optional",G0(Y._zod,"values",()=>J.innerType._zod.values),Y._zod.parse=(X,Q)=>{if(Q.direction==="backward")return J.innerType._zod.run(X,Q);if(X.value===void 0)X.value=J.defaultValue;return J.innerType._zod.run(X,Q)}}),A5=_("$ZodNonOptional",(Y,J)=>{F0.init(Y,J),G0(Y._zod,"values",()=>{let X=J.innerType._zod.values;return X?new Set([...X].filter((Q)=>Q!==void 0)):void 0}),Y._zod.parse=(X,Q)=>{let G=J.innerType._zod.run(X,Q);if(G instanceof Promise)return G.then(($)=>k7($,Y));return k7(G,Y)}});function k7(Y,J){if(!Y.issues.length&&Y.value===void 0)Y.issues.push({code:"invalid_type",expected:"nonoptional",input:Y.value,inst:J});return Y}var T5=_("$ZodCatch",(Y,J)=>{F0.init(Y,J),G0(Y._zod,"optin",()=>J.innerType._zod.optin),G0(Y._zod,"optout",()=>J.innerType._zod.optout),G0(Y._zod,"values",()=>J.innerType._zod.values),Y._zod.parse=(X,Q)=>{if(Q.direction==="backward")return J.innerType._zod.run(X,Q);let G=J.innerType._zod.run(X,Q);if(G instanceof Promise)return G.then(($)=>{if(X.value=$.value,$.issues.length)X.value=J.catchValue({...X,error:{issues:$.issues.map((W)=>$6(W,Q,j6()))},input:X.value}),X.issues=[];return X});if(X.value=G.value,G.issues.length)X.value=J.catchValue({...X,error:{issues:G.issues.map(($)=>$6($,Q,j6()))},input:X.value}),X.issues=[];return X}});var R5=_("$ZodPipe",(Y,J)=>{F0.init(Y,J),G0(Y._zod,"values",()=>J.in._zod.values),G0(Y._zod,"optin",()=>J.in._zod.optin),G0(Y._zod,"optout",()=>J.out._zod.optout),G0(Y._zod,"propValues",()=>J.in._zod.propValues),Y._zod.parse=(X,Q)=>{if(Q.direction==="backward"){let $=J.out._zod.run(X,Q);if($ instanceof Promise)return $.then((W)=>P8(W,J.in,Q));return P8($,J.in,Q)}let G=J.in._zod.run(X,Q);if(G instanceof Promise)return G.then(($)=>P8($,J.out,Q));return P8(G,J.out,Q)}});function P8(Y,J,X){if(Y.issues.length)return Y.aborted=!0,Y;return J._zod.run({value:Y.value,issues:Y.issues},X)}var C5=_("$ZodReadonly",(Y,J)=>{F0.init(Y,J),G0(Y._zod,"propValues",()=>J.innerType._zod.propValues),G0(Y._zod,"values",()=>J.innerType._zod.values),G0(Y._zod,"optin",()=>J.innerType._zod.optin),G0(Y._zod,"optout",()=>J.innerType._zod.optout),Y._zod.parse=(X,Q)=>{if(Q.direction==="backward")return J.innerType._zod.run(X,Q);let G=J.innerType._zod.run(X,Q);if(G instanceof Promise)return G.then(x7);return x7(G)}});function x7(Y){return Y.value=Object.freeze(Y.value),Y}var w5=_("$ZodLazy",(Y,J)=>{F0.init(Y,J),G0(Y._zod,"innerType",()=>J.getter()),G0(Y._zod,"pattern",()=>Y._zod.innerType._zod.pattern),G0(Y._zod,"propValues",()=>Y._zod.innerType._zod.propValues),G0(Y._zod,"optin",()=>Y._zod.innerType._zod.optin??void 0),G0(Y._zod,"optout",()=>Y._zod.innerType._zod.optout??void 0),Y._zod.parse=(X,Q)=>{return Y._zod.innerType._zod.run(X,Q)}}),S5=_("$ZodCustom",(Y,J)=>{k0.init(Y,J),F0.init(Y,J),Y._zod.parse=(X,Q)=>{return X},Y._zod.check=(X)=>{let Q=X.value,G=J.fn(Q);if(G instanceof Promise)return G.then(($)=>v7($,X,Q,Y));v7(G,X,Q,Y);return}});function v7(Y,J,X,Q){if(!Y){let G={code:"custom",input:X,inst:Q,path:[...Q._zod.def.path??[]],continue:!Q._zod.def.abort};if(Q._zod.def.params)G.params=Q._zod.def.params;J.issues.push(v9(G))}}var NO=Symbol("ZodOutput"),jO=Symbol("ZodInput");class E8{constructor(){this._map=new WeakMap,this._idmap=new Map}add(Y,...J){let X=J[0];if(this._map.set(Y,X),X&&typeof X==="object"&&"id"in X){if(this._idmap.has(X.id))throw Error(`ID ${X.id} already exists in the registry`);this._idmap.set(X.id,Y)}return this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(Y){let J=this._map.get(Y);if(J&&typeof J==="object"&&"id"in J)this._idmap.delete(J.id);return this._map.delete(Y),this}get(Y){let J=Y._zod.parent;if(J){let X={...this.get(J)??{}};delete X.id;let Q={...X,...this._map.get(Y)};return Object.keys(Q).length?Q:void 0}return this._map.get(Y)}has(Y){return this._map.has(Y)}}function hH(){return new E8}var z9=hH();function I5(Y,J){return new Y({type:"string",...o(J)})}function b5(Y,J){return new Y({type:"string",format:"email",check:"string_format",abort:!1,...o(J)})}function V4(Y,J){return new Y({type:"string",format:"guid",check:"string_format",abort:!1,...o(J)})}function k5(Y,J){return new Y({type:"string",format:"uuid",check:"string_format",abort:!1,...o(J)})}function x5(Y,J){return new Y({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...o(J)})}function v5(Y,J){return new Y({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...o(J)})}function h5(Y,J){return new Y({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...o(J)})}function y5(Y,J){return new Y({type:"string",format:"url",check:"string_format",abort:!1,...o(J)})}function g5(Y,J){return new Y({type:"string",format:"emoji",check:"string_format",abort:!1,...o(J)})}function f5(Y,J){return new Y({type:"string",format:"nanoid",check:"string_format",abort:!1,...o(J)})}function m5(Y,J){return new Y({type:"string",format:"cuid",check:"string_format",abort:!1,...o(J)})}function c5(Y,J){return new Y({type:"string",format:"cuid2",check:"string_format",abort:!1,...o(J)})}function u5(Y,J){return new Y({type:"string",format:"ulid",check:"string_format",abort:!1,...o(J)})}function p5(Y,J){return new Y({type:"string",format:"xid",check:"string_format",abort:!1,...o(J)})}function l5(Y,J){return new Y({type:"string",format:"ksuid",check:"string_format",abort:!1,...o(J)})}function d5(Y,J){return new Y({type:"string",format:"ipv4",check:"string_format",abort:!1,...o(J)})}function i5(Y,J){return new Y({type:"string",format:"ipv6",check:"string_format",abort:!1,...o(J)})}function n5(Y,J){return new Y({type:"string",format:"cidrv4",check:"string_format",abort:!1,...o(J)})}function o5(Y,J){return new Y({type:"string",format:"cidrv6",check:"string_format",abort:!1,...o(J)})}function r5(Y,J){return new Y({type:"string",format:"base64",check:"string_format",abort:!1,...o(J)})}function s5(Y,J){return new Y({type:"string",format:"base64url",check:"string_format",abort:!1,...o(J)})}function a5(Y,J){return new Y({type:"string",format:"e164",check:"string_format",abort:!1,...o(J)})}function t5(Y,J){return new Y({type:"string",format:"jwt",check:"string_format",abort:!1,...o(J)})}function e5(Y,J){return new Y({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...o(J)})}function YQ(Y,J){return new Y({type:"string",format:"date",check:"string_format",...o(J)})}function JQ(Y,J){return new Y({type:"string",format:"time",check:"string_format",precision:null,...o(J)})}function XQ(Y,J){return new Y({type:"string",format:"duration",check:"string_format",...o(J)})}function QQ(Y,J){return new Y({type:"number",checks:[],...o(J)})}function GQ(Y,J){return new Y({type:"number",check:"number_format",abort:!1,format:"safeint",...o(J)})}function $Q(Y,J){return new Y({type:"boolean",...o(J)})}function WQ(Y,J){return new Y({type:"null",...o(J)})}function zQ(Y){return new Y({type:"unknown"})}function KQ(Y,J){return new Y({type:"never",...o(J)})}function A8(Y,J){return new W4({check:"less_than",...o(J),value:Y,inclusive:!1})}function E1(Y,J){return new W4({check:"less_than",...o(J),value:Y,inclusive:!0})}function T8(Y,J){return new z4({check:"greater_than",...o(J),value:Y,inclusive:!1})}function A1(Y,J){return new z4({check:"greater_than",...o(J),value:Y,inclusive:!0})}function R8(Y,J){return new L7({check:"multiple_of",...o(J),value:Y})}function C8(Y,J){return new j7({check:"max_length",...o(J),maximum:Y})}function h9(Y,J){return new F7({check:"min_length",...o(J),minimum:Y})}function w8(Y,J){return new O7({check:"length_equals",...o(J),length:Y})}function B4(Y,J){return new D7({check:"string_format",format:"regex",...o(J),pattern:Y})}function L4(Y){return new _7({check:"string_format",format:"lowercase",...o(Y)})}function N4(Y){return new P7({check:"string_format",format:"uppercase",...o(Y)})}function j4(Y,J){return new q7({check:"string_format",format:"includes",...o(J),includes:Y})}function F4(Y,J){return new M7({check:"string_format",format:"starts_with",...o(J),prefix:Y})}function O4(Y,J){return new E7({check:"string_format",format:"ends_with",...o(J),suffix:Y})}function K9(Y){return new A7({check:"overwrite",tx:Y})}function D4(Y){return K9((J)=>J.normalize(Y))}function _4(){return K9((Y)=>Y.trim())}function P4(){return K9((Y)=>Y.toLowerCase())}function q4(){return K9((Y)=>Y.toUpperCase())}function HQ(Y,J,X){return new Y({type:"array",element:J,...o(X)})}function UQ(Y,J,X){let Q=o(X);return Q.abort??(Q.abort=!0),new Y({type:"custom",check:"custom",fn:J,...Q})}function ZQ(Y,J,X){return new Y({type:"custom",check:"custom",fn:J,...o(X)})}function VQ(Y){let J=yH((X)=>{return X.addIssue=(Q)=>{if(typeof Q==="string")X.issues.push(v9(Q,X.value,J._zod.def));else{let G=Q;if(G.fatal)G.continue=!1;G.code??(G.code="custom"),G.input??(G.input=X.value),G.inst??(G.inst=J),G.continue??(G.continue=!J._zod.def.abort),X.issues.push(v9(G))}},Y(X.value,X)});return J}function yH(Y,J){let X=new k0({check:"custom",...o(J)});return X._zod.check=Y,X}class M4{constructor(Y){this.counter=0,this.metadataRegistry=Y?.metadata??z9,this.target=Y?.target??"draft-2020-12",this.unrepresentable=Y?.unrepresentable??"throw",this.override=Y?.override??(()=>{}),this.io=Y?.io??"output",this.seen=new Map}process(Y,J={path:[],schemaPath:[]}){var X;let Q=Y._zod.def,G={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},$=this.seen.get(Y);if($){if($.count++,J.schemaPath.includes(Y))$.cycle=J.path;return $.schema}let W={schema:{},count:1,cycle:void 0,path:J.path};this.seen.set(Y,W);let K=Y._zod.toJSONSchema?.();if(K)W.schema=K;else{let V={...J,schemaPath:[...J.schemaPath,Y],path:J.path},D=Y._zod.parent;if(D)W.ref=D,this.process(D,V),this.seen.get(D).isParent=!0;else{let L=W.schema;switch(Q.type){case"string":{let B=L;B.type="string";let{minimum:F,maximum:P,format:q,patterns:E,contentEncoding:S}=Y._zod.bag;if(typeof F==="number")B.minLength=F;if(typeof P==="number")B.maxLength=P;if(q){if(B.format=G[q]??q,B.format==="")delete B.format}if(S)B.contentEncoding=S;if(E&&E.size>0){let x=[...E];if(x.length===1)B.pattern=x[0].source;else if(x.length>1)W.schema.allOf=[...x.map((j)=>({...this.target==="draft-7"||this.target==="draft-4"||this.target==="openapi-3.0"?{type:"string"}:{},pattern:j.source}))]}break}case"number":{let B=L,{minimum:F,maximum:P,format:q,multipleOf:E,exclusiveMaximum:S,exclusiveMinimum:x}=Y._zod.bag;if(typeof q==="string"&&q.includes("int"))B.type="integer";else B.type="number";if(typeof x==="number")if(this.target==="draft-4"||this.target==="openapi-3.0")B.minimum=x,B.exclusiveMinimum=!0;else B.exclusiveMinimum=x;if(typeof F==="number"){if(B.minimum=F,typeof x==="number"&&this.target!=="draft-4")if(x>=F)delete B.minimum;else delete B.exclusiveMinimum}if(typeof S==="number")if(this.target==="draft-4"||this.target==="openapi-3.0")B.maximum=S,B.exclusiveMaximum=!0;else B.exclusiveMaximum=S;if(typeof P==="number"){if(B.maximum=P,typeof S==="number"&&this.target!=="draft-4")if(S<=P)delete B.maximum;else delete B.exclusiveMaximum}if(typeof E==="number")B.multipleOf=E;break}case"boolean":{let B=L;B.type="boolean";break}case"bigint":{if(this.unrepresentable==="throw")throw Error("BigInt cannot be represented in JSON Schema");break}case"symbol":{if(this.unrepresentable==="throw")throw Error("Symbols cannot be represented in JSON Schema");break}case"null":{if(this.target==="openapi-3.0")L.type="string",L.nullable=!0,L.enum=[null];else L.type="null";break}case"any":break;case"unknown":break;case"undefined":{if(this.unrepresentable==="throw")throw Error("Undefined cannot be represented in JSON Schema");break}case"void":{if(this.unrepresentable==="throw")throw Error("Void cannot be represented in JSON Schema");break}case"never":{L.not={};break}case"date":{if(this.unrepresentable==="throw")throw Error("Date cannot be represented in JSON Schema");break}case"array":{let B=L,{minimum:F,maximum:P}=Y._zod.bag;if(typeof F==="number")B.minItems=F;if(typeof P==="number")B.maxItems=P;B.type="array",B.items=this.process(Q.element,{...V,path:[...V.path,"items"]});break}case"object":{let B=L;B.type="object",B.properties={};let F=Q.shape;for(let E in F)B.properties[E]=this.process(F[E],{...V,path:[...V.path,"properties",E]});let P=new Set(Object.keys(F)),q=new Set([...P].filter((E)=>{let S=Q.shape[E]._zod;if(this.io==="input")return S.optin===void 0;else return S.optout===void 0}));if(q.size>0)B.required=Array.from(q);if(Q.catchall?._zod.def.type==="never")B.additionalProperties=!1;else if(!Q.catchall){if(this.io==="output")B.additionalProperties=!1}else if(Q.catchall)B.additionalProperties=this.process(Q.catchall,{...V,path:[...V.path,"additionalProperties"]});break}case"union":{let B=L,F=Q.options.map((P,q)=>this.process(P,{...V,path:[...V.path,"anyOf",q]}));B.anyOf=F;break}case"intersection":{let B=L,F=this.process(Q.left,{...V,path:[...V.path,"allOf",0]}),P=this.process(Q.right,{...V,path:[...V.path,"allOf",1]}),q=(S)=>("allOf"in S)&&Object.keys(S).length===1,E=[...q(F)?F.allOf:[F],...q(P)?P.allOf:[P]];B.allOf=E;break}case"tuple":{let B=L;B.type="array";let F=this.target==="draft-2020-12"?"prefixItems":"items",P=this.target==="draft-2020-12"?"items":this.target==="openapi-3.0"?"items":"additionalItems",q=Q.items.map((j,C)=>this.process(j,{...V,path:[...V.path,F,C]})),E=Q.rest?this.process(Q.rest,{...V,path:[...V.path,P,...this.target==="openapi-3.0"?[Q.items.length]:[]]}):null;if(this.target==="draft-2020-12"){if(B.prefixItems=q,E)B.items=E}else if(this.target==="openapi-3.0"){if(B.items={anyOf:q},E)B.items.anyOf.push(E);if(B.minItems=q.length,!E)B.maxItems=q.length}else if(B.items=q,E)B.additionalItems=E;let{minimum:S,maximum:x}=Y._zod.bag;if(typeof S==="number")B.minItems=S;if(typeof x==="number")B.maxItems=x;break}case"record":{let B=L;if(B.type="object",this.target==="draft-7"||this.target==="draft-2020-12")B.propertyNames=this.process(Q.keyType,{...V,path:[...V.path,"propertyNames"]});B.additionalProperties=this.process(Q.valueType,{...V,path:[...V.path,"additionalProperties"]});break}case"map":{if(this.unrepresentable==="throw")throw Error("Map cannot be represented in JSON Schema");break}case"set":{if(this.unrepresentable==="throw")throw Error("Set cannot be represented in JSON Schema");break}case"enum":{let B=L,F=F1(Q.entries);if(F.every((P)=>typeof P==="number"))B.type="number";if(F.every((P)=>typeof P==="string"))B.type="string";B.enum=F;break}case"literal":{let B=L,F=[];for(let P of Q.values)if(P===void 0){if(this.unrepresentable==="throw")throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof P==="bigint")if(this.unrepresentable==="throw")throw Error("BigInt literals cannot be represented in JSON Schema");else F.push(Number(P));else F.push(P);if(F.length===0);else if(F.length===1){let P=F[0];if(B.type=P===null?"null":typeof P,this.target==="draft-4"||this.target==="openapi-3.0")B.enum=[P];else B.const=P}else{if(F.every((P)=>typeof P==="number"))B.type="number";if(F.every((P)=>typeof P==="string"))B.type="string";if(F.every((P)=>typeof P==="boolean"))B.type="string";if(F.every((P)=>P===null))B.type="null";B.enum=F}break}case"file":{let B=L,F={type:"string",format:"binary",contentEncoding:"binary"},{minimum:P,maximum:q,mime:E}=Y._zod.bag;if(P!==void 0)F.minLength=P;if(q!==void 0)F.maxLength=q;if(E)if(E.length===1)F.contentMediaType=E[0],Object.assign(B,F);else B.anyOf=E.map((S)=>{return{...F,contentMediaType:S}});else Object.assign(B,F);break}case"transform":{if(this.unrepresentable==="throw")throw Error("Transforms cannot be represented in JSON Schema");break}case"nullable":{let B=this.process(Q.innerType,V);if(this.target==="openapi-3.0")W.ref=Q.innerType,L.nullable=!0;else L.anyOf=[B,{type:"null"}];break}case"nonoptional":{this.process(Q.innerType,V),W.ref=Q.innerType;break}case"success":{let B=L;B.type="boolean";break}case"default":{this.process(Q.innerType,V),W.ref=Q.innerType,L.default=JSON.parse(JSON.stringify(Q.defaultValue));break}case"prefault":{if(this.process(Q.innerType,V),W.ref=Q.innerType,this.io==="input")L._prefault=JSON.parse(JSON.stringify(Q.defaultValue));break}case"catch":{this.process(Q.innerType,V),W.ref=Q.innerType;let B;try{B=Q.catchValue(void 0)}catch{throw Error("Dynamic catch values are not supported in JSON Schema")}L.default=B;break}case"nan":{if(this.unrepresentable==="throw")throw Error("NaN cannot be represented in JSON Schema");break}case"template_literal":{let B=L,F=Y._zod.pattern;if(!F)throw Error("Pattern not found in template literal");B.type="string",B.pattern=F.source;break}case"pipe":{let B=this.io==="input"?Q.in._zod.def.type==="transform"?Q.out:Q.in:Q.out;this.process(B,V),W.ref=B;break}case"readonly":{this.process(Q.innerType,V),W.ref=Q.innerType,L.readOnly=!0;break}case"promise":{this.process(Q.innerType,V),W.ref=Q.innerType;break}case"optional":{this.process(Q.innerType,V),W.ref=Q.innerType;break}case"lazy":{let B=Y._zod.innerType;this.process(B,V),W.ref=B;break}case"custom":{if(this.unrepresentable==="throw")throw Error("Custom types cannot be represented in JSON Schema");break}case"function":{if(this.unrepresentable==="throw")throw Error("Function types cannot be represented in JSON Schema");break}default:}}}let H=this.metadataRegistry.get(Y);if(H)Object.assign(W.schema,H);if(this.io==="input"&&C0(Y))delete W.schema.examples,delete W.schema.default;if(this.io==="input"&&W.schema._prefault)(X=W.schema).default??(X.default=W.schema._prefault);return delete W.schema._prefault,this.seen.get(Y).schema}emit(Y,J){let X={cycles:J?.cycles??"ref",reused:J?.reused??"inline",external:J?.external??void 0},Q=this.seen.get(Y);if(!Q)throw Error("Unprocessed schema. This is a bug in Zod.");let G=(U)=>{let V=this.target==="draft-2020-12"?"$defs":"definitions";if(X.external){let F=X.external.registry.get(U[0])?.id,P=X.external.uri??((E)=>E);if(F)return{ref:P(F)};let q=U[1].defId??U[1].schema.id??`schema${this.counter++}`;return U[1].defId=q,{defId:q,ref:`${P("__shared")}#/${V}/${q}`}}if(U[1]===Q)return{ref:"#"};let L=`${"#"}/${V}/`,B=U[1].schema.id??`__schema${this.counter++}`;return{defId:B,ref:L+B}},$=(U)=>{if(U[1].schema.$ref)return;let V=U[1],{ref:D,defId:L}=G(U);if(V.def={...V.schema},L)V.defId=L;let B=V.schema;for(let F in B)delete B[F];B.$ref=D};if(X.cycles==="throw")for(let U of this.seen.entries()){let V=U[1];if(V.cycle)throw Error(`Cycle detected: #/${V.cycle?.join("/")}/<root>
|
|
31
|
+
|
|
32
|
+
Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let U of this.seen.entries()){let V=U[1];if(Y===U[0]){$(U);continue}if(X.external){let L=X.external.registry.get(U[0])?.id;if(Y!==U[0]&&L){$(U);continue}}if(this.metadataRegistry.get(U[0])?.id){$(U);continue}if(V.cycle){$(U);continue}if(V.count>1){if(X.reused==="ref"){$(U);continue}}}let W=(U,V)=>{let D=this.seen.get(U),L=D.def??D.schema,B={...L};if(D.ref===null)return;let F=D.ref;if(D.ref=null,F){W(F,V);let P=this.seen.get(F).schema;if(P.$ref&&(V.target==="draft-7"||V.target==="draft-4"||V.target==="openapi-3.0"))L.allOf=L.allOf??[],L.allOf.push(P);else Object.assign(L,P),Object.assign(L,B)}if(!D.isParent)this.override({zodSchema:U,jsonSchema:L,path:D.path??[]})};for(let U of[...this.seen.entries()].reverse())W(U[0],{target:this.target});let K={};if(this.target==="draft-2020-12")K.$schema="https://json-schema.org/draft/2020-12/schema";else if(this.target==="draft-7")K.$schema="http://json-schema.org/draft-07/schema#";else if(this.target==="draft-4")K.$schema="http://json-schema.org/draft-04/schema#";else if(this.target==="openapi-3.0");else console.warn(`Invalid target: ${this.target}`);if(X.external?.uri){let U=X.external.registry.get(Y)?.id;if(!U)throw Error("Schema is missing an `id` property");K.$id=X.external.uri(U)}Object.assign(K,Q.def);let H=X.external?.defs??{};for(let U of this.seen.entries()){let V=U[1];if(V.def&&V.defId)H[V.defId]=V.def}if(X.external);else if(Object.keys(H).length>0)if(this.target==="draft-2020-12")K.$defs=H;else K.definitions=H;try{return JSON.parse(JSON.stringify(K))}catch(U){throw Error("Error converting schema to JSON.")}}}function BQ(Y,J){if(Y instanceof E8){let Q=new M4(J),G={};for(let K of Y._idmap.entries()){let[H,U]=K;Q.process(U)}let $={},W={registry:Y,uri:J?.uri,defs:G};for(let K of Y._idmap.entries()){let[H,U]=K;$[H]=Q.emit(U,{...J,external:W})}if(Object.keys(G).length>0){let K=Q.target==="draft-2020-12"?"$defs":"definitions";$.__shared={[K]:G}}return{schemas:$}}let X=new M4(J);return X.process(Y),X.emit(Y,J)}function C0(Y,J){let X=J??{seen:new Set};if(X.seen.has(Y))return!1;X.seen.add(Y);let G=Y._zod.def;switch(G.type){case"string":case"number":case"bigint":case"boolean":case"date":case"symbol":case"undefined":case"null":case"any":case"unknown":case"never":case"void":case"literal":case"enum":case"nan":case"file":case"template_literal":return!1;case"array":return C0(G.element,X);case"object":{for(let $ in G.shape)if(C0(G.shape[$],X))return!0;return!1}case"union":{for(let $ of G.options)if(C0($,X))return!0;return!1}case"intersection":return C0(G.left,X)||C0(G.right,X);case"tuple":{for(let $ of G.items)if(C0($,X))return!0;if(G.rest&&C0(G.rest,X))return!0;return!1}case"record":return C0(G.keyType,X)||C0(G.valueType,X);case"map":return C0(G.keyType,X)||C0(G.valueType,X);case"set":return C0(G.valueType,X);case"promise":case"optional":case"nonoptional":case"nullable":case"readonly":return C0(G.innerType,X);case"lazy":return C0(G.getter(),X);case"default":return C0(G.innerType,X);case"prefault":return C0(G.innerType,X);case"custom":return!1;case"transform":return!0;case"pipe":return C0(G.in,X)||C0(G.out,X);case"success":return!1;case"catch":return!1;case"function":return!1;default:}throw Error(`Unknown schema type: ${G.type}`)}var pH=_("ZodISODateTime",(Y,J)=>{n7.init(Y,J),D0.init(Y,J)});function LQ(Y){return e5(pH,Y)}var lH=_("ZodISODate",(Y,J)=>{o7.init(Y,J),D0.init(Y,J)});function NQ(Y){return YQ(lH,Y)}var dH=_("ZodISOTime",(Y,J)=>{r7.init(Y,J),D0.init(Y,J)});function jQ(Y){return JQ(dH,Y)}var iH=_("ZodISODuration",(Y,J)=>{s7.init(Y,J),D0.init(Y,J)});function FQ(Y){return XQ(iH,Y)}var OQ=(Y,J)=>{F8.init(Y,J),Y.name="ZodError",Object.defineProperties(Y,{format:{value:(X)=>R2(Y,X)},flatten:{value:(X)=>T2(Y,X)},addIssue:{value:(X)=>{Y.issues.push(X),Y.message=JSON.stringify(Y.issues,k9,2)}},addIssues:{value:(X)=>{Y.issues.push(...X),Y.message=JSON.stringify(Y.issues,k9,2)}},isEmpty:{get(){return Y.issues.length===0}}})},iO=_("ZodError",OQ),r0=_("ZodError",OQ,{Parent:Error});var DQ=O8(r0),_Q=D8(r0),PQ=P1(r0),I8=q1(r0),qQ=S2(r0),MQ=I2(r0),EQ=b2(r0),AQ=k2(r0),TQ=x2(r0),RQ=v2(r0),CQ=h2(r0),wQ=y2(r0);var _0=_("ZodType",(Y,J)=>{return F0.init(Y,J),Y.def=J,Y.type=J.type,Object.defineProperty(Y,"_def",{value:J}),Y.check=(...X)=>{return Y.clone({...J,checks:[...J.checks??[],...X.map((Q)=>typeof Q==="function"?{_zod:{check:Q,def:{check:"custom"},onattach:[]}}:Q)]})},Y.clone=(X,Q)=>G6(Y,X,Q),Y.brand=()=>Y,Y.register=(X,Q)=>{return X.add(Y,Q),Y},Y.parse=(X,Q)=>DQ(Y,X,Q,{callee:Y.parse}),Y.safeParse=(X,Q)=>PQ(Y,X,Q),Y.parseAsync=async(X,Q)=>_Q(Y,X,Q,{callee:Y.parseAsync}),Y.safeParseAsync=async(X,Q)=>I8(Y,X,Q),Y.spa=Y.safeParseAsync,Y.encode=(X,Q)=>qQ(Y,X,Q),Y.decode=(X,Q)=>MQ(Y,X,Q),Y.encodeAsync=async(X,Q)=>EQ(Y,X,Q),Y.decodeAsync=async(X,Q)=>AQ(Y,X,Q),Y.safeEncode=(X,Q)=>TQ(Y,X,Q),Y.safeDecode=(X,Q)=>RQ(Y,X,Q),Y.safeEncodeAsync=async(X,Q)=>CQ(Y,X,Q),Y.safeDecodeAsync=async(X,Q)=>wQ(Y,X,Q),Y.refine=(X,Q)=>Y.check(fU(X,Q)),Y.superRefine=(X)=>Y.check(mU(X)),Y.overwrite=(X)=>Y.check(K9(X)),Y.optional=()=>bQ(Y),Y.nullable=()=>kQ(Y),Y.nullish=()=>bQ(kQ(Y)),Y.nonoptional=(X)=>bU(Y,X),Y.array=()=>T4(Y),Y.or=(X)=>R4([Y,X]),Y.and=(X)=>qU(Y,X),Y.transform=(X)=>xQ(Y,TU(X)),Y.default=(X)=>wU(Y,X),Y.prefault=(X)=>IU(Y,X),Y.catch=(X)=>xU(Y,X),Y.pipe=(X)=>xQ(Y,X),Y.readonly=()=>yU(Y),Y.describe=(X)=>{let Q=Y.clone();return z9.add(Q,{description:X}),Q},Object.defineProperty(Y,"description",{get(){return z9.get(Y)?.description},configurable:!0}),Y.meta=(...X)=>{if(X.length===0)return z9.get(Y);let Q=Y.clone();return z9.add(Q,X[0]),Q},Y.isOptional=()=>Y.safeParse(void 0).success,Y.isNullable=()=>Y.safeParse(null).success,Y}),vQ=_("_ZodString",(Y,J)=>{M8.init(Y,J),_0.init(Y,J);let X=Y._zod.bag;Y.format=X.format??null,Y.minLength=X.minimum??null,Y.maxLength=X.maximum??null,Y.regex=(...Q)=>Y.check(B4(...Q)),Y.includes=(...Q)=>Y.check(j4(...Q)),Y.startsWith=(...Q)=>Y.check(F4(...Q)),Y.endsWith=(...Q)=>Y.check(O4(...Q)),Y.min=(...Q)=>Y.check(h9(...Q)),Y.max=(...Q)=>Y.check(C8(...Q)),Y.length=(...Q)=>Y.check(w8(...Q)),Y.nonempty=(...Q)=>Y.check(h9(1,...Q)),Y.lowercase=(Q)=>Y.check(L4(Q)),Y.uppercase=(Q)=>Y.check(N4(Q)),Y.trim=()=>Y.check(_4()),Y.normalize=(...Q)=>Y.check(D4(...Q)),Y.toLowerCase=()=>Y.check(P4()),Y.toUpperCase=()=>Y.check(q4())}),sH=_("ZodString",(Y,J)=>{M8.init(Y,J),vQ.init(Y,J),Y.email=(X)=>Y.check(b5(aH,X)),Y.url=(X)=>Y.check(y5(tH,X)),Y.jwt=(X)=>Y.check(t5(BU,X)),Y.emoji=(X)=>Y.check(g5(eH,X)),Y.guid=(X)=>Y.check(V4(SQ,X)),Y.uuid=(X)=>Y.check(k5(b8,X)),Y.uuidv4=(X)=>Y.check(x5(b8,X)),Y.uuidv6=(X)=>Y.check(v5(b8,X)),Y.uuidv7=(X)=>Y.check(h5(b8,X)),Y.nanoid=(X)=>Y.check(f5(YU,X)),Y.guid=(X)=>Y.check(V4(SQ,X)),Y.cuid=(X)=>Y.check(m5(JU,X)),Y.cuid2=(X)=>Y.check(c5(XU,X)),Y.ulid=(X)=>Y.check(u5(QU,X)),Y.base64=(X)=>Y.check(r5(UU,X)),Y.base64url=(X)=>Y.check(s5(ZU,X)),Y.xid=(X)=>Y.check(p5(GU,X)),Y.ksuid=(X)=>Y.check(l5($U,X)),Y.ipv4=(X)=>Y.check(d5(WU,X)),Y.ipv6=(X)=>Y.check(i5(zU,X)),Y.cidrv4=(X)=>Y.check(n5(KU,X)),Y.cidrv6=(X)=>Y.check(o5(HU,X)),Y.e164=(X)=>Y.check(a5(VU,X)),Y.datetime=(X)=>Y.check(LQ(X)),Y.date=(X)=>Y.check(NQ(X)),Y.time=(X)=>Y.check(jQ(X)),Y.duration=(X)=>Y.check(FQ(X))});function hQ(Y){return I5(sH,Y)}var D0=_("ZodStringFormat",(Y,J)=>{O0.init(Y,J),vQ.init(Y,J)}),aH=_("ZodEmail",(Y,J)=>{g7.init(Y,J),D0.init(Y,J)});var SQ=_("ZodGUID",(Y,J)=>{h7.init(Y,J),D0.init(Y,J)});var b8=_("ZodUUID",(Y,J)=>{y7.init(Y,J),D0.init(Y,J)});var tH=_("ZodURL",(Y,J)=>{f7.init(Y,J),D0.init(Y,J)});var eH=_("ZodEmoji",(Y,J)=>{m7.init(Y,J),D0.init(Y,J)});var YU=_("ZodNanoID",(Y,J)=>{c7.init(Y,J),D0.init(Y,J)});var JU=_("ZodCUID",(Y,J)=>{u7.init(Y,J),D0.init(Y,J)});var XU=_("ZodCUID2",(Y,J)=>{p7.init(Y,J),D0.init(Y,J)});var QU=_("ZodULID",(Y,J)=>{l7.init(Y,J),D0.init(Y,J)});var GU=_("ZodXID",(Y,J)=>{d7.init(Y,J),D0.init(Y,J)});var $U=_("ZodKSUID",(Y,J)=>{i7.init(Y,J),D0.init(Y,J)});var WU=_("ZodIPv4",(Y,J)=>{a7.init(Y,J),D0.init(Y,J)});var zU=_("ZodIPv6",(Y,J)=>{t7.init(Y,J),D0.init(Y,J)});var KU=_("ZodCIDRv4",(Y,J)=>{e7.init(Y,J),D0.init(Y,J)});var HU=_("ZodCIDRv6",(Y,J)=>{Y5.init(Y,J),D0.init(Y,J)});var UU=_("ZodBase64",(Y,J)=>{X5.init(Y,J),D0.init(Y,J)});var ZU=_("ZodBase64URL",(Y,J)=>{Q5.init(Y,J),D0.init(Y,J)});var VU=_("ZodE164",(Y,J)=>{G5.init(Y,J),D0.init(Y,J)});var BU=_("ZodJWT",(Y,J)=>{$5.init(Y,J),D0.init(Y,J)});var yQ=_("ZodNumber",(Y,J)=>{U4.init(Y,J),_0.init(Y,J),Y.gt=(Q,G)=>Y.check(T8(Q,G)),Y.gte=(Q,G)=>Y.check(A1(Q,G)),Y.min=(Q,G)=>Y.check(A1(Q,G)),Y.lt=(Q,G)=>Y.check(A8(Q,G)),Y.lte=(Q,G)=>Y.check(E1(Q,G)),Y.max=(Q,G)=>Y.check(E1(Q,G)),Y.int=(Q)=>Y.check(IQ(Q)),Y.safe=(Q)=>Y.check(IQ(Q)),Y.positive=(Q)=>Y.check(T8(0,Q)),Y.nonnegative=(Q)=>Y.check(A1(0,Q)),Y.negative=(Q)=>Y.check(A8(0,Q)),Y.nonpositive=(Q)=>Y.check(E1(0,Q)),Y.multipleOf=(Q,G)=>Y.check(R8(Q,G)),Y.step=(Q,G)=>Y.check(R8(Q,G)),Y.finite=()=>Y;let X=Y._zod.bag;Y.minValue=Math.max(X.minimum??Number.NEGATIVE_INFINITY,X.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,Y.maxValue=Math.min(X.maximum??Number.POSITIVE_INFINITY,X.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,Y.isInt=(X.format??"").includes("int")||Number.isSafeInteger(X.multipleOf??0.5),Y.isFinite=!0,Y.format=X.format??null});function gQ(Y){return QQ(yQ,Y)}var LU=_("ZodNumberFormat",(Y,J)=>{W5.init(Y,J),yQ.init(Y,J)});function IQ(Y){return GQ(LU,Y)}var NU=_("ZodBoolean",(Y,J)=>{z5.init(Y,J),_0.init(Y,J)});function fQ(Y){return $Q(NU,Y)}var jU=_("ZodNull",(Y,J)=>{K5.init(Y,J),_0.init(Y,J)});function mQ(Y){return WQ(jU,Y)}var FU=_("ZodUnknown",(Y,J)=>{H5.init(Y,J),_0.init(Y,J)});function T1(){return zQ(FU)}var OU=_("ZodNever",(Y,J)=>{U5.init(Y,J),_0.init(Y,J)});function A4(Y){return KQ(OU,Y)}var DU=_("ZodArray",(Y,J)=>{Z5.init(Y,J),_0.init(Y,J),Y.element=J.element,Y.min=(X,Q)=>Y.check(h9(X,Q)),Y.nonempty=(X)=>Y.check(h9(1,X)),Y.max=(X,Q)=>Y.check(C8(X,Q)),Y.length=(X,Q)=>Y.check(w8(X,Q)),Y.unwrap=()=>Y.element});function T4(Y,J){return HQ(DU,Y,J)}var cQ=_("ZodObject",(Y,J)=>{L5.init(Y,J),_0.init(Y,J),Q0.defineLazy(Y,"shape",()=>J.shape),Y.keyof=()=>C4(Object.keys(Y._zod.def.shape)),Y.catchall=(X)=>Y.clone({...Y._zod.def,catchall:X}),Y.passthrough=()=>Y.clone({...Y._zod.def,catchall:T1()}),Y.loose=()=>Y.clone({...Y._zod.def,catchall:T1()}),Y.strict=()=>Y.clone({...Y._zod.def,catchall:A4()}),Y.strip=()=>Y.clone({...Y._zod.def,catchall:void 0}),Y.extend=(X)=>{return Q0.extend(Y,X)},Y.safeExtend=(X)=>{return Q0.safeExtend(Y,X)},Y.merge=(X)=>Q0.merge(Y,X),Y.pick=(X)=>Q0.pick(Y,X),Y.omit=(X)=>Q0.omit(Y,X),Y.partial=(...X)=>Q0.partial(oQ,Y,X[0]),Y.required=(...X)=>Q0.required(rQ,Y,X[0])});function uQ(Y,J){let X={type:"object",get shape(){return Q0.assignProp(this,"shape",Y?Q0.objectClone(Y):{}),this.shape},...Q0.normalizeParams(J)};return new cQ(X)}function pQ(Y,J){return new cQ({type:"object",get shape(){return Q0.assignProp(this,"shape",Q0.objectClone(Y)),this.shape},catchall:T1(),...Q0.normalizeParams(J)})}var lQ=_("ZodUnion",(Y,J)=>{Z4.init(Y,J),_0.init(Y,J),Y.options=J.options});function R4(Y,J){return new lQ({type:"union",options:Y,...Q0.normalizeParams(J)})}var _U=_("ZodDiscriminatedUnion",(Y,J)=>{lQ.init(Y,J),N5.init(Y,J)});function dQ(Y,J,X){return new _U({type:"union",options:J,discriminator:Y,...Q0.normalizeParams(X)})}var PU=_("ZodIntersection",(Y,J)=>{j5.init(Y,J),_0.init(Y,J)});function qU(Y,J){return new PU({type:"intersection",left:Y,right:J})}var MU=_("ZodRecord",(Y,J)=>{F5.init(Y,J),_0.init(Y,J),Y.keyType=J.keyType,Y.valueType=J.valueType});function iQ(Y,J,X){return new MU({type:"record",keyType:Y,valueType:J,...Q0.normalizeParams(X)})}var E4=_("ZodEnum",(Y,J)=>{O5.init(Y,J),_0.init(Y,J),Y.enum=J.entries,Y.options=Object.values(J.entries);let X=new Set(Object.keys(J.entries));Y.extract=(Q,G)=>{let $={};for(let W of Q)if(X.has(W))$[W]=J.entries[W];else throw Error(`Key ${W} not found in enum`);return new E4({...J,checks:[],...Q0.normalizeParams(G),entries:$})},Y.exclude=(Q,G)=>{let $={...J.entries};for(let W of Q)if(X.has(W))delete $[W];else throw Error(`Key ${W} not found in enum`);return new E4({...J,checks:[],...Q0.normalizeParams(G),entries:$})}});function C4(Y,J){let X=Array.isArray(Y)?Object.fromEntries(Y.map((Q)=>[Q,Q])):Y;return new E4({type:"enum",entries:X,...Q0.normalizeParams(J)})}var EU=_("ZodLiteral",(Y,J)=>{D5.init(Y,J),_0.init(Y,J),Y.values=new Set(J.values),Object.defineProperty(Y,"value",{get(){if(J.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return J.values[0]}})});function nQ(Y,J){return new EU({type:"literal",values:Array.isArray(Y)?Y:[Y],...Q0.normalizeParams(J)})}var AU=_("ZodTransform",(Y,J)=>{_5.init(Y,J),_0.init(Y,J),Y._zod.parse=(X,Q)=>{if(Q.direction==="backward")throw new N1(Y.constructor.name);X.addIssue=($)=>{if(typeof $==="string")X.issues.push(Q0.issue($,X.value,J));else{let W=$;if(W.fatal)W.continue=!1;W.code??(W.code="custom"),W.input??(W.input=X.value),W.inst??(W.inst=Y),X.issues.push(Q0.issue(W))}};let G=J.transform(X.value,X);if(G instanceof Promise)return G.then(($)=>{return X.value=$,X});return X.value=G,X}});function TU(Y){return new AU({type:"transform",transform:Y})}var oQ=_("ZodOptional",(Y,J)=>{P5.init(Y,J),_0.init(Y,J),Y.unwrap=()=>Y._zod.def.innerType});function bQ(Y){return new oQ({type:"optional",innerType:Y})}var RU=_("ZodNullable",(Y,J)=>{q5.init(Y,J),_0.init(Y,J),Y.unwrap=()=>Y._zod.def.innerType});function kQ(Y){return new RU({type:"nullable",innerType:Y})}var CU=_("ZodDefault",(Y,J)=>{M5.init(Y,J),_0.init(Y,J),Y.unwrap=()=>Y._zod.def.innerType,Y.removeDefault=Y.unwrap});function wU(Y,J){return new CU({type:"default",innerType:Y,get defaultValue(){return typeof J==="function"?J():Q0.shallowClone(J)}})}var SU=_("ZodPrefault",(Y,J)=>{E5.init(Y,J),_0.init(Y,J),Y.unwrap=()=>Y._zod.def.innerType});function IU(Y,J){return new SU({type:"prefault",innerType:Y,get defaultValue(){return typeof J==="function"?J():Q0.shallowClone(J)}})}var rQ=_("ZodNonOptional",(Y,J)=>{A5.init(Y,J),_0.init(Y,J),Y.unwrap=()=>Y._zod.def.innerType});function bU(Y,J){return new rQ({type:"nonoptional",innerType:Y,...Q0.normalizeParams(J)})}var kU=_("ZodCatch",(Y,J)=>{T5.init(Y,J),_0.init(Y,J),Y.unwrap=()=>Y._zod.def.innerType,Y.removeCatch=Y.unwrap});function xU(Y,J){return new kU({type:"catch",innerType:Y,catchValue:typeof J==="function"?J:()=>J})}var vU=_("ZodPipe",(Y,J)=>{R5.init(Y,J),_0.init(Y,J),Y.in=J.in,Y.out=J.out});function xQ(Y,J){return new vU({type:"pipe",in:Y,out:J})}var hU=_("ZodReadonly",(Y,J)=>{C5.init(Y,J),_0.init(Y,J),Y.unwrap=()=>Y._zod.def.innerType});function yU(Y){return new hU({type:"readonly",innerType:Y})}var gU=_("ZodLazy",(Y,J)=>{w5.init(Y,J),_0.init(Y,J),Y.unwrap=()=>Y._zod.def.getter()});function sQ(Y){return new gU({type:"lazy",getter:Y})}var w4=_("ZodCustom",(Y,J)=>{S5.init(Y,J),_0.init(Y,J)});function aQ(Y,J){return UQ(w4,Y??(()=>!0),J)}function fU(Y,J={}){return ZQ(w4,Y,J)}function mU(Y){return VQ(Y)}function tQ(Y,J={error:`Input not instance of ${Y.name}`}){let X=new w4({type:"custom",check:"custom",fn:(Q)=>Q instanceof Y,abort:!0,...Q0.normalizeParams(J)});return X._zod.bag.Class=Y,X}function KG(Y=globalThis){if(Y.navigator?.userAgent)return Y.navigator.userAgent.toLowerCase();if(Y.process?.versions?.node)return`node.js/${Y.process.version}`;if(Y.EdgeRuntime)return"vercel-edge";return""}function HG(Y){if(Y==null)return{};let J={};if(Y instanceof Headers)Y.forEach((X,Q)=>{J[Q.toLowerCase()]=X});else{if(!Array.isArray(Y))Y=Object.entries(Y);for(let[X,Q]of Y)if(Q!=null)J[X.toLowerCase()]=Q}return J}function UG(Y,...J){let X=new Headers(HG(Y)),Q=X.get("user-agent")||"";return X.set("user-agent",[Q,...J].filter(Boolean).join(" ")),Object.fromEntries(X.entries())}var lU=[{mediaType:"audio/aac",bytesPrefix:[255,240]},{mediaType:"audio/aac",bytesPrefix:[255,241]},{mediaType:"audio/aac",bytesPrefix:[255,248]},{mediaType:"audio/aac",bytesPrefix:[255,249]},{mediaType:"audio/mpeg",bytesPrefix:[255,251]},{mediaType:"audio/mpeg",bytesPrefix:[255,250]},{mediaType:"audio/mpeg",bytesPrefix:[255,243]},{mediaType:"audio/mpeg",bytesPrefix:[255,242]},{mediaType:"audio/mpeg",bytesPrefix:[255,227]},{mediaType:"audio/mpeg",bytesPrefix:[255,226]},{mediaType:"audio/wav",bytesPrefix:[82,73,70,70,null,null,null,null,87,65,86,69]},{mediaType:"audio/ogg",bytesPrefix:[79,103,103,83]},{mediaType:"audio/flac",bytesPrefix:[102,76,97,67]},{mediaType:"audio/aac",bytesPrefix:[64,21,0,0]},{mediaType:"audio/webm",bytesPrefix:[26,69,223,163]}],yD=[...lU,{mediaType:"audio/mp4",bytesPrefix:[0,0,0,null,102,116,121,112]}];async function k8(Y){try{await Y.body?.cancel()}catch{}}var ZG="AI_DownloadError",VG=`vercel.ai.error.${ZG}`,dU=Symbol.for(VG),h0=class extends C6{constructor({url:Y,statusCode:J,statusText:X,cause:Q,message:G=Q==null?`Failed to download ${Y}: ${J} ${X}`:`Failed to download ${Y}: ${Q}`}){super({name:ZG,message:G,cause:Q});this[dU]=!0,this.url=Y,this.statusCode=J,this.statusText=X}static isInstance(Y){return C6.hasMarker(Y,VG)}};function iU(Y=globalThis){return Y.window!=null}function b4(Y,J){try{return new URL(Y).origin===new URL(J).origin}catch{return!1}}function nU(Y){let J;try{J=new URL(Y)}catch{throw new h0({url:Y,message:`Invalid URL: ${Y}`})}if(J.protocol==="data:")return;if(J.protocol!=="http:"&&J.protocol!=="https:")throw new h0({url:Y,message:`URL scheme must be http, https, or data, got ${J.protocol}`});let X=J.hostname.toLowerCase().replace(/\.+$/,"");if(!X)throw new h0({url:Y,message:"URL must have a hostname"});if(X==="localhost"||X.endsWith(".local")||X.endsWith(".localhost"))throw new h0({url:Y,message:`URL with hostname ${X} is not allowed`});if(X.startsWith("[")&&X.endsWith("]")){if(BG(X.slice(1,-1)))throw new h0({url:Y,message:`URL with IPv6 address ${X} is not allowed`});return}if(x4(X)){if(v4(X))throw new h0({url:Y,message:`URL with IP address ${X} is not allowed`})}}function oU({address:Y,family:J,hostname:X}){if(J===4?!x4(Y)||v4(Y):J===6?BG(Y):!0)throw new h0({url:X,message:`Hostname ${X} resolved to disallowed IP address ${Y}`})}function x4(Y){let J=Y.split(".");if(J.length!==4)return!1;return J.every((X)=>{let Q=Number(X);return Number.isInteger(Q)&&Q>=0&&Q<=255&&String(Q)===X})}function v4(Y){let[J,X,Q]=Y.split(".").map(Number);if(J===0)return!0;if(J===10)return!0;if(J===100&&X>=64&&X<=127)return!0;if(J===127)return!0;if(J===169&&X===254)return!0;if(J===172&&X>=16&&X<=31)return!0;if(J===192&&X===0&&Q===0)return!0;if(J===192&&X===0&&Q===2)return!0;if(J===192&&X===168)return!0;if(J===198&&(X===18||X===19))return!0;if(J===198&&X===51&&Q===100)return!0;if(J===203&&X===0&&Q===113)return!0;if(J>=224)return!0;return!1}function rU(Y){let J=Y.toLowerCase(),X=J.indexOf("%");if(X!==-1)J=J.slice(0,X);let Q=J.split("::");if(Q.length>2)return null;let G=(W)=>{if(W==="")return[];let K=[],H=W.split(":");for(let U=0;U<H.length;U++){let V=H[U];if(V.includes(".")){if(U!==H.length-1||!x4(V))return null;let[D,L,B,F]=V.split(".").map(Number);K.push(D<<8|L,B<<8|F);continue}if(!/^[0-9a-f]{1,4}$/.test(V))return null;K.push(parseInt(V,16))}return K},$=G(Q[0]);if($===null)return null;if(Q.length===2){let W=G(Q[1]);if(W===null)return null;let K=8-$.length-W.length;if(K<0)return null;return[...$,...Array(K).fill(0),...W]}return $.length===8?$:null}function BG(Y){let J=rU(Y);if(J===null)return!0;let X=(Q)=>J.slice(0,Q).every((G)=>G===0);if(X(7)&&(J[7]===0||J[7]===1))return!0;if((J[0]&65024)===64512)return!0;if((J[0]&65472)===65152)return!0;if((J[0]&65472)===65216)return!0;if((J[0]&65280)===65280)return!0;if(J[0]===8193&&J[1]===3512)return!0;if(J[0]===16383&&(J[1]&61440)===0)return!0;if(X(6)||X(5)&&J[5]===65535||X(4)&&J[4]===65535&&J[5]===0||J[0]===100&&J[1]===65435&&J[2]===0&&J[3]===0&&J[4]===0&&J[5]===0||J[0]===100&&J[1]===65435&&J[2]===1)return v4(`${J[6]>>8&255}.${J[6]&255}.${J[7]>>8&255}.${J[7]&255}`);return!1}function sU(Y){return(J,X,Q)=>{Y(J,{...X,all:!0},(G,$)=>{if(G){Q(G);return}try{let[W]=$;if(W==null)throw Error(`Hostname ${J} did not resolve to an address`);for(let{address:K,family:H}of $)oU({address:K,family:H,hostname:J});if(X.all===!0)Q(null,$);else Q(null,W.address,W.family)}catch(W){Q(W instanceof Error?W:Error(String(W)))}})}}var aU;function tU(){let Y=globalThis.process;return Y?.release?.name==="node"&&Y.versions?.bun==null&&Y.versions?.deno==null&&Y.title!=="workerd"&&globalThis.EdgeRuntime==null}async function eU(){if(!tU())return globalThis.fetch;return aU??=Promise.resolve().then(YZ)}function YZ(){let Y=eQ("node:module"),{lookup:J}=eQ("node:dns"),{Agent:X,fetch:Q}=Y.createRequire(LG())("undici"),G=new X({connect:{lookup:sU(J)}});return($,W)=>Q($,{...W,dispatcher:G})}function eQ(Y){let J=globalThis.process?.getBuiltinModule?.(Y);if(J==null)throw Error(`Node.js built-in module ${Y} is unavailable`);return J}function LG(){let Y=Error.prepareStackTrace;try{Error.prepareStackTrace=(G,$)=>$;let J=Error("Capture current module path");Error.captureStackTrace(J,LG);let[X]=J.stack,Q=X?.getFileName();if(Q==null)throw Error("Unable to determine the current module path");return Q}finally{Error.prepareStackTrace=Y}}var JZ=["connection","keep-alive","te","trailer","transfer-encoding","upgrade","host","forwarded","proxy-authorization","via","x-forwarded-for","x-forwarded-host","x-forwarded-proto","x-real-ip","metadata","metadata-flavor","x-aws-ec2-metadata-token","x-metadata-token","cookie","set-cookie"];function NG(Y){let J=new Headers(Y);for(let X of JZ)J.delete(X);return J}var XZ=10,QZ=new Set([301,302,303,307,308]);async function GZ(Y){return Y==null||Y===globalThis.fetch?await eU():Y}async function $Z({url:Y,headers:J,abortSignal:X,maxRedirects:Q=XZ,fetch:G,trustedOrigin:$}){let W=J===void 0?void 0:NG(J),K=(U)=>{let V={signal:X,redirect:U};if(W!==void 0)V.headers=new Headers(W);return V},H=Y;for(let U=0;U<=Q;U++){let V=$!==void 0&&b4(H,$);if(!V)nU(H);let D=V&&G!=null?G:V?globalThis.fetch:await GZ(G),L=await D(H,K("manual"));if(L.type==="opaqueredirect"){if(!iU())throw new h0({url:Y,message:`Redirect from ${H} could not be validated and was blocked`});return await D(H,K("follow"))}let B=L.headers?.get("location");if(QZ.has(L.status)&&B){k8(L);let F=new URL(B,H).toString();if(W!==void 0&&!b4(F,H)){let P=W.get("user-agent");W=new Headers(P==null?void 0:{"user-agent":P})}H=F;continue}return L}throw new h0({url:Y,message:`Too many redirects (max ${Q})`})}var WZ=new Set(["accept","accept-language","baggage","cache-control","idempotency-key","if-match","if-modified-since","if-none-match","if-range","if-unmodified-since","pragma","range","traceparent","tracestate","user-agent","x-correlation-id","x-request-id"]);async function jG({headers:Y,credentialedOrigin:J,untrustedFirstHopHeaders:X,...Q}){let G;if(Y!==void 0){G=NG(Y);let $=J??Q.trustedOrigin;if($===void 0||!b4(Q.url,$)){let W=new Set([...WZ,...(X??[]).map((K)=>K.toLowerCase())]);G=new Headers([...G].filter(([K])=>W.has(K)))}}return $Z({...Q,headers:G})}var h4=2147483648;async function FG({response:Y,url:J,maxBytes:X=h4}){let Q=Y.headers.get("content-length");if(Q!=null){let V=parseInt(Q,10);if(!isNaN(V)&&V>X)throw await k8(Y),new h0({url:J,message:`Download of ${J} exceeded maximum size of ${X} bytes (Content-Length: ${V}).`})}let G=Y.body;if(G==null)return new Uint8Array(0);let $=G.getReader(),W=[],K=0;try{while(!0){let{done:V,value:D}=await $.read();if(V)break;if(K+=D.length,K>X)throw new h0({url:J,message:`Download of ${J} exceeded maximum size of ${X} bytes.`});W.push(D.byteLength<D.buffer.byteLength?new Uint8Array(D):D)}}finally{try{await $.cancel()}catch{}finally{$.releaseLock()}}let H=new Uint8Array(K),U=0;for(let V of W)H.set(V,U),U+=V.length;return H}var I0=({prefix:Y,size:J=16,alphabet:X="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",separator:Q="-"}={})=>{let G=()=>{let $=X.length,W=Array(J);for(let K=0;K<J;K++)W[K]=X[Math.random()*$|0];return W.join("")};if(Y==null)return G;if(X.includes(Q))throw new rY({argument:"separator",message:`The separator "${Q}" must not be part of the alphabet "${X}".`});return()=>`${Y}${Q}${G()}`},OG=I0();function DG(Y){return globalThis.Buffer?.isBuffer(Y)??!1}function _G(Y){if(Y.type==="object"||Array.isArray(Y.type)&&Y.type.includes("object")){let{additionalProperties:X}=Y;Y.additionalProperties=X!=null&&typeof X!=="boolean"?l6(X):!1;let{properties:Q}=Y;if(Q!=null)for(let G of Object.keys(Q))Q[G]=l6(Q[G])}if(Y.items!=null)Y.items=Array.isArray(Y.items)?Y.items.map(l6):l6(Y.items);if(Y.anyOf!=null)Y.anyOf=Y.anyOf.map(l6);if(Y.allOf!=null)Y.allOf=Y.allOf.map(l6);if(Y.oneOf!=null)Y.oneOf=Y.oneOf.map(l6);let{definitions:J}=Y;if(J!=null)for(let X of Object.keys(J))J[X]=l6(J[X]);return Y}function l6(Y){if(typeof Y==="boolean")return Y;return _G(Y)}var zZ=Symbol("Let zodToJsonSchema decide on which parser to use"),YG={name:void 0,$refStrategy:"root",basePath:["#"],effectStrategy:"input",pipeStrategy:"all",dateStrategy:"format:date-time",mapStrategy:"entries",removeAdditionalStrategy:"passthrough",allowedAdditionalProperties:!0,rejectedAdditionalProperties:!1,definitionPath:"definitions",strictUnions:!1,definitions:{},errorMessages:!1,patternStrategy:"escape",applyRegexFlags:!1,emailStrategy:"format:email",base64Strategy:"contentEncoding:base64",nameStrategy:"ref"},KZ=(Y)=>typeof Y==="string"?{...YG,name:Y}:{...YG,...Y};function s0(){return{}}function HZ(Y,J){let X={type:"array"};if(Y.type?._def&&Y.type?._def?.typeName!=="ZodAny")X.items=Z0(Y.type._def,{...J,currentPath:[...J.currentPath,"items"]});if(Y.minLength)X.minItems=Y.minLength.value;if(Y.maxLength)X.maxItems=Y.maxLength.value;if(Y.exactLength)X.minItems=Y.exactLength.value,X.maxItems=Y.exactLength.value;return X}function UZ(Y){let J={type:"integer",format:"int64"};if(!Y.checks)return J;for(let X of Y.checks)switch(X.kind){case"min":if(X.inclusive)J.minimum=X.value;else J.exclusiveMinimum=X.value;break;case"max":if(X.inclusive)J.maximum=X.value;else J.exclusiveMaximum=X.value;break;case"multipleOf":J.multipleOf=X.value}return J}function ZZ(){return{type:"boolean"}}function PG(Y,J){return Z0(Y.type._def,J)}var VZ=(Y,J)=>{return Z0(Y.innerType._def,J)};function qG(Y,J,X){let Q=X??J.dateStrategy;if(Array.isArray(Q))return{anyOf:Q.map((G)=>qG(Y,J,G))};switch(Q){case"string":case"format:date-time":return{type:"string",format:"date-time"};case"format:date":return{type:"string",format:"date"};case"integer":return BZ(Y)}}var BZ=(Y)=>{let J={type:"integer",format:"unix-time"};for(let X of Y.checks)switch(X.kind){case"min":J.minimum=X.value;break;case"max":J.maximum=X.value}return J};function LZ(Y,J){return{...Z0(Y.innerType._def,J),default:Y.defaultValue()}}function NZ(Y,J){return J.effectStrategy==="input"?Z0(Y.schema._def,J):s0()}function jZ(Y){return{type:"string",enum:Array.from(Y.values)}}var FZ=(Y)=>{if("type"in Y&&Y.type==="string")return!1;return"allOf"in Y};function OZ(Y,J){let X=[Z0(Y.left._def,{...J,currentPath:[...J.currentPath,"allOf","0"]}),Z0(Y.right._def,{...J,currentPath:[...J.currentPath,"allOf","1"]})].filter((G)=>!!G),Q=[];return X.forEach((G)=>{if(FZ(G))Q.push(...G.allOf);else{let $=G;if("additionalProperties"in G&&G.additionalProperties===!1){let{additionalProperties:W,...K}=G;$=K}Q.push($)}}),Q.length?{allOf:Q}:void 0}function DZ(Y){let J=typeof Y.value;if(J!=="bigint"&&J!=="number"&&J!=="boolean"&&J!=="string")return{type:Array.isArray(Y.value)?"array":"object"};return{type:J==="bigint"?"integer":J,const:Y.value}}var S4=void 0,W6={cuid:/^[cC][^\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9-]*\.)+[a-zA-Z]{2,}$/,emoji:()=>{if(S4===void 0)S4=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u");return S4},uuid:/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv4Cidr:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ipv6:/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/};function MG(Y,J){let X={type:"string"};if(Y.checks)for(let Q of Y.checks)switch(Q.kind){case"min":X.minLength=typeof X.minLength==="number"?Math.max(X.minLength,Q.value):Q.value;break;case"max":X.maxLength=typeof X.maxLength==="number"?Math.min(X.maxLength,Q.value):Q.value;break;case"email":switch(J.emailStrategy){case"format:email":z6(X,"email",Q.message,J);break;case"format:idn-email":z6(X,"idn-email",Q.message,J);break;case"pattern:zod":c0(X,W6.email,Q.message,J)}break;case"url":z6(X,"uri",Q.message,J);break;case"uuid":z6(X,"uuid",Q.message,J);break;case"regex":c0(X,Q.regex,Q.message,J);break;case"cuid":c0(X,W6.cuid,Q.message,J);break;case"cuid2":c0(X,W6.cuid2,Q.message,J);break;case"startsWith":c0(X,RegExp(`^${I4(Q.value,J)}`),Q.message,J);break;case"endsWith":c0(X,RegExp(`${I4(Q.value,J)}$`),Q.message,J);break;case"datetime":z6(X,"date-time",Q.message,J);break;case"date":z6(X,"date",Q.message,J);break;case"time":z6(X,"time",Q.message,J);break;case"duration":z6(X,"duration",Q.message,J);break;case"length":X.minLength=typeof X.minLength==="number"?Math.max(X.minLength,Q.value):Q.value,X.maxLength=typeof X.maxLength==="number"?Math.min(X.maxLength,Q.value):Q.value;break;case"includes":c0(X,RegExp(I4(Q.value,J)),Q.message,J);break;case"ip":if(Q.version!=="v6")z6(X,"ipv4",Q.message,J);if(Q.version!=="v4")z6(X,"ipv6",Q.message,J);break;case"base64url":c0(X,W6.base64url,Q.message,J);break;case"jwt":c0(X,W6.jwt,Q.message,J);break;case"cidr":if(Q.version!=="v6")c0(X,W6.ipv4Cidr,Q.message,J);if(Q.version!=="v4")c0(X,W6.ipv6Cidr,Q.message,J);break;case"emoji":c0(X,W6.emoji(),Q.message,J);break;case"ulid":c0(X,W6.ulid,Q.message,J);break;case"base64":switch(J.base64Strategy){case"format:binary":z6(X,"binary",Q.message,J);break;case"contentEncoding:base64":X.contentEncoding="base64";break;case"pattern:zod":c0(X,W6.base64,Q.message,J)}break;case"nanoid":c0(X,W6.nanoid,Q.message,J)}return X}function I4(Y,J){return J.patternStrategy==="escape"?PZ(Y):Y}var _Z=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function PZ(Y){let J="";for(let X=0;X<Y.length;X++){if(!_Z.has(Y[X]))J+="\\";J+=Y[X]}return J}function z6(Y,J,X,Q){if(Y.format||Y.anyOf?.some((G)=>G.format)){if(!Y.anyOf)Y.anyOf=[];if(Y.format)Y.anyOf.push({format:Y.format}),delete Y.format;Y.anyOf.push({format:J,...X&&Q.errorMessages&&{errorMessage:{format:X}}})}else Y.format=J}function c0(Y,J,X,Q){if(Y.pattern||Y.allOf?.some((G)=>G.pattern)){if(!Y.allOf)Y.allOf=[];if(Y.pattern)Y.allOf.push({pattern:Y.pattern}),delete Y.pattern;Y.allOf.push({pattern:JG(J,Q),...X&&Q.errorMessages&&{errorMessage:{pattern:X}}})}else Y.pattern=JG(J,Q)}function JG(Y,J){if(!J.applyRegexFlags||!Y.flags)return Y.source;let X={i:Y.flags.includes("i"),m:Y.flags.includes("m"),s:Y.flags.includes("s")},Q=X.i?Y.source.toLowerCase():Y.source,G="",$=!1,W=!1,K=!1;for(let H=0;H<Q.length;H++){if($){G+=Q[H],$=!1;continue}if(X.i){if(W){if(Q[H].match(/[a-z]/)){if(K)G+=Q[H],G+=`${Q[H-2]}-${Q[H]}`.toUpperCase(),K=!1;else if(Q[H+1]==="-"&&Q[H+2]?.match(/[a-z]/))G+=Q[H],K=!0;else G+=`${Q[H]}${Q[H].toUpperCase()}`;continue}}else if(Q[H].match(/[a-z]/)){G+=`[${Q[H]}${Q[H].toUpperCase()}]`;continue}}if(X.m){if(Q[H]==="^"){G+=`(^|(?<=[\r
|
|
33
|
+
]))`;continue}else if(Q[H]==="$"){G+=`($|(?=[\r
|
|
34
|
+
]))`;continue}}if(X.s&&Q[H]==="."){G+=W?`${Q[H]}\r
|
|
35
|
+
`:`[${Q[H]}\r
|
|
36
|
+
]`;continue}if(G+=Q[H],Q[H]==="\\")$=!0;else if(W&&Q[H]==="]")W=!1;else if(!W&&Q[H]==="[")W=!0}try{new RegExp(G)}catch{return console.warn(`Could not convert regex pattern at ${J.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`),Y.source}return G}function EG(Y,J){let X={type:"object",additionalProperties:Z0(Y.valueType._def,{...J,currentPath:[...J.currentPath,"additionalProperties"]})??J.allowedAdditionalProperties};if(Y.keyType?._def.typeName==="ZodString"&&Y.keyType._def.checks?.length){let{type:Q,...G}=MG(Y.keyType._def,J);return{...X,propertyNames:G}}else if(Y.keyType?._def.typeName==="ZodEnum")return{...X,propertyNames:{enum:Y.keyType._def.values}};else if(Y.keyType?._def.typeName==="ZodBranded"&&Y.keyType._def.type._def.typeName==="ZodString"&&Y.keyType._def.type._def.checks?.length){let{type:Q,...G}=PG(Y.keyType._def,J);return{...X,propertyNames:G}}return X}function qZ(Y,J){if(J.mapStrategy==="record")return EG(Y,J);return{type:"array",maxItems:125,items:{type:"array",items:[Z0(Y.keyType._def,{...J,currentPath:[...J.currentPath,"items","items","0"]})||s0(),Z0(Y.valueType._def,{...J,currentPath:[...J.currentPath,"items","items","1"]})||s0()],minItems:2,maxItems:2}}}function MZ(Y){let J=Y.values,X=Object.keys(Y.values).filter((G)=>{return typeof J[J[G]]!=="number"}).map((G)=>J[G]),Q=Array.from(new Set(X.map((G)=>typeof G)));return{type:Q.length===1?Q[0]==="string"?"string":"number":["string","number"],enum:X}}function EZ(){return{not:s0()}}function AZ(){return{type:"null"}}var k4={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};function TZ(Y,J){let X=Y.options instanceof Map?Array.from(Y.options.values()):Y.options;if(X.every((Q)=>(Q._def.typeName in k4)&&(!Q._def.checks||!Q._def.checks.length))){let Q=X.reduce((G,$)=>{let W=k4[$._def.typeName];return W&&!G.includes(W)?[...G,W]:G},[]);return{type:Q.length>1?Q:Q[0]}}else if(X.every((Q)=>Q._def.typeName==="ZodLiteral"&&!Q.description)){let Q=X.reduce((G,$)=>{let W=typeof $._def.value;switch(W){case"string":case"number":case"boolean":return[...G,W];case"bigint":return[...G,"integer"];case"object":if($._def.value===null)return[...G,"null"];default:return G}},[]);if(Q.length===X.length){let G=Q.filter(($,W,K)=>K.indexOf($)===W);return{type:G.length>1?G:G[0],enum:X.reduce(($,W)=>{return $.includes(W._def.value)?$:[...$,W._def.value]},[])}}}else if(X.every((Q)=>Q._def.typeName==="ZodEnum"))return{type:"string",enum:X.reduce((Q,G)=>[...Q,...G._def.values.filter(($)=>!Q.includes($))],[])};return RZ(Y,J)}var RZ=(Y,J)=>{let X=(Y.options instanceof Map?Array.from(Y.options.values()):Y.options).map((Q,G)=>Z0(Q._def,{...J,currentPath:[...J.currentPath,"anyOf",`${G}`]})).filter((Q)=>!!Q&&(!J.strictUnions||typeof Q==="object"&&Object.keys(Q).length>0));return X.length?{anyOf:X}:void 0};function CZ(Y,J){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(Y.innerType._def.typeName)&&(!Y.innerType._def.checks||!Y.innerType._def.checks.length))return{type:[k4[Y.innerType._def.typeName],"null"]};let X=Z0(Y.innerType._def,{...J,currentPath:[...J.currentPath,"anyOf","0"]});return X&&{anyOf:[X,{type:"null"}]}}function wZ(Y){let J={type:"number"};if(!Y.checks)return J;for(let X of Y.checks)switch(X.kind){case"int":J.type="integer";break;case"min":if(X.inclusive)J.minimum=X.value;else J.exclusiveMinimum=X.value;break;case"max":if(X.inclusive)J.maximum=X.value;else J.exclusiveMaximum=X.value;break;case"multipleOf":J.multipleOf=X.value}return J}function SZ(Y,J){let X={type:"object",properties:{}},Q=[],G=Y.shape();for(let W in G){let K=G[W];if(K===void 0||K._def===void 0)continue;let H=bZ(K),U=Z0(K._def,{...J,currentPath:[...J.currentPath,"properties",W],propertyPath:[...J.currentPath,"properties",W]});if(U===void 0)continue;if(X.properties[W]=U,!H)Q.push(W)}if(Q.length)X.required=Q;let $=IZ(Y,J);if($!==void 0)X.additionalProperties=$;return X}function IZ(Y,J){if(Y.catchall._def.typeName!=="ZodNever")return Z0(Y.catchall._def,{...J,currentPath:[...J.currentPath,"additionalProperties"]});switch(Y.unknownKeys){case"passthrough":return J.allowedAdditionalProperties;case"strict":return J.rejectedAdditionalProperties;case"strip":return J.removeAdditionalStrategy==="strict"?J.allowedAdditionalProperties:J.rejectedAdditionalProperties}}function bZ(Y){try{return Y.isOptional()}catch{return!0}}var kZ=(Y,J)=>{if(J.currentPath.toString()===J.propertyPath?.toString())return Z0(Y.innerType._def,J);let X=Z0(Y.innerType._def,{...J,currentPath:[...J.currentPath,"anyOf","1"]});return X?{anyOf:[{not:s0()},X]}:s0()},xZ=(Y,J)=>{if(J.pipeStrategy==="input")return Z0(Y.in._def,J);else if(J.pipeStrategy==="output")return Z0(Y.out._def,J);let X=Z0(Y.in._def,{...J,currentPath:[...J.currentPath,"allOf","0"]});return{allOf:[X,Z0(Y.out._def,{...J,currentPath:[...J.currentPath,"allOf",X?"1":"0"]})].filter((Q)=>Q!==void 0)}};function vZ(Y,J){return Z0(Y.type._def,J)}function hZ(Y,J){let X={type:"array",uniqueItems:!0,items:Z0(Y.valueType._def,{...J,currentPath:[...J.currentPath,"items"]})};if(Y.minSize)X.minItems=Y.minSize.value;if(Y.maxSize)X.maxItems=Y.maxSize.value;return X}function yZ(Y,J){if(Y.rest)return{type:"array",minItems:Y.items.length,items:Y.items.map((X,Q)=>Z0(X._def,{...J,currentPath:[...J.currentPath,"items",`${Q}`]})).reduce((X,Q)=>Q===void 0?X:[...X,Q],[]),additionalItems:Z0(Y.rest._def,{...J,currentPath:[...J.currentPath,"additionalItems"]})};else return{type:"array",minItems:Y.items.length,maxItems:Y.items.length,items:Y.items.map((X,Q)=>Z0(X._def,{...J,currentPath:[...J.currentPath,"items",`${Q}`]})).reduce((X,Q)=>Q===void 0?X:[...X,Q],[])}}function gZ(){return{not:s0()}}function fZ(){return s0()}var mZ=(Y,J)=>{return Z0(Y.innerType._def,J)},cZ=(Y,J,X)=>{switch(J){case"ZodString":return MG(Y,X);case"ZodNumber":return wZ(Y);case"ZodObject":return SZ(Y,X);case"ZodBigInt":return UZ(Y);case"ZodBoolean":return ZZ();case"ZodDate":return qG(Y,X);case"ZodUndefined":return gZ();case"ZodNull":return AZ();case"ZodArray":return HZ(Y,X);case"ZodUnion":case"ZodDiscriminatedUnion":return TZ(Y,X);case"ZodIntersection":return OZ(Y,X);case"ZodTuple":return yZ(Y,X);case"ZodRecord":return EG(Y,X);case"ZodLiteral":return DZ(Y);case"ZodEnum":return jZ(Y);case"ZodNativeEnum":return MZ(Y);case"ZodNullable":return CZ(Y,X);case"ZodOptional":return kZ(Y,X);case"ZodMap":return qZ(Y,X);case"ZodSet":return hZ(Y,X);case"ZodLazy":return()=>Y.getter()._def;case"ZodPromise":return vZ(Y,X);case"ZodNaN":case"ZodNever":return EZ();case"ZodEffects":return NZ(Y,X);case"ZodAny":return s0();case"ZodUnknown":return fZ();case"ZodDefault":return LZ(Y,X);case"ZodBranded":return PG(Y,X);case"ZodReadonly":return mZ(Y,X);case"ZodCatch":return VZ(Y,X);case"ZodPipeline":return xZ(Y,X);case"ZodFunction":case"ZodVoid":case"ZodSymbol":return;default:return((Q)=>{return})(J)}},uZ=(Y,J)=>{let X=0;for(;X<Y.length&&X<J.length;X++)if(Y[X]!==J[X])break;return[(Y.length-X).toString(),...J.slice(X)].join("/")};function Z0(Y,J,X=!1){let Q=J.seen.get(Y);if(J.override){let K=J.override?.(Y,J,Q,X);if(K!==zZ)return K}if(Q&&!X){let K=pZ(Q,J);if(K!==void 0)return K}let G={def:Y,path:J.currentPath,jsonSchema:void 0};J.seen.set(Y,G);let $=cZ(Y,Y.typeName,J),W=typeof $==="function"?Z0($(),J):$;if(W)lZ(Y,J,W);if(J.postProcess){let K=J.postProcess(W,Y,J);return G.jsonSchema=W,K}return G.jsonSchema=W,W}var pZ=(Y,J)=>{switch(J.$refStrategy){case"root":return{$ref:Y.path.join("/")};case"relative":return{$ref:uZ(J.currentPath,Y.path)};case"none":case"seen":if(Y.path.length<J.currentPath.length&&Y.path.every((X,Q)=>J.currentPath[Q]===X))return console.warn(`Recursive reference detected at ${J.currentPath.join("/")}! Defaulting to any`),s0();return J.$refStrategy==="seen"?s0():void 0}},lZ=(Y,J,X)=>{if(Y.description)X.description=Y.description;return X},dZ=(Y)=>{let J=KZ(Y),X=J.name!==void 0?[...J.basePath,J.definitionPath,J.name]:J.basePath;return{...J,currentPath:X,propertyPath:void 0,seen:new Map(Object.entries(J.definitions).map(([Q,G])=>[G._def,{def:G._def,path:[...J.basePath,J.definitionPath,Q],jsonSchema:void 0}]))}},iZ=(Y,J)=>{let X=dZ(J),Q=typeof J==="object"&&J.definitions?Object.entries(J.definitions).reduce((H,[U,V])=>({...H,[U]:Z0(V._def,{...X,currentPath:[...X.basePath,X.definitionPath,U]},!0)??s0()}),{}):void 0,G=typeof J==="string"?J:J?.nameStrategy==="title"?void 0:J?.name,$=Z0(Y._def,G===void 0?X:{...X,currentPath:[...X.basePath,X.definitionPath,G]},!1)??s0(),W=typeof J==="object"&&J.name!==void 0&&J.nameStrategy==="title"?J.name:void 0;if(W!==void 0)$.title=W;let K=G===void 0?Q?{...$,[X.definitionPath]:Q}:$:{$ref:[...X.$refStrategy==="relative"?[]:X.basePath,X.definitionPath,G].join("/"),[X.definitionPath]:{...Q,[G]:$}};return K.$schema="http://json-schema.org/draft-07/schema#",K},nZ=Symbol.for("vercel.ai.schema");function y4(Y){let J;return()=>{if(J==null)J=Y();return J}}function x8(Y,{validate:J}={}){return{[nZ]:!0,_type:void 0,get jsonSchema(){if(typeof Y==="function")Y=Y();return Y},validate:J}}function oZ(Y,J){let X=J?.useReferences??!1;return x8(()=>iZ(Y,{$refStrategy:X?"root":"none"}),{validate:async(Q)=>{let G=await Y.safeParseAsync(Q);return G.success?{success:!0,value:G.data}:{success:!1,error:G.error}}})}function rZ(Y,J){let X=J?.useReferences??!1;return x8(()=>_G(BQ(Y,{target:"draft-7",io:"input",reused:X?"ref":"inline"})),{validate:async(Q)=>{let G=await I8(Y,Q);return G.success?{success:!0,value:G.data}:{success:!1,error:G.error}}})}function sZ(Y){return"_zod"in Y}function v8(Y,J){if(sZ(Y))return rZ(Y,J);else return oZ(Y,J)}var aZ="AI_SerializationError",gD=`vercel.ai.error.${aZ}`;var $V="AI_InvalidArgumentError",M_=`vercel.ai.error.${$V}`;var WV="AI_InvalidStreamPartError",E_=`vercel.ai.error.${WV}`;var zV="AI_InvalidToolApprovalError",A_=`vercel.ai.error.${zV}`;var KV="AI_InvalidToolApprovalSignatureError",T_=`vercel.ai.error.${KV}`;var HV="AI_InvalidToolInputError",R_=`vercel.ai.error.${HV}`;var UV="AI_ToolCallNotFoundForApprovalError",C_=`vercel.ai.error.${UV}`;var ZV="AI_MissingToolResultsError",w_=`vercel.ai.error.${ZV}`;var VV="AI_NoImageGeneratedError",S_=`vercel.ai.error.${VV}`;var BV="AI_NoObjectGeneratedError",I_=`vercel.ai.error.${BV}`;var LV="AI_NoOutputGeneratedError",b_=`vercel.ai.error.${LV}`;var NV="AI_NoSpeechGeneratedError",k_=`vercel.ai.error.${NV}`;var jV="AI_NoTranscriptGeneratedError",x_=`vercel.ai.error.${jV}`;var FV="AI_NoTranslationGeneratedError",v_=`vercel.ai.error.${FV}`;var OV="AI_NoVideoGeneratedError",h_=`vercel.ai.error.${OV}`;var DV="AI_NoSuchToolError",y_=`vercel.ai.error.${DV}`;var _V="AI_StreamProviderError",g_=`vercel.ai.error.${_V}`;var PV="AI_ToolCallRepairError",f_=`vercel.ai.error.${PV}`;var qV="AI_ToolChoiceViolationError",m_=`vercel.ai.error.${qV}`;var MV="AI_UIMessageStreamError",c_=`vercel.ai.error.${MV}`;var EV="AI_InvalidDataContentError",u_=`vercel.ai.error.${EV}`;var AV="AI_InvalidMessageRoleError",p_=`vercel.ai.error.${AV}`;var TV="AI_MessageConversionError",l_=`vercel.ai.error.${TV}`;var RV="AI_RetryError",d_=`vercel.ai.error.${RV}`;var CV="7.0.147",wV=async({url:Y,maxBytes:J,abortSignal:X})=>{let Q=Y.toString();try{let G=UG({},`ai-sdk/${CV}`,KG()),$=await jG({url:Q,headers:G,abortSignal:X});if(!$.ok)throw await k8($),new h0({url:Q,statusCode:$.status,statusText:$.statusText});return{data:await FG({response:$,url:Q,maxBytes:J??h4}),mediaType:$.headers.get("content-type")??void 0}}catch(G){if(h0.isInstance(G))throw G;throw new h0({url:Q,cause:G})}};var z={array:T4,boolean:fQ,custom:aQ,discriminatedUnion:dQ,enum:C4,instanceof:tQ,lazy:sQ,literal:nQ,looseObject:pQ,never:A4,null:mQ,number:gQ,object:uQ,record:iQ,string:hQ,union:R4,unknown:T1},H9=z.lazy(()=>z.union([z.null(),z.string(),z.number(),z.boolean(),z.record(z.string(),H9.optional()),z.array(H9)])),k=z.record(z.string(),z.record(z.string(),H9.optional())),C1=z.union([z.string(),z.instanceof(Uint8Array),z.instanceof(ArrayBuffer),z.custom(DG,{message:"Must be a Buffer"})]),g4=z.record(z.string(),z.string()),AG=z.object({type:z.literal("text"),text:z.string(),providerOptions:k.optional()}),SV=z.object({type:z.literal("image"),image:z.union([C1,z.instanceof(URL),g4]),mediaType:z.string().optional(),providerOptions:k.optional()}),TG=z.discriminatedUnion("type",[z.object({type:z.literal("data"),data:C1}),z.object({type:z.literal("url"),url:z.instanceof(URL)}),z.object({type:z.literal("reference"),reference:g4}),z.object({type:z.literal("text"),text:z.string()})]),IV=z.discriminatedUnion("type",[z.object({type:z.literal("data"),data:C1}),z.object({type:z.literal("url"),url:z.instanceof(URL)})]),RG=z.object({type:z.literal("file"),data:z.union([TG,C1,z.instanceof(URL),g4]),filename:z.string().optional(),mediaType:z.string(),providerOptions:k.optional()}),bV=z.object({type:z.literal("reasoning"),text:z.string(),providerOptions:k.optional()}),kV=z.object({type:z.literal("custom"),kind:z.string().transform((Y)=>Y),providerOptions:k.optional()}),xV=z.object({type:z.literal("reasoning-file"),data:z.union([IV,C1,z.instanceof(URL)]),mediaType:z.string(),providerOptions:k.optional()}),vV=z.object({type:z.literal("tool-call"),toolCallId:z.string(),toolName:z.string(),input:z.unknown(),providerOptions:k.optional(),providerExecuted:z.boolean().optional()}),hV=z.discriminatedUnion("type",[z.object({type:z.literal("text"),value:z.string(),providerOptions:k.optional()}),z.object({type:z.literal("json"),value:H9,providerOptions:k.optional()}),z.object({type:z.literal("execution-denied"),reason:z.string().optional(),providerOptions:k.optional()}),z.object({type:z.literal("error-text"),value:z.string(),providerOptions:k.optional()}),z.object({type:z.literal("error-json"),value:H9,providerOptions:k.optional()}),z.object({type:z.literal("content"),value:z.array(z.union([z.object({type:z.literal("text"),text:z.string(),providerOptions:k.optional()}),z.object({type:z.literal("file"),data:TG,mediaType:z.string(),filename:z.string().optional(),providerOptions:k.optional()}),z.object({type:z.literal("file-data"),data:z.string(),mediaType:z.string(),filename:z.string().optional(),providerOptions:k.optional()}),z.object({type:z.literal("file-url"),url:z.string(),mediaType:z.string().optional(),providerOptions:k.optional()}),z.object({type:z.literal("file-id"),fileId:z.union([z.string(),z.record(z.string(),z.string())]),providerOptions:k.optional()}),z.object({type:z.literal("file-reference"),providerReference:z.record(z.string(),z.string()),providerOptions:k.optional()}),z.object({type:z.literal("image-data"),data:z.string(),mediaType:z.string(),providerOptions:k.optional()}),z.object({type:z.literal("image-url"),url:z.string(),providerOptions:k.optional()}),z.object({type:z.literal("image-file-id"),fileId:z.union([z.string(),z.record(z.string(),z.string())]),providerOptions:k.optional()}),z.object({type:z.literal("image-file-reference"),providerReference:z.record(z.string(),z.string()),providerOptions:k.optional()}),z.object({type:z.literal("custom"),providerOptions:k.optional()})]))})]),CG=z.object({type:z.literal("tool-result"),toolCallId:z.string(),toolName:z.string(),output:hV,providerOptions:k.optional()}),yV=z.object({type:z.literal("tool-approval-request"),approvalId:z.string(),toolCallId:z.string(),reason:z.string().optional(),isAutomatic:z.boolean().optional(),signature:z.string().optional(),inputSchemaInput:z.unknown().optional()}),gV=z.object({type:z.literal("tool-approval-response"),approvalId:z.string(),approved:z.boolean(),reason:z.string().optional()}),fV=z.object({role:z.literal("system"),content:z.string(),providerOptions:k.optional()}),mV=z.object({role:z.literal("user"),content:z.union([z.string(),z.array(z.union([AG,SV,RG]))]),providerOptions:k.optional()}),cV=z.object({role:z.literal("assistant"),content:z.union([z.string(),z.array(z.union([AG,kV,RG,bV,xV,vV,CG,yV]))]),providerOptions:k.optional()}),uV=z.object({role:z.literal("tool"),content:z.array(z.union([CG,gV])),providerOptions:k.optional()}),i_=z.union([fV,mV,cV,uV]);var n_=Symbol("ai-sdk-tool-call-input-schema-input");var o_=I0({prefix:"aitxt",size:24}),r_=I0({prefix:"call",size:24});var s_=class extends TransformStream{constructor(){super({transform(Y,J){J.enqueue(`data: ${JSON.stringify(Y)}
|
|
37
|
+
|
|
38
|
+
`)},flush(Y){Y.enqueue(`data: [DONE]
|
|
39
|
+
|
|
40
|
+
`)}})}};var wG=z.object({source:z.discriminatedUnion("sourceType",[z.object({type:z.literal("source"),sourceType:z.literal("url"),id:z.string(),url:z.string(),title:z.string().optional(),providerMetadata:k.optional()}),z.object({type:z.literal("source"),sourceType:z.literal("document"),id:z.string(),mediaType:z.string(),title:z.string(),filename:z.string().optional(),providerMetadata:k.optional()})]),startIndex:z.number().int().nonnegative().optional(),endIndex:z.number().int().nonnegative().optional(),citedText:z.string().optional()}),R1=z.record(z.string(),H9.optional()),a_=y4(()=>v8(z.union([z.looseObject({type:z.literal("text-start"),id:z.string(),providerMetadata:k.optional()}),z.looseObject({type:z.literal("text-delta"),id:z.string(),delta:z.string(),providerMetadata:k.optional()}),z.looseObject({type:z.literal("text-end"),id:z.string(),citations:z.array(wG).optional(),providerMetadata:k.optional()}),z.looseObject({type:z.literal("error"),errorText:z.string()}),z.looseObject({type:z.literal("tool-input-start"),toolCallId:z.string(),toolName:z.string(),inputEncoding:z.enum(["json","text"]).optional(),providerExecuted:z.boolean().optional(),providerMetadata:k.optional(),toolMetadata:R1.optional(),dynamic:z.boolean().optional(),title:z.string().optional()}),z.looseObject({type:z.literal("tool-input-delta"),toolCallId:z.string(),inputTextDelta:z.string()}),z.looseObject({type:z.literal("tool-input-available"),toolCallId:z.string(),toolName:z.string(),input:z.unknown(),providerExecuted:z.boolean().optional(),providerMetadata:k.optional(),toolMetadata:R1.optional(),dynamic:z.boolean().optional(),title:z.string().optional()}),z.looseObject({type:z.literal("tool-input-error"),toolCallId:z.string(),toolName:z.string(),input:z.unknown(),providerExecuted:z.boolean().optional(),providerMetadata:k.optional(),toolMetadata:R1.optional(),dynamic:z.boolean().optional(),errorText:z.string(),title:z.string().optional()}),z.looseObject({type:z.literal("tool-approval-request"),approvalId:z.string(),toolCallId:z.string(),approvalDescriptor:z.unknown().optional(),inputSchemaInput:z.unknown().optional(),reason:z.string().optional(),isAutomatic:z.boolean().optional(),signature:z.string().optional()}),z.looseObject({type:z.literal("tool-approval-response"),approvalId:z.string(),approved:z.boolean(),reason:z.string().optional(),providerExecuted:z.boolean().optional(),providerMetadata:k.optional()}),z.looseObject({type:z.literal("tool-output-available"),toolCallId:z.string(),output:z.unknown(),providerExecuted:z.boolean().optional(),providerMetadata:k.optional(),toolMetadata:R1.optional(),dynamic:z.boolean().optional(),preliminary:z.boolean().optional()}),z.looseObject({type:z.literal("tool-output-error"),toolCallId:z.string(),errorText:z.string(),providerExecuted:z.boolean().optional(),providerMetadata:k.optional(),toolMetadata:R1.optional(),dynamic:z.boolean().optional()}),z.looseObject({type:z.literal("tool-output-denied"),toolCallId:z.string()}),z.looseObject({type:z.literal("reasoning-start"),id:z.string(),providerMetadata:k.optional()}),z.looseObject({type:z.literal("reasoning-delta"),id:z.string(),delta:z.string(),providerMetadata:k.optional()}),z.looseObject({type:z.literal("reasoning-end"),id:z.string(),providerMetadata:k.optional()}),z.looseObject({type:z.literal("custom"),kind:z.string().transform((Y)=>Y),providerMetadata:k.optional()}),z.looseObject({type:z.literal("source-url"),sourceId:z.string(),url:z.string(),title:z.string().optional(),providerMetadata:k.optional()}),z.looseObject({type:z.literal("source-document"),sourceId:z.string(),mediaType:z.string(),title:z.string(),filename:z.string().optional(),providerMetadata:k.optional()}),z.looseObject({type:z.literal("file"),url:z.string(),mediaType:z.string(),providerMetadata:k.optional()}),z.looseObject({type:z.literal("reasoning-file"),url:z.string(),mediaType:z.string(),providerMetadata:k.optional()}),z.looseObject({type:z.custom((Y)=>typeof Y==="string"&&Y.startsWith("data-"),{message:'Type must start with "data-"'}),id:z.string().optional(),data:z.unknown(),transient:z.boolean().optional()}),z.looseObject({type:z.literal("start-step")}),z.looseObject({type:z.literal("finish-step")}),z.looseObject({type:z.literal("reset-step")}),z.looseObject({type:z.literal("start"),messageId:z.string().optional(),messageMetadata:z.unknown().optional()}),z.looseObject({type:z.literal("finish"),finishReason:z.enum(["stop","length","content-filter","tool-calls","error","other"]).optional(),messageMetadata:z.unknown().optional()}),z.looseObject({type:z.literal("abort"),reason:z.string().optional()}),z.looseObject({type:z.literal("message-metadata"),messageMetadata:z.unknown()})])));var t_=Symbol("streamRetryAttemptBoundary");var e_=I0({prefix:"aitxt",size:24}),YP=I0({prefix:"call",size:24});var JP=I0({prefix:"aitxt",size:24}),XP=I0({prefix:"call",size:24});var QP=Symbol("streamRetryBoundary");var p0=z.record(z.string(),H9.optional()),pV=z.record(z.string(),z.string());var GP=y4(()=>{let Y=z.object({id:z.string(),approved:z.never().optional(),descriptor:z.unknown().optional(),requestReason:z.string().optional(),reason:z.never().optional(),isAutomatic:z.boolean().optional(),signature:z.string().optional(),inputSchemaInput:z.unknown().optional()}),J=Y.extend({approved:z.boolean(),reason:z.string().optional()}),X=J.extend({approved:z.literal(!0)}),Q=J.extend({approved:z.literal(!1)});return v8(z.array(z.object({id:z.string(),role:z.enum(["system","user","assistant"]),metadata:z.unknown().optional(),parts:z.array(z.union([z.object({type:z.literal("text"),text:z.string(),citations:z.array(wG).optional(),state:z.enum(["streaming","done"]).optional(),providerMetadata:k.optional()}),z.object({type:z.literal("reasoning"),id:z.string().optional(),text:z.string(),state:z.enum(["streaming","done"]).optional(),providerMetadata:k.optional()}),z.object({type:z.literal("custom"),kind:z.string(),providerMetadata:k.optional()}),z.object({type:z.literal("source-url"),sourceId:z.string(),url:z.string(),title:z.string().optional(),providerMetadata:k.optional()}),z.object({type:z.literal("source-document"),sourceId:z.string(),mediaType:z.string(),title:z.string(),filename:z.string().optional(),providerMetadata:k.optional()}),z.object({type:z.literal("file"),mediaType:z.string(),filename:z.string().optional(),url:z.string(),providerReference:pV.optional(),providerMetadata:k.optional()}),z.object({type:z.literal("reasoning-file"),mediaType:z.string(),url:z.string(),providerMetadata:k.optional()}),z.object({type:z.literal("step-start")}),z.object({type:z.string().startsWith("data-"),id:z.string().optional(),data:z.unknown()}),z.object({type:z.literal("dynamic-tool"),dynamic:z.literal(!1).optional(),toolName:z.string(),toolCallId:z.string(),title:z.string().optional(),toolMetadata:p0.optional(),state:z.literal("input-streaming"),input:z.unknown().optional(),rawInput:z.string().optional(),inputEncoding:z.enum(["json","text"]).optional(),providerExecuted:z.boolean().optional(),callProviderMetadata:k.optional(),output:z.never().optional(),errorText:z.never().optional(),approval:z.never().optional()}),z.object({type:z.literal("dynamic-tool"),dynamic:z.literal(!1).optional(),toolName:z.string(),toolCallId:z.string(),title:z.string().optional(),toolMetadata:p0.optional(),state:z.literal("input-available"),input:z.unknown(),providerExecuted:z.boolean().optional(),output:z.never().optional(),errorText:z.never().optional(),callProviderMetadata:k.optional(),approval:z.never().optional()}),z.object({type:z.literal("dynamic-tool"),dynamic:z.literal(!1).optional(),toolName:z.string(),toolCallId:z.string(),title:z.string().optional(),toolMetadata:p0.optional(),state:z.literal("approval-requested"),input:z.unknown(),providerExecuted:z.boolean().optional(),output:z.never().optional(),errorText:z.never().optional(),callProviderMetadata:k.optional(),approval:Y}),z.object({type:z.literal("dynamic-tool"),dynamic:z.literal(!1).optional(),toolName:z.string(),toolCallId:z.string(),title:z.string().optional(),toolMetadata:p0.optional(),state:z.literal("approval-responded"),input:z.unknown(),providerExecuted:z.boolean().optional(),output:z.never().optional(),errorText:z.never().optional(),callProviderMetadata:k.optional(),approval:J}),z.object({type:z.literal("dynamic-tool"),dynamic:z.literal(!1).optional(),toolName:z.string(),toolCallId:z.string(),title:z.string().optional(),toolMetadata:p0.optional(),state:z.literal("output-available"),input:z.unknown(),providerExecuted:z.boolean().optional(),output:z.unknown(),errorText:z.never().optional(),callProviderMetadata:k.optional(),resultProviderMetadata:k.optional(),preliminary:z.boolean().optional(),approval:X.optional()}),z.object({type:z.literal("dynamic-tool"),dynamic:z.literal(!1).optional(),toolName:z.string(),toolCallId:z.string(),title:z.string().optional(),toolMetadata:p0.optional(),state:z.literal("output-error"),input:z.unknown().optional(),rawInput:z.unknown().optional(),providerExecuted:z.boolean().optional(),output:z.never().optional(),errorText:z.string(),callProviderMetadata:k.optional(),resultProviderMetadata:k.optional(),approval:X.optional()}),z.object({type:z.literal("dynamic-tool"),dynamic:z.literal(!1).optional(),toolName:z.string(),toolCallId:z.string(),title:z.string().optional(),toolMetadata:p0.optional(),state:z.literal("output-denied"),input:z.unknown(),providerExecuted:z.boolean().optional(),output:z.never().optional(),errorText:z.never().optional(),callProviderMetadata:k.optional(),approval:Q}),z.object({type:z.string().startsWith("tool-"),toolCallId:z.string(),title:z.string().optional(),toolMetadata:p0.optional(),state:z.literal("input-streaming"),providerExecuted:z.boolean().optional(),callProviderMetadata:k.optional(),input:z.unknown().optional(),rawInput:z.string().optional(),inputEncoding:z.enum(["json","text"]).optional(),output:z.never().optional(),errorText:z.never().optional(),approval:z.never().optional()}),z.object({type:z.string().startsWith("tool-"),toolCallId:z.string(),title:z.string().optional(),toolMetadata:p0.optional(),state:z.literal("input-available"),providerExecuted:z.boolean().optional(),input:z.unknown(),output:z.never().optional(),errorText:z.never().optional(),callProviderMetadata:k.optional(),approval:z.never().optional()}),z.object({type:z.string().startsWith("tool-"),toolCallId:z.string(),title:z.string().optional(),toolMetadata:p0.optional(),state:z.literal("approval-requested"),input:z.unknown(),providerExecuted:z.boolean().optional(),output:z.never().optional(),errorText:z.never().optional(),callProviderMetadata:k.optional(),approval:Y}),z.object({type:z.string().startsWith("tool-"),toolCallId:z.string(),title:z.string().optional(),toolMetadata:p0.optional(),state:z.literal("approval-responded"),input:z.unknown(),providerExecuted:z.boolean().optional(),output:z.never().optional(),errorText:z.never().optional(),callProviderMetadata:k.optional(),approval:J}),z.object({type:z.string().startsWith("tool-"),toolCallId:z.string(),title:z.string().optional(),toolMetadata:p0.optional(),state:z.literal("output-available"),providerExecuted:z.boolean().optional(),input:z.unknown(),output:z.unknown(),errorText:z.never().optional(),callProviderMetadata:k.optional(),resultProviderMetadata:k.optional(),preliminary:z.boolean().optional(),approval:X.optional()}),z.object({type:z.string().startsWith("tool-"),toolCallId:z.string(),title:z.string().optional(),toolMetadata:p0.optional(),state:z.literal("output-error"),providerExecuted:z.boolean().optional(),input:z.unknown().optional(),rawInput:z.unknown().optional(),output:z.never().optional(),errorText:z.string(),callProviderMetadata:k.optional(),resultProviderMetadata:k.optional(),approval:X.optional()}),z.object({type:z.string().startsWith("tool-"),toolCallId:z.string(),title:z.string().optional(),toolMetadata:p0.optional(),state:z.literal("output-denied"),providerExecuted:z.boolean().optional(),input:z.unknown(),output:z.never().optional(),errorText:z.never().optional(),callProviderMetadata:k.optional(),approval:Q})]))}).superRefine((G,$)=>{if(G.role!=="assistant"&&G.parts.length===0)$.addIssue({origin:"array",code:"too_small",minimum:1,inclusive:!0,input:G.parts,path:["parts"],message:"Message must contain at least one part"})})).nonempty("Messages array must not be empty"))});var $P=I0({prefix:"call",size:24});var WP=I0({prefix:"call",size:24});var zP=I0({prefix:"call",size:24});var KP=I0({prefix:"aiobj",size:24});function SG(Y){return({url:J,abortSignal:X})=>wV({url:J,maxBytes:Y?.maxBytes,abortSignal:X})}var HP=I0({prefix:"aiobj",size:24});var UP=I0({prefix:"call",size:24});var ZP=SG();var VP=z.object({token:z.string().refine((Y)=>Y.trim().length>0),url:z.string().refine((Y)=>{try{let J=new URL(Y);return(J.protocol==="ws:"||J.protocol==="wss:")&&J.hostname!==""}catch{return!1}}),expiresAt:z.number().positive().max(Number.MAX_SAFE_INTEGER).optional(),tools:z.array(z.object({type:z.literal("function"),name:z.string().min(1),description:z.string().optional(),parameters:z.record(z.string(),z.unknown())})).optional()});var lV="AI_NoSuchProviderError",BP=`vercel.ai.error.${lV}`;var LP=I0({prefix:"call",size:24});var NP=I0({prefix:"call",size:24}),jP=SG();var FP=I0({prefix:"call",size:24});class l0 extends $9{name="ProviderResponseStreamError";constructor(Y,J){super({message:Y,url:"",requestBodyValues:void 0,cause:J?.cause,isRetryable:J?.retryable??!0})}}var y0={};aY(y0,{toWebSocketUrl:()=>KB,streamResponsesWebSocket:()=>BB,parseRateLimitSignal:()=>S1,normalizeHeaders:()=>HB,markOversizedFrame:()=>uG,isUpgradeFailure:()=>UB,isOversizedFrame:()=>ZB,isNonEmittingFrame:()=>lG,isAbortError:()=>p4,connectResponsesWebSocket:()=>VB,TERMINAL_AFTER_OUTPUT_MESSAGE:()=>u4,PROTOCOL_HEADER:()=>fG,OpenAIWebSocket:()=>y0,OVERSIZED_FRAME_MESSAGE:()=>dG});function w1(Y){let J=Number(Y.match(/^HTTP\/\d(?:\.\d)?\s+(\d{3})/)?.[1]);return Number.isFinite(J)?J:void 0}function h8(Y,J,X=!1){let G=Buffer.from(Y.slice(0,J)).toString("latin1").split(`\r
|
|
41
|
+
`),$=G[0]??"",W=w1($);if(W===void 0||W===101)return;let K=Object.fromEntries(G.slice(1).flatMap((B)=>{let F=B.indexOf(":");return F===-1?[]:[[B.slice(0,F).trim().toLowerCase(),B.slice(F+1).trim()]]})),H=Y.slice(J+4),U=K["content-length"],V=Number(U);if(!X&&(U===void 0||Number.isFinite(V)&&H.length<V))return;let D=Buffer.from(H).toString("utf8"),L=(()=>{try{let B=JSON.parse(D);return n(B)?B:void 0}catch{return}})();return{message:`WS upgrade failed: ${$}`,status:W,status_code:W,headers:K,body:D,...n(L?.error)?{error:L.error}:{}}}var dV="258EAFA5-E914-47DA-95CA-C5AB0DC85B11",IG=["chatgpt-account-id","authorization","user-agent","originator","openai-beta","version","x-codex-beta-features","x-codex-turn-metadata","x-client-request-id","session-id","thread-id","x-codex-window-id"];class f4{url;readyState=0;socket;sessionID;listeners={open:new Set,message:new Set,error:new Set,close:new Set};rxBuffer=new Uint8Array(0);handshakeDone=!1;upgradeFailureEmitted=!1;expectedAccept="";fragOpcode=0;fragChunks=[];writeQueue=[];constructor(Y,J,X){this.url=Y,this.sessionID=X?.sessionID,this.connect(Y,J)}addEventListener(Y,J,X){this.listeners[Y]?.add(J)}removeEventListener(Y,J){this.listeners[Y]?.delete(J)}peerClose;closeEmitted=!1;emitClose(Y,J){if(this.closeEmitted)return;this.closeEmitted=!0,this.emit("close",{code:Y,reason:J})}emit(Y,J){for(let X of[...this.listeners[Y]??[]])try{X(J)}catch{}}async connect(Y,J){let X=new URL(Y.replace(/^ws:/,"http:").replace(/^wss:/,"https:")),Q=X.hostname,G=X.port?Number(X.port):X.protocol==="https:"?443:80,$=`${X.pathname}${X.search}`,W=crypto.getRandomValues(new Uint8Array(16)),K=Buffer.from(W).toString("base64"),H=await crypto.subtle.digest("SHA-1",new TextEncoder().encode(K+dV));this.expectedAccept=Buffer.from(new Uint8Array(H)).toString("base64");let U={};for(let[L,B]of Object.entries(J))U[L.toLowerCase()]=B;let V=[`GET ${$} HTTP/1.1`,`Host: ${Q}`,"Connection: Upgrade","Upgrade: websocket","Sec-WebSocket-Version: 13",`Sec-WebSocket-Key: ${K}`];for(let L of IG)if(U[L]!==void 0)V.push(`${iV(L)}: ${U[L]}`);for(let[L,B]of Object.entries(J))if(!IG.includes(L.toLowerCase())&&L.toLowerCase()!=="content-length")V.push(`${L}: ${B}`);let D=`${V.join(`\r
|
|
42
|
+
`)}\r
|
|
43
|
+
\r
|
|
44
|
+
`;try{this.log("connect_start",{host:Q,port:G,tls:X.protocol==="https:"});let L=globalThis.Bun?.connect;if(!L)throw Error("Bun.connect is not available");this.socket=await L({hostname:Q,port:G,tls:X.protocol==="https:"?{serverName:Q}:void 0,socket:{open:(B)=>{this.socket=B,this.enqueueWrite(new TextEncoder().encode(D))},data:(B,F)=>this.onData(F),drain:()=>this.flushWrites(),error:(B,F)=>{if(this.emitRejectedUpgrade(!0))return;this.readyState=3;let P=F instanceof Error?F.message:String(F);this.log("socket_error",{message:P}),this.emit("error",{message:P})},close:()=>{if(this.emitRejectedUpgrade(!0))return;this.readyState=3,this.log("socket_close"),this.emitClose(this.peerClose?.code??1006,this.peerClose?.reason??"socket closed")}}})}catch(L){this.readyState=3;let B=L instanceof Error?L.message:String(L);this.log("connect_exception",{message:B}),this.emit("error",{message:B})}}onData(Y){if(this.rxBuffer=nV(this.rxBuffer,Y),!this.handshakeDone){let J=Buffer.from(this.rxBuffer).toString("latin1"),X=J.indexOf(`\r
|
|
45
|
+
\r
|
|
46
|
+
`);if(X===-1)return;let Q=J.slice(0,X),G=Q.split(`\r
|
|
47
|
+
`)[0]??"",$=Q.match(/sec-websocket-accept:\s*(\S+)/i),W=w1(G);if(W!==101){if(W===void 0){this.readyState=3;try{this.socket?.end()}catch{}this.log("upgrade_failed",{statusLine:G}),this.emit("error",{message:`WS upgrade failed: ${G}`});return}if(!this.emitRejectedUpgrade())return;try{this.socket?.end()}catch{}return}if(!$||$[1]!==this.expectedAccept){this.readyState=3;try{this.socket?.end()}catch{}this.log("accept_mismatch",{statusLine:G}),this.emit("error",{message:"WS upgrade Sec-WebSocket-Accept mismatch"});return}this.handshakeDone=!0,this.readyState=1,this.rxBuffer=this.rxBuffer.slice(X+4),this.log("open",{statusLine:G}),this.emit("open",{})}this.drainFrames()}emitRejectedUpgrade(Y=!1){if(this.upgradeFailureEmitted)return!0;if(this.handshakeDone)return!1;let J=Buffer.from(this.rxBuffer).indexOf(`\r
|
|
48
|
+
\r
|
|
49
|
+
`);if(J===-1)return!1;let X=h8(this.rxBuffer,J,Y);if(!X)return!1;return this.upgradeFailureEmitted=!0,this.readyState=3,this.log("upgrade_failed",{status:X.status,partial:Y}),this.emit("error",X),!0}drainFrames(){for(;;){let Y=this.rxBuffer;if(Y.length<2)return;let J=Y[0],X=Y[1],Q=(J&128)!==0,G=J&15,$=(X&128)!==0,W=X&127,K=2;if(W===126){if(Y.length<4)return;W=Y[2]<<8|Y[3],K=4}else if(W===127){if(Y.length<10)return;W=0;for(let U=0;U<8;U++)W=W*256+Y[2+U];K=10}if($)K+=4;if(Y.length<K+W)return;let H=Y.slice(K,K+W);this.rxBuffer=Y.slice(K+W),this.handleFrame(Q,G,H)}}handleFrame(Y,J,X){if(J===9){this.writeFrame(10,X);return}if(J===10)return;if(J===8){let G=1005,$="";if(X.length>=2)G=X[0]<<8|X[1],$=Buffer.from(X.slice(2)).toString("utf-8");this.readyState=3,this.peerClose={code:G,reason:$};try{this.socket?.end()}catch{}this.log("close_frame",{code:G,reason:$}),this.emitClose(G,$);return}if(J===1||J===2)this.fragOpcode=J,this.fragChunks=[X];else if(J===0)this.fragChunks.push(X);if(!Y)return;let Q=oV(this.fragChunks);if(this.fragChunks=[],this.fragOpcode===1){let G=Buffer.from(Q).toString("utf-8");this.emit("message",{data:G})}}send(Y){if(this.readyState!==1)return;this.writeFrame(1,new TextEncoder().encode(Y))}writeFrame(Y,J){let X=J.length,Q=crypto.getRandomValues(new Uint8Array(4)),G;if(X<126)G=[128|Y,128|X];else if(X<65536)G=[128|Y,254,X>>8&255,X&255];else{G=[128|Y,255];for(let K=7;K>=0;K--)G.push(X/2**(8*K)&255)}let $=new Uint8Array(X);for(let K=0;K<X;K++)$[K]=J[K]^Q[K%4];let W=new Uint8Array(G.length+4+X);W.set(G,0),W.set(Q,G.length),W.set($,G.length+4);try{this.enqueueWrite(W)}catch{}}enqueueWrite(Y){this.writeQueue.push(Y),this.flushWrites()}flushWrites(){let Y=this.socket;if(!Y)return;while(this.writeQueue.length>0){let J=this.writeQueue[0],X=Y.write(J);if(X<J.length){this.writeQueue[0]=J.slice(X),this.log("write_backpressure",{written:X,remaining:J.length-X});return}this.writeQueue.shift()}}close(){if(this.readyState===3)return;this.readyState=2;try{this.writeFrame(8,new Uint8Array([3,232])),this.socket?.end()}catch{}this.readyState=3}log(Y,J){return Y9({component:"raw-ws-bun",event:Y,sessionID:this.sessionID,url:this.url,...J})}}function iV(Y){return Y}function nV(Y,J){let X=new Uint8Array(Y.length+J.length);return X.set(Y,0),X.set(J,Y.length),X}function oV(Y){let J=0;for(let G of Y)J+=G.length;let X=new Uint8Array(J),Q=0;for(let G of Y)X.set(G,Q),Q+=G.length;return X}import{connect as rV}from"node:net";import{connect as sV}from"node:tls";var aV="258EAFA5-E914-47DA-95CA-C5AB0DC85B11",bG=["chatgpt-account-id","authorization","user-agent","originator","openai-beta","version","x-codex-beta-features","x-codex-turn-metadata","x-client-request-id","session-id","thread-id","x-codex-window-id"];class m4{url;readyState=0;socket;sessionID;listeners={open:new Set,message:new Set,error:new Set,close:new Set};rxBuffer=new Uint8Array(0);handshakeDone=!1;upgradeFailureEmitted=!1;expectedAccept="";fragOpcode=0;fragChunks=[];constructor(Y,J,X){this.url=Y,this.sessionID=X?.sessionID,this.connect(Y,J)}addEventListener(Y,J,X){this.listeners[Y]?.add(J)}removeEventListener(Y,J){this.listeners[Y]?.delete(J)}peerClose;closeEmitted=!1;emitClose(Y,J){if(this.closeEmitted)return;this.closeEmitted=!0,this.emit("close",{code:Y,reason:J})}emit(Y,J){for(let X of[...this.listeners[Y]??[]])try{X(J)}catch{}}async connect(Y,J){let X=new URL(Y.replace(/^ws:/,"http:").replace(/^wss:/,"https:")),Q=X.hostname,G=X.port?Number(X.port):X.protocol==="https:"?443:80,$=`${X.pathname}${X.search}`,W=crypto.getRandomValues(new Uint8Array(16)),K=Buffer.from(W).toString("base64"),H=await crypto.subtle.digest("SHA-1",new TextEncoder().encode(K+aV));this.expectedAccept=Buffer.from(new Uint8Array(H)).toString("base64");let U={};for(let[L,B]of Object.entries(J))U[L.toLowerCase()]=B;let V=[`GET ${$} HTTP/1.1`,`Host: ${Q}`,"Connection: Upgrade","Upgrade: websocket","Sec-WebSocket-Version: 13",`Sec-WebSocket-Key: ${K}`];for(let L of bG)if(U[L]!==void 0)V.push(`${tV(L)}: ${U[L]}`);for(let[L,B]of Object.entries(J))if(!bG.includes(L.toLowerCase())&&L.toLowerCase()!=="content-length")V.push(`${L}: ${B}`);let D=`${V.join(`\r
|
|
50
|
+
`)}\r
|
|
51
|
+
\r
|
|
52
|
+
`;try{this.log("connect_start",{host:Q,port:G,tls:X.protocol==="https:"});let L=()=>{this.socket?.write(D)},B=X.protocol==="https:"?sV({host:Q,port:G,servername:Q},L):rV({host:Q,port:G},L);this.socket=B,B.on("data",(F)=>{this.onData(typeof F==="string"?Buffer.from(F,"binary"):F)}),B.on("error",(F)=>{if(this.emitRejectedUpgrade(!0))return;this.readyState=3;let P=F instanceof Error?F.message:String(F);this.log("socket_error",{message:P}),this.emit("error",{message:P})}),B.on("close",(F)=>{if(this.emitRejectedUpgrade(!0))return;this.readyState=3,this.log("socket_close",{hadError:F}),this.emitClose(this.peerClose?.code??1006,this.peerClose?.reason??"socket closed")})}catch(L){this.readyState=3,this.log("connect_exception",{message:L instanceof Error?L.message:String(L)}),this.emit("error",{message:L instanceof Error?L.message:String(L)})}}onData(Y){if(this.rxBuffer=eV(this.rxBuffer,Y),!this.handshakeDone){let J=Buffer.from(this.rxBuffer).toString("latin1"),X=J.indexOf(`\r
|
|
53
|
+
\r
|
|
54
|
+
`);if(X===-1)return;let Q=J.slice(0,X),G=Q.split(`\r
|
|
55
|
+
`)[0]??"",$=Q.match(/sec-websocket-accept:\s*(\S+)/i),W=w1(G);if(W!==101){if(W===void 0){this.readyState=3,this.socket?.destroy?.(),this.log("upgrade_failed",{statusLine:G}),this.emit("error",{message:`WS upgrade failed: ${G}`});return}if(!this.emitRejectedUpgrade())return;this.socket?.destroy?.();return}if(!$||$[1]!==this.expectedAccept){this.readyState=3,this.socket?.destroy?.(),this.log("accept_mismatch",{statusLine:G}),this.emit("error",{message:"WS upgrade Sec-WebSocket-Accept mismatch"});return}this.handshakeDone=!0,this.readyState=1,this.rxBuffer=this.rxBuffer.slice(X+4),this.log("open",{statusLine:G}),this.emit("open",{})}this.drainFrames()}emitRejectedUpgrade(Y=!1){if(this.upgradeFailureEmitted)return!0;if(this.handshakeDone)return!1;let J=Buffer.from(this.rxBuffer).indexOf(`\r
|
|
56
|
+
\r
|
|
57
|
+
`);if(J===-1)return!1;let X=h8(this.rxBuffer,J,Y);if(!X)return!1;return this.upgradeFailureEmitted=!0,this.readyState=3,this.log("upgrade_failed",{status:X.status,partial:Y}),this.emit("error",X),!0}drainFrames(){for(;;){let Y=this.rxBuffer;if(Y.length<2)return;let J=Y[0],X=Y[1],Q=(J&128)!==0,G=J&15,$=(X&128)!==0,W=X&127,K=2;if(W===126){if(Y.length<4)return;W=Y[2]<<8|Y[3],K=4}else if(W===127){if(Y.length<10)return;W=0;for(let U=0;U<8;U++)W=W*256+Y[2+U];K=10}if($)K+=4;if(Y.length<K+W)return;let H=Y.slice(K,K+W);this.rxBuffer=Y.slice(K+W),this.handleFrame(Q,G,H)}}handleFrame(Y,J,X){if(J===9){this.writeFrame(10,X);return}if(J===10)return;if(J===8){let G=1005,$="";if(X.length>=2)G=X[0]<<8|X[1],$=Buffer.from(X.slice(2)).toString("utf-8");this.readyState=3,this.peerClose={code:G,reason:$};try{this.socket?.end()}catch{}this.log("close_frame",{code:G,reason:$}),this.emitClose(G,$);return}if(J===1||J===2)this.fragOpcode=J,this.fragChunks=[X];else if(J===0)this.fragChunks.push(X);if(!Y)return;let Q=YB(this.fragChunks);if(this.fragChunks=[],this.fragOpcode===1){let G=Buffer.from(Q).toString("utf-8");this.emit("message",{data:G})}}send(Y){if(this.readyState!==1)return;this.writeFrame(1,new TextEncoder().encode(Y))}writeFrame(Y,J){let X=J.length,Q=crypto.getRandomValues(new Uint8Array(4)),G;if(X<126)G=[128|Y,128|X];else if(X<65536)G=[128|Y,254,X>>8&255,X&255];else{G=[128|Y,255];for(let K=7;K>=0;K--)G.push(X/2**(8*K)&255)}let $=new Uint8Array(X);for(let K=0;K<X;K++)$[K]=J[K]^Q[K%4];let W=new Uint8Array(G.length+4+X);W.set(G,0),W.set(Q,G.length),W.set($,G.length+4);try{this.socket?.write(W)}catch{}}close(){if(this.readyState===3)return;this.readyState=2;try{this.writeFrame(8,new Uint8Array([3,232])),this.socket?.end()}catch{}this.readyState=3}log(Y,J){return Y9({component:"raw-ws-node",event:Y,sessionID:this.sessionID,url:this.url,...J})}}function tV(Y){return Y}function eV(Y,J){let X=new Uint8Array(Y.length+J.length);return X.set(Y,0),X.set(J,Y.length),X}function YB(Y){let J=0;for(let G of Y)J+=G.length;let X=new Uint8Array(J),Q=0;for(let G of Y)X.set(G,Q),Q+=G.length;return X}function JB(){return typeof globalThis.Bun?.connect==="function"}var kG=JB()?f4:m4;function y8(Y){return process.env[Y]??process.env[Y.toLowerCase()]}function XB(Y){let J=y8("NO_PROXY");if(!J)return!1;let X=Y.hostname.toLowerCase(),Q=J.split(",").map((G)=>G.trim().toLowerCase()).filter(Boolean);for(let G of Q){if(G==="*")return!0;if(G.startsWith(".")){if(X===G.slice(1)||X.endsWith(G))return!0}else if(X===G||X.endsWith(`.${G}`))return!0}return!1}function QB(Y){let J=new URL(Y);if(XB(J))return;if(J.protocol==="http:")return y8("HTTP_PROXY");if(J.protocol==="https:")return y8("HTTPS_PROXY")??y8("HTTP_PROXY");return}var xG={getProxyForUrl:QB};var GB=z0("quota"),d6=z0("transport"),fG="responses_websockets=2026-02-06",vG=["chatgpt-account-id","authorization","user-agent","originator","openai-beta","version","x-codex-beta-features","x-codex-turn-metadata","x-client-request-id","session-id","thread-id","x-codex-window-id"],$B=new Set([h6,"x-opencode-title"]);function WB(Y){let J=new Map;for(let Q of Object.keys(Y))J.set(Q.toLowerCase(),Q);let X={};for(let Q of vG){let G=J.get(Q),$=G===void 0?void 0:Y[G];if(G!==void 0&&$!==void 0)X[G]=$}for(let[Q,G]of Object.entries(Y))if(!vG.includes(Q.toLowerCase()))X[Q]=G;return X}function zB(Y){let J={};for(let[X,Q]of Object.entries(Y)){if($B.has(X.toLowerCase()))continue;J[X]=Q}return J}function KB(Y){return Y.replace(/^http/,"ws")}function HB(Y){let J={};if(!Y)return J;if(Y instanceof Headers)return Y.forEach((X,Q)=>{J[Q.toLowerCase()]=X}),J;if(Array.isArray(Y)){for(let[X,Q]of Y)J[X.toLowerCase()]=Q;return J}for(let[X,Q]of Object.entries(Y))if(Q!=null)J[X.toLowerCase()]=String(Q);return J}function p4(Y){return Y instanceof DOMException&&Y.name==="AbortError"}var mG=new WeakSet;function UB(Y){return typeof Y==="object"&&Y!==null&&mG.has(Y)}var cG=new WeakSet;function ZB(Y){return typeof Y==="object"&&Y!==null&&cG.has(Y)}function uG(Y){return cG.add(Y),Y}function hG(Y,J){let X=Error(Y,J===void 0?void 0:{cause:J});return mG.add(X),X}function VB(Y){return new Promise((J,X)=>{if(Y.signal?.aborted){X(c4(Y.signal));return}let Q={...Y.headers,"openai-beta":Y.headers["openai-beta"]??fG},G=Q[h6]??Q["session-id"];delete Q["content-length"],Q=WB(zB(Q));let $=typeof Bun>"u"?void 0:xG.getProxyForUrl(Y.url.replace(/^wss:/,"https:").replace(/^ws:/,"http:")),W=!0,K=Y.rawWebSocket?new kG(Y.url,Q,{sessionID:G}):new globalThis.WebSocket(Y.url,{headers:Q,...$?{proxy:$}:{},perMessageDeflate:W}),H=Y.timeout?setTimeout(()=>{U(),K.close(),X(Error("WebSocket connect timed out"))},Y.timeout):void 0;function U(){if(H)clearTimeout(H);K.removeEventListener("open",V),K.removeEventListener("error",D),K.removeEventListener("close",L),Y.signal?.removeEventListener("abort",B)}function V(){U(),J(K)}function D(F){U(),X(hG(y9(F),F))}function L(F){U(),X(hG(iG("WebSocket closed before open",F.code,F.reason)))}function B(){U(),K.close(),X(c4(Y.signal))}K.addEventListener("open",V,{once:!0}),K.addEventListener("error",D,{once:!0}),K.addEventListener("close",L,{once:!0}),Y.signal?.addEventListener("abort",B,{once:!0})})}function BB(Y){let J=new TextEncoder,X=Y.socket,Q,G=()=>{},$=!1,W=0,K=!1,H=!1,U,V=[],D=12,L=[],B=typeof Y.body.previous_response_id==="string"?Y.body.previous_response_id:void 0,F=typeof Y.body.prompt_cache_key==="string"?Y.body.prompt_cache_key:void 0,P={sessionID:Y.sessionID,codexSessionID:F},q,E=0,S,x=new Set,j={addedItemIds:new Set,reasoningItemIds:new Set,finished:!1,other:!1};function C(){if(U)clearTimeout(U);G(),Y.signal?.removeEventListener("abort",x0)}function h(s=X){s.close()}function A(){C(),Q?.enqueue(J.encode(`data: [DONE]
|
|
58
|
+
|
|
59
|
+
`)),Q?.close()}function g(s){B0(s,s)}function r(){if(!H)return"none";if(j.other)return"other";if(j.finished)return j.reasoningItemIds.size>0?"other":"finished-calls";return j.addedItemIds.size>0?"unfinished-calls":"none"}function i(){Q?.enqueue(J.encode(`data: ${JSON.stringify(PB)}
|
|
60
|
+
|
|
61
|
+
`)),A()}function V0(s){let P0={...P,openingFrameTypes:V,openingItemTypes:L,responseID:q,previousResponseID:B,hasContinuation:B!==void 0,framesSinceCreated:E,msSinceLastFrame:S===void 0?void 0:Date.now()-S},l=r();if(l==="finished-calls"){if($)return;d6.warn("stream failed after finished function calls only; ended as completed",{reason:s.message,emittedOutput:!0,outputShape:l,...P0}),$=!0,C(),Y.onConnectionInvalid?.(s),i();return}if(l==="other"){let u=u4;d6.warn("stream failed after output; not retried",{reason:s.message,emittedOutput:!0,outputShape:l,...P0}),B0(Error(u,{cause:s}),new l0(u,{cause:s}));return}let I=j.reasoningItemIds.size;d6.warn(l==="unfinished-calls"?"stream failed after unfinished function calls only; retryable":I>0?"stream failed after reasoning without text only; retryable":"stream failed before output; retryable",{reason:s.message,emittedOutput:H,outputShape:l,emptyReasoningItems:I,...P0}),g(s)}function B0(s,P0){if($)return;$=!0,C(),Y.onConnectionInvalid?.(P0),Q?.error(s)}function p(s){if($)return;if(!Y.idleTimeout)return;if(U)clearTimeout(U);U=setTimeout(()=>V0(new l0(s)),Y.idleTimeout)}async function t(s){if($)return;if(typeof s.data!=="string"){V0(new l0("Unexpected binary WebSocket frame"));return}let P0=s.data,l=(()=>{try{let y=JSON.parse(P0);return typeof y==="object"&&y!==null?y:void 0}catch{return}})();if(l?.type==="codex.rate_limits"){GB.debug("codex.rate_limits frame received",{pid:process.pid}),p("idle timeout waiting for websocket");let y=gG(l);Y.onQuota?.(y);return}let I=r(),u=I==="none"||I==="unfinished-calls"?S1(l):void 0;if(u&&l){$=!0,C(),Y.onRateLimitReached?.(u.window,u.resetAt),Y.onTerminal?.(l),Y.onFirstEvent?.(),Q?.error(new l0(`OpenAI account rate limit reached at admission (${u.window})`));return}if(l?.type==="error"&&Y.onRetryableTerminal){if(G(),U)clearTimeout(U);U=void 0;try{let y=await Y.onRetryableTerminal(l);if($){if(y)h(y);return}if(y){H0(y);return}}catch(y){V0(new l0(y instanceof Error?y.message:String(y),{cause:y}));return}}let d=jB(l,P0);if(d&&l){if(!K)Y.onFirstEvent?.(d);$=!0,C(),Y.onTerminal?.(l);let y=new $9({message:d.message,url:X.url,requestBodyValues:Y.body,statusCode:d.status,responseHeaders:d.headers,responseBody:d.body}),$0=r();if($0==="none"||$0==="unfinished-calls"){if($0==="unfinished-calls")d6.warn("protocol error after unfinished function calls only; surfaced as before output",{...P,status:d.status,reason:d.message,outputShape:$0,responseID:q,previousResponseID:B});Q?.error(y);return}if(d6.warn($0==="finished-calls"?"protocol error after finished function calls only; ended as completed":"protocol error after output; not retried",{...P,status:d.status,reason:d.message,outputShape:$0,responseID:q,previousResponseID:B}),$0==="finished-calls"){i();return}Q?.error(Error(u4,{cause:y}));return}if(n(l)&&l.type==="response.failed"){let y=n(l.response)?l.response.failed:void 0,$0=n(y)?y.rate_limit_reached_type:void 0;if(typeof $0==="string"){$=!0,C(),Y.onRateLimitReached?.($0),Y.onTerminal?.(l);let M0=r();if(M0!=="none")d6.warn(M0==="other"?"rate limit reached after output; ended without retry":M0==="finished-calls"?"rate limit reached after finished function calls only; ended as completed":"rate limit reached after unfinished function calls only; retryable",{...P,outputShape:M0,responseID:q,previousResponseID:B});if(M0==="none"||M0==="unfinished-calls")Y.onFirstEvent?.(),Q?.error(new l0(`OpenAI account rate limit reached mid-stream (${$0})`));else if(M0==="finished-calls")i();else A();return}}if(!l){if(!K)Y.onFirstEvent?.();p("idle timeout waiting for websocket");return}if(LB(l,x),!K)Y.onFirstEvent?.();if(Q?.enqueue(J.encode(`${P0.split(/\r?\n/).map((y)=>`data: ${y}`).join(`
|
|
62
|
+
`)}
|
|
63
|
+
|
|
64
|
+
`)),K=!0,S=Date.now(),q!==void 0)E++;if(V.length<D)V.push(String(l.type));if(l.type==="response.output_item.added"&&L.length<D)L.push(n(l.item)?String(l.item.type):"unknown");if(l.type==="response.created")q=DB(l),d6.debug("response created",{...P,responseID:q,previousResponseID:B,hasContinuation:B!==void 0});if(!lG(l.type))H=!0,_B(l,j);if(p("idle timeout waiting for websocket"),l.type==="response.completed"||l.type==="response.done"){$=!0,NB(l,x),Y.onComplete?.(l,x),Y.onTerminal?.(l),A();return}if(l.type==="response.failed"||l.type==="response.incomplete"||l.type==="error")$=!0,Y.onTerminal?.(l),A()}function L0(s){V0(new l0(y9(s),{cause:s}))}function v(s){if($)return;let P0=s.code===1009,l=new l0(P0?dG:iG("WebSocket closed before response.completed",s.code,s.reason),{retryable:!P0});if(P0)d6.warn("websocket peer refused the request size",{...P,requestBytes:W,reason:s.reason.toString()});V0(P0?uG(l):l)}function x0(){let s=c4(Y.signal);if($)return;$=!0,C(),h(),Y.onAbort?.(s),Q?.error(s)}function T0(s){if($)return;$=!0,C(),h(),Y.onAbort?.(FB(s))}function H0(s){G(),X=s,X.addEventListener("message",t),X.addEventListener("error",L0,{once:!0}),X.addEventListener("close",v,{once:!0}),G=()=>{X.removeEventListener("message",t),X.removeEventListener("error",L0),X.removeEventListener("close",v)};let{background:P0,...l}=Y.body;p("idle timeout sending websocket request");try{let I=JSON.stringify({type:"response.create",...l});W=I.length,X.send(I),p("idle timeout waiting for websocket")}catch(I){if($)return;g(new l0(I instanceof Error?I.message:String(I),{cause:I}))}}return new Response(new ReadableStream({start(s){if(Q=s,Y.signal?.addEventListener("abort",x0,{once:!0}),Y.signal?.aborted){x0();return}H0(X)},cancel(s){T0(s)}}),{status:200,headers:{"content-type":"text/event-stream"}})}function LB(Y,J){if(Y.type!=="response.output_item.done")return;if(!n(Y.item))return;pG(Y.item,J)}function NB(Y,J){let X=Y.response;if(!n(X)||!Array.isArray(X.output))return;for(let Q of X.output)if(n(Q))pG(Q,J)}function pG(Y,J){if(Y.type!=="function_call"&&Y.type!=="custom_tool_call")return;let X=typeof Y.call_id==="string"?Y.call_id:typeof Y.id==="string"?Y.id:void 0;if(X)J.add(X)}function jB(Y,J){if(Y?.type!=="error")return;let X=Y.status??Y.status_code;if(typeof X!=="number"||X>=200&&X<300)return;return{status:X,headers:n(Y.headers)?Object.fromEntries(Object.entries(Y.headers).flatMap(([Q,G])=>typeof G==="string"||typeof G==="number"||typeof G==="boolean"?[[Q,String(G)]]:[])):void 0,body:J,message:n(Y.error)&&typeof Y.error.message==="string"?Y.error.message:`${X}`}}function S1(Y){if(typeof Y==="string")try{return S1(JSON.parse(Y))}catch{return}if(!n(Y))return;let J=S1(Y.cause);if(J)return J;let X=S1(Y.body);if(X)return X;let Q=n(Y.error)?Y.error:Y,G=typeof Q.type==="string"?Q.type:void 0,$=Y.status??Y.status_code;if(G!=="usage_limit_reached"&&$!==429)return;let{resets_at:W,resets_in_seconds:K}=Q,H=typeof W==="number"&&Number.isFinite(W)&&W>0?W*1000:typeof K==="number"&&Number.isFinite(K)&&K>0?Date.now()+K*1000:void 0;return{window:G??"primary",resetAt:H}}function FB(Y){if(p4(Y))return Y;if(Y instanceof Error)return Y;return new DOMException(typeof Y==="string"?Y:"Aborted","AbortError")}function c4(Y){let J=Y?.reason;if(p4(J))return J;if(OB(J))return J;return new DOMException(J instanceof Error?J.message:"Aborted","AbortError")}function OB(Y){return Y instanceof Error&&(Y.name==="ProviderHeaderTimeoutError"||Y.name==="ProviderResponseStreamError")}function DB(Y){let J=Y.response;if(!n(J))return;return typeof J.id==="string"?J.id:void 0}function _B(Y,J){let X=n(Y.item)?Y.item:void 0;switch(Y.type){case"response.output_item.added":if(X?.type==="function_call"&&typeof X.id==="string"){J.addedItemIds.add(X.id);return}if(yG(X)&&typeof X?.id==="string"){J.reasoningItemIds.add(X.id);return}break;case"response.function_call_arguments.delta":case"response.function_call_arguments.done":if(typeof Y.item_id==="string"&&J.addedItemIds.has(Y.item_id))return;break;case"response.output_item.done":if(X?.type==="function_call"&&X.status==="completed"&&typeof X.id==="string"&&typeof X.call_id==="string"&&typeof X.name==="string"&&typeof X.arguments==="string"){J.finished=!0;return}if(yG(X)&&typeof X?.id==="string"&&J.reasoningItemIds.has(X.id))return;break}J.other=!0}function yG(Y){if(Y?.type!=="reasoning")return!1;let J=(X)=>X===void 0||X===null||Array.isArray(X)&&X.length===0;return J(Y.summary)&&J(Y.content)}var PB={type:"response.completed",response:{status:"completed",incomplete_details:null,usage:{input_tokens:0,output_tokens:0,total_tokens:0}}};function lG(Y){return Y==="response.created"||Y==="response.in_progress"||Y.startsWith("codex.")}var u4="The response ended early after part of it had already been shown. It was not sent again, because repeating it would duplicate that output and re-run any tools it had started. The transport log records what ended it.",dG="The request was larger than the websocket would carry, so it was sent over HTTP instead. Resending it unchanged over the same socket cannot succeed. The transport log records the size.";function iG(Y,J,X){let Q=[`code ${J}`];if(X.length>0)Q.push(X.toString());return`${Y} (${Q.join(": ")})`}var d4="x-opencode-title",g8="x-openai-auth-quota-account",l4=new Set([d4,h6,g8,"x-opencode-session"]),MB=15000,EB=300000,AB=3300000,nG="websocket_connection_limit_reached";function TB(Y){let J=typeof Y["chatgpt-account-id"]==="string"?Y["chatgpt-account-id"]:"",X=typeof Y.authorization==="string"&&Y.authorization.startsWith("Bearer ")?Y.authorization.slice(7):"",Q=J?`acct:${J}`:`tok:${X}`;return qB("sha256").update(Q).digest("hex").slice(0,12)}function RB(Y){let J=Y?.httpFetch??globalThis.fetch,X=new Map,Q=Y?.connectTimeout??MB,G=Y?.idleTimeout??EB,$=Y?.maxConnectionAge??AB,W=Y?.streamRetries??5,K=Y?.firstEventGraceMs??250,H=Y?.rawWebSocket??!1,U=Y?.onQuota,V=Y?.onRateLimitReached,D=setInterval(()=>P(),Math.min(G,60000));if(typeof D==="object"&&"unref"in D&&typeof D.unref==="function")D.unref();function L(S,x,j,C){if(!x||!j)return j;i4(S,oG(x),void 0,C);let h=new Headers(j.headers),A=h.get("x-codex-turn-metadata");if(!A)return j;let g=J$(A,S.turnID,S.turnStartedAt);if(!g)return j;return h.set("x-codex-turn-metadata",g),{...j,headers:h}}async function B(S,x){let j=S instanceof URL?S.toString():typeof S==="string"?S:S.url,C=y0.normalizeHeaders(x?.headers),h=W$(x),A=$8(h);if(x?.method!=="POST"||!new URL(j).pathname.endsWith("/responses"))return J(S,A);let g=(()=>{try{if(typeof x?.body!=="string")return;let H0=JSON.parse(x.body);return typeof H0==="object"&&H0!==null?H0:void 0}catch{return}})();if(!g?.stream)return J(S,A);if(C[d4]==="true")return J(S,A);let r=C[h6]??C["x-session-affinity"]??C["session-id"],i=r;if(!r)return J(S,A);let V0=y0.normalizeHeaders(h?.headers),B0=TB(V0),p=`${r}:${B0}:conversation`,t=typeof C[g8]==="string"?C[g8]:void 0,L0=V?(H0,s)=>V(H0,t,s):void 0,v=X.get(p)??{lastUsedAt:Date.now(),busy:!1,fallback:!1,streamFailures:0};X.set(p,v);let x0=oG(g),T0;if(v.fallback)return J(S,L(v,g,A,T0));if(v.busy)return J(S,L(v,g,A,T0));v.busy=!0,v.lastUsedAt=Date.now();try{T0=g9(v,x0);let H0=y0.normalizeHeaders(h?.headers),s=typeof H0.authorization==="string"&&H0.authorization.startsWith("Bearer ")?H0.authorization.slice(7):"",P0=typeof H0["chatgpt-account-id"]==="string"?H0["chatgpt-account-id"]:void 0,l=U?(q0)=>U(q0,s,t,P0):void 0,I=!v.socket&&!v.continuation?hB(H0):H0;if(v.socket=await IB(v,Y?.url??j,I,Q,$,H,x?.signal),fB(v,x0,T0))await bB(v,x0,G,{signal:x?.signal??void 0,sessionID:i,url:Y?.url??j,headers:h?.headers,onRateLimitReached:L0});let u=()=>{},d=()=>{},y=new Promise((q0,F6)=>{u=q0,d=F6}),$0=gB(v,x0,T0),M0=e6(Y$(v,$0,x0,T0)),a0=typeof M0.previous_response_id==="string";await T9({sessionID:i,transport:"websocket",phase:"main",bodyText:()=>JSON.stringify(M0),url:Y?.url??j,method:h?.method,headers:h?.headers});let w0=y0.streamResponsesWebSocket({socket:v.socket,body:M0,sessionID:i??void 0,idleTimeout:G,signal:x?.signal??void 0,onQuota:l,onRateLimitReached:L0,onFirstEvent:(q0)=>u(q0??!0),onComplete:(q0,F6)=>{let V9=aG(q0);Y9({component:"ws-pool",event:"main_completed",sessionID:i,responseID:sG(q0),usage:V9}),eG(v,x0,q0,F6,a0,T0)},onTerminal:(q0)=>{if(v.busy=!1,v.lastUsedAt=Date.now(),v.streamFailures=0,q0.type!=="response.completed"&&q0.type!=="response.done")v.continuation=void 0,b6(v)},onConnectionInvalid:(q0)=>{if(v.busy=!1,v.lastUsedAt=Date.now(),y0.isOversizedFrame(q0))v.fallback=!0;if(!v.fallback)F(v);v.continuation=void 0,b6(v),u(!1)},onAbort:(q0)=>{v.busy=!1,v.lastUsedAt=Date.now(),v.streamFailures=0,v.continuation=void 0,b6(v),d(q0)},onRetryableTerminal:async(q0)=>{let F6=rG(q0);if(!F6)return;throw v.fallback=!0,F6}}),t0=await CB(y,K);if(t0!==!1){if(t0===!0||t0.status<200||t0.status>599)return w0;return new Response(t0.body,{status:t0.status,headers:{"content-type":"application/json",...t0.headers}})}let m9=()=>J(S,L(v,g,A,T0));if(!v.fallback)return wB(w0,m9);return m9()}catch(H0){if(v.busy=!1,v.lastUsedAt=Date.now(),y0.isAbortError(H0))throw v.streamFailures=0,v.continuation=void 0,b6(v),H0;let s=y0.parseRateLimitSignal(H0);if(s)L0?.(s.window,s.resetAt);if(y0.isUpgradeFailure(H0)&&!H)v.fallback=!0;if(F(v),v.continuation=void 0,b6(v),v.fallback)return J(S,L(v,g,A,T0));return SB(new l0(H0 instanceof Error?H0.message:String(H0),{cause:H0}))}}function F(S){if(S.streamFailures++,S.streamFailures>W)S.fallback=!0}function P(){let S=Date.now();for(let[x,j]of X){if(j.busy)continue;if(S-j.lastUsedAt<G)continue;b6(j),X.delete(x)}}function q(){clearInterval(D);for(let S of X.values())b6(S);X.clear()}function E(S){let x=`${S}:`;for(let[j,C]of X){if(!j.startsWith(x))continue;b6(C),X.delete(j)}}return Object.assign(B,{close:q,remove:E})}function rG(Y){if(Y.type!=="error"||!n(Y.error)||Y.error.code!==nG)return;return Error(typeof Y.error.message==="string"?Y.error.message:nG)}async function CB(Y,J){if(J<=0)return!1;return new Promise((X,Q)=>{let G=setTimeout(()=>X(!1),J);Y.then(($)=>{clearTimeout(G),X($)},($)=>{clearTimeout(G),Q($)})})}function wB(Y,J){let X=Y.body;if(!X)return Y;let Q=!1,G=new ReadableStream({async start($){let W=X.getReader(),K=async(H)=>{while(!0){let{done:U,value:V}=await H.read();if(U)return;if(V&&V.length>0)Q=!0,$.enqueue(V)}};try{await K(W),$.close()}catch(H){if(Q||!y0.isOversizedFrame(H)){$.error(H);return}try{let U=await J();if(!U.ok){$.error(new l0(`HTTP fallback after an oversized WebSocket frame failed with ${U.status}`));return}if(U.body)await K(U.body.getReader());$.close()}catch(U){$.error(U)}}},cancel($){X.cancel($)}});return new Response(G,{status:Y.status,headers:Y.headers})}function SB(Y){return new Response(new ReadableStream({start(J){J.error(Y)}}),{status:200,headers:{"content-type":"text/event-stream"}})}async function IB(Y,J,X,Q,G,$,W){if(Y.socket?.readyState===WebSocket.OPEN&&Y.connectedAt&&Date.now()-Y.connectedAt<G)return Y.socket;b6(Y);let K=await y0.connectResponsesWebSocket({url:y0.toWebSocketUrl(J),headers:X,timeout:Q,rawWebSocket:$,signal:W??void 0});return Y.connectedAt=Date.now(),K}function b6(Y){if(Y.socket)Y.socket.close(),Y.socket=void 0;Y.connectedAt=void 0,Y.continuation=void 0}async function bB(Y,J,X,Q){if(!Y.socket||!Array.isArray(J.input)||J.input.length===0)return;let G=xB(J);await T9({sessionID:Q.sessionID,transport:"websocket",phase:"prewarm",bodyText:()=>JSON.stringify(G),url:Q.url,method:"POST",headers:Q.headers});let $=y0.streamResponsesWebSocket({socket:Y.socket,body:G,sessionID:Q.sessionID,idleTimeout:X,signal:Q.signal,onRateLimitReached:Q.onRateLimitReached,onComplete:(W,K)=>{Y9({component:"ws-pool",event:"prewarm_completed",sessionID:Q.sessionID,responseID:sG(W),usage:aG(W)}),eG(Y,G,W,K,!1,{input:J9([]),signature:G$(G),priorInputs:new Map})},onTerminal:(W)=>{if(W.type!=="response.completed"&&W.type!=="response.done")Y.continuation=void 0},onConnectionInvalid:()=>{Y.continuation=void 0},onAbort:()=>{Y.continuation=void 0},onRetryableTerminal:async(W)=>{let K=rG(W);if(!K)return;throw Y.fallback=!0,K}});await kB($)}function sG(Y){let J=Y.response;if(!n(J))return;return typeof J.id==="string"?J.id:void 0}function aG(Y){let J=Y.response;if(!n(J))return;return n(J.usage)?J.usage:void 0}async function kB(Y){let J=Y.body?.getReader();if(!J)return;while(!0)if((await J.read()).done)return}function xB(Y){return e6({...Y,generate:!1,input:[],previous_response_id:void 0,client_metadata:vB(Y.client_metadata)})}function tG(Y){return JSON.stringify({session_id:Y.session_id,thread_id:Y.thread_id,thread_source:Y.thread_source,turn_id:"",sandbox:Y.sandbox,request_kind:"prewarm",window_id:Y.window_id})}function vB(Y){if(!n(Y))return Y;if(typeof Y["x-codex-turn-metadata"]!=="string")return Y;try{let J=JSON.parse(Y["x-codex-turn-metadata"]);if(!n(J))return Y;return{...Y,"x-codex-turn-metadata":tG(J),"x-codex-ws-stream-request-start-ms":String(Date.now())}}catch{return Y}}function hB(Y){let J=Y["x-codex-turn-metadata"];if(!J)return Y;try{let X=JSON.parse(J);if(!n(X))return Y;return{...Y,"x-codex-turn-metadata":tG(X)}}catch{return Y}}function oG(Y){let J={...Y};if(Array.isArray(Y.input))J.input=Y.input.map(yB);return J}function yB(Y){if(!n(Y))return Y;if(typeof Y.type==="string")return Y;if(typeof Y.role!=="string")return Y;if(!("content"in Y))return Y;return{...Y,type:"message"}}function eG(Y,J,X,Q,G,$=g9(Y,J)){let W=X.response,K=n(W)&&typeof W.id==="string"?W.id:void 0;if(!K||!Array.isArray(J.input)){Y.continuation=void 0;return}let H=G?new Set(Y.continuation?.finalizedCallIds):new Set;for(let U of Q)H.add(U);Y.continuation={responseID:K,input:J.input,signature:$.signature,canonical:Q1($.input),finalizedCallIds:H}}function i4(Y,J,X=J,Q=g9(Y,{...X,input:Array.isArray(X.input)?X.input:J.input})){let G=Array.isArray(J.input)?J.input:[],$=Array.isArray(X.input)?X.input:G,W=Q.signature,K=Y.turnInput&&Y.turnSignature===W?G1(X$(Q,Y.turnInput),Q.input):void 0,H=K===void 0?G:$.slice(K);if(H.length>0&&H.some(Q$)||!Y.turnID)Y.turnID=A6(),Y.turnStartedAt=Date.now();Y.turnInput=$.slice(),Q.priorInputs.set(Y.turnInput,Q.input),Y.turnSignature=W,Y.turnCanonical=Q1(Q.input)}function Y$(Y,J,X=J,Q=g9(Y,{...X,input:Array.isArray(X.input)?X.input:J.input})){i4(Y,J,X,Q);let G=J.client_metadata;if(!n(G)||typeof G["x-codex-turn-metadata"]!=="string")return J;let $=J$(G["x-codex-turn-metadata"],Y.turnID,Y.turnStartedAt);if(!$)return J;return{...J,client_metadata:{...G,"x-codex-turn-metadata":$}}}function J$(Y,J,X){let Q;try{Q=JSON.parse(Y)}catch{return}if(!n(Q))return;return JSON.stringify({session_id:Q.session_id,thread_id:Q.thread_id,thread_source:Q.thread_source,turn_id:J,sandbox:Q.sandbox,turn_started_at_unix_ms:X,request_kind:"turn",window_id:Q.window_id})}function g9(Y,J){let X=Array.isArray(J.input)?J.input:[],Q=new Map;if(Y.turnInput&&Y.turnCanonical)Q.set(Y.turnInput,Y.turnCanonical);if(Y.continuation?.canonical)Q.set(Y.continuation.input,Y.continuation.canonical);let G=J9(X,Y.turnCanonical??Y.continuation?.canonical);return Q.set(X,G),{input:G,signature:G$(J),priorInputs:Q}}function X$(Y,J){let X=Y.priorInputs.get(J);if(!X){for(let[Q,G]of Y.priorInputs)if(Q.length===J.length&&Q.every(($,W)=>$===J[W])){X=G;break}X??=J9(J),Y.priorInputs.set(J,X)}return X}function gB(Y,J,X=g9(Y,J)){let Q=Array.isArray(J.input)?J.input:void 0;if(!Q||!Y.continuation)return J;if(Y.continuation.signature!==X.signature)return Y.continuation=void 0,J;if(!$$(Y.continuation,X))return Y.continuation=void 0,J;if(Y.continuation.input.length===0)return{...J,previous_response_id:Y.continuation.responseID};let G=Q.slice(Y.continuation.input.length),$=mB(G,Y.continuation.finalizedCallIds);if($.length===0)return J;return{...J,previous_response_id:Y.continuation.responseID,input:$}}function fB(Y,J,X=g9(Y,J)){let Q=Array.isArray(J.input)?J.input:void 0;if(!Y.continuation)return!0;if(!Q)return!1;if(!$$(Y.continuation,X))return!0;return Q.slice(Y.continuation.input.length).some(Q$)}function Q$(Y){if(!n(Y))return!1;if(!(Y.type==="message"||("role"in Y)))return!1;return Y.role==="user"||Y.role==="developer"}function mB(Y,J){return Y.filter((X)=>{if(!n(X))return!0;if(typeof X.type==="string"&&X.type.endsWith("_output"))return!0;if(X.type==="function_call_output"||X.type==="custom_tool_call_output")return!0;if(X.type==="function_call"||X.type==="custom_tool_call"){let Q=typeof X.call_id==="string"?X.call_id:typeof X.id==="string"?X.id:void 0;return Q?!J.has(Q):!0}if(X.type==="message")return X.role!=="assistant";if(typeof X.role==="string")return X.role!=="assistant";return!1})}function G$(Y){return R9(cB(Object.fromEntries(Object.entries(Y).filter(([J])=>J!=="input"&&J!=="stream"&&J!=="background"&&J!=="previous_response_id"&&J!=="generate"))))}function cB(Y){if(!n(Y.client_metadata))return Y;let J=Object.fromEntries(Object.entries(Y.client_metadata).filter(([X])=>X!=="x-codex-turn-metadata"&&X!=="x-codex-ws-stream-request-start-ms"));return{...Y,client_metadata:J}}function $$(Y,J){if(Y.input.length>=J.input.texts.length)return!1;return G1(X$(J,Y.input),J.input)!==void 0}function W$(Y){if(!Y?.headers)return Y;if(Y.headers instanceof Headers){let J=new Headers(Y.headers);for(let X of l4)J.delete(X);return{...Y,headers:J}}if(Array.isArray(Y.headers))return{...Y,headers:Y.headers.filter((J)=>!l4.has(J[0].toLowerCase()))};return{...Y,headers:Object.fromEntries(Object.entries(Y.headers).filter(([J])=>!l4.has(J.toLowerCase())))}}var iB=new Set(["gpt-5.5","gpt-5.3-codex-spark","gpt-5.4","gpt-5.4-mini"]),nB=new Set(["gpt-5.6","gpt-6","gpt-6.1"]);function oB(Y){if(iB.has(Y))return!0;if(nB.has(Y))return!1;let X=Y.match(/^gpt-(\d+(?:\.\d+)?)/)?.[1];return X?parseFloat(X)>5.4:!1}function rB(Y){if(Y.includes("gpt-5.5"))return{context:400000,input:272000,output:128000};if(Y.includes("gpt-6-astra"))return{context:872000,input:744000,output:128000};if(Y.includes("gpt-6.1-sol"))return{context:500000,input:372000,output:128000};if(Y.includes("gpt-5.6")||Y.includes("gpt-6-sol")||Y.includes("gpt-6-luna"))return{context:372000,input:244000,output:128000};return}var sB="Refusing to send a request with no access token. This is a defect in the plugin, not a problem with the provider or the account; the transport log names the account and the path that produced it.",aB="opencode-oauth-dummy-key",lq=()=>e9,tB=120000,eB=90000,YL=4000,z$=50,K$=3,JL=25,XL=60000,QL="__OPENCODE_OPENAI_AUTH_COMMAND_HANDLED__",YJ=!1,p8;function dq(){return p8}function iq(){YJ=!1,p8=void 0}var H$=z0("models"),U$=!1,Z$=!1;class XJ extends Error{code="OPENAI_AUTH_PERSIST_FAILED";constructor(Y){super("OpenAI OAuth token refreshed but could not be persisted; re-login required",{cause:Y});this.name="AuthPersistError"}}class g0 extends Error{code;constructor(Y,J){super(J);this.name="ResetTargetResolutionError",this.code=Y}}function o4(Y,J,X,Q){let G=(X?.refresh?.refreshBeforeExpiryMinutes??240)*60000;return!Y||!J||J-Q<=G}function GL(Y,J){let X=Y==="main",Q=J.row,G=()=>new g0("token_unavailable",X?"Main OpenAI account has no usable access token.":`Fallback account ${Y} has no usable access token.`);if(!Q){if(X)throw G();throw new g0("unknown_account",`Fallback account ${Y} was not found.`)}if(!Q.enabled)throw new g0("disabled_account",`${X?"Main":"Fallback"} account ${Y} is disabled.`);if(Q.type!=="oauth")throw new g0("non_oauth_account",`${X?"Main":"Fallback"} account ${Y} is not an OAuth account.`);if(!J.token)throw G();let $=J6(J.token);return{accountKey:Y,label:X?"Main account":Q.label??Y,accessToken:J.token,chatgptAccountId:Q.identity??($?X6($):void 0)}}function $L(Y){async function J(){let X=await Y.loadAccounts({configPath:Y.accountStoragePath,statePath:Y.accountStatePath}),Q=s6(X);if(!X||!Q||m0(Q))throw new g0("token_unavailable","Main OpenAI account has no usable access token.");let G=Q;if(o4(G.access,G.expires,X,Y.now()))G=await(Y.refreshPoolMainRow??Y.refreshFallbackAccount)(G,X);if(!G.access)throw new g0("token_unavailable","Main OpenAI account has no usable access token.");let $=J6(G.access);return{accountKey:"main",label:"Main account",accessToken:G.access,chatgptAccountId:G.accountId??($?X6($):void 0)}}return async(X)=>{let Q=await Y.poolAccess?.(X);if(Q)return GL(X,Q);if(X==="main"){let V=await Y.loadAccounts({configPath:Y.accountStoragePath,statePath:Y.accountStatePath}),D=await Y.getAuth();if(n0(D))return J();if(D.type!=="oauth")throw new g0("non_oauth_account","Main OpenAI account is not authenticated with OAuth.");if(o4(D.access,D.expires,V,Y.now()))try{D={type:"oauth",...await Y.refreshMainWithLease()}}catch(P){if(P instanceof a6)return J();throw P}if(!D.access)throw new g0("token_unavailable","Main OpenAI account has no usable access token.");let L=J6(D.access),B=L?X6(L):void 0,F=await Y.loadAccounts({configPath:Y.accountStoragePath,statePath:Y.accountStatePath});return{accountKey:X,label:"Main account",accessToken:D.access,chatgptAccountId:B??F?.mainAccountId}}let G=await Y.loadAccounts({configPath:Y.accountStoragePath,statePath:Y.accountStatePath}),$=G?.accounts.find((V)=>V.id===X);if(!G||!$)throw new g0("unknown_account",`Fallback account ${X} was not found.`);if($.enabled===!1)throw new g0("disabled_account",`Fallback account ${X} is disabled.`);if(!o0($))throw new g0("non_oauth_account",`Fallback account ${X} is not an OAuth account.`);let W=()=>new g0("token_unavailable",`Fallback account ${X} has no usable access token.`);if(m0($))throw W();let K=$;if(o4(K.access,K.expires,G,Y.now()))K=await Y.refreshFallbackAccount(K,G);if(!K.access)throw W();let H=await Y.loadAccounts({configPath:Y.accountStoragePath,statePath:Y.accountStatePath}),U=H?.accounts.find((V)=>V.id===X);if(!H||!U)throw new g0("unknown_account",`Fallback account ${X} was not found.`);if(U.enabled===!1)throw new g0("disabled_account",`Fallback account ${X} is disabled.`);if(!o0(U))throw new g0("non_oauth_account",`Fallback account ${X} is not an OAuth account.`);return{accountKey:X,label:K.label??X,accessToken:K.access,chatgptAccountId:U.accountId}}}function WL(){return{fetchImpl:fetch,now:Date.now,randomUUID:()=>crypto.randomUUID()}}function r4(Y){return Y instanceof XJ}function V$(){throw Error(QL)}async function zL(Y,J={}){let X=U0(J0());if(KY(X.configPath)){await o6(_9(X),J.holdsMainRefreshLock?void 0:M6(X),(Q)=>{if(J.canWrite&&!J.canWrite())throw Error(G9["vault-refused"]);Y(Q)});return}await r1((Q)=>{return Y(Q),Q},X,{canWrite:J.canWrite})}var a$=null;function nq(){return a$}function KL(Y){return Math.floor(Math.random()*Y)}var HL=!0;function UL(Y,J,X){let Q=Y.get(J);if(Q)return Q;let G=A6(),$={threadID:G,turnID:A6(),windowID:`${G}:0`};return Y.set(J,$),X?.(),$}function B$(){return dB(zY(),"openai-auth-sessions.json")}function ZL(Y,J){return Y.find((X)=>X.enabled!==!1&&o0(X)&&(X.id===J||X.accountId===J))}function L$(Y,J){if(!J)return Y;let X={...Y};for(let Q of["resetCreditsAvailable","resetCreditsApplicable"]){let G=J[Q];if(X[Q]===void 0&&G!==void 0)X[Q]=G}if(X.spendControl===void 0&&X.spendControlCleared!==!0&&J.spendControl!==void 0)X.spendControl=J.spendControl;if(X.credits===void 0&&J.credits!==void 0)X.credits=J.credits;return X}function f8(Y,J){if(!Y)return Y;if(typeof Y.checkedAt==="number"&&Number.isFinite(Y.checkedAt))return Y;return{...Y,checkedAt:J}}function t$(Y,J,X=Date.now(),Q=J.mainAccountId){let G=Y.getMain(),$=G?.quota;return{main:{quota:$?{...$,checkedAt:G.checkedAt,primary:f8($.primary,G.checkedAt),secondary:f8($.secondary,G.checkedAt)}:null,...typeof Q==="string"?{mainAccountId:Q}:{},killed:!Z9($,J,void 0,X),...$?.resetCreditsAvailable!==void 0?{resetCredits:$.resetCreditsAvailable}:{}},fallbacks:J.accounts.filter((W)=>W.enabled).map((W)=>{let K=Y.getFallback(W.id),H=K?.quota;return{id:W.id,label:W.label,accountId:K?.accountId??W.accountId,quota:H?{...H,checkedAt:K.checkedAt,primary:f8(H.primary,K.checkedAt),secondary:f8(H.secondary,K.checkedAt)}:null,killed:!Z9(H,J,W.id,X),enabled:!0,...H?.resetCreditsAvailable!==void 0?{resetCredits:H.resetCreditsAvailable}:{}}}),route:J.routing?.mode??"main-first",lastUpdated:X}}function oq(Y,J,X,Q=Date.now()){return{...t$(Y,J,Q),activeId:X}}function N$(Y,J){if(J?.headers!==void 0)return new Headers(J.headers);if(Y instanceof Request)return new Headers(Y.headers);return new Headers}async function s4(Y,J){if(!(Y instanceof Request))return J;let X=new Request(Y,J),Q=X.method.toUpperCase(),G=Q==="GET"||Q==="HEAD"||X.body===null?void 0:await X.text();return{method:X.method,headers:new Headers(X.headers),body:G,signal:X.signal,cache:X.cache,credentials:X.credentials,integrity:X.integrity,keepalive:X.keepalive,mode:X.mode,redirect:X.redirect,referrer:X.referrer,referrerPolicy:X.referrerPolicy}}function j$(Y){return Y.get("x-session-affinity")??Y.get("x-opencode-session")??Y.get("x-session-id")??Y.get("session-id")??void 0}var VL=new Set(["gpt-6-astra","gpt-6-sol","gpt-6-luna","gpt-6.1-sol"]),BL=new Set(["title","compaction","summary"]);function LL(Y,J,X){if(X!==null&&BL.has(X))return;let Q=typeof Y.model==="string"?Y.model:"";if(!VL.has(Q))return;let G=n(Y.reasoning)?Y.reasoning:void 0,$=typeof G?.effort==="string"?G.effort:void 0;if(!$)return;let W=Array.isArray(Y.input)?Y.input:void 0;J.effortUpdates??=[];let K=J.effortUpdates,H=(L)=>uB("sha256").update(R9(L)).digest("hex").slice(0,16);if(J.pinnedEffort===void 0||K.some((L)=>!W||!W1(W[L.anchor],"user")||H(W[L.anchor])!==L.fingerprint)){J.pinnedEffort=$,J.effortUpdates=[];return}if(!W||W.length===0)return;let U=W.findLastIndex((L)=>W1(L,"user")),V=K.at(-1),D=V?.effort??J.pinnedEffort;if(U>=0&&$!==D)if(V?.anchor===U){let L=K.at(-2)?.effort??J.pinnedEffort;if($===L)K.pop();else V.effort=$}else K.push({anchor:U,fingerprint:H(W[U]),effort:$});else if(U<0&&$!==D)return;if(K.some((L,B)=>B>0&&L.anchor<=(K[B-1]?.anchor??-1))){J.pinnedEffort=$,J.effortUpdates=[];return}Y.reasoning={...G,effort:J.pinnedEffort};for(let L=K.length-1;L>=0;L--){let B=K[L];if(!B)continue;W.splice(B.anchor,0,{type:"configuration_update",reasoning:{effort:B.effort}})}}function JJ(Y){if(Array.isArray(Y)){let X=Y;for(let Q=0;Q<Y.length;Q++){let G=JJ(Y[Q]);if(G===Y[Q])continue;if(X===Y)X=Y.slice();X[Q]=G}return X}if(!n(Y))return Y;let J=Y;for(let X of Object.keys(Y)){if(Y.type==="input_image"&&X==="detail"){if(J===Y)J={...Y};delete J[X];continue}let Q=JJ(Y[X]);if(Q===Y[X])continue;if(J===Y)J={...Y};J[X]=Q}return J}function NL(Y){let J=n(Y.reasoning)?{...Y.reasoning}:{};J.context="all_turns",Y.reasoning=J,Y.parallel_tool_calls=!1;let X=JJ(Array.isArray(Y.input)?Y.input:[]),G=[{type:"additional_tools",role:"developer",tools:Array.isArray(Y.tools)?Y.tools.filter(($)=>!(n($)&&$.type==="web_search")):[]}];if(typeof Y.instructions==="string"&&Y.instructions.length>0)G.push({type:"message",role:"developer",content:[{type:"input_text",text:Y.instructions}]});Y.input=[...G,...X],delete Y.tools,delete Y.instructions}async function jL(Y,J={}){let X=J.codexApiEndpoint??i0().codexApiEndpoint,Q=crypto.randomUUID(),G=yX(B$()),$=()=>gX(B$(),G),W=!1,K=!1,H=[],U=null,V=h$(Y.client),D=new Map,L=new Map,B,F=!1,P,q=new Map,E,S,x=o3({host:"opencode",stateDir:J.vault?.stateDir??C$(U0(J0()).statePath),...Y.directory?{projectRoot:Y.directory}:{},reservedRouteIds:()=>i?.peek().rows.map((I)=>I.id)??[],...J.vault?.connectionFile?{connectionFile:J.vault.connectionFile}:{},...J.vault?.connectScoped?{connectScoped:J.vault.connectScoped}:{},...J.vault?.connectEnrollment?{connectEnrollment:J.vault.connectEnrollment}:{},...J.vault?.pollIntervalMs!==void 0?{pollIntervalMs:J.vault.pollIntervalMs}:{},fetchImpl:()=>fetch},U0(J0())),j=x.vault;await j.authority();let C=x.firstRoster,h=Promise.withResolvers(),A=Promise.race([C,h.promise]),g=J.vault?.firstRosterWaitMs??vY,r,i,{enabled:V0,...B0}=J.poolMigration??{},p=V0??HL;if(p&&"reason"in V)(B0.log??z0("pool")).warn("account pool migration is off for this OpenCode client",{reason:V.reason});let t=p&&"slot"in V?q3({paths:()=>U0(J0()),slot:V.slot,version:v6,...B0,runDeps:{vaultServes:()=>j.serves(),...B0.runDeps},paused:async()=>await j.authority()!=="local",migrate:async(I)=>{let u=await(B0.migrate??H8)(I);return i?.load(),u},adopt:async(I)=>{if(!await H1(A,g))return{status:"retry",reason:"vault-roster-pending"};let u=await(B0.adopt??U8)(I);return i?.load(),u}}):void 0,L0=(I,u="")=>I?async()=>{let d=await I();return{url:d.url,instructions:d.instructions??u,method:"auto",callback:async()=>{try{let y=await d.tokens;return{type:"success",refresh:y.refresh_token,access:y.access_token,expires:Date.now()+(y.expires_in??3600)*1000,accountId:t6(y)}}finally{d.cleanup?.()}}}}:void 0,v=new TY(J.backgroundQuota),x0,T0=OX({client:Y.client,getAuth:async()=>x0?.(),fetchImpl:fetch,dependencies:{...J.login?.authorize?{authorizeBrowser:L0(J.login.authorize.browser,"Complete authorization in your browser. This window will close automatically."),authorizeHeadless:L0(J.login.authorize.headless)}:{}},vault:j,onMainSlotWritten:async()=>{await t?.requestAdoption()}}),H0=(I)=>async(u)=>{let d=await I(u);if(d.method!=="auto")return d;return{...d,callback:async()=>{let y=await d.callback();if(y.type==="success"&&"refresh"in y)s(y.refresh);return y}}};async function s(I){if(!t||!("slot"in V))return;let u=J.login?.sleep??((d)=>Bun.sleep(d));for(let d=0;d<5000;d+=100){try{let y=await V.slot.get({path:{id:"openai"}});if(n(y)&&y.refresh===I){await t.requestAdoption();return}}catch{}await u(100)}}let P0=T0.map((I)=>I.type==="oauth"?{...I,authorize:H0(I.authorize)}:I);async function l(I,u){let d=Y.client.session;if(typeof d?.promptAsync==="function"){let y=await K2(Y.client,I),$0={noReply:!0,parts:[{type:"text",text:u,ignored:!0}]};if(y?.agent)$0.agent=y.agent;if(y?.model)$0.model=y.model;if(y?.variant)$0.variant=y.variant;await d.promptAsync({path:{id:I},body:$0});return}}return{async dispose(){x.release(),t?.dispose(),await i?.dispose(),v.stop(),S?.stop(),B?.stopBackgroundRefresh(),B=void 0;for(let d of H)d.close();H.length=0;let I=globalThis;for(let[d,y]of D)if(I.__openaiAuthCacheKeepManagers?.get(d)===y)y.stop(),I.__openaiAuthCacheKeepManagers.delete(d);D.clear();for(let d of L.values())await d.release().catch(()=>{});L.clear();let u=r;r=void 0,await(await u)?.release()},async event(I){if(I.event.type!=="session.deleted")return;let u=I.event.properties.info,d=G.get(u.id);if(d)U?.cacheKeepManager?.remove(d.threadID);if(G.delete(u.id))$();let y=N6(u.id);if(q.delete(y),S?.cancel(`pin:${y}`),P){let $0=(await R0(U0(J0())))?.accounts;await l$(u.id,$0,P).catch(()=>{})}for(let $0 of H)$0.remove(u.id)},provider:{id:"openai",async models(I,u){if(u.auth?.type!=="oauth")return I.models;let d=await R0(U0(J0())),y=!d||E$(d),$0=y?null:await G2();if(!y&&$0&&!U$)U$=!0,H$.debug("restoring OAuth model costs from models.dev catalog");if(!y&&!$0&&!Z$)Z$=!0,H$.warn("models.dev catalog unavailable; OAuth model costs could not be restored");return Object.fromEntries(Object.entries(I.models).filter(([,M0])=>M0.options.reasoningMode!=="pro"&&oB(M0.api.id)).map(([M0,a0])=>[M0,{...a0,cost:y?{input:0,output:0,cache:{read:0,write:0}}:$0?.[a0.api.id]??$0?.[M0]??a0.cost,limit:rB(a0.id)??a0.limit}]))}},auth:{provider:"openai",async loader(I){await j.authority(),x0=I,r??=l3({version:v6,logger:z0("heartbeat")}),await r,t?.start();let u=await I();if(u.type!=="oauth")return h.resolve(),{};let d=e4(u).kind==="tombstone";x.start();let y=Y.directory?await y$(Y.directory):void 0,$0=y?.dir??J0();async function M0(Z,N={}){if(await j.authority()!=="local")return;return zL(Z,{...N,canWrite:()=>!j.enrolled()})}let a0=await j.authority()!=="local";if(!d&&!a0)await T$({type:"oauth",access:u.access??"",refresh:u.refresh??"",expires:u.expires??0},U0(J0()));let w0=await R0(U0(J0())).catch(async(Z)=>{if(await j.authority()!=="local")return null;let N=J0();throw Error(`OpenAI auth store at ${N} is corrupt or unreadable: ${Z instanceof Error?Z.message:String(Z)}. Fix or remove it to continue.`,{cause:Z})});if(!a0&&await m8(U0(J0()),u)){if(t)t.noticePlaceholderWithoutMain();else if(!F)F=!0,z0("pool-migration").warn(P9,{reason:"placeholder-without-main"})}let t0=w0,m9=Z3({path:J0,stat:(Z)=>{try{let N=lB(Z);return{mtimeMs:N.mtimeMs,size:N.size}}catch{return}},read:(Z)=>R0(U0(Z)),fallback:async(Z)=>{if(await j.authority()!=="local")return t0;throw Z},onRead:(Z)=>{t0=Z}});function q0(){return m9.read()}async function F6(){return K8(Promise.resolve(q0()),z8,()=>t0)}function V9(){m9.invalidate()}if(w0&&u.access&&!d&&!a0){let Z=t6({id_token:"",access_token:u.access,refresh_token:u.refresh??""});if(Z&&Z!==w0.mainAccountId)await M0((N)=>{N.mainAccountId=Z}),w0.mainAccountId=Z,V9()}let l8=w0?.logging?.level;if(l8&&typeof l8==="string")J8(l8);let c9=z0("transport"),Q6=z0("quota"),x1=z0("refresh"),K6=z0("accounts"),e$=new b$;c9.info("codex auth loader ready",{codexApiEndpoint:X,transport:i0().rawWebSocket?"raw-websocket":i0().webSockets?"websocket":"http"});let X0=new M$({storage:w0,configPath:J0(),fetchQuotaFn:void 0}),u9,p9=0;await i?.dispose();let E0=new hY({paths:()=>U0(J0()),refreshProvider:async(Z)=>{let N=await I1({refreshToken:Z.refresh,fetchImpl:fetch,now:Date.now}),O=t6({id_token:"",access_token:N.access,refresh_token:N.refresh});return{...N,...O?{identity:O}:{}}},pullQuota:async(Z)=>{let N=Z.credential;if(N.type!=="oauth"||!N.access)throw Error("the row holds no access token to poll with");let O=await Y1({accessToken:N.access,fetchImpl:fetch,now:Date.now,...Z.identity?{accountId:Z.identity}:{},accountKey:Z.id,logger:Q6}),R=Date.now(),M={quota:O,refreshAfter:R+300000,checkedAt:R};if(Z.id==="main")X0.setMain(N.access,M,Z.identity,!0);else X0.setFallback(Z.id,M,N.access,!0,Z.identity);return A9(O,R,!0)},vaultIdentities:()=>j.identities(),vaultMode:()=>j.enrolled(),vaultAuthority:()=>j.authority(),vaultFirstRoster:C,vaultFirstRosterBackgroundWaitMs:g,log:z0("pool")});if(i=E0,!a0)await E0.load();let e0=new R$({paths:U0(J0()),refreshFn:async(Z)=>{if(await j.authority()!=="local")throw Error(G9["vault-refused"]);return I1({refreshToken:Z.refreshToken,fetchImpl:Z.fetchImpl,now:Z.now})},quotaManager:X0,canWrite:()=>!j.enrolled(),onFallbackStorageChanged:V9,backgroundRefreshPaused:async()=>j.enrolled()||await E0.active()});if(w0&&w0.accounts.length>0)e0.startBackgroundRefresh();function d8(Z){if(m0(Z))return;return Z.access||void 0}function v1(Z={}){let{readSidebarState:N,respectBackoff:O,skipFresherThanMs:R}=Z;return{getAuth:I,codexRefreshFn:I1,refreshMainWithLease:BJ,fallbackManager:e0,quotaManager:X0,loadAccounts:R0,writeSidebarState:(M)=>H6(M),client:Y.client,fetchImpl:fetch,now:Date.now,paths:U0(J0()),readSidebarState:N??(()=>f$(u0)),storageMainAccountId:w0?.mainAccountId,isOAuthAccountFn:o0,whamFn:Y1,...O===void 0?{}:{respectBackoff:O},...R===void 0?{}:{skipFresherThanMs:R}}}async function QJ(Z){return(await E0.pollRows(await R0(U0(J0())),Z?{ids:Z}:{})).map((O)=>({account:O.id,ok:O.ok,...O.error!==void 0?{error:O.error}:{}}))}async function GJ(Z){return E0.accessFor(Z,await R0(U0(J0())))}let $J=z0("cachekeep"),h1=X8(w0),WJ=h1?.enabled===!0,zJ=h1?.subagents===!0,KJ=h1?.sustain===!0,HJ=z3(w0?{...w0,cachekeep:h1}:w0),y1;async function YW(Z){await new Promise((N)=>setTimeout(N,Z))}async function JW(Z){let N;for(let O=1;O<=K$;O++){if(await j.authority()!=="local")throw Error(G9["vault-refused"]);try{await Y.client.auth.set({path:{id:"openai"},body:{type:"oauth",refresh:Z.refresh,access:Z.access,expires:Z.expires}});return}catch(R){if(N=R,O<K$)await YW(JL*O)}}throw new XJ(N)}async function g1(Z){await M0((N)=>{N.refresh=N.refresh??{},Z(N)},{holdsMainRefreshLock:!0}),V9()}async function i8(Z){let N=Date.now()+YL;while(Date.now()<N){await new Promise((M)=>setTimeout(M,z$+KL(z$)));let O=await I();if(n0(O))throw new a6;if(O.type!=="oauth"||!O.access)continue;if((O.access!==Z.access||O.refresh!==Z.refresh||(O.expires??0)>(Z.expires??0)+60000)&&(!O.expires||O.expires>Date.now()))return x1.debug("joined concurrent main refresh",{pid:process.pid,expiresInMs:O.expires?O.expires-Date.now():void 0}),{access:O.access,refresh:O.refresh??Z.refresh??"",expires:O.expires??0}}return null}function UJ(Z){if(n0(Z))throw new a6;if(Z.type!=="oauth")throw Error("not oauth");if(m0(Z))throw new P$;if(!Z.refresh)throw Error("Token refresh failed: missing refresh token");return Z.refresh}async function n8(){if(!y1)y1=(async()=>{let Z=await I(),N=UJ(Z);if(Z.type!=="oauth")throw Error("not oauth");let O=U1(N),R=await R0(U0(J0())),M=R?.refresh?.mainLastRefreshError;if(M&&E6(M,N,Date.now()))throw Error(a4(M,Date.now()));if(R?.refresh?.mainRefreshLeaseUntil&&R.refresh.mainRefreshLeaseUntil>Date.now()&&R.refresh.mainRefreshLeaseTokenHash===O){let f=await i8(Z);if(f)return f;throw Error("Codex OAuth refresh is already in progress")}let b=await Q8({name:e9,ttlMs:tB,path:J0(),renew:!0});if(!b){let f=await i8(Z);if(f)return f;throw Error("Codex OAuth refresh is already in progress")}let T;try{let f=await I(),Y0=UJ(f);if(f.type!=="oauth")throw Error("not oauth");if(Y0!==N){if(f.access&&(f.expires??0)>Date.now())return x1.debug("main token rotated while awaiting the lock",{pid:process.pid}),await b.release().catch(()=>{}),{access:f.access,refresh:Y0,expires:f.expires??0};let v0=(await R0(U0(J0())))?.refresh?.mainLastRefreshError;if(v0&&E6(v0,Y0,Date.now()))throw Error(a4(v0,Date.now()))}T={...f,refresh:Y0}}catch(f){throw await b.release().catch(()=>{}),f}await v$(U0(J0()),T.refresh,T.access!==void 0?{slotAccess:T.access}:{}).catch(()=>!1);let w=U1(T.refresh),m=crypto.randomUUID(),a=w;try{await g1((W0)=>{if(x$(J0(),T.refresh))throw new t4;W0.refresh=W0.refresh??{},W0.refresh.mainRefreshLeaseId=m,W0.refresh.mainRefreshLeaseUntil=Date.now()+eB,W0.refresh.mainRefreshLeaseTokenHash=w});let f=await R0(U0(J0()));if(f?.refresh?.mainRefreshLeaseId!==m||f.refresh.mainRefreshLeaseTokenHash!==w)throw Error("Codex OAuth refresh is already in progress");if(await j.authority()!=="local")throw Error(G9["vault-refused"]);let Y0=await I1({refreshToken:T.refresh,fetchImpl:fetch,now:Date.now});return await JW(Y0),await g1((W0)=>{if(W0.refresh=W0.refresh??{},W0.refresh.mainLastRefreshError=void 0,W0.refresh.mainRefreshLeaseId===m)W0.refresh.mainRefreshLeaseId=void 0,W0.refresh.mainRefreshLeaseUntil=void 0,W0.refresh.mainRefreshLeaseTokenHash=void 0}).catch(()=>{}),a=void 0,Y0}catch(f){if(!(f instanceof t4)){if(!r4(f))await g1((Y0)=>{Y0.refresh=Y0.refresh??{},Y0.refresh.mainLastRefreshError=D$({error:f,now:Date.now(),refreshToken:T.refresh,previous:Y0.refresh.mainLastRefreshError})}).catch(()=>{});throw f}}finally{if(a)await g1((f)=>{if(f.refresh?.mainRefreshLeaseId===m&&f.refresh.mainRefreshLeaseTokenHash===a)f.refresh.mainRefreshLeaseId=void 0,f.refresh.mainRefreshLeaseUntil=void 0,f.refresh.mainRefreshLeaseTokenHash=void 0}).catch(()=>{});await b.release().catch(()=>{})}let c=await i8(T);if(c)return c;throw Error("Codex OAuth refresh is already in progress")})().finally(()=>{y1=void 0});return y1}function ZJ(Z){return fJ({storage:Z,now:Date.now,refreshAccount:(N,O)=>e0.refreshAccount(N,O,{asPoolMain:!0}),warn:(N,O)=>x1.warn(N,{pid:process.pid,...O})})}async function VJ(){let Z=await ZJ(await R0(U0(J0())));if(!Z)throw Error("The main OpenAI account has no usable token in the account pool");return{access:Z.token,refresh:Z.account.refresh,expires:Z.account.expires??0}}async function BJ(){try{return await n8()}catch(Z){if(Z instanceof a6)return VJ();throw Z}}let LJ=globalThis,o8=LJ.__openaiAuthCacheKeepManagers??new Map;LJ.__openaiAuthCacheKeepManagers=o8,o8.get($0)?.stop();let l9=U3({fetchImpl:fetch,vault:j,getMainToken:async()=>{if(await j.authority()!=="local")throw Error("local accounts are not warmed while this host is connected to the vault");if(await E0.active()){let N=await GJ("main");if(!N)throw Error("main pool row has no usable token");return N.token}let Z=await I();if(await j.authority()!=="local")throw Error("local accounts are not warmed while this host is connected to the vault");if(n0(Z))return(await VJ()).access;if(Z.type!=="oauth")throw Error("not oauth");if(!Z.access||(Z.expires??0)<Date.now())try{return(await BJ()).access}catch(N){if(r4(N))throw N;if(Z.access)return Z.access;throw Error("main token refresh failed")}return Z.access},refreshFallback:async(Z)=>{if(await j.authority()!=="local")throw Error("local accounts are not warmed while this host is connected to the vault");if(await E0.active()){let T=await GJ(Z);if(!T)throw Error(`no access token for ${Z}`);return{token:T.token}}let N=await F6(),O=N?ZL(N.accounts,Z):void 0;if(!O)throw Error(`fallback account ${Z} not found`);let R=N??{version:1,accounts:[O]},M=m0(O)?O:await e0.refreshAccount(O,R),b=d8(M);if(!b)throw Error(`no access token for ${Z}`);return{token:b}},codexResponsesUrl:X,activeAccount:async(Z)=>H3(U9(await i6.read(),q),Z),logger:$J,now:Date.now,getWindow:()=>HJ,getSustain:()=>KJ});o8.set($0,l9),D.set($0,l9);function B9(Z,N,O,R,M=!1){try{XW(Z,N,O,R,M)}catch(b){Q6.warn("quota push failed",{pid:process.pid,accountId:O??"main",error:y9(b)})}}function XW(Z,N,O,R,M){if(Object.keys(Z).length===0&&!M)return;let b=Date.now(),T=Z,w={quota:T,refreshAfter:b+300000,checkedAt:b},m;if(O&&O!=="main"){let c=N?J6(N):null,f=c?X6(c):void 0,Y0=X0.peekFallbackForPolicy(O)?.quota,W0=L$(T,Y0);w={...w,quota:W0},X0.setFallback(O,w,N,M,f)}else{if(m=R,!m&&N){let Y0=J6(N);m=Y0?X6(Y0):void 0}if(m&&u9&&m!==u9){Q6.debug("stale main quota frame dropped",{pid:process.pid,frameAccountId:m,currentMainIdentity:u9});return}let c=X0.peekMainForPolicy(m)?.quota,f=L$(T,c);w={...w,quota:f},X0.setMain(N,w,m,M)}Q6.debug("quota pushed",{pid:process.pid,accountId:O??"main",snapshot:w.quota}),E0.recordSnapshot(O&&O!=="main"?O:"main",Z,N,M);let a=Boolean(O&&O!=="main");O6.enqueue("machine-state","quota",()=>H6(X0,a?void 0:m))}function QW(Z,N,O){let R=T6(j.routes().find((M)=>M.id===Z)?.quota)??(Z==="main"?X0.peekMainForPolicy()?.quota:X0.peekFallbackForPolicy(Z)?.quota);return q$(R,N,Date.now(),XL,O)}let f1=new Map,d9=new Map;function NJ(){if(!j.enrolled())return;O6.enqueue("machine-state","quota",()=>H6(X0))}let L9=J.experimentalWebSockets?k6.createWebSocketFetch({httpFetch:fetch,rawWebSocket:i0().rawWebSocket,onQuota:(Z,N,O,R)=>{let M=O?f1.get(O):void 0;if(M){j.recordSnapshot(M.id,Z,!0,M.receipt).then(NJ);return}B9(Z,N,O,!O||O==="main"?R:void 0,!0)},onRateLimitReached:(Z,N,O)=>{if(!N)Q6.warn("mid-stream rate-limit mark missing internal account id; defaulting to main",{pid:process.pid,window:Z});let R=N?f1.get(N):void 0,M=R?.id??N??"main",b=QW(M,Z,O);if(X0.markRateLimited(M,b),R)d9.set(M,Math.max(d9.get(M)??0,b));else E0.markRateLimited(M,b);Q6.debug("mid-stream rate limit mark",{pid:process.pid,accountId:M,window:Z})}}):void 0;if(L9)H.push(L9),W=!0;let u0=g$();P=u0;async function H6(Z,N){let O=q0(),R=O instanceof Promise?await O.catch(()=>t0):O,M=N??R?.mainAccountId;if(j.enrolled()){await c8(g3(j.snapshot()?.rows??[],new Set(j.routes().map((T)=>T.id)),R,Date.now()),u0,{canWrite:()=>j.enrolled()});return}let b=await E0.current();if(b.active){await c8(f3(b.rows,R,Date.now(),(T)=>(T==="main"?Z.getMain():Z.getFallback(T))?.quota?.resetCreditsAvailable),u0,{canWrite:()=>!j.enrolled()});return}if(!R)return;await c8(t$(Z,R,Date.now(),M),u0,{canWrite:()=>!j.enrolled()})}let i6=o$(u0);i6.read(),S?.stop();let O6=s$({logger:c9,onWritten:()=>i6.refreshInBackground()});if(S=O6,E!==u0)q.clear(),E=u0;function r8(Z,N,O,R,M,b,T=!1){let w={canWrite:()=>j.enrolled()===T},m={activeId:O,route:R,updatedAt:Date.now()};if(!Z){O6.enqueue("routing:legacy","routing",()=>p$(m,u0,w));return}if(O6.enqueue(`routing:${Z}`,"routing",()=>u8({sessionId:Z,...m},M,u0,w)),!N||N===Z)return;if(R==="sticky-balanced"){let a=b.stickyAssignments?.[N6(N)]?.accountId,c=M===void 0||a==="main"||M.some((f)=>f.enabled!==!1&&f.id===a);if(!a||!c)return;O6.enqueue(`routing:${N}`,"routing",()=>u8({sessionId:N,activeId:a,route:R,updatedAt:Date.now()},M,u0,w));return}O6.enqueue(`routing:${N}`,"routing",()=>u8({sessionId:N,...m},M,u0,w))}B?.stopBackgroundRefresh(),B=e0;let i9=U0(J0());if(U=a$={accountStoragePath:i9.configPath,accountStatePath:i9.statePath,packageVersion:v6,quotaManager:X0,loadAccounts:R0,beginAccountLogin:o1,store:()=>_9(i9),migration:async()=>{if(await p1(i9,_9(i9))!==void 0)return{migrated:!0};let Z=await(B0.fence??(()=>M9({currentVersion:v6})))();return{migrated:!1,blockers:Z.open?[]:Z.blockers.map((N)=>({pid:N.pid,version:N.version}))}},afterWrite:()=>E0.load(),vault:j,resolveResetTarget:$L({getAuth:I,refreshMainWithLease:n8,refreshFallbackAccount:(Z,N)=>e0.refreshAccount(Z,N),refreshPoolMainRow:(Z,N)=>e0.refreshAccount(Z,N,{asPoolMain:!0}),poolAccess:async(Z)=>E0.rowAccess(Z,await R0(U0(J0()))),loadAccounts:R0,accountStoragePath:J0(),accountStatePath:k$(J0()),now:Date.now}),...WL(),cacheKeepManager:l9,setCacheKeepEnabled:(Z)=>{WJ=Z},setCacheKeepSubagents:(Z)=>{zJ=Z},setCacheKeepSustain:(Z)=>{KJ=Z},setCacheKeepWindow:(Z)=>{HJ=Z},clearStickyRouting:async(Z)=>{let N=N6(Z),O=q.delete(N);return O6.cancel(`pin:${N}`),await n$(Z,u0)||O},getStickyRouting:async(Z)=>u$(U9(await i6.read(),q),Z),refreshSidebar:async()=>{V9(),await H6(X0)},refreshAllQuota:async()=>{if(await j.authority(),j.enrolled()){let Z=await j.pollStale(0);return await H6(X0),Z.map((N)=>({account:N.id,ok:N.ok,...N.error!==void 0?{error:N.error}:{}}))}if(await E0.active()){let[Z,N]=await Promise.all([QJ(),j.pollStale(0)]);return await H6(X0),[...Z,...N.map((O)=>({account:O.id,ok:O.ok,...O.error!==void 0?{error:O.error}:{}}))]}return w9(v1())},refreshResetTargetQuota:async(Z)=>{if(await j.authority(),j.enrolled())return{account:Z,ok:!1,error:"local accounts are not polled while this host is connected to the vault"};if(await E0.active()){let[O]=await QJ([Z]);return O??{account:Z,ok:!1,error:"targeted quota refresh returned no result"}}return(await w9(v1({respectBackoff:!1}),{accountKey:Z})).find((O)=>O.account===Z)??{account:Z,ok:!1,error:"targeted quota refresh returned no result"}}},y){let Z=y;try{let N=await O$(U2,Z.dir,()=>Z2({dir:Z.dir,secureDir:Z.secureDir,sweepRoot:Z.sweepRoot,drain:dX,apply:async(O)=>{let R=F$(O);if(!R)throw Error("not an /openai apply request");return tX(U,R)}}));L.set(Z.dir,N)}catch{}}async function N9(Z,N,O,R,M="main",b){if(!O.trim())throw c9.warn("refusing to send a request with no access token",{account:M,accountId:R}),Error(sB);if(!b&&await j.authority()!=="local")return Response.json({error:{message:G9["vault-refused"]}},{status:400});let T=N$(Z,N);if(T.delete("x-api-key"),T.delete("api-key"),T.set("authorization",`Bearer ${O}`),R)T.set("ChatGPT-Account-Id",R);T.set(k6.QUOTA_ACCOUNT_HEADER,M);let w=j$(T),m=w?UL(G,w,$):void 0,a=Z instanceof URL?Z:new URL(typeof Z==="string"?Z:Z.url),c=a.pathname.includes("/v1/responses")||a.pathname.includes("/chat/completions")?new URL(X):a,Y0=hX({rewriteLite:NL,applyEffort:LL,init:{...N,headers:T},headers:T,metadata:m,installationID:Q,websocket:Boolean(L9&&a.pathname.endsWith("/responses")),responsesLite:J.responsesLite??!1,dumpSessionID:w}).init,W0=WJ,v0=new Headers(Y0?.headers),e=W3({enabled:W0,includeSubagents:zJ,headers:v0,body:Y0?.body});if(W0)$J.trace("cachekeep headers",{pid:process.pid,hasParent:v0.has("x-parent-session-id"),sessionKey:e?.sessionKey,captured:Boolean(e),affinity:v0.get("x-session-affinity"),opencodeSession:v0.get("x-opencode-session"),sessionId:v0.get("session-id")});if(L9&&a.pathname.endsWith("/responses")){if(c9.debug("WS transport",{pid:process.pid,pathname:a.pathname,accountId:M}),e)l9.track({sessionKey:e.sessionKey,bodyText:e.bodyText,accountId:M,isSubagent:e.isSubagent,meta:{replayHeaders:e.replayHeaders,chatgptAccountId:R,routingSessionId:w}});if(!b)try{return await Q9(await L9(c,Y0),O,"event-stream")}catch(A0){throw y6(A0,O)}let K0=`vault-stream:${pB()}`;f1.set(K0,{id:M,receipt:b});let U6=new Headers(Y0?.headers);U6.set(k6.QUOTA_ACCOUNT_HEADER,K0);let f0=()=>f1.delete(K0);try{let A0=await L9(c,{...Y0,headers:U6});if(!A0.body)return f0(),A0;let D6=A0.body.getReader();return await Q9(new Response(new ReadableStream({async pull(_6){try{let P6=await D6.read();if(P6.done)f0(),_6.close();else _6.enqueue(P6.value)}catch(P6){f0(),_6.error(y6(P6,O))}},cancel(_6){return f0(),D6.cancel(_6)}}),{status:A0.status,statusText:A0.statusText,headers:A0.headers}),O,"event-stream")}catch(A0){throw f0(),y6(A0,O)}}let N0=k6.withoutInternalHeaders(Y0);if(typeof N0?.body!=="string")try{return await Q9(await fetch(c,N0),O,"event-stream")}catch(K0){throw y6(K0,O)}if(e)l9.track({sessionKey:e.sessionKey,bodyText:e.bodyText,accountId:M,isSubagent:e.isSubagent,meta:{replayHeaders:e.replayHeaders,chatgptAccountId:R,routingSessionId:w}});c9.debug("HTTP transport",{pid:process.pid,pathname:a.pathname,accountId:M});try{let K0=await fetch(c,N0);return await T9({sessionID:w,transport:"http",phase:"http",bodyText:N0.body,accountId:M,url:c.toString(),method:N0.method,headers:N0.headers,status:K0.status}),await Q9(K0,O,"event-stream")}catch(K0){throw await T9({sessionID:w,transport:"http",phase:"http",bodyText:N0.body,accountId:M,url:c.toString(),method:N0.method,headers:N0.headers,error:K0 instanceof Error?K0.message:String(K0)}),y6(K0,O)}}function n9(Z,N){if((N?.method??(Z instanceof Request?Z.method:"GET")).toUpperCase()!=="POST")return!1;if(typeof N?.body!=="string")return!1;try{let R=Z instanceof URL?Z.toString():typeof Z==="string"?Z:Z.url;return new URL(R).pathname.endsWith("/responses")}catch{return!1}}function GW(Z){return X0.peekMainForPolicy(Z)?.quota}function jJ(Z,N){for(let O of[Z?.primary?.checkedAt,Z?.secondary?.checkedAt,Z?.checkedAt,N])if(typeof O==="number"&&Number.isFinite(O))return O;return}function o9(Z,N,O,R,M){let b=jJ(Z,N),T=jJ(O),w=R===M&&O!=null&&(Z===void 0||T!==void 0&&(b===void 0||T>b));return{quota:w?O:Z,quotaCheckedAt:w?T:b,source:w?"file":"memory"}}function FJ(Z,N,O,R,M){let b=Z?.quota,T=o9(b,Z?.checkedAt,N,R,M),w=T.source,m=T.quota;if(!c$(m,O))return{exhausted:!1};let a=m$(m,O);if(!a)return{exhausted:!1};return{exhausted:!0,source:w,...a}}function OJ(Z,N){Q6.debug("admission skip: exhausted account",{accountId:Z,source:N.source,resetsAt:N.resetsAt})}function DJ(Z,N="killswitch",O,R){let M=Date.now(),b=R?R.main:X0.getMain()?.quota,T=R?R.fallbacks:(Z?.accounts??[]).filter((f)=>f.enabled!==!1&&o0(f)).map((f)=>({accountId:f.id,quota:X0.getFallback(f.id)?.quota})),w=A$(b,T,M,Z);if(N==="quota-unknown")w=I$;else if(N==="quota-exhausted"&&O!==void 0)w=Math.max(1,Math.ceil((O-M)/1000));else if(N==="mid-stream-rate-limit"&&O!==void 0){let f=Math.max(1,Math.ceil((O-M)/1000));w=Math.min(w,f)}let m=Math.floor(w/60),a=w%60,c=N==="mid-stream-rate-limit"?`OpenAI rate limit reached — retrying on another account. Retry in ${m}m ${a}s.`:N==="quota-exhausted"?`OpenAI quota exhausted — retrying on another account. Retry in ${m}m ${a}s.`:N==="quota-unknown"?`OpenAI quota is not known yet for any available account; checking it now. Retry in ${m}m ${a}s.`:`Killswitch: all OpenAI accounts are below their configured quota threshold. Retry in ${m}m ${a}s.`;return new Response(JSON.stringify({error:{message:c,type:"rate_limit_exceeded",code:"rate_limit_exceeded"}}),{status:429,headers:{"content-type":"application/json","retry-after":String(w)}})}function s8(Z){let N=Z?.resetCreditsAvailable;return typeof N==="number"&&Number.isFinite(N)?N:void 0}async function $W(Z){let N=k1(Z.storage),O=Date.now(),R=X0.peekMainForPolicy(Z.mainAccountIdentity),M=o9(R?.quota,R?.checkedAt,Z.sidebarState.main.quota,Z.sidebarState.main.mainAccountId,Z.mainAccountIdentity),b=N?Z9(R?.quota,Z.storage,void 0,O):void 0,T=Z.mainUnavailable?[]:[{accountId:"main",wireAccountId:Z.mainAccountIdentity,access:Z.primaryAccess,keepwarmAccountKey:"main",quota:M.quota,quotaCheckedAt:M.quotaCheckedAt,reservePercent:Z1(Z.storage),configuredOrder:0,resetCreditsApplicable:s8(M.quota),killswitchPasses:b}],w=await e0.getUsableFallbackAccounts(Z.storage);if(!Z.storage)return T;for(let m of w){let a=d8(m);if(!a)continue;let c=Z.sidebarState.fallbacks.find((v0)=>v0.id===m.id),f=X0.peekFallbackForPolicy(m.id,m.accountId),Y0=o9(f?.quota,f?.checkedAt,c?.quota,c?.accountId,m.accountId),W0=N?Z9(f?.quota,Z.storage,m.id,O):void 0;T.push({accountId:m.id,wireAccountId:m.accountId,access:a,keepwarmAccountKey:m.id,fallback:m,quota:Y0.quota,quotaCheckedAt:Y0.quotaCheckedAt,reservePercent:Z1(Z.storage,m.id),configuredOrder:T.length,resetCreditsApplicable:s8(Y0.quota),killswitchPasses:W0})}return T}function _J(Z,N,O,R,M){let b=k1(M)?Z.killswitchPasses:void 0;if(Z.accountId==="main"){let a=X0.peekMainForPolicy(Z.wireAccountId),c=o9(a?.quota,a?.checkedAt,N.main.quota,N.main.mainAccountId,Z.wireAccountId);return nY({quota:c.quota,quotaCheckedAt:c.quotaCheckedAt,status:O,now:R,killswitchPasses:b})}let T=N.fallbacks.find((a)=>a.id===Z.accountId),w=X0.peekFallbackForPolicy(Z.accountId,Z.wireAccountId),m=o9(w?.quota,w?.checkedAt,T?.quota,T?.accountId,Z.wireAccountId);return nY({quota:m.quota,quotaCheckedAt:m.quotaCheckedAt,status:O,now:R,killswitchPasses:b})}function WW(Z){return Z.accountId==="main"?"main":Z.keepwarmAccountKey}function PJ(Z){return X0.isRateLimited(WW(Z))}function a8(Z){let N=Z.candidates.filter((b)=>!PJ(b)),O=new Map(N.map((b)=>[b.accountId,b])),R=new Set(Z.excludeAccountIds),M=qJ({sessionId:Z.sessionId,requestBytes:Z.requestBytes,sidebarSnapshot:Z.sidebarSnapshot,now:Z.now,validPinnedAccountIds:[...O.keys()],excludeAccountIds:Z.excludeAccountIds??[],quotaCheckedAtByAccount:Object.fromEntries(N.map((b)=>[b.accountId,b.quotaCheckedAt])),wireAccountIdByAccount:Object.fromEntries(N.map((b)=>[b.accountId,b.wireAccountId])),select:(b)=>{let T=N.filter((w)=>!R.has(w.accountId));if(T.length===0)return;return Y2({candidates:T,pendingBytes:b,requestBytes:Z.requestBytes,now:Z.now,onEmptyWeightedSet:()=>{K6.debug("sticky routing: no fresh weighted candidates; using configured order")}})},persist:!0});return M?O.get(M.accountId):void 0}function qJ(Z){let N=void 0,O=Z.validPinnedAccountIds,R=d$(U9(Z.sidebarSnapshot,q),{sessionId:Z.sessionId,requestBytes:Z.requestBytes,now:Z.now,validPinnedAccountIds:O,excludeAccountIds:Z.excludeAccountIds,quotaCheckedAtByAccount:Z.quotaCheckedAtByAccount,wireAccountIdByAccount:Z.wireAccountIdByAccount,choose:(b)=>{let T=Z.select(b);if(!T)return;return N={accountId:T.accountId,source:T.source,pendingBytes:b.get(T.accountId)??0},T}}),M=R.assignment;if(!Z.persist)return M;if(N&&M?.accountId===N.accountId)K6.debug("sticky routing: placed session pin",{pid:process.pid,sessionHash:N6(Z.sessionId),accountId:N.accountId,source:N.source,requestBytes:Z.requestBytes,pendingBytes:N.pendingBytes});if(M&&R.next!==void 0){let b=N6(Z.sessionId),T=r$(q,b,M);O6.enqueue(`pin:${b}`,"sticky-pin",async()=>{await i$({sessionId:Z.sessionId,assignment:M,validPinnedAccountIds:O},u0),T.persistedAt=Date.now()})}return M}async function zW(Z,N){let O=await e0.getUsableFallbackAccounts(Z),R=[];if(!Z)return{current:[],retained:[],skipped:[]};for(let c of O){let f=d8(c);if(!f)continue;R.push({access:f,accountId:c.accountId,keepwarmAccountKey:c.id,quotaAccountId:c.id,fallback:c})}let M=R.filter((c)=>!X0.isRateLimited(c.quotaAccountId)),b=k1(Z)?M.filter((c)=>Z9(X0.peekFallbackForPolicy(c.quotaAccountId,c.accountId)?.quota,Z,c.quotaAccountId,Date.now())):M,T=new Map(N.fallbacks.map((c)=>[c.id,{quota:c.quota,accountId:c.accountId}])),w=[],m=[],a=Date.now();for(let c of b){let f=T.get(c.quotaAccountId),Y0=FJ(X0.peekFallbackForPolicy(c.quotaAccountId,c.accountId),f?.quota,a,f?.accountId,c.accountId);if(Y0.exhausted)m.push({candidate:c,decision:Y0});else w.push(c)}return{current:b,retained:w,skipped:m}}function MJ(Z,N){if(Z.retained.length===0&&!N)return Z.current;for(let{candidate:O,decision:R}of Z.skipped)OJ(O.quotaAccountId,R);return Z.retained}function EJ(Z,N){try{let O=X9(Z.headers);B9(O,N.access,N.quotaAccountId,void 0,f9(Z.headers))}catch{}}async function KW(Z,N,O,R){for(let M of R){let b;try{b=await N9(Z,N,M.access,M.accountId,M.keepwarmAccountKey)}catch(T){if((T instanceof Error||T instanceof DOMException)&&T.name==="AbortError")throw T;if(N?.signal?.aborted)throw T;throw K6.debug("fallback-first transport failed; request not replayed",{pid:process.pid,accountId:M.quotaAccountId}),T}if(!b1(b.status,O))return e0.markUsed(M.fallback),{response:b,accessToken:M.access,quotaAccountId:M.quotaAccountId,activeId:M.keepwarmAccountKey};EJ(b,M),b.body?.cancel().catch(()=>{})}return}async function HW(Z,N,O,R,M){if(!n9(Z,N))return{response:O};if(!M.length)return{response:O};let b=O,T;for(let w of M){let m;try{m=await N9(Z,N,w.access,w.accountId,w.keepwarmAccountKey)}catch(a){if((a instanceof Error||a instanceof DOMException)&&a.name==="AbortError")throw a;if(N?.signal?.aborted)throw a;return K6.debug("reactive fallback candidate threw; stopping",{pid:process.pid,accountId:w.quotaAccountId}),{response:b,...T}}if(b.body?.cancel().catch(()=>{}),b=m,T={accessToken:w.access,accountId:w.quotaAccountId},!b1(m.status,R))return e0.markUsed(w.fallback),{response:m,...T};EJ(m,w)}return{response:b,...T}}if(w0){let Z=[];for(let N of w0.accounts)if(o0(N))Z.push(N);X0.seedFallbacksFromAccounts(Z)}if(!YJ)if(YJ=!0,H6(X0).catch(()=>{}),C.then(()=>j.enrolled()?H6(X0):void 0).catch(()=>{}),!j.enrolled()&&!await E0.active())p8=w9(v1({respectBackoff:!0})).catch((Z)=>Q6.warn("boot quota seed failed",{pid:process.pid,error:y9(Z)}));else p8=Promise.resolve();v.start(async()=>{if(await j.authority(),j.enrolled()){await H6(X0);return}if(await E0.active()){let O=await Q3(E0,await R0(U0(J0())),()=>AY(J0()));if(O.length>0)await H6(X0);let R=O.filter((M)=>!M.ok);if(R.length>0)Q6.warn("background pool quota poll completed with failures",{pid:process.pid,failures:R});return}let N=(await J3(v1({readSidebarState:async()=>(await i6.read()).state}))).filter((O)=>!O.ok);if(N.length>0)Q6.warn("background quota refresh completed with failures",{pid:process.pid,failures:N})},(Z)=>{Q6.warn("background quota refresh failed",{pid:process.pid,error:Z instanceof Error?Z.message:String(Z)})});async function t8(Z,N,O,R,M,b){let T=O?.routing?.mode??"main-first",w=j.enrolled(),m=w?void 0:E0.peek().rows.find((e)=>e.id==="main"),a=!m&&!w?await I():void 0,c=!m&&a?.type==="oauth"&&m0(a),f=!m&&!w&&await m8(U0(J0()),a);if(b===p9)u9=m?.identity;let Y0=await i6.get(),{response:W0,servedId:v0}=await h3({source:E0,...w?{vault:{routes:()=>j.routes(),awaitRoster:async()=>{await H1(j.awaitRequestRoster(),xY)},noRouteCause:()=>S$(j),send:(e,N0)=>j.send(e,N0,{site:"model",...N?.signal?{signal:N.signal}:{}}),requestReading:(e)=>j.requestReading(e),rateLimitMarks:()=>{for(let[e,N0]of d9)if(N0<=Date.now())d9.delete(e);return d9}}}:{},storage:O,mode:T,sessionId:R,body:typeof N?.body==="string"?N.body:void 0,replayable:n9(Z,N),now:Date.now,send:(e,N0,K0)=>N9(Z,N,N0,e.identity,e.id,K0),recordQuota:(e,N0,K0,U6)=>{try{let f0=X9(e.headers),A0=f9(e.headers);if(!N0.row){if(U6)j.recordSnapshot(N0.id,f0,A0,U6).then(NJ);return}B9(f0,K0,N0.id==="main"?void 0:N0.id,N0.id==="main"?N0.identity:void 0,A0)}catch{}},placePin:(e)=>qJ({...e,sidebarSnapshot:Y0}),blocked:(e,N0,K0)=>{if(e.reason==="no-credential"){if(f&&!uY(K0))throw Error(P9);return new Response(uY(K0)?w$(K0,j.name):G9[c?"missing-main":K0??"unusable"],{status:401,headers:{"content-type":"text/plain; charset=utf-8"}})}return DJ(O,e.reason,e.resetAtMs,N0)},resetCredits:(e)=>s8(e==="main"?X0.peekMainForPolicy(m?.identity)?.quota:X0.peekFallbackForPolicy(e)?.quota),isAbort:(e)=>(e instanceof Error||e instanceof DOMException)&&e.name==="AbortError"||Boolean(N?.signal?.aborted),creditsServing:e$,log:K6});return r8(R,M,v0,T,w?j.routes().map((e)=>({id:e.id})):O?.accounts,U9(Y0,q),w),W0}return K=!0,{apiKey:aB,async fetch(Z,N){let O=await j.authority(),R=N$(Z,N),M=j$(R),b=R.get("x-parent-session-id")?.trim()||void 0,T=await F6();if(O!=="local")return N=await s4(Z,N),t8(Z,N,T,M,b,++p9);let w=await I();if(await j.authority()!=="local")return N=await s4(Z,N),t8(Z,N,T,M,b,++p9);let m=++p9;if(w.type!=="oauth")return R.delete($1),fetch(Z,{...N,headers:R});N=await s4(Z,N);let a=(await E0.current()).active;if(n0(w)&&a)return t8(Z,N,T,M,b,m);if(a)j.assertHostSlot(w);let c="",f=!1,Y0,W0=n0(w);if(t?.migrated()&&!W0&&w.refresh?.trim()&&e4(w).kind==="real")t.noticeRealSlot(w.refresh);let v0=async(j0=T)=>{if(W0=!0,Y0=await ZJ(j0),Y0)c=Y0.token;else c="",f=!0,K6.warn("main account in the pool has no usable token",{pid:process.pid})};if(W0)await v0();else if(m0(w))f=!0;else{if(!w.access||(w.expires??0)<Date.now()){x1.debug("token refresh triggered",{pid:process.pid,hasAccess:Boolean(w.access),expiresInMs:w.expires?w.expires-Date.now():void 0});try{let j0=await n8();w.access=j0.access,w.refresh=j0.refresh,w.expires=j0.expires}catch(j0){if(r4(j0))throw j0;if(j0 instanceof a6)await v0(await R0(U0(J0())))}}if(!W0)c=w.access??""}let e=W0?HY(T):T,N0=w,K0=Y0?.account.accountId??(W0?void 0:N0.accountId)??(c?X6(J6(c)??{}):void 0);if(m===p9)u9=K0;let U6=T?.routing?.mode??"main-first",f0=await i6.get(),A0=f0.state;if(U6==="sticky-balanced"&&M&&n9(Z,N)&&typeof N?.body==="string"){let j0=Buffer.byteLength(N.body,"utf8"),b0=await $W({storage:e,sidebarState:A0,primaryAccess:c,mainAccountIdentity:K0,mainUnavailable:f}),S0=a8({sessionId:M,requestBytes:j0,candidates:b0,sidebarSnapshot:f0,now:Date.now()});if(S0){let SJ=PJ(S0)?{action:"migrate",reason:"exhausted"}:_J(S0,A0,void 0,Date.now(),T);if(SJ.action==="migrate"){let d0=a8({sessionId:M,requestBytes:j0,candidates:b0,sidebarSnapshot:f0,excludeAccountIds:[S0.accountId],now:Date.now()});if(d0)K6.debug("sticky routing: migrated session pin",{pid:process.pid,sessionHash:N6(M),fromAccountId:S0.accountId,toAccountId:d0.accountId,reason:SJ.reason}),S0=d0}let Z6=await N9(Z,N,S0.access,S0.wireAccountId,S0.keepwarmAccountKey),IJ=(d0,n6)=>{try{let UW=X9(d0.headers);B9(UW,n6.access,n6.accountId==="main"?void 0:n6.accountId,n6.accountId==="main"?n6.wireAccountId:void 0,f9(d0.headers))}catch{}};IJ(Z6,S0);let bJ=_J(S0,A0,Z6.status,Date.now(),T);if((Z6.status===401||Z6.status===403||Z6.status===429)&&bJ.action==="migrate"){let d0=a8({sessionId:M,requestBytes:j0,candidates:b0,sidebarSnapshot:f0,excludeAccountIds:[S0.accountId],now:Date.now()});if(d0){K6.debug("sticky routing: migrated session pin",{pid:process.pid,sessionHash:N6(M),fromAccountId:S0.accountId,toAccountId:d0.accountId,reason:bJ.reason});let n6=Z6;Z6=await N9(Z,N,d0.access,d0.wireAccountId,d0.keepwarmAccountKey),n6.body?.cancel().catch(()=>{}),S0=d0,IJ(Z6,S0)}}if(S0.fallback&&!b1(Z6.status,T))e0.markUsed(S0.fallback);return r8(M,b,S0.accountId,U6,T?.accounts,U9(f0,q)),Z6}}let D6=FJ(X0.peekMainForPolicy(K0),A0.main.quota,Date.now(),A0.main.mainAccountId,K0),_6=k1(T)&&!Z9(GW(K0),T,void 0,Date.now()),P6=X0.isRateLimited("main"),AJ,e8=()=>{return AJ??=zW(e,A0),AJ},q6,j9,TJ=!1,m1;if(U6==="fallback-first"&&n9(Z,N)){TJ=!0;let j0=await e8();m1=MJ(j0,!_6&&!P6&&!D6.exhausted);let b0=await KW(Z,N,T,m1);if(b0)q6=b0.response,j9={accessToken:b0.accessToken,accountId:b0.quotaAccountId,activeId:b0.activeId}}if(!q6){let j0=D6.exhausted&&n9(Z,N)&&(await e8()).retained.length>0;if(_6||P6||j0){let b0=_6?"killswitch":P6?"mid-stream-rate-limit":"quota-exhausted";if(b0==="quota-exhausted"&&D6.exhausted)OJ("main",D6);K6.debug("admission blocked primary",{pid:process.pid,activeId:"main",reason:b0}),q6=DJ(T,b0,b0==="quota-exhausted"&&D6.exhausted?D6.resetAtMs:P6?X0.rateLimitedUntil("main"):void 0)}else q6=f?new Response(null,{status:401}):await N9(Z,N,c,K0,"main")}let YY=Boolean(j9),r9=q6,RJ=j9?.accessToken??c,CJ=j9?.accountId,wJ=j9?.activeId??"main";if(!j9&&!TJ&&b1(q6.status,T)){K6.debug("reactive fallback triggered",{pid:process.pid,status:q6.status}),m1??=MJ(await e8(),!1);let j0=await HW(Z,N,q6,T,m1),b0=j0.response;if(b0!==q6){if(YY=!0,r9=b0,RJ=j0.accessToken??c,CJ=j0.accountId,j0.accountId)wJ=j0.accountId}}if(W0&&f&&!YY&&await m8(U0(J0()),await I()))throw Error(P9);try{let j0=X9(r9.headers);if(YY)B9(j0,RJ,CJ,void 0,f9(r9.headers));else B9(j0,c,void 0,K0,f9(r9.headers))}catch{}return r8(M,b,wJ,U6,T?.accounts,U9(f0,q)),r9}}},methods:P0},"chat.headers":async(I,u)=>{if(I.model.providerID!=="openai")return;if(u.headers.originator="opencode",u.headers["User-Agent"]=`${_$(v6)} (${n4.platform()} ${n4.release()}; ${n4.arch()})`,u.headers["session-id"]=I.sessionID,K)u.headers[$1]=I.agent;if(W&&I.agent==="title")u.headers[k6.TITLE_HEADER]="true"},"chat.params":async(I,u)=>{if(I.model.providerID!=="openai")return;u.maxOutputTokens=void 0},config:async(I)=>{z0("commands").info("registering commands",{existing:Object.keys(I.command??{}).length,pid:process.pid}),I.command={...I.command??{},[x6]:{template:x6,description:"OpenAI accounts: quota, routing, limits, cache keep-warm, diagnostics and reset credits."}}},"command.execute.before":async(I)=>{if(z0("commands").info("command hook entered",{command:I.command,hasCmdCtx:U!==null,pid:process.pid}),I.command!==x6)return;if(!U)z0("commands").warn("command rejected: context not loaded",{command:I.command,pid:process.pid}),await l(I.sessionID,"OpenAI auth plugin is still initializing. Send a request first, then try again."),V$();let u=await aX(U,I.sessionID);if(iX(I.sessionID))e1(u,I.sessionID);else await l(I.sessionID,eX(u.menu));V$()}}}var FL=async(Y)=>{let J=i0();return jL(Y,{codexApiEndpoint:J.codexApiEndpoint,experimentalWebSockets:J.webSockets,responsesLite:J.responsesLite})},rq={id:"cortexkit-openai-auth",server:FL};
|
|
65
|
+
export{zY as d,J0 as e,a9 as f,i0 as g,KY as h,P9 as i,M9 as j,v6 as k,T9 as l,A6 as m,xX as n,t1 as o,vX as p,W1 as q,hX as r,Mz as s,yX as t,Ez as u,e1 as v,dX as w,iX as x,aX as y,tX as z,gj as A,z3 as B,U3 as C,xY as D,vY as E,H1 as F,hY as G,q3 as H,HK as I,g3 as J,f3 as K,l3 as L,o3 as M,U2 as N,Z2 as O,S1 as P,lG as Q,iB as R,nB as S,oB as T,rB as U,sB as V,lq as W,tB as X,eB as Y,dq as Z,iq as _,XJ as $,g0 as aa,GL as ba,$L as ca,WL as da,nq as ea,HL as fa,ZL as ga,L$ as ha,t$ as ia,oq as ja,j$ as ka,VL as la,NL as ma,jL as na,FL as oa,rq as pa};
|