@cortexkit/opencode-anthropic-auth 1.12.0 → 1.12.2

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.
@@ -1 +1 @@
1
- import{createHash as z}from"node:crypto";import{homedir as F,tmpdir as O}from"node:os";import{join as q,resolve as G}from"node:path";var J="OPENCODE_ANTHROPIC_AUTH_RPC_DIR";function T(g){let k=process.env[J]?.trim();if(k)return G(g,k);let w=z("sha256").update(g).digest("hex").slice(0,16),x=process.env.XDG_STATE_HOME||q(F(),".local","state");return q(x,"cortexkit","anthropic-auth","rpc",w)}export{O as Kb,T as Lb};
1
+ import{createHash as z}from"node:crypto";import{homedir as F,tmpdir as O}from"node:os";import{join as q,resolve as G}from"node:path";var J="OPENCODE_ANTHROPIC_AUTH_RPC_DIR";function T(g){let k=process.env[J]?.trim();if(k)return G(g,k);let w=z("sha256").update(g).digest("hex").slice(0,16),x=process.env.XDG_STATE_HOME||q(F(),".local","state");return q(x,"cortexkit","anthropic-auth","rpc",w)}export{O as Mb,T as Nb};
@@ -1,2 +1,2 @@
1
1
  import{mkdir as N,readFile as h,writeFile as C}from"node:fs/promises";import{tmpdir as b}from"node:os";import{dirname as L,join as q}from"node:path";var M="OPENCODE_ANTHROPIC_AUTH_SIDEBAR_STATE_FILE",f=q(b(),"opencode-anthropic-auth"),k=q(f,"sidebar-state.json");function B(){return process.env[M]||k}var $={main:{quota:null},fallbacks:[],activeId:void 0,route:"main",relay:null,fastMode:!1,lastUpdated:0};function Y(J){return J!==null&&typeof J==="object"&&!Array.isArray(J)}function R(J){if(!Y(J))return{...$};let Q={quota:null};if(Y(J.main)){let x=J.main;if(Q.quota=Y(x.quota)?x.quota:null,typeof x.quotaBackedOff==="boolean")Q.quotaBackedOff=x.quotaBackedOff;if(typeof x.quotaBackoffUntil==="number")Q.quotaBackoffUntil=x.quotaBackoffUntil;if(typeof x.refreshBackedOff==="boolean")Q.refreshBackedOff=x.refreshBackedOff;if(typeof x.refreshBackoffUntil==="number")Q.refreshBackoffUntil=x.refreshBackoffUntil}let W=Array.isArray(J.fallbacks)?J.fallbacks.filter(Y).filter((x)=>typeof x.id==="string").map((x)=>({id:x.id,label:typeof x.label==="string"?x.label:void 0,quota:Y(x.quota)?x.quota:null,enabled:typeof x.enabled==="boolean"?x.enabled:!1,needsReauth:typeof x.needsReauth==="boolean"?x.needsReauth:!1})):[],X=null;if(Y(J.relay)){let x=J.relay;if(typeof x.enabled==="boolean"&&typeof x.transport==="string")X={enabled:x.enabled,transport:x.transport}}let Z;if(Y(J.cacheKeep)){let x=J.cacheKeep;if(typeof x.enabled==="boolean")Z={enabled:x.enabled,window:typeof x.window==="string"?x.window:void 0,trackedSessions:typeof x.trackedSessions==="number"?x.trackedSessions:void 0}}return{main:Q,fallbacks:W,activeId:typeof J.activeId==="string"?J.activeId:void 0,route:typeof J.route==="string"?J.route:$.route,relay:X,fastMode:typeof J.fastMode==="boolean"?J.fastMode:$.fastMode,cacheKeep:Z,lastUpdated:typeof J.lastUpdated==="number"?J.lastUpdated:0}}var z=Promise.resolve();async function P(){try{let J=await h(B(),"utf8");return R(JSON.parse(J))}catch{return $}}async function S(J,Q=B()){return z=z.then(async()=>{await N(L(Q),{recursive:!0}),await C(Q,JSON.stringify(J),"utf8")}).catch(()=>{}),z}async function _(){return z}function T(J){let Q=J.activeId;if(Q&&Q!=="main"){let W=J.fallbacks?.find((X)=>X.enabled&&X.id===Q);if(W)return{id:W.id,name:W.label??W.id,quota:W.quota}}return{id:"main",name:"main",quota:J.main?.quota??null}}function u(J){let Q=J?.five_hour?.usedPercent??null,W=J?.seven_day?.usedPercent??null;if(Q==null&&W==null)return{fiveHourUsedPercent:Q,sevenDayUsedPercent:W,text:null};return{fiveHourUsedPercent:Q,sevenDayUsedPercent:W,text:`5h: ${Q==null?"—":`${Math.round(Q)}%`} 7d: ${W==null?"—":`${Math.round(W)}%`}`}}var E=18000000,m=604800000,p=300000,I=0.01,U=1;function y(J,Q,W){if(!J.resetsAt)return null;let X=new Date(J.resetsAt).getTime();if(!Number.isFinite(X))return null;let Z=X-Q,x=W-Z;if(x<p)return null;if(x<Q*I)return null;if(x>=Q)return null;let V=J.usedPercent,G=Math.min(Math.max(x/Q*100,0),100),j=V-G,H=Math.abs(j)<U?"on-pace":j>0?"deficit":"reserve",K=null;if(V>0){let O=x*100/V,g=Z+O;if(g<X)K=new Date(g).toISOString()}return{pacePercent:G,deltaPercent:j,state:H,runsOutAt:K}}
2
- export{B as xb,$ as yb,R as zb,P as Ab,S as Bb,_ as Cb,T as Db,u as Eb,E as Fb,m as Gb,y as Hb};
2
+ export{B as zb,$ as Ab,R as Bb,P as Cb,S as Db,_ as Eb,T as Fb,u as Gb,E as Hb,m as Ib,y as Jb};
@@ -1,2 +1,2 @@
1
1
  import{mkdir as l,readdir as u,readFile as c,rename as p,unlink as m,writeFile as d}from"node:fs/promises";import{join as a}from"node:path";function f(t){try{return process.kill(t,0),!0}catch(r){return r.code==="EPERM"}}async function b(t,r){await l(t,{recursive:!0});let s={...r,startedAt:Date.now()},e=a(t,`port-${r.pid}.json`),i=`${e}.${process.pid}.tmp`;return await d(i,JSON.stringify(s),{encoding:"utf8",mode:384}),await p(i,e),e}async function h(t,r){let s;try{s=await u(t)}catch{return null}let e=[];for(let n of s){if(!n.startsWith("port-")||!n.endsWith(".json"))continue;try{let o=JSON.parse(await c(a(t,n),"utf8"));if(Number.isFinite(o.port))if(f(o.pid))e.push(o);else m(a(t,n)).catch(()=>{})}catch{}}if(e.length===0)return null;let i=r&&r>=1?e.filter((n)=>n.pid===r):[];return(i.length>0?i:e).sort((n,o)=>o.startedAt-n.startedAt)[0]??null}
2
- export{b as Ib,h as Jb};
2
+ export{b as Kb,h as Lb};
@@ -1,2 +1,2 @@
1
1
  import{createRequire as q}from"node:module";var j=Object.create;var{getPrototypeOf:k,defineProperty:i,getOwnPropertyNames:l}=Object;var m=Object.prototype.hasOwnProperty;function n(a){return this[a]}var o,p,r=(a,b,d)=>{var f=a!=null&&typeof a==="object";if(f){var g=b?o??=new WeakMap:p??=new WeakMap,h=g.get(a);if(h)return h}d=a!=null?j(k(a)):{};let c=b||!a||!a.__esModule?i(d,"default",{value:a,enumerable:!0}):d;for(let e of l(a))if(!m.call(c,e))i(c,e,{get:n.bind(a,e),enumerable:!0});if(f)g.set(a,c);return c};var s=(a,b)=>()=>(b||a((b={exports:{}}).exports,b),b.exports);var u=q(import.meta.url);
2
- export{r as Mb,s as Nb,u as Ob};
2
+ export{r as Ob,s as Pb,u as Qb};
@@ -1,4 +1,4 @@
1
1
  import*as j from"node:fs";import*as P from"node:os";import*as V from"node:path";var U={error:0,warn:1,info:2,debug:3,trace:4},O=new Set(Object.keys(U));function F(q){if(!q)return null;let Q=q.trim().toLowerCase();return O.has(Q)?Q:null}var S=F(process.env.OPENCODE_ANTHROPIC_AUTH_LOG_LEVEL),M=S??"info";function L(q){M=q}function i(){return M}function X(q){return U[q]<=U[M]}var J=process.env.OPENCODE_ANTHROPIC_AUTH_LOG_FILE??V.join(P.tmpdir(),"opencode-anthropic-auth.log");function h(){return J}var R=5242880,N=3;function I(){try{if(!j.existsSync(J))return;if(j.statSync(J).size<R)return}catch{return}try{for(let q=N;q>=1;q--){let Q=q===1?J:`${J}.${q-1}`,W=`${J}.${q}`;try{if(q===N)try{j.unlinkSync(W)}catch{}if(j.existsSync(Q))j.renameSync(Q,W)}catch{}}}catch{}}var T=/^(authorization|x-api-key|cookie|set-cookie|refresh|access|token)$/i;function k(q){if(T.test(q))return!0;let Q=q.toLowerCase().replace(/[-_]/g,"");if(Q.includes("apikey"))return!0;if(Q.endsWith("secret")||Q.endsWith("password"))return!0;if(Q.endsWith("token")&&!Q.endsWith("tokens"))return!0;return!1}var f=[/Bearer\s+\S+/,/sk-[A-Za-z0-9-]+/,/eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+/];function _(q){if(typeof q!=="string")return!1;return f.some((Q)=>Q.test(q))}function G(q){if(q==null||Object.keys(q).length===0)return;let Q=new WeakSet;function W($){if($==null||typeof $!=="object"){if(_($))return"***REDACTED***";return $}if(Q.has($))return"[Circular]";Q.add($);try{if(Array.isArray($))return $.map(W);let x=$,B={};for(let[H,C]of Object.entries(x)){if(k(H)){B[H]="***REDACTED***";continue}B[H]=W(C)}return B}finally{Q.delete($)}}return W(q)}function g(q,Q,W,$){let x=new Date().toISOString(),B=q.toUpperCase().padEnd(5),H=Q?` [${Q}]`:"",C=(()=>{try{let w=G($),A=w?{...w,pid:process.pid}:{pid:process.pid};return` ${JSON.stringify(A)}`}catch{return` {"pid":${process.pid},"payload":"[unserializable]"}`}})();return`[${x}] ${B}${H} ${W}${C}`}var D=null;function E(q){D=q}function Y(q,Q,W,$){if(!X(q))return;if(D)try{D({level:q,channel:Q,message:W,payload:G($)})}catch{}if(Z)return;try{let x=`${g(q,Q,W,$)}
2
2
  `;if(K.push(x),K.length>=p)b();else r()}catch{}}var m={error(q,Q,W){Y("error",q,Q,W)},warn(q,Q,W){Y("warn",q,Q,W)},info(q,Q,W){Y("info",q,Q,W)},debug(q,Q,W){Y("debug",q,Q,W)},trace(q,Q,W){Y("trace",q,Q,W)}},Z=!1,c=500,p=50,K=[],z=null;function b(){if(z)clearTimeout(z),z=null;if(K.length===0)return;let q=K.join("");K=[];try{I(),j.appendFileSync(J,q)}catch{}}function r(){if(z)return;z=setTimeout(()=>{z=null,b()},c)}var y=/^\[([\w-]+)\]\s*/;function o(q,Q){if(!X("debug"))return;if(Z)return;try{let W="",$=q,x=q.match(y);if(x)W=x[1]??"",$=q.slice(x[0].length);let B;if(Q!=null){if(Q instanceof Error)B={error:`${Q.message}${Q.stack?`
3
3
  ${Q.stack}`:""}`};else if(typeof Q==="object")B=Q}Y("debug",W,$,B)}catch{}}function v(q,Q){if(!X("debug"))return;if(Z)return;try{let W;if(Q!=null){if(typeof Q==="object"&&!(Q instanceof Error))W=Q}Y("debug","relay",q,W)}catch{}}if(!Z)process.on("exit",b);
