Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@cortexkit/opencode-anthropic-auth

Package Overview
Dependencies
Maintainers
1
Versions
22
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@cortexkit/opencode-anthropic-auth - npm Package Compare versions

Comparing version
1.2.2
to
1.2.3
dist/index-gjnk6q4x.js

Sorry, the diff of this file is too big to display

+1
-1
#!/usr/bin/env node
import{l as y,m as w,o as l,p as u,q as m,ra as b,ta as k}from"./index-z4vzznkk.js";import{stdin as A,stdout as $}from"node:process";import{createInterface as R}from"node:readline/promises";function v(){return{version:1,main:{type:"opencode",provider:"anthropic"},fallbackOn:[401,403,429],refresh:{enabled:!0,intervalMinutes:10,refreshBeforeExpiryMinutes:240},quota:{enabled:!0,checkIntervalMinutes:5,minimumRemaining:{five_hour:10,seven_day:20},failClosedOnUnknownQuota:!0},accounts:[]}}function h(){console.log(`Usage:
import{l as y,m as w,o as l,p as u,q as m,ra as b,ta as k}from"./index-gjnk6q4x.js";import{stdin as A,stdout as $}from"node:process";import{createInterface as R}from"node:readline/promises";function v(){return{version:1,main:{type:"opencode",provider:"anthropic"},fallbackOn:[401,403,429],refresh:{enabled:!0,intervalMinutes:10,refreshBeforeExpiryMinutes:240},quota:{enabled:!0,checkIntervalMinutes:5,minimumRemaining:{five_hour:10,seven_day:20},failClosedOnUnknownQuota:!0},accounts:[]}}function h(){console.log(`Usage:
opencode-anthropic-auth login [label]

@@ -4,0 +4,0 @@ opencode-anthropic-auth list

@@ -1,5 +0,5 @@

import{$ as S1,A as N1,B as _1,C as H0,D as K0,E as F1,F as Z0,G as M1,H as B1,I as q0,J as v1,K as S0,L as U1,M as $0,N as G0,O as D0,P as p,Q as x1,R as V0,S as s0,T as e0,U as E0,V as j1,W as J1,X as K1,Y as P0,Z as H1,_ as q1,a as p0,aa as E1,b as c0,ba as A1,c as s,ca as R1,d as e,da as C1,e as o0,ea as X0,f as d,fa as W0,g as t0,ga as f1,h as a0,ha as A0,i as r0,ia as Y0,j as F0,ja as T1,k as w1,ka as w0,l as M0,la as y1,m as B0,ma as R0,n as H,na as z0,oa as k1,p as E,pa as g1,q as v0,qa as m1,r as z1,s as j0,sa as b1,t as J0,u as I1,v as O1,w as U0,x as Q1,y as x0,z as L1}from"./index-z4vzznkk.js";import{randomUUID as Wj}from"node:crypto";function b(j){return typeof j==="object"&&j!==null}function s1(j){if(Array.isArray(j))return j;if(b(j)&&Array.isArray(j.data))return j.data;return[]}function e1(j){if(!b(j)||!b(j.info))return;return typeof j.info.role==="string"?j.info.role:void 0}function m0(j){if(!b(j)||!b(j.info))return null;let J=j.info,K=b(J.model)?J.model:void 0,Z=typeof J.agent==="string"?J.agent:void 0,D=typeof K?.providerID==="string"?K.providerID:typeof J.providerID==="string"?J.providerID:void 0,V=typeof K?.modelID==="string"?K.modelID:typeof J.modelID==="string"?J.modelID:void 0,M=typeof K?.variant==="string"?K.variant:typeof J.variant==="string"?J.variant:void 0;if(!Z&&(!D||!V)&&!M)return null;let A={};if(Z)A.agent=Z;if(D&&V)A.model={providerID:D,modelID:V};if(M)A.variant=M;return A}function b0(j,J){return{agent:j.agent??J.agent,model:j.model??J.model,variant:j.variant??J.variant}}function h0(j){return Boolean(j.agent&&j.model&&j.variant)}async function u0(j,J){if(!j||!J)return null;let K=j;if(typeof K.session?.messages!=="function")return null;let Z=[];try{Z=s1(await Promise.resolve(K.session.messages({path:{id:J},query:{limit:100}})))}catch{return null}if(Z.length===0)return null;let D={};for(let V=Z.length-1;V>=0;V--){if(e1(Z[V])!=="assistant")continue;let M=m0(Z[V]);if(!M)continue;if(D=b0(D,M),h0(D))return D}for(let V=Z.length-1;V>=0;V--){let M=m0(Z[V]);if(!M)continue;if(D=b0(D,M),h0(D))return D}if(!D.agent&&!D.model&&!D.variant)return null;return D}function d0(j){return`${p0}${j.charAt(0).toUpperCase()}${j.slice(1)}`}function jj(j){if(j==="StructuredOutput")return j;return`${j.charAt(0).toLowerCase()}${j.slice(1)}`}function Z1(j,J){let K=new Headers;if(j instanceof Request)j.headers.forEach((D,V)=>{K.set(V,D)});let Z=J?.headers;if(Z){if(Z instanceof Headers)Z.forEach((D,V)=>{K.set(V,D)});else if(Array.isArray(Z))for(let D of Z){let[V,M]=D;if(typeof M<"u")K.set(V,String(M))}else for(let[D,V]of Object.entries(Z))if(typeof V<"u")K.set(D,String(V))}return K}function N0(j){return j.set("anthropic-beta",s(j.get("anthropic-beta"),[c0])),j}function i(j,J,K={}){return J1(j,J,K)}function Jj(j){if(j.tools&&Array.isArray(j.tools))j.tools=j.tools.map((J)=>({...J,name:J.name?d0(J.name):J.name}));if(j.messages&&Array.isArray(j.messages))j.messages=j.messages.map((J)=>{if(J.content&&Array.isArray(J.content))J.content=J.content.map((K)=>{if(K.type==="tool_use"&&K.name)return{...K,name:d0(K.name)};return K});return J});return JSON.stringify(K1(j))}function Q0(j){return j.replace(/"name"\s*:\s*"mcp_([^"]+)"/g,(J,K)=>`"name": "${jj(K)}"`)}function i0(j,J=!1){if(J)return{ready:Q0(j),pending:""};let K=j.length,Z='"name"',D=Math.max(0,j.length-Z.length+1);for(let M=D;M<j.length;M++)if(Z.startsWith(j.slice(M))){K=Math.min(K,M);break}let V=j.lastIndexOf(Z);if(V!==-1){let M=j.slice(V);if(/^"name"\s*(?::\s*(?:"[^"]*)?)?$/.test(M))K=Math.min(K,V)}if(K<j.length)return{ready:Q0(j.slice(0,K)),pending:j.slice(K)};return{ready:Q0(j),pending:""}}function $1(){if(!process.env.ANTHROPIC_BASE_URL?.trim())return!1;let j=process.env.ANTHROPIC_INSECURE?.trim();return j==="1"||j==="true"}function Kj(){let j=process.env.ANTHROPIC_BASE_URL?.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 G1(j){let J=null;try{if(typeof j==="string"||j instanceof URL)J=new URL(j.toString());else if(j instanceof Request)J=new URL(j.url)}catch{J=null}if(!J)return{input:j,url:null};let K=J.href,Z=Kj();if(Z)J.protocol=Z.protocol,J.host=Z.host;if(J.pathname==="/v1/messages"&&!J.searchParams.has("beta"))J.searchParams.set("beta","true");if(J.href===K)return{input:j,url:J};return{input:j instanceof Request?new Request(J.toString(),j):J,url:J}}function t(j){let Z=j.split(/\n\n+/).filter((D)=>{if(D.includes(o0))return!1;for(let V of a0)if(D.includes(V))return!1;return!0}).join(`
import{$ as S1,A as _1,B as F1,C as H0,D as Z0,E as B1,F as p,G as q0,H as M1,I as S0,J as v1,K as A0,L as U1,M as $0,N as G0,O as D0,P as c,Q as x1,R as V0,S as e0,T as j1,U as E0,V as J1,W as K1,X as Z1,Y as P0,Z as H1,_ as q1,a as c0,aa as A1,b as o0,ba as E1,c as e,ca as C1,d as j0,da as R1,e as t0,ea as X0,f as d,fa as W0,g as a0,ga as T1,h as r0,ha as C0,i as s0,ia as Y0,j as F0,ja as f1,k as z1,ka as w0,l as B0,la as y1,m as M0,ma as R0,n as U,na as z0,oa as k1,p as A,pa as g1,q as v0,qa as b1,r as I1,s as J0,sa as m1,t as K0,u as O1,v as Q1,w as U0,x as L1,y as x0,z as N1}from"./index-gjnk6q4x.js";import{randomUUID as Wj}from"node:crypto";function m(j){return typeof j==="object"&&j!==null}function s1(j){if(Array.isArray(j))return j;if(m(j)&&Array.isArray(j.data))return j.data;return[]}function e1(j){if(!m(j)||!m(j.info))return;return typeof j.info.role==="string"?j.info.role:void 0}function m0(j){if(!m(j)||!m(j.info))return null;let J=j.info,K=m(J.model)?J.model:void 0,$=typeof J.agent==="string"?J.agent:void 0,D=typeof K?.providerID==="string"?K.providerID:typeof J.providerID==="string"?J.providerID:void 0,V=typeof K?.modelID==="string"?K.modelID:typeof J.modelID==="string"?J.modelID:void 0,B=typeof K?.variant==="string"?K.variant:typeof J.variant==="string"?J.variant:void 0;if(!$&&(!D||!V)&&!B)return null;let E={};if($)E.agent=$;if(D&&V)E.model={providerID:D,modelID:V};if(B)E.variant=B;return E}function h0(j,J){return{agent:j.agent??J.agent,model:j.model??J.model,variant:j.variant??J.variant}}function u0(j){return Boolean(j.agent&&j.model&&j.variant)}async function d0(j,J){if(!j||!J)return null;let K=j;if(typeof K.session?.messages!=="function")return null;let $=[];try{$=s1(await Promise.resolve(K.session.messages({path:{id:J},query:{limit:100}})))}catch{return null}if($.length===0)return null;let D={};for(let V=$.length-1;V>=0;V--){if(e1($[V])!=="assistant")continue;let B=m0($[V]);if(!B)continue;if(D=h0(D,B),u0(D))return D}for(let V=$.length-1;V>=0;V--){let B=m0($[V]);if(!B)continue;if(D=h0(D,B),u0(D))return D}if(!D.agent&&!D.model&&!D.variant)return null;return D}function l0(j){return`${c0}${j.charAt(0).toUpperCase()}${j.slice(1)}`}function jj(j){if(j==="StructuredOutput")return j;return`${j.charAt(0).toLowerCase()}${j.slice(1)}`}function $1(j,J){let K=new Headers;if(j instanceof Request)j.headers.forEach((D,V)=>{K.set(V,D)});let $=J?.headers;if($){if($ instanceof Headers)$.forEach((D,V)=>{K.set(V,D)});else if(Array.isArray($))for(let D of $){let[V,B]=D;if(typeof B<"u")K.set(V,String(B))}else for(let[D,V]of Object.entries($))if(typeof V<"u")K.set(D,String(V))}return K}function N0(j){return j.set("anthropic-beta",e(j.get("anthropic-beta"),[o0])),j}function l(j,J,K={}){return K1(j,J,K)}function Jj(j){if(j.tools&&Array.isArray(j.tools))j.tools=j.tools.map((J)=>({...J,name:J.name?l0(J.name):J.name}));if(j.messages&&Array.isArray(j.messages))j.messages=j.messages.map((J)=>{if(J.content&&Array.isArray(J.content))J.content=J.content.map((K)=>{if(K.type==="tool_use"&&K.name)return{...K,name:l0(K.name)};return K});return J});return JSON.stringify(Z1(j))}function Q0(j){return j.replace(/"name"\s*:\s*"mcp_([^"]+)"/g,(J,K)=>`"name": "${jj(K)}"`)}function i0(j,J=!1){if(J)return{ready:Q0(j),pending:""};let K=j.length,$='"name"',D=Math.max(0,j.length-$.length+1);for(let B=D;B<j.length;B++)if($.startsWith(j.slice(B))){K=Math.min(K,B);break}let V=j.lastIndexOf($);if(V!==-1){let B=j.slice(V);if(/^"name"\s*(?::\s*(?:"[^"]*)?)?$/.test(B))K=Math.min(K,V)}if(K<j.length)return{ready:Q0(j.slice(0,K)),pending:j.slice(K)};return{ready:Q0(j),pending:""}}function G1(){if(!process.env.ANTHROPIC_BASE_URL?.trim())return!1;let j=process.env.ANTHROPIC_INSECURE?.trim();return j==="1"||j==="true"}function Kj(){let j=process.env.ANTHROPIC_BASE_URL?.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 D1(j){let J=null;try{if(typeof j==="string"||j instanceof URL)J=new URL(j.toString());else if(j instanceof Request)J=new URL(j.url)}catch{J=null}if(!J)return{input:j,url:null};let K=J.href,$=Kj();if($)J.protocol=$.protocol,J.host=$.host;if(J.pathname==="/v1/messages"&&!J.searchParams.has("beta"))J.searchParams.set("beta","true");if(J.href===K)return{input:j,url:J};return{input:j instanceof Request?new Request(J.toString(),j):J,url:J}}function a(j){let $=j.split(/\n\n+/).filter((D)=>{if(D.includes(t0))return!1;for(let V of r0)if(D.includes(V))return!1;return!0}).join(`
`);for(let D of r0)Z=Z.replace(D.match,D.replacement);return Z.trim()}function R(j){return j!=null&&typeof j==="object"&&!Array.isArray(j)}function Zj(j){let J={type:"text",text:d};if(j==null)return[J];if(typeof j==="string"){let Z=t(j);if(Z===d)return[J];return[J,{type:"text",text:Z}]}if(R(j)){let Z=typeof j.type==="string"?j.type:"text",D=typeof j.text==="string"?j.text:"";return[J,{...j,type:Z,text:t(D)}]}if(!Array.isArray(j))return[J];let K=j.map((Z)=>{if(typeof Z==="string")return{type:"text",text:t(Z)};if(R(Z)&&Z.type==="text"&&typeof Z.text==="string")return{...Z,type:"text",text:t(Z.text)};return{type:"text",text:String(Z)}});if(K[0]?.text===d)return K;return[J,...K]}var D1={type:"ephemeral",ttl:"1h"};function $j(j){if(R(j.cache_control))return j.cache_control;if(R(j.cacheControl))return j.cacheControl;return null}function r(j,J){if(!R(j))return!1;return delete j.cacheControl,j.cache_control=J?{...D1}:{type:"ephemeral"},!0}function n0(j){if(!R(j))return;delete j.cache_control,delete j.cacheControl}function Gj(j){if(Array.isArray(j))return j;if(typeof j==="string")return[{type:"text",text:j}];return null}function a(j,J){if(!R(j))return;let K=$j(j);if(!K||K.type!=="ephemeral")return;if(J)K.ttl="1h";else delete K.ttl}function l0(j,J){if(Array.isArray(j.system))for(let K of j.system)a(K,J);else a(j.system,J);if(!Array.isArray(j.messages))return;for(let K of j.messages)if(a(K,J),R(K)&&Array.isArray(K.content))for(let Z of K.content)a(Z,J)}function Dj(j,J){if(Array.isArray(j.system))for(let K of j.system)J(K);else J(j.system);if(!Array.isArray(j.messages))return;for(let K of j.messages)if(J(K),R(K)&&Array.isArray(K.content))for(let Z of K.content)J(Z)}function V1(j){n0(j),Dj(j,n0)}function Vj(j){V1(j),j.cache_control={...D1}}function L0(j){if(!R(j))return!1;let J=Gj(j.content);if(!J?.length)return r(j,!0);j.content=J;let K=[...J].reverse().find((Z)=>R(Z)&&Z.type!=="thinking");return r(K??j,!0)}function Pj(j){if(V1(j),Array.isArray(j.system)){let K=j.system.findIndex((V)=>R(V)&&V.text===d),Z=j.system.slice(K>=0?K+1:0).filter(R),D=Z[Z.length-1];r(D,!0)}else r(j.system,!0);if(!Array.isArray(j.messages))return;L0(j.messages[0]),L0(j.messages[1]);let J=j.messages.length-2;if(J>1)L0(j.messages[J])}function Xj(j,J){if(!J.enabled){l0(j,!1),delete j.cache_control,delete j.cacheControl;return}if(J.mode==="automatic"){Vj(j);return}if(J.mode==="hybrid"){Pj(j);return}l0(j,!0),delete j.cacheControl}async function P1(j,J={}){try{let K=JSON.parse(j),Z=Array.isArray(K.messages)&&K.messages.some((D)=>D.role==="user")?e0(K.messages,void 0,t0):null;if(K.system=Zj(K.system),Z&&Array.isArray(K.system))K.system.unshift({type:"text",text:Z});if(Xj(K,{enabled:J.cache1hEnabled??!1,mode:J.cache1hMode??"explicit"}),J.fastModeEnabled&&e(K.model))K.speed="fast";else if(K.speed==="fast")delete K.speed;if(J.identity)j1(K,J.identity);return await s0(Jj(K))}catch{return j}}function _0(j){if(!j.body)return j;let J=j.body.getReader(),K=new TextDecoder,Z=new TextEncoder,D="",V=new ReadableStream({async pull(M){let{done:A,value:y}=await J.read();if(A){let u=i0(`${D}${K.decode()}`,!0);if(u.ready)M.enqueue(Z.encode(u.ready));M.close();return}let O0=D+K.decode(y,{stream:!0}),h=i0(O0);if(D=h.pending,h.ready)M.enqueue(Z.encode(h.ready))}});return new Response(V,{status:j.status,statusText:j.statusText,headers:j.headers})}var Yj="__OPENCODE_ANTHROPIC_AUTH_COMMAND_HANDLED__",wj=60000,zj=60000,Ij=5000,X1=200,h1=240,Oj=h1,Qj=1,W1=!1;function I0(){return process.env.OPENCODE_ANTHROPIC_AUTH_PERF==="1"}function B(){return performance.now()}function q(j){return Math.round(j*10)/10}function Y1(j){return Math.floor(Math.random()*Math.max(0,j))}function Lj(){if(W1||!1||!I0())return;W1=!0;let j=100,J=250,K=B()+j;setInterval(()=>{let Z=B(),D=Z-K;if(K=Z+j,D<J)return;H("[perf] opencode event_loop_lag",{lagMs:q(D),thresholdMs:J})},j).unref?.()}function Nj(j){let J=B(),K={requestId:String(Qj++),start:J,last:J,mark(Z,D){let V=B();if(I0())H("[perf] opencode request stage",{requestId:K.requestId,stage:Z,deltaMs:q(V-K.last),totalMs:q(V-K.start),...D});K.last=V},done(Z,D){let V=B();if(I0())H("[perf] opencode request done",{requestId:K.requestId,stage:Z,deltaMs:q(V-K.last),totalMs:q(V-K.start),...D});K.last=V}};if(I0())H("[perf] opencode request start",{requestId:K.requestId,...j});return K}async function n(j,J,K){let Z=j.client.session,D=await u0(j.client,J),V={path:{id:J},body:{noReply:!0,parts:[{type:"text",text:K,ignored:!0}]}};if(D?.agent)V.body.agent=D.agent;if(D?.model)V.body.model=D.model;if(D?.variant)V.body.variant=D.variant;if(typeof Z?.promptAsync==="function"){await Z.promptAsync(V);return}if(typeof Z?.prompt==="function"){await Promise.resolve(Z.prompt(V));return}throw Error("OpenCode session prompt API is unavailable for ignored replies.")}function l(){throw Error(Yj)}var qj=async(j)=>{Lj();let{client:J}=j,K=new U1;K.startBackgroundRefresh();let Z=null,D=new C1({loadStorage:()=>E(),prepareHeaders:async($,I)=>{if(!A)return $;let L=await A();if(L.type!=="oauth")return $;if(!L.access||L.expires&&L.expires<Date.now()){if(!Z)return $;L.access=await Z()}if(!L.access)return $;try{let Q=JSON.parse(I.bodyText),U=await E0(L.access,typeof Q.model==="string"?Q.model:void 0);if($.delete("anthropic-beta"),i($,L.access,{body:Q,identity:U}),$.set("anthropic-beta",s($.get("anthropic-beta"),[H1])),Q.speed==="fast")N0($)}catch{i($,L.access)}return $},log:H}),V=await E(),M=m1(V);p({enabled:j0(V),mode:J0(V)}),W0(U0(V)),w0(x0(V));let A=null,y=null;function O0($){let I=$?.refresh?.refreshBeforeExpiryMinutes??Oj;return Math.max(h1,I)*60000}function h($){return $?.refresh?.enabled!==!1}async function u($){if(!$)return;let I=await E(),L=I?.refresh?.mainLastRefreshError;if(!I?.refresh||!L?.tokenHash)return;let Q=K0($);if(L.tokenHash===Q)return;I.refresh.mainLastRefreshError=void 0,await v0(I),H("[refresh] opencode main oauth cleared stale backoff after token rotation",{previousCheckedAt:L.checkedAt,previousNextRetryAt:L.nextRetryAt,previousRetryCount:L.retryCount})}async function u1(){let $=[];if(A)try{let Q=await A();if(Q.type==="oauth"&&Q.access)$.push({name:"OpenCode anthropic",role:"main",quota:await S0({accessToken:Q.access})});else if(Q.type==="oauth")$.push({name:"OpenCode anthropic",role:"main",error:"missing access token; send a request first or reconnect auth"})}catch(Q){$.push({name:"OpenCode anthropic",role:"main",error:Q instanceof Error?Q.message:String(Q)})}let{storage:I,errors:L}=await K.refreshQuotaForAllAccounts();if($.push(...k1(I,new Map(L.map((Q)=>[Q.accountId,Q.message])))),!A)$.unshift({name:"OpenCode anthropic",role:"main",error:"auth loader has not run yet; send a request first"});return g1({accounts:$,refreshedAt:Date.now()})}async function d1($){let I=x1($);if(I.type==="enable"||I.type==="disable"){let f=I.type==="enable",k=await I1(f),g=J0(k);return p({enabled:f,mode:g}),V0({argumentsText:$,enabled:f,mode:g})}if(I.type==="mode"){let f=await O1(I.mode),k=j0(f);return p({enabled:k,mode:I.mode}),V0({argumentsText:$,enabled:k,mode:I.mode})}let L=await E(),Q=j0(L),U=J0(L);return p({enabled:Q,mode:U}),V0({argumentsText:$,enabled:Q,mode:U})}async function i1($){let I=q1($),L=await E();if(I.type==="window")L=await N1(I.startHour,I.endHour);else if(I.type==="disable")L=await _1(!1);let Q=S1(L),U=D.stats(Q);return R1({argumentsText:$,enabled:E1(L),window:Q,hybridActive:A1(L),trackedSessions:U.trackedSessions,nextPrewarmAt:U.nextPrewarmAt})}async function n1($){let I=f1($);if(I.type==="enable"||I.type==="disable"){let U=I.type==="enable";return await Q1(U),W0(U),A0({argumentsText:$,enabled:U})}let L=await E(),Q=U0(L);return W0(Q),A0({argumentsText:$,enabled:Q})}async function l1($){let I=y1($);if(I.type==="enable"||I.type==="disable"){let U=I.type==="enable";return await L1(U),w0(U),R0({argumentsText:$,enabled:U})}let L=await E(),Q=x0(L);return w0(Q),R0({argumentsText:$,enabled:Q})}return{config:async($)=>{$.command={...$.command??{},[$0]:{template:$0,description:"Show or toggle 1-hour Anthropic ephemeral prompt cache TTL."},[P0]:{template:P0,description:"Keep hybrid Claude cache warm for recently used sessions during a local time window."},[z0]:{template:z0,description:"Show current Claude OAuth quota usage for all accounts."},[X0]:{template:X0,description:"Show or toggle Anthropic request dump capture for debugging."},[Y0]:{template:Y0,description:"Show or toggle Anthropic fast mode for supported Opus models."}}},"command.execute.before":async($)=>{if($.command===$0)await n(j,$.sessionID,await d1($.arguments)),l();if($.command===P0)await n(j,$.sessionID,await i1($.arguments)),l();if($.command===z0)await n(j,$.sessionID,await u1()),l();if($.command===X0)await n(j,$.sessionID,await n1($.arguments)),l();if($.command===Y0)await n(j,$.sessionID,await l1($.arguments)),l()},auth:{provider:"anthropic",async loader($,I){if(A=$,(await $()).type==="oauth"){let p1=function(){if(y)clearInterval(y),y=null;let P=async()=>{try{let X=await E();if(!h(X))return;let Y=await $();if(Y.type!=="oauth")return;if(await u(Y.refresh),!Y.expires)return;let z=Y.expires-Date.now(),v=O0(X);if(z>v)return;if(H("[refresh] opencode main oauth background due",{expiresInMs:z,refreshBeforeMs:v}),Y.refresh&&Z0(X?.refresh?.mainLastRefreshError,Y.refresh,Date.now())){H("[refresh] opencode main oauth background skipped backoff",{nextRetryAt:X?.refresh?.mainLastRefreshError?.nextRetryAt,retryCount:X?.refresh?.mainLastRefreshError?.retryCount});return}if(Y.refresh&&X?.refresh?.mainRefreshLeaseUntil&&X.refresh.mainRefreshLeaseUntil>Date.now()&&X.refresh.mainRefreshLeaseTokenHash===K0(Y.refresh))return;await g(),H("[refresh] opencode main oauth refreshed in background",{expires:Y.expires})}catch(X){H("[refresh] opencode main oauth refresh failed",{message:X instanceof Error?X.message:String(X)})}};if(y=setInterval(()=>{P()},wj+Y1(zj)),"unref"in y)y.unref()},C0=function(P,X){if(P instanceof Request&&P.body)return!1;return X==null||typeof X==="string"},c1=function(P){return P.has("x-parent-session-id")},f0=function(P){return P.includes("rate_limit_error")||/exceed your account'?s rate limit/i.test(P)},o1=function(P){return P?.quota?.enabled===!0},t1=function(P,X){let Y=Date.now();if(f||Y<k)return;f=k0(P,X).catch((z)=>{throw k=Y+B1(X),z}).finally(()=>{f=null}),f.catch(()=>{})};for(let P of Object.values(I.models))P.cost={input:0,output:0,cache:{read:0,write:0}};let Q=null,U=null,f=null,k=0;async function g(){if(!Q)Q=(async()=>{let Y=null,z=null,v=null;async function _(O){let w=await E()??{version:1,main:{type:"opencode",provider:"anthropic"},accounts:[]};w.refresh=w.refresh??{},O(w),await v0(w)}async function F(O){let w=Date.now()+Ij;while(Date.now()<w){await new Promise((W)=>setTimeout(W,X1+Y1(X1)));let G=await $();if(G.type!=="oauth"||!G.access)continue;if((G.access!==O.access||G.refresh!==O.refresh||(G.expires??0)>(O.expires??0)+60000)&&(!G.expires||G.expires>Date.now()))return H("[refresh] opencode main oauth joined concurrent refresh",{expiresInMs:G.expires?G.expires-Date.now():void 0}),G.access}return null}for(let O=0;O<=2;O++){let w=null;try{if(O>0){let x=500*2**(O-1);await new Promise((c)=>setTimeout(c,x))}if(w=await $(),!w.refresh)throw Error("Token refresh failed: missing refresh token");let G=await E(),N=K0(w.refresh),W=G?.refresh?.mainLastRefreshError;if(H("[refresh] opencode main oauth refresh check",{attempt:O,expiresInMs:w.expires?w.expires-Date.now():void 0,hasBackoff:Boolean(W),backoffActive:W?Z0(W,w.refresh,Date.now()):!1,retryCount:W?.retryCount,nextRetryAt:W?.nextRetryAt}),W&&Z0(W,w.refresh,Date.now()))throw H("[refresh] opencode main oauth refresh skipped backoff",{nextRetryAt:W.nextRetryAt,retryCount:W.retryCount}),Error(M1(W,Date.now()));if(G?.refresh?.mainRefreshLeaseUntil&&G.refresh.mainRefreshLeaseUntil>Date.now()&&G.refresh.mainRefreshLeaseTokenHash===N){H("[refresh] opencode main oauth refresh skipped lease",{leaseUntil:G.refresh.mainRefreshLeaseUntil});let x=await F(w);if(x)return x;throw Error("Claude OAuth refresh is already in progress")}let S=await z1({name:"opencode-main-oauth-refresh",ttlMs:120000});if(!S){H("[refresh] opencode main oauth refresh skipped file lock");let x=await F(w);if(x)return x;throw Error("Claude OAuth refresh is already in progress")}v=S.release,Y=Wj(),z=N,await _((x)=>{x.refresh=x.refresh??{},x.refresh.mainRefreshLeaseId=Y??void 0,x.refresh.mainRefreshLeaseUntil=Date.now()+120000,x.refresh.mainRefreshLeaseTokenHash=N});let T=await E();if(H("[refresh] opencode main oauth refresh lease acquired",{attempt:O,leaseUntil:Date.now()+120000}),T?.refresh?.mainRefreshLeaseId!==Y||T.refresh.mainRefreshLeaseTokenHash!==N)throw Error("Claude OAuth refresh is already in progress");H("[refresh] opencode main oauth refresh request start",{attempt:O});let C=await w1({refreshToken:w.refresh,maxRetries:0});return await J.auth.set({path:{id:"anthropic"},body:{type:"oauth",refresh:C.refresh,access:C.access,expires:C.expires}}),await _((x)=>{if(!x?.refresh)return;if(x.refresh.mainLastRefreshError=void 0,x.refresh.mainRefreshLeaseId===Y)x.refresh.mainRefreshLeaseId=void 0,x.refresh.mainRefreshLeaseUntil=void 0,x.refresh.mainRefreshLeaseTokenHash=void 0}),H("[refresh] opencode main oauth refresh succeeded",{attempt:O,expiresInMs:C.expires-Date.now()}),C.access}catch(G){let N=G instanceof Error&&(G.message.includes("fetch failed")||("code"in G)&&(G.code==="ECONNRESET"||G.code==="ECONNREFUSED"||G.code==="ETIMEDOUT"||G.code==="UND_ERR_CONNECT_TIMEOUT"));if(O<2&&(N||G instanceof F0&&G.status>=500))continue;H("[refresh] opencode main oauth refresh attempt failed",{attempt:O,error:G instanceof Error?G.message:String(G),transient:N});let W=w?.refresh;if(W&&G instanceof F0)await _((S)=>{S.refresh=S.refresh??{},S.refresh.mainLastRefreshError=F1({error:G,now:Date.now(),refreshToken:W,previous:S.refresh.mainLastRefreshError})});throw G}finally{if(Y)await _((G)=>{if(!G?.refresh)return;if(G.refresh.mainRefreshLeaseId===Y&&G.refresh.mainRefreshLeaseTokenHash===z)G.refresh.mainRefreshLeaseId=void 0,G.refresh.mainRefreshLeaseUntil=void 0,G.refresh.mainRefreshLeaseTokenHash=void 0}).catch(()=>{});await v?.().catch(()=>{})}}throw Error("Token refresh exhausted all retries")})().finally(()=>{Q=null});return Q}Z=g,p1();async function T0(P,X){if(!P.body||P.status!==200)return X?.mark("inspect_stream_skip",{status:P.status}),{response:P,rateLimited:!1};if(P.headers.get("x-cortexkit-relay-optimistic")==="true")return X?.mark("inspect_stream_skip",{status:P.status,reason:"optimistic_relay"}),{response:P,rateLimited:!1};let Y=B(),z=P.body.getReader(),v=[],_=new TextDecoder,F="",O=0;while(!F.includes(`
`);for(let D of s0)$=$.replace(D.match,D.replacement);return $.trim()}function C(j){return j!=null&&typeof j==="object"&&!Array.isArray(j)}function Zj(j){let J={type:"text",text:d};if(j==null)return[J];if(typeof j==="string"){let $=a(j);if($===d)return[J];return[J,{type:"text",text:$}]}if(C(j)){let $=typeof j.type==="string"?j.type:"text",D=typeof j.text==="string"?j.text:"";return[J,{...j,type:$,text:a(D)}]}if(!Array.isArray(j))return[J];let K=j.map(($)=>{if(typeof $==="string")return{type:"text",text:a($)};if(C($)&&$.type==="text"&&typeof $.text==="string")return{...$,type:"text",text:a($.text)};return{type:"text",text:String($)}});if(K[0]?.text===d)return K;return[J,...K]}var V1={type:"ephemeral",ttl:"1h"};function $j(j){if(C(j.cache_control))return j.cache_control;if(C(j.cacheControl))return j.cacheControl;return null}function s(j,J){if(!C(j))return!1;return delete j.cacheControl,j.cache_control=J?{...V1}:{type:"ephemeral"},!0}function n0(j){if(!C(j))return;delete j.cache_control,delete j.cacheControl}function Gj(j){if(Array.isArray(j))return j;if(typeof j==="string")return[{type:"text",text:j}];return null}function r(j,J){if(!C(j))return;let K=$j(j);if(!K||K.type!=="ephemeral")return;if(J)K.ttl="1h";else delete K.ttl}function p0(j,J){if(Array.isArray(j.system))for(let K of j.system)r(K,J);else r(j.system,J);if(!Array.isArray(j.messages))return;for(let K of j.messages)if(r(K,J),C(K)&&Array.isArray(K.content))for(let $ of K.content)r($,J)}function Dj(j,J){if(Array.isArray(j.system))for(let K of j.system)J(K);else J(j.system);if(!Array.isArray(j.messages))return;for(let K of j.messages)if(J(K),C(K)&&Array.isArray(K.content))for(let $ of K.content)J($)}function P1(j){n0(j),Dj(j,n0)}function Vj(j){P1(j),j.cache_control={...V1}}function L0(j){if(!C(j))return!1;let J=Gj(j.content);if(!J?.length)return s(j,!0);j.content=J;let K=[...J].reverse().find(($)=>C($)&&$.type!=="thinking");return s(K??j,!0)}function Pj(j){if(P1(j),Array.isArray(j.system)){let K=j.system.findIndex((V)=>C(V)&&V.text===d),$=j.system.slice(K>=0?K+1:0).filter(C),D=$[$.length-1];s(D,!0)}else s(j.system,!0);if(!Array.isArray(j.messages))return;L0(j.messages[0]),L0(j.messages[1]);let J=j.messages.length-2;if(J>1)L0(j.messages[J])}function Xj(j,J){if(!J.enabled){p0(j,!1),delete j.cache_control,delete j.cacheControl;return}if(J.mode==="automatic"){Vj(j);return}if(J.mode==="hybrid"){Pj(j);return}p0(j,!0),delete j.cacheControl}async function X1(j,J={}){try{let K=JSON.parse(j),$=Array.isArray(K.messages)&&K.messages.some((D)=>D.role==="user")?j1(K.messages,void 0,a0):null;if(K.system=Zj(K.system),$&&Array.isArray(K.system))K.system.unshift({type:"text",text:$});if(Xj(K,{enabled:J.cache1hEnabled??!1,mode:J.cache1hMode??"explicit"}),J.fastModeEnabled&&j0(K.model))K.speed="fast";else if(K.speed==="fast")delete K.speed;if(J.identity)J1(K,J.identity);return await e0(Jj(K))}catch{return j}}function _0(j){if(!j.body)return j;let J=j.body.getReader(),K=new TextDecoder,$=new TextEncoder,D="",V=new ReadableStream({async pull(B){let{done:E,value:y}=await J.read();if(E){let u=i0(`${D}${K.decode()}`,!0);if(u.ready)B.enqueue($.encode(u.ready));B.close();return}let O0=D+K.decode(y,{stream:!0}),h=i0(O0);if(D=h.pending,h.ready)B.enqueue($.encode(h.ready))}});return new Response(V,{status:j.status,statusText:j.statusText,headers:j.headers})}var Yj="__OPENCODE_ANTHROPIC_AUTH_COMMAND_HANDLED__",wj=60000,zj=60000,Ij=5000,W1=200,h1=240,Oj=h1,Qj=1,Y1=!1;function I0(){return process.env.OPENCODE_ANTHROPIC_AUTH_PERF==="1"}function M(){return performance.now()}function S(j){return Math.round(j*10)/10}function w1(j){return Math.floor(Math.random()*Math.max(0,j))}function Lj(){if(Y1||!1||!I0())return;Y1=!0;let j=100,J=250,K=M()+j;setInterval(()=>{let $=M(),D=$-K;if(K=$+j,D<J)return;U("[perf] opencode event_loop_lag",{lagMs:S(D),thresholdMs:J})},j).unref?.()}function Nj(j){let J=M(),K={requestId:String(Qj++),start:J,last:J,mark($,D){let V=M();if(I0())U("[perf] opencode request stage",{requestId:K.requestId,stage:$,deltaMs:S(V-K.last),totalMs:S(V-K.start),...D});K.last=V},done($,D){let V=M();if(I0())U("[perf] opencode request done",{requestId:K.requestId,stage:$,deltaMs:S(V-K.last),totalMs:S(V-K.start),...D});K.last=V}};if(I0())U("[perf] opencode request start",{requestId:K.requestId,...j});return K}async function i(j,J,K){let $=j.client.session,D=await d0(j.client,J),V={path:{id:J},body:{noReply:!0,parts:[{type:"text",text:K,ignored:!0}]}};if(D?.agent)V.body.agent=D.agent;if(D?.model)V.body.model=D.model;if(D?.variant)V.body.variant=D.variant;if(typeof $?.promptAsync==="function"){await $.promptAsync(V);return}if(typeof $?.prompt==="function"){await Promise.resolve($.prompt(V));return}throw Error("OpenCode session prompt API is unavailable for ignored replies.")}function n(){throw Error(Yj)}var qj=async(j)=>{Lj();let{client:J}=j,K=new U1;K.startBackgroundRefresh();let $=null,D=new R1({loadStorage:()=>A(),prepareHeaders:async(Z,Q)=>{if(!E)return Z;let W=await E();if(W.type!=="oauth")return Z;if(!W.access||W.expires&&W.expires<Date.now()){if(!$)return Z;W.access=await $()}if(!W.access)return Z;try{let N=JSON.parse(Q.bodyText),x=await E0(W.access,typeof N.model==="string"?N.model:void 0);if(Z.delete("anthropic-beta"),l(Z,W.access,{body:N,identity:x}),Z.set("anthropic-beta",e(Z.get("anthropic-beta"),[H1])),N.speed==="fast")N0(Z)}catch{l(Z,W.access)}return Z},log:U}),V=await A(),B=b1(V);c({enabled:J0(V),mode:K0(V)}),W0(U0(V)),w0(x0(V));let E=null,y=null;function O0(Z){let Q=Z?.refresh?.refreshBeforeExpiryMinutes??Oj;return Math.max(h1,Q)*60000}function h(Z){return Z?.refresh?.enabled!==!1}async function u(Z){if(!Z)return;let Q=await A(),W=Q?.refresh?.mainLastRefreshError;if(!Q?.refresh||!W?.tokenHash)return;let N=Z0(Z);if(W.tokenHash===N)return;if(W.nextRetryAt&&W.nextRetryAt>Date.now()){U("[refresh] opencode main oauth keeping backoff despite token rotation",{nextRetryAt:W.nextRetryAt,retryCount:W.retryCount,remainingMs:W.nextRetryAt-Date.now()});return}Q.refresh.mainLastRefreshError=void 0,await v0(Q),U("[refresh] opencode main oauth cleared stale backoff after token rotation",{previousCheckedAt:W.checkedAt,previousNextRetryAt:W.nextRetryAt,previousRetryCount:W.retryCount})}async function u1(){let Z=[];if(E)try{let N=await E();if(N.type==="oauth"&&N.access)Z.push({name:"OpenCode anthropic",role:"main",quota:await A0({accessToken:N.access})});else if(N.type==="oauth")Z.push({name:"OpenCode anthropic",role:"main",error:"missing access token; send a request first or reconnect auth"})}catch(N){Z.push({name:"OpenCode anthropic",role:"main",error:N instanceof Error?N.message:String(N)})}let{storage:Q,errors:W}=await K.refreshQuotaForAllAccounts();if(Z.push(...k1(Q,new Map(W.map((N)=>[N.accountId,N.message])))),!E)Z.unshift({name:"OpenCode anthropic",role:"main",error:"auth loader has not run yet; send a request first"});return g1({accounts:Z,refreshedAt:Date.now()})}async function d1(Z){let Q=x1(Z);if(Q.type==="enable"||Q.type==="disable"){let f=Q.type==="enable",k=await O1(f),g=K0(k);return c({enabled:f,mode:g}),V0({argumentsText:Z,enabled:f,mode:g})}if(Q.type==="mode"){let f=await Q1(Q.mode),k=J0(f);return c({enabled:k,mode:Q.mode}),V0({argumentsText:Z,enabled:k,mode:Q.mode})}let W=await A(),N=J0(W),x=K0(W);return c({enabled:N,mode:x}),V0({argumentsText:Z,enabled:N,mode:x})}async function l1(Z){let Q=q1(Z),W=await A();if(Q.type==="window")W=await _1(Q.startHour,Q.endHour);else if(Q.type==="disable")W=await F1(!1);let N=S1(W),x=D.stats(N);return C1({argumentsText:Z,enabled:A1(W),window:N,hybridActive:E1(W),trackedSessions:x.trackedSessions,nextPrewarmAt:x.nextPrewarmAt})}async function i1(Z){let Q=T1(Z);if(Q.type==="enable"||Q.type==="disable"){let x=Q.type==="enable";return await L1(x),W0(x),C0({argumentsText:Z,enabled:x})}let W=await A(),N=U0(W);return W0(N),C0({argumentsText:Z,enabled:N})}async function n1(Z){let Q=y1(Z);if(Q.type==="enable"||Q.type==="disable"){let x=Q.type==="enable";return await N1(x),w0(x),R0({argumentsText:Z,enabled:x})}let W=await A(),N=x0(W);return w0(N),R0({argumentsText:Z,enabled:N})}return{config:async(Z)=>{Z.command={...Z.command??{},[$0]:{template:$0,description:"Show or toggle 1-hour Anthropic ephemeral prompt cache TTL."},[P0]:{template:P0,description:"Keep hybrid Claude cache warm for recently used sessions during a local time window."},[z0]:{template:z0,description:"Show current Claude OAuth quota usage for all accounts."},[X0]:{template:X0,description:"Show or toggle Anthropic request dump capture for debugging."},[Y0]:{template:Y0,description:"Show or toggle Anthropic fast mode for supported Opus models."}}},"command.execute.before":async(Z)=>{if(Z.command===$0)await i(j,Z.sessionID,await d1(Z.arguments)),n();if(Z.command===P0)await i(j,Z.sessionID,await l1(Z.arguments)),n();if(Z.command===z0)await i(j,Z.sessionID,await u1()),n();if(Z.command===X0)await i(j,Z.sessionID,await i1(Z.arguments)),n();if(Z.command===Y0)await i(j,Z.sessionID,await n1(Z.arguments)),n()},auth:{provider:"anthropic",async loader(Z,Q){if(E=Z,(await Z()).type==="oauth"){let p1=function(){if(y)clearInterval(y),y=null;let P=async()=>{try{let X=await A();if(!h(X))return;let z=await Z();if(z.type!=="oauth")return;if(await u(z.refresh),!z.expires)return;let I=z.expires-Date.now(),v=O0(X);if(I>v)return;if(U("[refresh] opencode main oauth background due",{expiresInMs:I,refreshBeforeMs:v}),z.refresh&&p(X?.refresh?.mainLastRefreshError,z.refresh,Date.now())){U("[refresh] opencode main oauth background skipped backoff",{nextRetryAt:X?.refresh?.mainLastRefreshError?.nextRetryAt,retryCount:X?.refresh?.mainLastRefreshError?.retryCount,expiresInMs:I});return}if(z.refresh&&X?.refresh?.mainRefreshLeaseUntil&&X.refresh.mainRefreshLeaseUntil>Date.now()&&X.refresh.mainRefreshLeaseTokenHash===Z0(z.refresh))return;await g();let O=await Z();U("[refresh] opencode main oauth refreshed in background",{newExpiresInMs:O.expires?O.expires-Date.now():void 0})}catch(X){U("[refresh] opencode main oauth refresh failed",{message:X instanceof Error?X.message:String(X)})}};if(y=setInterval(()=>{P()},wj+w1(zj)),"unref"in y)y.unref()},T0=function(P,X){if(P instanceof Request&&P.body)return!1;return X==null||typeof X==="string"},c1=function(P){return P.has("x-parent-session-id")},f0=function(P){return P.includes("rate_limit_error")||/exceed your account'?s rate limit/i.test(P)},o1=function(P){return P?.quota?.enabled===!0},t1=function(P,X){let z=Date.now();if(f||z<k)return;f=g0(P,X).catch((I)=>{throw k=z+M1(X),I}).finally(()=>{f=null}),f.catch(()=>{})};for(let P of Object.values(Q.models))P.cost={input:0,output:0,cache:{read:0,write:0}};let N=null,x=null,f=null,k=0;async function g(){if(!N)N=(async()=>{let z=null,I=null,v=null;async function O(L){let Y=await A()??{version:1,main:{type:"opencode",provider:"anthropic"},accounts:[]};Y.refresh=Y.refresh??{},L(Y),await v0(Y)}async function F(L){let Y=Date.now()+Ij;while(Date.now()<Y){await new Promise((w)=>setTimeout(w,W1+w1(W1)));let G=await Z();if(G.type!=="oauth"||!G.access)continue;if((G.access!==L.access||G.refresh!==L.refresh||(G.expires??0)>(L.expires??0)+60000)&&(!G.expires||G.expires>Date.now()))return U("[refresh] opencode main oauth joined concurrent refresh",{expiresInMs:G.expires?G.expires-Date.now():void 0}),G.access}return null}for(let L=0;L<=2;L++){let Y=null;try{if(L>0){let H=500*2**(L-1);await new Promise((o)=>setTimeout(o,H))}if(Y=await Z(),!Y.refresh)throw Error("Token refresh failed: missing refresh token");let G=await A(),_=Z0(Y.refresh),w=G?.refresh?.mainLastRefreshError;if(U("[refresh] opencode main oauth refresh check",{attempt:L,expiresInMs:Y.expires?Y.expires-Date.now():void 0,hasBackoff:Boolean(w),backoffActive:w?p(w,Y.refresh,Date.now()):!1,retryCount:w?.retryCount,nextRetryAt:w?.nextRetryAt}),w&&p(w,Y.refresh,Date.now()))throw U("[refresh] opencode main oauth refresh skipped backoff",{nextRetryAt:w.nextRetryAt,retryCount:w.retryCount}),Error(q0(w,Date.now()));if(G?.refresh?.mainRefreshLeaseUntil&&G.refresh.mainRefreshLeaseUntil>Date.now()&&G.refresh.mainRefreshLeaseTokenHash===_){U("[refresh] opencode main oauth refresh skipped lease",{leaseUntil:G.refresh.mainRefreshLeaseUntil});let H=await F(Y);if(H)return H;throw Error("Claude OAuth refresh is already in progress")}let q=await I1({name:"opencode-main-oauth-refresh",ttlMs:120000});if(!q){U("[refresh] opencode main oauth refresh skipped file lock");let H=await F(Y);if(H)return H;throw Error("Claude OAuth refresh is already in progress")}v=q.release,z=Wj(),I=_,await O((H)=>{H.refresh=H.refresh??{},H.refresh.mainRefreshLeaseId=z??void 0,H.refresh.mainRefreshLeaseUntil=Date.now()+120000,H.refresh.mainRefreshLeaseTokenHash=_});let R=await A();if(U("[refresh] opencode main oauth refresh lease acquired",{attempt:L,leaseUntil:Date.now()+120000}),R?.refresh?.mainRefreshLeaseId!==z||R.refresh.mainRefreshLeaseTokenHash!==_)throw Error("Claude OAuth refresh is already in progress");U("[refresh] opencode main oauth refresh request start",{attempt:L});let T=await z1({refreshToken:Y.refresh,maxRetries:0});return await J.auth.set({path:{id:"anthropic"},body:{type:"oauth",refresh:T.refresh,access:T.access,expires:T.expires}}),await O((H)=>{if(!H?.refresh)return;if(H.refresh.mainLastRefreshError=void 0,H.refresh.mainRefreshLeaseId===z)H.refresh.mainRefreshLeaseId=void 0,H.refresh.mainRefreshLeaseUntil=void 0,H.refresh.mainRefreshLeaseTokenHash=void 0}),U("[refresh] opencode main oauth refresh succeeded",{attempt:L,expiresInMs:T.expires-Date.now()}),T.access}catch(G){let _=G instanceof Error&&(G.message.includes("fetch failed")||("code"in G)&&(G.code==="ECONNRESET"||G.code==="ECONNREFUSED"||G.code==="ETIMEDOUT"||G.code==="UND_ERR_CONNECT_TIMEOUT"));if(L<2&&(_||G instanceof F0&&G.status>=500))continue;U("[refresh] opencode main oauth refresh attempt failed",{attempt:L,error:G instanceof Error?G.message:String(G),transient:_});let w=Y?.refresh;if(w&&G instanceof F0)await O((q)=>{q.refresh=q.refresh??{},q.refresh.mainLastRefreshError=B1({error:G,now:Date.now(),refreshToken:w,previous:q.refresh.mainLastRefreshError})});throw G}finally{if(z)await O((G)=>{if(!G?.refresh)return;if(G.refresh.mainRefreshLeaseId===z&&G.refresh.mainRefreshLeaseTokenHash===I)G.refresh.mainRefreshLeaseId=void 0,G.refresh.mainRefreshLeaseUntil=void 0,G.refresh.mainRefreshLeaseTokenHash=void 0}).catch(()=>{});await v?.().catch(()=>{})}}throw Error("Token refresh exhausted all retries")})().finally(()=>{N=null});return N}$=g,p1();async function y0(P,X){if(!P.body||P.status!==200)return X?.mark("inspect_stream_skip",{status:P.status}),{response:P,rateLimited:!1};if(P.headers.get("x-cortexkit-relay-optimistic")==="true")return X?.mark("inspect_stream_skip",{status:P.status,reason:"optimistic_relay"}),{response:P,rateLimited:!1};let z=M(),I=P.body.getReader(),v=[],O=new TextDecoder,F="",L=0;while(!F.includes(`
`)&&F.length<65536){let{done:G,value:N}=await z.read();if(G)break;if(v.push(N),O+=N.byteLength,F+=_.decode(N,{stream:!0}),f0(F))break}if(f0(F))return await z.cancel().catch(()=>{}),X?.mark("inspect_stream_first_event",{ms:q(B()-Y),bytes:O,rateLimited:!0}),{response:P,rateLimited:!0};let w=new ReadableStream({start(G){for(let N of v)G.enqueue(N)},async pull(G){let{done:N,value:W}=await z.read();if(N){G.close();return}G.enqueue(W)},cancel(G){return z.cancel(G)}});return X?.mark("inspect_stream_first_event",{ms:q(B()-Y),bytes:O,rateLimited:!1}),{response:new Response(w,{status:P.status,statusText:P.statusText,headers:P.headers}),rateLimited:!1}}async function y0(P,X,Y,z,v="unknown"){let _=B(),F=Z1(P,X),O=F.get("x-session-affinity")||F.get("x-opencode-session"),w=c1(F);F.delete("x-parent-session-id"),F.delete("x-session-affinity"),F.delete("x-opencode-session");let G=X?.body,N;if(G&&typeof G==="string")try{let m=JSON.parse(G);if(typeof m.model==="string")N=m.model}catch{}let W=await E0(Y,N),S=typeof G==="string"?G.length:void 0;if(G&&typeof G==="string"){let m=B(),o=(()=>{if(!T1())return!1;try{return e(JSON.parse(G).model)}catch{return!1}})();G=await P1(G,{cache1hEnabled:!w&&G0(),cache1hMode:D0(),fastModeEnabled:o,identity:W});try{i(F,Y,{body:JSON.parse(G),identity:W})}catch{i(F,Y,{identity:W})}if(o)N0(F);z?.mark("rewrite_body",{route:v,ms:q(B()-m),originalBytes:S,rewrittenBytes:G.length,cacheEnabled:!w&&G0(),cacheMode:D0(),fastModeEnabled:o,subagent:w})}let T=G1(P);if(v==="main"&&typeof G==="string"&&!w&&G0()&&D0()==="hybrid"){let m=await E();if((await D.track({sessionId:O,url:T.url?.toString()??T.input.toString(),headers:F,bodyText:G,storage:m,cacheMode:"hybrid"})).tracked)z?.mark("cachekeep_track",{session:O})}let C=()=>fetch(T.input,{...X,body:G,headers:F,...$1()&&{tls:{rejectUnauthorized:!1}}}),x=B(),c=await b1({config:M,input:T.input,init:X,headers:F,body:G,fallback:C,affinity:O,optimisticResponse:M?.transport==="websocket"});return z?.mark("send_headers_received",{route:v,ms:q(B()-x),status:c.status,relayConfigured:M!=null,totalSendWithAccessMs:q(B()-_)}),c}async function k0(P,X){let Y=Date.now(),z=await S0({accessToken:P});return U={accessToken:P,refreshAfter:v1(z,X,Y),quota:z},z}async function a1(P,X){let Y=Date.now();if(U?.accessToken!==P)return await k0(P,X);if(Y>=U.refreshAfter)t1(P,X);return U.quota}async function g0(P,X,Y,z,v,_){if(!Y.length)return v??null;await v?.body?.cancel().catch(()=>{});let F=v??null;for(let[O,w]of Y.entries()){let G=w.access;if(!G)continue;let N=await y0(P,X,G,_,`fallback_${O}`);F=N;let W=H0(N.status,z);if(!W){let S=await T0(N,_);N=S.response,F=N,W=S.rateLimited}if(!W)return await K.markUsed(w),N;if(O<Y.length-1)await N.body?.cancel().catch(()=>{})}return F}async function r1(P,X,Y,z,v,_){if(!C0(P,X?.body))return Y;let F=B(),O=_??await E();v?.mark("fallback_load_storage",{ms:q(B()-F),cached:!!_});let w=Y,G=H0(w.status,O);if(!G){let W=await T0(w,v);w=W.response,G=W.rateLimited}if(!G)return w;let N=z;if(!N){let W=B();N=await K.getUsableFallbackAccounts(),v?.mark("fallback_get_accounts",{ms:q(B()-W),accounts:N.length})}return await g0(P,X,N,O,w,v)??w}return{apiKey:"",async fetch(P,X){let Y=X?.body,z=Nj({bodyBytes:typeof Y==="string"?Y.length:void 0,relayConfigured:M!=null}),v=B(),_=await $();if(z.mark("get_auth",{ms:q(B()-v),authType:_.type,hasAccess:Boolean(_.access)}),_.type!=="oauth"){let W=await fetch(P,X);return z.done("non_oauth_passthrough",{status:W.status}),W}if(await u(_.refresh),!_.access||!_.expires||_.expires<Date.now()){H("[refresh] opencode main oauth refresh required for request",{hasAccess:Boolean(_.access),expiresInMs:_.expires?_.expires-Date.now():void 0});let W=B();_.access=await g(),z.mark("refresh_main_access",{ms:q(B()-W)})}if(!_.access)throw z.done("missing_access_error"),Error("OAuth access token is missing after refresh");let F=B(),O=await E();z.mark("load_storage",{ms:q(B()-F)});let w;if(C0(P,X?.body)&&o1(O))try{let W=B(),S=await a1(_.access,O);if(z.mark("main_quota_for_routing",{ms:q(B()-W),passes:q0(S,O)}),!q0(S,O)){let T=B();w=await K.getUsableFallbackAccounts(),z.mark("preselect_fallback_accounts",{ms:q(B()-T),accounts:w.length});let C=await g0(P,X,w,O,void 0,z);if(C)return z.done("return_preselected_fallback",{status:C.status}),_0(C)}}catch(W){z.mark("main_quota_for_routing_error",{error:W instanceof Error?W.message:String(W)})}let G=await y0(P,X,_.access,z,"main"),N=await r1(P,X,G,w,z,O);return z.done("return_response",{status:N.status}),_0(N)}}}return{}},methods:[{label:"Claude Pro/Max",type:"oauth",authorize:async()=>{let $=await M0("max");return{url:$.url,instructions:"Paste the authorization code here:",method:"code",callback:async(I)=>{return B0(I,$.verifier,$.redirectUri,$.state)}}}},{label:"Create an API Key",type:"oauth",authorize:async()=>{let $=await M0("console");return{url:$.url,instructions:"Paste the authorization code here:",method:"code",callback:async(I)=>{let L=await B0(I,$.verifier,$.redirectUri,$.state);if(L.type==="failed")return L;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 ${L.access}`}}).then((U)=>U.json())).raw_key}}}}},{provider:"anthropic",label:"Manually enter API Key",type:"api"}]}}};export{qj as AnthropicAuthPlugin};
`)&&F.length<65536){let{done:G,value:_}=await I.read();if(G)break;if(v.push(_),L+=_.byteLength,F+=O.decode(_,{stream:!0}),f0(F))break}if(f0(F))return await I.cancel().catch(()=>{}),X?.mark("inspect_stream_first_event",{ms:S(M()-z),bytes:L,rateLimited:!0}),{response:P,rateLimited:!0};let Y=new ReadableStream({start(G){for(let _ of v)G.enqueue(_)},async pull(G){let{done:_,value:w}=await I.read();if(_){G.close();return}G.enqueue(w)},cancel(G){return I.cancel(G)}});return X?.mark("inspect_stream_first_event",{ms:S(M()-z),bytes:L,rateLimited:!1}),{response:new Response(Y,{status:P.status,statusText:P.statusText,headers:P.headers}),rateLimited:!1}}async function k0(P,X,z,I,v="unknown"){let O=M(),F=$1(P,X),L=F.get("x-session-affinity")||F.get("x-opencode-session"),Y=c1(F);F.delete("x-parent-session-id"),F.delete("x-session-affinity"),F.delete("x-opencode-session");let G=X?.body,_;if(G&&typeof G==="string")try{let b=JSON.parse(G);if(typeof b.model==="string")_=b.model}catch{}let w=await E0(z,_),q=typeof G==="string"?G.length:void 0;if(G&&typeof G==="string"){let b=M(),t=(()=>{if(!f1())return!1;try{return j0(JSON.parse(G).model)}catch{return!1}})();G=await X1(G,{cache1hEnabled:!Y&&G0(),cache1hMode:D0(),fastModeEnabled:t,identity:w});try{l(F,z,{body:JSON.parse(G),identity:w})}catch{l(F,z,{identity:w})}if(t)N0(F);I?.mark("rewrite_body",{route:v,ms:S(M()-b),originalBytes:q,rewrittenBytes:G.length,cacheEnabled:!Y&&G0(),cacheMode:D0(),fastModeEnabled:t,subagent:Y})}let R=D1(P);if(v==="main"&&typeof G==="string"&&!Y&&G0()&&D0()==="hybrid"){let b=await A();if((await D.track({sessionId:L,url:R.url?.toString()??R.input.toString(),headers:F,bodyText:G,storage:b,cacheMode:"hybrid"})).tracked)I?.mark("cachekeep_track",{session:L})}let T=()=>fetch(R.input,{...X,body:G,headers:F,...G1()&&{tls:{rejectUnauthorized:!1}}}),H=M(),o=await m1({config:B,input:R.input,init:X,headers:F,body:G,fallback:T,affinity:L,optimisticResponse:B?.transport==="websocket"});return I?.mark("send_headers_received",{route:v,ms:S(M()-H),status:o.status,relayConfigured:B!=null,totalSendWithAccessMs:S(M()-O)}),o}async function g0(P,X){let z=Date.now(),I=await A0({accessToken:P});return x={accessToken:P,refreshAfter:v1(I,X,z),quota:I},I}async function a1(P,X){let z=Date.now();if(x?.accessToken!==P)return await g0(P,X);if(z>=x.refreshAfter)t1(P,X);return x.quota}async function b0(P,X,z,I,v,O){if(!z.length)return v??null;await v?.body?.cancel().catch(()=>{});let F=v??null;for(let[L,Y]of z.entries()){let G=Y.access;if(!G)continue;let _=await k0(P,X,G,O,`fallback_${L}`);F=_;let w=H0(_.status,I);if(!w){let q=await y0(_,O);_=q.response,F=_,w=q.rateLimited}if(!w)return await K.markUsed(Y),_;if(L<z.length-1)await _.body?.cancel().catch(()=>{})}return F}async function r1(P,X,z,I,v,O){if(!T0(P,X?.body))return z;let F=M(),L=O??await A();v?.mark("fallback_load_storage",{ms:S(M()-F),cached:!!O});let Y=z,G=H0(Y.status,L);if(!G){let w=await y0(Y,v);Y=w.response,G=w.rateLimited}if(!G)return Y;let _=I;if(!_){let w=M();_=await K.getUsableFallbackAccounts(),v?.mark("fallback_get_accounts",{ms:S(M()-w),accounts:_.length})}return await b0(P,X,_,L,Y,v)??Y}return{apiKey:"",async fetch(P,X){let z=X?.body,I=Nj({bodyBytes:typeof z==="string"?z.length:void 0,relayConfigured:B!=null}),v=M(),O=await Z();if(I.mark("get_auth",{ms:S(M()-v),authType:O.type,hasAccess:Boolean(O.access)}),O.type!=="oauth"){let w=await fetch(P,X);return I.done("non_oauth_passthrough",{status:w.status}),w}if(await u(O.refresh),!O.access||!O.expires||O.expires<Date.now()){let q=(await A())?.refresh?.mainLastRefreshError;if(O.refresh&&q&&p(q,O.refresh,Date.now()))throw U("[refresh] opencode main oauth request skipped backoff",{nextRetryAt:q.nextRetryAt,retryCount:q.retryCount,expiresInMs:O.expires?O.expires-Date.now():void 0}),Error(q0(q,Date.now()));U("[refresh] opencode main oauth refresh required for request",{hasAccess:Boolean(O.access),expiresInMs:O.expires?O.expires-Date.now():void 0,expiredAgoMs:O.expires&&O.expires<Date.now()?Date.now()-O.expires:void 0});let R=M();O.access=await g(),I.mark("refresh_main_access",{ms:S(M()-R)})}if(!O.access)throw I.done("missing_access_error"),Error("OAuth access token is missing after refresh");let F=M(),L=await A();I.mark("load_storage",{ms:S(M()-F)});let Y;if(T0(P,X?.body)&&o1(L))try{let w=M(),q=await a1(O.access,L);if(I.mark("main_quota_for_routing",{ms:S(M()-w),passes:S0(q,L)}),!S0(q,L)){let R=M();Y=await K.getUsableFallbackAccounts(),I.mark("preselect_fallback_accounts",{ms:S(M()-R),accounts:Y.length});let T=await b0(P,X,Y,L,void 0,I);if(T)return I.done("return_preselected_fallback",{status:T.status}),_0(T)}}catch(w){I.mark("main_quota_for_routing_error",{error:w instanceof Error?w.message:String(w)})}let G=await k0(P,X,O.access,I,"main"),_=await r1(P,X,G,Y,I,L);return I.done("return_response",{status:_.status}),_0(_)}}}return{}},methods:[{label:"Claude Pro/Max",type:"oauth",authorize:async()=>{let Z=await B0("max");return{url:Z.url,instructions:"Paste the authorization code here:",method:"code",callback:async(Q)=>{return M0(Q,Z.verifier,Z.redirectUri,Z.state)}}}},{label:"Create an API Key",type:"oauth",authorize:async()=>{let Z=await B0("console");return{url:Z.url,instructions:"Paste the authorization code here:",method:"code",callback:async(Q)=>{let W=await M0(Q,Z.verifier,Z.redirectUri,Z.state);if(W.type==="failed")return W;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 ${W.access}`}}).then((x)=>x.json())).raw_key}}}}},{provider:"anthropic",label:"Manually enter API Key",type:"api"}]}}};export{qj as AnthropicAuthPlugin};
{
"name": "@cortexkit/opencode-anthropic-auth",
"version": "1.2.2",
"version": "1.2.3",
"type": "module",

@@ -44,4 +44,4 @@ "repository": {

"dependencies": {
"@cortexkit/anthropic-auth-core": "1.2.2"
"@cortexkit/anthropic-auth-core": "1.2.3"
}
}

Sorry, the diff of this file is too big to display