@cortexkit/opencode-openai-auth 1.1.0 → 1.2.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.
Files changed (55) hide show
  1. package/dist/bin.js +8 -8
  2. package/dist/{codex-request-BXDXToyt.d.ts → codex-request-CjXETpTA.d.ts} +56 -24
  3. package/dist/index-03em8hv1.js +69 -0
  4. package/dist/index-6n4pnfkg.js +2 -0
  5. package/dist/{index-f2fmb596.js → index-bc89akak.js} +1 -1
  6. package/dist/{index-7c6sxtd6.js → index-ehjj89rx.js} +2 -2
  7. package/dist/index-f21addzm.js +90 -0
  8. package/dist/{index-k6cydkgt.js → index-ffg0sgg5.js} +2 -2
  9. package/dist/{index-zpm95mt5.js → index-ftkhhr6d.js} +1 -1
  10. package/dist/{index-4c8yw54k.js → index-htvcmtcx.js} +2 -2
  11. package/dist/{index-j8v2xwq6.js → index-qp5hdpw8.js} +1 -1
  12. package/dist/{index-msx2m78k.js → index-qxbchh2d.js} +2 -2
  13. package/dist/{index-m5qmvr6c.js → index-r2s51ac1.js} +2 -2
  14. package/dist/index-rwbrhkse.js +65 -0
  15. package/dist/{index-csky2xpg.js → index-xwvze96g.js} +1 -1
  16. package/dist/index.d.ts +5 -3
  17. package/dist/index.js +1 -1
  18. package/dist/{model-YRg7Uowo.d.ts → model-CQcw10oW.d.ts} +1 -1
  19. package/dist/{port-file-CxEpgSHY.d.ts → port-file-BDJnzgHH.d.ts} +1 -1
  20. package/dist/{protocol-CDV1Pc6h.d.ts → protocol-C-kagE6O.d.ts} +1 -1
  21. package/dist/rpc/port-file.d.ts +1 -1
  22. package/dist/rpc/port-file.js +1 -1
  23. package/dist/rpc/protocol.d.ts +1 -1
  24. package/dist/rpc/protocol.js +1 -1
  25. package/dist/rpc/rpc-client.d.ts +3 -3
  26. package/dist/rpc/rpc-client.js +1 -1
  27. package/dist/rpc/rpc-dir.js +1 -1
  28. package/dist/{sidebar-state-DjTWUbmf.d.ts → sidebar-state-BfQ4mpZO.d.ts} +98 -5
  29. package/dist/sidebar-state.d.ts +2 -2
  30. package/dist/sidebar-state.js +1 -1
  31. package/dist/token-util-cf0nyh7n.js +1 -0
  32. package/dist/{token-rz4t3ay6.js → token-z6qq7a1d.js} +1 -1
  33. package/dist/tui-preferences.js +1 -1
  34. package/dist/tui.d.ts +2 -2
  35. package/dist/v2/server.d.ts +109 -2
  36. package/dist/v2/server.js +3 -3
  37. package/package.json +3 -3
  38. package/src/tui-compiled/raw/shared/0332701351b3eeec-format.js +135 -18
  39. package/src/tui-compiled/raw/shared/0f77ebc3c914c9c6-custody.js +17 -0
  40. package/src/tui-compiled/raw/shared/169b2b4bf30909bc-consumer.js +38 -1
  41. package/src/tui-compiled/raw/shared/d5a8f1061ee2f114-index.js +1 -1
  42. package/src/tui-compiled/raw/sidebar-state.js +63 -1
  43. package/src/tui-compiled/raw/tui.tsx +82 -30
  44. package/src/tui-compiled/runtime/shared/0332701351b3eeec-format.js +135 -18
  45. package/src/tui-compiled/runtime/shared/0f77ebc3c914c9c6-custody.js +17 -0
  46. package/src/tui-compiled/runtime/shared/169b2b4bf30909bc-consumer.js +38 -1
  47. package/src/tui-compiled/runtime/shared/d5a8f1061ee2f114-index.js +1 -1
  48. package/src/tui-compiled/runtime/sidebar-state.js +63 -1
  49. package/src/tui-compiled/runtime/tui.js +245 -208
  50. package/dist/index-0yh85bwb.js +0 -69
  51. package/dist/index-7eb3dw37.js +0 -90
  52. package/dist/index-8re8rprk.js +0 -2
  53. package/dist/index-edbdscy7.js +0 -65
  54. package/dist/map-Buq-GW7l.d.ts +0 -56
  55. package/dist/token-util-tpy2c7h6.js +0 -1
