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.1
to
1.2.2
dist/index-z4vzznkk.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-16nba65t.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-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:
opencode-anthropic-auth login [label]

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

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

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

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

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

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