4
- export{F as kb,L as lb,i as mb,X as nb,h as ob,T as pb,k as qb,G as rb,g as sb,E as tb,m as ub,o as vb,v as wb};
4
+ export{F as mb,L as nb,i as ob,X as pb,h as qb,T as rb,k as sb,G as tb,g as ub,E as vb,m as wb,o as xb,v as yb};
package/dist/index.js CHANGED
@@ -1,17 +1,17 @@
1
- import{$ as B4,$a as i4,A as G4,Aa as I0,B as z1,Ba as S4,C as N4,Ca as o1,D as w1,Da as B1,E as V4,Ea as v4,F as X4,Fa as r1,G as Z4,Ga as s0,H as K4,Ha as t1,I as Y4,Ia as F1,J as b1,Ja as C1,K as Q1,Ka as A4,L as _4,La as s1,M as D4,Ma as a1,N as f0,Na as k4,O as g1,Oa as e1,P as I4,Pa as y4,Q as L1,Qa as WW,R as z4,Ra as bW,S as w4,Sa as a0,T as o0,Ta as h4,U as r0,Ua as b4,V as M1,Va as g4,W as Q4,Wa as m4,X as m1,Xa as gW,Y as L4,Ya as mW,Z as M4,Za as p4,_ as U4,_a as jW,a as xW,aa as p1,ab as d4,b as qW,ba as F4,bb as JW,c as m0,d as p0,da as C4,db as l4,e as RW,ea as i1,f as v0,fa as A0,fb as PW,g as eW,ga as k0,gb as H1,h as TW,ha as t0,hb as u4,i as EW,ia as H4,ib as n4,j as SW,ja as U1,jb as $W,k as W4,ka as vW,l as _1,la as AW,m as D1,ma as d1,n as N0,na as kW,o as l0,oa as yW,p as I1,pa as hW,q as J4,qa as l1,r as P4,ra as f4,s as Y0,sa as x4,t as T,ta as u1,ua as q4,v as u0,va as n1,w as $4,wa as R4,x as n0,xa as T4,y as c0,ya as c1,z as O4,za as E4}from"./index-c1phnbjn.js";import{lb as j4,ub as u,vb as p}from"./index-zfddfgk2.js";import{Bb as r4,xb as o4}from"./index-7f07xr7k.js";import{Ib as IW}from"./index-srn1rawx.js";import{Lb as c4}from"./index-vhcx8tx6.js";import"./index-7hq52c3b.js";import{randomUUID as h1}from"node:crypto";function S0(W){return typeof W==="object"&&W!==null}function $j(W){if(Array.isArray(W))return W;if(S0(W)&&Array.isArray(W.data))return W.data;return[]}function Oj(W){if(!S0(W)||!S0(W.info))return;return typeof W.info.role==="string"?W.info.role:void 0}function NW(W){if(!S0(W)||!S0(W.info))return null;let J=W.info,j=S0(J.model)?J.model:void 0,P=typeof J.agent==="string"?J.agent:void 0,O=typeof j?.providerID==="string"?j.providerID:typeof J.providerID==="string"?J.providerID:void 0,N=typeof j?.modelID==="string"?j.modelID:typeof J.modelID==="string"?J.modelID:void 0,D=typeof j?.variant==="string"?j.variant:typeof J.variant==="string"?J.variant:void 0;if(!P&&(!O||!N)&&!D)return null;let E={};if(P)E.agent=P;if(O&&N)E.model={providerID:O,modelID:N};if(D)E.variant=D;return E}function VW(W,J){return{agent:W.agent??J.agent,model:W.model??J.model,variant:W.variant??J.variant}}function XW(W){return Boolean(W.agent&&W.model&&W.variant)}async function ZW(W,J){if(!W||!J)return null;let j=W;if(typeof j.session?.messages!=="function")return null;let P=[];try{P=$j(await Promise.resolve(j.session.messages({path:{id:J},query:{limit:100}})))}catch{return null}if(P.length===0)return null;let O={};for(let N=P.length-1;N>=0;N--){if(Oj(P[N])!=="assistant")continue;let D=NW(P[N]);if(!D)continue;if(O=VW(O,D),XW(O))return O}for(let N=P.length-1;N>=0;N--){let D=NW(P[N]);if(!D)continue;if(O=VW(O,D),XW(O))return O}if(!O.agent&&!O.model&&!O.variant)return null;return O}var U0=[],Gj=1,T1=0,KW=new Map;function YW(W,J){if(U0.push({id:Gj++,type:"open-dialog",payload:W,sessionId:J}),U0.length>100)U0=U0.slice(U0.length-100)}function _W(W=0,J){let j=Date.now();if(T1=j,J!==void 0)KW.set(J,j);let P=(O)=>J===void 0||O.sessionId===void 0||O.sessionId===J;if(W>0)U0=U0.filter((O)=>{if(O.id>W)return!0;if(J===void 0)return!1;return O.sessionId!==J});return U0.filter((O)=>O.id>W&&P(O))}function DW(W){let J=Date.now();if(W!==void 0){let j=KW.get(W)??0;return j>0&&J-j<3000}return T1>0&&J-T1<3000}import{randomBytes as Nj,timingSafeEqual as Vj}from"node:crypto";import{unlink as Xj}from"node:fs/promises";import{createServer as Zj}from"node:http";import{join as Kj}from"node:path";function Yj(W){return new Promise((J,j)=>{let P=[],O=0;W.on("data",(N)=>{if(O+=N.length,O>1e6){W.destroy(),j(Error("body too large"));return}P.push(N)}),W.on("end",()=>J(Buffer.concat(P).toString("utf8"))),W.on("error",j)})}function _j(W,J){if(!W?.startsWith("Bearer "))return!1;let j=Buffer.from(W.slice(7)),P=Buffer.from(J);return j.length===P.length&&Vj(j,P)}async function zW(W){let J=Nj(32).toString("hex"),j=Zj((N,D)=>{P(N,D)});async function P(N,D){let E=(m,k)=>{D.writeHead(m,{"content-type":"application/json"}),D.end(JSON.stringify(k))};try{let m=N.url??"";if(N.method==="GET"&&m==="/health")return E(200,{ok:!0});if(N.method!=="POST"||!m.startsWith("/rpc/"))return E(404,{error:"not found"});if(!_j(N.headers.authorization,J))return E(401,{error:"unauthorized"});let k=m.slice(5),M=JSON.parse(await Yj(N)||"{}");if(k==="pending-notifications"){let y=W.drain(Number(M.lastReceivedId??0),typeof M.sessionId==="string"?M.sessionId:void 0);return E(200,{messages:y})}if(k==="apply"){let y=await W.apply(M);return E(200,y)}return E(404,{error:"unknown method"})}catch(m){if(!D.headersSent&&!D.writableEnded&&!D.destroyed)E(500,{error:m instanceof Error?m.message:String(m)})}}let O=await new Promise((N,D)=>{j.on("error",D),j.listen(0,"127.0.0.1",()=>{let E=j.address();if(E&&typeof E==="object")N(E.port);else D(Error("no port"))})});j.unref();try{await IW(W.dir,{port:O,token:J,pid:process.pid})}catch(N){throw await new Promise((D)=>j.close(()=>D())),N}return{port:O,token:J,async stop(){await new Promise((N)=>j.close(()=>N())),await Xj(Kj(W.dir,`port-${process.pid}.json`)).catch(()=>{})}}}function wW(W,J){let j=new Map,P=0,O=0,N=0,D=0,E=0,m=(y)=>{let s=performance.now(),P0=W(y);return E+=performance.now()-s,N++,P0};return{call:(y)=>{if(!J.enabled())return m(y);let s=j.get(y);if(s!==void 0)return O++,j.delete(y),j.set(y,s),s;let P0=m(y),z0=y.length+P0.length;if(z0>J.maxBytes)return P0;j.set(y,P0),P+=z0;while(P>J.maxBytes&&j.size>1){let n=j.keys().next().value,w0=j.get(n)??"";j.delete(n),P-=n.length+w0.length,D++}return P0},stats:()=>({hits:O,misses:N,evictions:D,entries:j.size,cacheBytes:P,computeMsTotal:E})}}function QW(W){return`${xW}${W.charAt(0).toUpperCase()}${W.slice(1)}`}function pW(W){if(W==="StructuredOutput")return W;return`${W.charAt(0).toLowerCase()}${W.slice(1)}`}var Dj=new Set(["callgraph","conflicts","delete","import","inspect","move","navigate","outline","refactor","safety","search","transform","zoom"]);function LW(W){let J=pW(W);if(J.startsWith("aft_"))return J;if(Dj.has(J))return`aft_${J}`;return null}function v1(W,J){let j=new Headers;if(W instanceof Request)W.headers.forEach((O,N)=>{j.set(N,O)});let P=J?.headers;if(P){if(P instanceof Headers)P.forEach((O,N)=>{j.set(N,O)});else if(Array.isArray(P))for(let O of P){let[N,D]=O;if(typeof D<"u")j.set(N,String(D))}else for(let[O,N]of Object.entries(P))if(typeof N<"u")j.set(O,String(N))}return j}function X1(W){return W.set("anthropic-beta",m0(W.get("anthropic-beta"),[qW])),W}function i0(W,J,j={}){return yW(W,J,j)}function Ij(W){if(W.tools&&Array.isArray(W.tools))W.tools=W.tools.map((J)=>({...J,name:J.name?QW(J.name):J.name}));if(W.messages&&Array.isArray(W.messages))W.messages=W.messages.map((J)=>{if(J.content&&Array.isArray(J.content))J.content=J.content.map((j)=>{if(j.type==="tool_use"&&j.name)return{...j,name:QW(j.name)};return j});return J});return JSON.stringify(hW(W))}function E1(W){return W.replace(/"name"\s*:\s*"(mcp_)?([^"]+)"/g,(J,j,P)=>{if(j)return`"name": "${LW(P)??pW(P)}"`;let O=LW(P);return O?`"name": "${O}"`:J})}function MW(W,J=!1){if(J)return{ready:E1(W),pending:""};let j=W.length,P='"name"',O=Math.max(0,W.length-P.length+1);for(let D=O;D<W.length;D++)if(P.startsWith(W.slice(D))){j=Math.min(j,D);break}let N=W.lastIndexOf(P);if(N!==-1){let D=W.slice(N);if(/^"name"\s*(?::\s*(?:"[^"]*)?)?$/.test(D))j=Math.min(j,N)}if(j<W.length)return{ready:E1(W.slice(0,j)),pending:W.slice(j)};return{ready:E1(W),pending:""}}function A1(){if(!process.env.ANTHROPIC_BASE_URL?.trim())return!1;let W=process.env.ANTHROPIC_INSECURE?.trim();return W==="1"||W==="true"}function iW(W){let J=W?.trim();if(!J)return null;try{let j=new URL(J);if(j.protocol!=="http:"&&j.protocol!=="https:"||j.username||j.password)return null;return j}catch{return null}}function zj(){return iW(process.env.ANTHROPIC_BASE_URL)}function k1(W,J={}){let j=null;try{if(typeof W==="string"||W instanceof URL)j=new URL(W.toString());else if(W instanceof Request)j=new URL(W.url)}catch{j=null}if(!j)return{input:W,url:null};let P=j.href,O=J.baseURL?iW(J.baseURL):zj();if(O){if(j.protocol=O.protocol,j.host=O.host,J.baseURL)j.pathname=`${O.pathname.replace(/\/$/,"")}${j.pathname}`}if(j.pathname.endsWith("/v1/messages")&&!j.searchParams.has("beta"))j.searchParams.set("beta","true");if(j.href===P)return{input:W,url:j};return{input:W instanceof Request?new Request(j.toString(),W):j,url:j}}function wj(W){let P=W.split(/\n\n+/).filter((O)=>{if(O.includes(RW))return!1;for(let N of EW)if(O.includes(N))return!1;return!0}).join(`
1
+ import{$ as F_,$a as l_,A as $_,Aa as K0,B as zD,Ba as v_,C as X_,Ca as oD,D as wD,Da as UD,E as Y_,Ea as k_,F as Z_,Fa as rD,G as G_,Ga as s0,H as I_,Ha as tD,I as V_,Ia as BD,J as bD,Ja as FD,K as CD,Ka as y_,L as K_,La as sD,M as z_,Ma as aD,N as f0,Na as h_,O as gD,Oa as eD,P as w_,Pa as b_,Q as LD,Qa as DO,R as C_,Ra as bO,S as L_,Sa as a0,T as o0,Ta as g_,U as r0,Ua as m_,V as MD,Va as i_,W as M_,Wa as p_,X as mD,Xa as gO,Y as Q_,Ya as mO,Z as U_,Za as iO,_ as B_,_a as pO,a as xO,aa as iD,ab as OO,b as EO,ba as H_,bb as d_,c as m0,cb as n_,d as i0,da as f_,db as _O,e as RO,ea as pD,f as S0,fa as v0,fb as u_,g as O_,ga as k0,h as TO,ha as t0,hb as WO,i as qO,ia as x_,ib as HD,j as AO,ja as QD,jb as c_,k as __,ka as SO,kb as o_,l as ID,la as vO,lb as NO,m as VD,ma as lD,n as J0,na as kO,o as d0,oa as yO,p as KD,pa as hO,q as N_,qa as dD,r as j_,ra as E_,s as G0,sa as R_,t as T,ta as nD,ua as T_,v as n0,va as uD,w as P_,wa as q_,x as u0,xa as A_,y as c0,ya as cD,z as J_,za as S_}from"./index-67j80sm1.js";import{nb as W_,wb as n,xb as i}from"./index-z86v5q5a.js";import{Db as s_,zb as t_}from"./index-erkja50x.js";import{Kb as KO}from"./index-ggyzz0xr.js";import{Nb as r_}from"./index-9rxvhx0b.js";import"./index-ptdkq8gx.js";import{randomUUID as hD}from"node:crypto";function A0(D){return typeof D==="object"&&D!==null}function P1(D){if(Array.isArray(D))return D;if(A0(D)&&Array.isArray(D.data))return D.data;return[]}function J1(D){if(!A0(D)||!A0(D.info))return;return typeof D.info.role==="string"?D.info.role:void 0}function JO(D){if(!A0(D)||!A0(D.info))return null;let _=D.info,O=A0(_.model)?_.model:void 0,W=typeof _.agent==="string"?_.agent:void 0,j=typeof O?.providerID==="string"?O.providerID:typeof _.providerID==="string"?_.providerID:void 0,J=typeof O?.modelID==="string"?O.modelID:typeof _.modelID==="string"?_.modelID:void 0,V=typeof O?.variant==="string"?O.variant:typeof _.variant==="string"?_.variant:void 0;if(!W&&(!j||!J)&&!V)return null;let q={};if(W)q.agent=W;if(j&&J)q.model={providerID:j,modelID:J};if(V)q.variant=V;return q}function $O(D,_){return{agent:D.agent??_.agent,model:D.model??_.model,variant:D.variant??_.variant}}function XO(D){return Boolean(D.agent&&D.model&&D.variant)}async function YO(D,_){if(!D||!_)return null;let O=D;if(typeof O.session?.messages!=="function")return null;let W=[];try{W=P1(await Promise.resolve(O.session.messages({path:{id:_},query:{limit:100}})))}catch{return null}if(W.length===0)return null;let j={};for(let J=W.length-1;J>=0;J--){if(J1(W[J])!=="assistant")continue;let V=JO(W[J]);if(!V)continue;if(j=$O(j,V),XO(j))return j}for(let J=W.length-1;J>=0;J--){let V=JO(W[J]);if(!V)continue;if(j=$O(j,V),XO(j))return j}if(!j.agent&&!j.model&&!j.variant)return null;return j}var M0=[],$1=1,TD=0,ZO=new Map;function GO(D,_){if(M0.push({id:$1++,type:"open-dialog",payload:D,sessionId:_}),M0.length>100)M0=M0.slice(M0.length-100)}function IO(D=0,_){let O=Date.now();if(TD=O,_!==void 0)ZO.set(_,O);let W=(j)=>_===void 0||j.sessionId===void 0||j.sessionId===_;if(D>0)M0=M0.filter((j)=>{if(j.id>D)return!0;if(_===void 0)return!1;return j.sessionId!==_});return M0.filter((j)=>j.id>D&&W(j))}function VO(D){let _=Date.now();if(D!==void 0){let O=ZO.get(D)??0;return O>0&&_-O<3000}return TD>0&&_-TD<3000}import{randomBytes as X1,timingSafeEqual as Y1}from"node:crypto";import{unlink as Z1}from"node:fs/promises";import{createServer as G1}from"node:http";import{join as I1}from"node:path";function V1(D){return new Promise((_,O)=>{let W=[],j=0;D.on("data",(J)=>{if(j+=J.length,j>1e6){D.destroy(),O(Error("body too large"));return}W.push(J)}),D.on("end",()=>_(Buffer.concat(W).toString("utf8"))),D.on("error",O)})}function K1(D,_){if(!D?.startsWith("Bearer "))return!1;let O=Buffer.from(D.slice(7)),W=Buffer.from(_);return O.length===W.length&&Y1(O,W)}async function zO(D){let _=X1(32).toString("hex"),O=G1((J,V)=>{W(J,V)});async function W(J,V){let q=(m,k)=>{V.writeHead(m,{"content-type":"application/json"}),V.end(JSON.stringify(k))};try{let m=J.url??"";if(J.method==="GET"&&m==="/health")return q(200,{ok:!0});if(J.method!=="POST"||!m.startsWith("/rpc/"))return q(404,{error:"not found"});if(!K1(J.headers.authorization,_))return q(401,{error:"unauthorized"});let k=m.slice(5),L=JSON.parse(await V1(J)||"{}");if(k==="pending-notifications"){let y=D.drain(Number(L.lastReceivedId??0),typeof L.sessionId==="string"?L.sessionId:void 0);return q(200,{messages:y})}if(k==="apply"){let y=await D.apply(L);return q(200,y)}return q(404,{error:"unknown method"})}catch(m){if(!V.headersSent&&!V.writableEnded&&!V.destroyed)q(500,{error:m instanceof Error?m.message:String(m)})}}let j=await new Promise((J,V)=>{O.on("error",V),O.listen(0,"127.0.0.1",()=>{let q=O.address();if(q&&typeof q==="object")J(q.port);else V(Error("no port"))})});O.unref();try{await KO(D.dir,{port:j,token:_,pid:process.pid})}catch(J){throw await new Promise((V)=>O.close(()=>V())),J}return{port:j,token:_,async stop(){await new Promise((J)=>O.close(()=>J())),await Z1(I1(D.dir,`port-${process.pid}.json`)).catch(()=>{})}}}function wO(D,_){let O=new Map,W=0,j=0,J=0,V=0,q=0,m=(y)=>{let u=performance.now(),N0=D(y);return q+=performance.now()-u,J++,N0};return{call:(y)=>{if(!_.enabled())return m(y);let u=O.get(y);if(u!==void 0)return j++,O.delete(y),O.set(y,u),u;let N0=m(y),z0=y.length+N0.length;if(z0>_.maxBytes)return N0;O.set(y,N0),W+=z0;while(W>_.maxBytes&&O.size>1){let c=O.keys().next().value,C0=O.get(c)??"";O.delete(c),W-=c.length+C0.length,V++}return N0},stats:()=>({hits:j,misses:J,evictions:V,entries:O.size,cacheBytes:W,computeMsTotal:q})}}function CO(D){return`${xO}${D.charAt(0).toUpperCase()}${D.slice(1)}`}function lO(D){if(D==="StructuredOutput")return D;return`${D.charAt(0).toLowerCase()}${D.slice(1)}`}var z1=new Set(["callgraph","conflicts","delete","import","inspect","move","navigate","outline","refactor","safety","search","transform","zoom"]);function LO(D){let _=lO(D);if(_.startsWith("aft_"))return _;if(z1.has(_))return`aft_${_}`;return null}function SD(D,_){let O=new Headers;if(D instanceof Request)D.headers.forEach((j,J)=>{O.set(J,j)});let W=_?.headers;if(W){if(W instanceof Headers)W.forEach((j,J)=>{O.set(J,j)});else if(Array.isArray(W))for(let j of W){let[J,V]=j;if(typeof V<"u")O.set(J,String(V))}else for(let[j,J]of Object.entries(W))if(typeof J<"u")O.set(j,String(J))}return O}function XD(D){return D.set("anthropic-beta",m0(D.get("anthropic-beta"),[EO])),D}function p0(D,_,O={}){return yO(D,_,O)}function w1(D){if(D.tools&&Array.isArray(D.tools))D.tools=D.tools.map((_)=>({..._,name:_.name?CO(_.name):_.name}));if(D.messages&&Array.isArray(D.messages))D.messages=D.messages.map((_)=>{if(_.content&&Array.isArray(_.content))_.content=_.content.map((O)=>{if(O.type==="tool_use"&&O.name)return{...O,name:CO(O.name)};return O});return _});return JSON.stringify(hO(D))}function qD(D){return D.replace(/"name"\s*:\s*"(mcp_)?([^"]+)"/g,(_,O,W)=>{if(O)return`"name": "${LO(W)??lO(W)}"`;let j=LO(W);return j?`"name": "${j}"`:_})}function MO(D,_=!1){if(_)return{ready:qD(D),pending:""};let O=D.length,W='"name"',j=Math.max(0,D.length-W.length+1);for(let V=j;V<D.length;V++)if(W.startsWith(D.slice(V))){O=Math.min(O,V);break}let J=D.lastIndexOf(W);if(J!==-1){let V=D.slice(J);if(/^"name"\s*(?::\s*(?:"[^"]*)?)?$/.test(V))O=Math.min(O,J)}if(O<D.length)return{ready:qD(D.slice(0,O)),pending:D.slice(O)};return{ready:qD(D),pending:""}}function vD(){if(!process.env.ANTHROPIC_BASE_URL?.trim())return!1;let D=process.env.ANTHROPIC_INSECURE?.trim();return D==="1"||D==="true"}function dO(D){let _=D?.trim();if(!_)return null;try{let O=new URL(_);if(O.protocol!=="http:"&&O.protocol!=="https:"||O.username||O.password)return null;return O}catch{return null}}function C1(){return dO(process.env.ANTHROPIC_BASE_URL)}function kD(D,_={}){let O=null;try{if(typeof D==="string"||D instanceof URL)O=new URL(D.toString());else if(D instanceof Request)O=new URL(D.url)}catch{O=null}if(!O)return{input:D,url:null};let W=O.href,j=_.baseURL?dO(_.baseURL):C1();if(j){if(O.protocol=j.protocol,O.host=j.host,_.baseURL)O.pathname=`${j.pathname.replace(/\/$/,"")}${O.pathname}`}if(O.pathname.endsWith("/v1/messages")&&!O.searchParams.has("beta"))O.searchParams.set("beta","true");if(O.href===W)return{input:D,url:O};return{input:D instanceof Request?new Request(O.toString(),D):O,url:O}}function L1(D){let W=D.split(/\n\n+/).filter((j)=>{if(j.includes(RO))return!1;for(let J of qO)if(j.includes(J))return!1;return!0}).join(`
2
2
 
3
- `);for(let O of SW)P=P.replace(O.match,O.replacement);return P.trim()}var Qj=8388608;function Lj(){return process.env.OPENCODE_ANTHROPIC_AUTH_MEMO!=="0"}var Mj=wW(wj,{maxBytes:Qj,enabled:Lj});function O1(W){return Mj.call(W)}function l(W){return W!=null&&typeof W==="object"&&!Array.isArray(W)}function Uj(W){let J={type:"text",text:v0};if(W==null)return[J];if(typeof W==="string"){let P=O1(W);if(P===v0)return[J];return[J,{type:"text",text:P}]}if(l(W)){let P=typeof W.type==="string"?W.type:"text",O=typeof W.text==="string"?W.text:"";return[J,{...W,type:P,text:O1(O)}]}if(!Array.isArray(W))return[J];let j=W.map((P)=>{if(typeof P==="string")return{type:"text",text:O1(P)};if(l(P)&&P.type==="text"&&typeof P.text==="string")return{...P,type:"text",text:O1(P.text)};return{type:"text",text:String(P)}});if(j[0]?.text===v0)return j;return[J,...j]}var dW={type:"ephemeral",ttl:"1h"},Bj=20;function Fj(W){if(l(W.cache_control))return W.cache_control;if(l(W.cacheControl))return W.cacheControl;return null}function g0(W,J){if(!l(W))return!1;return delete W.cacheControl,W.cache_control=J?{...dW}:{type:"ephemeral"},!0}function UW(W){if(!l(W))return;delete W.cache_control,delete W.cacheControl}function Cj(W){if(Array.isArray(W))return W;if(typeof W==="string")return[{type:"text",text:W}];return null}function G1(W,J){if(!l(W))return;let j=Fj(W);if(j?.type!=="ephemeral")return;if(J)j.ttl="1h";else delete j.ttl}function BW(W,J){if(Array.isArray(W.system))for(let j of W.system)G1(j,J);else G1(W.system,J);if(!Array.isArray(W.messages))return;for(let j of W.messages)if(G1(j,J),l(j)&&Array.isArray(j.content))for(let P of j.content)G1(P,J)}function Hj(W,J){if(Array.isArray(W.system))for(let j of W.system)J(j);else J(W.system);if(!Array.isArray(W.messages))return;for(let j of W.messages)if(J(j),l(j)&&Array.isArray(j.content))for(let P of j.content)J(P)}function lW(W){UW(W),Hj(W,UW)}function fj(W){lW(W),W.cache_control={...dW}}function xj(W){return l(W)&&W.type!=="thinking"&&W.type!=="redacted_thinking"}function Z1(W){let J=Cj(W.content);if(!J?.length)return;let j=J.filter(xj);if(!j.length)return;return{content:J,cacheableBlocks:j}}function qj(W){if(!l(W))return!1;let J=Z1(W);if(!J)return!1;return W.content=J.content,g0(J.cacheableBlocks[0],!0)}function Rj(W){if(!l(W))return!1;let J=Z1(W);if(!J||J.cacheableBlocks.length<2)return!1;return W.content=J.content,g0(J.cacheableBlocks[1],!0)}function N1(W){if(!l(W))return!1;let J=Z1(W);if(!J)return!1;let j=J.cacheableBlocks[J.cacheableBlocks.length-1];return W.content=J.content,g0(j,!0)}function Tj(W){if(!l(W))return!1;return(Z1(W)?.cacheableBlocks.length??0)>1}function Ej(W){if(!l(W))return 0;let J=W.content;if(Array.isArray(J))return J.length;if(J==null)return 0;return 1}function Sj(W){let J=[],j=0;return W.forEach((P,O)=>{let N=Ej(P);if(l(P)&&P.role==="user"&&N>0)J.push({index:O,blockPosition:j+N-1});j+=N}),J}function vj(W){let J=Sj(W),j=[...J].reverse().find((D)=>D.index>1);if(!j)return{latest:void 0,bridge:void 0};let P=[...J].reverse().find((D)=>D.index<j.index),O=P?j.blockPosition-P.blockPosition+1:0,N=P&&P.index>1&&O>Bj?P:void 0;return{latest:j,bridge:N}}function S1(W){return l(W)&&typeof W.text==="string"?W.text:""}function Aj(W){if(!Array.isArray(W.system))return;let J=W.system,j=0;if(S1(J[j]).startsWith("x-anthropic-billing-header:"))j++;if(S1(J[j])===v0)j++;let P=j+1;if(P>=J.length-1)return;let O=J[P];if(!l(O))return;let N=J.slice(P).map(S1).join(`
4
- `);J.splice(P,J.length-P,{...O,type:"text",text:N})}function FW(W){if(Array.isArray(W.system)){let J=W.system.findIndex((O)=>l(O)&&O.text===v0),j=W.system.slice(J>=0?J+1:0).filter(l),P=j[j.length-1];g0(P,!0)}else g0(W.system,!0)}function kj(W){if(lW(W),Aj(W),!Array.isArray(W.messages)){FW(W);return}let{latest:J,bridge:j}=vj(W.messages);if(!j)FW(W);if(Tj(W.messages[0]))qj(W.messages[0]),Rj(W.messages[0]);else N1(W.messages[0]),N1(W.messages[1]);if(j)N1(W.messages[j.index]);if(J)N1(W.messages[J.index])}function yj(W){if(!Array.isArray(W.messages))return 0;let J=0;return W.messages=W.messages.filter((j)=>{if(!l(j)||!Array.isArray(j.content))return!0;if(j.role!=="assistant")return!0;let P=j.content.filter((O)=>{if(!l(O)||O.type!=="thinking")return!0;if(!mW(O.signature))return!0;return J+=1,!1});if(P.length===j.content.length)return!0;return j.content=P,P.length>0}),J}function hj(W){if(!gW(W.model))return null;let J=Object.hasOwn(W,"thinking");return W.thinking={...bW},{replacedExisting:J}}function bj(W,J){if(!J.enabled){BW(W,!1),delete W.cache_control,delete W.cacheControl;return}if(J.mode==="automatic"){fj(W);return}if(J.mode==="hybrid"){kj(W);return}BW(W,!0),delete W.cacheControl}function gj(W){if(!Array.isArray(W.messages))return;while(W.messages.length){let J=W.messages[W.messages.length-1];if(!l(J)||J.role!=="assistant")break;W.messages.pop()}}function h(){return performance.now()}function X0(W){return Math.round(W*10)/10}function CW(W){let J=0,j=0,P=0,O=Array.isArray(W.messages)?W.messages:[];J=O.length;for(let N of O){if(!N||typeof N!=="object")continue;let D=N.content;if(!Array.isArray(D))continue;j+=D.length;for(let E of D)if(E&&typeof E==="object"&&E.type==="tool_use")P++}return{messageCount:J,contentBlockCount:j,toolDefinitionCount:Array.isArray(W.tools)?W.tools.length:0,toolUseCount:P,systemBlockCount:Array.isArray(W.system)?W.system.length:0}}async function y1(W,J={}){try{let j=h(),P=JSON.parse(W);J.perf?.("parse",{ms:X0(h()-j),inputBytes:W.length,...CW(P)});let O=h(),N=Array.isArray(P.messages)?P.messages.length:void 0;gj(P);let D=Array.isArray(P.messages)?P.messages.length:void 0;J.perf?.("strip_trailing_assistant",{ms:X0(h()-O),removedMessages:typeof N==="number"&&typeof D==="number"?N-D:void 0});let E=h(),m=yj(P),k=hj(P);J.perf?.("model_normalize",{ms:X0(h()-E),model:typeof P.model==="string"?P.model:void 0,fableMythosThinkingDisplay:k?"summarized":void 0,replacedFableMythosThinking:k?.replacedExisting??!1,removedNonAnthropicThinking:m,hasOutputConfig:Object.hasOwn(P,"output_config")});let M=h(),y=Array.isArray(P.messages)&&P.messages.some((Z0)=>Z0.role==="user")?AW(P.messages,void 0,TW):null;J.perf?.("billing_header",{ms:X0(h()-M),hasBillingHeader:Boolean(y)});let s=h();if(P.system=Uj(P.system),J.perf?.("system_identity",{ms:X0(h()-s),systemBlockCount:Array.isArray(P.system)?P.system.length:0}),y&&Array.isArray(P.system))P.system.unshift({type:"text",text:y});let P0=h();if(bj(P,{enabled:J.cache1hEnabled??!1,mode:J.cache1hMode??"explicit"}),J.perf?.("cache_strategy",{ms:X0(h()-P0),enabled:J.cache1hEnabled??!1,mode:J.cache1hMode??"explicit"}),J.fastModeEnabled&&p0(P.model))P.speed="fast";else if(P.speed==="fast")delete P.speed;let z0=h();if(J.identity)kW(P,J.identity);J.perf?.("metadata",{ms:X0(h()-z0),hasAccountUuid:Boolean(J.identity?.accountUuid)});let n=h(),w0=Ij(P);J.perf?.("prefix_tools_stringify",{ms:X0(h()-n),outputBytesBeforeSign:w0.length,...CW(P)});let $0=h(),L0=await vW(w0);return J.perf?.("cch_sign",{ms:X0(h()-$0),outputBytes:L0.length}),L0}catch{return W}}var mj=new TextEncoder;function pj(){return{pending:"",events:0,parseErrors:0,eventCounts:{},typeCounts:{},deltaTypeCounts:{},contentBlockTypeCounts:{},textDeltaBytes:0,thinkingDeltaBytes:0,inputJsonDeltaBytes:0,signatureDeltaBytes:0,redactedThinkingBytes:0}}function V1(W,J){if(!J)return;W[J]=(W[J]??0)+1}function H0(W){return mj.encode(W).byteLength}function B0(W){return W&&typeof W==="object"&&!Array.isArray(W)?W:void 0}function O0(W,J){let j=W?.[J];return typeof j==="string"?j:void 0}function ij(W,J){let j=W?.[J];return typeof j==="number"?j:void 0}function dj(W){if(!W.trim())return null;let J,j=[];for(let y of W.split(/\r?\n/)){if(y.startsWith("event:")){J=y.slice(6).trim();continue}if(y.startsWith("data:")){let s=y.slice(5);j.push(s.startsWith(" ")?s.slice(1):s)}}let P=j.join(`
5
- `),O={event:J,rawBytes:H0(W),dataBytes:H0(P)};if(!P||P==="[DONE]")return O.type=P==="[DONE]"?"done":void 0,O.event??=O.type,O;let N;try{N=JSON.parse(P)}catch{return O}let D=B0(N),E=B0(D?.delta),m=B0(D?.content_block),k=B0(D?.message),M=B0(D?.usage)??B0(k?.usage);if(O.type=O0(D,"type"),O.event??=O.type,O.index=ij(D,"index"),O.contentBlockType=O0(m,"type"),O.deltaType=O0(E,"type"),O.stopReason=O0(D,"stop_reason"),O.deltaType==="text_delta")O.textDeltaBytes=H0(O0(E,"text")??"");if(O.deltaType==="thinking_delta")O.thinkingDeltaBytes=H0(O0(E,"thinking")??"");if(O.deltaType==="input_json_delta")O.inputJsonDeltaBytes=H0(O0(E,"partial_json")??"");if(O.deltaType==="signature_delta")O.signatureDeltaBytes=H0(O0(E,"signature")??"");if(O.contentBlockType==="redacted_thinking")O.redactedThinkingBytes=H0(O0(m,"data")??"");if(M)O.stopReason??=O0(k,"stop_reason");return O}function uW(W){let J=W.indexOf(`
3
+ `);for(let j of AO)W=W.replace(j.match,j.replacement);return W.trim()}var M1=8388608;function Q1(){return process.env.OPENCODE_ANTHROPIC_AUTH_MEMO!=="0"}var U1=wO(L1,{maxBytes:M1,enabled:Q1});function jD(D){return U1.call(D)}function l(D){return D!=null&&typeof D==="object"&&!Array.isArray(D)}function B1(D){let _={type:"text",text:S0};if(D==null)return[_];if(typeof D==="string"){let W=jD(D);if(W===S0)return[_];return[_,{type:"text",text:W}]}if(l(D)){let W=typeof D.type==="string"?D.type:"text",j=typeof D.text==="string"?D.text:"";return[_,{...D,type:W,text:jD(j)}]}if(!Array.isArray(D))return[_];let O=D.map((W)=>{if(typeof W==="string")return{type:"text",text:jD(W)};if(l(W)&&W.type==="text"&&typeof W.text==="string")return{...W,type:"text",text:jD(W.text)};return{type:"text",text:String(W)}});if(O[0]?.text===S0)return O;return[_,...O]}var nO={type:"ephemeral",ttl:"1h"},F1=20;function H1(D){if(l(D.cache_control))return D.cache_control;if(l(D.cacheControl))return D.cacheControl;return null}function g0(D,_){if(!l(D))return!1;return delete D.cacheControl,D.cache_control=_?{...nO}:{type:"ephemeral"},!0}function QO(D){if(!l(D))return;delete D.cache_control,delete D.cacheControl}function f1(D){if(Array.isArray(D))return D;if(typeof D==="string")return[{type:"text",text:D}];return null}function PD(D,_){if(!l(D))return;let O=H1(D);if(O?.type!=="ephemeral")return;if(_)O.ttl="1h";else delete O.ttl}function UO(D,_){if(Array.isArray(D.system))for(let O of D.system)PD(O,_);else PD(D.system,_);if(!Array.isArray(D.messages))return;for(let O of D.messages)if(PD(O,_),l(O)&&Array.isArray(O.content))for(let W of O.content)PD(W,_)}function x1(D,_){if(Array.isArray(D.system))for(let O of D.system)_(O);else _(D.system);if(!Array.isArray(D.messages))return;for(let O of D.messages)if(_(O),l(O)&&Array.isArray(O.content))for(let W of O.content)_(W)}function uO(D){QO(D),x1(D,QO)}function E1(D){uO(D),D.cache_control={...nO}}function R1(D){return l(D)&&D.type!=="thinking"&&D.type!=="redacted_thinking"}function YD(D){let _=f1(D.content);if(!_?.length)return;let O=_.filter(R1);if(!O.length)return;return{content:_,cacheableBlocks:O}}function T1(D){if(!l(D))return!1;let _=YD(D);if(!_)return!1;return D.content=_.content,g0(_.cacheableBlocks[0],!0)}function q1(D){if(!l(D))return!1;let _=YD(D);if(!_||_.cacheableBlocks.length<2)return!1;return D.content=_.content,g0(_.cacheableBlocks[1],!0)}function JD(D){if(!l(D))return!1;let _=YD(D);if(!_)return!1;let O=_.cacheableBlocks[_.cacheableBlocks.length-1];return D.content=_.content,g0(O,!0)}function A1(D){if(!l(D))return!1;return(YD(D)?.cacheableBlocks.length??0)>1}function S1(D){if(!l(D))return 0;let _=D.content;if(Array.isArray(_))return _.length;if(_==null)return 0;return 1}function v1(D){let _=[],O=0;return D.forEach((W,j)=>{let J=S1(W);if(l(W)&&W.role==="user"&&J>0)_.push({index:j,blockPosition:O+J-1});O+=J}),_}function k1(D){let _=v1(D),O=[..._].reverse().find((V)=>V.index>1);if(!O)return{latest:void 0,bridge:void 0};let W=[..._].reverse().find((V)=>V.index<O.index),j=W?O.blockPosition-W.blockPosition+1:0,J=W&&W.index>1&&j>F1?W:void 0;return{latest:O,bridge:J}}function AD(D){return l(D)&&typeof D.text==="string"?D.text:""}function y1(D){if(!Array.isArray(D.system))return;let _=D.system,O=0;if(AD(_[O]).startsWith("x-anthropic-billing-header:"))O++;if(AD(_[O])===S0)O++;let W=O+1;if(W>=_.length-1)return;let j=_[W];if(!l(j))return;let J=_.slice(W).map(AD).join(`
4
+ `);_.splice(W,_.length-W,{...j,type:"text",text:J})}function BO(D){if(Array.isArray(D.system)){let _=D.system.findIndex((j)=>l(j)&&j.text===S0),O=D.system.slice(_>=0?_+1:0).filter(l),W=O[O.length-1];g0(W,!0)}else g0(D.system,!0)}function h1(D){if(uO(D),y1(D),!Array.isArray(D.messages)){BO(D);return}let{latest:_,bridge:O}=k1(D.messages);if(!O)BO(D);if(A1(D.messages[0]))T1(D.messages[0]),q1(D.messages[0]);else JD(D.messages[0]),JD(D.messages[1]);if(O)JD(D.messages[O.index]);if(_)JD(D.messages[_.index])}function b1(D){if(!Array.isArray(D.messages))return 0;let _=0;return D.messages=D.messages.filter((O)=>{if(!l(O)||!Array.isArray(O.content))return!0;if(O.role!=="assistant")return!0;let W=O.content.filter((j)=>{if(!l(j)||j.type!=="thinking")return!0;if(!pO(j.signature))return!0;return _+=1,!1});if(W.length===O.content.length)return!0;return O.content=W,W.length>0}),_}function g1(D){if(!gO(D.model))return null;let _=Object.hasOwn(D,"thinking");return D.thinking={...bO},{replacedExisting:_}}function m1(D){if(!iO(D.model))return null;let _=Object.hasOwn(D,"thinking"),O=D.thinking;if(l(O)&&O.type==="disabled")return D.thinking={type:"disabled"},{replacedExisting:_,display:"disabled"};return D.thinking={...mO},{replacedExisting:_,display:"summarized"}}function i1(D,_){if(!_.enabled){UO(D,!1),delete D.cache_control,delete D.cacheControl;return}if(_.mode==="automatic"){E1(D);return}if(_.mode==="hybrid"){h1(D);return}UO(D,!0),delete D.cacheControl}function p1(D){if(!Array.isArray(D.messages))return;while(D.messages.length){let _=D.messages[D.messages.length-1];if(!l(_)||_.role!=="assistant")break;D.messages.pop()}}function h(){return performance.now()}function Y0(D){return Math.round(D*10)/10}function FO(D){let _=0,O=0,W=0,j=Array.isArray(D.messages)?D.messages:[];_=j.length;for(let J of j){if(!J||typeof J!=="object")continue;let V=J.content;if(!Array.isArray(V))continue;O+=V.length;for(let q of V)if(q&&typeof q==="object"&&q.type==="tool_use")W++}return{messageCount:_,contentBlockCount:O,toolDefinitionCount:Array.isArray(D.tools)?D.tools.length:0,toolUseCount:W,systemBlockCount:Array.isArray(D.system)?D.system.length:0}}async function yD(D,_={}){try{let O=h(),W=JSON.parse(D);_.perf?.("parse",{ms:Y0(h()-O),inputBytes:D.length,...FO(W)});let j=h(),J=Array.isArray(W.messages)?W.messages.length:void 0;p1(W);let V=Array.isArray(W.messages)?W.messages.length:void 0;_.perf?.("strip_trailing_assistant",{ms:Y0(h()-j),removedMessages:typeof J==="number"&&typeof V==="number"?J-V:void 0});let q=h(),m=b1(W),k=g1(W),L=m1(W);_.perf?.("model_normalize",{ms:Y0(h()-q),model:typeof W.model==="string"?W.model:void 0,fableMythosThinkingDisplay:k?"summarized":void 0,replacedFableMythosThinking:k?.replacedExisting??!1,sonnet5ThinkingDisplay:L?.display,replacedSonnet5Thinking:L?.replacedExisting??!1,removedNonAnthropicThinking:m,hasOutputConfig:Object.hasOwn(W,"output_config")});let y=h(),u=Array.isArray(W.messages)&&W.messages.some((a)=>a.role==="user")?vO(W.messages,void 0,TO):null;_.perf?.("billing_header",{ms:Y0(h()-y),hasBillingHeader:Boolean(u)});let N0=h();if(W.system=B1(W.system),_.perf?.("system_identity",{ms:Y0(h()-N0),systemBlockCount:Array.isArray(W.system)?W.system.length:0}),u&&Array.isArray(W.system))W.system.unshift({type:"text",text:u});let z0=h();if(i1(W,{enabled:_.cache1hEnabled??!1,mode:_.cache1hMode??"explicit"}),_.perf?.("cache_strategy",{ms:Y0(h()-z0),enabled:_.cache1hEnabled??!1,mode:_.cache1hMode??"explicit"}),_.fastModeEnabled&&i0(W.model))W.speed="fast";else if(W.speed==="fast")delete W.speed;let c=h();if(_.identity)kO(W,_.identity);_.perf?.("metadata",{ms:Y0(h()-c),hasAccountUuid:Boolean(_.identity?.accountUuid)});let C0=h(),O0=w1(W);_.perf?.("prefix_tools_stringify",{ms:Y0(h()-C0),outputBytesBeforeSign:O0.length,...FO(W)});let U0=h(),$0=await SO(O0);return _.perf?.("cch_sign",{ms:Y0(h()-U0),outputBytes:$0.length}),$0}catch{return D}}var l1=new TextEncoder;function d1(){return{pending:"",events:0,parseErrors:0,eventCounts:{},typeCounts:{},deltaTypeCounts:{},contentBlockTypeCounts:{},textDeltaBytes:0,thinkingDeltaBytes:0,inputJsonDeltaBytes:0,signatureDeltaBytes:0,redactedThinkingBytes:0}}function $D(D,_){if(!_)return;D[_]=(D[_]??0)+1}function H0(D){return l1.encode(D).byteLength}function Q0(D){return D&&typeof D==="object"&&!Array.isArray(D)?D:void 0}function j0(D,_){let O=D?.[_];return typeof O==="string"?O:void 0}function n1(D,_){let O=D?.[_];return typeof O==="number"?O:void 0}function u1(D){if(!D.trim())return null;let _,O=[];for(let y of D.split(/\r?\n/)){if(y.startsWith("event:")){_=y.slice(6).trim();continue}if(y.startsWith("data:")){let u=y.slice(5);O.push(u.startsWith(" ")?u.slice(1):u)}}let W=O.join(`
5
+ `),j={event:_,rawBytes:H0(D),dataBytes:H0(W)};if(!W||W==="[DONE]")return j.type=W==="[DONE]"?"done":void 0,j.event??=j.type,j;let J;try{J=JSON.parse(W)}catch{return j}let V=Q0(J),q=Q0(V?.delta),m=Q0(V?.content_block),k=Q0(V?.message),L=Q0(V?.usage)??Q0(k?.usage);if(j.type=j0(V,"type"),j.event??=j.type,j.index=n1(V,"index"),j.contentBlockType=j0(m,"type"),j.deltaType=j0(q,"type"),j.stopReason=j0(V,"stop_reason"),j.deltaType==="text_delta")j.textDeltaBytes=H0(j0(q,"text")??"");if(j.deltaType==="thinking_delta")j.thinkingDeltaBytes=H0(j0(q,"thinking")??"");if(j.deltaType==="input_json_delta")j.inputJsonDeltaBytes=H0(j0(q,"partial_json")??"");if(j.deltaType==="signature_delta")j.signatureDeltaBytes=H0(j0(q,"signature")??"");if(j.contentBlockType==="redacted_thinking")j.redactedThinkingBytes=H0(j0(m,"data")??"");if(L)j.stopReason??=j0(k,"stop_reason");return j}function cO(D){let _=D.indexOf(`
6
6
 
7
- `),j=W.indexOf(`\r
7
+ `),O=D.indexOf(`\r
8
8
  \r
9
- `);if(J===-1)return j===-1?null:{index:j,length:4};if(j===-1||J<j)return{index:J,length:2};return{index:j,length:4}}function HW(W,J){if(!J)return;W.pending+=J;while(!0){let j=uW(W.pending);if(!j)break;let P=W.pending.slice(0,j.index);W.pending=W.pending.slice(j.index+j.length);let O=dj(P);if(!O)continue;if(W.events++,V1(W.eventCounts,O.event??"unknown"),V1(W.typeCounts,O.type),V1(W.deltaTypeCounts,O.deltaType),V1(W.contentBlockTypeCounts,O.contentBlockType),W.textDeltaBytes+=O.textDeltaBytes??0,W.thinkingDeltaBytes+=O.thinkingDeltaBytes??0,W.inputJsonDeltaBytes+=O.inputJsonDeltaBytes??0,W.signatureDeltaBytes+=O.signatureDeltaBytes??0,W.redactedThinkingBytes+=O.redactedThinkingBytes??0,W.last=O,O.dataBytes>0&&!O.type&&!O.event)W.parseErrors++}}function lj(){return{pending:""}}function uj(W,J){let j=W?.toLowerCase(),P=J.toLowerCase();return j==="api_error"||j==="overloaded_error"||j==="server_error"||j==="internal_server_error"||P.includes("internal server error")||P.includes("server overloaded")}function nj(W,J){let j=W?`${W}: ${J}`:J,P=Error(`Anthropic stream error: ${j}`);if(P.code="ECONNRESET",P.syscall="anthropic-sse",W)P.providerErrorType=W;return P}function cj(W){if(!W.includes("error"))return null;let J,j=[];for(let k of W.split(/\r?\n/)){if(k.startsWith("event:")){J=k.slice(6).trim();continue}if(k.startsWith("data:")){let M=k.slice(5);j.push(M.startsWith(" ")?M.slice(1):M)}}let P=j.join(`
10
- `);if(!P||P==="[DONE]")return null;let O;try{O=JSON.parse(P)}catch{return null}let N=B0(O);if(J!=="error"&&O0(N,"type")!=="error")return null;let D=B0(N?.error),E=O0(D,"type")??O0(D,"code")??void 0,m=O0(D,"message")??O0(N,"message")??E??"Anthropic stream error";if(!uj(E,m))return null;return nj(E,m)}function fW(W,J){if(!J)return null;W.pending+=J;while(!0){let j=uW(W.pending);if(!j)break;let P=W.pending.slice(0,j.index);W.pending=W.pending.slice(j.index+j.length);let O=cj(P);if(O)return O}return null}function oj(W){return{sseEvents:W.events,ssePendingChars:W.pending.length,sseParseErrors:W.parseErrors,sseEventCounts:{...W.eventCounts},sseTypeCounts:{...W.typeCounts},sseDeltaTypeCounts:{...W.deltaTypeCounts},sseContentBlockTypeCounts:{...W.contentBlockTypeCounts},sseTextDeltaBytes:W.textDeltaBytes,sseThinkingDeltaBytes:W.thinkingDeltaBytes,sseInputJsonDeltaBytes:W.inputJsonDeltaBytes,sseSignatureDeltaBytes:W.signatureDeltaBytes,sseRedactedThinkingBytes:W.redactedThinkingBytes,sseLastEvent:W.last?{...W.last}:void 0}}function d0(W,J={}){if(!W.body)return W;let j=W.body.getReader(),P=new TextDecoder,O=new TextEncoder,N="",D=0,E=0,m=0,k=0,M=0,y=!1,s=!1,P0=h(),z0=h(),n=J.perf?pj():void 0,w0=lj(),$0=()=>{if(s)return;s=!0,j.releaseLock()},L0=(j0={})=>({chunks:D,pulls:E,inputBytes:m,outputBytes:k,pendingChars:N.length,rewriteMs:X0(M),totalMs:X0(h()-z0),...n?oj(n):{},...j0}),Z0=(j0,_0={})=>{J.perf?.(j0,L0(_0))};J.perf?.("stream_tool_prefix_wrapper_created",{status:W.status,hasBody:!0});let W0=new ReadableStream({async pull(j0){if(E++,!y)y=!0,Z0("stream_tool_prefix_first_pull");let _0=h();try{let{done:K0,value:x0}=await j.read(),y0=X0(h()-_0);if(K0){let M0=P.decode();if(n)HW(n,M0);let T0=fW(w0,M0);if(T0)throw Z0("stream_tool_prefix_retryable_error",{error:T0.message,providerErrorType:T0.providerErrorType}),$0(),T0;let q1=h(),j1=MW(`${N}${M0}`,!0);if(M+=h()-q1,j1.ready){let b0=O.encode(j1.ready);k+=b0.byteLength,j0.enqueue(b0)}Z0("stream_tool_prefix_rewrite",{readMs:y0}),$0(),j0.close();return}D++,m+=x0.byteLength;let q0=P.decode(x0,{stream:!0});if(n)HW(n,q0);let R0=fW(w0,q0);if(R0)throw Z0("stream_tool_prefix_retryable_error",{error:R0.message,providerErrorType:R0.providerErrorType,readMs:y0,lastChunkBytes:x0.byteLength}),$0(),R0;let e0=N+q0,x1=h(),h0=MW(e0);if(M+=h()-x1,N=h0.pending,h0.ready){let M0=O.encode(h0.ready);k+=M0.byteLength,j0.enqueue(M0)}let W1=h();if(D===1||D%25===0||W1-P0>5000)P0=W1,Z0("stream_tool_prefix_progress",{readMs:y0,lastChunkBytes:x0.byteLength})}catch(K0){throw Z0("stream_tool_prefix_error",{error:K0 instanceof Error?K0.message:String(K0)}),$0(),K0}},async cancel(j0){Z0("stream_tool_prefix_cancel",{reason:j0 instanceof Error?j0.message:String(j0)});try{await j.cancel(j0)}finally{$0()}}});return new Response(W0,{status:W.status,statusText:W.statusText,headers:W.headers})}var rj="__OPENCODE_ANTHROPIC_AUTH_COMMAND_HANDLED__",nW="~effect/http/HttpServerResponse",cW="~effect/http/Cookies",oW="~effect/http/HttpBody",tj="~effect/ErrorReporter/ignore",sj=60000,aj=60000,ej=5000,rW=200,t4=240,WJ=t4,jJ=1,tW=!1;function f1(){return process.env.OPENCODE_ANTHROPIC_AUTH_PERF==="1"}function f(){return performance.now()}function g(W){return Math.round(W*10)/10}function sW(W){return Math.floor(Math.random()*Math.max(0,W))}function K1(W){if(typeof W==="string")return W;if(W instanceof URL)return W.toString();return W.url}function Y1(W,J){return J?.method??(W instanceof Request?W.method:void 0)}function aW(W){return W instanceof Error?W.message:String(W)}function JJ(){if(tW||!1||!f1())return;tW=!0;let W=100,J=250,j=f()+W;setInterval(()=>{let P=f(),O=P-j;if(j=P+W,O<J)return;p("[perf] opencode event_loop_lag",{lagMs:g(O),thresholdMs:J})},W).unref?.()}function PJ(W){let J=f(),j={requestId:String(jJ++),start:J,last:J,mark(P,O){let N=f();if(f1())p("[perf] opencode request stage",{requestId:j.requestId,stage:P,deltaMs:g(N-j.last),totalMs:g(N-j.start),...O});j.last=N},done(P,O){let N=f();if(f1())p("[perf] opencode request done",{requestId:j.requestId,stage:P,deltaMs:g(N-j.last),totalMs:g(N-j.start),...O});j.last=N}};if(f1())p("[perf] opencode request start",{requestId:j.requestId,...W});return j}async function $J(W,J,j){let P=W.client.session,O=await ZW(W.client,J),N={path:{id:J},body:{noReply:!0,parts:[{type:"text",text:j,ignored:!0}]}};if(O?.agent)N.body.agent=O.agent;if(O?.model)N.body.model=O.model;if(O?.variant)N.body.variant=O.variant;if(typeof P?.promptAsync==="function"){await P.promptAsync(N);return}if(typeof P?.prompt==="function"){await Promise.resolve(P.prompt(N));return}throw Error("OpenCode session prompt API is unavailable for ignored replies.")}function OJ(){let W=Error(rj);throw W[nW]=nW,W[tj]=!0,W.status=204,W.statusText=void 0,W.headers={},W.cookies={[cW]:cW,cookies:{}},W.body={[oW]:oW,_tag:"Empty"},W}function GJ(W){if(W.sessionID==null)return!1;let J=W.model;return J?.providerID==="anthropic"||J?.api?.npm==="@ai-sdk/anthropic"||J?.api?.npm==="@ai-sdk/google-vertex/anthropic"}function NJ(W){if(W.some((J)=>J.includes("<use_parallel_tool_calls>")))return!1;return W.push(eW),!0}var VJ={input:0,output:0,cache:{read:0,write:0}};function XJ(W){let J=W["claude-opus-4-8"]??W["claude-opus-4-5"]??Object.values(W)[0];if(!J)return W;return{...W,...Object.fromEntries(Object.values(m4).map((j)=>[j.id,{...J,id:j.id,name:j.name,api:J.api?{...J.api,id:j.id}:void 0,cost:{input:a0.input,output:a0.output,cache:{read:a0.cacheRead,write:a0.cacheWrite5m}},limit:{...J.limit??{},context:h4,output:b4},capabilities:{...J.capabilities??{},reasoning:!0,attachment:!0,toolcall:!0},release_date:g4}]))}}function ZJ(W){return Object.fromEntries(Object.entries(W).map(([J,j])=>[J,{...j,cost:VJ}]))}var SJ=async(W)=>{JJ();let{client:J}=W,j=P4(),P=600000,O=50,N=new Map;function D(){let $=Date.now();for(let[G,X]of N)if($-X.createdAt>P)N.delete(G)}function E($,G){if(D(),N.size>=O){let X="",w=1/0;for(let[V,A]of N)if(A.createdAt<w)w=A.createdAt,X=V;if(X)N.delete(X)}N.set($,G)}function m($){D();let G=N.get($);if(!G)return;if(Date.now()-G.createdAt>P){N.delete($);return}return G}let k;try{k=await T(j)}catch($){let G=$ instanceof Error?$.message:String($);throw Error(`Failed to load account store: ${G}`,{cause:$ instanceof Error?$:void 0})}let M=new p4({storage:k,onMainQuotaFetched:async($,G,X,w)=>{try{let V=await T(j)??Y0(),A=w4(V);if(A&&A.checkedAt>=w&&F4(A.quota,V,A.checkedAt)>Date.now()){M.seedMainFromStorage(V);return}V.quota=V.quota??{},V.quota.mainQuota=$,V.quota.mainQuotaCheckedAt=G,V.quota.mainQuotaToken=X,V.quota.mainLastQuotaApiError=void 0,await u0(V,j,{mainQuota:!0})}catch(V){u.warn("quota","failed to persist main quota",{error:V instanceof Error?V.message:String(V)})}},onApiError:async($)=>{try{let G=await T(j)??Y0();G.quota=G.quota??{},G.quota.mainLastQuotaApiError=$,await u0(G,j,{mainQuota:!0})}catch(G){u.warn("quota","failed to persist backoff state",{error:G instanceof Error?G.message:String(G)})}}}),y=new C4({quotaManager:M,onFallbackStorageChanged:()=>{L0().catch(()=>{})}});y.startBackgroundRefresh();let s=null,P0=new T4({loadStorage:()=>T(j),prepareHeaders:async($,G)=>{if(!W0)return $;let X=await W0();if(X.type!=="oauth")return $;if(!X.access||X.expires&&X.expires<Date.now()){if(!s)return $;X.access=await s()}if(!X.access)return $;try{let w=JSON.parse(G.bodyText),V=await d1(X.access,typeof w.model==="string"?w.model:void 0);if($.delete("anthropic-beta"),i0($,X.access,{body:w,identity:V}),$.set("anthropic-beta",m0($.get("anthropic-beta"),[f4])),w.speed==="fast")X1($)}catch{i0($,X.access)}return $}});if(t0({enabled:n0(k),mode:c0(k)}),B1(z1(k)),C1(w1(k)),!process.env.OPENCODE_ANTHROPIC_AUTH_LOG_LEVEL)j4(L1(k)??"info");let z0=null;if(W.directory){let $=globalThis;if($.__anthropicAuthRpcServer)await $.__anthropicAuthRpcServer.stop().catch(()=>{}),$.__anthropicAuthRpcServer=void 0;try{z0=await zW({dir:c4(W.directory),drain:_W,apply:s4}),$.__anthropicAuthRpcServer=z0}catch(G){u.warn("rpc","failed to start",{error:G instanceof Error?G.message:String(G)})}}let n={activeId:"main",route:"main"},w0=o4();function $0($,G){n={activeId:G.activeId,route:G.route},M.updateStorage($),M.seedMainFromStorage($,G.mainAccessToken),M.seedFallbacksFromAccounts(($?.accounts??[]).filter(N0));let X=M.getMain(G.mainAccessToken),w=M.getLastApiError(),V=$?.refresh?.mainLastRefreshError,A={main:{quota:X?.quota??null,quotaBackedOff:M.isBackedOff(),quotaBackoffUntil:w?.nextRetryAt,refreshBackedOff:V?f0(V,G.mainRefreshToken,Date.now()):!1,refreshBackoffUntil:V?.nextRetryAt},fallbacks:($?.accounts??[]).filter((x)=>x.enabled!==!1&&N0(x)).map((x)=>({id:x.id,label:x.label,quota:x.access?M.getFallback(x.id,x.access)?.quota??null:null,needsReauth:x.lastRefreshError!=null&&f0(x.lastRefreshError,x.refresh,Date.now())&&D4(x.lastRefreshError),enabled:x.enabled!==!1})),activeId:G.activeId,route:G.route,relay:(()=>{let x=JW($);return x?{enabled:!0,transport:x.transport??"http"}:null})(),fastMode:F1(),cacheKeep:{enabled:n1($),window:$?.cacheKeep?.startHour!=null&&$?.cacheKeep?.endHour!=null?`${$.cacheKeep.startHour}-${$.cacheKeep.endHour}`:void 0,trackedSessions:P0.trackedCount()},lastUpdated:Date.now()};return r4(A,w0).catch((x)=>u.warn("sidebar","state write failed",{error:x instanceof Error?x.message:String(x)}))}async function L0(){let $=await T(j),G,X;if(W0)try{let w=await W0();G=w.access,X=w.refresh}catch{}$0($,{activeId:n.activeId,route:n.route,mainAccessToken:G,mainRefreshToken:X})}function Z0($,G){if(!G)return;if($?.quota?.enabled!==!0)return;if(M.getMain(G))return;if(j0)return;j0=!0,M.refreshMain(G).then(()=>L0()).catch(()=>{}).finally(()=>{j0=!1})}let W0=null,j0=!1,_0=null,K0=0;function x0($){let G=$?.refresh?.refreshBeforeExpiryMinutes??WJ;return Math.max(t4,G)*60000}function y0($){return $?.refresh?.enabled!==!1}async function q0($){if(!$)return;let G=await T(j),X=G?.refresh?.mainLastRefreshError;if(!G?.refresh||!X?.tokenHash)return;let w=Q1($);if(X.tokenHash===w)return;if(X.nextRetryAt&&X.nextRetryAt>Date.now()){p("[refresh] opencode main oauth keeping backoff despite token rotation",{nextRetryAt:X.nextRetryAt,retryCount:X.retryCount,remainingMs:X.nextRetryAt-Date.now()});return}G.refresh.mainLastRefreshError=void 0,await u0(G,j,{mainRefresh:!0}),p("[refresh] opencode main oauth cleared stale backoff after token rotation",{previousCheckedAt:X.checkedAt,previousNextRetryAt:X.nextRetryAt,previousRetryCount:X.retryCount})}async function R0(){let $=[];if(W0)try{let V=await W0();if(V.type==="oauth"&&V.access){let A=await M.refreshMain(V.access);$.push({name:"OpenCode anthropic",role:"main",quota:A})}else if(V.type==="oauth")$.push({name:"OpenCode anthropic",role:"main",error:"missing access token; send a request first or reconnect auth"})}catch(V){let A=V instanceof Error?V.message:String(V);$.push({name:"OpenCode anthropic",role:"main",error:A.includes("429")?"Usage API rate limited — try again in a moment":A})}let{storage:G,errors:X}=await y.refreshQuotaForAllAccounts({force:!0}),w=new Map(X.map((V)=>[V.accountId,V.message]));if($.push(...i4(G,w)),!W0)$.unshift({name:"OpenCode anthropic",role:"main",error:"auth loader has not run yet; send a request first"});return d4({accounts:$,refreshedAt:Date.now()})}async function e0($){if(W0)try{let G=await W0();$0($,{activeId:n.activeId,route:n.route,mainAccessToken:G.access,mainRefreshToken:G.refresh})}catch{}}async function x1($){let G=H4($);if(G.type==="enable"||G.type==="disable"){let A=G.type==="enable",x=await O4(A),B=c0(x);return t0({enabled:A,mode:B}),u.info("commands","cache enabled changed",{enabled:A}),U1({argumentsText:$,enabled:A,mode:B})}if(G.type==="mode"){let A=await G4(G.mode),x=n0(A);return t0({enabled:x,mode:G.mode}),u.info("commands","cache mode changed",{mode:G.mode}),U1({argumentsText:$,enabled:x,mode:G.mode})}let X=await T(j),w=n0(X),V=c0(X);return t0({enabled:w,mode:V}),U1({argumentsText:$,enabled:w,mode:V})}async function h0($){let G=x4($),X=await T(j);if(G.type==="window")X=await X4(G.startHour,G.endHour),u.info("commands","cachekeep enabled changed",{enabled:!0});else if(G.type==="disable")X=await Z4(!1),u.info("commands","cachekeep enabled changed",{enabled:!1});else if(G.type==="subagents")X=await Y4(G.enabled),u.info("commands","cachekeep subagents changed",{subagents:G.enabled});let w=u1(X),V=P0.stats(w);return R4({argumentsText:$,enabled:q4(X),window:w,hybridActive:n1(X),trackedSessions:V.trackedSessions,nextPrewarmAt:V.nextPrewarmAt})}async function W1($){let G=v4($);if(G.type==="enable"||G.type==="disable"){let V=G.type==="enable";return await N4(V),B1(V),u.info("commands","dump changed",{enabled:V}),r1({argumentsText:$,enabled:V})}let X=await T(j),w=z1(X);return B1(w),r1({argumentsText:$,enabled:w})}async function M0($){let G=A4($);if(G.type==="enable"||G.type==="disable"){let V=G.type==="enable";return await V4(V),C1(V),u.info("commands","fast mode changed",{enabled:V}),s1({argumentsText:$,enabled:V})}let X=await T(j),w=w1(X);return C1(w),s1({argumentsText:$,enabled:w})}async function T0($){let G=n4($);if(G.type==="mode")return await u4(G.mode),u.info("commands","routing mode changed",{mode:G.mode}),$W({argumentsText:$,mode:G.mode});let X=await T();return $W({argumentsText:$,mode:H1(X)})}async function q1($){let G=y4($);if(G.type==="level")return await z4(G.level),u.info("commands","log level changed",{level:G.level}),WW({argumentsText:$,level:G.level});let X=await T(j),w=L1(X)??"info";return WW({argumentsText:$,level:w})}async function j1($,G){let X=E4($);if(X.type==="add-apikey"){if(!X.apiKey)return{text:"API key is required",accounts:I0(await T(j)??Y0())};let B=X.label?.trim()||void 0,F=Date.now(),b=X.baseURL?.trim()||"https://api.kie.ai/claude";if(!I1(b))return{text:"Invalid base URL. Must be an http(s) URL without embedded credentials.",accounts:I0(await T(j)??Y0())};let c=X.authHeader??"authorization-bearer",o={id:B||h1(),label:B||void 0,type:"api",apiKey:X.apiKey,baseURL:b,authHeader:c,enabled:!0,addedAt:F,lastUsed:F};await p1(o,j),u.info("commands","account added",{id:o.id,label:o.label,type:"apikey"});let V0=await T(j);await e0(V0);let F0=I0(V0??{version:1,accounts:[]});return{text:`API key account "${o.label??o.id}" added.`,accounts:F0}}if(X.type==="add-oauth-start"){let B=await _1("max"),F={state:B.state,verifier:B.verifier,redirectUri:B.redirectUri,createdAt:Date.now()};return E(G??"default",F),{text:`Open this URL in your browser:
11
- ${B.url}`,knobs:{oauthUrl:B.url},accounts:I0(await T(j)??Y0())}}if(X.type==="add-oauth-finish"){let B=G??"default",F=m(B);if(!F)return{text:"OAuth session expired. Please start again.",accounts:I0(await T(j)??Y0())};try{let b=await D1(X.code,F.verifier,F.redirectUri,F.state);if(b.type==="failed")return{text:"OAuth authentication failed. Please check the code and try again.",accounts:I0(await T(j)??Y0())};let c=Date.now(),o={id:h1(),type:"oauth",label:X.label||void 0,access:b.access,refresh:b.refresh,expires:b.expires,enabled:!0,addedAt:c,lastUsed:c};await p1(o,j),u.info("commands","account added",{id:o.id,label:o.label,type:"oauth"});let V0=await T(j);return await e0(V0),{text:"OAuth account added.",accounts:I0(V0??Y0())}}catch{return{text:"OAuth exchange failed due to a network error. Please try again.",accounts:I0(await T(j)??Y0())}}finally{N.delete(B)}}let w=await T(j),V=S4({argumentsText:$,storage:w??{version:1,accounts:[]}});if(V.updated){if(V.updated.action==="enable"||V.updated.action==="disable"){let F=V.updated.action==="enable";await B4(V.updated.id,F,j);let b=V.updated.id,c=w?.accounts.find((o)=>o.id===b);u.info("commands",`account ${V.updated.action}d`,{id:b,label:c?.label,enabled:F})}else if(V.updated.action==="remove"){await M4(V.updated.id,j);let F=V.updated.id,b=w?.accounts.find((c)=>c.id===F);u.info("commands","account removed",{id:F,label:b?.label})}else if(V.updated.action==="reorder"){await U4(V.updated.newOrder??V.updated.previousOrder??[],j);let F=V.updated.id,b=w?.accounts.find((c)=>c.id===F);u.info("commands","account reordered",{id:F,label:b?.label})}let B=await T(j);if(W0)try{let F=await W0();$0(B,{activeId:n.activeId,route:n.route,mainAccessToken:F.access,mainRefreshToken:F.refresh})}catch{}}let A=await T(j),x=I0(A??{version:1,accounts:[]});return{text:V.text,accounts:x}}async function b0($,G,X){if($==="claude-quota")return{command:$,text:await R0(),knobs:{}};if($==="claude-logging"){let B=await q1(G),F=await T(j);return{command:$,text:B,knobs:{level:L1(F)??"info"}}}if($==="claude-account"){let B=await j1(G,X),F={accounts:B.accounts};if("knobs"in B&&B.knobs)Object.assign(F,B.knobs);return{command:$,text:B.text,knobs:F}}if($==="claude-routing"){let B=await T0(G),F=await T(j);return{command:$,text:B,knobs:{mode:H1(F)}}}if($==="claude-fast"){let B=await M0(G),F=await T(j);return{command:$,text:B,knobs:{enabled:w1(F)}}}if($==="claude-dump"){let B=await W1(G),F=await T(j);return{command:$,text:B,knobs:{enabled:z1(F)}}}if($==="claude-cache"){let B=await x1(G),F=await T(j);return{command:$,text:B,knobs:{enabled:n0(F),mode:c0(F)}}}if($==="claude-cachekeep"){let B=await h0(G),F=await T(j);return{command:$,text:B,knobs:{window:u1(F)}}}let w=await T(),V=m1(w),A=(w?.accounts??[]).filter((B)=>B.enabled!==!1).map((B)=>B.id),x=k4({argumentsText:G,config:V,accountIds:A});if(x.updatedConfig){if(await L4(x.updatedConfig),V.enabled!==x.updatedConfig.enabled)u.info("commands","killswitch changed",{enabled:x.updatedConfig.enabled===!0});if(JSON.stringify(V.main)!==JSON.stringify(x.updatedConfig.main)||JSON.stringify(V.accounts)!==JSON.stringify(x.updatedConfig.accounts))u.info("commands","killswitch thresholds changed",{thresholds:x.updatedConfig.main??x.updatedConfig.accounts})}return{command:$,text:x.text,knobs:{config:m1(await T()),accountIds:A}}}async function s4($){let G=await b0($.command,$.arguments,$.sessionId);return{text:G.text,knobs:G.knobs}}function a4($,G=10){let X=Math.max(0,Math.min(Math.round($/100*G),G));return"█".repeat(X)+"░".repeat(G-X)}function J1($,G){return`${$} ${a4(G)} ${String(Math.round(G)).padStart(3)}%`}function OW($){if(!$)return"";let G=new Date($).getTime();if(Number.isNaN(G))return"";let X=G-Date.now();if(X<=0)return"resets now";let w=Math.floor(X/60000);if(w<1)return"resets <1m";if(w<60)return`resets ${w}m`;let V=Math.floor(w/60),A=w%60;return A>0?`resets ${V}h${A}m`:`resets ${V}h`}function e4($,G,X){let w=[],V=0;if($){let{five_hour:B,seven_day:F}=$;if(B||F){let c=X==="main"?"active":"idle",o=OW(B?.resetsAt),V0=[`main · ${c}${o?` (${o})`:""}`];if(B)V0.push(J1("5h",B.usedPercent)),V=Math.max(V,B.usedPercent);if(F)V0.push(J1("7d",F.usedPercent)),V=Math.max(V,F.usedPercent);w.push(V0.join(`
12
- `))}}if(G?.length)for(let B of G){let F=B.quota;if(!F)continue;let{five_hour:b,seven_day:c}=F;if(!b&&!c)continue;let o=B.label||"alt",F0=X===B.id?"active":"idle",Q0=OW(b?.resetsAt),C0=[`${o} · ${F0}${Q0?` (${Q0})`:""}`];if(b)C0.push(J1("5h",b.usedPercent)),V=Math.max(V,b.usedPercent);if(c)C0.push(J1("7d",c.usedPercent)),V=Math.max(V,c.usedPercent);w.push(C0.join(`
13
- `))}if(!w.length)return;let A=w.join(`
9
+ `);if(_===-1)return O===-1?null:{index:O,length:4};if(O===-1||_<O)return{index:_,length:2};return{index:O,length:4}}function HO(D,_){if(!_)return;D.pending+=_;while(!0){let O=cO(D.pending);if(!O)break;let W=D.pending.slice(0,O.index);D.pending=D.pending.slice(O.index+O.length);let j=u1(W);if(!j)continue;if(D.events++,$D(D.eventCounts,j.event??"unknown"),$D(D.typeCounts,j.type),$D(D.deltaTypeCounts,j.deltaType),$D(D.contentBlockTypeCounts,j.contentBlockType),D.textDeltaBytes+=j.textDeltaBytes??0,D.thinkingDeltaBytes+=j.thinkingDeltaBytes??0,D.inputJsonDeltaBytes+=j.inputJsonDeltaBytes??0,D.signatureDeltaBytes+=j.signatureDeltaBytes??0,D.redactedThinkingBytes+=j.redactedThinkingBytes??0,D.last=j,j.dataBytes>0&&!j.type&&!j.event)D.parseErrors++}}function c1(){return{pending:""}}function o1(D,_){let O=D?.toLowerCase(),W=_.toLowerCase();return O==="api_error"||O==="overloaded_error"||O==="server_error"||O==="internal_server_error"||W.includes("internal server error")||W.includes("server overloaded")}function r1(D,_){let O=D?`${D}: ${_}`:_,W=Error(`Anthropic stream error: ${O}`);if(W.code="ECONNRESET",W.syscall="anthropic-sse",D)W.providerErrorType=D;return W}function t1(D){if(!D.includes("error"))return null;let _,O=[];for(let k of D.split(/\r?\n/)){if(k.startsWith("event:")){_=k.slice(6).trim();continue}if(k.startsWith("data:")){let L=k.slice(5);O.push(L.startsWith(" ")?L.slice(1):L)}}let W=O.join(`
10
+ `);if(!W||W==="[DONE]")return null;let j;try{j=JSON.parse(W)}catch{return null}let J=Q0(j);if(_!=="error"&&j0(J,"type")!=="error")return null;let V=Q0(J?.error),q=j0(V,"type")??j0(V,"code")??void 0,m=j0(V,"message")??j0(J,"message")??q??"Anthropic stream error";if(!o1(q,m))return null;return r1(q,m)}function fO(D,_){if(!_)return null;D.pending+=_;while(!0){let O=cO(D.pending);if(!O)break;let W=D.pending.slice(0,O.index);D.pending=D.pending.slice(O.index+O.length);let j=t1(W);if(j)return j}return null}function s1(D){return{sseEvents:D.events,ssePendingChars:D.pending.length,sseParseErrors:D.parseErrors,sseEventCounts:{...D.eventCounts},sseTypeCounts:{...D.typeCounts},sseDeltaTypeCounts:{...D.deltaTypeCounts},sseContentBlockTypeCounts:{...D.contentBlockTypeCounts},sseTextDeltaBytes:D.textDeltaBytes,sseThinkingDeltaBytes:D.thinkingDeltaBytes,sseInputJsonDeltaBytes:D.inputJsonDeltaBytes,sseSignatureDeltaBytes:D.signatureDeltaBytes,sseRedactedThinkingBytes:D.redactedThinkingBytes,sseLastEvent:D.last?{...D.last}:void 0}}function l0(D,_={}){if(!D.body)return D;let O=D.body.getReader(),W=new TextDecoder,j=new TextEncoder,J="",V=0,q=0,m=0,k=0,L=0,y=!1,u=!1,N0=h(),z0=h(),c=_.perf?d1():void 0,C0=c1(),O0=()=>{if(u)return;u=!0,O.releaseLock()},U0=(_0={})=>({chunks:V,pulls:q,inputBytes:m,outputBytes:k,pendingChars:J.length,rewriteMs:Y0(L),totalMs:Y0(h()-z0),...c?s1(c):{},..._0}),$0=(_0,I0={})=>{_.perf?.(_0,U0(I0))};_.perf?.("stream_tool_prefix_wrapper_created",{status:D.status,hasBody:!0});let a=new ReadableStream({async pull(_0){if(q++,!y)y=!0,$0("stream_tool_prefix_first_pull");let I0=h();try{let{done:Z0,value:x0}=await O.read(),y0=Y0(h()-I0);if(Z0){let L0=W.decode();if(c)HO(c,L0);let T0=fO(C0,L0);if(T0)throw $0("stream_tool_prefix_retryable_error",{error:T0.message,providerErrorType:T0.providerErrorType}),O0(),T0;let ED=h(),OD=MO(`${J}${L0}`,!0);if(L+=h()-ED,OD.ready){let b0=j.encode(OD.ready);k+=b0.byteLength,_0.enqueue(b0)}$0("stream_tool_prefix_rewrite",{readMs:y0}),O0(),_0.close();return}V++,m+=x0.byteLength;let E0=W.decode(x0,{stream:!0});if(c)HO(c,E0);let R0=fO(C0,E0);if(R0)throw $0("stream_tool_prefix_retryable_error",{error:R0.message,providerErrorType:R0.providerErrorType,readMs:y0,lastChunkBytes:x0.byteLength}),O0(),R0;let e0=J+E0,xD=h(),h0=MO(e0);if(L+=h()-xD,J=h0.pending,h0.ready){let L0=j.encode(h0.ready);k+=L0.byteLength,_0.enqueue(L0)}let DD=h();if(V===1||V%25===0||DD-N0>5000)N0=DD,$0("stream_tool_prefix_progress",{readMs:y0,lastChunkBytes:x0.byteLength})}catch(Z0){throw $0("stream_tool_prefix_error",{error:Z0 instanceof Error?Z0.message:String(Z0)}),O0(),Z0}},async cancel(_0){$0("stream_tool_prefix_cancel",{reason:_0 instanceof Error?_0.message:String(_0)});try{await O.cancel(_0)}finally{O0()}}});return new Response(a,{status:D.status,statusText:D.statusText,headers:D.headers})}var a1="__OPENCODE_ANTHROPIC_AUTH_COMMAND_HANDLED__",oO="~effect/http/HttpServerResponse",rO="~effect/http/Cookies",tO="~effect/http/HttpBody",e1="~effect/ErrorReporter/ignore",DW=60000,OW=60000,_W=5000,sO=200,a_=240,WW=a_,NW=1,aO=!1;function fD(){return process.env.OPENCODE_ANTHROPIC_AUTH_PERF==="1"}function f(){return performance.now()}function g(D){return Math.round(D*10)/10}function eO(D){return Math.floor(Math.random()*Math.max(0,D))}function ZD(D){if(typeof D==="string")return D;if(D instanceof URL)return D.toString();return D.url}function GD(D,_){return _?.method??(D instanceof Request?D.method:void 0)}function D_(D){return D instanceof Error?D.message:String(D)}function jW(){if(aO||!1||!fD())return;aO=!0;let D=100,_=250,O=f()+D;setInterval(()=>{let W=f(),j=W-O;if(O=W+D,j<_)return;i("[perf] opencode event_loop_lag",{lagMs:g(j),thresholdMs:_})},D).unref?.()}function PW(D){let _=f(),O={requestId:String(NW++),start:_,last:_,mark(W,j){let J=f();if(fD())i("[perf] opencode request stage",{requestId:O.requestId,stage:W,deltaMs:g(J-O.last),totalMs:g(J-O.start),...j});O.last=J},done(W,j){let J=f();if(fD())i("[perf] opencode request done",{requestId:O.requestId,stage:W,deltaMs:g(J-O.last),totalMs:g(J-O.start),...j});O.last=J}};if(fD())i("[perf] opencode request start",{requestId:O.requestId,...D});return O}async function JW(D,_,O){let W=D.client.session,j=await YO(D.client,_),J={path:{id:_},body:{noReply:!0,parts:[{type:"text",text:O,ignored:!0}]}};if(j?.agent)J.body.agent=j.agent;if(j?.model)J.body.model=j.model;if(j?.variant)J.body.variant=j.variant;if(typeof W?.promptAsync==="function"){await W.promptAsync(J);return}if(typeof W?.prompt==="function"){await Promise.resolve(W.prompt(J));return}throw Error("OpenCode session prompt API is unavailable for ignored replies.")}function $W(){let D=Error(a1);throw D[oO]=oO,D[e1]=!0,D.status=204,D.statusText=void 0,D.headers={},D.cookies={[rO]:rO,cookies:{}},D.body={[tO]:tO,_tag:"Empty"},D}function XW(D){if(D.sessionID==null)return!1;let _=D.model;return _?.providerID==="anthropic"||_?.api?.npm==="@ai-sdk/anthropic"||_?.api?.npm==="@ai-sdk/google-vertex/anthropic"}function YW(D){if(D.some((_)=>_.includes("<use_parallel_tool_calls>")))return!1;return D.push(O_),!0}var ZW={input:0,output:0,cache:{read:0,write:0}};function GW(D){let _=D["claude-opus-4-8"]??D["claude-opus-4-5"]??Object.values(D)[0];if(!_)return D;return{...D,...Object.fromEntries(Object.values(p_).map((O)=>[O.id,{..._,id:O.id,name:O.name,api:_.api?{..._.api,id:O.id}:void 0,cost:{input:a0.input,output:a0.output,cache:{read:a0.cacheRead,write:a0.cacheWrite5m}},limit:{..._.limit??{},context:g_,output:m_},capabilities:{..._.capabilities??{},reasoning:!0,attachment:!0,toolcall:!0},release_date:i_}]))}}function IW(D){return Object.fromEntries(Object.entries(D).map(([_,O])=>[_,{...O,cost:ZW}]))}var kW=async(D)=>{jW();let{client:_}=D,O=j_(),W=600000,j=50,J=new Map;function V(){let N=Date.now();for(let[P,X]of J)if(N-X.createdAt>W)J.delete(P)}function q(N,P){if(V(),J.size>=j){let X="",w=1/0;for(let[$,v]of J)if(v.createdAt<w)w=v.createdAt,X=$;if(X)J.delete(X)}J.set(N,P)}function m(N){V();let P=J.get(N);if(!P)return;if(Date.now()-P.createdAt>W){J.delete(N);return}return P}let k;try{k=await T(O)}catch(N){let P=N instanceof Error?N.message:String(N);throw Error(`Failed to load account store: ${P}`,{cause:N instanceof Error?N:void 0})}let L=new l_({storage:k,onMainQuotaFetched:async(N,P,X,w)=>{try{let $=await T(O)??G0(),v=L_($);if(v&&v.checkedAt>=w&&H_(v.quota,$,v.checkedAt)>Date.now()){L.seedMainFromStorage($);return}$.quota=$.quota??{},$.quota.mainQuota=N,$.quota.mainQuotaCheckedAt=P,$.quota.mainQuotaToken=X,$.quota.mainLastQuotaApiError=void 0,await n0($,O,{mainQuota:!0})}catch($){n.warn("quota","failed to persist main quota",{error:$ instanceof Error?$.message:String($)})}},onApiError:async(N)=>{try{let P=await T(O)??G0();P.quota=P.quota??{},P.quota.mainLastQuotaApiError=N,await n0(P,O,{mainQuota:!0})}catch(P){n.warn("quota","failed to persist backoff state",{error:P instanceof Error?P.message:String(P)})}}}),y=new f_({quotaManager:L,onFallbackStorageChanged:()=>{U0().catch(()=>{})}});y.startBackgroundRefresh();let u=null,N0=new A_({loadStorage:()=>T(O),prepareHeaders:async(N,P)=>{if(!a)return N;let X=await a();if(X.type!=="oauth")return N;if(!X.access||X.expires&&X.expires<Date.now()){if(!u)return N;X.access=await u()}if(!X.access)return N;try{let w=JSON.parse(P.bodyText),$=await lD(X.access,typeof w.model==="string"?w.model:void 0);if(N.delete("anthropic-beta"),p0(N,X.access,{body:w,identity:$}),N.set("anthropic-beta",m0(N.get("anthropic-beta"),[E_])),w.speed==="fast")XD(N)}catch{p0(N,X.access)}return N}});if(t0({enabled:u0(k),mode:c0(k)}),UD(zD(k)),FD(wD(k)),!process.env.OPENCODE_ANTHROPIC_AUTH_LOG_LEVEL)W_(LD(k)??"info");let z0=null;if(D.directory){let N=globalThis;if(N.__anthropicAuthRpcServer)await N.__anthropicAuthRpcServer.stop().catch(()=>{}),N.__anthropicAuthRpcServer=void 0;try{z0=await zO({dir:r_(D.directory),drain:IO,apply:e_}),N.__anthropicAuthRpcServer=z0}catch(P){n.warn("rpc","failed to start",{error:P instanceof Error?P.message:String(P)})}}let c={activeId:"main",route:"main"},C0=t_();function O0(N,P){c={activeId:P.activeId,route:P.route},L.updateStorage(N),L.seedMainFromStorage(N,P.mainAccessToken),L.seedFallbacksFromAccounts((N?.accounts??[]).filter(J0));let X=L.getMain(P.mainAccessToken),w=L.getLastApiError(),$=N?.refresh?.mainLastRefreshError,v={main:{quota:X?.quota??null,quotaBackedOff:L.isBackedOff(),quotaBackoffUntil:w?.nextRetryAt,refreshBackedOff:$?f0($,P.mainRefreshToken,Date.now()):!1,refreshBackoffUntil:$?.nextRetryAt},fallbacks:(N?.accounts??[]).filter((x)=>x.enabled!==!1&&J0(x)).map((x)=>({id:x.id,label:x.label,quota:x.access?L.getFallback(x.id,x.access)?.quota??null:null,needsReauth:x.lastRefreshError!=null&&f0(x.lastRefreshError,x.refresh,Date.now())&&z_(x.lastRefreshError),enabled:x.enabled!==!1})),activeId:P.activeId,route:P.route,relay:(()=>{let x=_O(N);return x?{enabled:!0,transport:x.transport??"http"}:null})(),fastMode:BD(),cacheKeep:{enabled:uD(N),window:N?.cacheKeep?.startHour!=null&&N?.cacheKeep?.endHour!=null?`${N.cacheKeep.startHour}-${N.cacheKeep.endHour}`:void 0,trackedSessions:N0.trackedCount()},lastUpdated:Date.now()};return s_(v,C0).catch((x)=>n.warn("sidebar","state write failed",{error:x instanceof Error?x.message:String(x)}))}async function U0(){let N=await T(O),P,X;if(a)try{let w=await a();P=w.access,X=w.refresh}catch{}O0(N,{activeId:c.activeId,route:c.route,mainAccessToken:P,mainRefreshToken:X})}function $0(N,P){if(!P)return;if(N?.quota?.enabled!==!0)return;if(L.getMain(P))return;if(_0)return;_0=!0,L.refreshMain(P).then(()=>U0()).catch(()=>{}).finally(()=>{_0=!1})}let a=null,_0=!1,I0=null,Z0=0;function x0(N){let P=N?.refresh?.refreshBeforeExpiryMinutes??WW;return Math.max(a_,P)*60000}function y0(N){return N?.refresh?.enabled!==!1}async function E0(N){if(!N)return;let P=await T(O),X=P?.refresh?.mainLastRefreshError;if(!P?.refresh||!X?.tokenHash)return;let w=CD(N);if(X.tokenHash===w)return;if(X.nextRetryAt&&X.nextRetryAt>Date.now()){i("[refresh] opencode main oauth keeping backoff despite token rotation",{nextRetryAt:X.nextRetryAt,retryCount:X.retryCount,remainingMs:X.nextRetryAt-Date.now()});return}P.refresh.mainLastRefreshError=void 0,await n0(P,O,{mainRefresh:!0}),i("[refresh] opencode main oauth cleared stale backoff after token rotation",{previousCheckedAt:X.checkedAt,previousNextRetryAt:X.nextRetryAt,previousRetryCount:X.retryCount})}async function R0(){let N=[];if(a)try{let $=await a();if($.type==="oauth"&&$.access){let v=await L.refreshMain($.access);N.push({name:"OpenCode anthropic",role:"main",quota:v})}else if($.type==="oauth")N.push({name:"OpenCode anthropic",role:"main",error:"missing access token; send a request first or reconnect auth"})}catch($){let v=$ instanceof Error?$.message:String($);N.push({name:"OpenCode anthropic",role:"main",error:v.includes("429")?"Usage API rate limited — try again in a moment":v})}let{storage:P,errors:X}=await y.refreshQuotaForAllAccounts({force:!0}),w=new Map(X.map(($)=>[$.accountId,$.message]));if(N.push(...d_(P,w)),!a)N.unshift({name:"OpenCode anthropic",role:"main",error:"auth loader has not run yet; send a request first"});return n_({accounts:N,refreshedAt:Date.now()})}async function e0(N){if(a)try{let P=await a();O0(N,{activeId:c.activeId,route:c.route,mainAccessToken:P.access,mainRefreshToken:P.refresh})}catch{}}async function xD(N){let P=x_(N);if(P.type==="enable"||P.type==="disable"){let v=P.type==="enable",x=await J_(v),U=c0(x);return t0({enabled:v,mode:U}),n.info("commands","cache enabled changed",{enabled:v}),QD({argumentsText:N,enabled:v,mode:U})}if(P.type==="mode"){let v=await $_(P.mode),x=u0(v);return t0({enabled:x,mode:P.mode}),n.info("commands","cache mode changed",{mode:P.mode}),QD({argumentsText:N,enabled:x,mode:P.mode})}let X=await T(O),w=u0(X),$=c0(X);return t0({enabled:w,mode:$}),QD({argumentsText:N,enabled:w,mode:$})}async function h0(N){let P=R_(N),X=await T(O);if(P.type==="window")X=await Z_(P.startHour,P.endHour),n.info("commands","cachekeep enabled changed",{enabled:!0});else if(P.type==="disable")X=await G_(!1),n.info("commands","cachekeep enabled changed",{enabled:!1});else if(P.type==="subagents")X=await V_(P.enabled),n.info("commands","cachekeep subagents changed",{subagents:P.enabled});let w=nD(X),$=N0.stats(w);return q_({argumentsText:N,enabled:T_(X),window:w,hybridActive:uD(X),trackedSessions:$.trackedSessions,nextPrewarmAt:$.nextPrewarmAt})}async function DD(N){let P=k_(N);if(P.type==="enable"||P.type==="disable"){let $=P.type==="enable";return await X_($),UD($),n.info("commands","dump changed",{enabled:$}),rD({argumentsText:N,enabled:$})}let X=await T(O),w=zD(X);return UD(w),rD({argumentsText:N,enabled:w})}async function L0(N){let P=y_(N);if(P.type==="enable"||P.type==="disable"){let $=P.type==="enable";return await Y_($),FD($),n.info("commands","fast mode changed",{enabled:$}),sD({argumentsText:N,enabled:$})}let X=await T(O),w=wD(X);return FD(w),sD({argumentsText:N,enabled:w})}async function T0(N){let P=o_(N);if(P.type==="mode")return await c_(P.mode),n.info("commands","routing mode changed",{mode:P.mode}),NO({argumentsText:N,mode:P.mode});let X=await T();return NO({argumentsText:N,mode:HD(X)})}async function ED(N){let P=b_(N);if(P.type==="level")return await C_(P.level),n.info("commands","log level changed",{level:P.level}),DO({argumentsText:N,level:P.level});let X=await T(O),w=LD(X)??"info";return DO({argumentsText:N,level:w})}async function OD(N,P){let X=S_(N);if(X.type==="add-apikey"){if(!X.apiKey)return{text:"API key is required",accounts:K0(await T(O)??G0())};let U=X.label?.trim()||void 0,B=Date.now(),b=X.baseURL?.trim()||"https://api.kie.ai/claude";if(!KD(b))return{text:"Invalid base URL. Must be an http(s) URL without embedded credentials.",accounts:K0(await T(O)??G0())};let o=X.authHeader??"authorization-bearer",r={id:U||hD(),label:U||void 0,type:"api",apiKey:X.apiKey,baseURL:b,authHeader:o,enabled:!0,addedAt:B,lastUsed:B};await iD(r,O),n.info("commands","account added",{id:r.id,label:r.label,type:"apikey"});let X0=await T(O);await e0(X0);let B0=K0(X0??{version:1,accounts:[]});return{text:`API key account "${r.label??r.id}" added.`,accounts:B0}}if(X.type==="add-oauth-start"){let U=await ID("max"),B={state:U.state,verifier:U.verifier,redirectUri:U.redirectUri,createdAt:Date.now()};return q(P??"default",B),{text:`Open this URL in your browser:
11
+ ${U.url}`,knobs:{oauthUrl:U.url},accounts:K0(await T(O)??G0())}}if(X.type==="add-oauth-finish"){let U=P??"default",B=m(U);if(!B)return{text:"OAuth session expired. Please start again.",accounts:K0(await T(O)??G0())};try{let b=await VD(X.code,B.verifier,B.redirectUri,B.state);if(b.type==="failed")return{text:"OAuth authentication failed. Please check the code and try again.",accounts:K0(await T(O)??G0())};let o=Date.now(),r={id:hD(),type:"oauth",label:X.label||void 0,access:b.access,refresh:b.refresh,expires:b.expires,enabled:!0,addedAt:o,lastUsed:o};await iD(r,O),n.info("commands","account added",{id:r.id,label:r.label,type:"oauth"});let X0=await T(O);return await e0(X0),{text:"OAuth account added.",accounts:K0(X0??G0())}}catch{return{text:"OAuth exchange failed due to a network error. Please try again.",accounts:K0(await T(O)??G0())}}finally{J.delete(U)}}let w=await T(O),$=v_({argumentsText:N,storage:w??{version:1,accounts:[]}});if($.updated){if($.updated.action==="enable"||$.updated.action==="disable"){let B=$.updated.action==="enable";await F_($.updated.id,B,O);let b=$.updated.id,o=w?.accounts.find((r)=>r.id===b);n.info("commands",`account ${$.updated.action}d`,{id:b,label:o?.label,enabled:B})}else if($.updated.action==="remove"){await U_($.updated.id,O);let B=$.updated.id,b=w?.accounts.find((o)=>o.id===B);n.info("commands","account removed",{id:B,label:b?.label})}else if($.updated.action==="reorder"){await B_($.updated.newOrder??$.updated.previousOrder??[],O);let B=$.updated.id,b=w?.accounts.find((o)=>o.id===B);n.info("commands","account reordered",{id:B,label:b?.label})}let U=await T(O);if(a)try{let B=await a();O0(U,{activeId:c.activeId,route:c.route,mainAccessToken:B.access,mainRefreshToken:B.refresh})}catch{}}let v=await T(O),x=K0(v??{version:1,accounts:[]});return{text:$.text,accounts:x}}async function b0(N,P,X){if(N==="claude-quota")return{command:N,text:await R0(),knobs:{}};if(N==="claude-logging"){let U=await ED(P),B=await T(O);return{command:N,text:U,knobs:{level:LD(B)??"info"}}}if(N==="claude-account"){let U=await OD(P,X),B={accounts:U.accounts};if("knobs"in U&&U.knobs)Object.assign(B,U.knobs);return{command:N,text:U.text,knobs:B}}if(N==="claude-routing"){let U=await T0(P),B=await T(O);return{command:N,text:U,knobs:{mode:HD(B)}}}if(N==="claude-fast"){let U=await L0(P),B=await T(O);return{command:N,text:U,knobs:{enabled:wD(B)}}}if(N==="claude-dump"){let U=await DD(P),B=await T(O);return{command:N,text:U,knobs:{enabled:zD(B)}}}if(N==="claude-cache"){let U=await xD(P),B=await T(O);return{command:N,text:U,knobs:{enabled:u0(B),mode:c0(B)}}}if(N==="claude-cachekeep"){let U=await h0(P),B=await T(O);return{command:N,text:U,knobs:{window:nD(B)}}}let w=await T(),$=mD(w),v=(w?.accounts??[]).filter((U)=>U.enabled!==!1).map((U)=>U.id),x=h_({argumentsText:P,config:$,accountIds:v});if(x.updatedConfig){if(await Q_(x.updatedConfig),$.enabled!==x.updatedConfig.enabled)n.info("commands","killswitch changed",{enabled:x.updatedConfig.enabled===!0});if(JSON.stringify($.main)!==JSON.stringify(x.updatedConfig.main)||JSON.stringify($.accounts)!==JSON.stringify(x.updatedConfig.accounts))n.info("commands","killswitch thresholds changed",{thresholds:x.updatedConfig.main??x.updatedConfig.accounts})}return{command:N,text:x.text,knobs:{config:mD(await T()),accountIds:v}}}async function e_(N){let P=await b0(N.command,N.arguments,N.sessionId);return{text:P.text,knobs:P.knobs}}function D1(N,P=10){let X=Math.max(0,Math.min(Math.round(N/100*P),P));return"█".repeat(X)+"░".repeat(P-X)}function _D(N,P){return`${N} ${D1(P)} ${String(Math.round(P)).padStart(3)}%`}function jO(N){if(!N)return"";let P=new Date(N).getTime();if(Number.isNaN(P))return"";let X=P-Date.now();if(X<=0)return"resets now";let w=Math.floor(X/60000);if(w<1)return"resets <1m";if(w<60)return`resets ${w}m`;let $=Math.floor(w/60),v=w%60;return v>0?`resets ${$}h${v}m`:`resets ${$}h`}function O1(N,P,X){let w=[],$=0;if(N){let{five_hour:U,seven_day:B}=N;if(U||B){let o=X==="main"?"active":"idle",r=jO(U?.resetsAt),X0=[`main · ${o}${r?` (${r})`:""}`];if(U)X0.push(_D("5h",U.usedPercent)),$=Math.max($,U.usedPercent);if(B)X0.push(_D("7d",B.usedPercent)),$=Math.max($,B.usedPercent);w.push(X0.join(`
12
+ `))}}if(P?.length)for(let U of P){let B=U.quota;if(!B)continue;let{five_hour:b,seven_day:o}=B;if(!b&&!o)continue;let r=U.label||"alt",B0=X===U.id?"active":"idle",w0=jO(b?.resetsAt),F0=[`${r} · ${B0}${w0?` (${w0})`:""}`];if(b)F0.push(_D("5h",b.usedPercent)),$=Math.max($,b.usedPercent);if(o)F0.push(_D("7d",o.usedPercent)),$=Math.max($,o.usedPercent);w.push(F0.join(`
13
+ `))}if(!w.length)return;let v=w.join(`
14
14
 
15
- `),x=V>=90?"error":V>=70?"warning":"info";J.tui?.showToast?.({body:{title:"Claude Quota",message:A,variant:x,duration:x==="error"?8000:5000}})?.catch?.(()=>{})}return{config:async($)=>{$.command={...$.command??{},[i1]:{template:i1,description:"Show or toggle 1-hour Anthropic ephemeral prompt cache TTL."},[c1]:{template:c1,description:"Manage fallback accounts — list, enable/disable, reorder, remove, or add (API key or OAuth)."},[l1]:{template:l1,description:"Keep hybrid Claude cache warm for recently used sessions during a local time window."},[jW]:{template:jW,description:"Show current Claude OAuth quota usage for all accounts."},[o1]:{template:o1,description:"Show or toggle Anthropic request dump capture for debugging."},[t1]:{template:t1,description:"Show or toggle Anthropic fast mode for supported Opus models."},[e1]:{template:e1,description:"Show or set the plugin log level (error, warn, info, debug, trace)."},[PW]:{template:PW,description:"Show or change Claude account routing between main-first and fallback-first."},[a1]:{template:a1,description:"Manage killswitch — hard-block requests when quota drops below per-account thresholds."}}},"experimental.chat.system.transform":async($,G)=>{if(!GJ($))return;NJ(G.system)},provider:{id:"anthropic",async models($,G){let X=XJ($.models);if(G.auth?.type!=="oauth"||!J4(k??{}))return X;return ZJ(X)}},"command.execute.before":async($)=>{if(!["claude-account","claude-cache","claude-cachekeep","claude-quota","claude-dump","claude-fast","claude-routing","claude-killswitch","claude-logging"].includes($.command))return;let X=$.command,w=await b0(X,$.arguments,$.sessionID);if(X==="claude-quota"){let V=await T(),A=W0?await W0().catch(()=>{return}):void 0;$0(V,{activeId:"main",route:"main",mainAccessToken:A?.access,mainRefreshToken:A?.refresh})}if(DW($.sessionID))YW(w,$.sessionID);else await $J(W,$.sessionID,w.text);OJ()},auth:{provider:"anthropic",async loader($,G){W0=$;let X=await $();if(X.type==="oauth"){let A=function(){if(_0)clearInterval(_0),_0=null;let K=async()=>{try{let I=await T(j);if(!y0(I))return;let S=await $();if(S.type!=="oauth")return;if(await q0(S.refresh),!S.expires)return;let Q=S.expires-Date.now(),R=x0(I);if(Q>R)return;if(p("[refresh] opencode main oauth background due",{expiresInMs:Q,refreshBeforeMs:R}),S.refresh&&f0(I?.refresh?.mainLastRefreshError,S.refresh,Date.now())){p("[refresh] opencode main oauth background skipped backoff",{nextRetryAt:I?.refresh?.mainLastRefreshError?.nextRetryAt,retryCount:I?.refresh?.mainLastRefreshError?.retryCount,expiresInMs:Q});return}if(S.refresh&&I?.refresh?.mainRefreshLeaseUntil&&I.refresh.mainRefreshLeaseUntil>Date.now()&&I.refresh.mainRefreshLeaseTokenHash===Q1(S.refresh))return;await V();let Y=await $();p("[refresh] opencode main oauth refreshed in background",{newExpiresInMs:Y.expires?Y.expires-Date.now():void 0})}catch(I){u.warn("refresh","opencode main oauth refresh failed",{message:I instanceof Error?I.message:String(I)})}};if(_0=setInterval(()=>{K()},sj+sW(aj)),"unref"in _0)_0.unref()},x=function(K,I){if(K instanceof Request&&K.body)return!1;return I==null||typeof I==="string"},B=function(K){return K.has("x-parent-session-id")},F=function(K){return K.includes("rate_limit_error")||/exceed your account'?s rate limit/i.test(K)},b=function(K){return K?.quota?.enabled===!0},o=function(K,I){if(K.delete("authorization"),K.delete("x-api-key"),I.authHeader==="x-api-key")K.set("x-api-key",I.apiKey??"");else K.set("Authorization",`Bearer ${I.apiKey??""}`);K.set("Content-Type","application/json")},Q0=function(K){return M.getFallback(K.id,K.access)?.quota??K.quota},C0=function(K){return Object.values(K??{}).some((I)=>I&&I.remainingPercent<=0)},GW=function(K,I){return K.status===429||I},R1=function(K){if(!K)return!1;let I=M.getMain(K);return Boolean(I&&I.refreshAfter>Date.now()&&C0(I.quota))},w=null;async function V(){if(!w)w=(async()=>{let S=null,Q=null,R=null;async function Y(_){let v=await T(j)??Y0();v.refresh=v.refresh??{},_(v),await u0(v,j,{mainRefresh:!0})}async function d(_){let v=Date.now()+ej;while(Date.now()<v){await new Promise((H)=>setTimeout(H,rW+sW(rW)));let Z=await $();if(Z.type!=="oauth"||!Z.access)continue;if((Z.access!==_.access||Z.refresh!==_.refresh||(Z.expires??0)>(_.expires??0)+60000)&&(!Z.expires||Z.expires>Date.now()))return p("[refresh] opencode main oauth joined concurrent refresh",{expiresInMs:Z.expires?Z.expires-Date.now():void 0}),Z.access}return null}for(let _=0;_<=2;_++){let v=null;try{if(_>0){let q=500*2**(_-1);await new Promise((L)=>setTimeout(L,q))}if(v=await $(),!v.refresh)throw Error("Token refresh failed: missing refresh token");let Z=await T(j),z=Q1(v.refresh),H=Z?.refresh?.mainLastRefreshError;if(p("[refresh] opencode main oauth refresh check",{attempt:_,expiresInMs:v.expires?v.expires-Date.now():void 0,hasBackoff:Boolean(H),backoffActive:H?f0(H,v.refresh,Date.now()):!1,retryCount:H?.retryCount,nextRetryAt:H?.nextRetryAt}),H&&f0(H,v.refresh,Date.now()))throw p("[refresh] opencode main oauth refresh skipped backoff",{nextRetryAt:H.nextRetryAt,retryCount:H.retryCount}),Error(g1(H,Date.now()));if(Z?.refresh?.mainRefreshLeaseUntil&&Z.refresh.mainRefreshLeaseUntil>Date.now()&&Z.refresh.mainRefreshLeaseTokenHash===z){p("[refresh] opencode main oauth refresh skipped lease",{leaseUntil:Z.refresh.mainRefreshLeaseUntil});let q=await d(v);if(q)return q;throw Error("Claude OAuth refresh is already in progress")}let U=await $4({name:"opencode-main-oauth-refresh",ttlMs:120000,renew:!0});if(!U){p("[refresh] opencode main oauth refresh skipped file lock");let q=await d(v);if(q)return q;throw Error("Claude OAuth refresh is already in progress")}R=U.release,S=h1(),Q=z,await Y((q)=>{q.refresh=q.refresh??{},q.refresh.mainRefreshLeaseId=S??void 0,q.refresh.mainRefreshLeaseUntil=Date.now()+120000,q.refresh.mainRefreshLeaseTokenHash=z});let a=await T(j);if(p("[refresh] opencode main oauth refresh lease acquired",{attempt:_,leaseUntil:Date.now()+120000}),a?.refresh?.mainRefreshLeaseId!==S||a.refresh.mainRefreshLeaseTokenHash!==z)throw Error("Claude OAuth refresh is already in progress");p("[refresh] opencode main oauth refresh request start",{attempt:_});let r=await W4({refreshToken:v.refresh,maxRetries:0});return await J.auth.set({path:{id:"anthropic"},body:{type:"oauth",refresh:r.refresh,access:r.access,expires:r.expires}}),await Y((q)=>{if(!q?.refresh)return;if(q.refresh.mainLastRefreshError=void 0,q.refresh.mainRefreshLeaseId===S)q.refresh.mainRefreshLeaseId=void 0,q.refresh.mainRefreshLeaseUntil=void 0,q.refresh.mainRefreshLeaseTokenHash=void 0}),p("[refresh] opencode main oauth refresh succeeded",{attempt:_,expiresInMs:r.expires-Date.now()}),r.access}catch(Z){let z=Z instanceof Error&&(Z.message.includes("fetch failed")||("code"in Z)&&(Z.code==="ECONNRESET"||Z.code==="ECONNREFUSED"||Z.code==="ETIMEDOUT"||Z.code==="UND_ERR_CONNECT_TIMEOUT"));if(_<2&&(z||(()=>{let U=Z.status;return typeof U==="number"&&U>=500})()))continue;p("[refresh] opencode main oauth refresh attempt failed",{attempt:_,error:Z instanceof Error?Z.message:String(Z),transient:z});let H=v?.refresh;if(H&&Z.isRefreshError)await Y((U)=>{U.refresh=U.refresh??{},U.refresh.mainLastRefreshError=_4({error:Z,now:Date.now(),refreshToken:H,previous:U.refresh.mainLastRefreshError})});throw Z}finally{if(S)await Y((Z)=>{if(!Z?.refresh)return;if(Z.refresh.mainRefreshLeaseId===S&&Z.refresh.mainRefreshLeaseTokenHash===Q)Z.refresh.mainRefreshLeaseId=void 0,Z.refresh.mainRefreshLeaseUntil=void 0,Z.refresh.mainRefreshLeaseTokenHash=void 0}).catch(()=>{});await R?.().catch(()=>{})}}throw Error("Token refresh exhausted all retries")})().finally(()=>{w=null});return w}s=V,A(),M.seedFallbacksFromAccounts((k?.accounts??[]).filter(N0)),$0(k,{activeId:"main",route:"main",mainAccessToken:X.access,mainRefreshToken:X.refresh});async function c(K,I){if(!K.body||K.status!==200)return I?.mark("inspect_stream_skip",{status:K.status}),{response:K,rateLimited:!1};if(K.headers.get("x-cortexkit-relay-optimistic")==="true")return I?.mark("inspect_stream_skip",{status:K.status,reason:"optimistic_relay"}),{response:K,rateLimited:!1};let S=f(),Q=K.body.getReader(),R=[],Y=new TextDecoder,d="",_=0;while(!d.includes(`
15
+ `),x=$>=90?"error":$>=70?"warning":"info";_.tui?.showToast?.({body:{title:"Claude Quota",message:v,variant:x,duration:x==="error"?8000:5000}})?.catch?.(()=>{})}return{config:async(N)=>{N.command={...N.command??{},[pD]:{template:pD,description:"Show or toggle 1-hour Anthropic ephemeral prompt cache TTL."},[cD]:{template:cD,description:"Manage fallback accounts — list, enable/disable, reorder, remove, or add (API key or OAuth)."},[dD]:{template:dD,description:"Keep hybrid Claude cache warm for recently used sessions during a local time window."},[OO]:{template:OO,description:"Show current Claude OAuth quota usage for all accounts."},[oD]:{template:oD,description:"Show or toggle Anthropic request dump capture for debugging."},[tD]:{template:tD,description:"Show or toggle Anthropic fast mode for supported Opus models."},[eD]:{template:eD,description:"Show or set the plugin log level (error, warn, info, debug, trace)."},[WO]:{template:WO,description:"Show or change Claude account routing between main-first and fallback-first."},[aD]:{template:aD,description:"Manage killswitch — hard-block requests when quota drops below per-account thresholds."}}},"experimental.chat.system.transform":async(N,P)=>{if(!XW(N))return;YW(P.system)},provider:{id:"anthropic",async models(N,P){let X=GW(N.models);if(P.auth?.type!=="oauth"||!N_(k??{}))return X;return IW(X)}},"command.execute.before":async(N)=>{if(!["claude-account","claude-cache","claude-cachekeep","claude-quota","claude-dump","claude-fast","claude-routing","claude-killswitch","claude-logging"].includes(N.command))return;let X=N.command,w=await b0(X,N.arguments,N.sessionID);if(X==="claude-quota"){let $=await T(),v=a?await a().catch(()=>{return}):void 0;O0($,{activeId:"main",route:"main",mainAccessToken:v?.access,mainRefreshToken:v?.refresh})}if(VO(N.sessionID))GO(w,N.sessionID);else await JW(D,N.sessionID,w.text);$W()},auth:{provider:"anthropic",async loader(N,P){a=N;let X=await N();if(X.type==="oauth"){let v=function(){if(I0)clearInterval(I0),I0=null;let Z=async()=>{try{let K=await T(O);if(!y0(K))return;let A=await N();if(A.type!=="oauth")return;if(await E0(A.refresh),!A.expires)return;let C=A.expires-Date.now(),R=x0(K);if(C>R)return;if(i("[refresh] opencode main oauth background due",{expiresInMs:C,refreshBeforeMs:R}),A.refresh&&f0(K?.refresh?.mainLastRefreshError,A.refresh,Date.now())){i("[refresh] opencode main oauth background skipped backoff",{nextRetryAt:K?.refresh?.mainLastRefreshError?.nextRetryAt,retryCount:K?.refresh?.mainLastRefreshError?.retryCount,expiresInMs:C});return}if(A.refresh&&K?.refresh?.mainRefreshLeaseUntil&&K.refresh.mainRefreshLeaseUntil>Date.now()&&K.refresh.mainRefreshLeaseTokenHash===CD(A.refresh))return;await $();let G=await N();i("[refresh] opencode main oauth refreshed in background",{newExpiresInMs:G.expires?G.expires-Date.now():void 0})}catch(K){n.warn("refresh","opencode main oauth refresh failed",{message:K instanceof Error?K.message:String(K)})}};if(I0=setInterval(()=>{Z()},DW+eO(OW)),"unref"in I0)I0.unref()},x=function(Z,K){if(Z instanceof Request&&Z.body)return!1;return K==null||typeof K==="string"},U=function(Z){return Z.has("x-parent-session-id")},B=function(Z){return Z.includes("rate_limit_error")||/exceed your account'?s rate limit/i.test(Z)},b=function(Z){return Z?.quota?.enabled===!0},r=function(Z,K){if(Z.delete("authorization"),Z.delete("x-api-key"),K.authHeader==="x-api-key")Z.set("x-api-key",K.apiKey??"");else Z.set("Authorization",`Bearer ${K.apiKey??""}`);Z.set("Content-Type","application/json")},w0=function(Z){return L.getFallback(Z.id,Z.access)?.quota??Z.quota},F0=function(Z){return Object.values(Z??{}).some((K)=>K&&K.remainingPercent<=0)},PO=function(Z,K){return Z.status===429||K},RD=function(Z){if(!Z)return!1;let K=L.getMain(Z);return Boolean(K&&K.refreshAfter>Date.now()&&F0(K.quota))},w=null;async function $(){if(!w)w=(async()=>{let A=null,C=null,R=null;async function G(I){let S=await T(O)??G0();S.refresh=S.refresh??{},I(S),await n0(S,O,{mainRefresh:!0})}async function d(I){let S=Date.now()+_W;while(Date.now()<S){await new Promise((H)=>setTimeout(H,sO+eO(sO)));let Y=await N();if(Y.type!=="oauth"||!Y.access)continue;if((Y.access!==I.access||Y.refresh!==I.refresh||(Y.expires??0)>(I.expires??0)+60000)&&(!Y.expires||Y.expires>Date.now()))return i("[refresh] opencode main oauth joined concurrent refresh",{expiresInMs:Y.expires?Y.expires-Date.now():void 0}),Y.access}return null}for(let I=0;I<=2;I++){let S=null;try{if(I>0){let E=500*2**(I-1);await new Promise((M)=>setTimeout(M,E))}if(S=await N(),!S.refresh)throw Error("Token refresh failed: missing refresh token");let Y=await T(O),z=CD(S.refresh),H=Y?.refresh?.mainLastRefreshError;if(i("[refresh] opencode main oauth refresh check",{attempt:I,expiresInMs:S.expires?S.expires-Date.now():void 0,hasBackoff:Boolean(H),backoffActive:H?f0(H,S.refresh,Date.now()):!1,retryCount:H?.retryCount,nextRetryAt:H?.nextRetryAt}),H&&f0(H,S.refresh,Date.now()))throw i("[refresh] opencode main oauth refresh skipped backoff",{nextRetryAt:H.nextRetryAt,retryCount:H.retryCount}),Error(gD(H,Date.now()));if(Y?.refresh?.mainRefreshLeaseUntil&&Y.refresh.mainRefreshLeaseUntil>Date.now()&&Y.refresh.mainRefreshLeaseTokenHash===z){i("[refresh] opencode main oauth refresh skipped lease",{leaseUntil:Y.refresh.mainRefreshLeaseUntil});let E=await d(S);if(E)return E;throw Error("Claude OAuth refresh is already in progress")}let Q=await P_({name:"opencode-main-oauth-refresh",ttlMs:120000,renew:!0});if(!Q){i("[refresh] opencode main oauth refresh skipped file lock");let E=await d(S);if(E)return E;throw Error("Claude OAuth refresh is already in progress")}R=Q.release,A=hD(),C=z,await G((E)=>{E.refresh=E.refresh??{},E.refresh.mainRefreshLeaseId=A??void 0,E.refresh.mainRefreshLeaseUntil=Date.now()+120000,E.refresh.mainRefreshLeaseTokenHash=z});let e=await T(O);if(i("[refresh] opencode main oauth refresh lease acquired",{attempt:I,leaseUntil:Date.now()+120000}),e?.refresh?.mainRefreshLeaseId!==A||e.refresh.mainRefreshLeaseTokenHash!==z)throw Error("Claude OAuth refresh is already in progress");i("[refresh] opencode main oauth refresh request start",{attempt:I});let t=await __({refreshToken:S.refresh,maxRetries:0});return await _.auth.set({path:{id:"anthropic"},body:{type:"oauth",refresh:t.refresh,access:t.access,expires:t.expires}}),await G((E)=>{if(!E?.refresh)return;if(E.refresh.mainLastRefreshError=void 0,E.refresh.mainRefreshLeaseId===A)E.refresh.mainRefreshLeaseId=void 0,E.refresh.mainRefreshLeaseUntil=void 0,E.refresh.mainRefreshLeaseTokenHash=void 0}),i("[refresh] opencode main oauth refresh succeeded",{attempt:I,expiresInMs:t.expires-Date.now()}),t.access}catch(Y){let z=Y instanceof Error&&(Y.message.includes("fetch failed")||("code"in Y)&&(Y.code==="ECONNRESET"||Y.code==="ECONNREFUSED"||Y.code==="ETIMEDOUT"||Y.code==="UND_ERR_CONNECT_TIMEOUT"));if(I<2&&(z||(()=>{let Q=Y.status;return typeof Q==="number"&&Q>=500})()))continue;i("[refresh] opencode main oauth refresh attempt failed",{attempt:I,error:Y instanceof Error?Y.message:String(Y),transient:z});let H=S?.refresh;if(H&&Y.isRefreshError)await G((Q)=>{Q.refresh=Q.refresh??{},Q.refresh.mainLastRefreshError=K_({error:Y,now:Date.now(),refreshToken:H,previous:Q.refresh.mainLastRefreshError})});throw Y}finally{if(A)await G((Y)=>{if(!Y?.refresh)return;if(Y.refresh.mainRefreshLeaseId===A&&Y.refresh.mainRefreshLeaseTokenHash===C)Y.refresh.mainRefreshLeaseId=void 0,Y.refresh.mainRefreshLeaseUntil=void 0,Y.refresh.mainRefreshLeaseTokenHash=void 0}).catch(()=>{});await R?.().catch(()=>{})}}throw Error("Token refresh exhausted all retries")})().finally(()=>{w=null});return w}u=$,v(),L.seedFallbacksFromAccounts((k?.accounts??[]).filter(J0)),O0(k,{activeId:"main",route:"main",mainAccessToken:X.access,mainRefreshToken:X.refresh});async function o(Z,K){if(!Z.body||Z.status!==200)return K?.mark("inspect_stream_skip",{status:Z.status}),{response:Z,rateLimited:!1};if(Z.headers.get("x-cortexkit-relay-optimistic")==="true")return K?.mark("inspect_stream_skip",{status:Z.status,reason:"optimistic_relay"}),{response:Z,rateLimited:!1};let A=f(),C=Z.body.getReader(),R=[],G=new TextDecoder,d="",I=0;while(!d.includes(`
16
16
 
17
- `)&&d.length<65536){let{done:Z,value:z}=await Q.read();if(Z)break;if(R.push(z),_+=z.byteLength,d+=Y.decode(z,{stream:!0}),F(d))break}if(F(d)){await Q.cancel().catch(()=>{});try{Q.releaseLock()}catch{}let Z=new ReadableStream({start(z){for(let H of R)z.enqueue(H);z.close()}});return I?.mark("inspect_stream_first_event",{ms:g(f()-S),bytes:_,rateLimited:!0}),{response:new Response(Z,{status:K.status,statusText:K.statusText,headers:K.headers}),rateLimited:!0}}let v=new ReadableStream({start(Z){for(let z of R)Z.enqueue(z)},async pull(Z){let{done:z,value:H}=await Q.read();if(z){Z.close();return}Z.enqueue(H)},cancel(Z){return Q.cancel(Z)}});return I?.mark("inspect_stream_first_event",{ms:g(f()-S),bytes:_,rateLimited:!1}),{response:new Response(v,{status:K.status,statusText:K.statusText,headers:K.headers}),rateLimited:!1}}async function V0(K,I,S,Q,R="api_fallback",Y){let d=f(),_=v1(K,I),v=_.get("x-session-affinity")||_.get("x-opencode-session"),Z=B(_);_.delete("x-parent-session-id"),_.delete("x-session-affinity"),_.delete("x-opencode-session");let z=I?.body,H=typeof z==="string"?z.length:void 0;if(z&&typeof z==="string"){let q=f(),L=(()=>{if(!F1())return!1;try{return p0(JSON.parse(z).model)}catch{return!1}})();if(z=await y1(z,{cache1hEnabled:!Z&&A0(),cache1hMode:k0(),fastModeEnabled:L,perf:(C,i)=>Q?.mark(`rewrite_body_${C}`,{route:R,...i})}),o(_,S),_.set("anthropic-beta",m0(_.get("anthropic-beta"),[])),L)X1(_);Q?.mark("rewrite_body",{route:R,ms:g(f()-q),originalBytes:H,rewrittenBytes:z.length,cacheEnabled:!Z&&A0(),cacheMode:k0(),fastModeEnabled:L,subagent:Z})}else o(_,S);let U=k1(K,{baseURL:S.baseURL}),a=f(),r;try{r=await fetch(U.input,{...I,body:z,headers:_,...A1()&&{tls:{rejectUnauthorized:!1}}})}catch(q){if(typeof z==="string")await s0({affinity:v,route:R,error:aW(q),bodyText:z,url:U.url?.toString()??K1(U.input),method:Y1(K,I),headers:_});throw q}if(typeof z==="string")await s0({affinity:v,route:R,status:r.status,bodyText:z,url:U.url?.toString()??K1(U.input),method:Y1(K,I),headers:_});return Q?.mark("send_headers_received",{route:R,ms:g(f()-a),status:r.status,relayConfigured:!1,totalSendWithAccessMs:g(f()-d),baseURL:S.baseURL}),r}async function F0(K,I,S,Q,R="unknown",Y){let d=f(),_=Y,v=async()=>{return _??=await T(j),_},Z=v1(K,I),z=Z.get("x-session-affinity")||Z.get("x-opencode-session"),H=B(Z);Z.delete("x-parent-session-id"),Z.delete("x-session-affinity"),Z.delete("x-opencode-session");let U=I?.body,a;if(U&&typeof U==="string"){let e=f();try{let D0=JSON.parse(U);if(typeof D0.model==="string")a=D0.model}catch{}Q?.mark("model_parse_for_identity",{route:R,ms:g(f()-e),bodyBytes:U.length})}let r=f(),q=await d1(S,a);Q?.mark("resolve_claude_code_identity",{route:R,ms:g(f()-r),hasAccountUuid:Boolean(q.accountUuid)});let L=typeof U==="string"?U.length:void 0;if(U&&typeof U==="string"){let e=f(),D0=(()=>{if(!F1())return!1;try{return p0(JSON.parse(U).model)}catch{return!1}})();U=await y1(U,{cache1hEnabled:!H&&A0(),cache1hMode:k0(),fastModeEnabled:D0,identity:q,perf:(Jj,Pj)=>Q?.mark(`rewrite_body_${Jj}`,{route:R,...Pj})});let E0=f();try{i0(Z,S,{body:JSON.parse(U),identity:q}),Q?.mark("set_oauth_headers_body_parse",{route:R,ms:g(f()-E0),bodyBytes:U.length,parsed:!0})}catch{i0(Z,S,{identity:q}),Q?.mark("set_oauth_headers_body_parse",{route:R,ms:g(f()-E0),bodyBytes:U.length,parsed:!1})}if(D0)X1(Z);Q?.mark("rewrite_body",{route:R,ms:g(f()-e),originalBytes:L,rewrittenBytes:U.length,cacheEnabled:!H&&A0(),cacheMode:k0(),fastModeEnabled:D0,subagent:H})}let C=k1(K);if(R==="main"&&typeof U==="string"&&A0()&&k0()==="hybrid"){let e=await v();if(!H||K4(e)){let D0=f(),E0=P0.track({sessionId:z,url:C.url?.toString()??C.input.toString(),headers:Z,bodyText:U,storage:e,cacheMode:"hybrid"});Q?.mark("cachekeep_track",{session:z,ms:g(f()-D0),tracked:E0.tracked,reason:E0.tracked?void 0:E0.reason,bodyBytes:U.length})}}let i=async()=>{try{let e=await fetch(C.input,{...I,body:U,headers:Z,...A1()&&{tls:{rejectUnauthorized:!1}}});if(typeof U==="string")await s0({affinity:z,route:R,status:e.status,bodyText:U,url:C.url?.toString()??K1(C.input),method:Y1(K,I),headers:Z});return e}catch(e){if(typeof U==="string")await s0({affinity:z,route:R,error:aW(e),bodyText:U,url:C.url?.toString()??K1(C.input),method:Y1(K,I),headers:Z});throw e}},G0=JW(await v()),t=f(),J0=await l4({config:G0,input:C.input,init:I,headers:Z,body:U,fallback:i,affinity:z,optimisticResponse:G0?.transport==="websocket"});return Q?.mark("send_headers_received",{route:R,ms:g(f()-t),status:J0.status,relayConfigured:G0!=null,totalSendWithAccessMs:g(f()-d)}),J0}async function Wj(K){if(!K)return!1;try{return await M.refreshMain(K),R1(K)}catch{return!1}}async function P1(K,I={}){let S=await y.getUsableFallbackAccounts(K),Q=new Map(S.map((Y)=>[Y.id,Y])),R=[];for(let Y of K?.accounts??[]){if(N0(Y)){let d=Q.get(Y.id);if(d)R.push(d);continue}if(I.includeApiRoutes===!0&&l0(Y)&&Y.enabled!==!1&&Y.apiKey&&I1(Y.baseURL))R.push(Y)}if(!r0(K))return R;return R.filter((Y)=>N0(Y)?M1(Q0(Y),K,Y.id):!0)}async function $1(K,I,S,Q,R,Y,d){if(!S.length)return R??null;let _=d?.returnLastOnExhausted??!0;await R?.body?.cancel().catch(()=>{});let v=R??null;for(let[Z,z]of S.entries()){let H;if(l0(z)){if(!z.apiKey)continue;H=await V0(K,I,z,Y,`api_fallback_${Z}`,Q)}else{let a=z.access;if(!a)continue;H=await F0(K,I,a,Y,`fallback_${Z}`,Q)}v=H;let U=b1(H.status,Q);if(!U){let a=await c(H,Y);H=a.response,v=H,U=a.rateLimited}if(!U){if(await y.markUsed(z),await d?.onSuccess?.(z),N0(z)&&z.access&&M.shouldRefreshOnRequestCount(K0))M.refreshFallback(z.id,z.access).then(()=>d?.onSuccess?.(z)).catch(()=>{});return H}if(Z<S.length-1||!_)await H.body?.cancel().catch(()=>{})}return _?v:null}async function jj(K,I,S,Q,R,Y,d,_){if(!x(K,I?.body))return S;let v=f(),Z=Y??await T(j);if(R?.mark("fallback_load_storage",{ms:g(f()-v),cached:!!Y}),!(Z?.accounts??[]).some((L)=>L.enabled!==!1&&(N0(L)||l0(L)&&Boolean(L.apiKey)&&I1(L.baseURL))))return S;let H=S,U=b1(H.status,Z),a=GW(H,!1);if(!U){let L=await c(H,R);H=L.response,U=L.rateLimited,a=GW(H,L.rateLimited)}if(!U)return H;let r=!1;if(Q)r=Q.some(l0);else if(a)r=await Wj(d);let q=Q;if(!q){let L=f();q=await P1(Z,{includeApiRoutes:r}),R?.mark("fallback_get_accounts",{ms:g(f()-L),accounts:q.length})}if(r0(Z)){let L=q.length;if(q=q.filter((C)=>N0(C)?M1(Q0(C),Z,C.id):!0),q.length<L)p("[killswitch] filtered fallbacks",{before:L,after:q.length})}return await $1(K,I,q,Z,H,R,{onSuccess:_})??H}return{apiKey:"",async fetch(K,I){let S=I?.body,Q=PJ({bodyBytes:typeof S==="string"?S.length:void 0}),R=f(),Y=await $();if(Q.mark("get_auth",{ms:g(f()-R),authType:Y.type,hasAccess:Boolean(Y.access)}),Y.type!=="oauth"){let L=await fetch(K,I);return Q.done("non_oauth_passthrough",{status:L.status}),L}await q0(Y.refresh);let d=f(),_=await T();Q.mark("load_storage",{ms:g(f()-d)}),M.updateStorage(_),M.seedMainFromStorage(_,Y.access),M.seedFallbacksFromAccounts((_?.accounts??[]).filter(N0));let v=x(K,I?.body);if(v)K0++;if(v&&Y.access&&(!Y.expires||Y.expires>Date.now()))Z0(_,Y.access);let Z=(L,C)=>$0(_,{activeId:L,route:C,mainAccessToken:Y.access,mainRefreshToken:Y.refresh}),z;if(v&&H1(_)==="fallback-first")try{let L=f();z=await P1(_,{includeApiRoutes:R1(Y.access)}),Q.mark("fallback_first_get_accounts",{ms:g(f()-L),accounts:z.length});let C=await $1(K,I,z,_,void 0,Q,{returnLastOnExhausted:!1,onSuccess:(i)=>Z(i.id,"fallback-first")});if(C)return Q.done("return_fallback_first",{status:C.status}),d0(C,{perf:(i,G0)=>Q.mark(i,G0)});z=void 0}catch(L){Q.mark("fallback_first_error",{error:L instanceof Error?L.message:String(L)})}if(!Y.access||!Y.expires||Y.expires<Date.now()){let C=(await T())?.refresh?.mainLastRefreshError;if(Y.refresh&&C&&f0(C,Y.refresh,Date.now()))throw p("[refresh] opencode main oauth request skipped backoff",{nextRetryAt:C.nextRetryAt,retryCount:C.retryCount,expiresInMs:Y.expires?Y.expires-Date.now():void 0}),Error(g1(C,Date.now()));p("[refresh] opencode main oauth refresh required for request",{hasAccess:Boolean(Y.access),expiresInMs:Y.expires?Y.expires-Date.now():void 0,expiredAgoMs:Y.expires&&Y.expires<Date.now()?Date.now()-Y.expires:void 0});let i=f();Y.access=await V(),Q.mark("refresh_main_access",{ms:g(f()-i)})}if(!Y.access)throw Q.done("missing_access_error"),Error("OAuth access token is missing after refresh");function H(){if(_?.quota?.showToasts!==!0)return;let L=M.getMain();if(!L)return;let C=(_?.accounts??[]).filter((t)=>t.enabled!==!1&&N0(t)).map((t)=>({...t,quota:M.getFallback(t.id,t.access)?.quota??t.quota})),i=o0(L.quota,_),G0;if(i)G0="main";else G0=C.find((t)=>o0(t.quota,_))?.id??"main";e4(L.quota,C,G0)}if(v&&b(_))try{let L=f(),C=M.getMain(Y.access),i=C?.quota;if(!i)i=await M.refreshMain(Y.access),C=M.getMain(Y.access),H();else if(M.needsRefresh(K0))if(C0(i))i=await M.refreshMain(Y.access),C=M.getMain(Y.access);else M.refreshMain(Y.access).then(()=>{L0().catch(()=>{}),H()}).catch(()=>{});if($0(_,{activeId:"main",route:"main",mainAccessToken:Y.access,mainRefreshToken:Y.refresh}),Q.mark("main_quota_for_routing",{ms:g(f()-L),passes:o0(i,_)}),!o0(i,_)){let G0=f();z=await P1(_,{includeApiRoutes:Boolean(C&&C.refreshAfter>Date.now()&&C0(C.quota))}),Q.mark("preselect_fallback_accounts",{ms:g(f()-G0),accounts:z.length});let t=await $1(K,I,z,_,void 0,Q,{onSuccess:(J0)=>Z(J0.id,"fallback")});if(t)return Q.done("return_preselected_fallback",{status:t.status}),d0(t,{perf:(J0,e)=>Q.mark(J0,e)})}}catch(L){Q.mark("main_quota_for_routing_error",{error:L instanceof Error?L.message:String(L)})}let U=M.getMain(Y.access)?.quota;if(_?.quota?.failClosedOnUnknownQuota&&!U&&M.isBackedOff()){let L=M.getLastApiError(),C=L?I4(L,Date.now()):"Quota API unavailable";return p("[quota] blocked: quota API backed off (failClosed)",{nextRetryAt:L?.nextRetryAt,retryCount:L?.retryCount}),new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:C}}),{status:429,headers:{"content-type":"application/json","retry-after":String(L?.nextRetryAt?Math.max(1,Math.ceil((L.nextRetryAt-Date.now())/1000)):60)}})}if(r0(_)){if(M.needsRefresh(K0))try{let C=(_?.accounts??[]).filter((i)=>i.enabled!==!1&&N0(i)&&Boolean(i.access));await Promise.all([M.refreshMain(Y.access),M.refreshAllFallbacks(C)])}catch(C){p("[quota] killswitch refresh failed",{error:C instanceof Error?C.message:String(C),backedOff:M.isBackedOff()})}U=M.getMain(Y.access)?.quota}if(r0(_)&&!M1(U,_)){let C=x(K,I?.body)?await P1(_,{includeApiRoutes:R1(Y.access)}):[];if(C.length>0){p("[route] skipping main (killswitch), trying fallbacks");let J0=await $1(K,I,C,_,void 0,Q,{onSuccess:(e)=>Z(e.id,"fallback")});if(J0)return Q.done("return_killswitch_fallback",{status:J0.status}),d0(J0,{perf:(e,D0)=>Q.mark(e,D0)})}let i=Date.now(),G0=(_?.accounts??[]).filter((J0)=>J0.enabled!==!1&&N0(J0)).map((J0)=>({...J0,quota:Q0(J0)})),t=Q4(U,G0,i);return new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:`Killswitch: no routable accounts. Retry in ${Math.floor(t/60)}m ${t%60}s.`}}),{status:429,headers:{"content-type":"application/json","retry-after":String(t)}})}let a=await F0(K,I,Y.access,Q,"main",_),r=!1,q=await jj(K,I,a,z,Q,_,Y.access,(L)=>{r=!0,Z(L.id,"fallback")});if(!r)Z("main","main");return Q.done("return_response",{status:q.status}),d0(q,{perf:(L,C)=>Q.mark(L,C)})}}}return{}},methods:[{label:"Claude Pro/Max",type:"oauth",authorize:async()=>{let $=await _1("max");return{url:$.url,instructions:"Paste the authorization code here:",method:"code",callback:async(G)=>{return D1(G,$.verifier,$.redirectUri,$.state)}}}},{label:"Create an API Key",type:"oauth",authorize:async()=>{let $=await _1("console");return{url:$.url,instructions:"Paste the authorization code here:",method:"code",callback:async(G)=>{let X=await D1(G,$.verifier,$.redirectUri,$.state);if(X.type==="failed")return X;return{type:"success",key:(await fetch("https://api.anthropic.com/api/oauth/claude_cli/create_api_key",{method:"POST",headers:{"Content-Type":"application/json",authorization:`Bearer ${X.access}`}}).then((V)=>V.json())).raw_key}}}}},{provider:"anthropic",label:"Manually enter API Key",type:"api"}]}}};export{SJ as AnthropicAuthPlugin};
17
+ `)&&d.length<65536){let{done:Y,value:z}=await C.read();if(Y)break;if(R.push(z),I+=z.byteLength,d+=G.decode(z,{stream:!0}),B(d))break}if(B(d)){await C.cancel().catch(()=>{});try{C.releaseLock()}catch{}let Y=new ReadableStream({start(z){for(let H of R)z.enqueue(H);z.close()}});return K?.mark("inspect_stream_first_event",{ms:g(f()-A),bytes:I,rateLimited:!0}),{response:new Response(Y,{status:Z.status,statusText:Z.statusText,headers:Z.headers}),rateLimited:!0}}let S=new ReadableStream({start(Y){for(let z of R)Y.enqueue(z)},async pull(Y){let{done:z,value:H}=await C.read();if(z){Y.close();return}Y.enqueue(H)},cancel(Y){return C.cancel(Y)}});return K?.mark("inspect_stream_first_event",{ms:g(f()-A),bytes:I,rateLimited:!1}),{response:new Response(S,{status:Z.status,statusText:Z.statusText,headers:Z.headers}),rateLimited:!1}}async function X0(Z,K,A,C,R="api_fallback",G){let d=f(),I=SD(Z,K),S=I.get("x-session-affinity")||I.get("x-opencode-session"),Y=U(I);I.delete("x-parent-session-id"),I.delete("x-session-affinity"),I.delete("x-opencode-session");let z=K?.body,H=typeof z==="string"?z.length:void 0;if(z&&typeof z==="string"){let E=f(),M=(()=>{if(!BD())return!1;try{return i0(JSON.parse(z).model)}catch{return!1}})();if(z=await yD(z,{cache1hEnabled:!Y&&v0(),cache1hMode:k0(),fastModeEnabled:M,perf:(F,p)=>C?.mark(`rewrite_body_${F}`,{route:R,...p})}),r(I,A),I.set("anthropic-beta",m0(I.get("anthropic-beta"),[])),M)XD(I);C?.mark("rewrite_body",{route:R,ms:g(f()-E),originalBytes:H,rewrittenBytes:z.length,cacheEnabled:!Y&&v0(),cacheMode:k0(),fastModeEnabled:M,subagent:Y})}else r(I,A);let Q=kD(Z,{baseURL:A.baseURL}),e=f(),t;try{t=await fetch(Q.input,{...K,body:z,headers:I,...vD()&&{tls:{rejectUnauthorized:!1}}})}catch(E){if(typeof z==="string")await s0({affinity:S,route:R,error:D_(E),bodyText:z,url:Q.url?.toString()??ZD(Q.input),method:GD(Z,K),headers:I});throw E}if(typeof z==="string")await s0({affinity:S,route:R,status:t.status,bodyText:z,url:Q.url?.toString()??ZD(Q.input),method:GD(Z,K),headers:I});return C?.mark("send_headers_received",{route:R,ms:g(f()-e),status:t.status,relayConfigured:!1,totalSendWithAccessMs:g(f()-d),baseURL:A.baseURL}),t}async function B0(Z,K,A,C,R="unknown",G){let d=f(),I=G,S=async()=>{return I??=await T(O),I},Y=SD(Z,K),z=Y.get("x-session-affinity")||Y.get("x-opencode-session"),H=U(Y);Y.delete("x-parent-session-id"),Y.delete("x-session-affinity"),Y.delete("x-opencode-session");let Q=K?.body,e;if(Q&&typeof Q==="string"){let D0=f();try{let V0=JSON.parse(Q);if(typeof V0.model==="string")e=V0.model}catch{}C?.mark("model_parse_for_identity",{route:R,ms:g(f()-D0),bodyBytes:Q.length})}let t=f(),E=await lD(A,e);C?.mark("resolve_claude_code_identity",{route:R,ms:g(f()-t),hasAccountUuid:Boolean(E.accountUuid)});let M=typeof Q==="string"?Q.length:void 0;if(Q&&typeof Q==="string"){let D0=f(),V0=(()=>{if(!BD())return!1;try{return i0(JSON.parse(Q).model)}catch{return!1}})();Q=await yD(Q,{cache1hEnabled:!H&&v0(),cache1hMode:k0(),fastModeEnabled:V0,identity:E,perf:(N1,j1)=>C?.mark(`rewrite_body_${N1}`,{route:R,...j1})});let q0=f();try{p0(Y,A,{body:JSON.parse(Q),identity:E}),C?.mark("set_oauth_headers_body_parse",{route:R,ms:g(f()-q0),bodyBytes:Q.length,parsed:!0})}catch{p0(Y,A,{identity:E}),C?.mark("set_oauth_headers_body_parse",{route:R,ms:g(f()-q0),bodyBytes:Q.length,parsed:!1})}if(V0)XD(Y);C?.mark("rewrite_body",{route:R,ms:g(f()-D0),originalBytes:M,rewrittenBytes:Q.length,cacheEnabled:!H&&v0(),cacheMode:k0(),fastModeEnabled:V0,subagent:H})}let F=kD(Z);if(R==="main"&&typeof Q==="string"&&v0()&&k0()==="hybrid"){let D0=await S();if(!H||I_(D0)){let V0=f(),q0=N0.track({sessionId:z,url:F.url?.toString()??F.input.toString(),headers:Y,bodyText:Q,storage:D0,cacheMode:"hybrid"});C?.mark("cachekeep_track",{session:z,ms:g(f()-V0),tracked:q0.tracked,reason:q0.tracked?void 0:q0.reason,bodyBytes:Q.length})}}let p=async()=>{try{let D0=await fetch(F.input,{...K,body:Q,headers:Y,...vD()&&{tls:{rejectUnauthorized:!1}}});if(typeof Q==="string")await s0({affinity:z,route:R,status:D0.status,bodyText:Q,url:F.url?.toString()??ZD(F.input),method:GD(Z,K),headers:Y});return D0}catch(D0){if(typeof Q==="string")await s0({affinity:z,route:R,error:D_(D0),bodyText:Q,url:F.url?.toString()??ZD(F.input),method:GD(Z,K),headers:Y});throw D0}},P0=_O(await S()),s=f(),W0=await u_({config:P0,input:F.input,init:K,headers:Y,body:Q,fallback:p,affinity:z,optimisticResponse:P0?.transport==="websocket"});return C?.mark("send_headers_received",{route:R,ms:g(f()-s),status:W0.status,relayConfigured:P0!=null,totalSendWithAccessMs:g(f()-d)}),W0}async function _1(Z){if(!Z)return!1;try{return await L.refreshMain(Z),RD(Z)}catch{return!1}}async function WD(Z,K={}){let A=await y.getUsableFallbackAccounts(Z),C=new Map(A.map((G)=>[G.id,G])),R=[];for(let G of Z?.accounts??[]){if(J0(G)){let d=C.get(G.id);if(d)R.push(d);continue}if(K.includeApiRoutes===!0&&d0(G)&&G.enabled!==!1&&G.apiKey&&KD(G.baseURL))R.push(G)}if(!r0(Z))return R;return R.filter((G)=>J0(G)?MD(w0(G),Z,G.id):!0)}async function ND(Z,K,A,C,R,G,d){if(!A.length)return R??null;let I=d?.returnLastOnExhausted??!0;await R?.body?.cancel().catch(()=>{});let S=R??null;for(let[Y,z]of A.entries()){let H;if(d0(z)){if(!z.apiKey)continue;H=await X0(Z,K,z,G,`api_fallback_${Y}`,C)}else{let e=z.access;if(!e)continue;H=await B0(Z,K,e,G,`fallback_${Y}`,C)}S=H;let Q=bD(H.status,C);if(!Q){let e=await o(H,G);H=e.response,S=H,Q=e.rateLimited}if(!Q){if(await y.markUsed(z),await d?.onSuccess?.(z),J0(z)&&z.access&&L.shouldRefreshOnRequestCount(Z0))L.refreshFallback(z.id,z.access).then(()=>d?.onSuccess?.(z)).catch(()=>{});return H}if(Y<A.length-1||!I)await H.body?.cancel().catch(()=>{})}return I?S:null}async function W1(Z,K,A,C,R,G,d,I){if(!x(Z,K?.body))return A;let S=f(),Y=G??await T(O);if(R?.mark("fallback_load_storage",{ms:g(f()-S),cached:!!G}),!(Y?.accounts??[]).some((M)=>M.enabled!==!1&&(J0(M)||d0(M)&&Boolean(M.apiKey)&&KD(M.baseURL))))return A;let H=A,Q=bD(H.status,Y),e=PO(H,!1);if(!Q){let M=await o(H,R);H=M.response,Q=M.rateLimited,e=PO(H,M.rateLimited)}if(!Q)return H;let t=!1;if(C)t=C.some(d0);else if(e)t=await _1(d);let E=C;if(!E){let M=f();E=await WD(Y,{includeApiRoutes:t}),R?.mark("fallback_get_accounts",{ms:g(f()-M),accounts:E.length})}if(r0(Y)){let M=E.length;if(E=E.filter((F)=>J0(F)?MD(w0(F),Y,F.id):!0),E.length<M)i("[killswitch] filtered fallbacks",{before:M,after:E.length})}return await ND(Z,K,E,Y,H,R,{onSuccess:I})??H}return{apiKey:"",async fetch(Z,K){let A=K?.body,C=PW({bodyBytes:typeof A==="string"?A.length:void 0}),R=f(),G=await N();if(C.mark("get_auth",{ms:g(f()-R),authType:G.type,hasAccess:Boolean(G.access)}),G.type!=="oauth"){let M=await fetch(Z,K);return C.done("non_oauth_passthrough",{status:M.status}),M}await E0(G.refresh);let d=f(),I=await T();C.mark("load_storage",{ms:g(f()-d)}),L.updateStorage(I),L.seedMainFromStorage(I,G.access),L.seedFallbacksFromAccounts((I?.accounts??[]).filter(J0));let S=x(Z,K?.body);if(S)Z0++;if(S&&G.access&&(!G.expires||G.expires>Date.now()))$0(I,G.access);let Y=(M,F)=>O0(I,{activeId:M,route:F,mainAccessToken:G.access,mainRefreshToken:G.refresh}),z;if(S&&HD(I)==="fallback-first")try{let M=f();z=await WD(I,{includeApiRoutes:RD(G.access)}),C.mark("fallback_first_get_accounts",{ms:g(f()-M),accounts:z.length});let F=await ND(Z,K,z,I,void 0,C,{returnLastOnExhausted:!1,onSuccess:(p)=>Y(p.id,"fallback-first")});if(F)return C.done("return_fallback_first",{status:F.status}),l0(F,{perf:(p,P0)=>C.mark(p,P0)});z=void 0}catch(M){C.mark("fallback_first_error",{error:M instanceof Error?M.message:String(M)})}if(!G.access||!G.expires||G.expires<Date.now()){let F=(await T())?.refresh?.mainLastRefreshError;if(G.refresh&&F&&f0(F,G.refresh,Date.now()))throw i("[refresh] opencode main oauth request skipped backoff",{nextRetryAt:F.nextRetryAt,retryCount:F.retryCount,expiresInMs:G.expires?G.expires-Date.now():void 0}),Error(gD(F,Date.now()));i("[refresh] opencode main oauth refresh required for request",{hasAccess:Boolean(G.access),expiresInMs:G.expires?G.expires-Date.now():void 0,expiredAgoMs:G.expires&&G.expires<Date.now()?Date.now()-G.expires:void 0});let p=f();G.access=await $(),C.mark("refresh_main_access",{ms:g(f()-p)})}if(!G.access)throw C.done("missing_access_error"),Error("OAuth access token is missing after refresh");function H(){if(I?.quota?.showToasts!==!0)return;let M=L.getMain();if(!M)return;let F=(I?.accounts??[]).filter((s)=>s.enabled!==!1&&J0(s)).map((s)=>({...s,quota:L.getFallback(s.id,s.access)?.quota??s.quota})),p=o0(M.quota,I),P0;if(p)P0="main";else P0=F.find((s)=>o0(s.quota,I))?.id??"main";O1(M.quota,F,P0)}if(S&&b(I))try{let M=f(),F=L.getMain(G.access),p=F?.quota;if(!p)p=await L.refreshMain(G.access),F=L.getMain(G.access),H();else if(L.needsRefresh(Z0))if(F0(p))p=await L.refreshMain(G.access),F=L.getMain(G.access);else L.refreshMain(G.access).then(()=>{U0().catch(()=>{}),H()}).catch(()=>{});if(O0(I,{activeId:"main",route:"main",mainAccessToken:G.access,mainRefreshToken:G.refresh}),C.mark("main_quota_for_routing",{ms:g(f()-M),passes:o0(p,I)}),!o0(p,I)){let P0=f();z=await WD(I,{includeApiRoutes:Boolean(F&&F.refreshAfter>Date.now()&&F0(F.quota))}),C.mark("preselect_fallback_accounts",{ms:g(f()-P0),accounts:z.length});let s=await ND(Z,K,z,I,void 0,C,{onSuccess:(W0)=>Y(W0.id,"fallback")});if(s)return C.done("return_preselected_fallback",{status:s.status}),l0(s,{perf:(W0,D0)=>C.mark(W0,D0)})}}catch(M){C.mark("main_quota_for_routing_error",{error:M instanceof Error?M.message:String(M)})}let Q=L.getMain(G.access)?.quota;if(I?.quota?.failClosedOnUnknownQuota&&!Q&&L.isBackedOff()){let M=L.getLastApiError(),F=M?w_(M,Date.now()):"Quota API unavailable";return i("[quota] blocked: quota API backed off (failClosed)",{nextRetryAt:M?.nextRetryAt,retryCount:M?.retryCount}),new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:F}}),{status:429,headers:{"content-type":"application/json","retry-after":String(M?.nextRetryAt?Math.max(1,Math.ceil((M.nextRetryAt-Date.now())/1000)):60)}})}if(r0(I)){if(L.needsRefresh(Z0))try{let F=(I?.accounts??[]).filter((p)=>p.enabled!==!1&&J0(p)&&Boolean(p.access));await Promise.all([L.refreshMain(G.access),L.refreshAllFallbacks(F)])}catch(F){i("[quota] killswitch refresh failed",{error:F instanceof Error?F.message:String(F),backedOff:L.isBackedOff()})}Q=L.getMain(G.access)?.quota}if(r0(I)&&!MD(Q,I)){let F=x(Z,K?.body)?await WD(I,{includeApiRoutes:RD(G.access)}):[];if(F.length>0){i("[route] skipping main (killswitch), trying fallbacks");let W0=await ND(Z,K,F,I,void 0,C,{onSuccess:(D0)=>Y(D0.id,"fallback")});if(W0)return C.done("return_killswitch_fallback",{status:W0.status}),l0(W0,{perf:(D0,V0)=>C.mark(D0,V0)})}let p=Date.now(),P0=(I?.accounts??[]).filter((W0)=>W0.enabled!==!1&&J0(W0)).map((W0)=>({...W0,quota:w0(W0)})),s=M_(Q,P0,p);return new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:`Killswitch: no routable accounts. Retry in ${Math.floor(s/60)}m ${s%60}s.`}}),{status:429,headers:{"content-type":"application/json","retry-after":String(s)}})}let e=await B0(Z,K,G.access,C,"main",I),t=!1,E=await W1(Z,K,e,z,C,I,G.access,(M)=>{t=!0,Y(M.id,"fallback")});if(!t)Y("main","main");return C.done("return_response",{status:E.status}),l0(E,{perf:(M,F)=>C.mark(M,F)})}}}return{}},methods:[{label:"Claude Pro/Max",type:"oauth",authorize:async()=>{let N=await ID("max");return{url:N.url,instructions:"Paste the authorization code here:",method:"code",callback:async(P)=>{return VD(P,N.verifier,N.redirectUri,N.state)}}}},{label:"Create an API Key",type:"oauth",authorize:async()=>{let N=await ID("console");return{url:N.url,instructions:"Paste the authorization code here:",method:"code",callback:async(P)=>{let X=await VD(P,N.verifier,N.redirectUri,N.state);if(X.type==="failed")return X;return{type:"success",key:(await fetch("https://api.anthropic.com/api/oauth/claude_cli/create_api_key",{method:"POST",headers:{"Content-Type":"application/json",authorization:`Bearer ${X.access}`}}).then(($)=>$.json())).raw_key}}}}},{provider:"anthropic",label:"Manually enter API Key",type:"api"}]}}};export{kW as AnthropicAuthPlugin};
@@ -1 +1 @@
1
- import{kb as a,lb as b,mb as c,nb as d,ob as e,pb as f,qb as g,rb as h,sb as i,tb as j,ub as k,vb as l,wb as m}from"./index-zfddfgk2.js";import"./index-7hq52c3b.js";export{d as shouldEmit,b as setLogLevel,m as relayLog,h as redactPayload,a as parseLogLevel,k as logger,l as log,g as isSecretKey,c as getLogLevel,e as getLogFilePath,i as formatLogLine,j as __setLogTestSink,f as SECRET_KEY_EXACT};
1
+ import{mb as a,nb as b,ob as c,pb as d,qb as e,rb as f,sb as g,tb as h,ub as i,vb as j,wb as k,xb as l,yb as m}from"./index-z86v5q5a.js";import"./index-ptdkq8gx.js";export{d as shouldEmit,b as setLogLevel,m as relayLog,h as redactPayload,a as parseLogLevel,k as logger,l as log,g as isSecretKey,c as getLogLevel,e as getLogFilePath,i as formatLogLine,j as __setLogTestSink,f as SECRET_KEY_EXACT};
@@ -1 +1 @@
1
- import{Ib as a,Jb as b}from"../index-srn1rawx.js";import"../index-7hq52c3b.js";export{a as writePortFile,b as discoverPortFile};
1
+ import{Kb as a,Lb as b}from"../index-ggyzz0xr.js";import"../index-ptdkq8gx.js";export{a as writePortFile,b as discoverPortFile};
@@ -1 +1 @@
1
- import{Jb as l}from"../index-srn1rawx.js";import"../index-7hq52c3b.js";async function a(n,e,t,o){let r=await l(n,o);if(!r)return null;let i=new AbortController,p=setTimeout(()=>i.abort(),2000);try{let s=await fetch(`http://127.0.0.1:${r.port}/rpc/${e}`,{method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${r.token}`},body:JSON.stringify(t),signal:i.signal});if(!s.ok)return null;return await s.json()}catch{return null}finally{clearTimeout(p)}}function u(n,e){return{async pending(t,o){return(await a(n,"pending-notifications",{lastReceivedId:t,sessionId:o},e))?.messages??[]},async apply(t){return await a(n,"apply",{...t},e)??{text:"apply failed",knobs:{}}}}}export{u as createRpcClient};
1
+ import{Lb as l}from"../index-ggyzz0xr.js";import"../index-ptdkq8gx.js";async function a(n,e,t,o){let r=await l(n,o);if(!r)return null;let i=new AbortController,p=setTimeout(()=>i.abort(),2000);try{let s=await fetch(`http://127.0.0.1:${r.port}/rpc/${e}`,{method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${r.token}`},body:JSON.stringify(t),signal:i.signal});if(!s.ok)return null;return await s.json()}catch{return null}finally{clearTimeout(p)}}function u(n,e){return{async pending(t,o){return(await a(n,"pending-notifications",{lastReceivedId:t,sessionId:o},e))?.messages??[]},async apply(t){return await a(n,"apply",{...t},e)??{text:"apply failed",knobs:{}}}}}export{u as createRpcClient};
@@ -1 +1 @@
1
- import{Kb as a,Lb as b}from"../index-vhcx8tx6.js";import"../index-7hq52c3b.js";export{a as tmpdir,b as getRpcDir};
1
+ import{Mb as a,Nb as b}from"../index-9rxvhx0b.js";import"../index-ptdkq8gx.js";export{a as tmpdir,b as getRpcDir};
@@ -1 +1 @@
1
- import{Ab as d,Bb as e,Cb as f,Db as g,Eb as h,Fb as i,Gb as j,Hb as k,xb as a,yb as b,zb as c}from"./index-7f07xr7k.js";import"./index-7hq52c3b.js";export{e as setSidebarState,g as resolveActiveAccount,c as normalizeSidebarState,a as getSidebarStateFile,d as getSidebarState,h as getCollapsedQuotaSummary,f as drainSidebarWrites,k as computeQuotaPacing,j as SEVEN_DAY_MS,i as FIVE_HOUR_MS,b as DEFAULT_SIDEBAR_STATE};
1
+ import{Ab as b,Bb as c,Cb as d,Db as e,Eb as f,Fb as g,Gb as h,Hb as i,Ib as j,Jb as k,zb as a}from"./index-erkja50x.js";import"./index-ptdkq8gx.js";export{e as setSidebarState,g as resolveActiveAccount,c as normalizeSidebarState,a as getSidebarStateFile,d as getSidebarState,h as getCollapsedQuotaSummary,f as drainSidebarWrites,k as computeQuotaPacing,j as SEVEN_DAY_MS,i as FIVE_HOUR_MS,b as DEFAULT_SIDEBAR_STATE};
@@ -1,4 +1,4 @@
1
- import{Mb as c,Nb as C,Ob as h}from"./index-7hq52c3b.js";var m=C((v,k)=>{(function(Q){if(typeof k==="object"&&typeof k.exports==="object"){var J=Q(h,v);if(J!==void 0)k.exports=J}else if(typeof define==="function"&&define.amd)define(["require","exports","./impl/format","./impl/edit","./impl/scanner","./impl/parser"],Q)})(function(Q,J){Object.defineProperty(J,"__esModule",{value:!0}),J.applyEdits=J.modify=J.format=J.printParseErrorCode=J.ParseErrorCode=J.stripComments=J.visit=J.getNodeValue=J.getNodePath=J.findNodeAtOffset=J.findNodeAtLocation=J.parseTree=J.parse=J.getLocation=J.SyntaxKind=J.ScanError=J.createScanner=void 0;let X=Q("./impl/format"),Z=Q("./impl/edit"),$=Q("./impl/scanner"),G=Q("./impl/parser");J.createScanner=$.createScanner;var V;(function(z){z[z.None=0]="None",z[z.UnexpectedEndOfComment=1]="UnexpectedEndOfComment",z[z.UnexpectedEndOfString=2]="UnexpectedEndOfString",z[z.UnexpectedEndOfNumber=3]="UnexpectedEndOfNumber",z[z.InvalidUnicode=4]="InvalidUnicode",z[z.InvalidEscapeCharacter=5]="InvalidEscapeCharacter",z[z.InvalidCharacter=6]="InvalidCharacter"})(V||(J.ScanError=V={}));var Y;(function(z){z[z.OpenBraceToken=1]="OpenBraceToken",z[z.CloseBraceToken=2]="CloseBraceToken",z[z.OpenBracketToken=3]="OpenBracketToken",z[z.CloseBracketToken=4]="CloseBracketToken",z[z.CommaToken=5]="CommaToken",z[z.ColonToken=6]="ColonToken",z[z.NullKeyword=7]="NullKeyword",z[z.TrueKeyword=8]="TrueKeyword",z[z.FalseKeyword=9]="FalseKeyword",z[z.StringLiteral=10]="StringLiteral",z[z.NumericLiteral=11]="NumericLiteral",z[z.LineCommentTrivia=12]="LineCommentTrivia",z[z.BlockCommentTrivia=13]="BlockCommentTrivia",z[z.LineBreakTrivia=14]="LineBreakTrivia",z[z.Trivia=15]="Trivia",z[z.Unknown=16]="Unknown",z[z.EOF=17]="EOF"})(Y||(J.SyntaxKind=Y={})),J.getLocation=G.getLocation,J.parse=G.parse,J.parseTree=G.parseTree,J.findNodeAtLocation=G.findNodeAtLocation,J.findNodeAtOffset=G.findNodeAtOffset,J.getNodePath=G.getNodePath,J.getNodeValue=G.getNodeValue,J.visit=G.visit,J.stripComments=G.stripComments;var L;(function(z){z[z.InvalidSymbol=1]="InvalidSymbol",z[z.InvalidNumberFormat=2]="InvalidNumberFormat",z[z.PropertyNameExpected=3]="PropertyNameExpected",z[z.ValueExpected=4]="ValueExpected",z[z.ColonExpected=5]="ColonExpected",z[z.CommaExpected=6]="CommaExpected",z[z.CloseBraceExpected=7]="CloseBraceExpected",z[z.CloseBracketExpected=8]="CloseBracketExpected",z[z.EndOfFileExpected=9]="EndOfFileExpected",z[z.InvalidCommentToken=10]="InvalidCommentToken",z[z.UnexpectedEndOfComment=11]="UnexpectedEndOfComment",z[z.UnexpectedEndOfString=12]="UnexpectedEndOfString",z[z.UnexpectedEndOfNumber=13]="UnexpectedEndOfNumber",z[z.InvalidUnicode=14]="InvalidUnicode",z[z.InvalidEscapeCharacter=15]="InvalidEscapeCharacter",z[z.InvalidCharacter=16]="InvalidCharacter"})(L||(J.ParseErrorCode=L={}));function B(z){switch(z){case 1:return"InvalidSymbol";case 2:return"InvalidNumberFormat";case 3:return"PropertyNameExpected";case 4:return"ValueExpected";case 5:return"ColonExpected";case 6:return"CommaExpected";case 7:return"CloseBraceExpected";case 8:return"CloseBracketExpected";case 9:return"EndOfFileExpected";case 10:return"InvalidCommentToken";case 11:return"UnexpectedEndOfComment";case 12:return"UnexpectedEndOfString";case 13:return"UnexpectedEndOfNumber";case 14:return"InvalidUnicode";case 15:return"InvalidEscapeCharacter";case 16:return"InvalidCharacter"}return"<unknown ParseErrorCode>"}J.printParseErrorCode=B;function j(z,H,N){return X.format(z,H,N)}J.format=j;function A(z,H,N,R){return Z.setProperty(z,H,N,R)}J.modify=A;function O(z,H){let N=H.slice(0).sort((U,D)=>{let T=U.offset-D.offset;if(T===0)return U.length-D.length;return T}),R=z.length;for(let U=N.length-1;U>=0;U--){let D=N[U];if(D.offset+D.length<=R)z=Z.applyEdit(z,D);else throw Error("Overlapping edit");R=D.offset}return z}J.applyEdits=O})});var q=c(m(),1);import{watch as y}from"node:fs";import{mkdir as S,readFile as w,rename as E,writeFile as p}from"node:fs/promises";import{homedir as l}from"node:os";import{basename as x,dirname as P,join as _}from"node:path";import{clearTimeout as F,setTimeout as f}from"node:timers";var i="OPENCODE_TUI_PREFERENCES_FILE",s="tui-preferences.jsonc";function b(){let Q=process.env[i];if(Q)return Q;let J=process.env.OPENCODE_CONFIG_DIR||_(process.env.XDG_CONFIG_HOME||_(l(),".config"),"opencode");return _(J,s)}function I(Q){return typeof Q==="object"&&Q!==null&&!Array.isArray(Q)}async function Vz(){try{let Q=await w(b(),"utf8"),J=[],X=q.parse(Q,J,{allowTrailingComma:!0});if(J.length>0)return{};return I(X)?X:{}}catch{return{}}}var d="anthropic-auth",n=160,u={forceToTop:!1,order:n,startCollapsed:!1,rememberCollapsed:!0,collapsed:null,pollMs:1500,refreshDebounceMs:200,header:{label:"CLAUDE",showVersion:!0},sections:{quota:!0,fallbackAccounts:!0,routing:!0,cache:!0,health:!0,pacing:!0},appearance:{barWidth:10,barFilledChar:"█",barEmptyChar:"░",warnThreshold:50,errorThreshold:80}};function W(Q,J){return typeof Q==="boolean"?Q:J}function M(Q,J,X,Z){if(typeof Q!=="number"||!Number.isFinite(Q))return J;return Math.min(Math.max(Math.round(Q),X),Z)}function a(Q,J,X){if(typeof Q!=="string"||Q.length===0)return J;return Q.slice(0,X)}function K(Q,J){if(typeof Q!=="string")return J;return[...Q][0]??J}function Yz(Q){let J=Q[d];if(!I(J))return structuredClone(u);let X=u,Z=I(J.header)?J.header:{},$=I(J.sections)?J.sections:{},G=I(J.appearance)?J.appearance:{},V=M(G.warnThreshold,X.appearance.warnThreshold,0,99),Y=Math.max(M(G.errorThreshold,X.appearance.errorThreshold,0,100),Math.min(V+1,100));return{forceToTop:W(J.forceToTop,X.forceToTop),order:M(J.order,X.order,-1e4,1e4),startCollapsed:W(J.startCollapsed,X.startCollapsed),rememberCollapsed:W(J.rememberCollapsed,X.rememberCollapsed),collapsed:typeof J.collapsed==="boolean"?J.collapsed:null,pollMs:M(J.pollMs,X.pollMs,500,30000),refreshDebounceMs:M(J.refreshDebounceMs,X.refreshDebounceMs,50,5000),header:{label:a(Z.label,X.header.label,20),showVersion:W(Z.showVersion,X.header.showVersion)},sections:{quota:W($.quota,X.sections.quota),fallbackAccounts:W($.fallbackAccounts,X.sections.fallbackAccounts),routing:W($.routing,X.sections.routing),cache:W($.cache,X.sections.cache),health:W($.health,X.sections.health),pacing:W($.pacing,X.sections.pacing)},appearance:{barWidth:M(G.barWidth,X.appearance.barWidth,4,40),barFilledChar:K(G.barFilledChar,X.appearance.barFilledChar),barEmptyChar:K(G.barEmptyChar,X.appearance.barEmptyChar),warnThreshold:V,errorThreshold:Y}}}var t=-1e5;function Hz(Q,J,X){let Z=Q[J];if(!I(Z))return X;if(Z.forceToTop===!0)return t+Object.keys(Q).indexOf(J);return M(Z.order,X,-1e4,1e4)}var o=`// Shared preferences for opencode TUI plugins.
1
+ import{Ob as c,Pb as C,Qb as h}from"./index-ptdkq8gx.js";var m=C((v,k)=>{(function(Q){if(typeof k==="object"&&typeof k.exports==="object"){var J=Q(h,v);if(J!==void 0)k.exports=J}else if(typeof define==="function"&&define.amd)define(["require","exports","./impl/format","./impl/edit","./impl/scanner","./impl/parser"],Q)})(function(Q,J){Object.defineProperty(J,"__esModule",{value:!0}),J.applyEdits=J.modify=J.format=J.printParseErrorCode=J.ParseErrorCode=J.stripComments=J.visit=J.getNodeValue=J.getNodePath=J.findNodeAtOffset=J.findNodeAtLocation=J.parseTree=J.parse=J.getLocation=J.SyntaxKind=J.ScanError=J.createScanner=void 0;let X=Q("./impl/format"),Z=Q("./impl/edit"),$=Q("./impl/scanner"),G=Q("./impl/parser");J.createScanner=$.createScanner;var V;(function(z){z[z.None=0]="None",z[z.UnexpectedEndOfComment=1]="UnexpectedEndOfComment",z[z.UnexpectedEndOfString=2]="UnexpectedEndOfString",z[z.UnexpectedEndOfNumber=3]="UnexpectedEndOfNumber",z[z.InvalidUnicode=4]="InvalidUnicode",z[z.InvalidEscapeCharacter=5]="InvalidEscapeCharacter",z[z.InvalidCharacter=6]="InvalidCharacter"})(V||(J.ScanError=V={}));var Y;(function(z){z[z.OpenBraceToken=1]="OpenBraceToken",z[z.CloseBraceToken=2]="CloseBraceToken",z[z.OpenBracketToken=3]="OpenBracketToken",z[z.CloseBracketToken=4]="CloseBracketToken",z[z.CommaToken=5]="CommaToken",z[z.ColonToken=6]="ColonToken",z[z.NullKeyword=7]="NullKeyword",z[z.TrueKeyword=8]="TrueKeyword",z[z.FalseKeyword=9]="FalseKeyword",z[z.StringLiteral=10]="StringLiteral",z[z.NumericLiteral=11]="NumericLiteral",z[z.LineCommentTrivia=12]="LineCommentTrivia",z[z.BlockCommentTrivia=13]="BlockCommentTrivia",z[z.LineBreakTrivia=14]="LineBreakTrivia",z[z.Trivia=15]="Trivia",z[z.Unknown=16]="Unknown",z[z.EOF=17]="EOF"})(Y||(J.SyntaxKind=Y={})),J.getLocation=G.getLocation,J.parse=G.parse,J.parseTree=G.parseTree,J.findNodeAtLocation=G.findNodeAtLocation,J.findNodeAtOffset=G.findNodeAtOffset,J.getNodePath=G.getNodePath,J.getNodeValue=G.getNodeValue,J.visit=G.visit,J.stripComments=G.stripComments;var L;(function(z){z[z.InvalidSymbol=1]="InvalidSymbol",z[z.InvalidNumberFormat=2]="InvalidNumberFormat",z[z.PropertyNameExpected=3]="PropertyNameExpected",z[z.ValueExpected=4]="ValueExpected",z[z.ColonExpected=5]="ColonExpected",z[z.CommaExpected=6]="CommaExpected",z[z.CloseBraceExpected=7]="CloseBraceExpected",z[z.CloseBracketExpected=8]="CloseBracketExpected",z[z.EndOfFileExpected=9]="EndOfFileExpected",z[z.InvalidCommentToken=10]="InvalidCommentToken",z[z.UnexpectedEndOfComment=11]="UnexpectedEndOfComment",z[z.UnexpectedEndOfString=12]="UnexpectedEndOfString",z[z.UnexpectedEndOfNumber=13]="UnexpectedEndOfNumber",z[z.InvalidUnicode=14]="InvalidUnicode",z[z.InvalidEscapeCharacter=15]="InvalidEscapeCharacter",z[z.InvalidCharacter=16]="InvalidCharacter"})(L||(J.ParseErrorCode=L={}));function B(z){switch(z){case 1:return"InvalidSymbol";case 2:return"InvalidNumberFormat";case 3:return"PropertyNameExpected";case 4:return"ValueExpected";case 5:return"ColonExpected";case 6:return"CommaExpected";case 7:return"CloseBraceExpected";case 8:return"CloseBracketExpected";case 9:return"EndOfFileExpected";case 10:return"InvalidCommentToken";case 11:return"UnexpectedEndOfComment";case 12:return"UnexpectedEndOfString";case 13:return"UnexpectedEndOfNumber";case 14:return"InvalidUnicode";case 15:return"InvalidEscapeCharacter";case 16:return"InvalidCharacter"}return"<unknown ParseErrorCode>"}J.printParseErrorCode=B;function j(z,H,N){return X.format(z,H,N)}J.format=j;function A(z,H,N,R){return Z.setProperty(z,H,N,R)}J.modify=A;function O(z,H){let N=H.slice(0).sort((U,D)=>{let T=U.offset-D.offset;if(T===0)return U.length-D.length;return T}),R=z.length;for(let U=N.length-1;U>=0;U--){let D=N[U];if(D.offset+D.length<=R)z=Z.applyEdit(z,D);else throw Error("Overlapping edit");R=D.offset}return z}J.applyEdits=O})});var q=c(m(),1);import{watch as y}from"node:fs";import{mkdir as S,readFile as w,rename as E,writeFile as p}from"node:fs/promises";import{homedir as l}from"node:os";import{basename as x,dirname as P,join as _}from"node:path";import{clearTimeout as F,setTimeout as f}from"node:timers";var i="OPENCODE_TUI_PREFERENCES_FILE",s="tui-preferences.jsonc";function b(){let Q=process.env[i];if(Q)return Q;let J=process.env.OPENCODE_CONFIG_DIR||_(process.env.XDG_CONFIG_HOME||_(l(),".config"),"opencode");return _(J,s)}function I(Q){return typeof Q==="object"&&Q!==null&&!Array.isArray(Q)}async function Vz(){try{let Q=await w(b(),"utf8"),J=[],X=q.parse(Q,J,{allowTrailingComma:!0});if(J.length>0)return{};return I(X)?X:{}}catch{return{}}}var d="anthropic-auth",n=160,u={forceToTop:!1,order:n,startCollapsed:!1,rememberCollapsed:!0,collapsed:null,pollMs:1500,refreshDebounceMs:200,header:{label:"CLAUDE",showVersion:!0},sections:{quota:!0,fallbackAccounts:!0,routing:!0,cache:!0,health:!0,pacing:!0},appearance:{barWidth:10,barFilledChar:"█",barEmptyChar:"░",warnThreshold:50,errorThreshold:80}};function W(Q,J){return typeof Q==="boolean"?Q:J}function M(Q,J,X,Z){if(typeof Q!=="number"||!Number.isFinite(Q))return J;return Math.min(Math.max(Math.round(Q),X),Z)}function a(Q,J,X){if(typeof Q!=="string"||Q.length===0)return J;return Q.slice(0,X)}function K(Q,J){if(typeof Q!=="string")return J;return[...Q][0]??J}function Yz(Q){let J=Q[d];if(!I(J))return structuredClone(u);let X=u,Z=I(J.header)?J.header:{},$=I(J.sections)?J.sections:{},G=I(J.appearance)?J.appearance:{},V=M(G.warnThreshold,X.appearance.warnThreshold,0,99),Y=Math.max(M(G.errorThreshold,X.appearance.errorThreshold,0,100),Math.min(V+1,100));return{forceToTop:W(J.forceToTop,X.forceToTop),order:M(J.order,X.order,-1e4,1e4),startCollapsed:W(J.startCollapsed,X.startCollapsed),rememberCollapsed:W(J.rememberCollapsed,X.rememberCollapsed),collapsed:typeof J.collapsed==="boolean"?J.collapsed:null,pollMs:M(J.pollMs,X.pollMs,500,30000),refreshDebounceMs:M(J.refreshDebounceMs,X.refreshDebounceMs,50,5000),header:{label:a(Z.label,X.header.label,20),showVersion:W(Z.showVersion,X.header.showVersion)},sections:{quota:W($.quota,X.sections.quota),fallbackAccounts:W($.fallbackAccounts,X.sections.fallbackAccounts),routing:W($.routing,X.sections.routing),cache:W($.cache,X.sections.cache),health:W($.health,X.sections.health),pacing:W($.pacing,X.sections.pacing)},appearance:{barWidth:M(G.barWidth,X.appearance.barWidth,4,40),barFilledChar:K(G.barFilledChar,X.appearance.barFilledChar),barEmptyChar:K(G.barEmptyChar,X.appearance.barEmptyChar),warnThreshold:V,errorThreshold:Y}}}var t=-1e5;function Hz(Q,J,X){let Z=Q[J];if(!I(Z))return X;if(Z.forceToTop===!0)return t+Object.keys(Q).indexOf(J);return M(Z.order,X,-1e4,1e4)}var o=`// Shared preferences for opencode TUI plugins.
2
2
  // One top-level key per plugin (short name). See each plugin's README for
3
3
  // its supported settings. This file is safe to hand-edit; plugins update
4
4
  // individual keys in place and preserve comments.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cortexkit/opencode-anthropic-auth",
3
- "version": "1.12.0",
3
+ "version": "1.12.2",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",
@@ -58,7 +58,7 @@
58
58
  "@opencode-ai/plugin": "*"
59
59
  },
60
60
  "dependencies": {
61
- "@cortexkit/anthropic-auth-core": "1.12.0",
61
+ "@cortexkit/anthropic-auth-core": "1.12.2",
62
62
  "@opentui/core": ">=0.4.2",
63
63
  "@opentui/solid": ">=0.4.2",
64
64
  "jsonc-parser": "^3.3.1",