@@ -1,65 +0,0 @@
1
- import{Da as JX,Ea as XX,Fa as QX,Ga as GX,Ha as E6,Ia as d9,Ja as k1,Ka as t8,La as n1,Ma as e8,Na as YY,Oa as JY,Pa as XY,Qa as QY,Sa as RY,Ta as CY,Ua as w6,Va as Q3,Wa as G3,Xa as $3,Ya as W3,Za as z3,_a as C6,ab as y1,cb as J6,db as F$,eb as H0,gb as WX,hb as hJ,ib as yJ,jb as zX,kb as O$,la as F6,lb as o4,ma as yX,mb as D$,na as Q$,nb as r6,oa as i,ob as y8,pb as W8,qb as z8,ra as L$,rb as O6,sa as yY,sb as K3,ta as N$,tb as s6,ua as I3,ub as r4,va as tJ,vb as KX,wa as KY,xa as eJ,ya as YX,yb as P$}from"./index-0yh85bwb.js";import{$b as S$,Ab as cY,Cb as oX,Eb as V1,Fb as q$,Ib as E$,Mb as g3,Nb as M$,Ob as A$,Pb as T$,Ub as g8,Vb as f8,Wb as R$,Xb as C$,_b as w$,ac as I$,cc as G8,dc as $8,ec as b$,fc as k$,gc as U6,hc as x$}from"./index-8re8rprk.js";import{$c as aJ,Ad as K9,Bc as z9,Bd as H6,Cc as $$,Cd as Z$,Dc as E1,Dd as V$,Ec as n4,Ed as X3,Fc as W$,Fd as N3,Gc as pJ,Gd as U1,Hc as lJ,Hd as n0,Ic as B1,Id as o1,Jc as L1,Jd as WY,Kc as s1,Lc as dJ,Mc as iJ,Md as B$,Nc as nJ,Nd as M6,Oc as oJ,Od as A1,Pc as rJ,Pd as T1,Qc as sJ,Qd as j3,Rc as i9,Rd as U9,Sc as Y6,Sd as j$,Tc as g6,Td as F3,Uc as MG,Ud as O3,Vc as nX,Vd as D3,Wd as kY,Xd as P3,Yd as _3,Zd as q3,fd as m0,gd as z$,hd as C9,id as a6,jd as K$,ld as U$,mc as X6,md as o0,oc as j6,od as H$,rd as vJ,sc as Q8,sd as R0,td as n9,vd as L3,wc as B3,wd as w9,xd as hY,yd as S9,zc as xJ,zd as e9}from"./index-7eb3dw37.js";import{ce as Y8}from"./index-msx2m78k.js";import{he as SX,ie as IX,je as bX,ke as r3,le as G$,me as p9}from"./index-4c8yw54k.js";import{Ce as h6,Ee as $X,te as DX,ve as t9,xe as B0}from"./index-7c6sxtd6.js";import{Fe as H1,Ge as e6,Je as NX,Ke as jX,Le as BY,Me as FX,Pe as OX}from"./index-m5qmvr6c.js";import{Re as kX,Te as _$}from"./index-f2fmb596.js";import{Ve as nY}from"./index-csky2xpg.js";import{createHash as _B,randomUUID as qB}from"node:crypto";import{statSync as EB}from"node:fs";import p4 from"node:os";import{join as MB}from"node:path";import{readFile as FW}from"node:fs/promises";import{readFileSync as o$}from"node:fs";import{homedir as r$,tmpdir as s$}from"node:os";import{join as m9}from"node:path";var a$="https://chatgpt.com/backend-api/codex/responses",t$="openai-auth.json",x1={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",codexApiEndpoint:"CORTEXKIT_OPENAI_AUTH_CODEX_ENDPOINT",configFile:"OPENCODE_OPENAI_AUTH_FILE",stateFile:"OPENCODE_OPENAI_AUTH_STATE_FILE",configDir:"OPENCODE_CONFIG_DIR"};function GY(){let Y=process.env[x1.configDir]?.trim();if(Y)return Y;return m9(process.env.XDG_CONFIG_HOME||m9(r$(),".config"),"opencode")}function J0(){return process.env[x1.configFile]?.trim()||m9(GY(),t$)}function e$(){try{let Y=JSON.parse(o$(J0(),"utf8"));return Y!=null&&typeof Y==="object"&&!Array.isArray(Y)?Y:{}}catch{return{}}}function YW(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 g9(Y,J,X){let Q=YW(Y);if(Q!==void 0)return Q;if(typeof J==="boolean")return J;return X}function JW(){let Y=e$(),J;if(Y.dump!==void 0&&Y.dump!==null){if(typeof Y.dump==="object")J=Y.dump.enabled;else if(typeof Y.dump==="boolean")J=Y.dump}return{webSockets:g9(x1.webSockets,Y.webSockets,!1),rawWebSocket:g9(x1.rawWebSocket,Y.rawWebSocket,!1),responsesLite:g9(x1.responsesLite,Y.responsesLite,!1),dump:g9(x1.dump,J,!1),dumpDir:process.env[x1.dumpDir]?.trim()||(typeof Y.dumpDir==="string"&&Y.dumpDir.trim()?Y.dumpDir.trim():m9(s$(),"opencode-openai-auth-dumps")),codexApiEndpoint:process.env[x1.codexApiEndpoint]?.trim()||(typeof Y.codexApiEndpoint==="string"&&Y.codexApiEndpoint.trim()?Y.codexApiEndpoint.trim():a$)}}var f9;function i0(){if(!f9)f9=JW();return f9}function wJ(){return f9=void 0,i0()}import{readFileSync as XW}from"node:fs";var QW="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 GW(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 D6(Y,J={}){return F6({provider:"openai",configPath:Y.configPath,statePath:Y.statePath,quota:j6,...J})}function $Y(Y){try{let J=JSON.parse(XW(Y,"utf8"));if(!J||typeof J!=="object"||Array.isArray(J))return!1;return r6(J).migratedAt!==void 0}catch{return!1}}async function c9(Y,J){if(!$Y(Y.configPath))return;let X=await J.read();return X.status==="ready"?X.rows:void 0}function u9(Y,J){if(Y===U1)return QW;if(r6(J.config).pending?.rowId===Y)return GW(Y);return}function $W(Y,J){return O6(Y,U1,J.legacyLocks).filter((X)=>X.name===s6)}function q1(Y,J={}){return $W(Y,J)}var P6="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 r1 extends Error{constructor(){super("The main OpenAI account lives in the account pool");this.name="MainAccountInPoolError"}}async function SJ(Y){let J=Y.storage,X=o1(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<=$)&&!E1(Q.lastRefreshError,Q.refresh,G))try{Q=await Y.refreshAccount(Q,J)}catch(U){Y.warn?.("pool main row refresh failed",{error:U instanceof Error?U.message:String(U)})}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 WW,readFile as zW}from"node:fs/promises";import{homedir as KW}from"node:os";import{join as _6}from"node:path";function bJ(){return process.env.XDG_STATE_HOME||_6(KW(),".local","state")}function UW(Y=bJ()){return _6(Y,"cortexkit","openai-auth","processes")}function HW(Y=bJ()){return _6(Y,"cortexkit","openai-auth","rpc")}function ZW(Y){try{return process.kill(Y,0),!0}catch(J){return J.code==="EPERM"}}function IJ(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 VW(Y,J){let X=IJ(Y),Q=IJ(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($),U=/^\d+$/.test(W);if(K&&U){let Z=Number($)-Number(W);if(Z!==0)return Math.sign(Z)}else if(K!==U)return K?-1:1;else if($!==W)return $<W?-1:1}return 0}async function zY(Y){try{return{ok:!0,names:await WW(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 BW(Y,J){let X;try{X=await zW(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 q6(Y){let J=Y.isAlive??ZW,X=Y.selfPid??process.pid,Q=new Map,G=(V)=>{let O=V.pid==="unknown"?`dir:${V.detail}`:V.pid;if(!Q.has(O))Q.set(O,V)},$=(V)=>{try{return J(V)}catch{return!0}},W=(V,O)=>{let E=O.exec(V),_=E?Number(E[1]):Number.NaN;return Number.isSafeInteger(_)&&_>=1?_:void 0},K=UW(Y.stateHome),U=new Set,Z=await zY(K);if(!Z.ok)G({pid:"unknown",version:"unknown",detail:Z.error});for(let V of Z.ok?Z.names:[]){let O=W(V,/^(\d+)\.json$/);if(O===void 0||O===X)continue;let E=_6(K,V),_=await BW(E,O);if(_.kind==="gone")continue;if(U.add(O),!$(O))continue;if(_.kind==="unreadable"){G({pid:O,version:"unknown",detail:E});continue}let T=VW(_.version,Y.currentVersion);if(T===void 0||T<0)G({pid:O,version:_.version,detail:E})}let B=Y.rpcDir??HW(Y.stateHome),D=await zY(B);if(!D.ok)G({pid:"unknown",version:"unknown",detail:D.error});for(let V of D.ok?D.names:[]){if(!p9(V))continue;let O=_6(B,V),E=await zY(O);if(!E.ok){if(E.code==="ENOTDIR")continue;G({pid:"unknown",version:"unknown",detail:E.error});continue}for(let _ of E.names){let T=W(_,/^port-(\d+)\.json$/);if(T===void 0||T===X||U.has(T))continue;if($(T))G({pid:T,version:"unknown",detail:_6(O,_)})}}let N=(V)=>V.pid==="unknown"?Number.POSITIVE_INFINITY:V.pid;return Q.size===0?{open:!0}:{open:!1,blockers:[...Q.values()].sort((V,O)=>N(V)-N(O))}}var v1="1.1.0";import{readFile as gJ}from"node:fs/promises";function l9(Y){return typeof Y==="object"&&Y!==null&&!Array.isArray(Y)}async function fJ(Y){let J=await vJ(Y.configPath),X=[];try{let G=JSON.parse(await gJ(Y.statePath,"utf8"));if(l9(G)){let $=G.accounts;if(l9($))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 LW(Y){try{let J=JSON.parse(await gJ(Y.configPath,"utf8"));return l9(J)&&l9(J.claustrum)&&J.claustrum.mode==="claustrum"}catch{return!1}}var kJ="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 mJ(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 NW(Y,J){let X=Y.lastRefreshError;return E1(X,Y.refresh,J)&&X!==void 0&&X.nextRetryAt!==void 0&&X.nextRetryAt-X.checkedAt>=xJ}function jW(Y){let J=[],X=[],Q=Y.now??Date.now(),G=mJ(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. ${kJ}`});else if(n0(Y.auth)){if(!o1(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 U={type:"restore-main-credential"};X.push(U);let Z=J.find((B)=>B.code==="auth-slot-missing"||B.code==="auth-slot-not-oauth"||B.code==="main-refresh-not-in-store");if(Z)Z.repair=U}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((U)=>U.enabled!==!1))J.push({code:"no-enabled-accounts",message:"The account store has no enabled accounts."});for(let U of W){if(!o0(U)||!m0(U))continue;J.push({code:"tombstoned-account",accountId:U.id,message:`Account ${U.id} holds a tombstone left by the vault custody of an older version, not a credential; it is never sent. ${kJ}`})}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 U of W){if(!o0(U))continue;if(!NW(U,Q))continue;let Z={type:"clear-refresh-backoff",accountId:U.id};X.push(Z),J.push({code:"armed-non-transient-refresh-backoff",accountId:U.id,message:`Account ${U.id} has an armed non-transient refresh backoff.`,repair:Z})}let K=[...Y.orphanStateIds??[]];if(K.length>0){let U={type:"prune-orphan-state-ids",ids:K};X.push(U),J.push({code:"orphan-state-ids",message:`State contains ids absent from the config roster: ${K.join(", ")}.`,repair:U})}return{findings:J,repairs:X}}function cJ(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=mJ(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(),LW(Y.paths)]),W=jW({auth:G.type==="missing"?void 0:G,storage:X,orphanStateIds:Q.orphanStateIds,retiredCustodyMode:$,now:Y.now()}),K=await F6({provider:"openai",quota:j6,configPath:Y.paths.configPath,statePath:Y.paths.statePath}).read();if(K.status==="ready")for(let U of K.rows){if(U.disabledReason!==hJ)continue;W.findings.push({code:"slot-transfer-origin-unknown",accountId:U.id,message:`Account ${U.id} was preserved disabled after an interrupted transfer with an untagged placeholder; sole ownership could not be established. ${yJ}`})}return W.findings.map((U)=>{let Z=U.repair?J(U.repair):void 0;return{code:U.code,message:U.message,...U.accountId!==void 0?{accountId:U.accountId}:{},...Z?{repair:Z}:{}}})}}]}var OW=$X,uJ="OpenAI accounts",DW="ChatGPT accounts in the vault",PW="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 _W(){let{redirectUri:Y}=await nJ(),J=await lJ(),X=pJ(crypto.getRandomValues(new Uint8Array(32)).buffer),Q=dJ(Y,J,X),G=oJ(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:s1($)}}finally{iJ(X)}}}}async function qW(Y){let{deviceData:J,url:X,instructions:Q}=await rJ(Y);return{url:X,instructions:Q,method:"auto",async callback(){try{let G=await sJ(J,Y);return{type:"success",refresh:G.refresh_token,access:G.access_token,expires:Date.now()+(G.expires_in??3600)*1000,accountId:s1(G)}}catch{return{type:"failed"}}}}}function UX({client:Y,getAuth:J,getPaths:X=()=>H0(J0()),fetchImpl:Q=fetch,packageVersion:G=v1,dependencies:$,onMainSlotWritten:W,vault:K}){let U={authorizeBrowser:$?.authorizeBrowser??_W,authorizeHeadless:$?.authorizeHeadless??(()=>qW(G)),beginAccountLogin:$?.beginAccountLogin??i9,loadAccounts:$?.loadAccounts??R0,mutateAccounts:$?.mutateAccounts??n9,readStoreIds:$?.readStoreIds??fJ,openBrowser:$?.openBrowser??OW,now:$?.now??Date.now,openAccountPool:$?.openAccountPool??D6,migrationBlockers:$?.migrationBlockers??(async()=>{let j=await q6({currentVersion:G});return j.open?[]:j.blockers.map((S)=>({pid:S.pid,version:S.version}))}),...$?.terminal?{terminal:$.terminal}:{},...$?.vaultWait?{vaultWait:$.vaultWait}:{}},Z=async()=>await J?.().catch(()=>{return})??{type:"missing"},B=async()=>{if(K&&await K.authority()!=="local")return!0;if((await Z()).type!=="missing")return!0;let j=X(),S=U.openAccountPool(j);if((await S.read()).status==="ready")return XX(S);return((await U.loadAccounts(j))?.accounts.length??0)>0},D=async(j)=>{if(await zX(X().configPath,async()=>{if(K&&await K.authority()!=="local")return!1;if(n0(await Z()))return!1;return await Y.auth.set({path:{id:"openai"},body:{type:"oauth",...j}}),!0}))await W?.().catch(()=>{})},N=(j)=>({begin:async({headless:S,signal:h})=>{if(K&&await K.authority()!=="local")throw Error(E6);let A=await U.beginAccountLogin({version:G,headless:S,...h?{signal:h}:{}});return{url:A.url,instructions:A.instructions,completion:A.completion.then(async(y)=>{if(K&&await K.authority()!=="local")throw Error(E6);let o=await j.read(),r=o.status==="ready"?o.rows.find((u)=>u.id===U1)?.identity:void 0;if(y.accountId&&r&&y.accountId===r)throw Error("that account is already the OpenCode main credential");return{id:y.id,credential:{type:"oauth",refresh:y.refresh,...y.access!==void 0?{access:y.access}:{},...y.expires!==void 0?{expires:y.expires}:{}},...y.accountId!==void 0?{identity:y.accountId}:{},...y.label!==void 0?{label:y.label}:{}}})}},openBrowser:(S)=>U.openBrowser(S)}),V=async(j)=>{if(K&&await K.authority()!=="local")throw Error(E6);let S=j.credential;if(S?.type!=="oauth"||!S.access)throw Error("no usable access token for a quota check");let h=await a6({accessToken:S.access,fetchImpl:Q,now:U.now,...j.identity?{accountId:j.identity}:{},accountKey:j.id});return M6(h,U.now(),!0)},O=(j)=>cJ({paths:X(),migrated:j,readAuth:Z,loadAccounts:U.loadAccounts,readStoreIds:U.readStoreIds,mutateAccounts:U.mutateAccounts,setMainAuth:D,now:U.now}),E=(j,S)=>({title:uJ,store:t8(S,{rowLocks:(h)=>O6(j,h)}),...U.terminal?{terminal:U.terminal}:{},login:N(S),protect:(h,A)=>u9(h,A),extraLocks:q1(j),pollQuota:V,doctor:O(!0),status:async()=>{let h=await K?.status();if(K&&await K.authority()!=="local"&&h)return[KY(K.host,K.name,h.enrollment)];return[`Routing: ${(await U.loadAccounts(j))?.routing?.mode??"main-first"}`,...K?[KY(K.host,K.name,(await K.status()).enrollment)]:[]]},...K?{extraActions:[_(K)]}:{}}),_=(j)=>{let S=j.enrolled();return{id:S?"vault-disconnect":"vault-connect",label:S?"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(S){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 y,o=await j.waitForApproval({...U.vaultWait,onPending:(r)=>{let V0=r.state==="pending"?r.requestId??r.retryCode??"":r.state;if(V0===y)return;y=V0;for(let u of tJ(j.name,r))h.print(u);h.print("Waiting for the approval… (stop with Ctrl-C; Connect picks the request up again)")}});h.print(eJ(j,o).text)}}},T=async()=>{let j=await U.migrationBlockers();return JX({title:uJ,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((S)=>` ${S.pid==="unknown"?"processes that could not be read":`pid ${S.pid}`}: version ${S.version}`)]:[]],actions:[YX({checks:O(!1)})],...U.terminal?{terminal:U.terminal}:{}})},w=async(j)=>{let S=X(),h=U.openAccountPool(S);if(K&&await K.authority()!=="local")return d9(E(S,h),K);if(await c9(S,h)===void 0)return T();let A=E(S,h);return K?d9(A,K):QX(A)},x=(j)=>async()=>{if(K&&await K.authority()!=="local")throw Error(E6);let S=await j();if(S.method!=="auto")return S;return{...S,callback:async()=>{let h=await S.callback();if(K&&await K.authority()!=="local")return{type:"failed"};return h}}};return[{label:"ChatGPT Pro/Plus (browser)",type:"oauth",authorize:GX({hasCredential:B,openMenu:w,login:x(()=>U.authorizeBrowser())})},{label:"ChatGPT Pro/Plus (headless)",type:"oauth",authorize:x(()=>U.authorizeHeadless())},{label:"Manually enter API Key",type:"api"},...K?.enrolled()?[{label:DW,type:"oauth",authorize:async()=>({url:"",instructions:PW,method:"auto",callback:async()=>{if(await aJ(K.paths,K.name)!=="vault")return{type:"failed"};try{let j=JSON.parse(await FW(KX(),"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{...WX,type:"success"}}})}]:[]]}var UY=["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 a1(Y){let J={};for(let X of UY)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 cW}from"node:crypto";import{createHash as EW,randomBytes as HX}from"node:crypto";import{chmod as MW,lstat as ZX,mkdir as AW,open as TW,readdir as PX,rename as RW,unlink as LY,writeFile as CW}from"node:fs/promises";import{join as o9,resolve as HY}from"node:path";var wW=100,ZY="session-unknown",SW=300000,IW=60000,bW=600000,kW=/\.(body|meta|request|response)\.json$/,xW=/^\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}-\d{3}Z-\d+-\d{6,}-[a-zA-Z0-9._-]+$/,vW=/\.[a-f0-9]{24}\.partial$/;function _X(Y){let J=Y.replace(kW,"");if(J===Y||!xW.test(J))return;return J}function hW(Y){let J=Y.replace(vW,"");return J!==Y&&_X(J)!==void 0}async function VX(Y){let{dir:J,maxBytes:X}=Y,Q=Y.now??Date.now(),G=Y.minAgeMs??IW,$=Y.partialStaleMs??bW,W={removed:0,freedBytes:0};if(!(X>0))return W;try{if(H1)await NX(J,"directory");if((await ZX(J)).isSymbolicLink())return W;let K=new Set((Y.protectedPaths??[]).map((_)=>HY(_))),U=await PX(J,{withFileTypes:!0}),Z=[];await Promise.all(U.map(async(_)=>{if(!_.isFile())return;let T=hW(_.name),w=T?void 0:_X(_.name);if(!T&&w===void 0)return;let x=o9(J,_.name);try{let j=await ZX(x);if(!j.isFile())return;Z.push({path:x,size:j.size,mtimeMs:j.mtimeMs,group:w})}catch{}}));let B=Z.reduce((_,T)=>_+T.size,0),D=0,N=0,V=async(_)=>{try{await LY(_.path),B-=_.size,N+=_.size,D+=1}catch{}};for(let _ of Z){if(_.group!==void 0)continue;if(K.has(HY(_.path)))continue;if(Q-_.mtimeMs<$)continue;await V(_)}let O=new Map;for(let _ of Z){if(_.group===void 0)continue;let T=O.get(_.group)??{files:[],newest:0};T.files.push(_),T.newest=Math.max(T.newest,_.mtimeMs),O.set(_.group,T)}let E=[...O.entries()].sort(([_,T],[w,x])=>T.newest-x.newest||_.localeCompare(w));for(let[,_]of E){if(B<=X)break;if(Q-_.newest<G)continue;if(_.files.some((T)=>K.has(HY(T.path))))continue;for(let T of _.files)await V(T)}if(D>0)Y.logger?.debug("removed old dump files",{removed:D,freedBytes:N});return{removed:D,freedBytes:N}}catch(K){if(K instanceof e6&&K.code==="ERR_PRIVATE_FILES_SECURITY")throw K;return W}}async function yW(Y,J,X){if(H1)return OX(Y,J,{stagePath:`${Y}.${X?X():HX(12).toString("hex")}.partial`});for(let Q=0;;Q+=1){let G=`${Y}.${X?X():HX(12).toString("hex")}.partial`,$=!1,W;try{W=await TW(G,"wx",384),$=!0,await W.writeFile(J,"utf8"),await W.chmod(384),await W.close(),W=void 0,await RW(G,Y);return}catch(K){if(await W?.close().catch(()=>{}),$)await LY(G).catch(()=>{});if(K.code==="EEXIST"&&Q===0)continue;throw K}}}function VY(Y){return Y.length<=16?Y:`${Y.slice(0,12)}…`}function t6(Y,J){let X=Y.trim().replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^-+|-+$/g,"");if(!X)return J;return X.slice(0,80)}function BX(Y){return EW("sha256").update(Y).digest("hex")}function gW(Y){return Y.toLowerCase().replace(/[-_]/g,"")}function LX(Y){return Y!==null&&typeof Y==="object"&&!Array.isArray(Y)}function fW(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 mW=0;function qX(Y){let J=Y.enabled===!0,X=Y.pid??process.pid,Q=Y.now??Date.now,G=Y.logger,$=new Set((Y.secretKeys??[]).map(gW)),W=DX({extraSecretKeys:(A)=>$.has(A),extraValuePatterns:[...Y.secretPatterns??[]]}),K=new Set(Y.schemaKeys??["tools"]),U=new Map,Z=()=>typeof Y.dir==="function"?Y.dir():Y.dir;function B(A){let y=W.redact({[A]:null})[A];return y===null?void 0:y}function D(A){if(Array.isArray(A))return A.map(D);if(LX(A)){let y={};for(let[o,r]of Object.entries(A)){let V0=B(o);if(K.has(o))y[o]=W.redactStrings(r);else if(V0!==void 0)y[o]=V0;else y[o]=D(r)}return y}return W.redactStrings(A)}function N(A){let y;try{y=JSON.parse(A)}catch{return{text:W.redactStrings(A),parsed:void 0}}let o=D(y),r=JSON.stringify(o);return{text:JSON.stringify(y)===r?A:r,parsed:LX(o)?o:void 0}}async function V(A,y,o,r){let V0=`-${t6(y,ZY)}-${t6(o,"channel")}`,u;try{u=await PX(A)}catch{return}let G0=u.filter((X0)=>X0.endsWith(".meta.json")&&X0.includes(V0)).sort().reverse();for(let X0 of G0)try{if(JSON.parse(await BY(o9(A,X0),H1))?.baselineKey!==r)continue;return await BY(o9(A,X0.replace(/\.meta\.json$/,".body.json")),H1)}catch(A0){if(A0 instanceof e6&&(H1||A0.code==="ERR_PRIVATE_FILES_SECURITY"))throw A0}return}function O(A,y){if(!U.has(A))while(U.size>=wW){let o=U.keys().next().value;if(o===void 0)break;U.delete(o)}U.set(A,y)}async function E(A){if(!J)return;let y=++mW,o=A.session?.trim()||ZY,r=Z(),V0=new Date(Q()).toISOString(),u=[V0.replace(/[:.]/g,"-"),String(X),String(y).padStart(6,"0"),t6(o,ZY),t6(A.channel,"channel"),...A.phase?[t6(A.phase,"phase")]:[]].join("-"),G0=o9(r,u),X0={body:`${G0}.body.json`,metadata:`${G0}.meta.json`,request:`${G0}.request.json`},A0=BX(`${A.channel}\x00${o}`);try{if(H1)await jX(r);else await AW(r,{recursive:!0,mode:448}),await MW(r,448);let v=U.get(A0),x0=v===void 0?void 0:"memory";if(v===void 0){if(v=await V(r,o,A.channel,A0),v!==void 0)x0="disk"}let T0=N(A.bodyText),U0={id:u,createdAt:V0,pid:X,session:VY(o),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:A0,bodyBytes:Buffer.byteLength(A.bodyText,"utf8"),bodyHash:BX(A.bodyText),diff:fW(v,T0.text),baselineSource:x0,body:T0.parsed?{parseable:!0,...Y.summarize?.(T0.parsed)}:{parseable:!1},...A.meta?{extra:D(A.meta)}:{},files:X0},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,g)=>H1?FX(d,g):CW(d,g,{encoding:"utf8",mode:384,flag:"wx"}),l=[[X0.body,T0.text],[X0.metadata,`${JSON.stringify(U0,null,2)}
2
- `],[X0.request,`${JSON.stringify(s,null,2)}
3
- `]],I=await Promise.allSettled(l.map(([d,g])=>P0(d,g))),p=I.find((d)=>d.status==="rejected");if(p){if(Y.cleanupFailedDumps)await _(l,I);throw p.reason}return O(A0,T0.text),G?.debug("dumped request",{id:u,session:VY(o),body:X0.body}),S(r,Object.values(X0)),{id:u,files:X0,responseFile:`${G0}.response.json`}}catch(v){if(v instanceof e6&&(H1||v.code==="ERR_PRIVATE_FILES_SECURITY"))throw v;G?.warn("request dump failed",{session:VY(o),error:v instanceof Error?v.message:String(v)});return}}async function _(A,y){await Promise.all(A.map(async([o],r)=>{let V0=y[r];if(V0?.status==="rejected"&&V0.reason?.code==="EEXIST")return;await LY(o).catch(()=>{})}))}let T=Y.maxBytes??0,w=Y.sweepIntervalMs??SW,x=0;function j(A,y){return{dir:A,maxBytes:T,protectedPaths:y,now:Q(),minAgeMs:Y.sweepMinAgeMs,partialStaleMs:Y.partialStaleMs,logger:G}}function S(A,y){if(!(T>0))return;let o=Q();if(o-x<w)return;x=o,VX(j(A,y))}async function h(A,y){if(!A)return;let o=D({status:y.status,requestId:y.requestId,usage:y.usage,...y.fields,complete:y.complete??!0});try{return await yW(A.responseFile,`${JSON.stringify(o,null,2)}
4
- `,Y.stageName),A.responseFile}catch(r){if(r instanceof e6&&(H1||r.code==="ERR_PRIVATE_FILES_SECURITY"))throw r;G?.warn("response dump failed",{id:A.id,error:r instanceof Error?r.message:String(r)});return}}return{isEnabled:()=>J,setEnabled:(A)=>{J=A},dump:E,dumpResponse:h,sweep:(A)=>VX(j(Z(),A))}}var MX=B0("dump"),h1="x-cortexkit-openai-auth-dump-session",uW=["chatgpt-account-id","email","org_name","organization_name"],pW=["tools"];function NY(Y){return cW("sha256").update(JSON.stringify(Y)).digest("hex")}function lW(Y){return Y!=null&&typeof Y==="object"&&"type"in Y&&typeof Y.type==="string"?Y.type:"unknown"}function dW(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:NY(J),inputBytes:JSON.stringify(J).length,firstInputHash:J[0]===void 0?null:NY(J[0]),toolsCount:X.length,toolTypes:X.map(lW),toolsHash:NY(X),clientMetadataKeys:Q?Object.keys(Q).sort():[]}}function iW(){return qX({dir:()=>i0().dumpDir,logger:MX,secretKeys:uW,schemaKeys:pW,summarize:dW})}var EX=iW();async function A6(Y){let J=i0().dump===!0;if(EX.setEnabled(J),!J)return;let X=typeof Y.bodyText==="function"?Y.bodyText():Y.bodyText;await EX.dump({session:Y.sessionID,channel:Y.transport,phase:Y.phase,bodyText:X,accountId:Y.accountId,url:Y.url,method:Y.method,headers:Y.headers,status:Y.status,error:Y.error})}async function t1(Y){if(!i0().dump)return;MX.debug("diagnostic",Y)}function T6(Y){return JSON.stringify(jY(Y))??"undefined"}function jY(Y){if(Array.isArray(Y))return Y.map(jY);if(!i(Y))return Y;return Object.fromEntries(Object.keys(Y).sort().map((J)=>[J,jY(Y[J])]))}var nW=512,oW=2097152;function FY(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)=>FY($,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,$)&&FY(X[$],Q[$]))}function e1(Y,J){let X=[],Q=[],G=0;for(let $=0;$<Y.length;$++){let W=J?.texts[$],K=W!==void 0&&FY(J?.snapshots[$],Y[$]),U=K?W:T6(Y[$]);X.push(U),Q.push(K?J?.snapshots[$]:U==="undefined"?void 0:JSON.parse(U)),G+=U.length}return{texts:X,snapshots:Q,retainable:Y.length<=nW&&G<=oW}}function Y9(Y){return Y.retainable?Y:void 0}function J9(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 M1(){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 AX=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"]),rW="terminal_resize_reflow",r9="0.159.0",TX=`codex_exec/${r9} (Debian 12.0.0; aarch64) unknown (codex_exec; ${r9})`,sW="seccomp",X9="x-openai-auth-agent";function aW(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 Q9(Y,J){return i(Y)&&(Y.type==="message"||("role"in Y))&&Y.role===J}function tW(Y,J,X){if(!Y.input)return J.length>0;let Q=Y.canonicalInput??e1(Y.input);if(J9(Q,X)===void 0)return!0;return J.slice(Y.input.length).some(($)=>Q9($,"user")||Q9($,"developer"))}function eW(Y,J,X){let Q=Array.isArray(J?.input)?J.input:void 0,G=Q?e1(Q,Y.canonicalInput):void 0;if(Q&&G&&(tW(Y,Q,G)||!Y.turnID))Y.turnID=(X?.uuid??M1)(),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=Y9(G)}function RX(Y){let J=Y.headers.get(X9);if(Y.headers.delete(X9),!Y.metadata)return{init:Y.init};let X=aW(Y.init?.body),Q=Y.runtime?.now??Date.now;if(!Y.websocket)eW(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:sW,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",rW),Y.headers.set("x-codex-turn-metadata",G),Y.headers.set("user-agent",TX),Y.headers.set("version",r9),Y.dumpSessionID)Y.headers.set(h1,Y.dumpSessionID);let $=X;if(!$)return{init:Y.init};let W=Y.responsesLite&&typeof $.model==="string"&&AX.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(Yz);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(a1($))}}}function Yz(Y){if(!i(Y)||Y.type!=="function")return Y;let J=i(Y.parameters)&&"$schema"in Y.parameters?(()=>{let{$schema:U,...Z}=Y.parameters;return Z})():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 Jz,readFileSync as Xz,renameSync as Qz,writeFileSync as Gz}from"node:fs";import{dirname as $z}from"node:path";function Wz(Y){let J=new Map,X=JSON.parse(Xz(Y,"utf8"));if(!i(X.sessions))return J;for(let[Q,G]of Object.entries(X.sessions)){if(!i(G)||typeof G.threadID!=="string")continue;J.set(Q,G.threadID)}return J}function CX(Y,J=M1){let X=new Map,Q;try{Q=Wz(Y)}catch{return X}for(let[G,$]of Q)X.set(G,{threadID:$,turnID:J(),windowID:`${$}:0`});return X}function zz(Y,J){let X=`${Y}.tmp-${process.pid}`;Jz($z(Y),{recursive:!0});let Q={version:1,sessions:Object.fromEntries([...J].map(([G,$])=>[G,{threadID:$}]))};Gz(X,`${JSON.stringify(Q,null,2)}
5
- `,"utf8"),Qz(X,Y)}function wX(Y,J){try{zz(Y,[...J.entries()].map(([X,Q])=>[X,Q.threadID]))}catch{}}var OY={rpcRoot:"openai-auth",directoryPrefix:kX,registrationSessionId:"process"};function s9(Y,J){SX(OY,Y,J)}function xX(Y=0,J){return IX(OY,Y,J)}function vX(Y){return bX(OY,Y)}var a9=B0("commands");function R6(Y){return{configPath:Y.accountStoragePath,statePath:Y.accountStatePath}}function DY(Y){return`${String(Y.startHour).padStart(2,"0")}-${String(Y.endHour).padStart(2,"0")}`}function Kz(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 Uz="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 Hz(Y){let J=(X)=>n1(Y.store(),q1(R6(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=e9(await Y.loadAccounts(R6(Y))),G=Q?.enabled===!0,$=Q?.subagents===!0,W=X.status(),K=W.window?DY(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}`,`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((U)=>({id:U.sessionKey,label:U.sessionKey,group:"Sessions",detail:[U.accountId??"main",`expires in ${Math.ceil((U.cacheExpiresAt-W.generatedAt)/1000)}s`,...U.lastWarmedAt?[`last warm ${Math.ceil((W.generatedAt-U.lastWarmedAt)/1000)}s ago`]:[],...U.backoffUntil&&U.backoffUntil>W.generatedAt?[`backoff ${Math.ceil((U.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:U})=>{let Z=U.enabled===!0;if(await J((B)=>{B.enabled=Z}),Y.setCacheKeepEnabled?.(Z),Z)X.start();else X.stop();return a9.info(Z?"cachekeep enabled":"cachekeep disabled"),Z?`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:U})=>{let Z=U.subagents===!0;return await J((B)=>{B.subagents=Z}),Y.setCacheKeepSubagents?.(Z),`Subagent warming is ${Z?"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:U})=>{let Z=U.sustain===!0;return await J((B)=>{B.sustain=Z}),Y.setCacheKeepSustain?.(Z),Z?Uz:"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:DY(W.window)}:{}}],run:async({values:U})=>{let Z=U.window;if(typeof Z!=="string"||Z.trim()==="")return await J((V)=>{delete V.startHour,delete V.endHour}),Y.setCacheKeepWindow?.(void 0),"Warm window cleared: keep-warm warms at any hour (within idle caps).";let B=Kz(Z);if(!B.ok)return{ok:!1,text:`Invalid window: ${B.reason}`};let{startHour:D,endHour:N}=B;return await J((V)=>{V.startHour=D,V.endHour=N}),Y.setCacheKeepWindow?.({startHour:D,endHour:N}),`Warming limited to ${DY(B)} local hours.`}}]}}}}var hX=["error","warn","info","debug","trace"];function Zz(Y){return{title:"Diagnostics",build:async()=>{let J=i0(),Q=(await Y.loadAccounts(R6(Y)))?.logging?.level??"info";return{lines:[`Dumps ${J.dump?"on":"off"}`,`Dump directory: ${J.dumpDir}`,`Log level: ${Q}`],actions:[{id:"dump",label:J.dump?"Turn request dumps off":"Turn request dumps on",knobs:[{kind:"toggle",id:"enabled",label:"Request dumps",value:!J.dump}],run:async({values:G})=>{let $=G.enabled===!0;await n1(Y.store(),q1(R6(Y)),(K)=>{K.dump={...K.dump??{},enabled:$}});let W=wJ();return a9.info($?"request dump enabled":"request dump disabled"),$?`Request dumps are on, written to ${W.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:hX.map((G)=>({value:G,label:G})),value:hX.includes(Q)?Q:"info"}],run:async({values:G})=>{let $=String(G.level);return await n1(Y.store(),q1(R6(Y)),(W)=>{W.logging={...W.logging??{},level:$}}),t9($),a9.info("log level changed",{level:$}),`Log level set to ${$}.`}}]}}}}async function Vz(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 gX(Y){let J=R6(Y),X=q1(J),Q=Y.quotaManager&&Y.resolveResetTarget&&Y.refreshResetTargetQuota&&Y.fetchImpl&&Y.now&&Y.randomUUID?XY({configPath:J.configPath,statePath:J.statePath,quotaManager:Y.quotaManager,loadAccounts:Y.loadAccounts,mutateAccounts:e8(Y.store(),X),resolveResetTarget:Y.resolveResetTarget,refreshResetTargetQuota:Y.refreshResetTargetQuota,fetchImpl:Y.fetchImpl,now:Y.now,randomUUID:Y.randomUUID,accountKeys:()=>Vz(Y)}):void 0,G=Y.beginAccountLogin;return QY({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:($)=>O6(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)=>u9($,W),...Y.refreshAllQuota?{quotaCheck:async($)=>{if($.length===1){let U=Y.store();for(let Z of $)await U.requestReading(Z);await U.pullsSettled();return}let K=(await Y.refreshAllQuota?.()??[]).filter((U)=>!U.ok);if(K.length>0)throw new yX("quota-check-failed",K.map((U)=>U.permanent?`${U.account}: sign-in no longer accepted — remove and add this account again`:`${U.account}: fetch failed — check again to retry`).join(`
8
- `))}}:{},cache:Hz(Y),diagnostics:Zz(Y),extras:[...Q?[Q]:[],YY({...Y.getStickyRouting?{getPin:Y.getStickyRouting}:{},...Y.clearStickyRouting?{clearPin:Y.clearStickyRouting}:{}}),...Y.vault?[JY({vault:Y.vault,changed:Y.afterWrite})]:[]],afterApply:async()=>{await Y.afterWrite?.(),await Y.refreshSidebar?.().catch(()=>{})}})}function fX(Y){return(J,X="info")=>{a9.info("menu notification",{sessionId:Y,kind:X}),s9({command:k1,notify:{message:J,kind:X}},Y)}}function mX(Y,J){return gX(Y).open({...J!==void 0?{sessionId:J}:{},notify:fX(J)})}function cX(Y,J){return gX(Y).apply(J,{...J.sessionId!==void 0?{sessionId:J.sessionId}:{},notify:fX(J.sessionId)})}function uX(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,Lz=30000,pX=240000,Nz="bg-quota-refresh",jz=120000;function PY(Y,J){return Y8({name:Nz,ttlMs:jz,path:Y,renew:!0,...J})}function lX(Y,J=C6,X=()=>PY(Y.paths.configPath)){return Fz(Y,J,X)}function Fz(Y,J,X){return dX(async()=>J({...Y,respectBackoff:!0,skipFresherThanMs:pX}),X,[])}async function dX(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 iX(Y,J,X){return dX(async()=>{return await Y.refreshDueTokens(J),Y.pollRows(J,{skipReadWithinMs:pX})},X,[])}class _Y{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)*Lz);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 qY(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 G9(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 Oz=300000,Dz=3600000,Pz=1800000,_z=60000,qz=32,Ez=8388608,Mz=30000,Az=600000;function Z1(Y,J){return typeof Y==="number"&&Number.isFinite(Y)&&Y>0?Y:J}function J8(Y){return Y instanceof Error?Y.message:String(Y)}class $9{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=Z1(Y.ttlMs,Oz),this.tickIntervalMs=Z1(Y.tickIntervalMs,_z),this.leadMs=Z1(Y.leadMs,this.tickIntervalMs+15000),this.maxIdleWarmMs=Z1(Y.maxIdleWarmMs,Dz),this.maxSubagentIdleMs=Z1(Y.maxSubagentIdleMs,Pz),this.maxTargets=Z1(Y.maxTargets,qz),this.maxBytes=Z1(Y.maxBytes,Ez),this.warmTimeoutMs=Z1(Y.warmTimeoutMs,Mz),this.backoff=Y.backoffMs??Az,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&&!G9(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 B=this.leastRecentlyTouched();if(B===void 0)break;this.log?.debug("cachekeep evicted least recently used target",{sessionKey:B}),this.drop(B)}let $=Y.isSubagent===!0,W=Y.accountId||void 0,K=this.adapter.profile?.({bodyText:X,isSubagent:$,accountId:W,meta:Y.meta}),U=Z1(K?.ttlMs,this.ttlMs),Z=this.now();return this.targets.set(J,{bodyText:X,bodyBytes:Q,accountId:W,isSubagent:$,meta:Y.meta,ttlMs:U,maxWarms:K?.maxWarms!==void 0&&K.maxWarms>0?Math.floor(K.maxWarms):void 0,maxIdleMs:K?.maxIdleMs!==void 0?Z1(K.maxIdleMs,this.idleDefault($)):void 0,cacheExpiresAt:Z+U,lastRealRequestAt:Z,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:J8(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&&!G9(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 B;try{B=await this.adapter.activeAccount(Y,X)}catch(D){this.fail(Y,J,"cachekeep skip (active account unknown)",{error:J8(D)});return}if(!this.isCurrent(Y,J))return;if(B!==void 0&&B!==J.accountId){this.log?.debug("cachekeep dropped target (session changed account)",{sessionKey:Y,accountId:J.accountId,activeAccountId:B}),this.drop(Y);return}}let Q;try{Q=await this.adapter.buildBody(X)}catch(B){this.fail(Y,J,"cachekeep skip (replay body unbuildable)",{error:J8(B)});return}if(!this.isCurrent(Y,J))return;if(this.retireIfExpired(Y,J))return;let G=nX([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(B){this.fail(Y,J,"cachekeep failed",{error:J8(B)});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 U;try{U=this.adapter.readUsage?.({target:X,response:W,text:K})}catch{}let Z=this.now();if(J.cacheExpiresAt=Z+J.ttlMs,J.lastWarmedAt=Z,J.backoffUntil=void 0,J.failures=0,J.warmCount+=1,this.log?.debug("cachekeep fired",{sessionKey:Y,accountId:J.accountId,warmCount:J.warmCount,...U}),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 EY(Y){if(typeof Y!=="string")return!1;try{let J=JSON.parse(Y);return i(J)&&i(J.client_metadata)&&J.client_metadata.ws_request_header_x_openai_internal_codex_responses_lite==="true"}catch{return!1}}function MY(Y){if(typeof Y!=="string")return Y;try{let J=JSON.parse(Y);if(!i(J)||!i(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 X8(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"),EY(Y.body))J.set("x-openai-internal-codex-responses-lite","true");return{...Y,headers:J,body:MY(Y.body)}}function rX(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 sX(Y){return qY(Y?.cachekeep)}var AY=1800000,Tz=2,Rz=2*AY+900000,Cz=/^gpt-(\d+)(?:\.(\d+))?(?:-|$)/;function wz(Y){try{let X=JSON.parse(Y).model;if(typeof X!=="string")return!1;let Q=Cz.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 Sz(Y){if(!wz(Y.bodyText))return;if(!Y.isSubagent)return{ttlMs:AY};return{ttlMs:AY,maxWarms:Tz,maxIdleMs:Rz}}function Iz(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 TY(){return{input_tokens:0,output_tokens:0,cached_tokens:0,hit_rate:null}}function aX(Y){if(!Y||typeof Y!=="object")return TY();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 bz(Y){try{let J=JSON.parse(Y);return aX(J.usage)}catch{return TY()}}function kz(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($),U=K.type??W;if(U!=="response.completed"&&U!=="response.done")return;let Z=K.response;Q=aX(Z?.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??TY()}function tX(Y,J,X=Date.now()){if(!J)return;if(Y.route==="sticky-balanced"){let G=Y.stickyAssignments?.[V1(J)];if(!G)return;if(G.lastSeenAt<X-oX)return;return G.accountId}let Q=Y.activeRouting?.[J];if(!Q||Q.route!==Y.route)return;return Q.activeId}function xz(Y){let{logger:J,activeAccount:X}=Y;return{buildBody:(Q)=>Iz(Q.bodyText),async send({target:Q,body:G,signal:$}){let W=async(B)=>{$.throwIfAborted();let D={...Q.meta.replayHeaders,authorization:`Bearer ${B}`,"content-type":"application/json"};if(Q.meta.chatgptAccountId)D["ChatGPT-Account-Id"]=Q.meta.chatgptAccountId;else delete D["ChatGPT-Account-Id"];let N;try{let V=JSON.parse(G);N={warmBodyKeys:Object.keys(V),stream:V.stream,max_output_tokens:V.max_output_tokens,store:V.store,has_stream_options:"stream_options"in V,has_max_tokens:"max_tokens"in V,model:V.model}}catch{}J?.debug("cachekeep warm request",{...N,headerKeys:Object.keys(D),hasChatGptAccountId:"ChatGPT-Account-Id"in D});try{let V=await Y.fetchImpl(Y.codexResponsesUrl,X8({method:"POST",headers:D,body:G,signal:$}));return await J6(V,B,"event-stream")}catch(V){throw y1(V,B)}};if(Q.accountId&&Y.vault?.owns(Q.accountId)){let B=await Y.vault.send(Q.accountId,W,{site:"cachekeep",signal:$});if(!B)throw Error(`vault refused warm for ${Q.accountId}`);return B}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,U;if(Q.accountId&&Q.accountId!=="main"){let B=await Y.refreshFallback(Q.accountId);if(typeof B==="string")K=B;else K=B.token,U=B.onAuthFailure}else K=await Y.getMainToken();if(Y.vault&&await Y.vault.authority()!=="local")throw Error("local accounts are not warmed while this host is connected to the vault");let Z=await W(K);if(Z.status===401)await U?.(Z.status);return Z},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?kz(G):bz(G),U=Y6(Q.headers);return{...K,quota_primary_pct:U.primary?.usedPercent??null,quota_secondary_pct:U.secondary?.usedPercent??null}},profile:Sz,...X?{activeAccount:(Q,G)=>X(G.meta.routingSessionId)}:{}}}function eX(Y){let{fetchImpl:J,getMainToken:X,refreshFallback:Q,vault:G,codexResponsesUrl:$,activeAccount:W,logger:K,...U}=Y;return new $9({...U,logger:K,adapter:xz({fetchImpl:J,getMainToken:X,refreshFallback:Q,vault:G,codexResponsesUrl:$,activeAccount:W,logger:K})})}function Y3(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 U=++X;return Y.read(W).catch(Y.fallback).then((Z)=>{if(U>Q){if(Q=U,$=Z,G=!0,K)J={...K,path:W,value:Z};return Y.onRead(Z),Z}return G?$:Z})},invalidate(){J=void 0}}}import{readFileSync as vz}from"node:fs";var hz=60000,yz=15000,wY=2000,SY=1e4;async function W9(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 gz(Y){if(!X6(Y.quota))return;let J=Q8(Y.quota);return J.limits.some((X)=>X.kind==="reading")?J.checkedAt:void 0}function fz(Y){if(!Y)return;let J=B1(Y);return J?L1(J):void 0}function J3(Y){try{let J=JSON.parse(vz(Y,"utf8"));if(!J||typeof J!=="object"||Array.isArray(J))return;return r6(J).migratedAt}catch{return}}function mz(Y){if(Y.type!=="oauth")return!1;return Y.candidate||Y.torn===!0&&Y.enabled}class IY{listeners=new Set;deps;now;log;snapshot={active:!1,rows:[],key:void 0,readAt:0};inflightRead;store;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??B0("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 W9(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(J3(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 $8(J,this.deps.readBudgetMs??G8,()=>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}|${CY(Y.configPath)}|${CY(Y.statePath)}`}storeFor(Y){if(this.store?.configPath===Y.configPath)return this.store.store;let J=F6({provider:"openai",configPath:Y.configPath,statePath:Y.statePath,quota:j6,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},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(J3(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 $3(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,W9(Y,this.deps.vaultFirstRosterBackgroundWaitMs??SY).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(!mz(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??yz))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){G3(this.pending,Y,J),this.replaceRow(Y.id,(X)=>({...X,quota:Q3(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((N)=>N.id===Y);if(G?.type!=="oauth")return;let $=fz(X);if(!($&&G.identity?$===G.identity:w6(G)?.access===X))return;let K=M6(J,this.now(),Q);if(!K)return;if(this.applyObservation(G,K),G.credentialEpoch===void 0)return;let U={credentialEpoch:G.credentialEpoch,...G.identity!==void 0?{identity:G.identity}:{}},Z=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 Z.recordQuota(G.id,U,K)}).catch((N)=>{this.log.warn("pool quota not recorded",{rowId:G.id,error:N instanceof Error?N.message:String(N)})});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=RY(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(RY(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??wY);let Q=this.now(),G=X3(J),$=[];for(let W of Y){if(!W.candidate||this.vaultOwned(W))continue;let K=w6(W);if(!K)continue;let U=(K.expires??0)-Q;if(!(!K.access||!K.expires||U<=G)||this.refreshBackedOff(W,J,Q))continue;let B=this.refresh(W.id);if(X.waitForAll||!K.access||!K.expires||U<=hz)$.push(B)}await Promise.all($)}refreshBackedOff(Y,J,X=this.now()){let Q=w6(Y);if(!Q)return!1;let G=z9(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&&E1(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=w6(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?w6(X)?.refresh:void 0,G,$=(W,K)=>{return G=K.credentialEpoch,this.deps.refreshProvider(W,K)};try{let W=await K3({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,W3(J,X,this.now(),this.backoff.get(Y)))}refreshBackoffFor(Y){return z3(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=gz($);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(){this.disposed=!0}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)return}}}var U3=60000,bY=900000,cz={set(Y,J){let X=setTimeout(Y,J);return X.unref?.(),X},clear(Y){clearTimeout(Y)}};function uz(Y){return Y.status==="completed"||Y.status==="already-migrated"||Y.status==="nothing-to-import"||Y.status==="ambiguous"}function H3(Y){return Y.status==="deferred"||Y.status==="retry"||Y.status==="error"}function Z3(Y){let J=Y.log??B0("pool-migration"),X=Y.timers??cz,Q=Y.random??Math.random,G=Y.migrate??W8,$=Y.adopt??z8,W=Y.fence??(()=>q6({currentVersion:Y.version})),K=!1,U=!1,Z=!1,B=0,D,N=Promise.resolve(),V,O,E,_=!1;function T(){if(_)return;_=!0,J.warn(P6,{reason:"placeholder-without-main"})}let w=()=>({paths:Y.paths(),slot:Y.slot,log:J,...Y.runDeps});function x(u){let G0=N.then(u).catch((X0)=>{J.warn("account pool background run failed",{error:X0 instanceof Error?X0.message:String(X0)})});return N=G0,G0}function j(u){if(U)return;if(D!==void 0)X.clear(D);D=X.set(()=>{D=void 0,x(r)},u)}function S(){let u=Math.min(U3*2**Math.min(B,10),bY);return B++,h(u)}let h=(u)=>Math.round(u*(1-0.2*Q()));async function A(){if(!await Y.paused?.())return!1;return j(h(U3)),!0}async function y(){if(U||await A()||U)return;let u;try{u=await G({...w(),fence:W})}catch(G0){J.warn("account pool migration failed; it will be tried again",{error:G0 instanceof Error?G0.message:String(G0)}),j(S());return}if(u.status==="refused"){if(u.reason==="placeholder-without-main")T();j(h(bY));return}if(uz(u)){if(Z=!0,B=0,u.status==="completed")J.info("account pool migration completed",{rowId:u.rowId});await o();return}if(H3(u)){if(u.status!=="deferred")J.warn("account pool migration will be tried again",{outcome:u});j(S())}}async function o(){if(U||await A()||U)return;let u;try{let G0=await W();if(U)return;if(!G0.open){let X0=JSON.stringify(G0.blockers);if(X0!==E)E=X0,J.info("host login adoption waits for older plugin versions",{blockers:G0.blockers});j(S());return}u=await $(w())}catch(G0){J.warn("adopting the host login into the account pool failed",{error:G0 instanceof Error?G0.message:String(G0)}),j(S());return}if(u.status==="not-migrated")return;if(u.status==="slot-read-only")return;if(Z=!0,u.status==="completed")J.info("host login adopted into the account pool",{rowId:u.rowId,operation:u.operation});if(H3(u)){J.warn("host login adoption will be tried again",{outcome:u}),j(S());return}if(B=0,Z)j(h(bY))}async function r(){if(U)return;if(Z)await o();else await y()}function V0(){if(V)return V;let u=x(async()=>{if(V=void 0,!U)if(Z)await o();else await y()});return V=u,u}return{start(){if(K||U)return;K=!0,x(y)},requestAdoption:V0,noticePlaceholderWithoutMain:T,noticeRealSlot(u){if(!Z||U||u===O)return;O=u,V0()},dispose(){if(U=!0,D!==void 0)X.clear(D);D=void 0},idle:async()=>{for(;;){let u=N;if(await u,u===N)return}},migrated:()=>Z}}var Q6={"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.",...yY};function gY(Y){return Y!==void 0&&Y in yY}function pz(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===T1)return!0;if(N3(J,{accountId:G.identity}))return!1;return hY(A1(G.quota),J,X)})}function xY(Y){let J=Y.vault;return[...(J?[]:pz(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)=>hY(A1(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 lz(Y){return Y.flatMap((J)=>J.row?[J.row]:[])}function K8(Y,J){let X=Y.now(),Q=U9(J,Y.storage,X),G=J.map((U)=>({id:U.id,kind:U.kind,...X6(U.quota)?{quota:U.quota}:{}})),$=lz(J),W=new Set(J.filter((U)=>!U.row).map((U)=>U.id)),K=Y.source.rateLimitMarks($);for(let[U,Z]of Y.vault?.rateLimitMarks?.()??[])if(W.has(U)&&Z>X)K.set(U,Z);return{rows:G,now:X,rateLimitMarks:K,refreshBackoff:Y.source.refreshBackoffFor($),killswitch:Q,requestPull:(U)=>W.has(U)?Y.vault?.requestReading(U):Y.source.requestReading(U)}}function V3(Y){let J=Y.find((X)=>X.id===T1);return{main:J?A1(J.quota):void 0,fallbacks:Y.filter((X)=>X.id!==T1).map((X)=>{let Q=A1(X.quota);return{accountId:X.id,...Q?{quota:Q}:{}}})}}async function vY(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 E3(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=xY(Y),X=Y.replayable===!1&&J.some((G)=>G.id===T1)?J.filter((G)=>G.id===T1):J,Q=O3(K8(Y,X));if(Q)await Q,J=xY(Y);if(Y.mode==="sticky-balanced"&&Y.sessionId&&Y.replayable&&Y.body!==void 0){let G=await iz(Y,J,Y.sessionId,Y.body);if(G)return G}return dz(Y,J)}async function dz(Y,J){let X=F3(Y.mode),Q=D3({...K8(Y,J),placement:X,mainId:Y.vault?Y.mode==="sticky-balanced"?null:j3(Y.vault.routes()):void 0,replayable:Y.replayable});if(Q.kind==="block")return Y.log.debug("pool admission blocked the request",{pid:process.pid,reason:Q.block.reason}),{response:Y.blocked(Q.block,V3(J),Y.vault?J.length===0?Y.vault.noRouteCause():void 0:J.length===0?"no-accounts":"unusable"),servedId:T1};if(Q.lastPath)Y.log.debug("pool admission: every account is exhausted; probing anyway",{pid:process.pid,order:Q.order});let G=new Map(J.map((B)=>[B.id,B])),$=L3(Y.storage),W=[],K=new Set,U,Z=!1;for(;;){let B=B3(Q.order.filter((V)=>!K.has(V)),W,$),D=B===void 0?void 0:G.get(B);if(!D)break;let N;try{N=await vY(Y,D)}catch(V){if(Y.isAbort(V)||!U||Y.mode==="fallback-first")throw V;return Y.log.debug("pool fallback attempt threw; stopping",{pid:process.pid,accountId:D.id}),U}if(!N){if(!D.row)Z=!0;K.add(D.id);continue}U?.response.body?.cancel().catch(()=>{}),U={response:N,servedId:D.id},W.push({id:D.id,status:N.status})}if(U)return U;return{response:Y.blocked({reason:"no-credential"},V3(J),Z?"vault-refused":Y.vault?"vault-empty":"unusable"),servedId:T1}}async function iz(Y,J,X,Q){let G=Buffer.byteLength(Q,"utf8"),$=new Map(J.map((T)=>[T.id,T])),W=K8(Y,J),K=kY(W),U={requestBytes:G,reservePercent:(T)=>K9(Y.storage,T===T1?void 0:T),resetCredits:Y.resetCredits,onEmptyWeightedSet:()=>{Y.log.debug("sticky routing: no fresh weighted candidates; using configured order")}},Z=(T,w)=>(x,j)=>{let S=new Set(x);return Y.placePin({sessionId:X,requestBytes:G,now:T.now,validPinnedAccountIds:T.rows.map((h)=>h.id).filter((h)=>!w.excluded.has(h)),excludeAccountIds:x,quotaCheckedAtByAccount:Object.fromEntries(T.rows.map((h)=>[h.id,w.projections.get(h.id)?.checkedAt])),wireAccountIdByAccount:Object.fromEntries(J.map((h)=>[h.id,h.identity])),select:(h)=>P3(T,U,S,h),persist:j})},B=Z(W,K),D=B([],!0);if(!D)return;let N=D.accountId,V=(T)=>{let w=B([N],!0);if(!w)return!1;return Y.log.debug("sticky routing: migrated session pin",{pid:process.pid,fromAccountId:N,toAccountId:w.accountId,reason:T}),N=w.accountId,!0},O=_3(W,U,N);if(O.kind==="none")return;if(O.kind==="move"){if(!V(O.reason)&&O.reason==="killswitch")return}else if(O.kind==="detour"){let T=B([N],!1);if(!T)return;Y.log.debug("sticky routing: pinned account awaits a quota reading",{pid:process.pid,pinnedAccountId:N,servedAccountId:T.accountId}),N=T.accountId}let E=$.get(N);if(!E)return;let _=await vY(Y,E);if(!_)return;if(_.status===401||_.status===403||_.status===429){let T=xY(Y);W=K8(Y,T),K=kY(W),B=Z(W,K);let w=q3(W,K,N,_.status);if(w.action==="migrate"){let x=N;if(V(w.reason)&&N!==x){let j=T.find((h)=>h.id===N),S=j?await vY(Y,j):void 0;if(j&&S){let h=_;_=S,h.body?.cancel().catch(()=>{}),E=j}else N=x}}}return{response:_,servedId:E.id}}var nz=new Map([["needs_reauth","needs sign-in"],["retired","turned off in vault"],["corrupt","unavailable"]]);function H9(Y){return typeof Y==="number"&&Number.isFinite(Y)}function oz(Y){if(!X6(Y))return;let J=Y.budget;if(J?.kind!=="reading")return;let{limit:X,used:Q,remaining:G,usedPercent:$,remainingPercent:W}=J;if(!H9(X)||!H9(Q)||!H9(G)||!H9($)||!H9(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 fY(Y,J){let X=A1(Y),Q=oz(Y);if(!X&&!Q)return null;let G=X6(Y)?Q8(Y).checkedAt:void 0;return{...G!==void 0?{checkedAt:G}:{},...X?.primary?{primary:X.primary}:{},...X?.secondary?{secondary:X.secondary}:{},...Q?{spendControl:Q}:{},...J!==void 0?{resetCreditsAvailable:J}:{}}}function M3(Y,J,X,Q){let G=U9(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:fY($.quota,W),killed:G.get($.routeId)===!1,enabled:$.enabled,routable:J.has($.routeId),...$.state!=="active"||$.stale||$.unclaimed||$.enabled&&!J.has($.routeId)?{vaultState:nz.get($.state)??"unavailable"}:{},...W!==void 0?{resetCredits:W}:{}}}),route:X?.routing?.mode??"main-first",lastUpdated:Q}}function A3(Y,J,X,Q=()=>{return}){let G=U9(Y,{version:1,accounts:[],...J},X),$=Y.find((K)=>K.id===U1),W=$?Q($.id):void 0;return{main:{quota:$?fY($.quota,W):null,...$?.identity!==void 0?{mainAccountId:$.identity}:{},killed:G.get(U1)===!1,...W!==void 0?{resetCredits:W}:{}},fallbacks:Y.filter((K)=>K.id!==U1&&K.enabled).map((K)=>{let U=Q(K.id);return{id:K.id,label:K.label,...K.identity!==void 0?{accountId:K.identity}:{},quota:fY(K.quota,U),killed:G.get(K.id)===!1,enabled:!0,...U!==void 0?{resetCredits:U}:{}}}),route:J?.routing?.mode??"main-first",lastUpdated:X,accountPool:!0}}import{randomUUID as rz}from"node:crypto";import{chmod as sz,mkdir as az,rename as tz,rm as R3,writeFile as ez}from"node:fs/promises";import{homedir as YK}from"node:os";import{join as mY}from"node:path";function C3(){let Y=process.env.XDG_STATE_HOME||mY(YK(),".local","state");return mY(Y,"cortexkit","openai-auth","processes")}function w3(Y=process.pid,J=C3()){return mY(J,`${Y}.json`)}var U8=0,T3;async function JK(Y,J){await az(Y,{recursive:!0,mode:448}),await sz(Y,448);let X=w3(J.pid,Y),Q=`${X}.${rz()}.tmp`;try{await ez(Q,`${JSON.stringify(J)}
11
- `,{mode:384}),await tz(Q,X)}catch(G){throw await R3(Q,{force:!0}).catch(()=>{}),G}return X}async function S3(Y){let J=Y.pid??process.pid,X=Y.dir??C3();T3??=(Y.now??Date.now)(),U8++;let Q;try{Q=await JK(X,{pid:J,version:Y.version,startedAt:T3})}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,U8=Math.max(0,U8-1),U8>0)return;await R3(w3(J,X),{force:!0}).catch(($)=>{Y.logger.warn("process heartbeat not removed",{dir:X,error:$ instanceof Error?$.message:String($)})})}}}import{resolve as H8}from"node:path";import{resolveClaustrumConnectionPath as XK}from"@cortexkit/claustrum-client";var QK=60000,GK=240000,b3=Symbol.for("@cortexkit/openai-auth/opencode-vaults"),k3=globalThis,Z9=k3[b3]??new Map;k3[b3]=Z9;function x3(Y,J){let X=Boolean(Y.connectScoped||Y.connectEnrollment),Q=H8(Y.stateDir),G=H8((Y.connectionFile??XK)()),$=JSON.stringify([Y.host,Q,G,H8(J.configPath),H8(J.statePath)]),W={reservedRouteIds:Y.reservedRouteIds??(()=>[])},K=X?void 0:Z9.get($);if(!K){let B=new Set;if(K={vault:new I3({...Y,stateDir:Q,connectionFile:()=>G,...!X?{projectRoot:Q}:{},reservedRouteIds:()=>new Set([...B].flatMap((N)=>[...N.reservedRouteIds()]))}),holders:B,firstRoster:Promise.withResolvers(),started:!1},!X)Z9.set($,K)}K.holders.add(W);let U=K,Z=!1;return{vault:U.vault,firstRoster:U.firstRoster.promise,start(){if(Z||U.started)return;U.started=!0;let B=async()=>{if(U.holders.size&&await U.vault.authority()!=="local")await U.vault.pollStale(GK)};U.vault.start(),U.vault.firstRoster().finally(()=>{U.firstRoster.resolve(),B()}),U.quotaPoll=setInterval(B,QK),U.quotaPoll.unref?.()},release(){if(Z)return;if(Z=!0,U.holders.delete(W),U.holders.size!==0)return;if(U.quotaPoll)clearInterval(U.quotaPoll);if(U.vault.close(),U.firstRoster.resolve(),!X&&Z9.get($)===U)Z9.delete($)}}}var f3=900000,$K=0.016666666666666666,v3=0.000001;function uY(Y,J){for(let X of[Y?.primary?.checkedAt,Y?.checkedAt,J])if(typeof X==="number"&&Number.isFinite(X))return X;return}function pY(Y){if(Y.status===401||Y.status===403)return{action:"migrate",reason:"permanent"};if(!Y.quota)return{action:"retain",reason:"unknown"};let J=uY(Y.quota,Y.quotaCheckedAt);if(J===void 0||!Number.isFinite(J)||Y.now-J>f3)return{action:"retain",reason:"stale"};if(Y.killswitchPasses===!1)return{action:"migrate",reason:"killswitch"};let X=cY(Y.quota).sort((G,$)=>{let W=G.windowMs,K=$.windowMs,U=typeof W==="number"&&Number.isFinite(W),Z=typeof K==="number"&&Number.isFinite(K);if(U!==Z)return U?-1:1;if(U&&Z)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=g3(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 h3(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,$K);return Q/$}function y3(Y,J){if(Y<J)return-1;if(Y>J)return 1;return 0}function WK(Y,J){if(!Y.quota)return;let X=uY(Y.quota,Y.quotaCheckedAt);if(X===void 0||J-X>f3)return;let Q=cY(Y.quota).map(({key:W,window:K})=>{return h3(K,Y.reservePercent[W]??0,J)}),G=Y.quota.spendControl;if(G&&Number.isFinite(G.remainingPercent))Q.push(h3(G,0,J));let $=Q.length>0?Math.min(...Q):0;return $>0?{candidate:Y,quotaCheckedAt:X,weight:$}:void 0}function m3(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)=>WK(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,v3),U=((Y.pendingBytes.get(W.candidate.accountId)??0)+Y.requestBytes)/Math.max(W.weight,v3);return K-U||$.candidate.configuredOrder-W.candidate.configuredOrder||y3($.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||y3(G.accountId,$.accountId)})[0];if(!Q)throw Error("Cannot select a sticky candidate: input.candidates is empty");return{accountId:Q.accountId,quotaCheckedAt:uY(Q.quota,Q.quotaCheckedAt),source:"mode-fallback"}}import{readFile as zK}from"node:fs/promises";import{homedir as KK}from"node:os";import{join as c3}from"node:path";var UK="https://models.dev/api.json",HK="OPENCODE_OPENAI_AUTH_MODELS_CACHE",ZK="OPENCODE_MODELS_PATH",VK="OPENCODE_DISABLE_MODELS_FETCH",BK=1e4,LK=300000;function g1(Y){return Y!==null&&typeof Y==="object"&&!Array.isArray(Y)?Y:null}function u3(Y){if(Y===void 0)return 0;return typeof Y==="number"&&Number.isFinite(Y)&&Y>=0?Y:null}function lY(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=u3(Y.cache_read),G=u3(Y.cache_write);if(Q===null||G===null)return null;return{input:J,output:X,cache:{read:Q,write:G}}}function NK(Y){let J=g1(Y);if(!J)return null;let X=lY(J);if(!X)return null;let Q=X;if(Array.isArray(J.tiers)){let W=[];for(let K of J.tiers){let U=g1(K);if(!U)continue;let Z=g1(U.tier),B=Z?.size;if(Z?.type!=="context")continue;if(typeof B!=="number"||!Number.isFinite(B)||B<=0)continue;let D=lY(U);if(!D)continue;W.push({...D,tier:{type:"context",size:B}})}if(W.length>0)Q.tiers=W}let G=g1(J.context_over_200k),$=G?lY(G):null;if($)Q.experimentalOver200K=$;return Q}function p3(Y){let J=g1(Y),X=g1(J?.openai),Q=g1(X?.models);if(!Q)return null;let G={};for(let[$,W]of Object.entries(Q)){let K=g1(W),U=NK(K?.cost);if(U)G[$]=U}return Object.keys(G).length>0?G:null}function jK(){let Y=process.env[HK]?.trim();if(Y)return Y;let J=process.env[ZK]?.trim();if(J)return J;let X=process.env.XDG_CACHE_HOME?.trim()||(process.platform==="win32"?process.env.LOCALAPPDATA?.trim():void 0)||c3(KK(),".cache");return c3(X,"opencode","models.json")}function FK(){let Y=process.env[VK]?.toLowerCase();return Y==="true"||Y==="1"}async function OK(){try{let Y=p3(JSON.parse(await zK(jK(),"utf8")));if(Y)return Y}catch{}if(FK())return null;try{let Y=await fetch(UK,{signal:AbortSignal.timeout(BK)});if(!Y.ok)return null;return p3(await Y.json())}catch{return null}}var S6;function l3(){let Y=Date.now();if(S6&&S6.expiresAt>Y)return S6.promise;let J={expiresAt:Y+LK,promise:OK()};return S6=J,J.promise.then((X)=>{if(X===null&&S6===J)S6=void 0}),J.promise}function I6(Y){return typeof Y==="object"&&Y!==null}function DK(Y){if(Array.isArray(Y))return Y;if(I6(Y)&&Array.isArray(Y.data))return Y.data;return[]}function PK(Y){if(!I6(Y)||!I6(Y.info))return;return typeof Y.info.role==="string"?Y.info.role:void 0}function d3(Y){if(!I6(Y)||!I6(Y.info))return null;let J=Y.info,X=I6(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 i3(Y,J){return{agent:Y.agent??J.agent,model:Y.model??J.model,variant:Y.variant??J.variant}}function n3(Y){return Boolean(Y.agent&&Y.model&&Y.variant)}async function o3(Y,J){if(!Y||!J)return null;let X=Y;if(typeof X.session?.messages!=="function")return null;let Q=[];try{Q=DK(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(PK(Q[$])!=="assistant")continue;let W=d3(Q[$]);if(!W)continue;if(G=i3(G,W),n3(G))return G}for(let $=Q.length-1;$>=0;$--){let W=d3(Q[$]);if(!W)continue;if(G=i3(G,W),n3(G))return G}if(!G.agent&&!G.model&&!G.variant)return null;return G}var _K=B0("rpc"),s3="__openaiAuthRpcServers";function a3(Y){return r3({...Y,isManagedDir:p9,log:_K,drain:(J,X)=>Y.drain(J,X),apply:async(J)=>await Y.apply(J)})}var b1={};nY(b1,{withoutInternalHeaders:()=>iG,sanitizeHttpFallbackBody:()=>MY,orderCodexBody:()=>a1,hasWebSocketResponsesLiteMetadata:()=>EY,createWebSocketFetch:()=>WB,applyTurnId:()=>mG,advanceTurn:()=>u4,TITLE_HEADER:()=>c4,QUOTA_ACCOUNT_HEADER:()=>v8,OpenAIWebSocketPool:()=>b1,CODEX_BODY_KEY_ORDER:()=>UY});import{createHash as JB}from"node:crypto";var qK=Symbol.for("vercel.ai.error"),R1=class Y extends Error{constructor({name:J,message:X,cause:Q}){super(X);this[qK]=!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}},EK="AI_DecisionUnsupportedQuestionTypeError",KF=`vercel.ai.error.${EK}`;var t3="AI_APICallError",e3=`vercel.ai.error.${t3}`,MK=Symbol.for(e3),G6=class extends R1{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:U}){super({name:t3,message:Y,cause:W});this[MK]=!0,this.url=J,this.requestBodyValues=X,this.statusCode=Q,this.responseHeaders=G,this.responseBody=$,this.isRetryable=K,this.data=U}static isInstance(Y){return R1.hasMarker(Y,e3)}},AK="AI_EmptyResponseBodyError",UF=`vercel.ai.error.${AK}`;var TK="AI_DecisionRefusalError",HF=`vercel.ai.error.${TK}`;var Y2="AI_InvalidArgumentError",J2=`vercel.ai.error.${Y2}`,RK=Symbol.for(J2),dY=class extends R1{constructor({message:Y,cause:J,argument:X}){super({name:Y2,message:Y,cause:J});this[RK]=!0,this.argument=X}static isInstance(Y){return R1.hasMarker(Y,J2)}},CK="AI_InvalidPromptError",ZF=`vercel.ai.error.${CK}`;var wK="AI_InvalidResponseDataError",VF=`vercel.ai.error.${wK}`;var SK="AI_JSONParseError",BF=`vercel.ai.error.${SK}`;var IK="AI_LoadAPIKeyError",LF=`vercel.ai.error.${IK}`;var bK="AI_LoadSettingError",NF=`vercel.ai.error.${bK}`;var kK="AI_NoContentGeneratedError",jF=`vercel.ai.error.${kK}`;var xK="AI_NoSuchModelError",FF=`vercel.ai.error.${xK}`;var vK="AI_NoSuchProviderReferenceError",OF=`vercel.ai.error.${vK}`;var hK="AI_TooManyEmbeddingValuesForCallError",DF=`vercel.ai.error.${hK}`;var yK="AI_TypeValidationError",PF=`vercel.ai.error.${yK}`;var gK="AI_UnsupportedFunctionalityError",_F=`vercel.ai.error.${gK}`;var AF=Object.freeze({status:"aborted"});function P(Y,J,X){function Q(K,U){var Z;Object.defineProperty(K,"_zod",{value:K._zod??{},enumerable:!1}),(Z=K._zod).traits??(Z.traits=new Set),K._zod.traits.add(Y),J(K,U);for(let B in W.prototype)if(!(B in K))Object.defineProperty(K,B,{value:W.prototype[B].bind(K)});K._zod.constr=W,K._zod.def=U}let G=X?.Parent??Object;class $ extends G{}Object.defineProperty($,"name",{value:Y});function W(K){var U;let Z=X?.Parent?new $:this;Q(Z,K),(U=Z._zod).deferred??(U.deferred=[]);for(let B of Z._zod.deferred)B();return Z}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 TF=Symbol("zod_brand");class C1 extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class V9 extends Error{constructor(Y){super(`Encountered unidirectional transform during encode: ${Y}`);this.name="ZodEncodeError"}}var Z8={};function N1(Y){if(Y)Object.assign(Z8,Y);return Z8}var Q0={};nY(Q0,{unwrapMessage:()=>B9,uint8ArrayToHex:()=>HU,uint8ArrayToBase64url:()=>KU,uint8ArrayToBase64:()=>U2,stringifyPrimitive:()=>$2,shallowClone:()=>Q2,safeExtend:()=>XU,required:()=>$U,randomString:()=>rK,propertyKeyTypes:()=>sY,promiseAllObject:()=>oK,primitiveTypes:()=>G2,prefixIssues:()=>S1,pick:()=>eK,partial:()=>GU,optionalKeys:()=>aY,omit:()=>YU,objectClone:()=>dK,numKeys:()=>sK,nullish:()=>N9,normalizeParams:()=>n,mergeDefs:()=>m1,merge:()=>QU,jsonStringifyReplacer:()=>b6,joinValues:()=>lK,issue:()=>x6,isPlainObject:()=>c1,isObject:()=>$6,hexToUint8Array:()=>UU,getSizableOrigin:()=>z2,getParsedType:()=>aK,getLengthableOrigin:()=>F9,getEnumValues:()=>L9,getElementAtPath:()=>nK,floatSafeRemainder:()=>oY,finalizeIssue:()=>X1,extend:()=>JU,escapeRegex:()=>w1,esc:()=>V8,defineLazy:()=>$0,createTransparentProxy:()=>tK,cloneDef:()=>iK,clone:()=>J1,cleanRegex:()=>j9,cleanEnum:()=>WU,captureStackTrace:()=>B8,cached:()=>k6,base64urlToUint8Array:()=>zU,base64ToUint8Array:()=>K2,assignProp:()=>f1,assertNotEqual:()=>mK,assertNever:()=>uK,assertIs:()=>cK,assertEqual:()=>fK,assert:()=>pK,allowsEval:()=>rY,aborted:()=>u1,NUMBER_FORMAT_RANGES:()=>tY,Class:()=>H2,BIGINT_FORMAT_RANGES:()=>W2});function fK(Y){return Y}function mK(Y){return Y}function cK(Y){}function uK(Y){throw Error()}function pK(Y){}function L9(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 lK(Y,J="|"){return Y.map((X)=>$2(X)).join(J)}function b6(Y,J){if(typeof J==="bigint")return J.toString();return J}function k6(Y){return{get value(){{let X=Y();return Object.defineProperty(this,"value",{value:X}),X}throw Error("cached value already set")}}}function N9(Y){return Y===null||Y===void 0}function j9(Y){let J=Y.startsWith("^")?1:0,X=Y.endsWith("$")?Y.length-1:Y.length;return Y.slice(J,X)}function oY(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 U=Q.match(/\d?e-(\d?)/);if(U?.[1])G=Number.parseInt(U[1])}let $=X>G?X:G,W=Number.parseInt(Y.toFixed($).replace(".","")),K=Number.parseInt(J.toFixed($).replace(".",""));return W%K/10**$}var X2=Symbol("evaluating");function $0(Y,J,X){let Q=void 0;Object.defineProperty(Y,J,{get(){if(Q===X2)return;if(Q===void 0)Q=X2,Q=X();return Q},set(G){Object.defineProperty(Y,J,{value:G})},configurable:!0})}function dK(Y){return Object.create(Object.getPrototypeOf(Y),Object.getOwnPropertyDescriptors(Y))}function f1(Y,J,X){Object.defineProperty(Y,J,{value:X,writable:!0,enumerable:!0,configurable:!0})}function m1(...Y){let J={};for(let X of Y){let Q=Object.getOwnPropertyDescriptors(X);Object.assign(J,Q)}return Object.defineProperties({},J)}function iK(Y){return m1(Y._zod.def)}function nK(Y,J){if(!J)return Y;return J.reduce((X,Q)=>X?.[Q],Y)}function oK(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 rK(Y=10){let X="";for(let Q=0;Q<Y;Q++)X+="abcdefghijklmnopqrstuvwxyz"[Math.floor(Math.random()*26)];return X}function V8(Y){return JSON.stringify(Y)}var B8="captureStackTrace"in Error?Error.captureStackTrace:(...Y)=>{};function $6(Y){return typeof Y==="object"&&Y!==null&&!Array.isArray(Y)}var rY=k6(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(Y){return!1}});function c1(Y){if($6(Y)===!1)return!1;let J=Y.constructor;if(J===void 0)return!0;let X=J.prototype;if($6(X)===!1)return!1;if(Object.prototype.hasOwnProperty.call(X,"isPrototypeOf")===!1)return!1;return!0}function Q2(Y){if(c1(Y))return{...Y};if(Array.isArray(Y))return[...Y];return Y}function sK(Y){let J=0;for(let X in Y)if(Object.prototype.hasOwnProperty.call(Y,X))J++;return J}var aK=(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}`)}},sY=new Set(["string","number","symbol"]),G2=new Set(["string","number","bigint","boolean","symbol","undefined"]);function w1(Y){return Y.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function J1(Y,J,X){let Q=new Y._zod.constr(J??Y._zod.def);if(!J||X?.parent)Q._zod.parent=Y;return Q}function n(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 tK(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 $2(Y){if(typeof Y==="bigint")return Y.toString()+"n";if(typeof Y==="string")return`"${Y}"`;return`${Y}`}function aY(Y){return Object.keys(Y).filter((J)=>{return Y[J]._zod.optin==="optional"&&Y[J]._zod.optout==="optional"})}var tY={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]},W2={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]};function eK(Y,J){let X=Y._zod.def,Q=m1(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 f1(this,"shape",G),G},checks:[]});return J1(Y,Q)}function YU(Y,J){let X=Y._zod.def,Q=m1(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 f1(this,"shape",G),G},checks:[]});return J1(Y,Q)}function JU(Y,J){if(!c1(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=m1(Y._zod.def,{get shape(){let $={...Y._zod.def.shape,...J};return f1(this,"shape",$),$},checks:[]});return J1(Y,G)}function XU(Y,J){if(!c1(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 f1(this,"shape",Q),Q},checks:Y._zod.def.checks};return J1(Y,X)}function QU(Y,J){let X=m1(Y._zod.def,{get shape(){let Q={...Y._zod.def.shape,...J._zod.def.shape};return f1(this,"shape",Q),Q},get catchall(){return J._zod.def.catchall},checks:[]});return J1(Y,X)}function GU(Y,J,X){let Q=m1(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 f1(this,"shape",$),$},checks:[]});return J1(J,Q)}function $U(Y,J,X){let Q=m1(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 f1(this,"shape",$),$},checks:[]});return J1(J,Q)}function u1(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 S1(Y,J){return J.map((X)=>{var Q;return(Q=X).path??(Q.path=[]),X.path.unshift(Y),X})}function B9(Y){return typeof Y==="string"?Y:Y?.message}function X1(Y,J,X){let Q={...Y,path:Y.path??[]};if(!Y.message){let G=B9(Y.inst?._zod.def?.error?.(Y))??B9(J?.error?.(Y))??B9(X.customError?.(Y))??B9(X.localeError?.(Y))??"Invalid input";Q.message=G}if(delete Q.inst,delete Q.continue,!J?.reportInput)delete Q.input;return Q}function z2(Y){if(Y instanceof Set)return"set";if(Y instanceof Map)return"map";if(Y instanceof File)return"file";return"unknown"}function F9(Y){if(Array.isArray(Y))return"array";if(typeof Y==="string")return"string";return"unknown"}function x6(...Y){let[J,X,Q]=Y;if(typeof J==="string")return{message:J,code:"custom",input:X,inst:Q};return{...J}}function WU(Y){return Object.entries(Y).filter(([J,X])=>{return Number.isNaN(Number.parseInt(J,10))}).map((J)=>J[1])}function K2(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 U2(Y){let J="";for(let X=0;X<Y.length;X++)J+=String.fromCharCode(Y[X]);return btoa(J)}function zU(Y){let J=Y.replace(/-/g,"+").replace(/_/g,"/"),X="=".repeat((4-J.length%4)%4);return K2(J+X)}function KU(Y){return U2(Y).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function UU(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 HU(Y){return Array.from(Y).map((J)=>J.toString(16).padStart(2,"0")).join("")}class H2{constructor(...Y){}}var Z2=(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,b6,2),Object.defineProperty(Y,"toString",{value:()=>Y.message,enumerable:!1})},L8=P("$ZodError",Z2),eY=P("$ZodError",Z2,{Parent:Error});function V2(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 B2(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,U=0;while(U<W.path.length){let Z=W.path[U];if(U!==W.path.length-1)K[Z]=K[Z]||{_errors:[]};else K[Z]=K[Z]||{_errors:[]},K[Z]._errors.push(X(W));K=K[Z],U++}}};return G(Y),Q}var N8=(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 C1;if(W.issues.length){let K=new(G?.Err??Y)(W.issues.map((U)=>X1(U,$,N1())));throw B8(K,G?.callee),K}return W.value};var j8=(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((U)=>X1(U,$,N1())));throw B8(K,G?.callee),K}return W.value};var O9=(Y)=>(J,X,Q)=>{let G=Q?{...Q,async:!1}:{async:!1},$=J._zod.run({value:X,issues:[]},G);if($ instanceof Promise)throw new C1;return $.issues.length?{success:!1,error:new(Y??L8)($.issues.map((W)=>X1(W,G,N1())))}:{success:!0,data:$.value}},L2=O9(eY),D9=(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)=>X1(W,G,N1())))}:{success:!0,data:$.value}},N2=D9(eY),j2=(Y)=>(J,X,Q)=>{let G=Q?Object.assign(Q,{direction:"backward"}):{direction:"backward"};return N8(Y)(J,X,G)};var F2=(Y)=>(J,X,Q)=>{return N8(Y)(J,X,Q)};var O2=(Y)=>async(J,X,Q)=>{let G=Q?Object.assign(Q,{direction:"backward"}):{direction:"backward"};return j8(Y)(J,X,G)};var D2=(Y)=>async(J,X,Q)=>{return j8(Y)(J,X,Q)};var P2=(Y)=>(J,X,Q)=>{let G=Q?Object.assign(Q,{direction:"backward"}):{direction:"backward"};return O9(Y)(J,X,G)};var _2=(Y)=>(J,X,Q)=>{return O9(Y)(J,X,Q)};var q2=(Y)=>async(J,X,Q)=>{let G=Q?Object.assign(Q,{direction:"backward"}):{direction:"backward"};return D9(Y)(J,X,G)};var E2=(Y)=>async(J,X,Q)=>{return D9(Y)(J,X,Q)};var M2=/^[cC][^\s-]{8,}$/,A2=/^[0-9a-z]+$/,T2=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,R2=/^[0-9a-vA-V]{20}$/,C2=/^[A-Za-z0-9]{27}$/,w2=/^[a-zA-Z0-9_-]{21}$/,S2=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/;var I2=/^([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})$/,Y4=(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 b2=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/;function k2(){return new RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")}var x2=/^(?:(?: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])$/,v2=/^(([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}|:))$/,h2=/^((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])$/,y2=/^(([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])$/,g2=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,J4=/^[A-Za-z0-9_-]*$/,f2=/^(?=.{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 m2=/^\+(?:[0-9]){6,14}[0-9]$/,c2="(?:(?:\\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])))",u2=new RegExp(`^${c2}$`);function p2(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 l2(Y){return new RegExp(`^${p2(Y)}$`)}function d2(Y){let J=p2({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(`^${c2}T(?:${Q})$`)}var i2=(Y)=>{let J=Y?`[\\s\\S]{${Y?.minimum??0},${Y?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${J}$`)};var n2=/^-?\d+$/,o2=/^-?\d+(?:\.\d+)?/,r2=/^(?:true|false)$/i,s2=/^null$/i;var a2=/^[^A-Z]*$/,t2=/^[^a-z]*$/;var k0=P("$ZodCheck",(Y,J)=>{var X;Y._zod??(Y._zod={}),Y._zod.def=J,(X=Y._zod).onattach??(X.onattach=[])}),e2={number:"number",bigint:"bigint",object:"date"},X4=P("$ZodCheckLessThan",(Y,J)=>{k0.init(Y,J);let X=e2[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})}}),Q4=P("$ZodCheckGreaterThan",(Y,J)=>{k0.init(Y,J);let X=e2[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})}}),Y7=P("$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):oY(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})}}),J7=P("$ZodCheckNumberFormat",(Y,J)=>{k0.init(Y,J),J.format=J.format||"float64";let X=J.format?.includes("int"),Q=X?"int":"number",[G,$]=tY[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=n2}),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 X7=P("$ZodCheckMaxLength",(Y,J)=>{var X;k0.init(Y,J),(X=Y._zod.def).when??(X.when=(Q)=>{let G=Q.value;return!N9(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=F9(G);Q.issues.push({origin:W,code:"too_big",maximum:J.maximum,inclusive:!0,input:G,inst:Y,continue:!J.abort})}}),Q7=P("$ZodCheckMinLength",(Y,J)=>{var X;k0.init(Y,J),(X=Y._zod.def).when??(X.when=(Q)=>{let G=Q.value;return!N9(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=F9(G);Q.issues.push({origin:W,code:"too_small",minimum:J.minimum,inclusive:!0,input:G,inst:Y,continue:!J.abort})}}),G7=P("$ZodCheckLengthEquals",(Y,J)=>{var X;k0.init(Y,J),(X=Y._zod.def).when??(X.when=(Q)=>{let G=Q.value;return!N9(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=F9(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})}}),P9=P("$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=()=>{})}),$7=P("$ZodCheckRegex",(Y,J)=>{P9.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})}}),W7=P("$ZodCheckLowerCase",(Y,J)=>{J.pattern??(J.pattern=a2),P9.init(Y,J)}),z7=P("$ZodCheckUpperCase",(Y,J)=>{J.pattern??(J.pattern=t2),P9.init(Y,J)}),K7=P("$ZodCheckIncludes",(Y,J)=>{k0.init(Y,J);let X=w1(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})}}),U7=P("$ZodCheckStartsWith",(Y,J)=>{k0.init(Y,J);let X=new RegExp(`^${w1(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})}}),H7=P("$ZodCheckEndsWith",(Y,J)=>{k0.init(Y,J);let X=new RegExp(`.*${w1(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 Z7=P("$ZodCheckOverwrite",(Y,J)=>{k0.init(Y,J),Y._zod.check=(X)=>{X.value=J.tx(X.value)}});class G4{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 B7={major:4,minor:1,patch:8};var j0=P("$ZodType",(Y,J)=>{var X;Y??(Y={}),Y._zod.def=J,Y._zod.bag=Y._zod.bag||{},Y._zod.version=B7;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,U)=>{let Z=u1(W),B;for(let D of K){if(D._zod.def.when){if(!D._zod.def.when(W))continue}else if(Z)continue;let N=W.issues.length,V=D._zod.check(W);if(V instanceof Promise&&U?.async===!1)throw new C1;if(B||V instanceof Promise)B=(B??Promise.resolve()).then(async()=>{if(await V,W.issues.length===N)return;if(!Z)Z=u1(W,N)});else{if(W.issues.length===N)continue;if(!Z)Z=u1(W,N)}}if(B)return B.then(()=>{return W});return W},$=(W,K,U)=>{if(u1(W))return W.aborted=!0,W;let Z=G(K,Q,U);if(Z instanceof Promise){if(U.async===!1)throw new C1;return Z.then((B)=>Y._zod.parse(B,U))}return Y._zod.parse(Z,U)};Y._zod.run=(W,K)=>{if(K.skipChecks)return Y._zod.parse(W,K);if(K.direction==="backward"){let Z=Y._zod.parse({value:W.value,issues:[]},{...K,skipChecks:!0});if(Z instanceof Promise)return Z.then((B)=>{return $(B,W,K)});return $(Z,W,K)}let U=Y._zod.parse(W,K);if(U instanceof Promise){if(K.async===!1)throw new C1;return U.then((Z)=>G(Z,Q,K))}return G(U,Q,K)}}Y["~standard"]={validate:(G)=>{try{let $=L2(Y,G);return $.success?{value:$.data}:{issues:$.error?.issues}}catch($){return N2(Y,G).then((W)=>W.success?{value:W.data}:{issues:W.error?.issues})}},vendor:"zod",version:1}}),P8=P("$ZodString",(Y,J)=>{j0.init(Y,J),Y._zod.pattern=[...Y?._zod.bag?.patterns??[]].pop()??i2(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}}),F0=P("$ZodStringFormat",(Y,J)=>{P9.init(Y,J),P8.init(Y,J)}),q7=P("$ZodGUID",(Y,J)=>{J.pattern??(J.pattern=I2),F0.init(Y,J)}),E7=P("$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=Y4(Q))}else J.pattern??(J.pattern=Y4());F0.init(Y,J)}),M7=P("$ZodEmail",(Y,J)=>{J.pattern??(J.pattern=b2),F0.init(Y,J)}),A7=P("$ZodURL",(Y,J)=>{F0.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:f2.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})}}}),T7=P("$ZodEmoji",(Y,J)=>{J.pattern??(J.pattern=k2()),F0.init(Y,J)}),R7=P("$ZodNanoID",(Y,J)=>{J.pattern??(J.pattern=w2),F0.init(Y,J)}),C7=P("$ZodCUID",(Y,J)=>{J.pattern??(J.pattern=M2),F0.init(Y,J)}),w7=P("$ZodCUID2",(Y,J)=>{J.pattern??(J.pattern=A2),F0.init(Y,J)}),S7=P("$ZodULID",(Y,J)=>{J.pattern??(J.pattern=T2),F0.init(Y,J)}),I7=P("$ZodXID",(Y,J)=>{J.pattern??(J.pattern=R2),F0.init(Y,J)}),b7=P("$ZodKSUID",(Y,J)=>{J.pattern??(J.pattern=C2),F0.init(Y,J)}),k7=P("$ZodISODateTime",(Y,J)=>{J.pattern??(J.pattern=d2(J)),F0.init(Y,J)}),x7=P("$ZodISODate",(Y,J)=>{J.pattern??(J.pattern=u2),F0.init(Y,J)}),v7=P("$ZodISOTime",(Y,J)=>{J.pattern??(J.pattern=l2(J)),F0.init(Y,J)}),h7=P("$ZodISODuration",(Y,J)=>{J.pattern??(J.pattern=S2),F0.init(Y,J)}),y7=P("$ZodIPv4",(Y,J)=>{J.pattern??(J.pattern=x2),F0.init(Y,J),Y._zod.onattach.push((X)=>{let Q=X._zod.bag;Q.format="ipv4"})}),g7=P("$ZodIPv6",(Y,J)=>{J.pattern??(J.pattern=v2),F0.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})}}}),f7=P("$ZodCIDRv4",(Y,J)=>{J.pattern??(J.pattern=h2),F0.init(Y,J)}),m7=P("$ZodCIDRv6",(Y,J)=>{J.pattern??(J.pattern=y2),F0.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 c7(Y){if(Y==="")return!0;if(Y.length%4!==0)return!1;try{return atob(Y),!0}catch{return!1}}var u7=P("$ZodBase64",(Y,J)=>{J.pattern??(J.pattern=g2),F0.init(Y,J),Y._zod.onattach.push((X)=>{X._zod.bag.contentEncoding="base64"}),Y._zod.check=(X)=>{if(c7(X.value))return;X.issues.push({code:"invalid_format",format:"base64",input:X.value,inst:Y,continue:!J.abort})}});function VU(Y){if(!J4.test(Y))return!1;let J=Y.replace(/[-_]/g,(Q)=>Q==="-"?"+":"/"),X=J.padEnd(Math.ceil(J.length/4)*4,"=");return c7(X)}var p7=P("$ZodBase64URL",(Y,J)=>{J.pattern??(J.pattern=J4),F0.init(Y,J),Y._zod.onattach.push((X)=>{X._zod.bag.contentEncoding="base64url"}),Y._zod.check=(X)=>{if(VU(X.value))return;X.issues.push({code:"invalid_format",format:"base64url",input:X.value,inst:Y,continue:!J.abort})}}),l7=P("$ZodE164",(Y,J)=>{J.pattern??(J.pattern=m2),F0.init(Y,J)});function BU(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 d7=P("$ZodJWT",(Y,J)=>{F0.init(Y,J),Y._zod.check=(X)=>{if(BU(X.value,J.alg))return;X.issues.push({code:"invalid_format",format:"jwt",input:X.value,inst:Y,continue:!J.abort})}});var W4=P("$ZodNumber",(Y,J)=>{j0.init(Y,J),Y._zod.pattern=Y._zod.bag.pattern??o2,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}}),i7=P("$ZodNumber",(Y,J)=>{J7.init(Y,J),W4.init(Y,J)}),n7=P("$ZodBoolean",(Y,J)=>{j0.init(Y,J),Y._zod.pattern=r2,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 o7=P("$ZodNull",(Y,J)=>{j0.init(Y,J),Y._zod.pattern=s2,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 r7=P("$ZodUnknown",(Y,J)=>{j0.init(Y,J),Y._zod.parse=(X)=>X}),s7=P("$ZodNever",(Y,J)=>{j0.init(Y,J),Y._zod.parse=(X,Q)=>{return X.issues.push({expected:"never",code:"invalid_type",input:X.value,inst:Y}),X}});function L7(Y,J,X){if(Y.issues.length)J.issues.push(...S1(X,Y.issues));J.value[X]=Y.value}var a7=P("$ZodArray",(Y,J)=>{j0.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],U=J.element._zod.run({value:K,issues:[]},Q);if(U instanceof Promise)$.push(U.then((Z)=>L7(Z,X,W)));else L7(U,X,W)}if($.length)return Promise.all($).then(()=>X);return X}});function D8(Y,J,X,Q){if(Y.issues.length)J.issues.push(...S1(X,Y.issues));if(Y.value===void 0){if(X in Q)J.value[X]=void 0}else J.value[X]=Y.value}function t7(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=aY(Y.shape);return{...Y,keys:J,keySet:new Set(J),numKeys:J.length,optionalKeys:new Set(X)}}function e7(Y,J,X,Q,G,$){let W=[],K=G.keySet,U=G.catchall._zod,Z=U.def.type;for(let B of Object.keys(J)){if(K.has(B))continue;if(Z==="never"){W.push(B);continue}let D=U.run({value:J[B],issues:[]},Q);if(D instanceof Promise)Y.push(D.then((N)=>D8(N,X,B,J)));else D8(D,X,B,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 LU=P("$ZodObject",(Y,J)=>{j0.init(Y,J);let X=k6(()=>t7(J));$0(Y._zod,"propValues",()=>{let W=J.shape,K={};for(let U in W){let Z=W[U]._zod;if(Z.values){K[U]??(K[U]=new Set);for(let B of Z.values)K[U].add(B)}}return K});let Q=$6,G=J.catchall,$;Y._zod.parse=(W,K)=>{$??($=X.value);let U=W.value;if(!Q(U))return W.issues.push({expected:"object",code:"invalid_type",input:U,inst:Y}),W;W.value={};let Z=[],B=$.shape;for(let D of $.keys){let V=B[D]._zod.run({value:U[D],issues:[]},K);if(V instanceof Promise)Z.push(V.then((O)=>D8(O,W,D,U)));else D8(V,W,D,U)}if(!G)return Z.length?Promise.all(Z).then(()=>W):W;return e7(Z,U,W,K,X.value,Y)}}),Y5=P("$ZodObjectJIT",(Y,J)=>{LU.init(Y,J);let X=Y._zod.parse,Q=k6(()=>t7(J)),G=(N)=>{let V=new G4(["shape","payload","ctx"]),O=Q.value,E=(x)=>{let j=V8(x);return`shape[${j}]._zod.run({ value: input[${j}], issues: [] }, ctx)`};V.write("const input = payload.value;");let _=Object.create(null),T=0;for(let x of O.keys)_[x]=`key_${T++}`;V.write("const newResult = {};");for(let x of O.keys){let j=_[x],S=V8(x);V.write(`const ${j} = ${E(x)};`),V.write(`
14
- if (${j}.issues.length) {
15
- payload.issues = payload.issues.concat(${j}.issues.map(iss => ({
16
- ...iss,
17
- path: iss.path ? [${S}, ...iss.path] : [${S}]
18
- })));
19
- }
20
-
21
-
22
- if (${j}.value === undefined) {
23
- if (${S} in input) {
24
- newResult[${S}] = undefined;
25
- }
26
- } else {
27
- newResult[${S}] = ${j}.value;
28
- }
29
-
30
- `)}V.write("payload.value = newResult;"),V.write("return payload;");let w=V.compile();return(x,j)=>w(N,x,j)},$,W=$6,K=!Z8.jitless,Z=K&&rY.value,B=J.catchall,D;Y._zod.parse=(N,V)=>{D??(D=Q.value);let O=N.value;if(!W(O))return N.issues.push({expected:"object",code:"invalid_type",input:O,inst:Y}),N;if(K&&Z&&V?.async===!1&&V.jitless!==!0){if(!$)$=G(J.shape);if(N=$(N,V),!B)return N;return e7([],O,N,V,D,Y)}return X(N,V)}});function N7(Y,J,X,Q){for(let $ of Y)if($.issues.length===0)return J.value=$.value,J;let G=Y.filter(($)=>!u1($));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)=>X1(W,Q,N1())))}),J}var z4=P("$ZodUnion",(Y,J)=>{j0.init(Y,J),$0(Y._zod,"optin",()=>J.options.some((G)=>G._zod.optin==="optional")?"optional":void 0),$0(Y._zod,"optout",()=>J.options.some((G)=>G._zod.optout==="optional")?"optional":void 0),$0(Y._zod,"values",()=>{if(J.options.every((G)=>G._zod.values))return new Set(J.options.flatMap((G)=>Array.from(G._zod.values)));return}),$0(Y._zod,"pattern",()=>{if(J.options.every((G)=>G._zod.pattern)){let G=J.options.map(($)=>$._zod.pattern);return new RegExp(`^(${G.map(($)=>j9($.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 U of J.options){let Z=U._zod.run({value:G.value,issues:[]},$);if(Z instanceof Promise)K.push(Z),W=!0;else{if(Z.issues.length===0)return Z;K.push(Z)}}if(!W)return N7(K,G,Y,$);return Promise.all(K).then((U)=>{return N7(U,G,Y,$)})}}),J5=P("$ZodDiscriminatedUnion",(Y,J)=>{z4.init(Y,J);let X=Y._zod.parse;$0(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,U]of Object.entries(W)){if(!G[K])G[K]=new Set;for(let Z of U)G[K].add(Z)}}return G});let Q=k6(()=>{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 U of K){if($.has(U))throw Error(`Duplicate discriminator value "${String(U)}"`);$.set(U,W)}}return $});Y._zod.parse=(G,$)=>{let W=G.value;if(!$6(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}}),X5=P("$ZodIntersection",(Y,J)=>{j0.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(([U,Z])=>{return j7(X,U,Z)});return j7(X,$,W)}});function $4(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(c1(Y)&&c1(J)){let X=Object.keys(J),Q=Object.keys(Y).filter(($)=>X.indexOf($)!==-1),G={...Y,...J};for(let $ of Q){let W=$4(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=$4(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 j7(Y,J,X){if(J.issues.length)Y.issues.push(...J.issues);if(X.issues.length)Y.issues.push(...X.issues);if(u1(Y))return Y;let Q=$4(J.value,X.value);if(!Q.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(Q.mergeErrorPath)}`);return Y.value=Q.data,Y}var Q5=P("$ZodRecord",(Y,J)=>{j0.init(Y,J),Y._zod.parse=(X,Q)=>{let G=X.value;if(!c1(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 U of W)if(typeof U==="string"||typeof U==="number"||typeof U==="symbol"){let Z=J.valueType._zod.run({value:G[U],issues:[]},Q);if(Z instanceof Promise)$.push(Z.then((B)=>{if(B.issues.length)X.issues.push(...S1(U,B.issues));X.value[U]=B.value}));else{if(Z.issues.length)X.issues.push(...S1(U,Z.issues));X.value[U]=Z.value}}let K;for(let U in G)if(!W.has(U))K=K??[],K.push(U);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((Z)=>X1(Z,Q,N1())),input:W,path:[W],inst:Y}),X.value[K.value]=K.value;continue}let U=J.valueType._zod.run({value:G[W],issues:[]},Q);if(U instanceof Promise)$.push(U.then((Z)=>{if(Z.issues.length)X.issues.push(...S1(W,Z.issues));X.value[K.value]=Z.value}));else{if(U.issues.length)X.issues.push(...S1(W,U.issues));X.value[K.value]=U.value}}}if($.length)return Promise.all($).then(()=>X);return X}});var G5=P("$ZodEnum",(Y,J)=>{j0.init(Y,J);let X=L9(J.entries),Q=new Set(X);Y._zod.values=Q,Y._zod.pattern=new RegExp(`^(${X.filter((G)=>sY.has(typeof G)).map((G)=>typeof G==="string"?w1(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}}),$5=P("$ZodLiteral",(Y,J)=>{if(j0.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"?w1(X):X?w1(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 W5=P("$ZodTransform",(Y,J)=>{j0.init(Y,J),Y._zod.parse=(X,Q)=>{if(Q.direction==="backward")throw new V9(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 C1;return X.value=G,X}});function F7(Y,J){if(Y.issues.length&&J===void 0)return{issues:[],value:void 0};return Y}var z5=P("$ZodOptional",(Y,J)=>{j0.init(Y,J),Y._zod.optin="optional",Y._zod.optout="optional",$0(Y._zod,"values",()=>{return J.innerType._zod.values?new Set([...J.innerType._zod.values,void 0]):void 0}),$0(Y._zod,"pattern",()=>{let X=J.innerType._zod.pattern;return X?new RegExp(`^(${j9(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(($)=>F7($,X.value));return F7(G,X.value)}if(X.value===void 0)return X;return J.innerType._zod.run(X,Q)}}),K5=P("$ZodNullable",(Y,J)=>{j0.init(Y,J),$0(Y._zod,"optin",()=>J.innerType._zod.optin),$0(Y._zod,"optout",()=>J.innerType._zod.optout),$0(Y._zod,"pattern",()=>{let X=J.innerType._zod.pattern;return X?new RegExp(`^(${j9(X.source)}|null)$`):void 0}),$0(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)}}),U5=P("$ZodDefault",(Y,J)=>{j0.init(Y,J),Y._zod.optin="optional",$0(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(($)=>O7($,J));return O7(G,J)}});function O7(Y,J){if(Y.value===void 0)Y.value=J.defaultValue;return Y}var H5=P("$ZodPrefault",(Y,J)=>{j0.init(Y,J),Y._zod.optin="optional",$0(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)}}),Z5=P("$ZodNonOptional",(Y,J)=>{j0.init(Y,J),$0(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(($)=>D7($,Y));return D7(G,Y)}});function D7(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 V5=P("$ZodCatch",(Y,J)=>{j0.init(Y,J),$0(Y._zod,"optin",()=>J.innerType._zod.optin),$0(Y._zod,"optout",()=>J.innerType._zod.optout),$0(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)=>X1(W,Q,N1()))},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(($)=>X1($,Q,N1()))},input:X.value}),X.issues=[];return X}});var B5=P("$ZodPipe",(Y,J)=>{j0.init(Y,J),$0(Y._zod,"values",()=>J.in._zod.values),$0(Y._zod,"optin",()=>J.in._zod.optin),$0(Y._zod,"optout",()=>J.out._zod.optout),$0(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)=>O8(W,J.in,Q));return O8($,J.in,Q)}let G=J.in._zod.run(X,Q);if(G instanceof Promise)return G.then(($)=>O8($,J.out,Q));return O8(G,J.out,Q)}});function O8(Y,J,X){if(Y.issues.length)return Y.aborted=!0,Y;return J._zod.run({value:Y.value,issues:Y.issues},X)}var L5=P("$ZodReadonly",(Y,J)=>{j0.init(Y,J),$0(Y._zod,"propValues",()=>J.innerType._zod.propValues),$0(Y._zod,"values",()=>J.innerType._zod.values),$0(Y._zod,"optin",()=>J.innerType._zod.optin),$0(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(P7);return P7(G)}});function P7(Y){return Y.value=Object.freeze(Y.value),Y}var N5=P("$ZodLazy",(Y,J)=>{j0.init(Y,J),$0(Y._zod,"innerType",()=>J.getter()),$0(Y._zod,"pattern",()=>Y._zod.innerType._zod.pattern),$0(Y._zod,"propValues",()=>Y._zod.innerType._zod.propValues),$0(Y._zod,"optin",()=>Y._zod.innerType._zod.optin??void 0),$0(Y._zod,"optout",()=>Y._zod.innerType._zod.optout??void 0),Y._zod.parse=(X,Q)=>{return Y._zod.innerType._zod.run(X,Q)}}),j5=P("$ZodCustom",(Y,J)=>{k0.init(Y,J),j0.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(($)=>_7($,X,Q,Y));_7(G,X,Q,Y);return}});function _7(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(x6(G))}}var cF=Symbol("ZodOutput"),uF=Symbol("ZodInput");class _8{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 NU(){return new _8}var W6=NU();function F5(Y,J){return new Y({type:"string",...n(J)})}function O5(Y,J){return new Y({type:"string",format:"email",check:"string_format",abort:!1,...n(J)})}function K4(Y,J){return new Y({type:"string",format:"guid",check:"string_format",abort:!1,...n(J)})}function D5(Y,J){return new Y({type:"string",format:"uuid",check:"string_format",abort:!1,...n(J)})}function P5(Y,J){return new Y({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...n(J)})}function _5(Y,J){return new Y({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...n(J)})}function q5(Y,J){return new Y({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...n(J)})}function E5(Y,J){return new Y({type:"string",format:"url",check:"string_format",abort:!1,...n(J)})}function M5(Y,J){return new Y({type:"string",format:"emoji",check:"string_format",abort:!1,...n(J)})}function A5(Y,J){return new Y({type:"string",format:"nanoid",check:"string_format",abort:!1,...n(J)})}function T5(Y,J){return new Y({type:"string",format:"cuid",check:"string_format",abort:!1,...n(J)})}function R5(Y,J){return new Y({type:"string",format:"cuid2",check:"string_format",abort:!1,...n(J)})}function C5(Y,J){return new Y({type:"string",format:"ulid",check:"string_format",abort:!1,...n(J)})}function w5(Y,J){return new Y({type:"string",format:"xid",check:"string_format",abort:!1,...n(J)})}function S5(Y,J){return new Y({type:"string",format:"ksuid",check:"string_format",abort:!1,...n(J)})}function I5(Y,J){return new Y({type:"string",format:"ipv4",check:"string_format",abort:!1,...n(J)})}function b5(Y,J){return new Y({type:"string",format:"ipv6",check:"string_format",abort:!1,...n(J)})}function k5(Y,J){return new Y({type:"string",format:"cidrv4",check:"string_format",abort:!1,...n(J)})}function x5(Y,J){return new Y({type:"string",format:"cidrv6",check:"string_format",abort:!1,...n(J)})}function v5(Y,J){return new Y({type:"string",format:"base64",check:"string_format",abort:!1,...n(J)})}function h5(Y,J){return new Y({type:"string",format:"base64url",check:"string_format",abort:!1,...n(J)})}function y5(Y,J){return new Y({type:"string",format:"e164",check:"string_format",abort:!1,...n(J)})}function g5(Y,J){return new Y({type:"string",format:"jwt",check:"string_format",abort:!1,...n(J)})}function f5(Y,J){return new Y({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...n(J)})}function m5(Y,J){return new Y({type:"string",format:"date",check:"string_format",...n(J)})}function c5(Y,J){return new Y({type:"string",format:"time",check:"string_format",precision:null,...n(J)})}function u5(Y,J){return new Y({type:"string",format:"duration",check:"string_format",...n(J)})}function p5(Y,J){return new Y({type:"number",checks:[],...n(J)})}function l5(Y,J){return new Y({type:"number",check:"number_format",abort:!1,format:"safeint",...n(J)})}function d5(Y,J){return new Y({type:"boolean",...n(J)})}function i5(Y,J){return new Y({type:"null",...n(J)})}function n5(Y){return new Y({type:"unknown"})}function o5(Y,J){return new Y({type:"never",...n(J)})}function q8(Y,J){return new X4({check:"less_than",...n(J),value:Y,inclusive:!1})}function _9(Y,J){return new X4({check:"less_than",...n(J),value:Y,inclusive:!0})}function E8(Y,J){return new Q4({check:"greater_than",...n(J),value:Y,inclusive:!1})}function q9(Y,J){return new Q4({check:"greater_than",...n(J),value:Y,inclusive:!0})}function M8(Y,J){return new Y7({check:"multiple_of",...n(J),value:Y})}function A8(Y,J){return new X7({check:"max_length",...n(J),maximum:Y})}function v6(Y,J){return new Q7({check:"min_length",...n(J),minimum:Y})}function T8(Y,J){return new G7({check:"length_equals",...n(J),length:Y})}function U4(Y,J){return new $7({check:"string_format",format:"regex",...n(J),pattern:Y})}function H4(Y){return new W7({check:"string_format",format:"lowercase",...n(Y)})}function Z4(Y){return new z7({check:"string_format",format:"uppercase",...n(Y)})}function V4(Y,J){return new K7({check:"string_format",format:"includes",...n(J),includes:Y})}function B4(Y,J){return new U7({check:"string_format",format:"starts_with",...n(J),prefix:Y})}function L4(Y,J){return new H7({check:"string_format",format:"ends_with",...n(J),suffix:Y})}function z6(Y){return new Z7({check:"overwrite",tx:Y})}function N4(Y){return z6((J)=>J.normalize(Y))}function j4(){return z6((Y)=>Y.trim())}function F4(){return z6((Y)=>Y.toLowerCase())}function O4(){return z6((Y)=>Y.toUpperCase())}function r5(Y,J,X){return new Y({type:"array",element:J,...n(X)})}function s5(Y,J,X){let Q=n(X);return Q.abort??(Q.abort=!0),new Y({type:"custom",check:"custom",fn:J,...Q})}function a5(Y,J,X){return new Y({type:"custom",check:"custom",fn:J,...n(X)})}function t5(Y){let J=jU((X)=>{return X.addIssue=(Q)=>{if(typeof Q==="string")X.issues.push(x6(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(x6(G))}},Y(X.value,X)});return J}function jU(Y,J){let X=new k0({check:"custom",...n(J)});return X._zod.check=Y,X}class D4{constructor(Y){this.counter=0,this.metadataRegistry=Y?.metadata??W6,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 B={...J,schemaPath:[...J.schemaPath,Y],path:J.path},D=Y._zod.parent;if(D)W.ref=D,this.process(D,B),this.seen.get(D).isParent=!0;else{let N=W.schema;switch(Q.type){case"string":{let V=N;V.type="string";let{minimum:O,maximum:E,format:_,patterns:T,contentEncoding:w}=Y._zod.bag;if(typeof O==="number")V.minLength=O;if(typeof E==="number")V.maxLength=E;if(_){if(V.format=G[_]??_,V.format==="")delete V.format}if(w)V.contentEncoding=w;if(T&&T.size>0){let x=[...T];if(x.length===1)V.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 V=N,{minimum:O,maximum:E,format:_,multipleOf:T,exclusiveMaximum:w,exclusiveMinimum:x}=Y._zod.bag;if(typeof _==="string"&&_.includes("int"))V.type="integer";else V.type="number";if(typeof x==="number")if(this.target==="draft-4"||this.target==="openapi-3.0")V.minimum=x,V.exclusiveMinimum=!0;else V.exclusiveMinimum=x;if(typeof O==="number"){if(V.minimum=O,typeof x==="number"&&this.target!=="draft-4")if(x>=O)delete V.minimum;else delete V.exclusiveMinimum}if(typeof w==="number")if(this.target==="draft-4"||this.target==="openapi-3.0")V.maximum=w,V.exclusiveMaximum=!0;else V.exclusiveMaximum=w;if(typeof E==="number"){if(V.maximum=E,typeof w==="number"&&this.target!=="draft-4")if(w<=E)delete V.maximum;else delete V.exclusiveMaximum}if(typeof T==="number")V.multipleOf=T;break}case"boolean":{let V=N;V.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")N.type="string",N.nullable=!0,N.enum=[null];else N.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":{N.not={};break}case"date":{if(this.unrepresentable==="throw")throw Error("Date cannot be represented in JSON Schema");break}case"array":{let V=N,{minimum:O,maximum:E}=Y._zod.bag;if(typeof O==="number")V.minItems=O;if(typeof E==="number")V.maxItems=E;V.type="array",V.items=this.process(Q.element,{...B,path:[...B.path,"items"]});break}case"object":{let V=N;V.type="object",V.properties={};let O=Q.shape;for(let T in O)V.properties[T]=this.process(O[T],{...B,path:[...B.path,"properties",T]});let E=new Set(Object.keys(O)),_=new Set([...E].filter((T)=>{let w=Q.shape[T]._zod;if(this.io==="input")return w.optin===void 0;else return w.optout===void 0}));if(_.size>0)V.required=Array.from(_);if(Q.catchall?._zod.def.type==="never")V.additionalProperties=!1;else if(!Q.catchall){if(this.io==="output")V.additionalProperties=!1}else if(Q.catchall)V.additionalProperties=this.process(Q.catchall,{...B,path:[...B.path,"additionalProperties"]});break}case"union":{let V=N,O=Q.options.map((E,_)=>this.process(E,{...B,path:[...B.path,"anyOf",_]}));V.anyOf=O;break}case"intersection":{let V=N,O=this.process(Q.left,{...B,path:[...B.path,"allOf",0]}),E=this.process(Q.right,{...B,path:[...B.path,"allOf",1]}),_=(w)=>("allOf"in w)&&Object.keys(w).length===1,T=[..._(O)?O.allOf:[O],..._(E)?E.allOf:[E]];V.allOf=T;break}case"tuple":{let V=N;V.type="array";let O=this.target==="draft-2020-12"?"prefixItems":"items",E=this.target==="draft-2020-12"?"items":this.target==="openapi-3.0"?"items":"additionalItems",_=Q.items.map((j,S)=>this.process(j,{...B,path:[...B.path,O,S]})),T=Q.rest?this.process(Q.rest,{...B,path:[...B.path,E,...this.target==="openapi-3.0"?[Q.items.length]:[]]}):null;if(this.target==="draft-2020-12"){if(V.prefixItems=_,T)V.items=T}else if(this.target==="openapi-3.0"){if(V.items={anyOf:_},T)V.items.anyOf.push(T);if(V.minItems=_.length,!T)V.maxItems=_.length}else if(V.items=_,T)V.additionalItems=T;let{minimum:w,maximum:x}=Y._zod.bag;if(typeof w==="number")V.minItems=w;if(typeof x==="number")V.maxItems=x;break}case"record":{let V=N;if(V.type="object",this.target==="draft-7"||this.target==="draft-2020-12")V.propertyNames=this.process(Q.keyType,{...B,path:[...B.path,"propertyNames"]});V.additionalProperties=this.process(Q.valueType,{...B,path:[...B.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 V=N,O=L9(Q.entries);if(O.every((E)=>typeof E==="number"))V.type="number";if(O.every((E)=>typeof E==="string"))V.type="string";V.enum=O;break}case"literal":{let V=N,O=[];for(let E of Q.values)if(E===void 0){if(this.unrepresentable==="throw")throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof E==="bigint")if(this.unrepresentable==="throw")throw Error("BigInt literals cannot be represented in JSON Schema");else O.push(Number(E));else O.push(E);if(O.length===0);else if(O.length===1){let E=O[0];if(V.type=E===null?"null":typeof E,this.target==="draft-4"||this.target==="openapi-3.0")V.enum=[E];else V.const=E}else{if(O.every((E)=>typeof E==="number"))V.type="number";if(O.every((E)=>typeof E==="string"))V.type="string";if(O.every((E)=>typeof E==="boolean"))V.type="string";if(O.every((E)=>E===null))V.type="null";V.enum=O}break}case"file":{let V=N,O={type:"string",format:"binary",contentEncoding:"binary"},{minimum:E,maximum:_,mime:T}=Y._zod.bag;if(E!==void 0)O.minLength=E;if(_!==void 0)O.maxLength=_;if(T)if(T.length===1)O.contentMediaType=T[0],Object.assign(V,O);else V.anyOf=T.map((w)=>{return{...O,contentMediaType:w}});else Object.assign(V,O);break}case"transform":{if(this.unrepresentable==="throw")throw Error("Transforms cannot be represented in JSON Schema");break}case"nullable":{let V=this.process(Q.innerType,B);if(this.target==="openapi-3.0")W.ref=Q.innerType,N.nullable=!0;else N.anyOf=[V,{type:"null"}];break}case"nonoptional":{this.process(Q.innerType,B),W.ref=Q.innerType;break}case"success":{let V=N;V.type="boolean";break}case"default":{this.process(Q.innerType,B),W.ref=Q.innerType,N.default=JSON.parse(JSON.stringify(Q.defaultValue));break}case"prefault":{if(this.process(Q.innerType,B),W.ref=Q.innerType,this.io==="input")N._prefault=JSON.parse(JSON.stringify(Q.defaultValue));break}case"catch":{this.process(Q.innerType,B),W.ref=Q.innerType;let V;try{V=Q.catchValue(void 0)}catch{throw Error("Dynamic catch values are not supported in JSON Schema")}N.default=V;break}case"nan":{if(this.unrepresentable==="throw")throw Error("NaN cannot be represented in JSON Schema");break}case"template_literal":{let V=N,O=Y._zod.pattern;if(!O)throw Error("Pattern not found in template literal");V.type="string",V.pattern=O.source;break}case"pipe":{let V=this.io==="input"?Q.in._zod.def.type==="transform"?Q.out:Q.in:Q.out;this.process(V,B),W.ref=V;break}case"readonly":{this.process(Q.innerType,B),W.ref=Q.innerType,N.readOnly=!0;break}case"promise":{this.process(Q.innerType,B),W.ref=Q.innerType;break}case"optional":{this.process(Q.innerType,B),W.ref=Q.innerType;break}case"lazy":{let V=Y._zod.innerType;this.process(V,B),W.ref=V;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 U=this.metadataRegistry.get(Y);if(U)Object.assign(W.schema,U);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=(Z)=>{let B=this.target==="draft-2020-12"?"$defs":"definitions";if(X.external){let O=X.external.registry.get(Z[0])?.id,E=X.external.uri??((T)=>T);if(O)return{ref:E(O)};let _=Z[1].defId??Z[1].schema.id??`schema${this.counter++}`;return Z[1].defId=_,{defId:_,ref:`${E("__shared")}#/${B}/${_}`}}if(Z[1]===Q)return{ref:"#"};let N=`${"#"}/${B}/`,V=Z[1].schema.id??`__schema${this.counter++}`;return{defId:V,ref:N+V}},$=(Z)=>{if(Z[1].schema.$ref)return;let B=Z[1],{ref:D,defId:N}=G(Z);if(B.def={...B.schema},N)B.defId=N;let V=B.schema;for(let O in V)delete V[O];V.$ref=D};if(X.cycles==="throw")for(let Z of this.seen.entries()){let B=Z[1];if(B.cycle)throw Error(`Cycle detected: #/${B.cycle?.join("/")}/<root>
31
-
32
- Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let Z of this.seen.entries()){let B=Z[1];if(Y===Z[0]){$(Z);continue}if(X.external){let N=X.external.registry.get(Z[0])?.id;if(Y!==Z[0]&&N){$(Z);continue}}if(this.metadataRegistry.get(Z[0])?.id){$(Z);continue}if(B.cycle){$(Z);continue}if(B.count>1){if(X.reused==="ref"){$(Z);continue}}}let W=(Z,B)=>{let D=this.seen.get(Z),N=D.def??D.schema,V={...N};if(D.ref===null)return;let O=D.ref;if(D.ref=null,O){W(O,B);let E=this.seen.get(O).schema;if(E.$ref&&(B.target==="draft-7"||B.target==="draft-4"||B.target==="openapi-3.0"))N.allOf=N.allOf??[],N.allOf.push(E);else Object.assign(N,E),Object.assign(N,V)}if(!D.isParent)this.override({zodSchema:Z,jsonSchema:N,path:D.path??[]})};for(let Z of[...this.seen.entries()].reverse())W(Z[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 Z=X.external.registry.get(Y)?.id;if(!Z)throw Error("Schema is missing an `id` property");K.$id=X.external.uri(Z)}Object.assign(K,Q.def);let U=X.external?.defs??{};for(let Z of this.seen.entries()){let B=Z[1];if(B.def&&B.defId)U[B.defId]=B.def}if(X.external);else if(Object.keys(U).length>0)if(this.target==="draft-2020-12")K.$defs=U;else K.definitions=U;try{return JSON.parse(JSON.stringify(K))}catch(Z){throw Error("Error converting schema to JSON.")}}}function e5(Y,J){if(Y instanceof _8){let Q=new D4(J),G={};for(let K of Y._idmap.entries()){let[U,Z]=K;Q.process(Z)}let $={},W={registry:Y,uri:J?.uri,defs:G};for(let K of Y._idmap.entries()){let[U,Z]=K;$[U]=Q.emit(Z,{...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 D4(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 qU=P("ZodISODateTime",(Y,J)=>{k7.init(Y,J),O0.init(Y,J)});function YQ(Y){return f5(qU,Y)}var EU=P("ZodISODate",(Y,J)=>{x7.init(Y,J),O0.init(Y,J)});function JQ(Y){return m5(EU,Y)}var MU=P("ZodISOTime",(Y,J)=>{v7.init(Y,J),O0.init(Y,J)});function XQ(Y){return c5(MU,Y)}var AU=P("ZodISODuration",(Y,J)=>{h7.init(Y,J),O0.init(Y,J)});function QQ(Y){return u5(AU,Y)}var GQ=(Y,J)=>{L8.init(Y,J),Y.name="ZodError",Object.defineProperties(Y,{format:{value:(X)=>B2(Y,X)},flatten:{value:(X)=>V2(Y,X)},addIssue:{value:(X)=>{Y.issues.push(X),Y.message=JSON.stringify(Y.issues,b6,2)}},addIssues:{value:(X)=>{Y.issues.push(...X),Y.message=JSON.stringify(Y.issues,b6,2)}},isEmpty:{get(){return Y.issues.length===0}}})},OO=P("ZodError",GQ),r0=P("ZodError",GQ,{Parent:Error});var $Q=N8(r0),WQ=j8(r0),zQ=O9(r0),C8=D9(r0),KQ=j2(r0),UQ=F2(r0),HQ=O2(r0),ZQ=D2(r0),VQ=P2(r0),BQ=_2(r0),LQ=q2(r0),NQ=E2(r0);var D0=P("ZodType",(Y,J)=>{return j0.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)=>J1(Y,X,Q),Y.brand=()=>Y,Y.register=(X,Q)=>{return X.add(Y,Q),Y},Y.parse=(X,Q)=>$Q(Y,X,Q,{callee:Y.parse}),Y.safeParse=(X,Q)=>zQ(Y,X,Q),Y.parseAsync=async(X,Q)=>WQ(Y,X,Q,{callee:Y.parseAsync}),Y.safeParseAsync=async(X,Q)=>C8(Y,X,Q),Y.spa=Y.safeParseAsync,Y.encode=(X,Q)=>KQ(Y,X,Q),Y.decode=(X,Q)=>UQ(Y,X,Q),Y.encodeAsync=async(X,Q)=>HQ(Y,X,Q),Y.decodeAsync=async(X,Q)=>ZQ(Y,X,Q),Y.safeEncode=(X,Q)=>VQ(Y,X,Q),Y.safeDecode=(X,Q)=>BQ(Y,X,Q),Y.safeEncodeAsync=async(X,Q)=>LQ(Y,X,Q),Y.safeDecodeAsync=async(X,Q)=>NQ(Y,X,Q),Y.refine=(X,Q)=>Y.check(OH(X,Q)),Y.superRefine=(X)=>Y.check(DH(X)),Y.overwrite=(X)=>Y.check(z6(X)),Y.optional=()=>OQ(Y),Y.nullable=()=>DQ(Y),Y.nullish=()=>OQ(DQ(Y)),Y.nonoptional=(X)=>ZH(Y,X),Y.array=()=>q4(Y),Y.or=(X)=>E4([Y,X]),Y.and=(X)=>JH(Y,X),Y.transform=(X)=>PQ(Y,$H(X)),Y.default=(X)=>KH(Y,X),Y.prefault=(X)=>HH(Y,X),Y.catch=(X)=>BH(Y,X),Y.pipe=(X)=>PQ(Y,X),Y.readonly=()=>jH(Y),Y.describe=(X)=>{let Q=Y.clone();return W6.add(Q,{description:X}),Q},Object.defineProperty(Y,"description",{get(){return W6.get(Y)?.description},configurable:!0}),Y.meta=(...X)=>{if(X.length===0)return W6.get(Y);let Q=Y.clone();return W6.add(Q,X[0]),Q},Y.isOptional=()=>Y.safeParse(void 0).success,Y.isNullable=()=>Y.safeParse(null).success,Y}),_Q=P("_ZodString",(Y,J)=>{P8.init(Y,J),D0.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(U4(...Q)),Y.includes=(...Q)=>Y.check(V4(...Q)),Y.startsWith=(...Q)=>Y.check(B4(...Q)),Y.endsWith=(...Q)=>Y.check(L4(...Q)),Y.min=(...Q)=>Y.check(v6(...Q)),Y.max=(...Q)=>Y.check(A8(...Q)),Y.length=(...Q)=>Y.check(T8(...Q)),Y.nonempty=(...Q)=>Y.check(v6(1,...Q)),Y.lowercase=(Q)=>Y.check(H4(Q)),Y.uppercase=(Q)=>Y.check(Z4(Q)),Y.trim=()=>Y.check(j4()),Y.normalize=(...Q)=>Y.check(N4(...Q)),Y.toLowerCase=()=>Y.check(F4()),Y.toUpperCase=()=>Y.check(O4())}),wU=P("ZodString",(Y,J)=>{P8.init(Y,J),_Q.init(Y,J),Y.email=(X)=>Y.check(O5(SU,X)),Y.url=(X)=>Y.check(E5(IU,X)),Y.jwt=(X)=>Y.check(g5(iU,X)),Y.emoji=(X)=>Y.check(M5(bU,X)),Y.guid=(X)=>Y.check(K4(jQ,X)),Y.uuid=(X)=>Y.check(D5(w8,X)),Y.uuidv4=(X)=>Y.check(P5(w8,X)),Y.uuidv6=(X)=>Y.check(_5(w8,X)),Y.uuidv7=(X)=>Y.check(q5(w8,X)),Y.nanoid=(X)=>Y.check(A5(kU,X)),Y.guid=(X)=>Y.check(K4(jQ,X)),Y.cuid=(X)=>Y.check(T5(xU,X)),Y.cuid2=(X)=>Y.check(R5(vU,X)),Y.ulid=(X)=>Y.check(C5(hU,X)),Y.base64=(X)=>Y.check(v5(pU,X)),Y.base64url=(X)=>Y.check(h5(lU,X)),Y.xid=(X)=>Y.check(w5(yU,X)),Y.ksuid=(X)=>Y.check(S5(gU,X)),Y.ipv4=(X)=>Y.check(I5(fU,X)),Y.ipv6=(X)=>Y.check(b5(mU,X)),Y.cidrv4=(X)=>Y.check(k5(cU,X)),Y.cidrv6=(X)=>Y.check(x5(uU,X)),Y.e164=(X)=>Y.check(y5(dU,X)),Y.datetime=(X)=>Y.check(YQ(X)),Y.date=(X)=>Y.check(JQ(X)),Y.time=(X)=>Y.check(XQ(X)),Y.duration=(X)=>Y.check(QQ(X))});function qQ(Y){return F5(wU,Y)}var O0=P("ZodStringFormat",(Y,J)=>{F0.init(Y,J),_Q.init(Y,J)}),SU=P("ZodEmail",(Y,J)=>{M7.init(Y,J),O0.init(Y,J)});var jQ=P("ZodGUID",(Y,J)=>{q7.init(Y,J),O0.init(Y,J)});var w8=P("ZodUUID",(Y,J)=>{E7.init(Y,J),O0.init(Y,J)});var IU=P("ZodURL",(Y,J)=>{A7.init(Y,J),O0.init(Y,J)});var bU=P("ZodEmoji",(Y,J)=>{T7.init(Y,J),O0.init(Y,J)});var kU=P("ZodNanoID",(Y,J)=>{R7.init(Y,J),O0.init(Y,J)});var xU=P("ZodCUID",(Y,J)=>{C7.init(Y,J),O0.init(Y,J)});var vU=P("ZodCUID2",(Y,J)=>{w7.init(Y,J),O0.init(Y,J)});var hU=P("ZodULID",(Y,J)=>{S7.init(Y,J),O0.init(Y,J)});var yU=P("ZodXID",(Y,J)=>{I7.init(Y,J),O0.init(Y,J)});var gU=P("ZodKSUID",(Y,J)=>{b7.init(Y,J),O0.init(Y,J)});var fU=P("ZodIPv4",(Y,J)=>{y7.init(Y,J),O0.init(Y,J)});var mU=P("ZodIPv6",(Y,J)=>{g7.init(Y,J),O0.init(Y,J)});var cU=P("ZodCIDRv4",(Y,J)=>{f7.init(Y,J),O0.init(Y,J)});var uU=P("ZodCIDRv6",(Y,J)=>{m7.init(Y,J),O0.init(Y,J)});var pU=P("ZodBase64",(Y,J)=>{u7.init(Y,J),O0.init(Y,J)});var lU=P("ZodBase64URL",(Y,J)=>{p7.init(Y,J),O0.init(Y,J)});var dU=P("ZodE164",(Y,J)=>{l7.init(Y,J),O0.init(Y,J)});var iU=P("ZodJWT",(Y,J)=>{d7.init(Y,J),O0.init(Y,J)});var EQ=P("ZodNumber",(Y,J)=>{W4.init(Y,J),D0.init(Y,J),Y.gt=(Q,G)=>Y.check(E8(Q,G)),Y.gte=(Q,G)=>Y.check(q9(Q,G)),Y.min=(Q,G)=>Y.check(q9(Q,G)),Y.lt=(Q,G)=>Y.check(q8(Q,G)),Y.lte=(Q,G)=>Y.check(_9(Q,G)),Y.max=(Q,G)=>Y.check(_9(Q,G)),Y.int=(Q)=>Y.check(FQ(Q)),Y.safe=(Q)=>Y.check(FQ(Q)),Y.positive=(Q)=>Y.check(E8(0,Q)),Y.nonnegative=(Q)=>Y.check(q9(0,Q)),Y.negative=(Q)=>Y.check(q8(0,Q)),Y.nonpositive=(Q)=>Y.check(_9(0,Q)),Y.multipleOf=(Q,G)=>Y.check(M8(Q,G)),Y.step=(Q,G)=>Y.check(M8(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 MQ(Y){return p5(EQ,Y)}var nU=P("ZodNumberFormat",(Y,J)=>{i7.init(Y,J),EQ.init(Y,J)});function FQ(Y){return l5(nU,Y)}var oU=P("ZodBoolean",(Y,J)=>{n7.init(Y,J),D0.init(Y,J)});function AQ(Y){return d5(oU,Y)}var rU=P("ZodNull",(Y,J)=>{o7.init(Y,J),D0.init(Y,J)});function TQ(Y){return i5(rU,Y)}var sU=P("ZodUnknown",(Y,J)=>{r7.init(Y,J),D0.init(Y,J)});function E9(){return n5(sU)}var aU=P("ZodNever",(Y,J)=>{s7.init(Y,J),D0.init(Y,J)});function _4(Y){return o5(aU,Y)}var tU=P("ZodArray",(Y,J)=>{a7.init(Y,J),D0.init(Y,J),Y.element=J.element,Y.min=(X,Q)=>Y.check(v6(X,Q)),Y.nonempty=(X)=>Y.check(v6(1,X)),Y.max=(X,Q)=>Y.check(A8(X,Q)),Y.length=(X,Q)=>Y.check(T8(X,Q)),Y.unwrap=()=>Y.element});function q4(Y,J){return r5(tU,Y,J)}var RQ=P("ZodObject",(Y,J)=>{Y5.init(Y,J),D0.init(Y,J),Q0.defineLazy(Y,"shape",()=>J.shape),Y.keyof=()=>M4(Object.keys(Y._zod.def.shape)),Y.catchall=(X)=>Y.clone({...Y._zod.def,catchall:X}),Y.passthrough=()=>Y.clone({...Y._zod.def,catchall:E9()}),Y.loose=()=>Y.clone({...Y._zod.def,catchall:E9()}),Y.strict=()=>Y.clone({...Y._zod.def,catchall:_4()}),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(xQ,Y,X[0]),Y.required=(...X)=>Q0.required(vQ,Y,X[0])});function CQ(Y,J){let X={type:"object",get shape(){return Q0.assignProp(this,"shape",Y?Q0.objectClone(Y):{}),this.shape},...Q0.normalizeParams(J)};return new RQ(X)}function wQ(Y,J){return new RQ({type:"object",get shape(){return Q0.assignProp(this,"shape",Q0.objectClone(Y)),this.shape},catchall:E9(),...Q0.normalizeParams(J)})}var SQ=P("ZodUnion",(Y,J)=>{z4.init(Y,J),D0.init(Y,J),Y.options=J.options});function E4(Y,J){return new SQ({type:"union",options:Y,...Q0.normalizeParams(J)})}var eU=P("ZodDiscriminatedUnion",(Y,J)=>{SQ.init(Y,J),J5.init(Y,J)});function IQ(Y,J,X){return new eU({type:"union",options:J,discriminator:Y,...Q0.normalizeParams(X)})}var YH=P("ZodIntersection",(Y,J)=>{X5.init(Y,J),D0.init(Y,J)});function JH(Y,J){return new YH({type:"intersection",left:Y,right:J})}var XH=P("ZodRecord",(Y,J)=>{Q5.init(Y,J),D0.init(Y,J),Y.keyType=J.keyType,Y.valueType=J.valueType});function bQ(Y,J,X){return new XH({type:"record",keyType:Y,valueType:J,...Q0.normalizeParams(X)})}var P4=P("ZodEnum",(Y,J)=>{G5.init(Y,J),D0.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 P4({...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 P4({...J,checks:[],...Q0.normalizeParams(G),entries:$})}});function M4(Y,J){let X=Array.isArray(Y)?Object.fromEntries(Y.map((Q)=>[Q,Q])):Y;return new P4({type:"enum",entries:X,...Q0.normalizeParams(J)})}var QH=P("ZodLiteral",(Y,J)=>{$5.init(Y,J),D0.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 kQ(Y,J){return new QH({type:"literal",values:Array.isArray(Y)?Y:[Y],...Q0.normalizeParams(J)})}var GH=P("ZodTransform",(Y,J)=>{W5.init(Y,J),D0.init(Y,J),Y._zod.parse=(X,Q)=>{if(Q.direction==="backward")throw new V9(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 $H(Y){return new GH({type:"transform",transform:Y})}var xQ=P("ZodOptional",(Y,J)=>{z5.init(Y,J),D0.init(Y,J),Y.unwrap=()=>Y._zod.def.innerType});function OQ(Y){return new xQ({type:"optional",innerType:Y})}var WH=P("ZodNullable",(Y,J)=>{K5.init(Y,J),D0.init(Y,J),Y.unwrap=()=>Y._zod.def.innerType});function DQ(Y){return new WH({type:"nullable",innerType:Y})}var zH=P("ZodDefault",(Y,J)=>{U5.init(Y,J),D0.init(Y,J),Y.unwrap=()=>Y._zod.def.innerType,Y.removeDefault=Y.unwrap});function KH(Y,J){return new zH({type:"default",innerType:Y,get defaultValue(){return typeof J==="function"?J():Q0.shallowClone(J)}})}var UH=P("ZodPrefault",(Y,J)=>{H5.init(Y,J),D0.init(Y,J),Y.unwrap=()=>Y._zod.def.innerType});function HH(Y,J){return new UH({type:"prefault",innerType:Y,get defaultValue(){return typeof J==="function"?J():Q0.shallowClone(J)}})}var vQ=P("ZodNonOptional",(Y,J)=>{Z5.init(Y,J),D0.init(Y,J),Y.unwrap=()=>Y._zod.def.innerType});function ZH(Y,J){return new vQ({type:"nonoptional",innerType:Y,...Q0.normalizeParams(J)})}var VH=P("ZodCatch",(Y,J)=>{V5.init(Y,J),D0.init(Y,J),Y.unwrap=()=>Y._zod.def.innerType,Y.removeCatch=Y.unwrap});function BH(Y,J){return new VH({type:"catch",innerType:Y,catchValue:typeof J==="function"?J:()=>J})}var LH=P("ZodPipe",(Y,J)=>{B5.init(Y,J),D0.init(Y,J),Y.in=J.in,Y.out=J.out});function PQ(Y,J){return new LH({type:"pipe",in:Y,out:J})}var NH=P("ZodReadonly",(Y,J)=>{L5.init(Y,J),D0.init(Y,J),Y.unwrap=()=>Y._zod.def.innerType});function jH(Y){return new NH({type:"readonly",innerType:Y})}var FH=P("ZodLazy",(Y,J)=>{N5.init(Y,J),D0.init(Y,J),Y.unwrap=()=>Y._zod.def.getter()});function hQ(Y){return new FH({type:"lazy",getter:Y})}var A4=P("ZodCustom",(Y,J)=>{j5.init(Y,J),D0.init(Y,J)});function yQ(Y,J){return s5(A4,Y??(()=>!0),J)}function OH(Y,J={}){return a5(A4,Y,J)}function DH(Y){return t5(Y)}function gQ(Y,J={error:`Input not instance of ${Y.name}`}){let X=new A4({type:"custom",check:"custom",fn:(Q)=>Q instanceof Y,abort:!0,...Q0.normalizeParams(J)});return X._zod.bag.Class=Y,X}function oQ(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 rQ(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 sQ(Y,...J){let X=new Headers(rQ(Y)),Q=X.get("user-agent")||"";return X.set("user-agent",[Q,...J].filter(Boolean).join(" ")),Object.fromEntries(X.entries())}var EH=[{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]}],UD=[...EH,{mediaType:"audio/mp4",bytesPrefix:[0,0,0,null,102,116,121,112]}];async function S8(Y){try{await Y.body?.cancel()}catch{}}var aQ="AI_DownloadError",tQ=`vercel.ai.error.${aQ}`,MH=Symbol.for(tQ),h0=class extends R1{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:aQ,message:G,cause:Q});this[MH]=!0,this.url=Y,this.statusCode=J,this.statusText=X}static isInstance(Y){return R1.hasMarker(Y,tQ)}};function AH(Y=globalThis){return Y.window!=null}function C4(Y,J){try{return new URL(Y).origin===new URL(J).origin}catch{return!1}}function TH(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(eQ(X.slice(1,-1)))throw new h0({url:Y,message:`URL with IPv6 address ${X} is not allowed`});return}if(S4(X)){if(I4(X))throw new h0({url:Y,message:`URL with IP address ${X} is not allowed`})}}function RH({address:Y,family:J,hostname:X}){if(J===4?!S4(Y)||I4(Y):J===6?eQ(Y):!0)throw new h0({url:X,message:`Hostname ${X} resolved to disallowed IP address ${Y}`})}function S4(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 I4(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 CH(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=[],U=W.split(":");for(let Z=0;Z<U.length;Z++){let B=U[Z];if(B.includes(".")){if(Z!==U.length-1||!S4(B))return null;let[D,N,V,O]=B.split(".").map(Number);K.push(D<<8|N,V<<8|O);continue}if(!/^[0-9a-f]{1,4}$/.test(B))return null;K.push(parseInt(B,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 eQ(Y){let J=CH(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 I4(`${J[6]>>8&255}.${J[6]&255}.${J[7]>>8&255}.${J[7]&255}`);return!1}function wH(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:U}of $)RH({address:K,family:U,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 SH;function IH(){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 bH(){if(!IH())return globalThis.fetch;return SH??=Promise.resolve().then(kH)}function kH(){let Y=fQ("node:module"),{lookup:J}=fQ("node:dns"),{Agent:X,fetch:Q}=Y.createRequire(YG())("undici"),G=new X({connect:{lookup:wH(J)}});return($,W)=>Q($,{...W,dispatcher:G})}function fQ(Y){let J=globalThis.process?.getBuiltinModule?.(Y);if(J==null)throw Error(`Node.js built-in module ${Y} is unavailable`);return J}function YG(){let Y=Error.prepareStackTrace;try{Error.prepareStackTrace=(G,$)=>$;let J=Error("Capture current module path");Error.captureStackTrace(J,YG);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 xH=["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 JG(Y){let J=new Headers(Y);for(let X of xH)J.delete(X);return J}var vH=10,hH=new Set([301,302,303,307,308]);async function yH(Y){return Y==null||Y===globalThis.fetch?await bH():Y}async function gH({url:Y,headers:J,abortSignal:X,maxRedirects:Q=vH,fetch:G,trustedOrigin:$}){let W=J===void 0?void 0:JG(J),K=(Z)=>{let B={signal:X,redirect:Z};if(W!==void 0)B.headers=new Headers(W);return B},U=Y;for(let Z=0;Z<=Q;Z++){let B=$!==void 0&&C4(U,$);if(!B)TH(U);let D=B&&G!=null?G:B?globalThis.fetch:await yH(G),N=await D(U,K("manual"));if(N.type==="opaqueredirect"){if(!AH())throw new h0({url:Y,message:`Redirect from ${U} could not be validated and was blocked`});return await D(U,K("follow"))}let V=N.headers?.get("location");if(hH.has(N.status)&&V){S8(N);let O=new URL(V,U).toString();if(W!==void 0&&!C4(O,U)){let E=W.get("user-agent");W=new Headers(E==null?void 0:{"user-agent":E})}U=O;continue}return N}throw new h0({url:Y,message:`Too many redirects (max ${Q})`})}var fH=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 XG({headers:Y,credentialedOrigin:J,untrustedFirstHopHeaders:X,...Q}){let G;if(Y!==void 0){G=JG(Y);let $=J??Q.trustedOrigin;if($===void 0||!C4(Q.url,$)){let W=new Set([...fH,...(X??[]).map((K)=>K.toLowerCase())]);G=new Headers([...G].filter(([K])=>W.has(K)))}}return gH({...Q,headers:G})}var b4=2147483648;async function QG({response:Y,url:J,maxBytes:X=b4}){let Q=Y.headers.get("content-length");if(Q!=null){let B=parseInt(Q,10);if(!isNaN(B)&&B>X)throw await S8(Y),new h0({url:J,message:`Download of ${J} exceeded maximum size of ${X} bytes (Content-Length: ${B}).`})}let G=Y.body;if(G==null)return new Uint8Array(0);let $=G.getReader(),W=[],K=0;try{while(!0){let{done:B,value:D}=await $.read();if(B)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)}}finally{try{await $.cancel()}catch{}finally{$.releaseLock()}}let U=new Uint8Array(K),Z=0;for(let B of W)U.set(B,Z),Z+=B.length;return U}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 dY({argument:"separator",message:`The separator "${Q}" must not be part of the alphabet "${X}".`});return()=>`${Y}${Q}${G()}`},GG=I0();function $G(Y){return globalThis.Buffer?.isBuffer(Y)??!1}function WG(Y){if(Y.type==="object"||Array.isArray(Y.type)&&Y.type.includes("object")){let{additionalProperties:X}=Y;Y.additionalProperties=X!=null&&typeof X!=="boolean"?p1(X):!1;let{properties:Q}=Y;if(Q!=null)for(let G of Object.keys(Q))Q[G]=p1(Q[G])}if(Y.items!=null)Y.items=Array.isArray(Y.items)?Y.items.map(p1):p1(Y.items);if(Y.anyOf!=null)Y.anyOf=Y.anyOf.map(p1);if(Y.allOf!=null)Y.allOf=Y.allOf.map(p1);if(Y.oneOf!=null)Y.oneOf=Y.oneOf.map(p1);let{definitions:J}=Y;if(J!=null)for(let X of Object.keys(J))J[X]=p1(J[X]);return Y}function p1(Y){if(typeof Y==="boolean")return Y;return WG(Y)}var mH=Symbol("Let zodToJsonSchema decide on which parser to use"),mQ={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"},cH=(Y)=>typeof Y==="string"?{...mQ,name:Y}:{...mQ,...Y};function s0(){return{}}function uH(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 pH(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 lH(){return{type:"boolean"}}function zG(Y,J){return Z0(Y.type._def,J)}var dH=(Y,J)=>{return Z0(Y.innerType._def,J)};function KG(Y,J,X){let Q=X??J.dateStrategy;if(Array.isArray(Q))return{anyOf:Q.map((G)=>KG(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 iH(Y)}}var iH=(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 nH(Y,J){return{...Z0(Y.innerType._def,J),default:Y.defaultValue()}}function oH(Y,J){return J.effectStrategy==="input"?Z0(Y.schema._def,J):s0()}function rH(Y){return{type:"string",enum:Array.from(Y.values)}}var sH=(Y)=>{if("type"in Y&&Y.type==="string")return!1;return"allOf"in Y};function aH(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(sH(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 tH(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 T4=void 0,Q1={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(T4===void 0)T4=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u");return T4},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 UG(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":G1(X,"email",Q.message,J);break;case"format:idn-email":G1(X,"idn-email",Q.message,J);break;case"pattern:zod":c0(X,Q1.email,Q.message,J)}break;case"url":G1(X,"uri",Q.message,J);break;case"uuid":G1(X,"uuid",Q.message,J);break;case"regex":c0(X,Q.regex,Q.message,J);break;case"cuid":c0(X,Q1.cuid,Q.message,J);break;case"cuid2":c0(X,Q1.cuid2,Q.message,J);break;case"startsWith":c0(X,RegExp(`^${R4(Q.value,J)}`),Q.message,J);break;case"endsWith":c0(X,RegExp(`${R4(Q.value,J)}$`),Q.message,J);break;case"datetime":G1(X,"date-time",Q.message,J);break;case"date":G1(X,"date",Q.message,J);break;case"time":G1(X,"time",Q.message,J);break;case"duration":G1(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(R4(Q.value,J)),Q.message,J);break;case"ip":if(Q.version!=="v6")G1(X,"ipv4",Q.message,J);if(Q.version!=="v4")G1(X,"ipv6",Q.message,J);break;case"base64url":c0(X,Q1.base64url,Q.message,J);break;case"jwt":c0(X,Q1.jwt,Q.message,J);break;case"cidr":if(Q.version!=="v6")c0(X,Q1.ipv4Cidr,Q.message,J);if(Q.version!=="v4")c0(X,Q1.ipv6Cidr,Q.message,J);break;case"emoji":c0(X,Q1.emoji(),Q.message,J);break;case"ulid":c0(X,Q1.ulid,Q.message,J);break;case"base64":switch(J.base64Strategy){case"format:binary":G1(X,"binary",Q.message,J);break;case"contentEncoding:base64":X.contentEncoding="base64";break;case"pattern:zod":c0(X,Q1.base64,Q.message,J)}break;case"nanoid":c0(X,Q1.nanoid,Q.message,J)}return X}function R4(Y,J){return J.patternStrategy==="escape"?YZ(Y):Y}var eH=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");function YZ(Y){let J="";for(let X=0;X<Y.length;X++){if(!eH.has(Y[X]))J+="\\";J+=Y[X]}return J}function G1(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:cQ(J,Q),...X&&Q.errorMessages&&{errorMessage:{pattern:X}}})}else Y.pattern=cQ(J,Q)}function cQ(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 U=0;U<Q.length;U++){if($){G+=Q[U],$=!1;continue}if(X.i){if(W){if(Q[U].match(/[a-z]/)){if(K)G+=Q[U],G+=`${Q[U-2]}-${Q[U]}`.toUpperCase(),K=!1;else if(Q[U+1]==="-"&&Q[U+2]?.match(/[a-z]/))G+=Q[U],K=!0;else G+=`${Q[U]}${Q[U].toUpperCase()}`;continue}}else if(Q[U].match(/[a-z]/)){G+=`[${Q[U]}${Q[U].toUpperCase()}]`;continue}}if(X.m){if(Q[U]==="^"){G+=`(^|(?<=[\r
33
- ]))`;continue}else if(Q[U]==="$"){G+=`($|(?=[\r
34
- ]))`;continue}}if(X.s&&Q[U]==="."){G+=W?`${Q[U]}\r
35
- `:`[${Q[U]}\r
36
- ]`;continue}if(G+=Q[U],Q[U]==="\\")$=!0;else if(W&&Q[U]==="]")W=!1;else if(!W&&Q[U]==="[")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 HG(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}=UG(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}=zG(Y.keyType._def,J);return{...X,propertyNames:G}}return X}function JZ(Y,J){if(J.mapStrategy==="record")return HG(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 XZ(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 QZ(){return{not:s0()}}function GZ(){return{type:"null"}}var w4={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};function $Z(Y,J){let X=Y.options instanceof Map?Array.from(Y.options.values()):Y.options;if(X.every((Q)=>(Q._def.typeName in w4)&&(!Q._def.checks||!Q._def.checks.length))){let Q=X.reduce((G,$)=>{let W=w4[$._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 WZ(Y,J)}var WZ=(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 zZ(Y,J){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(Y.innerType._def.typeName)&&(!Y.innerType._def.checks||!Y.innerType._def.checks.length))return{type:[w4[Y.innerType._def.typeName],"null"]};let X=Z0(Y.innerType._def,{...J,currentPath:[...J.currentPath,"anyOf","0"]});return X&&{anyOf:[X,{type:"null"}]}}function KZ(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 UZ(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 U=ZZ(K),Z=Z0(K._def,{...J,currentPath:[...J.currentPath,"properties",W],propertyPath:[...J.currentPath,"properties",W]});if(Z===void 0)continue;if(X.properties[W]=Z,!U)Q.push(W)}if(Q.length)X.required=Q;let $=HZ(Y,J);if($!==void 0)X.additionalProperties=$;return X}function HZ(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 ZZ(Y){try{return Y.isOptional()}catch{return!0}}var VZ=(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()},BZ=(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 LZ(Y,J){return Z0(Y.type._def,J)}function NZ(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 jZ(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 FZ(){return{not:s0()}}function OZ(){return s0()}var DZ=(Y,J)=>{return Z0(Y.innerType._def,J)},PZ=(Y,J,X)=>{switch(J){case"ZodString":return UG(Y,X);case"ZodNumber":return KZ(Y);case"ZodObject":return UZ(Y,X);case"ZodBigInt":return pH(Y);case"ZodBoolean":return lH();case"ZodDate":return KG(Y,X);case"ZodUndefined":return FZ();case"ZodNull":return GZ();case"ZodArray":return uH(Y,X);case"ZodUnion":case"ZodDiscriminatedUnion":return $Z(Y,X);case"ZodIntersection":return aH(Y,X);case"ZodTuple":return jZ(Y,X);case"ZodRecord":return HG(Y,X);case"ZodLiteral":return tH(Y);case"ZodEnum":return rH(Y);case"ZodNativeEnum":return XZ(Y);case"ZodNullable":return zZ(Y,X);case"ZodOptional":return VZ(Y,X);case"ZodMap":return JZ(Y,X);case"ZodSet":return NZ(Y,X);case"ZodLazy":return()=>Y.getter()._def;case"ZodPromise":return LZ(Y,X);case"ZodNaN":case"ZodNever":return QZ();case"ZodEffects":return oH(Y,X);case"ZodAny":return s0();case"ZodUnknown":return OZ();case"ZodDefault":return nH(Y,X);case"ZodBranded":return zG(Y,X);case"ZodReadonly":return DZ(Y,X);case"ZodCatch":return dH(Y,X);case"ZodPipeline":return BZ(Y,X);case"ZodFunction":case"ZodVoid":case"ZodSymbol":return;default:return((Q)=>{return})(J)}},_Z=(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!==mH)return K}if(Q&&!X){let K=qZ(Q,J);if(K!==void 0)return K}let G={def:Y,path:J.currentPath,jsonSchema:void 0};J.seen.set(Y,G);let $=PZ(Y,Y.typeName,J),W=typeof $==="function"?Z0($(),J):$;if(W)EZ(Y,J,W);if(J.postProcess){let K=J.postProcess(W,Y,J);return G.jsonSchema=W,K}return G.jsonSchema=W,W}var qZ=(Y,J)=>{switch(J.$refStrategy){case"root":return{$ref:Y.path.join("/")};case"relative":return{$ref:_Z(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}},EZ=(Y,J,X)=>{if(Y.description)X.description=Y.description;return X},MZ=(Y)=>{let J=cH(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}]))}},AZ=(Y,J)=>{let X=MZ(J),Q=typeof J==="object"&&J.definitions?Object.entries(J.definitions).reduce((U,[Z,B])=>({...U,[Z]:Z0(B._def,{...X,currentPath:[...X.basePath,X.definitionPath,Z]},!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},TZ=Symbol.for("vercel.ai.schema");function k4(Y){let J;return()=>{if(J==null)J=Y();return J}}function I8(Y,{validate:J}={}){return{[TZ]:!0,_type:void 0,get jsonSchema(){if(typeof Y==="function")Y=Y();return Y},validate:J}}function RZ(Y,J){let X=J?.useReferences??!1;return I8(()=>AZ(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 CZ(Y,J){let X=J?.useReferences??!1;return I8(()=>WG(e5(Y,{target:"draft-7",io:"input",reused:X?"ref":"inline"})),{validate:async(Q)=>{let G=await C8(Y,Q);return G.success?{success:!0,value:G.data}:{success:!1,error:G.error}}})}function wZ(Y){return"_zod"in Y}function b8(Y,J){if(wZ(Y))return CZ(Y,J);else return RZ(Y,J)}var SZ="AI_SerializationError",HD=`vercel.ai.error.${SZ}`;var gZ="AI_InvalidArgumentError",rD=`vercel.ai.error.${gZ}`;var fZ="AI_InvalidStreamPartError",sD=`vercel.ai.error.${fZ}`;var mZ="AI_InvalidToolApprovalError",aD=`vercel.ai.error.${mZ}`;var cZ="AI_InvalidToolApprovalSignatureError",tD=`vercel.ai.error.${cZ}`;var uZ="AI_InvalidToolInputError",eD=`vercel.ai.error.${uZ}`;var pZ="AI_ToolCallNotFoundForApprovalError",YP=`vercel.ai.error.${pZ}`;var lZ="AI_MissingToolResultsError",JP=`vercel.ai.error.${lZ}`;var dZ="AI_NoImageGeneratedError",XP=`vercel.ai.error.${dZ}`;var iZ="AI_NoObjectGeneratedError",QP=`vercel.ai.error.${iZ}`;var nZ="AI_NoOutputGeneratedError",GP=`vercel.ai.error.${nZ}`;var oZ="AI_NoSpeechGeneratedError",$P=`vercel.ai.error.${oZ}`;var rZ="AI_NoTranscriptGeneratedError",WP=`vercel.ai.error.${rZ}`;var sZ="AI_NoTranslationGeneratedError",zP=`vercel.ai.error.${sZ}`;var aZ="AI_NoVideoGeneratedError",KP=`vercel.ai.error.${aZ}`;var tZ="AI_NoSuchToolError",UP=`vercel.ai.error.${tZ}`;var eZ="AI_StreamProviderError",HP=`vercel.ai.error.${eZ}`;var YV="AI_ToolCallRepairError",ZP=`vercel.ai.error.${YV}`;var JV="AI_ToolChoiceViolationError",VP=`vercel.ai.error.${JV}`;var XV="AI_UIMessageStreamError",BP=`vercel.ai.error.${XV}`;var QV="AI_InvalidDataContentError",LP=`vercel.ai.error.${QV}`;var GV="AI_InvalidMessageRoleError",NP=`vercel.ai.error.${GV}`;var $V="AI_MessageConversionError",jP=`vercel.ai.error.${$V}`;var WV="AI_RetryError",FP=`vercel.ai.error.${WV}`;var zV="7.0.140",KV=async({url:Y,maxBytes:J,abortSignal:X})=>{let Q=Y.toString();try{let G=sQ({},`ai-sdk/${zV}`,oQ()),$=await XG({url:Q,headers:G,abortSignal:X});if(!$.ok)throw await S8($),new h0({url:Q,statusCode:$.status,statusText:$.statusText});return{data:await QG({response:$,url:Q,maxBytes:J??b4}),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:q4,boolean:AQ,custom:yQ,discriminatedUnion:IQ,enum:M4,instanceof:gQ,lazy:hQ,literal:kQ,looseObject:wQ,never:_4,null:TQ,number:MQ,object:CQ,record:bQ,string:qQ,union:E4,unknown:E9},K6=z.lazy(()=>z.union([z.null(),z.string(),z.number(),z.boolean(),z.record(z.string(),K6.optional()),z.array(K6)])),k=z.record(z.string(),z.record(z.string(),K6.optional())),A9=z.union([z.string(),z.instanceof(Uint8Array),z.instanceof(ArrayBuffer),z.custom($G,{message:"Must be a Buffer"})]),x4=z.record(z.string(),z.string()),ZG=z.object({type:z.literal("text"),text:z.string(),providerOptions:k.optional()}),UV=z.object({type:z.literal("image"),image:z.union([A9,z.instanceof(URL),x4]),mediaType:z.string().optional(),providerOptions:k.optional()}),VG=z.discriminatedUnion("type",[z.object({type:z.literal("data"),data:A9}),z.object({type:z.literal("url"),url:z.instanceof(URL)}),z.object({type:z.literal("reference"),reference:x4}),z.object({type:z.literal("text"),text:z.string()})]),HV=z.discriminatedUnion("type",[z.object({type:z.literal("data"),data:A9}),z.object({type:z.literal("url"),url:z.instanceof(URL)})]),BG=z.object({type:z.literal("file"),data:z.union([VG,A9,z.instanceof(URL),x4]),filename:z.string().optional(),mediaType:z.string(),providerOptions:k.optional()}),ZV=z.object({type:z.literal("reasoning"),text:z.string(),providerOptions:k.optional()}),VV=z.object({type:z.literal("custom"),kind:z.string().transform((Y)=>Y),providerOptions:k.optional()}),BV=z.object({type:z.literal("reasoning-file"),data:z.union([HV,A9,z.instanceof(URL)]),mediaType:z.string(),providerOptions:k.optional()}),LV=z.object({type:z.literal("tool-call"),toolCallId:z.string(),toolName:z.string(),input:z.unknown(),providerOptions:k.optional(),providerExecuted:z.boolean().optional()}),NV=z.discriminatedUnion("type",[z.object({type:z.literal("text"),value:z.string(),providerOptions:k.optional()}),z.object({type:z.literal("json"),value:K6,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:K6,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:VG,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()})]))})]),LG=z.object({type:z.literal("tool-result"),toolCallId:z.string(),toolName:z.string(),output:NV,providerOptions:k.optional()}),jV=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()}),FV=z.object({type:z.literal("tool-approval-response"),approvalId:z.string(),approved:z.boolean(),reason:z.string().optional()}),OV=z.object({role:z.literal("system"),content:z.string(),providerOptions:k.optional()}),DV=z.object({role:z.literal("user"),content:z.union([z.string(),z.array(z.union([ZG,UV,BG]))]),providerOptions:k.optional()}),PV=z.object({role:z.literal("assistant"),content:z.union([z.string(),z.array(z.union([ZG,VV,BG,ZV,BV,LV,LG,jV]))]),providerOptions:k.optional()}),_V=z.object({role:z.literal("tool"),content:z.array(z.union([LG,FV])),providerOptions:k.optional()}),OP=z.union([OV,DV,PV,_V]);var DP=Symbol("ai-sdk-tool-call-input-schema-input");var PP=I0({prefix:"aitxt",size:24}),_P=I0({prefix:"call",size:24});var qP=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 NG=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()}),M9=z.record(z.string(),K6.optional()),EP=k4(()=>b8(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(NG).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(),providerExecuted:z.boolean().optional(),providerMetadata:k.optional(),toolMetadata:M9.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:M9.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:M9.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:M9.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:M9.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 MP=Symbol("streamRetryAttemptBoundary");var AP=I0({prefix:"aitxt",size:24}),TP=I0({prefix:"call",size:24});var RP=I0({prefix:"aitxt",size:24}),CP=I0({prefix:"call",size:24});var wP=Symbol("streamRetryBoundary");var p0=z.record(z.string(),K6.optional()),qV=z.record(z.string(),z.string());var SP=k4(()=>{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 b8(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(NG).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:qV.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(),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(),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 IP=I0({prefix:"call",size:24});var bP=I0({prefix:"call",size:24});var kP=I0({prefix:"call",size:24});var xP=I0({prefix:"aiobj",size:24});function jG(Y){return({url:J,abortSignal:X})=>KV({url:J,maxBytes:Y?.maxBytes,abortSignal:X})}var vP=I0({prefix:"aiobj",size:24});var hP=I0({prefix:"call",size:24});var yP=jG();var gP=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 EV="AI_NoSuchProviderError",fP=`vercel.ai.error.${EV}`;var mP=I0({prefix:"call",size:24});var cP=I0({prefix:"call",size:24}),uP=jG();var pP=I0({prefix:"call",size:24});class l0 extends G6{name="ProviderResponseStreamError";constructor(Y,J){super({message:Y,url:"",requestBodyValues:void 0,cause:J?.cause,isRetryable:J?.retryable??!0})}}var y0={};nY(y0,{toWebSocketUrl:()=>cV,streamResponsesWebSocket:()=>iV,parseRateLimitSignal:()=>R9,normalizeHeaders:()=>uV,markOversizedFrame:()=>CG,isUpgradeFailure:()=>pV,isOversizedFrame:()=>lV,isNonEmittingFrame:()=>SG,isAbortError:()=>f4,connectResponsesWebSocket:()=>dV,TERMINAL_AFTER_OUTPUT_MESSAGE:()=>g4,PROTOCOL_HEADER:()=>AG,OpenAIWebSocket:()=>y0,OVERSIZED_FRAME_MESSAGE:()=>IG});function T9(Y){let J=Number(Y.match(/^HTTP\/\d(?:\.\d)?\s+(\d{3})/)?.[1]);return Number.isFinite(J)?J:void 0}function k8(Y,J,X=!1){let G=Buffer.from(Y.slice(0,J)).toString("latin1").split(`\r
41
- `),$=G[0]??"",W=T9($);if(W===void 0||W===101)return;let K=Object.fromEntries(G.slice(1).flatMap((V)=>{let O=V.indexOf(":");return O===-1?[]:[[V.slice(0,O).trim().toLowerCase(),V.slice(O+1).trim()]]})),U=Y.slice(J+4),Z=K["content-length"],B=Number(Z);if(!X&&(Z===void 0||Number.isFinite(B)&&U.length<B))return;let D=Buffer.from(U).toString("utf8"),N=(()=>{try{let V=JSON.parse(D);return i(V)?V:void 0}catch{return}})();return{message:`WS upgrade failed: ${$}`,status:W,status_code:W,headers:K,body:D,...i(N?.error)?{error:N.error}:{}}}var MV="258EAFA5-E914-47DA-95CA-C5AB0DC85B11",FG=["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 v4{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"),U=await crypto.subtle.digest("SHA-1",new TextEncoder().encode(K+MV));this.expectedAccept=Buffer.from(new Uint8Array(U)).toString("base64");let Z={};for(let[N,V]of Object.entries(J))Z[N.toLowerCase()]=V;let B=[`GET ${$} HTTP/1.1`,`Host: ${Q}`,"Connection: Upgrade","Upgrade: websocket","Sec-WebSocket-Version: 13",`Sec-WebSocket-Key: ${K}`];for(let N of FG)if(Z[N]!==void 0)B.push(`${AV(N)}: ${Z[N]}`);for(let[N,V]of Object.entries(J))if(!FG.includes(N.toLowerCase())&&N.toLowerCase()!=="content-length")B.push(`${N}: ${V}`);let D=`${B.join(`\r
42
- `)}\r
43
- \r
44
- `;try{this.log("connect_start",{host:Q,port:G,tls:X.protocol==="https:"});let N=globalThis.Bun?.connect;if(!N)throw Error("Bun.connect is not available");this.socket=await N({hostname:Q,port:G,tls:X.protocol==="https:"?{serverName:Q}:void 0,socket:{open:(V)=>{this.socket=V,this.enqueueWrite(new TextEncoder().encode(D))},data:(V,O)=>this.onData(O),drain:()=>this.flushWrites(),error:(V,O)=>{if(this.emitRejectedUpgrade(!0))return;this.readyState=3;let E=O instanceof Error?O.message:String(O);this.log("socket_error",{message:E}),this.emit("error",{message:E})},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(N){this.readyState=3;let V=N instanceof Error?N.message:String(N);this.log("connect_exception",{message:V}),this.emit("error",{message:V})}}onData(Y){if(this.rxBuffer=TV(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=T9(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=k8(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 Z=0;Z<8;Z++)W=W*256+Y[2+Z];K=10}if($)K+=4;if(Y.length<K+W)return;let U=Y.slice(K,K+W);this.rxBuffer=Y.slice(K+W),this.handleFrame(Q,G,U)}}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=RV(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 t1({component:"raw-ws-bun",event:Y,sessionID:this.sessionID,url:this.url,...J})}}function AV(Y){return Y}function TV(Y,J){let X=new Uint8Array(Y.length+J.length);return X.set(Y,0),X.set(J,Y.length),X}function RV(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 CV}from"node:net";import{connect as wV}from"node:tls";var SV="258EAFA5-E914-47DA-95CA-C5AB0DC85B11",OG=["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 h4{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"),U=await crypto.subtle.digest("SHA-1",new TextEncoder().encode(K+SV));this.expectedAccept=Buffer.from(new Uint8Array(U)).toString("base64");let Z={};for(let[N,V]of Object.entries(J))Z[N.toLowerCase()]=V;let B=[`GET ${$} HTTP/1.1`,`Host: ${Q}`,"Connection: Upgrade","Upgrade: websocket","Sec-WebSocket-Version: 13",`Sec-WebSocket-Key: ${K}`];for(let N of OG)if(Z[N]!==void 0)B.push(`${IV(N)}: ${Z[N]}`);for(let[N,V]of Object.entries(J))if(!OG.includes(N.toLowerCase())&&N.toLowerCase()!=="content-length")B.push(`${N}: ${V}`);let D=`${B.join(`\r
50
- `)}\r
51
- \r
52
- `;try{this.log("connect_start",{host:Q,port:G,tls:X.protocol==="https:"});let N=()=>{this.socket?.write(D)},V=X.protocol==="https:"?wV({host:Q,port:G,servername:Q},N):CV({host:Q,port:G},N);this.socket=V,V.on("data",(O)=>{this.onData(typeof O==="string"?Buffer.from(O,"binary"):O)}),V.on("error",(O)=>{if(this.emitRejectedUpgrade(!0))return;this.readyState=3;let E=O instanceof Error?O.message:String(O);this.log("socket_error",{message:E}),this.emit("error",{message:E})}),V.on("close",(O)=>{if(this.emitRejectedUpgrade(!0))return;this.readyState=3,this.log("socket_close",{hadError:O}),this.emitClose(this.peerClose?.code??1006,this.peerClose?.reason??"socket closed")})}catch(N){this.readyState=3,this.log("connect_exception",{message:N instanceof Error?N.message:String(N)}),this.emit("error",{message:N instanceof Error?N.message:String(N)})}}onData(Y){if(this.rxBuffer=bV(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=T9(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=k8(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 Z=0;Z<8;Z++)W=W*256+Y[2+Z];K=10}if($)K+=4;if(Y.length<K+W)return;let U=Y.slice(K,K+W);this.rxBuffer=Y.slice(K+W),this.handleFrame(Q,G,U)}}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=kV(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 t1({component:"raw-ws-node",event:Y,sessionID:this.sessionID,url:this.url,...J})}}function IV(Y){return Y}function bV(Y,J){let X=new Uint8Array(Y.length+J.length);return X.set(Y,0),X.set(J,Y.length),X}function kV(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 xV(){return typeof globalThis.Bun?.connect==="function"}var DG=xV()?v4:h4;function x8(Y){return process.env[Y]??process.env[Y.toLowerCase()]}function vV(Y){let J=x8("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 hV(Y){let J=new URL(Y);if(vV(J))return;if(J.protocol==="http:")return x8("HTTP_PROXY");if(J.protocol==="https:")return x8("HTTPS_PROXY")??x8("HTTP_PROXY");return}var PG={getProxyForUrl:hV};var yV=B0("quota"),l1=B0("transport"),AG="responses_websockets=2026-02-06",_G=["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"],gV=new Set([h1,"x-opencode-title"]);function fV(Y){let J=new Map;for(let Q of Object.keys(Y))J.set(Q.toLowerCase(),Q);let X={};for(let Q of _G){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(!_G.includes(Q.toLowerCase()))X[Q]=G;return X}function mV(Y){let J={};for(let[X,Q]of Object.entries(Y)){if(gV.has(X.toLowerCase()))continue;J[X]=Q}return J}function cV(Y){return Y.replace(/^http/,"ws")}function uV(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 f4(Y){return Y instanceof DOMException&&Y.name==="AbortError"}var TG=new WeakSet;function pV(Y){return typeof Y==="object"&&Y!==null&&TG.has(Y)}var RG=new WeakSet;function lV(Y){return typeof Y==="object"&&Y!==null&&RG.has(Y)}function CG(Y){return RG.add(Y),Y}function qG(Y,J){let X=Error(Y,J===void 0?void 0:{cause:J});return TG.add(X),X}function dV(Y){return new Promise((J,X)=>{if(Y.signal?.aborted){X(y4(Y.signal));return}let Q={...Y.headers,"openai-beta":Y.headers["openai-beta"]??AG},G=Q[h1]??Q["session-id"];delete Q["content-length"],Q=fV(mV(Q));let $=typeof Bun>"u"?void 0:PG.getProxyForUrl(Y.url.replace(/^wss:/,"https:").replace(/^ws:/,"http:")),W=!0,K=Y.rawWebSocket?new DG(Y.url,Q,{sessionID:G}):new globalThis.WebSocket(Y.url,{headers:Q,...$?{proxy:$}:{},perMessageDeflate:W}),U=Y.timeout?setTimeout(()=>{Z(),K.close(),X(Error("WebSocket connect timed out"))},Y.timeout):void 0;function Z(){if(U)clearTimeout(U);K.removeEventListener("open",B),K.removeEventListener("error",D),K.removeEventListener("close",N),Y.signal?.removeEventListener("abort",V)}function B(){Z(),J(K)}function D(O){Z(),X(qG(h6(O),O))}function N(O){Z(),X(qG(bG("WebSocket closed before open",O.code,O.reason)))}function V(){Z(),K.close(),X(y4(Y.signal))}K.addEventListener("open",B,{once:!0}),K.addEventListener("error",D,{once:!0}),K.addEventListener("close",N,{once:!0}),Y.signal?.addEventListener("abort",V,{once:!0})})}function iV(Y){let J=new TextEncoder,X=Y.socket,Q,G=()=>{},$=!1,W=0,K=!1,U=!1,Z,B=[],D=12,N=[],V=typeof Y.body.previous_response_id==="string"?Y.body.previous_response_id:void 0,O=typeof Y.body.prompt_cache_key==="string"?Y.body.prompt_cache_key:void 0,E={sessionID:Y.sessionID,codexSessionID:O},_,T=0,w,x=new Set,j={addedItemIds:new Set,reasoningItemIds:new Set,finished:!1,other:!1};function S(){if(Z)clearTimeout(Z);G(),Y.signal?.removeEventListener("abort",x0)}function h(s=X){s.close()}function A(){S(),Q?.enqueue(J.encode(`data: [DONE]
58
-
59
- `)),Q?.close()}function y(s){u(s,s)}function o(){if(!U)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 r(){Q?.enqueue(J.encode(`data: ${JSON.stringify(YB)}
60
-
61
- `)),A()}function V0(s){let P0={...E,openingFrameTypes:B,openingItemTypes:N,responseID:_,previousResponseID:V,hasContinuation:V!==void 0,framesSinceCreated:T,msSinceLastFrame:w===void 0?void 0:Date.now()-w},l=o();if(l==="finished-calls"){if($)return;l1.warn("stream failed after finished function calls only; ended as completed",{reason:s.message,emittedOutput:!0,outputShape:l,...P0}),$=!0,S(),Y.onConnectionInvalid?.(s),r();return}if(l==="other"){let p=g4;l1.warn("stream failed after output; not retried",{reason:s.message,emittedOutput:!0,outputShape:l,...P0}),u(Error(p,{cause:s}),new l0(p,{cause:s}));return}let I=j.reasoningItemIds.size;l1.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:U,outputShape:l,emptyReasoningItems:I,...P0}),y(s)}function u(s,P0){if($)return;$=!0,S(),Y.onConnectionInvalid?.(P0),Q?.error(s)}function G0(s){if($)return;if(!Y.idleTimeout)return;if(Z)clearTimeout(Z);Z=setTimeout(()=>V0(new l0(s)),Y.idleTimeout)}async function X0(s){if($)return;if(typeof s.data!=="string"){V0(new l0("Unexpected binary WebSocket frame"));return}let P0=s.data,l=(()=>{try{let g=JSON.parse(P0);return typeof g==="object"&&g!==null?g:void 0}catch{return}})();if(l?.type==="codex.rate_limits"){yV.debug("codex.rate_limits frame received",{pid:process.pid}),G0("idle timeout waiting for websocket");let g=MG(l);Y.onQuota?.(g);return}let I=o(),p=I==="none"||I==="unfinished-calls"?R9(l):void 0;if(p&&l){$=!0,S(),Y.onRateLimitReached?.(p.window,p.resetAt),Y.onTerminal?.(l),Y.onFirstEvent?.(),Q?.error(new l0(`OpenAI account rate limit reached at admission (${p.window})`));return}if(l?.type==="error"&&Y.onRetryableTerminal){if(G(),Z)clearTimeout(Z);Z=void 0;try{let g=await Y.onRetryableTerminal(l);if($){if(g)h(g);return}if(g){U0(g);return}}catch(g){V0(new l0(g instanceof Error?g.message:String(g),{cause:g}));return}}let d=rV(l,P0);if(d&&l){if(!K)Y.onFirstEvent?.(d);$=!0,S(),Y.onTerminal?.(l);let g=new G6({message:d.message,url:X.url,requestBodyValues:Y.body,statusCode:d.status,responseHeaders:d.headers,responseBody:d.body}),W0=o();if(W0==="none"||W0==="unfinished-calls"){if(W0==="unfinished-calls")l1.warn("protocol error after unfinished function calls only; surfaced as before output",{...E,status:d.status,reason:d.message,outputShape:W0,responseID:_,previousResponseID:V});Q?.error(g);return}if(l1.warn(W0==="finished-calls"?"protocol error after finished function calls only; ended as completed":"protocol error after output; not retried",{...E,status:d.status,reason:d.message,outputShape:W0,responseID:_,previousResponseID:V}),W0==="finished-calls"){r();return}Q?.error(Error(g4,{cause:g}));return}if(i(l)&&l.type==="response.failed"){let g=i(l.response)?l.response.failed:void 0,W0=i(g)?g.rate_limit_reached_type:void 0;if(typeof W0==="string"){$=!0,S(),Y.onRateLimitReached?.(W0),Y.onTerminal?.(l);let q0=o();if(q0!=="none")l1.warn(q0==="other"?"rate limit reached after output; ended without retry":q0==="finished-calls"?"rate limit reached after finished function calls only; ended as completed":"rate limit reached after unfinished function calls only; retryable",{...E,outputShape:q0,responseID:_,previousResponseID:V});if(q0==="none"||q0==="unfinished-calls")Y.onFirstEvent?.(),Q?.error(new l0(`OpenAI account rate limit reached mid-stream (${W0})`));else if(q0==="finished-calls")r();else A();return}}if(!l){if(!K)Y.onFirstEvent?.();G0("idle timeout waiting for websocket");return}if(nV(l,x),!K)Y.onFirstEvent?.();if(Q?.enqueue(J.encode(`${P0.split(/\r?\n/).map((g)=>`data: ${g}`).join(`
62
- `)}
63
-
64
- `)),K=!0,w=Date.now(),_!==void 0)T++;if(B.length<D)B.push(String(l.type));if(l.type==="response.output_item.added"&&N.length<D)N.push(i(l.item)?String(l.item.type):"unknown");if(l.type==="response.created")_=tV(l),l1.debug("response created",{...E,responseID:_,previousResponseID:V,hasContinuation:V!==void 0});if(!SG(l.type))U=!0,eV(l,j);if(G0("idle timeout waiting for websocket"),l.type==="response.completed"||l.type==="response.done"){$=!0,oV(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 A0(s){V0(new l0(h6(s),{cause:s}))}function v(s){if($)return;let P0=s.code===1009,l=new l0(P0?IG:bG("WebSocket closed before response.completed",s.code,s.reason),{retryable:!P0});if(P0)l1.warn("websocket peer refused the request size",{...E,requestBytes:W,reason:s.reason.toString()});V0(P0?CG(l):l)}function x0(){let s=y4(Y.signal);if($)return;$=!0,S(),h(),Y.onAbort?.(s),Q?.error(s)}function T0(s){if($)return;$=!0,S(),h(),Y.onAbort?.(sV(s))}function U0(s){G(),X=s,X.addEventListener("message",X0),X.addEventListener("error",A0,{once:!0}),X.addEventListener("close",v,{once:!0}),G=()=>{X.removeEventListener("message",X0),X.removeEventListener("error",A0),X.removeEventListener("close",v)};let{background:P0,...l}=Y.body;G0("idle timeout sending websocket request");try{let I=JSON.stringify({type:"response.create",...l});W=I.length,X.send(I),G0("idle timeout waiting for websocket")}catch(I){if($)return;y(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}U0(X)},cancel(s){T0(s)}}),{status:200,headers:{"content-type":"text/event-stream"}})}function nV(Y,J){if(Y.type!=="response.output_item.done")return;if(!i(Y.item))return;wG(Y.item,J)}function oV(Y,J){let X=Y.response;if(!i(X)||!Array.isArray(X.output))return;for(let Q of X.output)if(i(Q))wG(Q,J)}function wG(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 rV(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:i(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:i(Y.error)&&typeof Y.error.message==="string"?Y.error.message:`${X}`}}function R9(Y){if(typeof Y==="string")try{return R9(JSON.parse(Y))}catch{return}if(!i(Y))return;let J=R9(Y.cause);if(J)return J;let X=R9(Y.body);if(X)return X;let Q=i(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,U=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:U}}function sV(Y){if(f4(Y))return Y;if(Y instanceof Error)return Y;return new DOMException(typeof Y==="string"?Y:"Aborted","AbortError")}function y4(Y){let J=Y?.reason;if(f4(J))return J;if(aV(J))return J;return new DOMException(J instanceof Error?J.message:"Aborted","AbortError")}function aV(Y){return Y instanceof Error&&(Y.name==="ProviderHeaderTimeoutError"||Y.name==="ProviderResponseStreamError")}function tV(Y){let J=Y.response;if(!i(J))return;return typeof J.id==="string"?J.id:void 0}function eV(Y,J){let X=i(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(EG(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(EG(X)&&typeof X?.id==="string"&&J.reasoningItemIds.has(X.id))return;break}J.other=!0}function EG(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 YB={type:"response.completed",response:{status:"completed",incomplete_details:null,usage:{input_tokens:0,output_tokens:0,total_tokens:0}}};function SG(Y){return Y==="response.created"||Y==="response.in_progress"||Y.startsWith("codex.")}var g4="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.",IG="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 bG(Y,J,X){let Q=[`code ${J}`];if(X.length>0)Q.push(X.toString());return`${Y} (${Q.join(": ")})`}var c4="x-opencode-title",v8="x-openai-auth-quota-account",m4=new Set([c4,h1,v8,"x-opencode-session"]),XB=15000,QB=300000,GB=3300000,kG="websocket_connection_limit_reached";function $B(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 JB("sha256").update(Q).digest("hex").slice(0,12)}function WB(Y){let J=Y?.httpFetch??globalThis.fetch,X=new Map,Q=Y?.connectTimeout??XB,G=Y?.idleTimeout??QB,$=Y?.maxConnectionAge??GB,W=Y?.streamRetries??5,K=Y?.firstEventGraceMs??250,U=Y?.rawWebSocket??!1,Z=Y?.onQuota,B=Y?.onRateLimitReached,D=setInterval(()=>E(),Math.min(G,60000));if(typeof D==="object"&&"unref"in D&&typeof D.unref==="function")D.unref();function N(w,x,j,S){if(!x||!j)return j;u4(w,xG(x),void 0,S);let h=new Headers(j.headers),A=h.get("x-codex-turn-metadata");if(!A)return j;let y=cG(A,w.turnID,w.turnStartedAt);if(!y)return j;return h.set("x-codex-turn-metadata",y),{...j,headers:h}}async function V(w,x){let j=w instanceof URL?w.toString():typeof w==="string"?w:w.url,S=y0.normalizeHeaders(x?.headers),h=iG(x),A=X8(h);if(x?.method!=="POST"||!new URL(j).pathname.endsWith("/responses"))return J(w,A);let y=(()=>{try{if(typeof x?.body!=="string")return;let U0=JSON.parse(x.body);return typeof U0==="object"&&U0!==null?U0:void 0}catch{return}})();if(!y?.stream)return J(w,A);if(S[c4]==="true")return J(w,A);let o=S[h1]??S["x-session-affinity"]??S["session-id"],r=o;if(!o)return J(w,A);let V0=y0.normalizeHeaders(h?.headers),u=$B(V0),G0=`${o}:${u}:conversation`,X0=typeof S[v8]==="string"?S[v8]:void 0,A0=B?(U0,s)=>B(U0,X0,s):void 0,v=X.get(G0)??{lastUsedAt:Date.now(),busy:!1,fallback:!1,streamFailures:0};X.set(G0,v);let x0=xG(y),T0;if(v.fallback)return J(w,N(v,y,A,T0));if(v.busy)return J(w,N(v,y,A,T0));v.busy=!0,v.lastUsedAt=Date.now();try{T0=y6(v,x0);let U0=y0.normalizeHeaders(h?.headers),s=typeof U0.authorization==="string"&&U0.authorization.startsWith("Bearer ")?U0.authorization.slice(7):"",P0=typeof U0["chatgpt-account-id"]==="string"?U0["chatgpt-account-id"]:void 0,l=Z?(_0)=>Z(_0,s,X0,P0):void 0,I=!v.socket&&!v.continuation?NB(U0):U0;if(v.socket=await HB(v,Y?.url??j,I,Q,$,U,x?.signal),OB(v,x0,T0))await ZB(v,x0,G,{signal:x?.signal??void 0,sessionID:r,url:Y?.url??j,headers:h?.headers,onRateLimitReached:A0});let p=()=>{},d=()=>{},g=new Promise((_0,j1)=>{p=_0,d=j1}),W0=FB(v,x0,T0),q0=a1(mG(v,W0,x0,T0)),a0=typeof q0.previous_response_id==="string";await A6({sessionID:r,transport:"websocket",phase:"main",bodyText:()=>JSON.stringify(q0),url:Y?.url??j,method:h?.method,headers:h?.headers});let w0=y0.streamResponsesWebSocket({socket:v.socket,body:q0,sessionID:r??void 0,idleTimeout:G,signal:x?.signal??void 0,onQuota:l,onRateLimitReached:A0,onFirstEvent:(_0)=>p(_0??!0),onComplete:(_0,j1)=>{let Z6=yG(_0);t1({component:"ws-pool",event:"main_completed",sessionID:r,responseID:hG(_0),usage:Z6}),fG(v,x0,_0,j1,a0,T0)},onTerminal:(_0)=>{if(v.busy=!1,v.lastUsedAt=Date.now(),v.streamFailures=0,_0.type!=="response.completed"&&_0.type!=="response.done")v.continuation=void 0,I1(v)},onConnectionInvalid:(_0)=>{if(v.busy=!1,v.lastUsedAt=Date.now(),y0.isOversizedFrame(_0))v.fallback=!0;if(!v.fallback)O(v);v.continuation=void 0,I1(v),p(!1)},onAbort:(_0)=>{v.busy=!1,v.lastUsedAt=Date.now(),v.streamFailures=0,v.continuation=void 0,I1(v),d(_0)},onRetryableTerminal:async(_0)=>{let j1=vG(_0);if(!j1)return;throw v.fallback=!0,j1}}),t0=await zB(g,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 f6=()=>J(w,N(v,y,A,T0));if(!v.fallback)return KB(w0,f6);return f6()}catch(U0){if(v.busy=!1,v.lastUsedAt=Date.now(),y0.isAbortError(U0))throw v.streamFailures=0,v.continuation=void 0,I1(v),U0;let s=y0.parseRateLimitSignal(U0);if(s)A0?.(s.window,s.resetAt);if(y0.isUpgradeFailure(U0)&&!U)v.fallback=!0;if(O(v),v.continuation=void 0,I1(v),v.fallback)return J(w,N(v,y,A,T0));return UB(new l0(U0 instanceof Error?U0.message:String(U0),{cause:U0}))}}function O(w){if(w.streamFailures++,w.streamFailures>W)w.fallback=!0}function E(){let w=Date.now();for(let[x,j]of X){if(j.busy)continue;if(w-j.lastUsedAt<G)continue;I1(j),X.delete(x)}}function _(){clearInterval(D);for(let w of X.values())I1(w);X.clear()}function T(w){let x=`${w}:`;for(let[j,S]of X){if(!j.startsWith(x))continue;I1(S),X.delete(j)}}return Object.assign(V,{close:_,remove:T})}function vG(Y){if(Y.type!=="error"||!i(Y.error)||Y.error.code!==kG)return;return Error(typeof Y.error.message==="string"?Y.error.message:kG)}async function zB(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 KB(Y,J){let X=Y.body;if(!X)return Y;let Q=!1,G=new ReadableStream({async start($){let W=X.getReader(),K=async(U)=>{while(!0){let{done:Z,value:B}=await U.read();if(Z)return;if(B&&B.length>0)Q=!0,$.enqueue(B)}};try{await K(W),$.close()}catch(U){if(Q||!y0.isOversizedFrame(U)){$.error(U);return}try{let Z=await J();if(!Z.ok){$.error(new l0(`HTTP fallback after an oversized WebSocket frame failed with ${Z.status}`));return}if(Z.body)await K(Z.body.getReader());$.close()}catch(Z){$.error(Z)}}},cancel($){X.cancel($)}});return new Response(G,{status:Y.status,headers:Y.headers})}function UB(Y){return new Response(new ReadableStream({start(J){J.error(Y)}}),{status:200,headers:{"content-type":"text/event-stream"}})}async function HB(Y,J,X,Q,G,$,W){if(Y.socket?.readyState===WebSocket.OPEN&&Y.connectedAt&&Date.now()-Y.connectedAt<G)return Y.socket;I1(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 I1(Y){if(Y.socket)Y.socket.close(),Y.socket=void 0;Y.connectedAt=void 0,Y.continuation=void 0}async function ZB(Y,J,X,Q){if(!Y.socket||!Array.isArray(J.input)||J.input.length===0)return;let G=BB(J);await A6({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)=>{t1({component:"ws-pool",event:"prewarm_completed",sessionID:Q.sessionID,responseID:hG(W),usage:yG(W)}),fG(Y,G,W,K,!1,{input:e1([]),signature:lG(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=vG(W);if(!K)return;throw Y.fallback=!0,K}});await VB($)}function hG(Y){let J=Y.response;if(!i(J))return;return typeof J.id==="string"?J.id:void 0}function yG(Y){let J=Y.response;if(!i(J))return;return i(J.usage)?J.usage:void 0}async function VB(Y){let J=Y.body?.getReader();if(!J)return;while(!0)if((await J.read()).done)return}function BB(Y){return a1({...Y,generate:!1,input:[],previous_response_id:void 0,client_metadata:LB(Y.client_metadata)})}function gG(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 LB(Y){if(!i(Y))return Y;if(typeof Y["x-codex-turn-metadata"]!=="string")return Y;try{let J=JSON.parse(Y["x-codex-turn-metadata"]);if(!i(J))return Y;return{...Y,"x-codex-turn-metadata":gG(J),"x-codex-ws-stream-request-start-ms":String(Date.now())}}catch{return Y}}function NB(Y){let J=Y["x-codex-turn-metadata"];if(!J)return Y;try{let X=JSON.parse(J);if(!i(X))return Y;return{...Y,"x-codex-turn-metadata":gG(X)}}catch{return Y}}function xG(Y){let J={...Y};if(Array.isArray(Y.input))J.input=Y.input.map(jB);return J}function jB(Y){if(!i(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 fG(Y,J,X,Q,G,$=y6(Y,J)){let W=X.response,K=i(W)&&typeof W.id==="string"?W.id:void 0;if(!K||!Array.isArray(J.input)){Y.continuation=void 0;return}let U=G?new Set(Y.continuation?.finalizedCallIds):new Set;for(let Z of Q)U.add(Z);Y.continuation={responseID:K,input:J.input,signature:$.signature,canonical:Y9($.input),finalizedCallIds:U}}function u4(Y,J,X=J,Q=y6(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?J9(uG(Q,Y.turnInput),Q.input):void 0,U=K===void 0?G:$.slice(K);if(U.length>0&&U.some(pG)||!Y.turnID)Y.turnID=M1(),Y.turnStartedAt=Date.now();Y.turnInput=$.slice(),Q.priorInputs.set(Y.turnInput,Q.input),Y.turnSignature=W,Y.turnCanonical=Y9(Q.input)}function mG(Y,J,X=J,Q=y6(Y,{...X,input:Array.isArray(X.input)?X.input:J.input})){u4(Y,J,X,Q);let G=J.client_metadata;if(!i(G)||typeof G["x-codex-turn-metadata"]!=="string")return J;let $=cG(G["x-codex-turn-metadata"],Y.turnID,Y.turnStartedAt);if(!$)return J;return{...J,client_metadata:{...G,"x-codex-turn-metadata":$}}}function cG(Y,J,X){let Q;try{Q=JSON.parse(Y)}catch{return}if(!i(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 y6(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=e1(X,Y.turnCanonical??Y.continuation?.canonical);return Q.set(X,G),{input:G,signature:lG(J),priorInputs:Q}}function uG(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??=e1(J),Y.priorInputs.set(J,X)}return X}function FB(Y,J,X=y6(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(!dG(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),$=DB(G,Y.continuation.finalizedCallIds);if($.length===0)return J;return{...J,previous_response_id:Y.continuation.responseID,input:$}}function OB(Y,J,X=y6(Y,J)){let Q=Array.isArray(J.input)?J.input:void 0;if(!Y.continuation)return!0;if(!Q)return!1;if(!dG(Y.continuation,X))return!0;return Q.slice(Y.continuation.input.length).some(pG)}function pG(Y){if(!i(Y))return!1;if(!(Y.type==="message"||("role"in Y)))return!1;return Y.role==="user"||Y.role==="developer"}function DB(Y,J){return Y.filter((X)=>{if(!i(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 lG(Y){return T6(PB(Object.fromEntries(Object.entries(Y).filter(([J])=>J!=="input"&&J!=="stream"&&J!=="background"&&J!=="previous_response_id"&&J!=="generate"))))}function PB(Y){if(!i(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 dG(Y,J){if(Y.input.length>=J.input.texts.length)return!1;return J9(uG(J,Y.input),J.input)!==void 0}function iG(Y){if(!Y?.headers)return Y;if(Y.headers instanceof Headers){let J=new Headers(Y.headers);for(let X of m4)J.delete(X);return{...Y,headers:J}}if(Array.isArray(Y.headers))return{...Y,headers:Y.headers.filter((J)=>!m4.has(J[0].toLowerCase()))};return{...Y,headers:Object.fromEntries(Object.entries(Y.headers).filter(([J])=>!m4.has(J.toLowerCase())))}}var AB=new Set(["gpt-5.5","gpt-5.3-codex-spark","gpt-5.4","gpt-5.4-mini"]),TB=new Set(["gpt-5.6","gpt-6","gpt-6.1"]);function RB(Y){if(AB.has(Y))return!0;if(TB.has(Y))return!1;let X=Y.match(/^gpt-(\d+(?:\.\d+)?)/)?.[1];return X?parseFloat(X)>5.4:!1}function CB(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 wB="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.",SB="opencode-oauth-dummy-key",jq=()=>s6,IB=120000,bB=90000,kB=4000,nG=50,oG=3,xB=25,vB=60000,hB="__OPENCODE_OPENAI_AUTH_COMMAND_HANDLED__",s4=!1,m8;function Fq(){return m8}function Oq(){s4=!1,m8=void 0}var rG=B0("models"),sG=!1,aG=!1;class t4 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 l4(Y,J,X,Q){let G=(X?.refresh?.refreshBeforeExpiryMinutes??240)*60000;return!Y||!J||J-Q<=G}function yB(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 $=B1(J.token);return{accountKey:Y,label:X?"Main account":Q.label??Y,accessToken:J.token,chatgptAccountId:Q.identity??($?L1($):void 0)}}function gB(Y){async function J(){let X=await Y.loadAccounts({configPath:Y.accountStoragePath,statePath:Y.accountStatePath}),Q=o1(X);if(!X||!Q||m0(Q))throw new g0("token_unavailable","Main OpenAI account has no usable access token.");let G=Q;if(l4(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 $=B1(G.access);return{accountKey:"main",label:"Main account",accessToken:G.access,chatgptAccountId:G.accountId??($?L1($):void 0)}}return async(X)=>{let Q=await Y.poolAccess?.(X);if(Q)return yB(X,Q);if(X==="main"){let B=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(l4(D.access,D.expires,B,Y.now()))try{D={type:"oauth",...await Y.refreshMainWithLease()}}catch(E){if(E instanceof r1)return J();throw E}if(!D.access)throw new g0("token_unavailable","Main OpenAI account has no usable access token.");let N=B1(D.access),V=N?L1(N):void 0,O=await Y.loadAccounts({configPath:Y.accountStoragePath,statePath:Y.accountStatePath});return{accountKey:X,label:"Main account",accessToken:D.access,chatgptAccountId:V??O?.mainAccountId}}let G=await Y.loadAccounts({configPath:Y.accountStoragePath,statePath:Y.accountStatePath}),$=G?.accounts.find((B)=>B.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(l4(K.access,K.expires,G,Y.now()))K=await Y.refreshFallbackAccount(K,G);if(!K.access)throw W();let U=await Y.loadAccounts({configPath:Y.accountStoragePath,statePath:Y.accountStatePath}),Z=U?.accounts.find((B)=>B.id===X);if(!U||!Z)throw new g0("unknown_account",`Fallback account ${X} was not found.`);if(Z.enabled===!1)throw new g0("disabled_account",`Fallback account ${X} is disabled.`);if(!o0(Z))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:Z.accountId}}}function fB(){return{fetchImpl:fetch,now:Date.now,randomUUID:()=>crypto.randomUUID()}}function d4(Y){return Y instanceof t4}function tG(){throw Error(hB)}async function mB(Y,J={}){let X=H0(J0());if($Y(X.configPath)){await n1(D6(X),J.holdsMainRefreshLock?void 0:q1(X),(Q)=>{if(J.canWrite&&!J.canWrite())throw Error(Q6["vault-refused"]);Y(Q)});return}await n9((Q)=>{return Y(Q),Q},X,{canWrite:J.canWrite})}var v$=null;function Dq(){return v$}function cB(Y){return Math.floor(Math.random()*Y)}var uB=!0;function pB(Y,J,X){let Q=Y.get(J);if(Q)return Q;let G=M1(),$={threadID:G,turnID:M1(),windowID:`${G}:0`};return Y.set(J,$),X?.(),$}function eG(){return MB(GY(),"openai-auth-sessions.json")}function lB(Y,J){return Y.find((X)=>X.enabled!==!1&&o0(X)&&(X.id===J||X.accountId===J))}function Y$(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;return X}function h8(Y,J){if(!Y)return Y;if(typeof Y.checkedAt==="number"&&Number.isFinite(Y.checkedAt))return Y;return{...Y,checkedAt:J}}function h$(Y,J,X=Date.now(),Q=J.mainAccountId){let G=Y.getMain(),$=G?.quota;return{main:{quota:$?{...$,checkedAt:G.checkedAt,primary:h8($.primary,G.checkedAt),secondary:h8($.secondary,G.checkedAt)}:null,...typeof Q==="string"?{mainAccountId:Q}:{},killed:!H6($,J,void 0,X),...$?.resetCreditsAvailable!==void 0?{resetCredits:$.resetCreditsAvailable}:{}},fallbacks:J.accounts.filter((W)=>W.enabled).map((W)=>{let K=Y.getFallback(W.id),U=K?.quota;return{id:W.id,label:W.label,accountId:K?.accountId??W.accountId,quota:U?{...U,checkedAt:K.checkedAt,primary:h8(U.primary,K.checkedAt),secondary:h8(U.secondary,K.checkedAt)}:null,killed:!H6(U,J,W.id,X),enabled:!0,...U?.resetCreditsAvailable!==void 0?{resetCredits:U.resetCreditsAvailable}:{}}}),route:J.routing?.mode??"main-first",lastUpdated:X}}function Pq(Y,J,X,Q=Date.now()){return{...h$(Y,J,Q),activeId:X}}function J$(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 i4(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 X$(Y){return Y.get("x-session-affinity")??Y.get("x-opencode-session")??Y.get("x-session-id")??Y.get("session-id")??void 0}var dB=new Set(["gpt-6-astra","gpt-6-sol","gpt-6-luna","gpt-6.1-sol"]),iB=new Set(["title","compaction","summary"]);function nB(Y,J,X){if(X!==null&&iB.has(X))return;let Q=typeof Y.model==="string"?Y.model:"";if(!dB.has(Q))return;let G=i(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,U=(N)=>_B("sha256").update(T6(N)).digest("hex").slice(0,16);if(J.pinnedEffort===void 0||K.some((N)=>!W||!Q9(W[N.anchor],"user")||U(W[N.anchor])!==N.fingerprint)){J.pinnedEffort=$,J.effortUpdates=[];return}if(!W||W.length===0)return;let Z=W.findLastIndex((N)=>Q9(N,"user")),B=K.at(-1),D=B?.effort??J.pinnedEffort;if(Z>=0&&$!==D)if(B?.anchor===Z){let N=K.at(-2)?.effort??J.pinnedEffort;if($===N)K.pop();else B.effort=$}else K.push({anchor:Z,fingerprint:U(W[Z]),effort:$});else if(Z<0&&$!==D)return;if(K.some((N,V)=>V>0&&N.anchor<=(K[V-1]?.anchor??-1))){J.pinnedEffort=$,J.effortUpdates=[];return}Y.reasoning={...G,effort:J.pinnedEffort};for(let N=K.length-1;N>=0;N--){let V=K[N];if(!V)continue;W.splice(V.anchor,0,{type:"configuration_update",reasoning:{effort:V.effort}})}}function a4(Y){if(Array.isArray(Y)){let X=Y;for(let Q=0;Q<Y.length;Q++){let G=a4(Y[Q]);if(G===Y[Q])continue;if(X===Y)X=Y.slice();X[Q]=G}return X}if(!i(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=a4(Y[X]);if(Q===Y[X])continue;if(J===Y)J={...Y};J[X]=Q}return J}function oB(Y){let J=i(Y.reasoning)?{...Y.reasoning}:{};J.context="all_turns",Y.reasoning=J,Y.parallel_tool_calls=!1;let X=a4(Array.isArray(Y.input)?Y.input:[]),G=[{type:"additional_tools",role:"developer",tools:Array.isArray(Y.tools)?Y.tools.filter(($)=>!(i($)&&$.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 rB(Y,J={}){let X=J.codexApiEndpoint??i0().codexApiEndpoint,Q=crypto.randomUUID(),G=CX(eG()),$=()=>wX(eG(),G),W=!1,K=!1,U=[],Z=null,B=P$(Y.client),D=new Map,N=new Map,V,O=!1,E,_=new Map,T,w,x=x3({host:"opencode",stateDir:J.vault?.stateDir??L$(H0(J0()).statePath),...Y.directory?{projectRoot:Y.directory}:{},reservedRouteIds:()=>r?.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},H0(J0())),j=x.vault;await j.authority();let S=x.firstRoster,h=Promise.withResolvers(),A=Promise.race([S,h.promise]),y=J.vault?.firstRosterWaitMs??SY,o,r,{enabled:V0,...u}=J.poolMigration??{},G0=V0??uB;if(G0&&"reason"in B)(u.log??B0("pool")).warn("account pool migration is off for this OpenCode client",{reason:B.reason});let X0=G0&&"slot"in B?Z3({paths:()=>H0(J0()),slot:B.slot,version:v1,...u,runDeps:{vaultServes:()=>j.serves(),...u.runDeps},paused:async()=>await j.authority()!=="local",migrate:async(I)=>{let p=await(u.migrate??W8)(I);return r?.load(),p},adopt:async(I)=>{if(!await W9(A,y))return{status:"retry",reason:"vault-roster-pending"};let p=await(u.adopt??z8)(I);return r?.load(),p}}):void 0,A0=(I,p="")=>I?async()=>{let d=await I();return{url:d.url,instructions:d.instructions??p,method:"auto",callback:async()=>{try{let g=await d.tokens;return{type:"success",refresh:g.refresh_token,access:g.access_token,expires:Date.now()+(g.expires_in??3600)*1000,accountId:s1(g)}}finally{d.cleanup?.()}}}}:void 0,v=new _Y(J.backgroundQuota),x0,T0=UX({client:Y.client,getAuth:async()=>x0?.(),fetchImpl:fetch,dependencies:{...J.login?.authorize?{authorizeBrowser:A0(J.login.authorize.browser,"Complete authorization in your browser. This window will close automatically."),authorizeHeadless:A0(J.login.authorize.headless)}:{}},vault:j,onMainSlotWritten:async()=>{await X0?.requestAdoption()}}),U0=(I)=>async(p)=>{let d=await I(p);if(d.method!=="auto")return d;return{...d,callback:async()=>{let g=await d.callback();if(g.type==="success"&&"refresh"in g)s(g.refresh);return g}}};async function s(I){if(!X0||!("slot"in B))return;let p=J.login?.sleep??((d)=>Bun.sleep(d));for(let d=0;d<5000;d+=100){try{let g=await B.slot.get({path:{id:"openai"}});if(i(g)&&g.refresh===I){await X0.requestAdoption();return}}catch{}await p(100)}}let P0=T0.map((I)=>I.type==="oauth"?{...I,authorize:U0(I.authorize)}:I);async function l(I,p){let d=Y.client.session;if(typeof d?.promptAsync==="function"){let g=await o3(Y.client,I),W0={noReply:!0,parts:[{type:"text",text:p,ignored:!0}]};if(g?.agent)W0.agent=g.agent;if(g?.model)W0.model=g.model;if(g?.variant)W0.variant=g.variant;await d.promptAsync({path:{id:I},body:W0});return}}return{async dispose(){x.release(),X0?.dispose(),r?.dispose(),v.stop(),w?.stop(),V?.stopBackgroundRefresh(),V=void 0;for(let d of U)d.close();U.length=0;let I=globalThis;for(let[d,g]of D)if(I.__openaiAuthCacheKeepManagers?.get(d)===g)g.stop(),I.__openaiAuthCacheKeepManagers.delete(d);D.clear();for(let d of N.values())await d.release().catch(()=>{});N.clear();let p=o;o=void 0,await(await p)?.release()},async event(I){if(I.event.type!=="session.deleted")return;let p=I.event.properties.info,d=G.get(p.id);if(d)Z?.cacheKeepManager?.remove(d.threadID);if(G.delete(p.id))$();let g=V1(p.id);if(_.delete(g),w?.cancel(`pin:${g}`),E){let W0=(await R0(H0(J0())))?.accounts;await C$(p.id,W0,E).catch(()=>{})}for(let W0 of U)W0.remove(p.id)},provider:{id:"openai",async models(I,p){if(p.auth?.type!=="oauth")return I.models;let d=await R0(H0(J0())),g=!d||H$(d),W0=g?null:await l3();if(!g&&W0&&!sG)sG=!0,rG.debug("restoring OAuth model costs from models.dev catalog");if(!g&&!W0&&!aG)aG=!0,rG.warn("models.dev catalog unavailable; OAuth model costs could not be restored");return Object.fromEntries(Object.entries(I.models).filter(([,q0])=>q0.options.reasoningMode!=="pro"&&RB(q0.api.id)).map(([q0,a0])=>[q0,{...a0,cost:g?{input:0,output:0,cache:{read:0,write:0}}:W0?.[a0.api.id]??W0?.[q0]??a0.cost,limit:CB(a0.id)??a0.limit}]))}},auth:{provider:"openai",async loader(I){await j.authority(),x0=I,o??=S3({version:v1,logger:B0("heartbeat")}),await o,X0?.start();let p=await I();if(p.type!=="oauth")return h.resolve(),{};let d=r4(p).kind==="tombstone";x.start();let g=Y.directory?await _$(Y.directory):void 0,W0=g?.dir??J0();async function q0(H,L={}){if(await j.authority()!=="local")return;return mB(H,{...L,canWrite:()=>!j.enrolled()})}let a0=await j.authority()!=="local";if(!d&&!a0)await V$({type:"oauth",access:p.access??"",refresh:p.refresh??"",expires:p.expires??0},H0(J0()));let w0=await R0(H0(J0())).catch(async(H)=>{if(await j.authority()!=="local")return null;let L=J0();throw Error(`OpenAI auth store at ${L} is corrupt or unreadable: ${H instanceof Error?H.message:String(H)}. Fix or remove it to continue.`,{cause:H})});if(!a0&&await y8(H0(J0()),p)){if(X0)X0.noticePlaceholderWithoutMain();else if(!O)O=!0,B0("pool-migration").warn(P6,{reason:"placeholder-without-main"})}let t0=w0,f6=Y3({path:J0,stat:(H)=>{try{let L=EB(H);return{mtimeMs:L.mtimeMs,size:L.size}}catch{return}},read:(H)=>R0(H0(H)),fallback:async(H)=>{if(await j.authority()!=="local")return t0;throw H},onRead:(H)=>{t0=H}});function _0(){return f6.read()}async function j1(){return $8(Promise.resolve(_0()),G8,()=>t0)}function Z6(){f6.invalidate()}if(w0&&p.access&&!d&&!a0){let H=s1({id_token:"",access_token:p.access,refresh_token:p.refresh??""});if(H&&H!==w0.mainAccountId)await q0((L)=>{L.mainAccountId=H}),w0.mainAccountId=H,Z6()}let c8=w0?.logging?.level;if(c8&&typeof c8==="string")t9(c8);let m6=B0("transport"),Y1=B0("quota"),I9=B0("refresh"),$1=B0("accounts");m6.info("codex auth loader ready",{codexApiEndpoint:X,transport:i0().rawWebSocket?"raw-websocket":i0().webSockets?"websocket":"http"});let Y0=new U$({storage:w0,configPath:J0(),fetchQuotaFn:void 0}),c6,u6=0;r?.dispose();let E0=new IY({paths:()=>H0(J0()),refreshProvider:async(H)=>{let L=await C9({refreshToken:H.refresh,fetchImpl:fetch,now:Date.now}),F=s1({id_token:"",access_token:L.access,refresh_token:L.refresh});return{...L,...F?{identity:F}:{}}},pullQuota:async(H)=>{let L=H.credential;if(L.type!=="oauth"||!L.access)throw Error("the row holds no access token to poll with");let F=await a6({accessToken:L.access,fetchImpl:fetch,now:Date.now,...H.identity?{accountId:H.identity}:{},accountKey:H.id,logger:Y1}),R=Date.now(),q={quota:F,refreshAfter:R+300000,checkedAt:R};if(H.id==="main")Y0.setMain(L.access,q,H.identity,!0);else Y0.setFallback(H.id,q,L.access,!0,H.identity);return M6(F,R,!0)},vaultIdentities:()=>j.identities(),vaultMode:()=>j.enrolled(),vaultAuthority:()=>j.authority(),vaultFirstRoster:S,vaultFirstRosterBackgroundWaitMs:y,log:B0("pool")});if(r=E0,!a0)await E0.load();let e0=new B$({paths:H0(J0()),refreshFn:async(H)=>{if(await j.authority()!=="local")throw Error(Q6["vault-refused"]);return C9({refreshToken:H.refreshToken,fetchImpl:H.fetchImpl,now:H.now})},quotaManager:Y0,canWrite:()=>!j.enrolled(),onFallbackStorageChanged:Z6,backgroundRefreshPaused:async()=>j.enrolled()||await E0.active()});if(w0&&w0.accounts.length>0)e0.startBackgroundRefresh();function u8(H){if(m0(H))return;return H.access||void 0}function b9(H={}){let{readSidebarState:L,respectBackoff:F,skipFresherThanMs:R}=H;return{getAuth:I,codexRefreshFn:C9,refreshMainWithLease:UJ,fallbackManager:e0,quotaManager:Y0,loadAccounts:R0,writeSidebarState:(q)=>W1(q),client:Y.client,fetchImpl:fetch,now:Date.now,paths:H0(J0()),readSidebarState:L??(()=>E$(u0)),storageMainAccountId:w0?.mainAccountId,isOAuthAccountFn:o0,whamFn:a6,...F===void 0?{}:{respectBackoff:F},...R===void 0?{}:{skipFresherThanMs:R}}}async function e4(H){return(await E0.pollRows(await R0(H0(J0())),H?{ids:H}:{})).map((F)=>({account:F.id,ok:F.ok,...F.error!==void 0?{error:F.error}:{}}))}async function YJ(H){return E0.accessFor(H,await R0(H0(J0())))}let JJ=B0("cachekeep"),k9=e9(w0),XJ=k9?.enabled===!0,QJ=k9?.subagents===!0,GJ=k9?.sustain===!0,$J=sX(w0?{...w0,cachekeep:k9}:w0),x9;async function y$(H){await new Promise((L)=>setTimeout(L,H))}async function g$(H){let L;for(let F=1;F<=oG;F++){if(await j.authority()!=="local")throw Error(Q6["vault-refused"]);try{await Y.client.auth.set({path:{id:"openai"},body:{type:"oauth",refresh:H.refresh,access:H.access,expires:H.expires}});return}catch(R){if(L=R,F<oG)await y$(xB*F)}}throw new t4(L)}async function v9(H){await q0((L)=>{L.refresh=L.refresh??{},H(L)},{holdsMainRefreshLock:!0}),Z6()}async function p8(H){let L=Date.now()+kB;while(Date.now()<L){await new Promise((q)=>setTimeout(q,nG+cB(nG)));let F=await I();if(n0(F))throw new r1;if(F.type!=="oauth"||!F.access)continue;if((F.access!==H.access||F.refresh!==H.refresh||(F.expires??0)>(H.expires??0)+60000)&&(!F.expires||F.expires>Date.now()))return I9.debug("joined concurrent main refresh",{pid:process.pid,expiresInMs:F.expires?F.expires-Date.now():void 0}),{access:F.access,refresh:F.refresh??H.refresh??"",expires:F.expires??0}}return null}function WJ(H){if(n0(H))throw new r1;if(H.type!=="oauth")throw Error("not oauth");if(m0(H))throw new z$;if(!H.refresh)throw Error("Token refresh failed: missing refresh token");return H.refresh}async function l8(){if(!x9)x9=(async()=>{let H=await I(),L=WJ(H);if(H.type!=="oauth")throw Error("not oauth");let F=z9(L),R=await R0(H0(J0())),q=R?.refresh?.mainLastRefreshError;if(q&&E1(q,L,Date.now()))throw Error(n4(q,Date.now()));if(R?.refresh?.mainRefreshLeaseUntil&&R.refresh.mainRefreshLeaseUntil>Date.now()&&R.refresh.mainRefreshLeaseTokenHash===F){let f=await p8(H);if(f)return f;throw Error("Codex OAuth refresh is already in progress")}let b=await Y8({name:s6,ttlMs:IB,path:J0(),renew:!0});if(!b){let f=await p8(H);if(f)return f;throw Error("Codex OAuth refresh is already in progress")}let M;try{let f=await I(),e=WJ(f);if(f.type!=="oauth")throw Error("not oauth");if(e!==L){if(f.access&&(f.expires??0)>Date.now())return I9.debug("main token rotated while awaiting the lock",{pid:process.pid}),await b.release().catch(()=>{}),{access:f.access,refresh:e,expires:f.expires??0};let v0=(await R0(H0(J0())))?.refresh?.mainLastRefreshError;if(v0&&E1(v0,e,Date.now()))throw Error(n4(v0,Date.now()))}M={...f,refresh:e}}catch(f){throw await b.release().catch(()=>{}),f}await D$(H0(J0()),M.refresh,M.access!==void 0?{slotAccess:M.access}:{}).catch(()=>!1);let C=z9(M.refresh),m=crypto.randomUUID(),a=C;try{await v9((z0)=>{if(O$(J0(),M.refresh))throw new o4;z0.refresh=z0.refresh??{},z0.refresh.mainRefreshLeaseId=m,z0.refresh.mainRefreshLeaseUntil=Date.now()+bB,z0.refresh.mainRefreshLeaseTokenHash=C});let f=await R0(H0(J0()));if(f?.refresh?.mainRefreshLeaseId!==m||f.refresh.mainRefreshLeaseTokenHash!==C)throw Error("Codex OAuth refresh is already in progress");if(await j.authority()!=="local")throw Error(Q6["vault-refused"]);let e=await C9({refreshToken:M.refresh,fetchImpl:fetch,now:Date.now});return await g$(e),await v9((z0)=>{if(z0.refresh=z0.refresh??{},z0.refresh.mainLastRefreshError=void 0,z0.refresh.mainRefreshLeaseId===m)z0.refresh.mainRefreshLeaseId=void 0,z0.refresh.mainRefreshLeaseUntil=void 0,z0.refresh.mainRefreshLeaseTokenHash=void 0}).catch(()=>{}),a=void 0,e}catch(f){if(!(f instanceof o4)){if(!d4(f))await v9((e)=>{e.refresh=e.refresh??{},e.refresh.mainLastRefreshError=$$({error:f,now:Date.now(),refreshToken:M.refresh,previous:e.refresh.mainLastRefreshError})}).catch(()=>{});throw f}}finally{if(a)await v9((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 p8(M);if(c)return c;throw Error("Codex OAuth refresh is already in progress")})().finally(()=>{x9=void 0});return x9}function zJ(H){return SJ({storage:H,now:Date.now,refreshAccount:(L,F)=>e0.refreshAccount(L,F,{asPoolMain:!0}),warn:(L,F)=>I9.warn(L,{pid:process.pid,...F})})}async function KJ(){let H=await zJ(await R0(H0(J0())));if(!H)throw Error("The main OpenAI account has no usable token in the account pool");return{access:H.token,refresh:H.account.refresh,expires:H.account.expires??0}}async function UJ(){try{return await l8()}catch(H){if(H instanceof r1)return KJ();throw H}}let HJ=globalThis,d8=HJ.__openaiAuthCacheKeepManagers??new Map;HJ.__openaiAuthCacheKeepManagers=d8,d8.get(W0)?.stop();let p6=eX({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 L=await YJ("main");if(!L)throw Error("main pool row has no usable token");return L.token}let H=await I();if(await j.authority()!=="local")throw Error("local accounts are not warmed while this host is connected to the vault");if(n0(H))return(await KJ()).access;if(H.type!=="oauth")throw Error("not oauth");if(!H.access||(H.expires??0)<Date.now())try{return(await UJ()).access}catch(L){if(d4(L))throw L;if(H.access)return H.access;throw Error("main token refresh failed")}return H.access},refreshFallback:async(H)=>{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 M=await YJ(H);if(!M)throw Error(`no access token for ${H}`);return{token:M.token}}let L=await j1(),F=L?lB(L.accounts,H):void 0;if(!F)throw Error(`fallback account ${H} not found`);let R=L??{version:1,accounts:[F]},q=m0(F)?F:await e0.refreshAccount(F,R),b=u8(q);if(!b)throw Error(`no access token for ${H}`);return{token:b}},codexResponsesUrl:X,activeAccount:async(H)=>tX(U6(await d1.read(),_),H),logger:JJ,now:Date.now,getWindow:()=>$J,getSustain:()=>GJ});d8.set(W0,p6),D.set(W0,p6);function V6(H,L,F,R,q=!1){try{f$(H,L,F,R,q)}catch(b){Y1.warn("quota push failed",{pid:process.pid,accountId:F??"main",error:h6(b)})}}function f$(H,L,F,R,q){if(Object.keys(H).length===0&&!q)return;let b=Date.now(),M=H,C={quota:M,refreshAfter:b+300000,checkedAt:b},m;if(F&&F!=="main"){let c=L?B1(L):null,f=c?L1(c):void 0,e=Y0.peekFallbackForPolicy(F)?.quota,z0=Y$(M,e);C={...C,quota:z0},Y0.setFallback(F,C,L,q,f)}else{if(m=R,!m&&L){let e=B1(L);m=e?L1(e):void 0}if(m&&c6&&m!==c6){Y1.debug("stale main quota frame dropped",{pid:process.pid,frameAccountId:m,currentMainIdentity:c6});return}let c=Y0.peekMainForPolicy(m)?.quota,f=Y$(M,c);C={...C,quota:f},Y0.setMain(L,C,m,q)}Y1.debug("quota pushed",{pid:process.pid,accountId:F??"main",snapshot:C.quota}),E0.recordSnapshot(F&&F!=="main"?F:"main",H,L,q);let a=Boolean(F&&F!=="main");F1.enqueue("machine-state","quota",()=>W1(Y0,a?void 0:m))}function m$(H,L,F){let R=A1(j.routes().find((q)=>q.id===H)?.quota)??(H==="main"?Y0.peekMainForPolicy()?.quota:Y0.peekFallbackForPolicy(H)?.quota);return K$(R,L,Date.now(),vB,F)}let h9=new Map,l6=new Map;function ZJ(){if(!j.enrolled())return;F1.enqueue("machine-state","quota",()=>W1(Y0))}let B6=J.experimentalWebSockets?b1.createWebSocketFetch({httpFetch:fetch,rawWebSocket:i0().rawWebSocket,onQuota:(H,L,F,R)=>{let q=F?h9.get(F):void 0;if(q){j.recordSnapshot(q.id,H,!0,q.receipt).then(ZJ);return}V6(H,L,F,!F||F==="main"?R:void 0,!0)},onRateLimitReached:(H,L,F)=>{if(!L)Y1.warn("mid-stream rate-limit mark missing internal account id; defaulting to main",{pid:process.pid,window:H});let R=L?h9.get(L):void 0,q=R?.id??L??"main",b=m$(q,H,F);if(Y0.markRateLimited(q,b),R)l6.set(q,Math.max(l6.get(q)??0,b));else E0.markRateLimited(q,b);Y1.debug("mid-stream rate limit mark",{pid:process.pid,accountId:q,window:H})}}):void 0;if(B6)U.push(B6),W=!0;let u0=q$();E=u0;async function W1(H,L){let F=_0(),R=F instanceof Promise?await F.catch(()=>t0):F,q=L??R?.mainAccountId;if(j.enrolled()){await g8(M3(j.snapshot()?.rows??[],new Set(j.routes().map((M)=>M.id)),R,Date.now()),u0,{canWrite:()=>j.enrolled()});return}let b=await E0.current();if(b.active){await g8(A3(b.rows,R,Date.now(),(M)=>(M==="main"?H.getMain():H.getFallback(M))?.quota?.resetCreditsAvailable),u0,{canWrite:()=>!j.enrolled()});return}if(!R)return;await g8(h$(H,R,Date.now(),q),u0,{canWrite:()=>!j.enrolled()})}let d1=b$(u0);d1.read(),w?.stop();let F1=x$({logger:m6,onWritten:()=>d1.refreshInBackground()});if(w=F1,T!==u0)_.clear(),T=u0;function i8(H,L,F,R,q,b,M=!1){let C={canWrite:()=>j.enrolled()===M},m={activeId:F,route:R,updatedAt:Date.now()};if(!H){F1.enqueue("routing:legacy","routing",()=>R$(m,u0,C));return}if(F1.enqueue(`routing:${H}`,"routing",()=>f8({sessionId:H,...m},q,u0,C)),!L||L===H)return;if(R==="sticky-balanced"){let a=b.stickyAssignments?.[V1(L)]?.accountId,c=q===void 0||a==="main"||q.some((f)=>f.enabled!==!1&&f.id===a);if(!a||!c)return;F1.enqueue(`routing:${L}`,"routing",()=>f8({sessionId:L,activeId:a,route:R,updatedAt:Date.now()},q,u0,C));return}F1.enqueue(`routing:${L}`,"routing",()=>f8({sessionId:L,...m},q,u0,C))}V?.stopBackgroundRefresh(),V=e0;let d6=H0(J0());if(Z=v$={accountStoragePath:d6.configPath,accountStatePath:d6.statePath,packageVersion:v1,quotaManager:Y0,loadAccounts:R0,beginAccountLogin:i9,store:()=>D6(d6),migration:async()=>{if(await c9(d6,D6(d6))!==void 0)return{migrated:!0};let H=await(u.fence??(()=>q6({currentVersion:v1})))();return{migrated:!1,blockers:H.open?[]:H.blockers.map((L)=>({pid:L.pid,version:L.version}))}},afterWrite:()=>E0.load(),vault:j,resolveResetTarget:gB({getAuth:I,refreshMainWithLease:l8,refreshFallbackAccount:(H,L)=>e0.refreshAccount(H,L),refreshPoolMainRow:(H,L)=>e0.refreshAccount(H,L,{asPoolMain:!0}),poolAccess:async(H)=>E0.rowAccess(H,await R0(H0(J0()))),loadAccounts:R0,accountStoragePath:J0(),accountStatePath:F$(J0()),now:Date.now}),...fB(),cacheKeepManager:p6,setCacheKeepEnabled:(H)=>{XJ=H},setCacheKeepSubagents:(H)=>{QJ=H},setCacheKeepSustain:(H)=>{GJ=H},setCacheKeepWindow:(H)=>{$J=H},clearStickyRouting:async(H)=>{let L=V1(H),F=_.delete(L);return F1.cancel(`pin:${L}`),await I$(H,u0)||F},getStickyRouting:async(H)=>T$(U6(await d1.read(),_),H),refreshSidebar:async()=>{Z6(),await W1(Y0)},refreshAllQuota:async()=>{if(await j.authority(),j.enrolled()){let H=await j.pollStale(0);return await W1(Y0),H.map((L)=>({account:L.id,ok:L.ok,...L.error!==void 0?{error:L.error}:{}}))}if(await E0.active()){let[H,L]=await Promise.all([e4(),j.pollStale(0)]);return await W1(Y0),[...H,...L.map((F)=>({account:F.id,ok:F.ok,...F.error!==void 0?{error:F.error}:{}}))]}return C6(b9())},refreshResetTargetQuota:async(H)=>{if(await j.authority(),j.enrolled())return{account:H,ok:!1,error:"local accounts are not polled while this host is connected to the vault"};if(await E0.active()){let[F]=await e4([H]);return F??{account:H,ok:!1,error:"targeted quota refresh returned no result"}}return(await C6(b9({respectBackoff:!1}),{accountKey:H})).find((F)=>F.account===H)??{account:H,ok:!1,error:"targeted quota refresh returned no result"}}},g){let H=g;try{let L=await G$(s3,H.dir,()=>a3({dir:H.dir,secureDir:H.secureDir,sweepRoot:H.sweepRoot,drain:xX,apply:async(F)=>{let R=Q$(F);if(!R)throw Error("not an /openai apply request");return cX(Z,R)}}));N.set(H.dir,L)}catch{}}async function L6(H,L,F,R,q="main",b){if(!F.trim())throw m6.warn("refusing to send a request with no access token",{account:q,accountId:R}),Error(wB);if(!b&&await j.authority()!=="local")return Response.json({error:{message:Q6["vault-refused"]}},{status:400});let M=J$(H,L);if(M.delete("x-api-key"),M.delete("api-key"),M.set("authorization",`Bearer ${F}`),R)M.set("ChatGPT-Account-Id",R);M.set(b1.QUOTA_ACCOUNT_HEADER,q);let C=X$(M),m=C?pB(G,C,$):void 0,a=H instanceof URL?H:new URL(typeof H==="string"?H:H.url),c=a.pathname.includes("/v1/responses")||a.pathname.includes("/chat/completions")?new URL(X):a,e=RX({rewriteLite:oB,applyEffort:nB,init:{...L,headers:M},headers:M,metadata:m,installationID:Q,websocket:Boolean(B6&&a.pathname.endsWith("/responses")),responsesLite:J.responsesLite??!1,dumpSessionID:C}).init,z0=XJ,v0=new Headers(e?.headers),t=rX({enabled:z0,includeSubagents:QJ,headers:v0,body:e?.body});if(z0)JJ.trace("cachekeep headers",{pid:process.pid,hasParent:v0.has("x-parent-session-id"),sessionKey:t?.sessionKey,captured:Boolean(t),affinity:v0.get("x-session-affinity"),opencodeSession:v0.get("x-opencode-session"),sessionId:v0.get("session-id")});if(B6&&a.pathname.endsWith("/responses")){if(m6.debug("WS transport",{pid:process.pid,pathname:a.pathname,accountId:q}),t)p6.track({sessionKey:t.sessionKey,bodyText:t.bodyText,accountId:q,isSubagent:t.isSubagent,meta:{replayHeaders:t.replayHeaders,chatgptAccountId:R,routingSessionId:C}});if(!b)try{return await J6(await B6(c,e),F,"event-stream")}catch(M0){throw y1(M0,F)}let K0=`vault-stream:${qB()}`;h9.set(K0,{id:q,receipt:b});let z1=new Headers(e?.headers);z1.set(b1.QUOTA_ACCOUNT_HEADER,K0);let f0=()=>h9.delete(K0);try{let M0=await B6(c,{...e,headers:z1});if(!M0.body)return f0(),M0;let O1=M0.body.getReader();return await J6(new Response(new ReadableStream({async pull(D1){try{let P1=await O1.read();if(P1.done)f0(),D1.close();else D1.enqueue(P1.value)}catch(P1){f0(),D1.error(y1(P1,F))}},cancel(D1){return f0(),O1.cancel(D1)}}),{status:M0.status,statusText:M0.statusText,headers:M0.headers}),F,"event-stream")}catch(M0){throw f0(),y1(M0,F)}}let L0=b1.withoutInternalHeaders(e);if(typeof L0?.body!=="string")try{return await J6(await fetch(c,L0),F,"event-stream")}catch(K0){throw y1(K0,F)}if(t)p6.track({sessionKey:t.sessionKey,bodyText:t.bodyText,accountId:q,isSubagent:t.isSubagent,meta:{replayHeaders:t.replayHeaders,chatgptAccountId:R,routingSessionId:C}});m6.debug("HTTP transport",{pid:process.pid,pathname:a.pathname,accountId:q});try{let K0=await fetch(c,L0);return await A6({sessionID:C,transport:"http",phase:"http",bodyText:L0.body,accountId:q,url:c.toString(),method:L0.method,headers:L0.headers,status:K0.status}),await J6(K0,F,"event-stream")}catch(K0){throw await A6({sessionID:C,transport:"http",phase:"http",bodyText:L0.body,accountId:q,url:c.toString(),method:L0.method,headers:L0.headers,error:K0 instanceof Error?K0.message:String(K0)}),y1(K0,F)}}function i6(H,L){if((L?.method??(H instanceof Request?H.method:"GET")).toUpperCase()!=="POST")return!1;if(typeof L?.body!=="string")return!1;try{let R=H instanceof URL?H.toString():typeof H==="string"?H:H.url;return new URL(R).pathname.endsWith("/responses")}catch{return!1}}function c$(H){return Y0.peekMainForPolicy(H)?.quota}function VJ(H,L){for(let F of[H?.primary?.checkedAt,H?.secondary?.checkedAt,H?.checkedAt,L])if(typeof F==="number"&&Number.isFinite(F))return F;return}function n6(H,L,F,R,q){let b=VJ(H,L),M=VJ(F),C=R===q&&F!=null&&(H===void 0||M!==void 0&&(b===void 0||M>b));return{quota:C?F:H,quotaCheckedAt:C?M:b,source:C?"file":"memory"}}function BJ(H,L,F,R,q){let b=H?.quota,M=n6(b,H?.checkedAt,L,R,q),C=M.source,m=M.quota;if(!A$(m,F))return{exhausted:!1};let a=M$(m,F);if(!a)return{exhausted:!1};return{exhausted:!0,source:C,...a}}function LJ(H,L){Y1.debug("admission skip: exhausted account",{accountId:H,source:L.source,resetsAt:L.resetsAt})}function NJ(H,L="killswitch",F,R){let q=Date.now(),b=R?R.main:Y0.getMain()?.quota,M=R?R.fallbacks:(H?.accounts??[]).filter((f)=>f.enabled!==!1&&o0(f)).map((f)=>({accountId:f.id,quota:Y0.getFallback(f.id)?.quota})),C=Z$(b,M,q,H);if(L==="quota-unknown")C=j$;else if(L==="quota-exhausted"&&F!==void 0)C=Math.max(1,Math.ceil((F-q)/1000));else if(L==="mid-stream-rate-limit"&&F!==void 0){let f=Math.max(1,Math.ceil((F-q)/1000));C=Math.min(C,f)}let m=Math.floor(C/60),a=C%60,c=L==="mid-stream-rate-limit"?`OpenAI rate limit reached — retrying on another account. Retry in ${m}m ${a}s.`:L==="quota-exhausted"?`OpenAI quota exhausted — retrying on another account. Retry in ${m}m ${a}s.`:L==="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(C)}})}function n8(H){let L=H?.resetCreditsAvailable;return typeof L==="number"&&Number.isFinite(L)?L:void 0}async function u$(H){let L=S9(H.storage),F=Date.now(),R=Y0.peekMainForPolicy(H.mainAccountIdentity),q=n6(R?.quota,R?.checkedAt,H.sidebarState.main.quota,H.sidebarState.main.mainAccountId,H.mainAccountIdentity),b=L?H6(R?.quota,H.storage,void 0,F):void 0,M=H.mainUnavailable?[]:[{accountId:"main",wireAccountId:H.mainAccountIdentity,access:H.primaryAccess,keepwarmAccountKey:"main",quota:q.quota,quotaCheckedAt:q.quotaCheckedAt,reservePercent:K9(H.storage),configuredOrder:0,resetCreditsApplicable:n8(q.quota),killswitchPasses:b}],C=await e0.getUsableFallbackAccounts(H.storage);if(!H.storage)return M;for(let m of C){let a=u8(m);if(!a)continue;let c=H.sidebarState.fallbacks.find((v0)=>v0.id===m.id),f=Y0.peekFallbackForPolicy(m.id,m.accountId),e=n6(f?.quota,f?.checkedAt,c?.quota,c?.accountId,m.accountId),z0=L?H6(f?.quota,H.storage,m.id,F):void 0;M.push({accountId:m.id,wireAccountId:m.accountId,access:a,keepwarmAccountKey:m.id,fallback:m,quota:e.quota,quotaCheckedAt:e.quotaCheckedAt,reservePercent:K9(H.storage,m.id),configuredOrder:M.length,resetCreditsApplicable:n8(e.quota),killswitchPasses:z0})}return M}function jJ(H,L,F,R,q){let b=S9(q)?H.killswitchPasses:void 0;if(H.accountId==="main"){let a=Y0.peekMainForPolicy(H.wireAccountId),c=n6(a?.quota,a?.checkedAt,L.main.quota,L.main.mainAccountId,H.wireAccountId);return pY({quota:c.quota,quotaCheckedAt:c.quotaCheckedAt,status:F,now:R,killswitchPasses:b})}let M=L.fallbacks.find((a)=>a.id===H.accountId),C=Y0.peekFallbackForPolicy(H.accountId,H.wireAccountId),m=n6(C?.quota,C?.checkedAt,M?.quota,M?.accountId,H.wireAccountId);return pY({quota:m.quota,quotaCheckedAt:m.quotaCheckedAt,status:F,now:R,killswitchPasses:b})}function p$(H){return H.accountId==="main"?"main":H.keepwarmAccountKey}function FJ(H){return Y0.isRateLimited(p$(H))}function o8(H){let L=H.candidates.filter((b)=>!FJ(b)),F=new Map(L.map((b)=>[b.accountId,b])),R=new Set(H.excludeAccountIds),q=OJ({sessionId:H.sessionId,requestBytes:H.requestBytes,sidebarSnapshot:H.sidebarSnapshot,now:H.now,validPinnedAccountIds:[...F.keys()],excludeAccountIds:H.excludeAccountIds??[],quotaCheckedAtByAccount:Object.fromEntries(L.map((b)=>[b.accountId,b.quotaCheckedAt])),wireAccountIdByAccount:Object.fromEntries(L.map((b)=>[b.accountId,b.wireAccountId])),select:(b)=>{let M=L.filter((C)=>!R.has(C.accountId));if(M.length===0)return;return m3({candidates:M,pendingBytes:b,requestBytes:H.requestBytes,now:H.now,onEmptyWeightedSet:()=>{$1.debug("sticky routing: no fresh weighted candidates; using configured order")}})},persist:!0});return q?F.get(q.accountId):void 0}function OJ(H){let L=void 0,F=H.validPinnedAccountIds,R=w$(U6(H.sidebarSnapshot,_),{sessionId:H.sessionId,requestBytes:H.requestBytes,now:H.now,validPinnedAccountIds:F,excludeAccountIds:H.excludeAccountIds,quotaCheckedAtByAccount:H.quotaCheckedAtByAccount,wireAccountIdByAccount:H.wireAccountIdByAccount,choose:(b)=>{let M=H.select(b);if(!M)return;return L={accountId:M.accountId,source:M.source,pendingBytes:b.get(M.accountId)??0},M}}),q=R.assignment;if(!H.persist)return q;if(L&&q?.accountId===L.accountId)$1.debug("sticky routing: placed session pin",{pid:process.pid,sessionHash:V1(H.sessionId),accountId:L.accountId,source:L.source,requestBytes:H.requestBytes,pendingBytes:L.pendingBytes});if(q&&R.next!==void 0){let b=V1(H.sessionId),M=k$(_,b,q);F1.enqueue(`pin:${b}`,"sticky-pin",async()=>{await S$({sessionId:H.sessionId,assignment:q,validPinnedAccountIds:F},u0),M.persistedAt=Date.now()})}return q}async function l$(H,L){let F=await e0.getUsableFallbackAccounts(H),R=[];if(!H)return{current:[],retained:[],skipped:[]};for(let c of F){let f=u8(c);if(!f)continue;R.push({access:f,accountId:c.accountId,keepwarmAccountKey:c.id,quotaAccountId:c.id,fallback:c})}let q=R.filter((c)=>!Y0.isRateLimited(c.quotaAccountId)),b=S9(H)?q.filter((c)=>H6(Y0.peekFallbackForPolicy(c.quotaAccountId,c.accountId)?.quota,H,c.quotaAccountId,Date.now())):q,M=new Map(L.fallbacks.map((c)=>[c.id,{quota:c.quota,accountId:c.accountId}])),C=[],m=[],a=Date.now();for(let c of b){let f=M.get(c.quotaAccountId),e=BJ(Y0.peekFallbackForPolicy(c.quotaAccountId,c.accountId),f?.quota,a,f?.accountId,c.accountId);if(e.exhausted)m.push({candidate:c,decision:e});else C.push(c)}return{current:b,retained:C,skipped:m}}function DJ(H,L){if(H.retained.length===0&&!L)return H.current;for(let{candidate:F,decision:R}of H.skipped)LJ(F.quotaAccountId,R);return H.retained}function PJ(H,L){try{let F=Y6(H.headers);V6(F,L.access,L.quotaAccountId,void 0,g6(H.headers))}catch{}}async function d$(H,L,F,R){for(let q of R){let b;try{b=await L6(H,L,q.access,q.accountId,q.keepwarmAccountKey)}catch(M){if((M instanceof Error||M instanceof DOMException)&&M.name==="AbortError")throw M;if(L?.signal?.aborted)throw M;throw $1.debug("fallback-first transport failed; request not replayed",{pid:process.pid,accountId:q.quotaAccountId}),M}if(!w9(b.status,F))return e0.markUsed(q.fallback),{response:b,accessToken:q.access,quotaAccountId:q.quotaAccountId,activeId:q.keepwarmAccountKey};PJ(b,q),b.body?.cancel().catch(()=>{})}return}async function i$(H,L,F,R,q){if(!i6(H,L))return{response:F};if(!q.length)return{response:F};let b=F,M;for(let C of q){let m;try{m=await L6(H,L,C.access,C.accountId,C.keepwarmAccountKey)}catch(a){if((a instanceof Error||a instanceof DOMException)&&a.name==="AbortError")throw a;if(L?.signal?.aborted)throw a;return $1.debug("reactive fallback candidate threw; stopping",{pid:process.pid,accountId:C.quotaAccountId}),{response:b,...M}}if(b.body?.cancel().catch(()=>{}),b=m,M={accessToken:C.access,accountId:C.quotaAccountId},!w9(m.status,R))return e0.markUsed(C.fallback),{response:m,...M};PJ(m,C)}return{response:b,...M}}if(w0){let H=[];for(let L of w0.accounts)if(o0(L))H.push(L);Y0.seedFallbacksFromAccounts(H)}if(!s4)if(s4=!0,W1(Y0).catch(()=>{}),S.then(()=>j.enrolled()?W1(Y0):void 0).catch(()=>{}),!j.enrolled()&&!await E0.active())m8=C6(b9({respectBackoff:!0})).catch((H)=>Y1.warn("boot quota seed failed",{pid:process.pid,error:h6(H)}));else m8=Promise.resolve();v.start(async()=>{if(await j.authority(),j.enrolled()){await W1(Y0);return}if(await E0.active()){let F=await iX(E0,await R0(H0(J0())),()=>PY(J0()));if(F.length>0)await W1(Y0);let R=F.filter((q)=>!q.ok);if(R.length>0)Y1.warn("background pool quota poll completed with failures",{pid:process.pid,failures:R});return}let L=(await lX(b9({readSidebarState:async()=>(await d1.read()).state}))).filter((F)=>!F.ok);if(L.length>0)Y1.warn("background quota refresh completed with failures",{pid:process.pid,failures:L})},(H)=>{Y1.warn("background quota refresh failed",{pid:process.pid,error:H instanceof Error?H.message:String(H)})});async function r8(H,L,F,R,q,b){let M=F?.routing?.mode??"main-first",C=j.enrolled(),m=C?void 0:E0.peek().rows.find((t)=>t.id==="main"),a=!m&&!C?await I():void 0,c=!m&&a?.type==="oauth"&&m0(a),f=!m&&!C&&await y8(H0(J0()),a);if(b===u6)c6=m?.identity;let e=await d1.get(),{response:z0,servedId:v0}=await E3({source:E0,...C?{vault:{routes:()=>j.routes(),awaitRoster:async()=>{await W9(j.awaitRequestRoster(),wY)},noRouteCause:()=>N$(j),send:(t,L0)=>j.send(t,L0,{site:"model",...L?.signal?{signal:L.signal}:{}}),requestReading:(t)=>j.requestReading(t),rateLimitMarks:()=>{for(let[t,L0]of l6)if(L0<=Date.now())l6.delete(t);return l6}}}:{},storage:F,mode:M,sessionId:R,body:typeof L?.body==="string"?L.body:void 0,replayable:i6(H,L),now:Date.now,send:(t,L0,K0)=>L6(H,L,L0,t.identity,t.id,K0),recordQuota:(t,L0,K0,z1)=>{try{let f0=Y6(t.headers),M0=g6(t.headers);if(!L0.row){if(z1)j.recordSnapshot(L0.id,f0,M0,z1).then(ZJ);return}V6(f0,K0,L0.id==="main"?void 0:L0.id,L0.id==="main"?L0.identity:void 0,M0)}catch{}},placePin:(t)=>OJ({...t,sidebarSnapshot:e}),blocked:(t,L0,K0)=>{if(t.reason==="no-credential"){if(f&&!gY(K0))throw Error(P6);return new Response(Q6[gY(K0)?K0:c?"missing-main":K0??"unusable"],{status:401,headers:{"content-type":"text/plain; charset=utf-8"}})}return NJ(F,t.reason,t.resetAtMs,L0)},resetCredits:(t)=>n8(t==="main"?Y0.peekMainForPolicy(m?.identity)?.quota:Y0.peekFallbackForPolicy(t)?.quota),isAbort:(t)=>(t instanceof Error||t instanceof DOMException)&&t.name==="AbortError"||Boolean(L?.signal?.aborted),log:$1});return i8(R,q,v0,M,C?j.routes().map((t)=>({id:t.id})):F?.accounts,U6(e,_),C),z0}return K=!0,{apiKey:SB,async fetch(H,L){let F=await j.authority(),R=J$(H,L),q=X$(R),b=R.get("x-parent-session-id")?.trim()||void 0,M=await j1();if(F!=="local")return L=await i4(H,L),r8(H,L,M,q,b,++u6);let C=await I();if(await j.authority()!=="local")return L=await i4(H,L),r8(H,L,M,q,b,++u6);let m=++u6;if(C.type!=="oauth")return R.delete(X9),fetch(H,{...L,headers:R});L=await i4(H,L);let a=(await E0.current()).active;if(n0(C)&&a)return r8(H,L,M,q,b,m);if(a)j.assertHostSlot(C);let c="",f=!1,e,z0=n0(C);if(X0?.migrated()&&!z0&&C.refresh?.trim()&&r4(C).kind==="real")X0.noticeRealSlot(C.refresh);let v0=async(N0=M)=>{if(z0=!0,e=await zJ(N0),e)c=e.token;else c="",f=!0,$1.warn("main account in the pool has no usable token",{pid:process.pid})};if(z0)await v0();else if(m0(C))f=!0;else{if(!C.access||(C.expires??0)<Date.now()){I9.debug("token refresh triggered",{pid:process.pid,hasAccess:Boolean(C.access),expiresInMs:C.expires?C.expires-Date.now():void 0});try{let N0=await l8();C.access=N0.access,C.refresh=N0.refresh,C.expires=N0.expires}catch(N0){if(d4(N0))throw N0;if(N0 instanceof r1)await v0(await R0(H0(J0())))}}if(!z0)c=C.access??""}let t=z0?WY(M):M,L0=C,K0=e?.account.accountId??(z0?void 0:L0.accountId)??(c?L1(B1(c)??{}):void 0);if(m===u6)c6=K0;let z1=M?.routing?.mode??"main-first",f0=await d1.get(),M0=f0.state;if(z1==="sticky-balanced"&&q&&i6(H,L)&&typeof L?.body==="string"){let N0=Buffer.byteLength(L.body,"utf8"),b0=await u$({storage:t,sidebarState:M0,primaryAccess:c,mainAccountIdentity:K0,mainUnavailable:f}),S0=o8({sessionId:q,requestBytes:N0,candidates:b0,sidebarSnapshot:f0,now:Date.now()});if(S0){let TJ=FJ(S0)?{action:"migrate",reason:"exhausted"}:jJ(S0,M0,void 0,Date.now(),M);if(TJ.action==="migrate"){let d0=o8({sessionId:q,requestBytes:N0,candidates:b0,sidebarSnapshot:f0,excludeAccountIds:[S0.accountId],now:Date.now()});if(d0)$1.debug("sticky routing: migrated session pin",{pid:process.pid,sessionHash:V1(q),fromAccountId:S0.accountId,toAccountId:d0.accountId,reason:TJ.reason}),S0=d0}let K1=await L6(H,L,S0.access,S0.wireAccountId,S0.keepwarmAccountKey),RJ=(d0,i1)=>{try{let n$=Y6(d0.headers);V6(n$,i1.access,i1.accountId==="main"?void 0:i1.accountId,i1.accountId==="main"?i1.wireAccountId:void 0,g6(d0.headers))}catch{}};RJ(K1,S0);let CJ=jJ(S0,M0,K1.status,Date.now(),M);if((K1.status===401||K1.status===403||K1.status===429)&&CJ.action==="migrate"){let d0=o8({sessionId:q,requestBytes:N0,candidates:b0,sidebarSnapshot:f0,excludeAccountIds:[S0.accountId],now:Date.now()});if(d0){$1.debug("sticky routing: migrated session pin",{pid:process.pid,sessionHash:V1(q),fromAccountId:S0.accountId,toAccountId:d0.accountId,reason:CJ.reason});let i1=K1;K1=await L6(H,L,d0.access,d0.wireAccountId,d0.keepwarmAccountKey),i1.body?.cancel().catch(()=>{}),S0=d0,RJ(K1,S0)}}if(S0.fallback&&!w9(K1.status,M))e0.markUsed(S0.fallback);return i8(q,b,S0.accountId,z1,M?.accounts,U6(f0,_)),K1}}let O1=BJ(Y0.peekMainForPolicy(K0),M0.main.quota,Date.now(),M0.main.mainAccountId,K0),D1=S9(M)&&!H6(c$(K0),M,void 0,Date.now()),P1=Y0.isRateLimited("main"),_J,s8=()=>{return _J??=l$(t,M0),_J},_1,N6,qJ=!1,y9;if(z1==="fallback-first"&&i6(H,L)){qJ=!0;let N0=await s8();y9=DJ(N0,!D1&&!P1&&!O1.exhausted);let b0=await d$(H,L,M,y9);if(b0)_1=b0.response,N6={accessToken:b0.accessToken,accountId:b0.quotaAccountId,activeId:b0.activeId}}if(!_1){let N0=O1.exhausted&&i6(H,L)&&(await s8()).retained.length>0;if(D1||P1||N0){let b0=D1?"killswitch":P1?"mid-stream-rate-limit":"quota-exhausted";if(b0==="quota-exhausted"&&O1.exhausted)LJ("main",O1);$1.debug("admission blocked primary",{pid:process.pid,activeId:"main",reason:b0}),_1=NJ(M,b0,b0==="quota-exhausted"&&O1.exhausted?O1.resetAtMs:P1?Y0.rateLimitedUntil("main"):void 0)}else _1=f?new Response(null,{status:401}):await L6(H,L,c,K0,"main")}let a8=Boolean(N6),o6=_1,EJ=N6?.accessToken??c,MJ=N6?.accountId,AJ=N6?.activeId??"main";if(!N6&&!qJ&&w9(_1.status,M)){$1.debug("reactive fallback triggered",{pid:process.pid,status:_1.status}),y9??=DJ(await s8(),!1);let N0=await i$(H,L,_1,M,y9),b0=N0.response;if(b0!==_1){if(a8=!0,o6=b0,EJ=N0.accessToken??c,MJ=N0.accountId,N0.accountId)AJ=N0.accountId}}if(z0&&f&&!a8&&await y8(H0(J0()),await I()))throw Error(P6);try{let N0=Y6(o6.headers);if(a8)V6(N0,EJ,MJ,void 0,g6(o6.headers));else V6(N0,c,void 0,K0,g6(o6.headers))}catch{}return i8(q,b,AJ,z1,M?.accounts,U6(f0,_)),o6}}},methods:P0},"chat.headers":async(I,p)=>{if(I.model.providerID!=="openai")return;if(p.headers.originator="opencode",p.headers["User-Agent"]=`${W$(v1)} (${p4.platform()} ${p4.release()}; ${p4.arch()})`,p.headers["session-id"]=I.sessionID,K)p.headers[X9]=I.agent;if(W&&I.agent==="title")p.headers[b1.TITLE_HEADER]="true"},"chat.params":async(I,p)=>{if(I.model.providerID!=="openai")return;p.maxOutputTokens=void 0},config:async(I)=>{B0("commands").info("registering commands",{existing:Object.keys(I.command??{}).length,pid:process.pid}),I.command={...I.command??{},[k1]:{template:k1,description:"OpenAI accounts: quota, routing, limits, cache keep-warm, diagnostics and reset credits."}}},"command.execute.before":async(I)=>{if(B0("commands").info("command hook entered",{command:I.command,hasCmdCtx:Z!==null,pid:process.pid}),I.command!==k1)return;if(!Z)B0("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."),tG();let p=await mX(Z,I.sessionID);if(vX(I.sessionID))s9(p,I.sessionID);else await l(I.sessionID,uX(p.menu));tG()}}}var sB=async(Y)=>{let J=i0();return rB(Y,{codexApiEndpoint:J.codexApiEndpoint,experimentalWebSockets:J.webSockets,responsesLite:J.responsesLite})},_q={id:"cortexkit-openai-auth",server:sB};
65
- export{GY as d,J0 as e,i0 as f,$Y as g,P6 as h,q6 as i,v1 as j,A6 as k,M1 as l,AX as m,r9 as n,TX as o,RX as p,Wz as q,CX as r,zz as s,s9 as t,xX as u,vX as v,mX as w,cX as x,wY as y,SY as z,W9 as A,IY as B,Z3 as C,pz as D,M3 as E,A3 as F,S3 as G,x3 as H,s3 as I,a3 as J,R9 as K,SG as L,AB as M,TB as N,RB as O,CB as P,wB as Q,jq as R,IB as S,bB as T,Fq as U,Oq as V,t4 as W,g0 as X,yB as Y,gB as Z,fB as _,Dq as $,uB as aa,lB as ba,Y$ as ca,h$ as da,Pq as ea,X$ as fa,dB as ga,oB as ha,rB as ia,sB as ja,_q as ka};