@cortexkit/opencode-anthropic-auth 2.4.4 → 2.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,45 @@
1
+ import{u as b8}from"./index-2ra790fx.js";import{w as g8}from"./index-jc8zwxvw.js";import{G as y8}from"./index-a0jxsmac.js";import{K as m8,P as o9,R as p8,S as c8}from"./index-d4e8qj37.js";import{ja as B7}from"./index-crx0xd9j.js";import{randomUUID as UZ}from"node:crypto";import{existsSync as c2,readFileSync as l2}from"node:fs";import{dirname as u2,join as d2}from"node:path";import{fileURLToPath as i2}from"node:url";import{ANTHROPIC_OAUTH_ORIGIN_REFUSAL as n2,acquireNativeAccountRuntime as o2,applyCustomHeaders as a7,assertNotCustodyTombstone as r2,authorize as t7,buildAccountList as t$,buildClaudeQuotaSummary as s2,buildFallbackQuotaSummaries as a2,buildPrimeRequestBody as t2,CACHE_KEEP_EXTENDED_TTL_BETA as e2,CacheKeepManager as $6,CacheKeepSessionRegistry as J6,CLAUDE_FABLE_MYTHOS_5_MODEL_SPECS as Z6,CLAUDE_HAIKU_4_5_MODEL_ID as e7,CLAUDE_HAIKU_5_5_CONTEXT_WINDOW as Y6,CLAUDE_HAIKU_5_5_LONG_CONTEXT_PRICING as x9,CLAUDE_HAIKU_5_5_LONG_CONTEXT_THRESHOLD as X6,CLAUDE_HAIKU_5_5_MAX_OUTPUT_TOKENS as G6,CLAUDE_HAIKU_5_5_MODEL_ID as I9,CLAUDE_HAIKU_5_5_PRICING as f9,CLAUDE_HAIKU_5_5_RELEASE_DATE as W6,CLAUDE_OPUS_5_5_CONTEXT_WINDOW as z6,CLAUDE_OPUS_5_5_MAX_OUTPUT_TOKENS as V6,CLAUDE_OPUS_5_5_MODEL_ID as k9,CLAUDE_OPUS_5_5_PRICING as v9,CLAUDE_OPUS_5_5_RELEASE_DATE as j6,CLAUDE_SONNET_5_5_CONTEXT_WINDOW as K6,CLAUDE_SONNET_5_5_MAX_OUTPUT_TOKENS as _6,CLAUDE_SONNET_5_5_MODEL_ID as h9,CLAUDE_SONNET_5_5_PRICING as b9,CLAUDE_SONNET_5_5_RELEASE_DATE as L6,CLAUSTRUM_OPENCODE_ENROLLMENT_NAME as QZ,cacheKeepSourceWarmIdleCap as O6,cacheWarmCacheablePrefixFingerprint as $8,computeXxhash64Hex as N6,configuredAnthropicOAuthAccountCount as D6,createEmptyStorage as W1,createNativeUsagePublisher as H6,createProviderErrorResponseScope as g9,createSseFramer as U6,createStickyNoRouteResponse as Q6,custodyTombstoneOAuth as BZ,decideOpenCodeStateLayoutOnce as B6,decideStickyQuotaFailure as FZ,decodeSseFrame as F6,detectClaustrumConnection as J8,dumpDirectRequest as y9,dumpResponseArtifact as wZ,effectiveRelayStatus as w6,exchange as TZ,executeAccountCommand as T6,executeCache1hCommand as CZ,executeCacheKeepCommand as C6,executeDumpCommand as Z8,executeFastModeCommand as Y8,executeKillswitchCommand as X8,executeLaneStartCommand as G8,executeLoggingCommand as W8,executePrimeCommand as S6,executeRoutingCommand as z8,FALLBACK_BACKGROUND_TICK_MS as E6,fallbackAccountUuidForLineage as A6,formatEnrollmentStatus as V8,formatNativeAccountState as SZ,formatOAuthAccountTier as b4,formatQuotaBackoffMessage as j8,formatRefreshBackoffMessage as P6,getAccountStoragePath as q6,getCache1hMode as r1,getCache1hPersistentMode as g4,getCacheKeepWindow as K8,getClaudeCodeIdentityForVerifiedAccount as M6,getClaudeModelCatalogue as R6,getClaustrumMode as y4,getDefaultCacheKeepRegistryDirectory as x6,getFallbackReauthLabels as I6,getHostClaustrumEnrollmentPaths as m9,getKillswitchConfig as EZ,getPersistedLogLevel as AZ,getQuotaCheckIntervalMs as _8,getQuotaNextRefreshAt as M1,getRequestGzipLatch as f6,getRequestGzipLatchPath as k6,getRoutingMode as _1,getScopedQuotaWindowForModel as v6,getThinkingPrefixMismatchBehavior as h6,inspectNativeHostAuthEntry as b6,isApiKeyAccount as s1,isCache1hEnabled as a1,isCache1hPersistentlyEnabled as p9,isCacheKeepAlways as L8,isCacheKeepHybridActive as O8,isCacheKeepPersistentlyEnabled as N8,isCacheKeepSubagentsEnabled as g6,isClaudeFableOrMythos51Model as y6,isClaudeOpus5Model as m6,isClaudeOpus55Model as p6,isCostZeroingEnabled as c6,isCustodyTombstoneOAuth as PZ,isDumpPersistentlyEnabled as qZ,isFastModeEnabled as MZ,isFastModePersistentlyEnabled as RZ,isFastModeSupportedModel as D8,isKillswitchEnabled as z1,isNativeTransientAccountError as R1,isOAuthAccount as w0,isPermanentRefreshError as V1,isPrimePersistentlyEnabled as c9,isQuotaBearingHeaderFrame as l6,isValidApiBaseURL as xZ,killswitchPassesPolicy as j1,killswitchRetryAfterSeconds as H8,log as e$,logger as v,mergeAnthropicBetas as U8,mergeHeaderQuotaForPersistence as Q8,NativeAccountRefusal as x1,NativeCustodyError as u6,NativeRuntimeError as d6,NativeVaultNoAccountError as IZ,nativeAccountCanServe as k0,nativeAccountPolicy as i6,nativeAccountRefusal as n6,nativeLocalAccountRefusal as o6,nativeLocalQuotaLineage as r6,nativeMigrationAuthorityPhase as B8,normalizeQuotaHeaders as s6,oauthProfileIsFresh as l9,oauthProfileMatchesIdentity as a6,PARALLEL_TOOL_CALLS_SYSTEM_PROMPT as t6,PrimeManager as e6,parseAccountCommandAction as $G,parseCache1hCommandAction as JG,parseCacheKeepCommandAction as ZG,parseDumpCommandAction as YG,parseFastModeCommandAction as XG,parseLaneStartCommandAction as GG,parseLoggingCommandAction as WG,parsePrimeCommandAction as zG,parseRoutingCommandAction as VG,parseSseFrame as jG,QUOTA_HEADER_FEED_SCHEMA_VERSION as u9,QuotaHeaderFeedRegistry as KG,QuotaManager as _G,quotaExhaustionFromHeaders as LG,quotaSnapshotCheckedAt as I1,quotaSnapshotHasStandardWindows as fZ,quotaSnapshotModelScopeIsExhausted as d9,quotaSnapshotPassesModelScope as i9,quotaSnapshotPassesPolicy as t1,readClaustrumEnrollmentStatus as F8,readNativeAccountsForRequest as OG,readNativeEnrollmentMode as f1,readNativeHostAuthKind as NG,readNativeMigrationJournal as w8,refreshBackoffActive as k1,remapRequestBodyModel as DG,resetClaustrumEnrollmentState as HG,resolveClaudeModelCapabilities as UG,resolveNativePoolPaths as QG,STICKY_ROUTING_MAIN_ACCOUNT_ID as G$,StickySessionRouter as BG,sendViaRelay as FG,sendWithRequestGzip as wG,setCache1hState as n9,setDumpEnabled as kZ,setFastModeEnabled as vZ,setLogLevel as TG,shouldFallbackStatus as CG,snapshotHasServableLocalOAuth as T8,stateRefusalPublicMessage as SG,stickyQuotaSnapshotIsFresh as v1,stickyRouteFamilyForModel as EG,TrailingAssistantHistoryError as C8,tokenFingerprint as K1}from"@cortexkit/anthropic-auth-core";import{randomUUID as w3}from"node:crypto";import{isValidAnthropicRequestId as T3,isValidBillingPromptId as fY}from"@cortexkit/anthropic-auth-core";var w4="x-cortexkit-billing-lineage",kY=4096,vY=4096,hY=1024,C3=new Set(["title","summary","compaction"]),bY="[lane start] — automated cache warm; no response needed.";function gY($){let J=$.info?.sessionID??$.info?.sessionId;return typeof J==="string"&&J.length>0?J:void 0}function yY($){if($.info?.synthetic===!0||$.info?.ignored===!0||typeof $.info?.agent==="string"&&C3.has($.info.agent))return!0;for(let J of $.parts??[]){if(J.type==="compaction"||J.synthetic===!0||J.ignored===!0)return!0;if(J.metadata?.compaction_continue===!0)return!0;if(J.type==="text"&&J.text===bY)return!0}return!1}function A1($,J){while($.size>J){let Y=$.keys().next().value;if(Y===void 0)return;$.delete(Y)}}function xJ($){let J=$.get("request-id")??$.get("x-request-id");return J&&T3(J)?J:void 0}class IJ{#$;#_;#j;#L;#X;#J=new Map;#Y=new Map;#Z=new Map;#G=new Map;#W=new Map;#z=new Map;#V=new Map;constructor($={}){this.#$=$.createPromptId??w3,this.#_=$.createRequestToken??w3,this.#j=$.maxPrompts??kY,this.#L=$.maxRequests??vY,this.#X=$.maxSessions??hY}observeMessages($){let J;for(let N=$.length-1;N>=0;N-=1)if($[N]?.info?.role==="user"){J=$[N];break}if(!J)return;let Y=gY(J),X=J.info?.id;if(!Y||typeof X!=="string"||X.length===0)return;let z=this.#K(Y,X);if(yY(J)){this.#Y.delete(z),this.#Y.set(z,!0),A1(this.#Y,this.#j),this.#J.delete(z);return}this.#Y.delete(z);let V=this.#J.get(z);if(V){this.#J.delete(z),this.#J.set(z,V);return}let j=this.#$();if(!fY(j))return;this.#J.set(z,j),A1(this.#J,this.#j)}markHeaders($){let J=this.#K($.sessionId,$.messageId);if(C3.has($.agent??"")||this.#Y.has(J))return!1;let Y=this.#J.get(J);if(!Y)return!1;let X=this.#_();if(!X||/[\r\n]/.test(X))return!1;let z={sessionId:$.sessionId,messageId:$.messageId,promptId:Y,requestToken:X,generation:this.#W.get($.sessionId)??0,sequence:0};return this.#Z.set(X,z),A1(this.#Z,this.#L),$.headers[w4]=X,!0}resolveHeader($){if(!$)return;let J=this.#Z.get($);if(!J)return;this.#Z.delete($),this.#Z.set($,J);let Y=(this.#z.get(J.sessionId)??0)+1;this.#z.delete(J.sessionId),this.#z.set(J.sessionId,Y),A1(this.#z,this.#X);let X={...J,previousRequestId:this.#G.get(J.sessionId),sequence:Y};if(X.previousRequestId===void 0)delete X.previousRequestId;return X}commit($,J){if(!$||!J||!T3(J))return!1;if((this.#W.get($.sessionId)??0)!==$.generation)return!1;let Y=this.#Z.get($.requestToken);if(!Y||Y.sessionId!==$.sessionId||Y.messageId!==$.messageId||Y.promptId!==$.promptId||Y.generation!==$.generation)return!1;if(this.#J.get(this.#K($.sessionId,$.messageId))!==$.promptId)return!1;if($.sequence<(this.#V.get($.sessionId)??0))return!1;return this.#V.delete($.sessionId),this.#V.set($.sessionId,$.sequence),A1(this.#V,this.#X),this.#G.delete($.sessionId),this.#G.set($.sessionId,J),A1(this.#G,this.#X),!0}clearSession($){this.#W.set($,(this.#W.get($)??0)+1),this.#G.delete($),this.#z.delete($),this.#V.delete($);let J=`${$}\x00`;for(let Y of this.#J.keys())if(Y.startsWith(J))this.#J.delete(Y);for(let Y of this.#Y.keys())if(Y.startsWith(J))this.#Y.delete(Y);for(let[Y,X]of this.#Z)if(X.sessionId===$)this.#Z.delete(Y);A1(this.#W,this.#X)}#K($,J){return`${$}\x00${J}`}}import{setBounded as E3,stickyRetainRetryHeaders as mY,stickyRetryAfterWithJitter as pY}from"@cortexkit/anthropic-auth-core";var C4="cache-diagnosis-2026-04-07",cY="MC-CACHE-DIAG ",lY=1000,uY=300000,dY={turn:!1,start:!0,prewarm_cachekeep:!0},iY=1000;class fJ{entries=new Map;previousFor($){return this.entries.get($)??null}capture($,J,Y){E3(this.entries,$,{messageId:J,receivedAt:Y},lY)}}class kJ{hashes=new Map;capture($,J){if(this.hashes.has($))return null;return E3(this.hashes,$,!0,iY),`MC-CACHE-DIAG-BETAS ${JSON.stringify({hash:$,betas:[...J].sort()})}`}}function z9($,J,Y){let X=$.get(J);if(X)$.set(Y,X)}async function V9($,J,Y,X,z,V=!1){let j=V?mY($.headers):new Headers($.headers);if(!V)j.set("retry-after",String(pY(J,Y)));if(X)return await $.body?.cancel().catch(()=>{}),j.set("content-type","application/json"),new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:V?"Sticky OAuth account quota is unconfirmed; retrying shortly while retaining session affinity.":"Sticky OAuth account quota resets shortly; retaining session affinity."}}),{status:429,headers:j});let N=new Response($.body,{status:$.status,statusText:$.statusText,headers:j});return z9(z,$,N),N}function j9($,J){$.diagnostics={previous_message_id:J}}function X1($){return $!=null&&typeof $==="object"&&!Array.isArray($)}function nY($){return X1($)&&$.type==="ephemeral"}function A3($,J){if(!nY($))return;J.push($.ttl==="1h"?"1h":"5m")}function S3($,J){if(!Array.isArray($))return;for(let Y of $)if(X1(Y))A3(Y.cache_control,J)}function K9($){if(!X1($))return null;let J=[];if(A3($.cache_control,J),S3($.system,J),Array.isArray($.messages)){for(let Y of $.messages)if(X1(Y))S3(Y.content,J)}return J.at(-1)??null}function oY($){if(!Object.hasOwn($,"diagnostics"))return{state:"absent"};let J=$.diagnostics;if(J===null)return{state:"server_null"};if(!X1(J))return null;if(!Object.hasOwn(J,"cache_miss_reason"))return null;let Y=J.cache_miss_reason;if(Y===null)return{state:"pending"};if(!X1(Y)||typeof Y.type!=="string"||!Y.type)return null;let X=Y.cache_missed_input_tokens;if(X!==void 0&&typeof X!=="number")return null;return{state:"populated",missReason:Y.type,cacheMissedInputTokens:X}}function T4($,J){let Y=$[J];return typeof Y==="number"&&Number.isFinite(Y)&&Y>=0?Y:null}function P3($){if(typeof $.source!=="string"||$.source.length===0||typeof $.accountId!=="string"||$.accountId.length===0||typeof $.synthetic!=="boolean"||typeof $.betasHash!=="string"||$.betasHash.length===0)return{};let J=dY[$.source];if(J!==void 0&&J!==$.synthetic)$.onWarning?.(`cache diagnostics source/synthetic mismatch: source=${$.source} expected=${J} actual=${$.synthetic}`);let Y=Math.trunc($.receivedAt);if(!Number.isFinite($.receivedAt)||Y!==$.receivedAt)return{};if(!X1($.message))return{};let X=$.message.id,z=$.message.model,V=$.message.usage;if(typeof X!=="string"||X.length===0)return{};if(typeof z!=="string"||z.length===0||!X1(V))return{};let j=T4(V,"input_tokens"),N=T4(V,"cache_read_input_tokens"),F=T4(V,"cache_creation_input_tokens"),E=V.cache_creation;if(j===null||N===null||F===null||!X1(E))return{};let A=T4(E,"ephemeral_5m_input_tokens"),x=T4(E,"ephemeral_1h_input_tokens");if(A===null||x===null)return{};let l=oY($.message);if(!l)return{};let i={v:2,source:$.source,account_id:$.accountId,synthetic:$.synthetic,betas_hash:$.betasHash,session_id:$.request.sessionId,ts_ms_received:Y,model:z,is_subagent:$.request.isSubagent,ttl_sent:$.request.ttlSent,cache_read:N,cache_creation:F,input_tokens:j,ephemeral_5m_tokens:A,ephemeral_1h_tokens:x,message_id:X,previous_message_id:$.request.previousMessageId,diag_state:l.state};if(l.missReason!==void 0)i.miss_reason=l.missReason;if(l.cacheMissedInputTokens!==void 0)i.cache_missed_input_tokens=l.cacheMissedInputTokens;if($.requestedModel!==void 0&&$.requestedModel!==z)i.requested_model=$.requestedModel;let H0=l.missReason==="previous_message_not_found"&&$.request.previousMessageId!==null&&$.request.previousMessageReceivedAt!==void 0&&$.receivedAt-$.request.previousMessageReceivedAt<uY&&$.receivedAt>=$.request.previousMessageReceivedAt?{messageId:X,previousMessageId:$.request.previousMessageId}:void 0;return{record:i,messageId:X,...H0?{canary:H0}:{}}}function q3($){return`${cY}${JSON.stringify($)}`}import{getClaustrumMode as _9,hasNoLocalCredential as vJ,isCustodyTombstoneOAuth as rY,isOAuthAccount as hJ,nativeAccountCanServe as bJ}from"@cortexkit/anthropic-auth-core";function S4($,J){if(_9(J)!=="claustrum"||!J?.claustrum?.scopedRoster)return!1;let Y=J.accounts.find((X)=>X.id===$);return Boolean(Y&&hJ(Y)&&bJ(Y)&&Y.claustrumScopedCredentialId&&Y.anthropicAccountUuid&&vJ(Y))}function M3($){if(_9($)!=="claustrum")return{fallbacks:"R",evidence:"V"};if(!$?.claustrum?.scopedRoster)return{fallbacks:"M",evidence:"N"};return{fallbacks:$.accounts.filter((Y)=>bJ(Y)&&hJ(Y)).every((Y)=>Boolean(Y.claustrumScopedCredentialId&&Y.anthropicAccountUuid&&vJ(Y)))?"T":"R",evidence:"V"}}function gJ($){if(rY($,"anthropic"))return"T";if($.type==="oauth"&&$.access&&$.refresh)return"R";return"X"}function yJ($,J){if($.role==="main"){if(_9(J)!=="claustrum")return"na";let X=J?.claustrum?.scopedRoster?J.claustrum.primaryAccount:void 0;if(!X)return"unknown-identity";if(X.state==="needs_reauth")return"on-vault-reauth";return bJ(X)?"on-vault-served":"on-cold"}if(_9(J)!=="claustrum")return"off";let Y=J?.accounts.find((X)=>X.id===$.id);if(!Y||!hJ(Y)||!Y.claustrumScopedCredentialId||!Y.anthropicAccountUuid||!vJ(Y))return"off";if(Y.claustrumScopedState==="needs_reauth")return"on-vault-reauth";return S4($.id,J)?"on-vault-served":"on-cold"}class E4 extends Error{verdict;dimensions;code="custody_state_mismatch";constructor($,J){super(`custody state mismatch: ${$}`);this.verdict=$;this.dimensions=J}toJSON(){return{code:this.code,verdict:this.verdict,dimensions:this.dimensions}}}function R3($){if($.authority!=="committed"&&$.authority!=="retired")throw new E4("MIGRATION_REQUIRED",$);if($.mode==="L"&&$.main==="R"&&$.evidence==="V"&&$.localOAuthServable===!0)return{verdict:"LOCAL_SERVE"};if($.mode==="L"&&$.main==="T"&&$.fallbacks==="R"&&$.evidence==="V")return{verdict:"LOCAL_SERVE"};if($.mode==="C"&&$.main==="T"&&$.fallbacks==="T"&&$.evidence==="V")return{verdict:"CLAUSTRUM_SERVE"};throw new E4("FAIL_CLOSED",$)}import{createHash as sY}from"node:crypto";import{defaultAdaptiveEffort as aY,logger as tY,normalizeAdaptiveEffort as eY,pinsEffortOnEveryRequest as x3,resolveClaudeModelCapabilities as $5,supportsPerMessageEffort as J5}from"@cortexkit/anthropic-auth-core";var h3=512,Z5=1024,Y5=4096,A4=32,P4=32,O9="[A-Za-z0-9_-]{1,128}",X5="<cortexkit-internal-effort ",G5="<cortexkit-internal-effort-plan ",b3=/^\s*(?:§[0-9]+§\s*)+$/,q4={low:"l",medium:"m",high:"h",xhigh:"x",max:"z"},lJ=Object.fromEntries(Object.entries(q4).map(([$,J])=>[J,$])),uJ="<cortexkit-internal-effort-v2 ",dJ="<cortexkit-internal-effort-anchor-v1 ",l1="x-cortexkit-effort-plan";class C0 extends Error{check;details;constructor($,J="unspecified",Y={}){super($);this.check=J;this.details=Y;this.name="EffortMarkerCorrelationError"}}function J$($){return typeof $==="object"&&$!==null&&!Array.isArray($)}function W5($){let J=$5($);if(!J||J.effortMarkers==="none")return;return J.id.replace(/^claude-/,"")}function mJ($){if($?.info?.role!=="user")return;if($.info.model?.providerID!=="anthropic")return;return W5($.info.model.modelID)}function I3($){return eY($.info?.model?.variant)??aY($.info?.model?.modelID)}function f3($){return $.parts?.some((J)=>{if(J.type==="text")return J.ignored!==!0&&J.text!=="";if(J.type==="file")return J.mime!=="text/plain"&&J.mime!=="application/x-directory";return J.type==="compaction"||J.type==="subtask"})??!1}function s$($){return sY("sha256").update($).digest("hex")}function z5($){return s$(`scope:${$}`).slice(0,P4)}function N9($){return s$(`cortexkit-effort-v2:${$}`).slice(0,A4)}function V5($,J,Y){let X=q4[Y],z=`transition:${$}:${J}:${X}`;return`${uJ}scope="${$}" boundary="${J}" effort="${X}" check="${N9(z)}"/>`}function g3($){let J=$.match(new RegExp(`^${uJ}scope="([0-9a-f]{${P4}})" boundary="(${O9})" effort="([lmhxz])" check="([0-9a-f]{${A4}})"/>$`));if(!J)return null;let[,Y,X,z,V]=J,j=lJ[z??""];if(!Y||!X||!z||!V||!j)return null;let N=`transition:${Y}:${X}:${z}`;if(N9(N)!==V)return null;return{scope:Y,boundary:X,effort:j,token:$}}function j5($,J,Y,X){let z=q4[Y],V=`anchor:${$}:${J}:${z}:${X}`;return`${dJ}scope="${$}" boundary="${J}" effort="${z}" digest="${X}" check="${N9(V)}"/>`}function y3($){let J=$.match(new RegExp(`^${dJ}scope="([0-9a-f]{${P4}})" boundary="(${O9})" effort="([lmhxz])" digest="([0-9a-f]{64})" check="([0-9a-f]{${A4}})"/>$`));if(!J)return null;let[,Y,X,z,V,j]=J,N=lJ[z??""];if(!Y||!X||!z||!V||!j||!N)return null;let F=`anchor:${Y}:${X}:${z}:${V}`;if(N9(F)!==j)return null;return{scope:Y,boundary:X,effort:N,digest:V,token:$}}function pJ($){return $.trim()===""||b3.test($)}function k3(){return new RegExp(`(?:${G5}nonce="[^"]+" baseline="[^"]+" count="[^"]+" sig="[0-9a-f]+"/>|${X5}nonce="[^"]+" effort="[^"]+" sig="[0-9a-f]+"/>)`,"g")}function K5(){return new RegExp(`${uJ}scope="[0-9a-f]{${P4}}" boundary="${O9}" effort="[lmhxz]" check="[0-9a-f]{${A4}}"/>`,"g")}function _5(){return new RegExp(`${dJ}scope="[0-9a-f]{${P4}}" boundary="${O9}" effort="[lmhxz]" digest="[0-9a-f]{64}" check="[0-9a-f]{${A4}}"/>`,"g")}function m3($,J,Y){let X=0,z=$,V=$.replace(k3(),"");if(V!==$&&b3.test(V))X+=[...$.matchAll(k3())].length,z=V;return z=z.replace(K5(),(j)=>{let N=g3(j);if(!N)return j;return J?.(N),X++,""}),z=z.replace(_5(),(j)=>{let N=y3(j);if(!N)return j;return Y?.(N),X++,""}),{text:z,removed:X}}function L5($){for(let J of $){if(!Array.isArray(J.parts))continue;J.parts=J.parts.flatMap((Y)=>{if(Y.type!=="text"||typeof Y.text!=="string"||!Y.text.includes("<cortexkit-internal-effort"))return[Y];let X=m3(Y.text);if(X.removed===0)return[Y];if(pJ(X.text))return[];return Y.text=X.text,[Y]})}}function L9($,J,Y,X,z){let V=z?`:${z}`:"",j=`plan:${$}:${q4[J]}:${Y.toString(36)}${V}`;return s$([j,...X].join(`
2
+ `))}function O5($){return["v2",$.scope,q4[$.baseline],$.markerCount.toString(36),$.digest].join(".")}function N5($){if(!$)return null;let J=$.match(/^v2\.([0-9a-f]{32})\.([lmhxz])\.([0-9a-z]+)\.([0-9a-f]{64})$/);if(!J)return null;let[,Y,X,z,V]=J,j=lJ[X??""],N=Number.parseInt(z??"",36);if(!Y||!j||!V||!Number.isSafeInteger(N)||N<0||N>h3)return null;return{scope:Y,baseline:j,markerCount:N,digest:V}}function p3($){let J=$.findLast((i)=>i.info?.role==="user"),Y=mJ(J);if(!J||!Y)return null;if(L5($),!Array.isArray(J.parts)||!f3(J))return null;let X=J.info?.sessionID,z=J.info?.id;if(typeof X!=="string"||typeof z!=="string")throw new C0("Cannot correlate per-message effort markers without session and message IDs");let V=z5(X),j=$.findLast((i)=>i.info?.role==="user"&&i.parts?.some((H0)=>H0.type==="compaction")),N=typeof j?.info?.id==="string"?j.info.id:void 0,F,E;if(j&&mJ(j)===Y)F=I3(j),E=F;let A=[];for(let i of $){let H0=i.info;if(H0?.role!=="user")continue;if(N&&typeof H0.id==="string"&&H0.id<=N)continue;if(mJ(i)!==Y||!f3(i))continue;let g=I3(i);if(!F){F=g,E=g;continue}if(g===E)continue;if(A.length>=h3)throw new C0("Too many per-message effort changes in the active context");if(!Array.isArray(i.parts)||typeof H0.id!=="string")throw new C0("Cannot mark a per-message effort change without message identity");let z0=V5(V,H0.id,g);i.parts.push({type:"text",text:z0}),A.push(z0),E=g}if(!F)return null;let x=L9(V,F,A.length,A,A.length>0?z:void 0),l=A.length>0?j5(V,z,E??F,x):void 0;if(l)J.parts.push({type:"text",text:l});return{scope:V,baseline:F,markerCount:A.length,digest:x,transitionTokens:A,anchorToken:l,sessionId:X,messageId:z}}function D5($){let J=Array.isArray($.messages)?$.messages:[],Y=[];for(let X of J){let z=[],V=[];if(!J$(X)||X.role!=="user"){Y.push({value:X,transitions:z,anchors:V});continue}let j=(N)=>m3(N,(F)=>z.push(F),(F)=>V.push(F));if(typeof X.content==="string"){let N=j(X.content);X.content=N.removed>0&&pJ(N.text)?"":N.text}else if(Array.isArray(X.content))X.content=X.content.flatMap((N)=>{if(!J$(N)||N.type!=="text"||typeof N.text!=="string")return[N];let F=j(N.text);if(F.removed>0&&pJ(F.text))return[];return[{...N,text:F.text}]});Y.push({value:X,transitions:z,anchors:V})}return $.messages=Y.map((X)=>X.value),{messages:Y}}function H5($,J){let Y=$[J]?.value,X=$[J-1]?.value;if(!J$(Y)||Y.role!=="user"||!Array.isArray(Y.content)||Y.content.length===0||!J$(X)||X.role!=="assistant"||!Array.isArray(X.content))return!1;let z=new Set(X.content.flatMap((V)=>J$(V)&&V.type==="tool_use"&&typeof V.id==="string"?[V.id]:[]));return Y.content.every((V)=>J$(V)&&V.type==="tool_result"&&typeof V.tool_use_id==="string"&&z.has(V.tool_use_id))}function U5($,J){if(J<0)return!1;let Y=$.flatMap((X,z)=>z>J&&J$(X.value)&&X.value.role==="user"?[z]:[]);return Y.length>0&&Y.every((X)=>H5($,X))}function v3($){if(!J$($))return null;if(typeof $.id==="string")return $.id;return typeof $.message_id==="string"?$.message_id:null}function c3($,J){if(!J)return null;if(J.scope!==$.scope||J.baseline!==$.baseline||J.markerCount!==$.markerCount||J.digest!==$.digest||J.transitionTokens.length!==$.markerCount)throw new C0("Per-message effort marker request plan mismatch");let Y=J.transitionTokens.map((V)=>g3(V)),X=J.anchorToken?y3(J.anchorToken):null,z=Y.at(-1)?.effort??$.baseline;if(Y.some((V)=>V===null)||Y.some((V)=>V?.scope!==$.scope)||$.markerCount>0&&(!X||X.scope!==$.scope||X.boundary!==J.messageId||X.effort!==z||X.digest!==$.digest)||$.markerCount===0&&X!==null||$.digest!==L9($.scope,$.baseline,$.markerCount,J.transitionTokens,J.markerCount>0?J.messageId:void 0))throw new C0("Per-message effort marker request plan mismatch");return{transitions:Y,anchor:X}}function cJ($,J,Y,X){let z=Y.flatMap((x)=>x.transitions),V=z.length,j=$.length-V;if(j<0)throw new C0(`Per-message effort marker correlation failed: expected ${$.length}, found ${V}`);let N=$.slice(j);if(z.some((x,l)=>x.token!==N[l]?.token))throw new C0("Per-message effort marker non-prefix loss");let F=$.slice(0,j);if(X&&F.some((x)=>x.boundary===X.boundary))throw new C0("Per-message effort marker non-prefix loss");let E=[],A=0;return Y.forEach((x,l)=>{if(x.transitions.length===0)return;A+=x.transitions.length,E.push(`${l}:${N[A-1]?.effort}`)}),{effectiveBaseline:F.at(-1)?.effort??J,systemMarkers:E}}function Q5($,J){let[Y,X]=$.transitions.length>=J.transitions.length?[$,J]:[J,$],z=Y.transitions.length-X.transitions.length;if(X.transitions.some((j,N)=>j.token!==Y.transitions[z+N]?.token))return!1;let V=z>0?Y.transitions[z-1]?.effort:Y.baseline;return X.baseline===V}function B5($){let{anchor:J,headerPlan:Y,headerAnchor:X}=$;if($.anchorCount!==1||J.scope!==X.scope||J.boundary!==X.boundary)return null;let z=$.recordedVersions.find((V)=>V.sessionId===Y.sessionId&&V.messageId===Y.messageId&&V.digest!==Y.digest&&V.anchorToken===J.token);if(!z)return null;try{let V=c3({scope:z.scope,baseline:z.baseline,markerCount:z.markerCount,digest:z.digest},z);if(!V?.anchor||V.anchor.token!==J.token||V.anchor.effort!==X.effort||!Q5({baseline:Y.baseline,transitions:$.headerTransitions},{baseline:z.baseline,transitions:V.transitions}))return null;let j=cJ($.headerTransitions,Y.baseline,$.messages,J),N=cJ(V.transitions,z.baseline,$.messages,J);if(j.effectiveBaseline!==N.effectiveBaseline||j.systemMarkers.join(`
3
+ `)!==N.systemMarkers.join(`
4
+ `))return null}catch(V){if(V instanceof C0)return null;throw V}return z}function l3($,J,Y,X,z=[]){if(!Array.isArray($.messages))return{found:0,inserted:0};let V=N5(Y);if(Y&&!V)throw new C0("Missing or invalid internal per-message effort request plan");let j=V?c3(V,X):null,N=j?.transitions??null;if(!$.messages.some((o)=>{if(!J$(o)||o.role!=="user")return!1;if(typeof o.content==="string"&&o.content.includes("<cortexkit-internal-effort"))return!0;return Array.isArray(o.content)&&o.content.some((M0)=>J$(M0)&&M0.type==="text"&&typeof M0.text==="string"&&M0.text.includes("<cortexkit-internal-effort"))})){if(!V)return{found:0,inserted:0};if(V.markerCount!==0){let o=$.messages.findLastIndex((v0)=>J$(v0)&&v0.role==="user"),M0=$.messages[o],W$=J$(M0)&&Array.isArray(M0.content)?M0.content:[];throw new C0(`Per-message effort marker correlation failed: expected ${V.markerCount}, found 0`,"missing_all_markers",{markerCount:V.markerCount,resolvedPlan:j!==null,plannedBoundaryId:j?.anchor?.boundary??null,expectedAnchorHash:j?.anchor?s$(j.anchor.token):null,retainedMessageCount:$.messages.length,retainedUserMessageCount:$.messages.filter((v0)=>J$(v0)&&v0.role==="user").length,lastUserMessageIndex:o,lastUserTextBlockCount:W$.filter((v0)=>J$(v0)&&v0.type==="text").length,lastUserToolResultBlockCount:W$.filter((v0)=>J$(v0)&&v0.type==="tool_result").length})}if(!N&&V.digest!==L9(V.scope,V.baseline,0,[]))throw new C0("Per-message effort marker request plan mismatch");if(J&&x3($.model)){let o=J$($.output_config)?{...$.output_config}:{};o.effort=N?.at(-1)?.effort??V.baseline,$.output_config=o}return{found:0,inserted:0}}let E=D5($),A=E.messages.flatMap((o)=>o.transitions),x=E.messages.flatMap((o)=>o.anchors),l=A.length;if(!V){if(l===0)return{found:0,inserted:0};throw new C0("Missing or invalid internal per-message effort request plan")}for(let o of E.messages){for(let M0 of o.transitions)if(M0.scope!==V.scope)throw new C0("Per-message effort marker scope mismatch");if(o.anchors.length>1)throw new C0("Multiple internal per-message effort anchors on one user boundary")}let i=E.messages.findIndex((o)=>o.anchors.length===1),H0=E.messages.findLastIndex((o)=>J$(o.value)&&o.value.role==="user"),g=x[0],z0=E.messages[H0]?.value,P=U5(E.messages,i);if(V.markerCount>0&&(x.length!==1||i!==H0&&!P||!g||g.scope!==V.scope))throw new C0("Missing or invalid internal per-message effort anchor placement","anchor_placement",{anchorBoundaryId:g?.boundary??null,plannedBoundaryId:j?.anchor?.boundary??null,lastUserMessageId:v3(z0),anchorMessageIndex:i,lastUserMessageIndex:H0,validToolContinuationSuffix:P,anchorsFound:x.length,markerCount:V.markerCount,scope:V.scope,foundScope:g?.scope??null,expectedAnchorHash:j?.anchor?s$(j.anchor.token):null,foundAnchorHash:g?s$(g.token):null,anchorMatchesExpected:j?.anchor!=null&&g?.token===j.anchor.token});if(V.markerCount===0&&x.length!==0)throw new C0("Unexpected internal per-message effort anchor");if(j?.anchor&&g?.token!==j.anchor.token){let o=g&&X&&N?B5({anchor:g,anchorCount:x.length,headerPlan:X,headerTransitions:N,headerAnchor:j.anchor,recordedVersions:z,messages:E.messages}):null;if(!o)throw new C0("Mismatched internal per-message effort anchor token","anchor_token",{anchorBoundaryId:g?.boundary??null,plannedBoundaryId:j.anchor.boundary,lastUserMessageId:v3(z0),anchorMessageIndex:i,lastUserMessageIndex:H0,anchorsFound:x.length,markerCount:V.markerCount,scope:V.scope,foundScope:g?.scope??null,expectedAnchorHash:s$(j.anchor.token),foundAnchorHash:g?s$(g.token):null,anchorMatchesExpected:!1});tY.warn("effort-history","accepted an earlier effort anchor whose plan gives the same efforts",{check:"anchor_token_equivalent_plan",plannedBoundaryId:j.anchor.boundary,markerCount:V.markerCount,foundPlanMarkerCount:o.markerCount,markersFound:l,expectedAnchorHash:s$(j.anchor.token),foundAnchorHash:g?s$(g.token):null})}let J0=V.baseline;if(N)J0=cJ(N,V.baseline,E.messages,g).effectiveBaseline;else{if(l!==V.markerCount)throw new C0(`Per-message effort marker correlation failed: expected ${V.markerCount}, found ${l}`);let o=L9(V.scope,V.baseline,V.markerCount,A.map((W$)=>W$.token),g?.boundary);if(V.digest!==o)throw new C0("Per-message effort marker request plan mismatch");let M0=A.at(-1)?.effort??V.baseline;if(g&&(g.effort!==M0||g.digest!==V.digest))throw new C0("Missing or invalid internal per-message effort anchor")}let b0=J&&J5($),O0=0,B0=[];for(let o of E.messages){let M0=o.transitions.at(-1);if(M0&&b0)B0.push({role:"system",content:[],output_config:{effort:M0.effort}}),O0++;B0.push(o.value)}if($.messages=B0,b0&&(O0>0||x3($.model))){let o=J$($.output_config)?{...$.output_config}:{};o.effort=J0,$.output_config=o}return{found:l,inserted:O0}}class iJ{plans=new Map;history=new Map;historyByMessage=new Map;record($){let J=this.key($.sessionId,$.messageId),Y={...$,transitionTokens:[...$.transitionTokens]};this.remember(J,Y),this.plans.delete(J),this.plans.set(J,Y);while(this.plans.size>Z5){let X=this.plans.keys().next().value;if(typeof X!=="string")break;this.plans.delete(X)}}clear($,J){let Y=this.key($,J);this.plans.delete(Y);for(let X of this.historyByMessage.get(Y)??[])this.history.delete(X);this.historyByMessage.delete(Y)}markHeaders($){let J=this.key($.sessionId,$.messageId),Y=this.plans.get(J);if(!Y)return!1;return $.headers[l1]=this.remember(J,Y),this.plans.delete(J),this.plans.set(J,Y),!0}resolveHeader($){return $?this.history.get($):void 0}versionsFor($,J){return[...this.historyByMessage.get(this.key($,J))??[]].flatMap((X)=>{let z=this.history.get(X);return z?[z]:[]})}remember($,J){let Y=O5(J),X=this.history.get(Y);if(X&&this.key(X.sessionId,X.messageId)!==$){if(X.markerCount!==0||J.markerCount!==0||X.sessionId!==J.sessionId)throw new C0("Per-message effort plan header collision");let V=this.key(X.sessionId,X.messageId),j=this.historyByMessage.get(V);if(j?.delete(Y),j?.size===0)this.historyByMessage.delete(V)}this.history.delete(Y),this.history.set(Y,J);let z=this.historyByMessage.get($)??new Set;z.add(Y),this.historyByMessage.set($,z);while(this.history.size>Y5){let V=this.history.entries().next().value;if(!V)break;let[j,N]=V;this.history.delete(j);let F=this.key(N.sessionId,N.messageId),E=this.historyByMessage.get(F);if(E?.delete(j),E?.size===0)this.historyByMessage.delete(F)}return Y}key($,J){return`${$}\x00${J}`}}import{resolveClaudeModelCapabilities as F5}from"@cortexkit/anthropic-auth-core";var u3="claude-opus-4-8",nJ=10,rJ="source-warm:";function u1($,J){return`${rJ}${$}:${J}`}function M4($){if(!$.startsWith(rJ))return null;let J=$.slice(rJ.length),Y=J.lastIndexOf(":");if(Y<=0)return null;let X=J.slice(0,Y),z=J.slice(Y+1);if(z!=="fable-5"&&z!=="fable-5-1"&&z!=="opus-5"&&z!=="opus-5-5")return null;return{sessionId:X,family:z}}function oJ($,J){return`${$}\x00${J}`}var d3=128,w5=86400000;function Y$($){return F5($)?.refusalRecoveryFamily??null}function D9($){return Y$($)!==null}function T5($,J){let Y=Y$(J);return Y?`${$}\x00${Y}`:null}function C5($){try{let J=JSON.parse($);return typeof J.model==="string"?{body:J,model:J.model}:null}catch{return null}}class sJ{now;recoveries=new Map;selectedModels=new Map;nextCycle=1;constructor($=Date.now){this.now=$}prune(){let $=this.now();for(let[J,Y]of this.recoveries)if($-Y.updatedAt>=w5)this.recoveries.delete(J);while(this.recoveries.size>d3){let J=this.recoveries.keys().next().value;if(typeof J!=="string")break;this.recoveries.delete(J)}}clearSession($){this.selectedModels.delete($);for(let J of this.recoveries.keys())if(J.startsWith(`${$}\x00`))this.recoveries.delete(J)}resetForModelChange($,J){let Y=this.selectedModels.get($),X=Y!==void 0&&Y!==J;if(X)this.clearSession($);this.selectedModels.delete($),this.selectedModels.set($,J);while(this.selectedModels.size>d3){let z=this.selectedModels.keys().next().value;if(z===void 0)break;this.selectedModels.delete(z)}return X}plan($,J){if(!$||typeof J!=="string")return null;this.prune();for(let[V,j]of[...this.recoveries]){if(!V.startsWith(`${$}\x00`))continue;j.updatedAt=this.now(),this.recoveries.delete(V),this.recoveries.set(V,j)}let Y=C5(J);if(!Y||!D9(Y.model))return null;let X=T5($,Y.model);if(!X)return null;let z=this.recoveries.get(X);if(z)z.nextRequestSequence++;if(!z||z.remaining<=0)return{sessionId:$,recoveryKey:X,requestedModel:Y.model,effectiveModel:Y.model,bodyText:J,downgraded:!1,cycle:z?.cycle,standbyCacheAnchor:z?.standbyCacheAnchor};return z.updatedAt=this.now(),this.recoveries.delete(X),this.recoveries.set(X,z),Y.body.model=u3,{sessionId:$,recoveryKey:X,requestedModel:z.model,effectiveModel:u3,bodyText:JSON.stringify(Y.body),downgraded:!0,cycle:z.cycle,cacheAccountId:z.cacheAccountId,standbyCacheAnchor:z.standbyCacheAnchor,requestSequence:z.nextRequestSequence}}recoveryAccount($){if($.cycle===void 0)return $.cacheAccountId;let J=this.recoveries.get($.recoveryKey);return J?.cycle===$.cycle?J.cacheAccountId:$.cacheAccountId}bindRecoveryAccount($,J){if(!$.downgraded||$.cycle===void 0)return!1;let Y=this.recoveries.get($.recoveryKey);if(!Y||Y.cycle!==$.cycle)return!1;if(Y.cacheAccountId===J)return!1;return Y.cacheAccountId=J,Y.standbyCacheAnchor=void 0,Y.standbyAnchorSequence=0,Y.sourceWarm=void 0,Y.updatedAt=this.now(),$.cacheAccountId=J,$.standbyCacheAnchor=void 0,!0}activate($,J,Y){if($.downgraded||!D9($.requestedModel))return this.remaining($);let X=this.recoveries.get($.recoveryKey),z=X&&X.sourceSuccesses<nJ?X.reRefusals+1:0,V={model:$.requestedModel,remaining:nJ*2**Math.min(z,2),reRefusals:z,sourceSuccesses:0,cycle:this.nextCycle++,cacheAccountId:J,standbyCacheAnchor:$.standbyCacheAnchor,sourceWarm:Y?{...Y,warmsSinceUserTurn:0}:void 0,nextRequestSequence:0,standbyAnchorSequence:0,updatedAt:this.now()};return this.recoveries.delete($.recoveryKey),this.recoveries.set($.recoveryKey,V),this.prune(),V.remaining}sourceWarmFor($){return this.recoveries.get($)?.sourceWarm}sourceWarmForTarget($){let J=M4($);if(!J)return;return this.sourceWarmFor(oJ(J.sessionId,J.family))}hasSourceWarmForSession($){for(let J of this.recoveries.keys())if(J.startsWith(`${$}\x00`)&&this.recoveries.get(J)?.sourceWarm)return!0;return!1}sourceWarmsForSession($){let J=[];for(let[Y,X]of this.recoveries)if(Y.startsWith(`${$}\x00`)&&X.sourceWarm)J.push({recoveryKey:Y,warm:X.sourceWarm});return J}dropSourceWarm($){let J=this.recoveries.get($);if(!J?.sourceWarm)return!1;return J.sourceWarm=void 0,J.updatedAt=this.now(),!0}dropSourceWarmForTarget($){let J=M4($);if(!J)return!1;return this.dropSourceWarm(oJ(J.sessionId,J.family))}noteSourceWarmSent($){let J=this.recoveries.get($)?.sourceWarm;if(!J)return;return J.warmsSinceUserTurn++,J.warmsSinceUserTurn}noteSourceWarmSentForTarget($){let J=M4($);if(!J)return;return this.noteSourceWarmSent(oJ(J.sessionId,J.family))}noteSourceWarmUserTurn($,J){let Y=!1;for(let[X,z]of this.recoveries){let V=X.startsWith(`${$}\x00`)?z.sourceWarm:void 0;if(!V)continue;if(V.lastUserTurnKey===void 0){V.lastUserTurnKey=J;continue}if(V.lastUserTurnKey!==J)V.lastUserTurnKey=J,V.warmsSinceUserTurn=0,Y=!0}return Y}completeSource($,J=!0){if($.downgraded||$.cycle==null||$.completed)return!1;$.completed=!0;let Y=this.recoveries.get($.recoveryKey);if(!Y||Y.cycle!==$.cycle||Y.remaining>0)return!1;if(!J)return Y.sourceSuccesses=0,!1;return Y.sourceSuccesses=Math.min(Y.sourceSuccesses+1,nJ),Y.updatedAt=this.now(),Y.sourceWarm=void 0,!0}complete($,J){if(!$.downgraded||$.cycle==null||$.completed)return{counted:!1,remaining:this.remaining($)};$.completed=!0;let Y=this.recoveries.get($.recoveryKey);if(!Y||Y.cycle!==$.cycle||Y.remaining<=0)return{counted:!1,remaining:Y?.remaining??0};if(Y.remaining--,J&&(!Y.cacheAccountId||J.oauthAccountId===Y.cacheAccountId)&&$.requestSequence!=null&&$.requestSequence>=Y.standbyAnchorSequence)Y.standbyCacheAnchor=J,Y.standbyAnchorSequence=$.requestSequence;return Y.updatedAt=this.now(),this.recoveries.delete($.recoveryKey),this.recoveries.set($.recoveryKey,Y),{counted:!0,remaining:Y.remaining}}remaining($){return this.prune(),this.recoveries.get($.recoveryKey)?.remaining??0}}function G1($){return typeof $==="object"&&$!==null}function S5($){if(Array.isArray($))return $;if(G1($)&&Array.isArray($.data))return $.data;return[]}function o3($){if(!G1($)||!G1($.info))return;return $.info}function i3($){let J=o3($);return typeof J?.role==="string"?J.role:void 0}function E5($){let J=o3($);return typeof J?.id==="string"?J.id:void 0}function aJ($){if(!G1($)||!G1($.info))return null;let J=$.info,Y=G1(J.model)?J.model:void 0,X=typeof J.agent==="string"?J.agent:void 0,z=typeof Y?.providerID==="string"?Y.providerID:typeof J.providerID==="string"?J.providerID:void 0,V=typeof Y?.modelID==="string"?Y.modelID:typeof Y?.id==="string"?Y.id:typeof J.modelID==="string"?J.modelID:void 0,j=typeof Y?.variant==="string"?Y.variant:typeof J.variant==="string"?J.variant:void 0;if(!X&&(!z||!V)&&!j)return null;let N={};if(X)N.agent=X;if(z&&V)N.model={providerID:z,modelID:V};if(j)N.variant=j;return N}function tJ($,J){return{agent:$.agent??J.agent,model:$.model??J.model,variant:$.variant??J.variant,latestAssistantMessageId:$.latestAssistantMessageId??J.latestAssistantMessageId,latestUserMessageId:$.latestUserMessageId??J.latestUserMessageId}}function n3($){return Boolean($.agent&&$.model&&$.variant)}async function H9($,J){if(!$||!J)return null;let Y=$,X=[];if(typeof Y.session?.messages==="function")try{X=S5(await Promise.resolve(Y.session.messages({path:{id:J},query:{limit:100}})))}catch{X=[]}let z,V;for(let N of X){let F=E5(N);if(!F)continue;let E=i3(N);if(E==="assistant"&&(!z||F>z))z=F;if(E==="user"&&(!V||F>V))V=F}let j={latestAssistantMessageId:z,latestUserMessageId:V};for(let N=X.length-1;N>=0;N--){if(i3(X[N])!=="assistant")continue;let F=aJ(X[N]);if(!F)continue;if(j=tJ(j,F),n3(j))return j}for(let N=X.length-1;N>=0;N--){let F=aJ(X[N]);if(!F)continue;if(j=tJ(j,F),n3(j))return j}if(typeof Y.session?.get==="function")try{let N=await Promise.resolve(Y.session.get({path:{id:J}})),F=G1(N)&&G1(N.data)?N.data:G1(N)?N:void 0,E=F?aJ({info:F}):null;if(E)j=tJ(j,E)}catch{}if(!j.agent&&!j.model&&!j.variant&&!j.latestAssistantMessageId&&!j.latestUserMessageId)return null;return j}var r3="[lane start] — automated cache warm; no response needed.",U9="x-cortexkit-lane-start",A5=1000;function P5($){if(!$||typeof $!=="object")return!1;let J=$;return J.type==="text"&&J.text===r3&&J.synthetic===!0}async function s3($,J){let Y=$?.session;if(typeof Y?.promptAsync!=="function")throw Error("OpenCode plugin client does not support session.promptAsync");let X=await H9($,J),z={noReply:!1,parts:[{type:"text",text:r3,synthetic:!0}]};if(X?.agent)z.agent=X.agent;if(X?.model)z.model=X.model;if(X?.variant)z.variant=X.variant;await Promise.resolve(Y.promptAsync({path:{id:J},body:z}))}class eJ{#$=new Map;observeSyntheticMessage($){if(!$.parts.some(P5))return!1;let J=`${$.sessionId}\x00${$.messageId}`;if(!this.#$.has(J)&&this.#$.size>=A5){let Y=this.#$.keys().next().value;if(Y!==void 0)this.#$.delete(Y)}return this.#$.set(J,$.sessionId),!0}markHeaders($){let J=`${$.sessionId}\x00${$.messageId}`;if(!this.#$.has(J))return!1;return this.#$.delete(J),$.headers[U9]="1",!0}clearSession($){for(let[J,Y]of this.#$)if(Y===$)this.#$.delete(J)}}import{createNativeUi as q5,disconnectNativeVaultForHost as M5,readNativeEnrollmentMode as R5}from"@cortexkit/anthropic-auth-core";function a3($){if(!$?.trim())throw TypeError("sessionId is required");return $}function t3($){if($.host!=="opencode")throw TypeError("OpenCode host is required");let J=q5({...$,readMode:$.readMode??(()=>R5("opencode",process.env)),disconnectVault:$.disconnectVault??(()=>M5({host:"opencode",env:process.env}))});return{menu:J,open(Y){return J.open({sessionId:a3(Y),notify(){}})},apply(Y){return J.apply(Y,{sessionId:a3(Y.sessionId),notify(){}})}}}import{createAnthropicOAuthFetch as x5,logger as e3,requireAnthropicOAuthOrigin as I5}from"@cortexkit/anthropic-auth-core";var $Z="ANTHROPIC_AUTH_TEST_OAUTH_LOOPBACK_ORIGIN",f5=new Set(["127.0.0.1","[::1]","localhost"]),$7;function k5(){let $=process.env[$Z];if(!$)return;let J=v5($);if($7!==$)if($7=$,J)e3.warn("oauth-destination","test-only loopback origin is allowed for Claude OAuth requests",{env:$Z});else e3.warn("oauth-destination","ignored an invalid test-only loopback origin; Claude OAuth requests stay limited to https://api.anthropic.com",{env:$Z});return J}function v5($){let J;try{J=new URL($)}catch{return}if(J.protocol!=="http:"&&J.protocol!=="https:")return;if(J.username||J.password||J.search||J.hash)return;if(!f5.has(J.hostname))return;if(!J.port)return;if($!==J.origin)return;return J.origin}function J7(){let $=k5();return $?{extraOrigin:$}:{}}function Q9($){return I5($,J7())}function JZ($){try{return Q9($),!0}catch{return!1}}var R4=x5(J7);var Z7;import{primeStorageFingerprint as h5}from"@cortexkit/anthropic-auth-core";var B9=new Map,F9=new Map;function Y7($,J){let Y=F9.get($);if(Y?.fingerprint!==J.fingerprint||Y.marker!==J.marker)return;let X=B9.get(J.fingerprint);if(X?.slots.delete($),X?.slots.size===0)X.manager.stop(),B9.delete(J.fingerprint);F9.delete($)}function X7($,J,Y){let X=h5($),z=B9.get(X),V=z?.manager??J();if(z)Y.rebind(V);let j=F9.get(Y.slot);if(j&&j.fingerprint!==X)Y7(Y.slot,j);let N=z??{manager:V,slots:new Set};if(!z)B9.set(X,N);let F={fingerprint:X,marker:Symbol(Y.slot)};return N.slots.add(Y.slot),F9.set(Y.slot,F),{manager:V,release:()=>Y7(Y.slot,F)}}import{classifySafeErrorForLog as b5,logger as g5}from"@cortexkit/anthropic-auth-core";function G7($,J,Y){g5.warn("quota","fallback quota preflight could not obtain a reading",{accountId:$,requiredByPolicy:J,...b5(Y)})}var ZZ="x-cortexkit-request-class",y5=new Set(["title","summary","prime"]);function W7($){return typeof $==="string"&&y5.has($)}function z7($){let J=$.get("x-cortexkit-request-class");return $.delete("x-cortexkit-request-class"),J==="auxiliary"?"auxiliary":"main"}import{getKillswitchThresholdsForAccount as m5,getScopedQuotaWindowForModel as p5,killswitchPassesPolicy as c5}from"@cortexkit/anthropic-auth-core";function V7($){let J=Math.floor($.retryAfterSeconds/60),Y=$.retryAfterSeconds%60,X=`Retry in ${J}m ${Y}s.`;return $.modelName?`${$.modelName} weekly limit reached, no routable accounts. ${X}`:`Killswitch: no routable accounts. ${X}`}function j7($){if(!$.requestModelId)return{isScopedDriven:!1};if(!c5($.mainQuota,$.storage))return{isScopedDriven:!1};let J=p5($.mainQuota,$.requestModelId);if(!J)return{isScopedDriven:!1};if(!Number.isFinite(J.remainingPercent))return{isScopedDriven:!1};let Y=m5($.storage);if(J.remainingPercent<=Y.scoped)return{isScopedDriven:!0,modelName:J.modelName,modelId:$.requestModelId};return{isScopedDriven:!1}}import{logger as l5,quotaExhaustionFromHeaders as u5,stickyRouteFamilyForModel as d5,stickyRouteKnownFableExhausted as i5}from"@cortexkit/anthropic-auth-core";var n5=920000;function K7($){let J=globalThis[Symbol.for("cortexkit.routing")];if(typeof J!=="function")return;return J($)??void 0}function _7($,J){return J.accountIdentity===$.account_id&&(!J.credentialId||J.credentialId===$.credential_id)}function L7($,J,Y,X){if(d5(X)!=="opus")return!0;let z=J.filter((V)=>i5(V,Y));return!z.length||z.some((V)=>V.accountId===$)}function O7(){let $=new Set,J=(Y,X)=>{if($.has(Y))return;if($.size>=512){let z=$.values().next();if(!z.done)$.delete(z.value)}$.add(Y),l5.debug("routing-relay","Using local account choice",{sessionId:Y,reason:X})};return{override:J,async accountFor(Y,X){let z;try{let V=K7(Y);if(!V)return null;let j=await Promise.race([Promise.resolve().then(()=>V.accountFor({provider:"anthropic",modelId:X})),new Promise((F)=>{z=setTimeout(()=>F(null),2000)})]);if(!j||typeof j!=="object"||!("account_id"in j)||typeof j.account_id!=="string"||!("credential_id"in j)||typeof j.credential_id!=="string")return J(Y,"no valid answer within routing deadline"),null;let N="hold"in j?j.hold:void 0;return{account_id:j.account_id,credential_id:j.credential_id,...N&&typeof N==="object"&&"retry_after_ms"in N&&typeof N.retry_after_ms==="number"&&Number.isFinite(N.retry_after_ms)&&N.retry_after_ms>0?{hold:{retry_after_ms:Math.min(N.retry_after_ms,n5)}}:{}}}catch{return J(Y,"routing unavailable"),null}finally{clearTimeout(z)}},report(Y,X,z,V,j,N=V<400){if(!X.accountIdentity)return;let F={account_id:X.accountIdentity,...X.credentialId?{credential_id:X.credentialId}:{}},E=[];if(N&&V<400){let A={};z.forEach((x,l)=>{if(l.toLowerCase().startsWith("anthropic-ratelimit-"))A[l.toLowerCase()]=x}),E.push({...F,outcome:"served",headers:A})}if(V===429){let A=u5(z,j);for(let[x,l]of[["5h",A.five_hour],["7d",A.seven_day],...A.scoped?.map((i)=>[i.id.toLowerCase(),i])??[]])if(l)E.push({...F,outcome:"exhausted",window:x,...l.resetsAt?{resets_at:l.resetsAt}:{}});if(!E.length)E.push({...F,outcome:"exhausted",window:"7d"})}Promise.resolve().then(()=>{let A=K7(Y);for(let x of E)try{Promise.resolve(A?.report(x)).catch(()=>{})}catch{}}).catch(()=>{})}}}var p$=[],o5=1,N7=new Map,w9=new Map,P1=new Set,r5=1000;function D7($){if(typeof $!=="string"||$.length===0)throw TypeError("sessionId is required")}function YZ($,J){D7(J);let Y=o5++;if("menu"in $){if($.command!=="claude"||$.menu.command!=="claude")throw TypeError("Only the claude menu is supported");p$.push({id:Y,type:"open-menu",payload:$,sessionId:J})}else p$.push({id:Y,type:"open-dialog",payload:$,sessionId:J});if(p$.length>100)p$=p$.slice(p$.length-100);return Y}function H7($,J,Y){let X=YZ($,J);return new Promise((z)=>{let V;w9.set(X,{picked(){if(V!==void 0)Y.clearTimeout(V);z(!0)},cancel(){if(V!==void 0)Y.clearTimeout(V);z(!1)}}),V=Y.setTimeout(()=>{if(!w9.delete(X))return;if(p$=p$.filter((j)=>j.id!==X),P1.delete(J),P1.add(J),P1.size>r5){let j=P1.values().next().value;if(j!==void 0)P1.delete(j)}z(!1)},Y.timeoutMs)})}function U7($){return P1.has($)}function Q7($,J){if(D7(J),N7.set(J,Date.now()),P1.delete(J),$>0)p$=p$.filter((X)=>X.id>$||X.sessionId!==J);let Y=p$.filter((X)=>X.id>$&&X.sessionId===J);for(let X of Y){let z=w9.get(X.id);if(!z)continue;w9.delete(X.id),z.picked()}return Y}function T9($){let J=Date.now(),Y=N7.get($)??0;return Y>0&&J-Y<3000}import{randomBytes as s5,timingSafeEqual as a5}from"node:crypto";import{readFile as t5,unlink as e5}from"node:fs/promises";import{createServer as $X}from"node:http";import{join as JX}from"node:path";import{parseApplyRequest as ZX}from"@cortexkit/anthropic-auth-core";function YX($){return new Promise((J,Y)=>{let X=[],z=0;$.on("data",(V)=>{if(z+=V.length,z>1e6){$.destroy(),Y(Error("body too large"));return}X.push(V)}),$.on("end",()=>J(Buffer.concat(X).toString("utf8"))),$.on("error",Y)})}function XX($,J){if(!$?.startsWith("Bearer "))return!1;let Y=Buffer.from($.slice(7)),X=Buffer.from(J);return Y.length===X.length&&a5(Y,X)}async function F7($){let J=s5(32).toString("hex"),Y=$X((V,j)=>{X(V,j)});async function X(V,j){let N=(F,E)=>{j.writeHead(F,{"content-type":"application/json"}),j.end(JSON.stringify(E))};try{let F=V.url??"";if(V.method==="GET"&&F==="/health")return N(200,{ok:!0});if(V.method!=="POST"||!F.startsWith("/rpc/"))return N(404,{error:"not found"});if(!XX(V.headers.authorization,J))return N(401,{error:"unauthorized"});let E=F.slice(5),A=JSON.parse(await YX(V)||"{}");if(E==="pending-notifications"){if(typeof A.sessionId!=="string"||A.sessionId.length===0)return N(400,{error:"sessionId is required"});let x=$.drain(Number(A.lastReceivedId??0),A.sessionId);return N(200,{messages:x})}if(E==="apply"){if(!$.apply)return N(501,{error:"text apply unavailable"});let x=await $.apply(A);return N(200,x)}if(E==="apply-menu"){let x=ZX(A);if(x?.command!=="claude"||!x.sessionId?.trim())return N(400,{error:"invalid menu request"});if(!$.applyMenu)return N(501,{error:"menu unavailable"});return N(200,await $.applyMenu(x))}return N(404,{error:"unknown method"})}catch{if(!j.headersSent&&!j.writableEnded&&!j.destroyed)N(500,{error:"RPC request failed"})}}let z=await new Promise((V,j)=>{Y.on("error",j),Y.listen(0,"127.0.0.1",()=>{let N=Y.address();if(N&&typeof N==="object")V(N.port);else j(Error("no port"))})});Y.unref();try{await B7($.dir,{port:z,token:J,pid:process.pid})}catch(V){throw await new Promise((j)=>Y.close(()=>j())),V}return{port:z,token:J,async stop(){await new Promise((V)=>Y.close(()=>V()));try{let V=JX($.dir,`port-${process.pid}.json`),j=JSON.parse(await t5(V,"utf8"));if(j.port===z&&j.pid===process.pid)await e5(V)}catch{}}}}async function w7($,J){let Y=globalThis,X=Y.__anthropicAuthRpcServers??new Map,z=Y.__anthropicAuthRpcServersPending??new Map;Y.__anthropicAuthRpcServers=X,Y.__anthropicAuthRpcServersPending=z;let V=z.get($)??Promise.resolve(),j,N=V.catch(()=>{}).then(async()=>{let E=X.get($);if(E){if(await E.stop(),X.get($)===E)X.delete($)}j=await J(),X.set($,j)});z.set($,N);try{await N}finally{if(z.get($)===N)z.delete($)}let F=j;if(!F)throw Error("RPC server failed to start");return{server:F,release:async()=>{if(X.get($)!==F)return;if(await F.stop(),X.get($)===F)X.delete($)}}}import{resolveClaudeModelCapabilities as GX}from"@cortexkit/anthropic-auth-core";var S7="server-side-fallback-2026-07-01",E7="⁠",C9="cortexkit-server-fallback-v1:";function c$($){return $!==null&&typeof $==="object"&&!Array.isArray($)?$:void 0}function d1($,J){let Y=$?.[J];return typeof Y==="string"?Y:void 0}function i1($){return typeof $==="string"&&$.length>0&&$.length<=128&&/^claude-[a-z0-9-]+$/i.test($)}function WX($){return`${C9}${$.fromModel}|${$.toModel}`}function zX($){if(typeof $!=="string"||!$.startsWith(C9))return null;let J=$.slice(C9.length),Y=J.indexOf("|");if(Y<=0||Y!==J.lastIndexOf("|"))return null;let X=J.slice(0,Y),z=J.slice(Y+1);if(!i1(X)||!i1(z))return null;return{fromModel:X,toModel:z}}function VX($){if($.type!=="fallback")return null;let J=d1(c$($.from),"model"),Y=d1(c$($.to),"model");if(!i1(J)||!i1(Y))return null;return{fromModel:J,toModel:Y}}function jX($){return{type:"fallback",from:{model:$.fromModel},to:{model:$.toModel}}}function KX($,J){let Y=0,X=0;if(!Array.isArray($.messages))return{restoredMarkers:Y,droppedMarkers:X};for(let z of $.messages){let V=c$(z);if(V?.role!=="assistant"||!Array.isArray(V.content))continue;let j=[];for(let N of V.content){let F=c$(N);if(!(F?.type==="thinking"&&(F.thinking===E7||F.thinking==="")&&typeof F.signature==="string"&&F.signature.startsWith(C9))){j.push(N);continue}let A=zX(F.signature);if(J&&A)j.push(jX(A)),Y++;else X++}V.content=j}return{restoredMarkers:Y,droppedMarkers:X}}function A7($){return $?.trim().toLowerCase()==="legacy"?"legacy":"server"}function P7($,J){let Y=J&&GX($.model)?.serverSideFallback===!0,X=KX($,Y);if(Y)$.fallbacks="default";else if($.fallbacks==="default")delete $.fallbacks;return{enabled:Y,...X}}function _X($){let J,Y=[];for(let z of $.split(/\r?\n/))if(z.startsWith("event:"))J=z.slice(6).trim();else if(z.startsWith("data:")){let V=z.slice(5);Y.push(V.startsWith(" ")?V.slice(1):V)}let X=Y.join(`
5
+ `);if(!X||X==="[DONE]")return{event:J};try{return{event:J,data:c$(JSON.parse(X))}}catch{return{event:J}}}function T7($){let J=$.indexOf(`
6
+
7
+ `),Y=$.indexOf(`\r
8
+ \r
9
+ `);if(J===-1)return Y===-1?null:{index:Y,length:4};if(Y===-1||J<Y)return{index:J,length:2};return{index:Y,length:4}}function C7($,J){return`event: ${$}
10
+ data: ${JSON.stringify(J)}
11
+
12
+ `}function LX($,J){return C7("content_block_start",{type:"content_block_start",index:$,content_block:{type:"thinking",thinking:E7}})+C7("content_block_delta",{type:"content_block_delta",index:$,delta:{type:"signature_delta",signature:WX(J)}})}function OX($,J){let Y=Y$($),X=Y$(J);if(Y&&X)return Y===X;return $===J}function q7($){let J="",Y=0,X=!1,z="",V,j,N,F=!1,E=!1,A=new Set,x=(g)=>{if(!Array.isArray(g?.iterations))return;for(let z0 of g.iterations){let P=c$(z0);if(P?.type!=="fallback_message")continue;let J0=d1(P,"model");if(i1(J0))N=J0}},l=(g)=>{if(F)return;F=!0;let z0=j?.toModel??N??(V&&!OX($.requestedModel,V)?V:void 0);$.onOutcome?.({requestedModel:$.requestedModel,servedModel:V,targetModel:z0,fallback:Boolean(z0),handoff:Boolean(j),stopReason:g})},i=(g,z0)=>{let P=_X(g),J0=P.data,b0=d1(J0,"type")??P.event;if(b0==="message_start"){let O0=c$(J0?.message),B0=d1(O0,"model");if(i1(B0))V=B0;x(c$(O0?.usage))}else if(b0==="content_block_start"){let O0=c$(J0?.content_block),B0=J0?.index;if(O0?.type==="tool_use"&&typeof B0==="number"&&Number.isInteger(B0)&&B0>=0)A.add(B0);let o=O0?VX(O0):null;if(o){if(j=o,typeof B0==="number"&&Number.isInteger(B0)&&B0>=0)return LX(B0,o)}}else if(b0==="content_block_stop"){let O0=J0?.index;if(typeof O0==="number"&&A.delete(O0))E=!0}else if(b0==="message_delta"){x(c$(J0?.usage));let O0=c$(J0?.delta),B0=d1(O0,"stop_reason");if(B0)l(B0);if(B0==="refusal"&&E&&A.size===0&&O0&&$.onRefusalAfterToolUse&&$.onRefusalAfterToolUse()!==!1)return O0.stop_reason="tool_use",`${P.event?`event: ${P.event}
13
+ `:""}${J0?`data: ${JSON.stringify(J0)}
14
+ `:""}${z0}`}return g+z0},H0=()=>{let g="";while(!0){let z0=T7(J);if(!z0)break;let P=J.slice(0,z0.index),J0=J.slice(z0.index,z0.index+z0.length);J=J.slice(z0.index+z0.length),Y=new TextEncoder().encode(J).byteLength,g+=i(P,J0)}return g};return{pendingLength(){return Y},push(g){let z0="";if(X){let J0=z+g,b0=T7(J0);if(!b0)return z=J0.slice(-3),g;let O0=b0.index+b0.length;z0=g.slice(0,Math.max(0,O0-z.length)),g=J0.slice(O0),X=!1,z=""}if(!g)return z0;let P=new TextEncoder().encode(g).byteLength;if(J+=g,Y+=P,z0+=H0(),$.maxPendingBytes!==void 0&&Y>$.maxPendingBytes){let J0=J;return J="",Y=0,X=!0,z=J0.slice(-3),z0+J0}return z0},flush(){if(X)return z="","";let g=H0();if(!J)return g;let z0=i(J,"");return J="",Y=0,g+z0}}}import{createHash as NX}from"node:crypto";import{applyClaudeCodeHeaders as DX,applyClaudeCodeMetadata as HX,applyThinkingBindingControls as UX,applyTurnEndNotes as QX,assertNotCustodyTombstone as BX,buildBillingHeaderValue as FX,CLAUDE_CODE_ENTRYPOINT as wX,CLAUDE_CODE_IDENTITY as I4,CLAUDE_FABLE_MYTHOS_5_SUMMARIZED_THINKING as TX,CLAUDE_HAIKU_5_5_ADAPTIVE_THINKING as CX,CLAUDE_OPUS_5_5_ADAPTIVE_THINKING as SX,CLAUDE_OPUS_5_ADAPTIVE_THINKING as EX,CLAUDE_SONNET_5_5_ADAPTIVE_THINKING as AX,CLAUDE_SONNET_5_ADAPTIVE_THINKING as PX,ClaudeCodeFirstUserTextTracker as qX,countUserPrompts as MX,createSseFramer as RX,FAST_MODE_BETA as xX,isClaudeFableOrMythos5Model as IX,isClaudeHaiku55Model as fX,isClaudeOpus5Model as b7,isClaudeOpus55Model as kX,isClaudeSonnet5Model as vX,isClaudeSonnet55Model as hX,isFastModeSupportedModel as bX,isOpenAIReasoningSignature as gX,mergeAnthropicBetas as yX,OPENCODE_IDENTITY_PREFIX as mX,orderClaudeCodeBody as pX,PARAGRAPH_REMOVAL_ANCHORS as cX,parseSseFrame as lX,REQUIRED_BETAS as $z,remapRequestBodyModel as uX,resolveClaudeModelCapabilities as dX,SseFrameTooLargeError as g7,selectClaudeCodeBetas as iX,signRequestBody as nX,stripEmptyTrailingAssistantMessages as oX,TEXT_REPLACEMENTS as rX,TOOL_PREFIX as y7,TrailingAssistantHistoryError as sX}from"@cortexkit/anthropic-auth-core";import{applyEdits as m7,parseTree as aX}from"jsonc-parser";function M7($,J){let Y=new Map,X=0,z=0,V=0,j=0,N=0,F=(x)=>{let l=performance.now(),i=$(x);return N+=performance.now()-l,V++,i};return{call:(x)=>{if(!J.enabled())return F(x);let l=Y.get(x);if(l!==void 0)return z++,Y.delete(x),Y.set(x,l),l;let i=F(x),H0=x.length+i.length;if(H0>J.maxBytes)return i;Y.set(x,i),X+=H0;while(X>J.maxBytes&&Y.size>1){let g=Y.keys().next().value,z0=Y.get(g)??"";Y.delete(g),X-=g.length+z0.length,j++}return i},stats:()=>({hits:z,misses:V,evictions:j,entries:Y.size,cacheBytes:X,computeMsTotal:N})}}var l$=8388608;function P9($){return`${y7}${$.charAt(0).toUpperCase()}${$.slice(1)}`}function tX($){if($==="StructuredOutput")return $;return`${$.charAt(0).toLowerCase()}${$.slice(1)}`}class k4 extends Error{retryable=!1;isRetryable=!1;constructor(){super("Response tool-name mapping could not be validated safely");this.name="UnsafeToolNameResponseError"}}function f4($){if($?.hazardousWireNames.size)throw new k4}function zZ($,J){return $ instanceof g7&&J?.hazardousWireNames.size?new k4:$}async function VZ($,J){try{$.cancel(J).catch(()=>{})}catch{}try{await Promise.allSettled([$.closed])}finally{try{$.releaseLock()}catch{}}}function eX($){let J=new Set;if(Array.isArray($)){for(let V of $)if(G0(V)&&typeof V.name==="string"&&V.name)J.add(V.name)}let Y=new Map,X=(V,j,N)=>{V.set(j,V.has(j)&&V.get(j)!==N?null:N)},z=new Map;for(let V of J){let j=V.split("_");for(let N=0;N<j.length;N++){let F=j.slice(N).join("_");if(!F)continue;for(let E of new Set([F,tX(F),F.charAt(0).toUpperCase()+F.slice(1)]))X(Y,E,V),X(Y,`${y7}${E}`,V)}X(z,P9(V),V)}for(let V of J)Y.set(V,V);for(let[V,j]of z)Y.set(V,j);return Object.assign(Y,{declaredHostNames:J,hazardousWireNames:new Set([...z.keys()].filter((V)=>J.has(V)))})}function v4($,J){let Y=new Headers;if($ instanceof Request)$.headers.forEach((z,V)=>{Y.set(V,z)});let X=J?.headers;if(X){if(X instanceof Headers)X.forEach((z,V)=>{Y.set(V,z)});else if(Array.isArray(X))for(let z of X){let[V,j]=z;if(typeof j<"u")Y.set(V,String(j))}else for(let[z,V]of Object.entries(X))if(typeof V<"u")Y.set(z,String(V))}return Y}function M9($){return $.set("anthropic-beta",yX($.get("anthropic-beta"),[xX])),$}function o1($,J,Y={}){return BX(J,"anthropic"),DX($,J,{...Y,extraBetas:[...Y.body?.fallbacks==="default"?[S7]:[]]})}function $2($){if($.tools&&Array.isArray($.tools))$.tools=$.tools.map((Y)=>({...Y,name:Y.name?P9(Y.name):Y.name}));let J=$.tool_choice;if(G0(J)&&J.type==="tool"&&typeof J.name==="string")$.tool_choice={...J,name:P9(J.name)};if($.messages&&Array.isArray($.messages))$.messages=$.messages.map((Y)=>{if(Y.content&&Array.isArray(Y.content))Y.content=Y.content.map((X)=>{if(X.type==="tool_use"&&X.name)return{...X,name:P9(X.name)};return X});return Y});return JSON.stringify(pX($))}function J2($,J){return m7($,p7($,J,!1))}function x4($,J){if($?.type!=="object")return;return $.children?.filter((X)=>X.children?.[0]?.value===J)?.at(-1)?.children?.[1]}function p7($,J,Y,X=!0){if(!J?.size)return[];let z=$.charCodeAt(0)===65279?1:0,V=[],j;try{j=aX($.slice(z),V,{disallowComments:!0,allowTrailingComma:!1})}catch{return f4(J),[]}if(V.length||j?.type!=="object")return f4(J),[];let N=x4(j,"type")?.value,F;if(Y){X&&=N==="content_block_start";let A=x4(j,"content_block");F=A?[A]:[]}else{X&&=N===void 0||N==="message";let A=x4(j,"content");F=A?.type==="array"?A.children??[]:[]}let E=[];for(let A of F){if(x4(A,"type")?.value!=="tool_use")continue;let x=x4(A,"name");if(x?.type!=="string")continue;let l=J.get(x.value);if(J.hazardousWireNames.has(x.value)&&(!X||l===null))throw new k4;if(!X)continue;if(l&&l!==x.value)E.push({offset:z+x.offset,length:x.length,content:JSON.stringify(l)})}return E}function Z2($,J){let Y=$.charCodeAt(0)===65279?1:0,X=lX($.slice(Y));if(X.data===void 0)return $;let z=p7(X.data,J,!0,X.event===void 0||X.event==="content_block_start");if(!z.length)return $;let V=[],j=0;for(let F of $.slice(Y).matchAll(/([^\r\n]*)(?:\r\n|\r|\n|$)/g)){let E=/^data(?:: ?(.*))?$/.exec(F[1]??"");if(!E)continue;let A=E[1]?.length??0;V.push({dataOffset:j,frameOffset:Y+(F.index??0)+E[0].length-A,length:A}),j+=A+1}let N=[];for(let F of z){let E=V.find((A)=>F.offset>=A.dataOffset&&F.offset+F.length<=A.dataOffset+A.length);if(!E)return f4(J),$;N.push({...F,offset:E.frameOffset+F.offset-E.dataOffset})}return m7($,N)}function Y2($,J){let Y=new TextEncoder,X=new TextDecoder("utf-8",{ignoreBOM:!0}),z=RX({maxFrameBytes:l$}),V="",j=0,N=!$?.size;return{pendingLength:()=>V.length,push(F,E=!1){if(N||!$)return F;let A=V+F;if(J){if(j+=Y.encode(F).byteLength,j>l$)return N=!0,V="",f4($),A;return V=E?"":A,E?J2(A,$):""}let x;try{x=z.push(Y.encode(F))}catch(i){if(!(i instanceof g7))throw i;return N=!0,V="",f4($),A}let l=x.map((i)=>X.decode(i));if(V=A.slice(l.reduce((i,H0)=>i+H0.length,0)),E){let i=z.finish();if(i)l.push(X.decode(i));V=""}return l.map((i)=>Z2(i,$)).join("")}}}function jZ(){if(!process.env.ANTHROPIC_BASE_URL?.trim())return!1;let $=process.env.ANTHROPIC_INSECURE?.trim();return $==="1"||$==="true"}function c7($){let J=$?.trim();if(!J)return null;try{let Y=new URL(J);if(Y.protocol!=="http:"&&Y.protocol!=="https:"||Y.username||Y.password)return null;return Y}catch{return null}}function X2(){return c7(process.env.ANTHROPIC_BASE_URL)}function h4($,J={}){let Y=null;try{if(typeof $==="string"||$ instanceof URL)Y=new URL($.toString());else if($ instanceof Request)Y=new URL($.url)}catch{Y=null}if(!Y)return{input:$,url:null};let X=Y.href,z=J.baseURL?c7(J.baseURL):X2();if(z){let j=z.pathname.replace(/\/$/,""),N=Y.pathname;if(Y.protocol=z.protocol,Y.host=z.host,!(N===j||j!==""&&N.startsWith(`${j}/`))){let E=/\/v\d[^/]*$/.test(j);if(N==="/messages")Y.pathname=E?`${j}/messages`:`${j}/v1/messages`;else if(N==="/v1/messages"&&E)Y.pathname=`${j}/messages`;else Y.pathname=`${j}${N}`}else if(N===`${j}/messages`){if(!/\/v\d[^/]*$/.test(j))Y.pathname=`${j}/v1/messages`}}if(Y.pathname.endsWith("/v1/messages")&&!Y.searchParams.has("beta"))Y.searchParams.set("beta","true");if(Y.href===X)return{input:$,url:Y};return{input:$ instanceof Request?new Request(Y.toString(),$):Y,url:Y}}function G2($){let X=$.split(/\n\n+/).filter((z)=>{if(z.includes(mX))return!1;for(let V of cX)if(z.includes(V))return!1;return!0}).join(`
15
+
16
+ `);for(let z of rX)X=X.replace(z.match,z.replacement);return X.trim()}var W2=8388608;function z2(){return process.env.OPENCODE_ANTHROPIC_AUTH_MEMO!=="0"}var V2=M7(G2,{maxBytes:W2,enabled:z2});function S9($){return V2.call($)}function G0($){return $!=null&&typeof $==="object"&&!Array.isArray($)}function j2($){let J={type:"text",text:I4};if($==null)return[J];if(typeof $==="string"){let X=S9($);if(X===I4)return[J];return[J,{type:"text",text:X}]}if(G0($)){let X=typeof $.type==="string"?$.type:"text",z=typeof $.text==="string"?$.text:"";return[J,{...$,type:X,text:S9(z)}]}if(!Array.isArray($))return[J];let Y=$.map((X)=>{if(typeof X==="string")return{type:"text",text:S9(X)};if(G0(X)&&X.type==="text"&&typeof X.text==="string")return{...X,type:"text",text:S9(X.text)};return{type:"text",text:String(X)}});if(Y[0]?.text===I4)return Y;return[J,...Y]}var l7={type:"ephemeral",ttl:"1h"},R7=20;function KZ($){if(G0($.cache_control))return $.cache_control;if(G0($.cacheControl))return $.cacheControl;return null}function q9($,J){if(!G0($))return!1;return delete $.cacheControl,$.cache_control=J?{...l7}:{type:"ephemeral"},!0}function GZ($){if(!G0($))return;delete $.cache_control,delete $.cacheControl}function _Z($){if(Array.isArray($))return $;if(typeof $==="string")return[{type:"text",text:$}];return null}function WZ($){if(Array.isArray($))return $.map(WZ);if(!G0($))return $;let J={};for(let Y of Object.keys($).sort()){if(Y==="cache_control"||Y==="cacheControl")continue;J[Y]=WZ($[Y])}return J}function LZ($){if(!G0($))return;let J=_Z($.content);if(!J?.length)return;let Y=WZ({...$,content:J});return NX("sha256").update(JSON.stringify(Y)).digest("hex")}function u7($){if(!G0($))return!1;let J=_Z($.content);return Boolean(J?.some((Y)=>G0(Y)&&KZ(Y)?.type==="ephemeral"))}function d7($){try{let J=JSON.parse($);if(!Array.isArray(J.messages))return;for(let Y=J.messages.length-1;Y>1;Y--){let X=J.messages[Y];if(!G0(X)||X.role!=="user"||!u7(X))continue;let z=LZ(X);if(!z)return;return{fingerprint:z,messageIndex:Y,messageCount:J.messages.length}}return}catch{return}}function OZ($){try{let J=JSON.parse($);if(!Array.isArray(J.messages))return[];let Y=[];for(let X of J.messages){if(!G0(X)||X.role!=="user"||!u7(X))continue;let z=LZ(X);if(z)Y.push(z)}return Y}catch{return[]}}function i7($,J){if(!G0($))return;let Y=KZ($);if(Y?.type!=="ephemeral")return;if(J)Y.ttl="1h";else delete Y.ttl}function x7($,J){NZ($,(Y)=>i7(Y,J))}function NZ($,J){if(Array.isArray($.tools))for(let Y of $.tools)J(Y);if(Array.isArray($.system))for(let Y of $.system)J(Y);else J($.system);if(!Array.isArray($.messages))return;for(let Y of $.messages)if(J(Y),G0(Y)&&Array.isArray(Y.content))for(let X of Y.content)J(X)}function n7($){GZ($),NZ($,GZ)}function K2($){n7($),$.cache_control={...l7}}function _2($){return G0($)&&$.type!=="thinking"&&$.type!=="redacted_thinking"}function o7($){let J=_Z($.content);if(!J?.length)return;let Y=J.filter(_2);if(!Y.length)return;return{content:J,cacheableBlocks:Y}}function L2($){if(!G0($))return!1;let J=o7($);if(!J||J.cacheableBlocks.length<2)return!1;let[Y,X,z]=J.content,j=$.role==="user"&&G0(Y)&&Y.type==="text"&&typeof Y.text==="string"&&G0(X)&&X.type==="image"&&G0(z)&&z.type==="text"&&typeof z.text==="string"&&/<memory-mural>[\s\S]*?<\/memory-mural>/.test(Y.text)?[X,z]:J.cacheableBlocks.slice(0,2);$.content=J.content;for(let N of j)q9(N,!0);return!0}function E9($){if(!G0($))return!1;let J=o7($);if(!J)return!1;let Y=J.cacheableBlocks[J.cacheableBlocks.length-1];return $.content=J.content,q9(Y,!0)}function O2($){if(!G0($))return 0;let J=$.content;if(Array.isArray(J))return J.length;if(J==null)return 0;return 1}function N2($){let J=[],Y=0;return $.forEach((X,z)=>{let V=O2(X);if(G0(X)&&X.role==="user"&&V>0)J.push({index:z,blockPosition:Y+V-1});Y+=V}),J}function D2($,J,Y,X){if(!X)return;let z=[],V=J.find((j)=>j.index===X.messageIndex&&j.index>1&&j.index<Y.index);if(V)z.push(V);for(let j of[...J].reverse()){if(j.index<=1||j.index>=Y.index||j.index===V?.index)continue;z.push(j)}for(let j of z)if(LZ($[j.index])===X.fingerprint)return j;return}function H2($,J){let Y=N2($),X=[...Y].reverse().find((A)=>A.index>1);if(!X)return{latest:void 0,bridge:void 0,standbyAnchorMatched:!1,standbyBridgeApplied:!1};let z=D2($,Y,X,J),V=z?X.blockPosition-z.blockPosition+1:void 0,j=z&&V!=null&&V>R7?z:void 0,N=[...Y].reverse().find((A)=>A.index<X.index),F=N?X.blockPosition-N.blockPosition+1:0,E=N&&N.index>1&&F>R7?N:void 0;return{latest:X,bridge:j??E,standbyAnchorMatched:Boolean(z),standbyDistanceBlocks:V,standbyBridgeApplied:Boolean(j)}}function XZ($){return G0($)&&typeof $.text==="string"?$.text:""}function U2($){if(!Array.isArray($.system))return;let J=$.system,Y=0;if(XZ(J[Y]).startsWith("x-anthropic-billing-header:"))Y++;if(XZ(J[Y])===I4)Y++;let X=Y+1;if(X>=J.length-1)return;let z=J[X];if(!G0(z))return;let V=J.slice(X).map(XZ).join(`
17
+ `);J.splice(X,J.length-X,{...z,type:"text",text:V})}function I7($){if(Array.isArray($.system)){let J=$.system.findIndex((z)=>G0(z)&&z.text===I4),Y=$.system.slice(J>=0?J+1:0).filter(G0),X=Y[Y.length-1];q9(X,!0)}else q9($.system,!0)}function Q2($,J){if(n7($),U2($),!Array.isArray($.messages))return I7($),{standbyAnchorMatched:!1,standbyBridgeApplied:!1};let{latest:Y,bridge:X,standbyAnchorMatched:z,standbyDistanceBlocks:V,standbyBridgeApplied:j}=H2($.messages,J);if(!X)I7($);if(!L2($.messages[0]))E9($.messages[0]),E9($.messages[1]);if(X)E9($.messages[X.index]);if(Y)E9($.messages[Y.index]);return{standbyAnchorMatched:z,standbyDistanceBlocks:V,standbyBridgeApplied:j,...j&&X?{standbyBridgeMessageIndex:X.index}:{}}}function B2($){if(!Array.isArray($.messages))return 0;let J=0;return $.messages=$.messages.filter((Y)=>{if(!G0(Y)||!Array.isArray(Y.content))return!0;if(Y.role!=="assistant")return!0;let X=Y.content.filter((z)=>{if(!G0(z)||z.type!=="thinking")return!0;if(!gX(z.signature))return!0;return J+=1,!1});if(X.length===Y.content.length)return!0;return Y.content=X,X.length>0}),J}function DZ($){let J=$.tool_choice;if(G0(J)&&(J.type==="any"||J.type==="tool"))delete $.tool_choice}function F2($){if(!IX($.model))return null;let J=Object.hasOwn($,"thinking");if($.thinking={...TX},dX($.model)?.rejectsForcedToolChoice)DZ($);return{replacedExisting:J}}function w2($){if(hX($.model)){DZ($);let X=Object.hasOwn($,"thinking"),z=$.thinking;if(G0(z)&&(z.type==="disabled"||z.type==="between_tools")){$.thinking={type:"between_tools"};let V=$.output_config;if(G0(V)&&(V.effort==="xhigh"||V.effort==="max"))V.effort="high";return{replacedExisting:X,display:"between_tools"}}return $.thinking={...AX},{replacedExisting:X,display:"summarized"}}if(!vX($.model))return null;let J=Object.hasOwn($,"thinking"),Y=$.thinking;if(G0(Y)&&Y.type==="disabled")return $.thinking={type:"disabled"},{replacedExisting:J,display:"disabled"};return $.thinking={...PX},{replacedExisting:J,display:"summarized"}}function T2($){if(kX($.model)){DZ($);let X=Object.hasOwn($,"thinking");return $.thinking={...SX},{replacedExisting:X,display:"summarized"}}if(!b7($.model))return null;let J=Object.hasOwn($,"thinking"),Y=$.thinking;if(G0(Y)&&Y.type==="disabled"){$.thinking={type:"disabled"};let X=$.output_config;if(G0(X)&&X.effort==="xhigh")X.effort="high";else if(G0(X)&&X.effort==="max")X.effort="high";return{replacedExisting:J,display:"disabled"}}return $.thinking={...EX},{replacedExisting:J,display:"summarized"}}function C2($){if(!fX($.model))return null;delete $.temperature,delete $.top_p,delete $.top_k;let J=Object.hasOwn($,"thinking");if(G0($.thinking)&&$.thinking.type==="disabled"){$.thinking={type:"disabled"};let Y=$.output_config;if(G0(Y)&&(Y.effort==="xhigh"||Y.effort==="max"))Y.effort="high";return{replacedExisting:J,display:"disabled"}}return $.thinking={...CX},{replacedExisting:J,display:"summarized"}}function S2($,J){if(!J.enabled)return x7($,!1),delete $.cache_control,delete $.cacheControl,{};if(J.mode==="automatic")return K2($),{};if(J.mode==="hybrid")return Q2($,J.hybridStandbyAnchor);x7($,!0),delete $.cacheControl;let Y=[];if(NZ($,(X)=>{if(G0(X)&&KZ(X))Y.push(X)}),G0($.cache_control))i7($,!0),Y.push($);for(let X of Y.slice(0,-4))GZ(X);return{}}function E2($){if(!Array.isArray($.messages))return 0;for(let J=$.messages.length-1;J>=0;J--){let Y=$.messages[J];if(!G0(Y)||Y.role!=="assistant")continue;if(!Array.isArray(Y.content))return 0;if(!Y.content.some((z)=>G0(z)&&z.type==="tool_use"))return 0;let X=0;while(Y.content.length){let z=Y.content[Y.content.length-1];if(!G0(z)||z.type!=="text"||typeof z.text!=="string"||z.text.trim())break;Y.content.pop(),X++}return X}return 0}var A2=1000,P2=new qX(A2);function q2($,J,Y){return P2.resolve($,J,!Y)}function S0(){return performance.now()}function I$($){return Math.round($*10)/10}function f7($){let J=0,Y=0,X=0,z=Array.isArray($.messages)?$.messages:[];J=z.length;for(let V of z){if(!V||typeof V!=="object")continue;let j=V.content;if(!Array.isArray(j))continue;Y+=j.length;for(let N of j)if(N&&typeof N==="object"&&N.type==="tool_use")X++}return{messageCount:J,contentBlockCount:Y,toolDefinitionCount:Array.isArray($.tools)?$.tools.length:0,toolUseCount:X,systemBlockCount:Array.isArray($.system)?$.system.length:0}}async function R9($,J={}){try{let Y=S0(),X=JSON.parse($);J.perf?.("parse",{ms:I$(S0()-Y),inputBytes:$.length,...f7(X)});let z=S0(),V=Array.isArray(X.messages)?X.messages.length:void 0;oX(X.messages);let j=E2(X),N=Array.isArray(X.messages)?X.messages.length:void 0;J.perf?.("strip_trailing_assistant",{ms:I$(S0()-z),removedMessages:typeof V==="number"&&typeof N==="number"?V-N:void 0,removedWhitespaceBlocks:j});let F=S0(),E=B2(X),A=P7(X,J.serverSideFallbackEnabled===!0),x=F2(X),l=w2(X),i=T2(X),H0=C2(X);if(J.perf?.("model_normalize",{ms:I$(S0()-F),model:typeof X.model==="string"?X.model:void 0,fableMythosThinkingDisplay:x?"summarized":void 0,replacedFableMythosThinking:x?.replacedExisting??!1,sonnet5ThinkingDisplay:l?.display,replacedSonnet5Thinking:l?.replacedExisting??!1,opus5ThinkingDisplay:i?.display,replacedOpus5Thinking:i?.replacedExisting??!1,haiku55ThinkingDisplay:H0?.display,replacedHaiku55Thinking:H0?.replacedExisting??!1,removedNonAnthropicThinking:E,serverSideFallbackEnabled:A.enabled,serverFallbackMarkersRestored:A.restoredMarkers,serverFallbackMarkersDropped:A.droppedMarkers,hasOutputConfig:Object.hasOwn(X,"output_config")}),J.laneStart===!0)X.max_tokens=1,delete X.thinking;if(l3(X,J.midConversationEffortEnabled===!0,J.midConversationEffortPlan,J.midConversationEffortResolvedPlan,J.midConversationEffortPlanVersions),UX(X,J.thinkingPrefixMismatchBehavior??"account-default"),J.turnEndNoteEnabled)QX(X,{tools:J.turnEndNote?.tools});let g=S0(),z0=Array.isArray(X.messages)&&X.messages.some((u)=>u.role==="user")?FX(X.messages,void 0,wX,J.sessionId?q2(J.sessionId,X.messages,J.laneStart===!0):void 0,J.billingLineage?.promptId?{...J.billingLineage,promptIndex:J.billingLineage.promptIndex??MX(X.messages)}:J.billingLineage):null;J.perf?.("billing_header",{ms:I$(S0()-g),hasBillingHeader:Boolean(z0)});let P=S0();if(X.system=j2(X.system),J.perf?.("system_identity",{ms:I$(S0()-P),systemBlockCount:Array.isArray(X.system)?X.system.length:0}),z0&&Array.isArray(X.system))X.system.unshift({type:"text",text:z0});let J0=S0(),b0=S2(X,{enabled:J.cache1hEnabled??!1,mode:J.cache1hMode??"explicit",hybridStandbyAnchor:J.hybridStandbyAnchor});if(J.perf?.("cache_strategy",{ms:I$(S0()-J0),enabled:J.cache1hEnabled??!1,mode:J.cache1hMode??"explicit",...b0}),J.fastModeEnabled&&bX(X.model))X.speed="fast";else if(X.speed==="fast")delete X.speed;if(J.cacheDiagnosticsPreviousMessageId!==void 0&&iX(X).split(",").includes(C4))j9(X,J.cacheDiagnosticsPreviousMessageId);let O0=S0();if(J.identity)HX(X,J.identity);J.perf?.("metadata",{ms:I$(S0()-O0),hasAccountUuid:Boolean(J.identity?.accountUuid)});let B0=S0();if(J.modelRemapEnabled===!0)uX(X);let o=eX(X.tools),M0=$2(X);J.perf?.("prefix_tools_stringify",{ms:I$(S0()-B0),outputBytesBeforeSign:M0.length,...f7(X)});let W$=S0(),v0=await nX(M0);return J.perf?.("cch_sign",{ms:I$(S0()-W$),outputBytes:v0.length}),J.onToolNameMap?.(o),v0}catch(Y){if(Y instanceof C0||Y instanceof sX)throw Y;return $}}var r7=new TextEncoder;function M2(){return{pending:"",pendingOverflowCount:0,disabled:!1,events:0,parseErrors:0,eventCounts:{},typeCounts:{},deltaTypeCounts:{},contentBlockTypeCounts:{},textDeltaBytes:0,thinkingDeltaBytes:0,inputJsonDeltaBytes:0,signatureDeltaBytes:0,redactedThinkingBytes:0}}function A9($,J){if(!J)return;$[J]=($[J]??0)+1}function q1($){return r7.encode($).byteLength}function a$($){return $&&typeof $==="object"&&!Array.isArray($)?$:void 0}function Z$($,J){let Y=$?.[J];return typeof Y==="string"?Y:void 0}function R2($,J){let Y=$?.[J];return typeof Y==="number"?Y:void 0}function HZ($){if(!$.trim())return null;let J,Y=[];for(let x of $.split(/\r?\n/)){if(x.startsWith("event:")){J=x.slice(6).trim();continue}if(x.startsWith("data:")){let l=x.slice(5);Y.push(l.startsWith(" ")?l.slice(1):l)}}let X=Y.join(`
18
+ `),z={event:J,rawBytes:q1($),dataBytes:q1(X)};if(!X||X==="[DONE]")return z.type=X==="[DONE]"?"done":void 0,z.event??=z.type,z;let V;try{V=JSON.parse(X)}catch{return z}let j=a$(V),N=a$(j?.delta),F=a$(j?.content_block),E=a$(j?.message),A=a$(j?.usage)??a$(E?.usage);if(z.type=Z$(j,"type"),z.event??=z.type,z.index=R2(j,"index"),z.contentBlockType=Z$(F,"type"),z.deltaType=Z$(N,"type"),z.stopReason=Z$(N,"stop_reason")??Z$(j,"stop_reason"),z.deltaType==="text_delta")z.textDeltaBytes=q1(Z$(N,"text")??"");if(z.deltaType==="thinking_delta")z.thinkingDeltaBytes=q1(Z$(N,"thinking")??"");if(z.deltaType==="input_json_delta")z.inputJsonDeltaBytes=q1(Z$(N,"partial_json")??"");if(z.deltaType==="signature_delta")z.signatureDeltaBytes=q1(Z$(N,"signature")??"");if(z.contentBlockType==="redacted_thinking")z.redactedThinkingBytes=q1(Z$(F,"data")??"");if(A)z.usage=A,z.stopReason??=Z$(E,"stop_reason");if(z.type==="message_start"&&E)z.message=E;return z}function n1($){let J=$.indexOf(`
19
+
20
+ `),Y=$.indexOf(`\r
21
+ \r
22
+ `);if(J===-1)return Y===-1?null:{index:Y,length:4};if(Y===-1||J<Y)return{index:J,length:2};return{index:Y,length:4}}function k7($,J,Y,X){if(!J||$.disabled)return;$.pending+=J;while(!0){let z=n1($.pending);if(!z)break;let V=$.pending.slice(0,z.index);$.pending=$.pending.slice(z.index+z.length);let j=HZ(V);if(!j)continue;if($.events++,A9($.eventCounts,j.event??"unknown"),A9($.typeCounts,j.type),A9($.deltaTypeCounts,j.deltaType),A9($.contentBlockTypeCounts,j.contentBlockType),$.textDeltaBytes+=j.textDeltaBytes??0,$.thinkingDeltaBytes+=j.thinkingDeltaBytes??0,$.inputJsonDeltaBytes+=j.inputJsonDeltaBytes??0,$.signatureDeltaBytes+=j.signatureDeltaBytes??0,$.redactedThinkingBytes+=j.redactedThinkingBytes??0,$.last=j,X?.(j),j.dataBytes>0&&!j.type&&!j.event)$.parseErrors++}if(r7.encode($.pending).byteLength>Y)$.pending="",$.disabled=!0,$.pendingOverflowCount++}function x2(){return{pending:"",completed:!1,disabled:!1,resyncCarry:""}}function I2($,J,Y){if(!J||$.completed)return null;if($.disabled){let z=$.resyncCarry+J,V=n1(z);if(!V)return $.resyncCarry=z.slice(-3),null;if($.disabled=!1,$.resyncCarry="",J=z.slice(V.index+V.length),!J)return null}$.pending+=J;let X=null;while(!0){let z=n1($.pending);if(!z)break;let V=$.pending.slice(0,z.index);$.pending=$.pending.slice(z.index+z.length);let j=HZ(V);if(j?.type!=="message_delta"||!j.stopReason)continue;$.completed=!0,X??=j.stopReason==="refusal"?{type:"content-filter"}:{type:"complete",finishReason:j.stopReason}}if(new TextEncoder().encode($.pending).byteLength>Y){let z=$.pending;$.pending="",$.disabled=!0,$.resyncCarry=z.slice(-3)}return X}function f2(){return{pending:"",disabled:!1}}function v7($){let J=HZ($);if(J?.type!=="message_delta"||J.stopReason!=="max_tokens")return $;return $.replace(/("stop_reason"\s*:\s*)"max_tokens"/,'$1"end_turn"')}function k2($,J,Y,X=!1){if(!J&&!X)return"";if($.disabled)return J;if(new TextEncoder().encode($.pending+J).byteLength>Y){let V=$.pending+J;return $.pending="",$.disabled=!0,V}$.pending+=J;let z="";while(!0){let V=n1($.pending);if(!V)break;let j=$.pending.slice(0,V.index),N=$.pending.slice(V.index,V.index+V.length);$.pending=$.pending.slice(V.index+V.length),z+=v7(j),z+=N}if(X&&$.pending)z+=v7($.pending),$.pending="";return z}function v2(){return{pending:"",disabled:!1,resyncCarry:""}}function h2($,J){let Y=$?.toLowerCase(),X=J.toLowerCase();return Y==="api_error"||Y==="overloaded_error"||Y==="server_error"||Y==="internal_server_error"||X.includes("internal server error")||X.includes("server overloaded")}function b2($,J){let Y=$?`${$}: ${J}`:J,X=Error(`Anthropic stream error: ${Y}`);if(X.code="ECONNRESET",X.syscall="anthropic-sse",$)X.providerErrorType=$;return X}function g2($){let J=b7($)?"Opus 5":"Fable",Y=Error(`${J} response was blocked by the provider content filter; retrying with Opus 4.8`);return Y.code="ECONNRESET",Y.syscall="anthropic-sse",Y.providerErrorType="refusal",Y}function y2($){if(!$.includes("error"))return null;let J,Y=[];for(let E of $.split(/\r?\n/)){if(E.startsWith("event:")){J=E.slice(6).trim();continue}if(E.startsWith("data:")){let A=E.slice(5);Y.push(A.startsWith(" ")?A.slice(1):A)}}let X=Y.join(`
23
+ `);if(!X||X==="[DONE]")return null;let z;try{z=JSON.parse(X)}catch{return null}let V=a$(z);if(J!=="error"&&Z$(V,"type")!=="error")return null;let j=a$(V?.error),N=Z$(j,"type")??Z$(j,"code")??void 0,F=Z$(j,"message")??Z$(V,"message")??N??"Anthropic stream error";if(!h2(N,F))return null;return b2(N,F)}function m2($){if(!$.includes("relay_upstream_error"))return;let J=[];for(let Y of $.split(/\r?\n/))if(Y.startsWith("data:")){let X=Y.slice(5);J.push(X.startsWith(" ")?X.slice(1):X)}if(!J.length)return;try{let Y=a$(JSON.parse(J.join(`
24
+ `))),X=a$(Y?.error);if(Z$(X,"type")!=="relay_upstream_error")return;let z=X?.status;if(typeof z==="number"&&Number.isInteger(z))return{status:z,source:"relay_status_field"};let j=Z$(X,"message")?.match(/HTTP\s+(\d{3})\b/i);return j?{status:Number(j[1]),source:"relay_message_parse"}:void 0}catch{return}}function h7($,J,Y,X){if(!J)return null;if($.disabled){let V=$.resyncCarry+J,j=n1(V);if(!j)return $.resyncCarry=V.slice(-3),null;if($.disabled=!1,$.resyncCarry="",J=V.slice(j.index+j.length),!J)return null}$.pending+=J;let z=null;while(!0){let V=n1($.pending);if(!V)break;let j=$.pending.slice(0,V.index);$.pending=$.pending.slice(V.index+V.length);let N=m2(j);if(N!==void 0)X?.(N);let F=y2(j);z??=F}if(new TextEncoder().encode($.pending).byteLength>Y){let V=$.pending;$.pending="",$.disabled=!0,$.resyncCarry=V.slice(-3)}return z}function p2($){return{sseEvents:$.events,ssePendingChars:$.pending.length,ssePendingOverflowCount:$.pendingOverflowCount,sseParseErrors:$.parseErrors,sseEventCounts:{...$.eventCounts},sseTypeCounts:{...$.typeCounts},sseDeltaTypeCounts:{...$.deltaTypeCounts},sseContentBlockTypeCounts:{...$.contentBlockTypeCounts},sseTextDeltaBytes:$.textDeltaBytes,sseThinkingDeltaBytes:$.thinkingDeltaBytes,sseInputJsonDeltaBytes:$.inputJsonDeltaBytes,sseSignatureDeltaBytes:$.signatureDeltaBytes,sseRedactedThinkingBytes:$.redactedThinkingBytes,sseLastEvent:$.last?{...$.last}:void 0}}function s7($,J={}){if(!$.body)return $;let Y=$.body.getReader(),X=new TextDecoder("utf-8",{ignoreBOM:!0}),z=new TextEncoder,V=J.responseMode==="json",j=Y2(J.toolNameMap,V),N=!0,F="",E=0,A=0,x=0,l=0,i=0,H0=!1,g=!1,z0=S0(),P=S0(),J0=J.perf||J.onMessageStart||J.onMessageDelta?M2():void 0,b0="",O0=0,B0=!1,o=(h0)=>{if(!h0)return;try{h0()}catch{}},M0=v2(),W$=J.onContentFilter||J.onComplete?x2():void 0,v0=J.laneStart&&J.laneStartOAuthServed!==!1?f2():void 0,u=!1,S$=!1,l4=(h0=!1)=>{if(!J.onContentFilter)return!1;if(!u)u=!0,S$=J.onContentFilter({completedToolUse:h0})!==!1;return S$},L1=J.serverSideFallbackModel?q7({requestedModel:J.serverSideFallbackModel,maxPendingBytes:l$,onOutcome:J.onServerSideFallbackOutcome,onRefusalAfterToolUse:J.onContentFilter?()=>l4(!0):void 0}):void 0,b1=(h0)=>{if(!W$)return null;let k$=I2(W$,h0,l$);if(k$?.type==="content-filter"&&J.onContentFilter)return l4()?g2(J.contentFilterModel):null;if(k$?.type==="complete")J.onComplete?.(k$.finishReason);return null},u4=(h0,k$=!1)=>v0?k2(v0,h0,l$,k$):h0,B1=()=>{if(g)return;g=!0,Y.releaseLock()},t9=async(h0)=>{try{await Y.cancel(h0)}catch{}finally{B1()}},e9=(h0={})=>({chunks:E,pulls:A,inputBytes:x,outputBytes:l,pendingChars:j.pendingLength(),sseErrorPending:M0.pending.length,sseFinishPending:W$?.pending.length??0,sseFinishDisabled:W$?.disabled??!1,serverFallbackPending:L1?.pendingLength()??0,rewriteMs:I$(i),totalMs:I$(S0()-P),...J0?p2(J0):{},...h0}),$1=(h0,k$={})=>{J.perf?.(h0,e9(k$))};J.perf?.("stream_tool_prefix_wrapper_created",{status:$.status,hasBody:!0});let $J=new ReadableStream({async pull(h0){if(A++,!H0)H0=!0,$1("stream_tool_prefix_first_pull");while(!0){let k$=S0();try{let{done:$4,value:v$}=await Y.read(),J4=I$(S0()-k$);if($4){let E0=X.decode();if(J0&&!V)k7(J0,E0,l$,(g0)=>{let W4=g0.message;if(g0.type==="message_start"&&W4)o(()=>J.onMessageStart?.(W4));if(g0.type==="message_delta"&&(g0.usage||g0.stopReason))o(()=>J.onMessageDelta?.({...g0.usage?{usage:g0.usage}:{},...g0.stopReason?{stopReason:g0.stopReason}:{}}))});if(V){let g0=z.encode(E0).byteLength;if(O0+g0<=l$)b0+=E0,O0+=g0;else B0=!0}if(V&&!B0)try{let g0=JSON.parse(b0);if(g0&&typeof g0==="object"&&!Array.isArray(g0))o(()=>J.onMessageResponse?.(g0))}catch{}let u$=S0(),X4=L1?L1.push(E0)+L1.flush():E0,A$=u4(X4,!0),T0=V?b1(A$):h7(M0,E0,l$,J.onRelayUpstreamError)??b1(A$);if(T0)throw $1("stream_tool_prefix_retryable_error",{providerErrorType:T0.providerErrorType}),await t9(T0),T0;let G4=j.push(A$,!0);if(i+=S0()-u$,G4||F){let g0=z.encode(F+G4);F="",l+=g0.byteLength,h0.enqueue(g0)}if($1("stream_tool_prefix_rewrite",{readMs:J4}),B1(),J.onStreamEnd)try{await J.onStreamEnd()}catch{}h0.close();return}E++,x+=v$.byteLength;let E$=X.decode(v$,{stream:!0});if(N&&E$){if(N=!1,E$.charCodeAt(0)===65279)F=E$[0]??"",E$=E$.slice(1)}if(V){let E0=v$.byteLength;if(O0+E0<=l$)b0+=E$,O0+=E0;else B0=!0}if(J0&&!V)k7(J0,E$,l$,(E0)=>{let u$=E0.message;if(E0.type==="message_start"&&u$)o(()=>J.onMessageStart?.(u$));if(E0.type==="message_delta"&&(E0.usage||E0.stopReason))o(()=>J.onMessageDelta?.({...E0.usage?{usage:E0.usage}:{},...E0.stopReason?{stopReason:E0.stopReason}:{}}))});let z$=S0(),O$=L1?L1.push(E$):E$,Z4=u4(O$),F1=V?b1(Z4):h7(M0,E$,l$,J.onRelayUpstreamError)??b1(Z4);if(F1)throw $1("stream_tool_prefix_retryable_error",{providerErrorType:F1.providerErrorType,readMs:J4,lastChunkBytes:v$.byteLength}),B1(),F1;let Y4=j.push(Z4);if(i+=S0()-z$,Y4){let E0=z.encode(F+Y4);F="",l+=E0.byteLength,h0.enqueue(E0)}let N$=S0();if(E===1||E%25===0||N$-z0>5000)z0=N$,$1("stream_tool_prefix_progress",{readMs:J4,lastChunkBytes:v$.byteLength});if(Y4)return}catch($4){let v$=zZ($4,J.toolNameMap);if($1("stream_tool_prefix_error"),v$ instanceof k4)await VZ(Y,v$),g=!0,o(J.onToolNameRefusal);else B1();throw v$}}},async cancel(h0){$1("stream_tool_prefix_cancel");try{await Y.cancel(h0)}finally{B1()}}});return new Response($J,{status:$.status,statusText:$.statusText,headers:$.headers})}import{mergeNativeSettingsSection as WW,nativeCacheKeepAlways as zW,nativeSettingsRecord as VW}from"@cortexkit/anthropic-auth-core";var S8="physical send failed before a response",AG="__OPENCODE_ANTHROPIC_AUTH_COMMAND_HANDLED__",E8="~effect/http/HttpServerResponse",A8="~effect/http/Cookies",P8="~effect/http/HttpBody",PG="~effect/ErrorReporter/ignore",qG="https://api.anthropic.com/v1/messages",l8=new WeakSet;function a9($){let J=new Response(JSON.stringify({type:"error",error:{type:"invalid_request_error",message:$}}),{status:400,headers:{"content-type":"application/json"}});return l8.add(J),J}async function q8($,J){if(!J?.aborted)return;await $.body?.cancel().catch(()=>{}),J.throwIfAborted()}function hZ($,J){return($.status!==400||!l8.has($))&&CG($.status,J)}function M8($){return v.warn("effort-history","refused uncorrelated per-message effort request",{check:$.check,...$.details}),a9($.message)}function R8($){return v.warn("transform","refused request ending on assistant history",{check:$.check,...$.details}),a9($.message)}var MG=60000,x8=60000,u8=240,RG=u8,xG=600000;function IG($,J){return($?.accounts??[]).some((Y)=>Y.id===J&&k0(Y)&&w0(Y))}function fG($){let J=($?.accounts??[]).find((Y)=>k0(Y)&&w0(Y));if(_1($)==="fallback-first"&&J)return{activeId:J.id,route:"fallback-first"};return{activeId:"main",route:"main"}}function I8($,J){if($?.activeId==="main"||$?.activeId&&IG(J,$.activeId))return{activeId:$.activeId,route:$.route};return fG(J)}function d8($,J,Y){let X=Date.now()-$.lastUpdated;if(!$.activeId||X<0||X>xG)return I8(Y,J);return I8({activeId:$.activeId,route:$.route},J)}async function kG($,J,Y){let X;try{X=await J()}catch(z){return v.warn("sidebar","account storage reload failed; routing preserved",{message:z instanceof Error?z.message:String(z)}),{...$.activeId?{activeId:$.activeId,route:$.route}:Y??{activeId:"main",route:"main"},freshStorage:null}}return{...d8($,X,Y),freshStorage:X}}async function vG($){await o9()?.beforeStorageLoad?.();let J;try{J=await $()}catch{return{activeId:"main",route:"main",freshStorage:null}}finally{await o9()?.afterStorageLoad?.()}await o9()?.beforeSidebarRead?.();let Y=await p8();return{...d8(Y,J),freshStorage:J}}var hG=4,bG=25,gG=1,f8=!1;function r9(){return process.env.OPENCODE_ANTHROPIC_AUTH_PERF==="1"}function Y0(){return performance.now()}function q0($){return Math.round($*10)/10}function k8($){return Math.floor(Math.random()*Math.max(0,$))}function e1($){if(typeof $==="string")return $;if($ instanceof URL)return $.toString();return $.url}function h1($,J){return J?.method??($ instanceof Request?$.method:void 0)}async function m4($,J){if(J?.body!==void 0)return J.body;if(!($ instanceof Request)||$.body===null)return;try{return await $.clone().text()}catch{return}}function yG(){if(f8||!1||!r9())return;f8=!0;let $=100,J=250,Y=Y0()+$;setInterval(()=>{let X=Y0(),z=X-Y;if(Y=X+$,z<J)return;e$("[perf] opencode event_loop_lag",{lagMs:q0(z),thresholdMs:J})},$).unref?.()}function mG($){let J=Y0(),Y={requestId:String(gG++),start:J,last:J,mark(X,z){let V=Y0();if(r9())e$("[perf] opencode request stage",{requestId:Y.requestId,stage:X,deltaMs:q0(V-Y.last),totalMs:q0(V-Y.start),...z});Y.last=V},done(X,z){let V=Y0();if(r9())e$("[perf] opencode request done",{requestId:Y.requestId,stage:X,deltaMs:q0(V-Y.last),totalMs:q0(V-Y.start),...z});Y.last=V}};if(r9())e$("[perf] opencode request start",{requestId:Y.requestId,...$});return Y}function i8($,J){let Y=/^msg_([0-9a-fA-F]{12})/.exec($);if(!Y)return;let X=BigInt(`0x${Y[1]}`);if(X<=0n)return;let V=`msg_${(X-1n).toString(16).padStart(12,"0")}${"z".repeat(14)}`,j=J&&V<=J?`${J}z`:V;if(j.length>128||j>=$)return;return j}async function v8($,J,Y,X={}){let z=$.client.session,V=await H9($.client,J),j={path:{id:J},body:{noReply:X.noReply??!0,parts:[{type:"text",text:Y,ignored:!0}]}};if(X.beforeActiveAssistant){let N=X.latestPreparedMessageId?.(),F=V?.latestUserMessageId,E=N&&(!F||N>F)?N:F,A=V?.latestAssistantMessageId?i8(V.latestAssistantMessageId,E):void 0;if(!A)return!1;j.body.messageID=A}if(V?.agent)j.body.agent=V.agent;if(V?.model)j.body.model=V.model;if(V?.variant)j.body.variant=V.variant;if(X.canSend&&!X.canSend())return!1;if(j.body.messageID)X.onPreparedMessageId?.(j.body.messageID);if(typeof z?.promptAsync==="function")return await z.promptAsync(j),!0;if(typeof z?.prompt==="function")return await Promise.resolve(z.prompt(j)),!0;throw Error("OpenCode session prompt API is unavailable for ignored replies.")}function pG(){throw Object.assign(Error(AG),{[E8]:E8,[PG]:!0,status:204,statusText:void 0,headers:{},cookies:{[A8]:A8,cookies:{}},body:{[P8]:P8,_tag:"Empty"}})}function cG($){if($.sessionID==null)return!1;let J=$.model;return J?.providerID==="anthropic"||J?.api?.npm==="@ai-sdk/anthropic"||J?.api?.npm==="@ai-sdk/google-vertex/anthropic"}function lG($){if($.some((J)=>J.includes("<use_parallel_tool_calls>")))return!1;return $.push(t6),!0}var uG={input:0,output:0,cache:{read:0,write:0}},dG=1000;function f$($){return $}function iG($,J){let Y=c4($);return`${Y} content filter detected. Switched to Opus 4.8 for a ${J}-response recovery window before trying ${Y} again.`}function nG($){let J=c4($);return`${J} recovery window complete. Returning to ${J}.`}function c4($){if(p6($))return"Opus 5.5";if(m6($))return"Opus 5";if(y6($)){if($.startsWith("claude-mythos-5-1"))return"Mythos 5.1";if($.startsWith("claude-fable-5-1"))return"Fable 5.1"}if($==="claude-fable-5"||$.startsWith("claude-fable-5-"))return"Fable 5";if($==="claude-opus-4-8"||$.startsWith("claude-opus-4-8-"))return"Opus 4.8";return $}function oG($,J){return`Anthropic safety fallback active: ${c4($)} → ${c4(J)}. Follow-up requests may remain on the fallback model for about one hour.`}function rG($){return`Anthropic safety fallback ended. Returning to ${c4($)}.`}function sG(){return{input:f9.input,output:f9.output,cache:{read:f9.cacheRead,write:f9.cacheWrite5m},tiers:[{tier:{type:"context",size:X6},input:x9.input,output:x9.output,cache:{read:x9.cacheRead,write:x9.cacheWrite5m}}]}}function aG($){let J=$["claude-opus-4-8"]??$["claude-opus-4-5"]??Object.values($)[0];if(!J)return $;return{...$,...Object.fromEntries(Object.values(Z6).map((Y)=>{let X=R6(Y.id),z=X.pricing;return[Y.id,{...J,id:Y.id,name:Y.name,api:J.api?{...J.api,id:Y.id}:void 0,cost:{input:z.input,output:z.output,cache:{read:z.cacheRead,write:z.cacheWrite5m}},limit:{...J.limit??{},context:X.contextWindow,output:X.maxOutputTokens},capabilities:{...J.capabilities??{},reasoning:!0,attachment:!0,toolcall:!0},release_date:X.releaseDate}]})),...$[I9]?{}:{[I9]:{...J,id:I9,name:"Claude Haiku 5.5",api:J.api?{...J.api,id:I9}:void 0,cost:sG(),limit:{...J.limit??{},context:Y6,output:G6},capabilities:{...J.capabilities??{},reasoning:!0,attachment:!0,toolcall:!0},release_date:W6,variants:s9()}},...$[h9]?{}:{[h9]:{...J,id:h9,name:"Claude Sonnet 5.5",api:J.api?{...J.api,id:h9}:void 0,cost:{input:b9.input,output:b9.output,cache:{read:b9.cacheRead,write:b9.cacheWrite5m}},limit:{...J.limit??{},context:K6,output:_6},capabilities:{...J.capabilities??{},reasoning:!0,attachment:!0,toolcall:!0},release_date:L6,variants:s9()}},...$[k9]?{}:{[k9]:{...J,id:k9,name:"Claude Opus 5.5",api:J.api?{...J.api,id:k9}:void 0,cost:{input:v9.input,output:v9.output,cache:{read:v9.cacheRead,write:v9.cacheWrite5m}},limit:{...J.limit??{},context:z6,output:V6},capabilities:{...J.capabilities??{},reasoning:!0,attachment:!0,toolcall:!0},release_date:j6,variants:s9()}}}}var tG=["low","medium","high","xhigh","max"];function s9($=tG){return Object.fromEntries($.map((J)=>[J,{thinking:{type:"adaptive",display:"summarized"},effort:J}]))}function eG($){return Object.fromEntries(Object.entries($).map(([J,Y])=>{let X=Y.api?.id??Y.id??J,z=UG(X)?.efforts.variants;return[J,z?{...Y,variants:s9(z)}:Y]}))}function $W($){return Object.fromEntries(Object.entries($).map(([J,Y])=>[J,{...Y,cost:uG}]))}var JW=2000,bZ="@cortexkit/opencode-anthropic-auth",p4;function ZW(){if(p4!==void 0)return p4;p4=bZ;try{let $=JSON.parse(l2(d2(u2(i2(import.meta.url)),"..","package.json"),"utf8"));if($.name===bZ&&typeof $.version==="string"&&$.version.trim())p4=`${bZ}@${$.version.trim()}`}catch{}return p4}function YW(){return["The Claude menu opens in OpenCode's terminal window when the plugin's TUI part is loaded.",`In the terminal, add "${ZW()}" to the plugin list in tui.json (or rerun setup), then restart OpenCode.`,"In OpenCode Desktop, use the text menu below."].join(`
25
+ `)}function XW(){return process.env.OPENCODE_CLIENT==="desktop"}function h8(){return process.env.OPENCODE_ANTHROPIC_AUTH_CLAUSTRUM_CONNECTION_FILE?.trim()||process.env.CLAUSTRUM_SUBC_CONNECTION?.trim()||void 0}var GW=async($,J={})=>{let Y={setTimeout:globalThis.setTimeout,clearTimeout:globalThis.clearTimeout,setInterval:globalThis.setInterval,clearInterval:globalThis.clearInterval,...J},X=J.authorize??t7;yG();let{client:z}=$,V=globalThis.fetch,j=q6(),N=f6(k6(j)),F=600000,E=50,A=new Map;function x(){let Z=Date.now();for(let[G,W]of A)if(Z-W.createdAt>F)A.delete(G)}function l(Z,G){if(x(),A.size>=E){let W="",K=1/0;for(let[_,L]of A)if(L.createdAt<K)K=L.createdAt,W=_;if(W)A.delete(W)}A.set(Z,G)}function i(Z){x();let G=A.get(Z);if(!G)return;if(Date.now()-G.createdAt>F){A.delete(Z);return}return G}let H0;try{H0=await B6({role:"opencode1",onLockEvent:J.nativeLocal?.onLockEvent})}catch(Z){let G=SG(Z);if(G)throw Error(G,{cause:Z});throw Z}let g=await QG(j,void 0,H0.layout),z0=H0.kind==="state-home"?void 0:H0.registration,P=o2({paths:g,host:"opencode",local:J.nativeLocal,vault:J.claustrumScopedConnect?{connect:J.claustrumScopedConnect}:void 0}),J0=P.quotaObservations,b0=null;function O0(Z){return r6(Z)}function B0(Z,G){return Z?O0(Z.binding):G?JSON.stringify([G.credentialId,G.accountIdentity,G.recordVersion]):void 0}function o(Z,G,W,K=b0){let _=J0.get(Z);if(!_||!G||_.lineage!==G||_.accountUuid!==W||M1(_.entry.quota,K,_.entry.checkedAt)<=Date.now())return;return _}function M0(Z,G,W,K,_=b0){let L=o(Z,G,W,_);if(!L)return K;if(!K)return{...L.entry,refreshAfter:M1(L.entry.quota,_,L.entry.checkedAt)};let D=L.entry.quota.source!=="headers"&&I1(K.quota)>I1(L.entry.quota)?K.quota:Q8(K.quota,L.entry.quota);return{...L.entry,quota:D,refreshAfter:M1(D,_,I1(D))}}function W$(Z,G,W){if(!J0.has(Z.id))return Z.quota;let K=Z.binding?O0(Z.binding):B0(void 0,W),_=I1(Z.quota);return M0(Z.id,K,Z.accountIdentity,Z.quota?{quota:Z.quota,checkedAt:_,refreshAfter:M1(Z.quota,G,_)}:null,G)?.quota}let v0;async function u(Z=j){if(Z!==j)throw Error("Native account storage mismatch");let G=await P.read();if(b0=G.policyStorage,!v0){let _=G.accounts.find((L)=>L.id==="main")?.binding;if(_)v0={rowId:_.rowId,credentialEpoch:_.credentialEpoch}}if(G.mode!=="claustrum")return G.policyStorage;let W=G.accounts.find((_)=>_.id==="main"&&_.source==="vault"),K=f$(W?.accountIdentity);return{...G.policyStorage,claustrum:{...G.policyStorage.claustrum,mode:"claustrum",scopedRoster:!0,primaryAccount:W?.credentialId&&K?{credentialId:W.credentialId,accountId:K,state:W.state??"cold",enabled:W.enabled}:void 0}}}async function S$(Z,G){return await P.updateSettings((W)=>WW(W,Z,G)),u()}let l4=async(Z)=>{return await P.updateSettings((G)=>({...G,claudeCache:{...VW(G.claudeCache),enabled:Z,mode:g4({...G,version:1,accounts:[]})}})),u()},L1=(Z)=>S$("claudeCache",{mode:Z}),b1=(Z)=>S$("cacheKeep",{enabled:Z}),u4=async()=>{return await P.updateSettings(zW),u()},B1=(Z,G)=>S$("cacheKeep",{enabled:!0,always:!1,startHour:Z,endHour:G}),t9=(Z)=>S$("cacheKeep",{subagents:Z}),e9=(Z)=>S$("dump",{enabled:Z}),$1=(Z)=>S$("claudeFast",{enabled:Z}),$J=async(Z)=>{return await P.setLoggingLevel(Z),u()},h0=(Z,G=j)=>S$("prime",{enabled:Z}),k$=(Z,G=j)=>S$("routing",{mode:Z}),$4=(Z)=>S$("killswitch",Z),v$=(Z,G,W=j)=>P.setEnabled(Z,G),J4=(Z,G=j)=>P.remove(Z),E$=(Z,G=j,W)=>P.reorder(Z,W),z$=null;try{z$=await u()}catch{}function O$(Z){return Boolean(Z&&y4(Z)==="claustrum"&&Z.claustrum?.scopedRoster===!0)}function Z4(Z=j,G=$.directory){if(Z!==j)throw Error("Native vault storage mismatch");return P.vault}let F1=H6("native-auth");async function Y4(Z=j){NJ?.close(),await F1.drain(),await P.drainQuotaPublications(),await Promise.all([...WJ.values()].map((G)=>G.drain())),await P.drainRoutingPublications(),await P.close()}function N$(){if(process.env.OPENCODE_AUTH_CONTENT!==void 0)throw Error("Native OAuth cannot serve while OPENCODE_AUTH_CONTENT is set")}function E0(Z){let G=f$(Z);if(!G)throw Error("Native wire identity requires an admitted provider account");return M6(G,G)}class u$ extends Error{account;checkIntervalMs;constructor(Z,G){super("OAuth account cannot serve the requested model under current quota policy");this.account=Z;this.checkIntervalMs=G}}class X4 extends Error{constructor(){super("Native OAuth requires a Claude Pro/Max credential. An API key belongs in OpenCode stock Anthropic authentication.")}}class A$ extends Error{account;tokenRefreshFailed;failure;constructor(Z,G,W=!1,K){super(K?.kind==="provider"&&K.status!==void 0?`Claude OAuth refresh failed: ${K.status} — ${K.classification==="invalid-grant"?"invalid_grant":"OAuth operation failed"}`:`Native OAuth authorization refused: ${G}`);this.account=Z;this.tokenRefreshFailed=W;this.failure=K}}async function T0(Z,G,W,K,_="serve",L){N$(),G?.throwIfAborted();let D=L??await P.read(),O=D.accounts.find((p)=>p.id===Z);if(_==="cachekeep"&&(O?.type!=="oauth"||!k0(O)))throw new x1("account-unavailable");if(O?.state==="unsupported-access")throw new X4;if(O?.source==="vault"&&!k0(O))throw new A$(O,"not-active");if(O?.type!=="oauth"||!k0(O))throw Error("Native OAuth account is unavailable");let Q=(p,r,L0)=>{let y0=W$(p,r,L0),A0=_==="last-main"&&Z==="main"&&_1(r)!=="sticky-balanced";if(K&&(z1(r)&&!j1(y0,r,Z==="main"?void 0:Z,K)||!A0&&!i9(y0,K)))throw _==="cachekeep"?new x1("account-policy"):new u$(p,_8(r))};Q(O,D.policyStorage);let H;if(O.source==="vault"){let p=await P.authorizeVault(Z,G).catch((r)=>{if(G?.throwIfAborted(),_==="cachekeep"){let L0=n6(r);if(L0)throw L0}if(r instanceof u6&&["not-active","route-declined","route-unavailable"].includes(r.code))throw new A$(O,r.code);throw r});H={accessToken:p.accessToken,expires:p.expiresAtMs??void 0,accountIdentity:p.accountIdentity,scopedAttempt:p}}else{let p=await P.authorizeLocal(Z,{signal:G,rejectedAccessToken:W,intent:W?"refresh":_==="last-main"||_==="cachekeep"?"serve":_});if(p.status!=="usable"){if(_==="cachekeep"){let r=o6(p);if(r)throw r}throw new A$(O,p.status,p.status==="failed"&&p.failure.kind==="provider",p.status==="failed"?p.failure:void 0)}H={accessToken:p.access,expires:p.expires,accountIdentity:p.binding.identity,localSubject:p.subject,localSource:p.source}}let q=await P.read(),y=q.accounts.find((p)=>p.id===Z);if(G?.aborted)throw G.reason??Error("Request aborted");if(!y||!k0(y)||y.source!==O.source||y.accountIdentity!==H.accountIdentity)throw _==="cachekeep"?new x1("credential-changed"):Error("Native OAuth account changed before dispatch");if(H.localSubject&&(!y.binding||y.binding.storageId!==H.localSubject.binding.storageId||y.binding.rowId!==H.localSubject.binding.rowId||y.binding.credentialEpoch!==H.localSubject.binding.credentialEpoch||y.binding.identity!==H.localSubject.binding.identity))throw _==="cachekeep"?new x1("credential-changed"):Error("Native local account binding changed before dispatch");if(H.scopedAttempt&&y.credentialId!==H.scopedAttempt.credentialId)throw _==="cachekeep"?new x1("credential-changed"):Error("Native vault credential binding changed before dispatch");return Q(y,q.policyStorage,H.scopedAttempt),H}async function G4(Z,G){let K=(await P.read()).accounts.find((L)=>L.id===Z);if(K?.type!=="oauth")throw Error("Native OAuth account is unavailable");let _=K.source==="vault"?await P.authorizeVault(Z,G):await P.captureLocalSubject(Z);if(!await P.resetBackoff(Z,_))throw Error("Native reset fence changed")}let g0=new WeakMap,W4=new WeakSet;async function JJ(Z,G){if(W4.has(Z))return;W4.add(Z),await P.vault.reportFailure(Z,401,G).catch(()=>{v.warn("claustrum","native auth-failure report unavailable")})}async function d4(Z,G,W){let K=await P.vault.prepareRetry(Z,W,G);return K.retry?K.receipt:void 0}let ZJ=A7(process.env.OPENCODE_ANTHROPIC_AUTH_FALLBACK_MODE),R0=new sJ,O1=new Map;function YJ(Z){for(let{recoveryKey:G}of R0.sourceWarmsForSession(Z))R0.dropSourceWarm(G);for(let G of $$.trackedSessions()){let W=M4(G.id);if(W&&W.sessionId===Z)$$.untrack(G.id)}for(let G of[...O1.keys()])if(G.startsWith(`${Z}\x00`))O1.delete(G)}let XJ=new eJ,w1=new iJ,g1=new IJ,d$=new Map,P$=new Map,h$=new Map,i4=new Map,V$=new Set,GJ=new Map,n4=new Map,J1=new Map,z4=new Map,WJ=new Map,V4=O7(),gZ=new WeakSet,zJ=new WeakMap;async function yZ(){let Z=await P.read(),G=Z.routingPath;if(!G)throw Error(Z.mode==="claustrum"?"Vault routing storage is unavailable":"Native routing storage is unavailable");let W;if(Z.mode==="claustrum"){W=new Map;for(let _ of Z.accounts)if(_.source==="vault"&&_.accountIdentity)W.set(_.id,_.accountIdentity)}let K=WJ.get(G);if(!K)K=new BG({path:G,vaultSeed:Z.routingSeed,onLockEvent:P.onLockEvent,relocationGuard:P.relocationGuard,localRecoveryPath:Z.mode==="local"?Z.routingRecoveryPath:void 0}),WJ.set(G,K);return K.setVaultSeed(Z.routingSeed),{router:K,...W&&{accountIdentities:W}}}let b=new _G({storage:z$,pauseBetweenQuotaCalls:J.quotaCallPause,fetchQuotaSnapshot:(Z,G)=>{N$();let W=Z.kind==="main"?"main":Z.accountId;if(!W)throw Error("Quota request has no account identity");return P.fetchQuota(W,void 0,void 0,G,Z.purpose)}});function j4(Z){return["five_hour","seven_day"].some((G)=>(Z?.[G]?.remainingPercent??1)<=0)}function mZ(Z,G,W=!1){if(!Z||Z.quota?.enabled===!1||!G||_1(Z)==="sticky-balanced"||V1(Z.refresh?.mainLastRefreshError))return;let K=Date.now(),_=Z.quota?.mainLastQuotaApiError;if(_&&_.accountIdentity===G&&_.nextRetryAt!==void 0&&_.nextRetryAt>K)return{message:j8(_,K),retryAfter:Math.max(1,Math.ceil((_.nextRetryAt-K)/1000))};let L=Z.quota?.mainQuota,D=I1(L);if(L?.accountIdentity!==G||L.source==="headers"&&!W||!j4(L)||D<=0||D>K||M1(L,Z,D)<=K)return;let O=["five_hour","seven_day"].flatMap((Q)=>{let H=L[Q],q=H?.resetsAt?Date.parse(H.resetsAt):Number.NaN;return H&&H.remainingPercent<=0&&Number.isFinite(q)&&q>K?[q]:[]});return{message:"Claude OAuth quota is exhausted for this account.",retryAfter:Math.max(1,Math.ceil(((O.length?Math.max(...O):K+_8(Z))-K)/1000))}}async function pZ(Z,G,W){if(TJ===Z&&q$===G)return;let K=p1!==void 0&&W!==void 0&&p1!==W;TJ=Z,q$=G,b.setMainQuotaAccountIdentity(G,!0,K)}async function K4(Z,G,W,K){let _=Z,L=Y9.get(_);if(L){let O=await L.promise;return K===L.recordVersion?O:{...O,stale:!0}}let D=(async()=>{let O=++G3,Q=L4,H=await P.read(),q=H.policyStorage,y=H.accounts.find((U1)=>U1.id==="main")?.accountIdentity,p=E0(W??y),r=H.mode==="claustrum",L0=r?q?.claustrum?.primaryAccount?.accountId:void 0;if(W!==void 0&&W!==y||r&&W===void 0)return{quotaKey:void 0,providerAccountUuid:void 0,generation:b.getMainQuotaIdentityGeneration(),stale:!0,state:"on-identity-mismatch"};let y0=y??L0??Q,A0=q?.main?.profile?.providerAccountUuid??q?.main?.profile?.accountIdentity,m0=f$(W)??f$(p.accountUuid),Q0=W?m0:Z.startsWith("sk-ant-oat")?m0??f$(A0):void 0,D$=y4(q)!=="claustrum"?"na":A0===void 0||m0===void 0?"unknown-identity":A0!==void 0&&m0!==void 0&&A0!==m0?"on-identity-mismatch":"on-vault-served";if(O!==G3){let U1=TJ!==Z||q$!==y0;return{quotaKey:y0,providerAccountUuid:Q0,generation:b.getMainQuotaIdentityGeneration(),stale:U1,state:D$}}if(await pZ(Z,y0,Q0),Z.startsWith("sk-ant-oat")&&Q0===void 0)b.clearMain();if(p1=Q0,Z.startsWith("sk-ant-oat"))O4=Z;return{quotaKey:y0,providerAccountUuid:Q0,generation:b.getMainQuotaIdentityGeneration(),stale:!1,state:D$}})();Y9.set(_,{promise:D,recordVersion:K});try{return await D}finally{if(Y9.get(_)?.promise===D)Y9.delete(_)}}let VJ=z$?.quotaHeaderFeed?.enabled===!0?new KG:null,Z1=new Map,cZ=new Map,N1=new Set,D1=new AbortController,lZ=!1;function o4(Z,G){return JSON.stringify([Z,G??null])}function jJ(Z){let G=Z.binding;if(Z.source!=="local"||!G)return;return JSON.stringify([G.storageId,G.rowId,G.credentialEpoch])}function KJ(Z,G){return Z.lineage!==void 0&&Z.lineage===jJ(G)&&(!Z.profile||Z.profile.accountIdentity===G.accountIdentity)}async function r4(Z,G){if(!Z?.profile||!l9(Z.profile,G)||!await Z.isCurrent?.())return;return Z.persistence==="refused"?void 0:Z.profile}function uZ(Z){if(!Z)return[];let G=new Set([...Z.main?["main"]:[],...(Z.accounts??[]).filter((W)=>w0(W)&&(W.enabled!==!1||Boolean(W.claustrumScopedCredentialId))).map((W)=>W.id)]);return[...new Set(Z1.values())].filter((W)=>W.persistence==="failed"&&W.profile!==void 0&&G.has(W.accountId))}async function n8(Z,G,W,K){let _=G.accountId,L=W.accounts.find((Q)=>Q.id===_),D=L?.source==="local"?KJ(G,L):L?.source==="vault"&&L.accountIdentity===K.accountIdentity;if(L?.type!=="oauth"||!k0(L)||L.accountIdentity!==K.accountIdentity||!D||await r4(G,Date.now())!==K)return Z;if(_==="main")return Z.main?{...Z,main:{...Z.main,profile:K}}:Z;let O=Z.accounts?.find((Q)=>Q.id===_);if(!O||!w0(O))return Z;return{...Z,accounts:Z.accounts.map((Q)=>Q.id===_&&w0(Q)?{...Q,profile:K}:Q)}}async function dZ(Z,G,W=uZ(Z)){if(!Z||W.length===0)return Z;let K=[];for(let D of W){let O=await r4(D,Date.now());if(O)K.push({hydration:D,profile:O})}if(!K.length)return Z;let _=G??await P.read(),L=Z;for(let D of K)L=await n8(L,D.hydration,_,D.profile);return L}function o8(Z,G,W){N$();let K=!1,_=Object.assign((D,O)=>{return K=!0,V(D,O)},{preconnect:V.preconnect}),L={accountId:Z.id,fetched:Promise.resolve(),lineage:jJ(Z),...W&&{deadline:W}};return L.fetched=P.fetchProfileForDisplay(Z.id,_,AbortSignal.any([D1.signal,...W?[W]:[]])).then(({profile:D,persisted:O,isCurrent:Q})=>{if(L.settled=!0,D.accountIdentity!==void 0)cZ.set(o4(Z.id,D.accountIdentity),D);if(Z.accountIdentity===void 0||D.accountIdentity===Z.accountIdentity)L.profile=D,L.isCurrent=Q,L.persistence="pending";let H=O.then(async(q)=>{if(L.persistence=q,q==="failed")v.warn("quota","failed to persist account profile",{account:Z.id});else if(q==="refused")v.debug("quota","refused account profile publication",{account:Z.id});if((q==="saved"||q==="failed")&&!D1.signal.aborted){let y=q==="failed"&&await r4(L,Date.now());if(q==="saved"||y)try{let p=await P.read();if(!D1.signal.aborted)await g$(p.policyStorage,{...X$,routingAuthoritative:!1},p)}catch{v.debug("quota","failed to publish account profile to sidebar",{account:Z.id})}}});N1.add(H),H.then(()=>N1.delete(H))},(D)=>{if(L.settled=!0,L.failed=K,v.debug("quota","failed to hydrate account profile",{account:Z.id,error:D instanceof Error?D.message:String(D)}),!K&&Z1.get(G)===L)Z1.delete(G)}),N1.add(L.fetched),L.fetched.then(()=>N1.delete(L.fetched)),L}function r8(Z,G){let W=[G,Z.deadline].filter((_)=>_!==void 0);if(!W.length)return Z.fetched;let K=AbortSignal.any(W);if(K.aborted)return Promise.resolve();return new Promise((_)=>{let L=()=>{K.removeEventListener("abort",L),_()};K.addEventListener("abort",L,{once:!0}),Z.fetched.then(L)})}function iZ(Z,G){return l9(Z.profile,G)&&a6(Z.profile,Z.accountIdentity)}async function s4(Z){let G=await P.read();if(process.env.OPENCODE_ANTHROPIC_AUTH_DISABLE_PROFILE_HYDRATION==="1")return G;let W=Date.now(),K=[],_=new Map;for(let O of G.accounts){if(O.type!=="oauth"||!k0(O)||iZ(O,W))continue;let Q=o4(O.id,O.accountIdentity),H=Z1.get(Q);if(H&&O.accountIdentity===void 0&&(H.lineage===void 0||H.lineage!==jJ(O)))H=void 0;if(!H&&O.accountIdentity!==void 0){let q=Z1.get(o4(O.id));if(q&&KJ(q,O))H=q,_.set(O.id,q)}if(H?.failed)continue;if(!H&&l9(cZ.get(Q),W))continue;if(!H||!H.profile&&(H.deadline?.aborted||H.settled)||H.profile&&!l9(H.profile,W)){if(Z?.aborted||D1.signal.aborted)continue;H=o8(O,Q,Z),Z1.set(Q,H)}if(O.accountIdentity===void 0)_.set(O.id,H);K.push(r8(H,Z))}if(!K.length)return G;await Promise.all(K);let L=await P.read(),D=Date.now();for(let O of L.accounts){if(O.type!=="oauth"||!k0(O))continue;let Q=o4(O.id,O.accountIdentity),H=_.get(O.id);if(H&&O.accountIdentity!==void 0&&!Z1.has(Q)&&KJ(H,O))Z1.set(Q,H);if(iZ(O,D))continue;let q=await r4(Z1.get(Q),D);if(!q||q.accountIdentity!==O.accountIdentity)continue;if(O.profile=q,O.id==="main"){if(L.policyStorage.main)L.policyStorage.main.profile=q}else for(let y of L.policyStorage.accounts)if(y.id===O.id&&w0(y))y.profile=q}return L}async function s8(Z,G,W,K){if(process.env.OPENCODE_ANTHROPIC_AUTH_DISABLE_PROFILE_HYDRATION==="1")return Z;return(await s4(W)).policyStorage}let nZ=new Set;async function a8(Z,G,W){let _=(await P.read()).accounts.find((H)=>H.id===Z.accountId);if(!_||!Z.anthropicAccountUuid||_.accountIdentity!==Z.anthropicAccountUuid)return null;let L={...Q8(_.quota,G.quota),accountIdentity:_.accountIdentity};if(!(Z.scopedAttempt?await P.vault.publish(Z.scopedAttempt,{quota:L}):Z.localSubject?await P.publishLocal(Z.localSubject,{quota:L}):!1)){if(Z.accountId==="main"){if(b.getMain(Z.mainQuotaIdentity?.quotaKey)===W)b.clearMain()}else if(b.getAllFallbacks().get(Z.accountId)===W)b.clearFallback(Z.accountId);return v.debug("quota","native quota publication refused",{accountId:Z.accountId}),v.warn("quota","Quota publication discarded"),null}let O=await P.read(),Q=O.accounts.find((H)=>H.id===Z.accountId);if(!Q?.quota||Q.accountIdentity!==Z.anthropicAccountUuid||Q.source!==_.source)return null;if(Z.localSubject&&Q.binding?.credentialEpoch!==Z.localSubject.binding.credentialEpoch)return null;if(Z.scopedAttempt&&Q.credentialId!==Z.scopedAttempt.credentialId)return null;return{...G,quota:Q.quota,refreshAfter:M1(Q.quota,O.policyStorage,G.checkedAt)}}function t8(Z){v.warn("quota","failed to persist harvested response quota",{error:Z instanceof Error?Z.message:String(Z)})}function e8(Z){let G=Z instanceof Error?Z.name:typeof Z,W=Z instanceof Error?Z.message:String(Z),K=`${G}:${W}`;if(nZ.has(K))return;nZ.add(K),v.warn("quota","failed to normalize response quota headers",{error:W})}function $Y(Z){if(!Z||typeof Z!=="object")return;let G=Z,W=G.credential_id;if(typeof W==="string"&&W&&W!=="main")return W;let K=G.vault;if(K&&typeof K==="object"){let _=K.credential_id;if(typeof _==="string"&&_&&_!=="main")return _}return}async function JY(Z,G){if(!VJ)return;if(Z.accountId==="main"&&!Z.mainQuotaIdentity?.quotaKey)return;let W=await u(j)??W1(),_=(await H1?.())?.type==="oauth",L=Z.accountId==="main"?W.main:W.accounts.find((p)=>p.id===Z.accountId),D=$Y(L),O=D6({storage:W,mainOAuthConfigured:_}),Q=G.checkedAt,H={five_hour:G.quota.five_hour,seven_day:G.quota.seven_day,bindingWindow:G.quota.bindingWindow,fallbackAdvised:G.quota.fallbackAdvised,scoped:G.quota.scoped,extraUsage:G.quota.extraUsage,fieldSources:G.quota.fieldSources},q=D??(Z.accountId==="main"?Z.mainQuotaIdentity?.quotaKey??"main":Z.accountId),y=D?{identity_source:"credential_id",credential_id:D,schema_version:u9,provider:"anthropic",configured_account_count:O,observed_at_ms:Q,anthropic_account_uuid:Z.anthropicAccountUuid??null,quota:H,accountKey:q}:Z.accountId==="main"&&Z.mainQuotaIdentity?.quotaKey?{identity_source:"account_ref",account_ref:Z.mainQuotaIdentity.quotaKey,schema_version:u9,provider:"anthropic",configured_account_count:O,observed_at_ms:Q,anthropic_account_uuid:Z.anthropicAccountUuid??null,quota:H,accountKey:q}:Z.accountId==="main"?{identity_source:"none",schema_version:u9,provider:"anthropic",configured_account_count:O,observed_at_ms:Q,anthropic_account_uuid:Z.anthropicAccountUuid??null,quota:H,accountKey:q}:{identity_source:"account_ref",account_ref:Z.accountId,schema_version:u9,provider:"anthropic",configured_account_count:O,observed_at_ms:Q,anthropic_account_uuid:Z.anthropicAccountUuid??null,quota:H,accountKey:q};await VJ.publish(y)}function ZY(Z){v.debug("quota","failed to publish quota header feed",{error:Z instanceof Error?Z.message:String(Z)})}function oZ(Z,G){try{if(!l6(Z)){v.trace("quota","skipped non-quota response headers",{account:G.accountId});return}let W=s6(Z),K=G.accountId==="main"?G.mainQuotaIdentity:void 0;if(G.accountId==="main"){if(!K||b.getMainQuotaIdentityGeneration()!==K.generation){v.trace("quota","discarded stale main quota headers",{boundIdentity:K?.quotaKey,currentGeneration:b.getMainQuotaIdentityGeneration()});return}}let _=G.accountId==="main"?b.getMain(K?.quotaKey):b.getAllFallbacks().get(G.accountId),L=W.checkedAt??Date.now(),D=B0(G.localSubject,G.scopedAttempt),O=D&&G.anthropicAccountUuid?{lineage:D,accountUuid:G.anthropicAccountUuid,entry:{quota:{...W,accountIdentity:G.anthropicAccountUuid},checkedAt:L,refreshAfter:L},generalExhausted:["five_hour","seven_day"].some((Q)=>{let H=Z.get(Q==="five_hour"?"anthropic-ratelimit-unified-5h-utilization":"anthropic-ratelimit-unified-7d-utilization");return W[Q]!==void 0&&H!==null&&Number.isFinite(Number(H))&&Number(H)>=1})}:void 0;if(O){if(J0.delete(G.accountId),J0.size>=dG){let Q=J0.keys().next().value;if(Q!==void 0)J0.delete(Q)}J0.set(G.accountId,O)}(async()=>{let Q=!1;try{let H;try{H=await a8(G,{quota:W,checkedAt:L,refreshAfter:L},_)}catch(y){t8(y);return}if(H===null)return;if(G.accountId==="main"&&b.getMainQuotaIdentityGeneration()!==K?.generation)return;let q=H;if(O&&J0.get(G.accountId)===O)O.entry=q,Q=!0;if(G.accountId==="main")b.setMain(K?.quotaKey,q);else b.setFallback(G.accountId,q,{authLineageId:G.authLineageId});m1().catch(()=>{}),await JY(G,q),v.debug("quota","harvested response quota",{account:G.accountId,fiveHourPercent:q.quota.five_hour?.usedPercent,sevenDayPercent:q.quota.seven_day?.usedPercent,source:"headers"})}finally{if(!Q&&O&&J0.get(G.accountId)===O)J0.delete(G.accountId),v.debug("quota","discarded pending response quota",{accountId:G.accountId})}})().catch(ZY),v.trace("quota","response quota awaiting publication",{account:G.accountId})}catch(W){e8(W)}}let rZ=Promise.resolve();function T1(Z=!1,G=!1,W,K){let _=rZ.then(()=>YY(Z,G,W,K));return rZ=_.then(()=>{},()=>{}),_}async function YY(Z,G,W,K){let _=await P.read(),L=new Set;if(!Z&&!G&&_.policyStorage.quota?.enabled===!1)return L;for(let D of _.accounts){if(D.id==="main"||D.type!=="oauth")continue;if(!k0(D)){if(G)L.add(D.id);continue}if(!Z&&M1(D.quota,_.policyStorage,I1(D.quota))>Date.now()&&(!W||v1(D.quota,_.policyStorage,Date.now(),W)))continue;try{if(!await b.refreshFallback(D.id,"",_.policyStorage.accounts.find((Q)=>Q.id===D.id&&w0(Q)),Z?void 0:K))L.add(D.id),v.debug("quota","fallback quota preflight returned no reading",{accountId:D.id,requiredByPolicy:G})}catch(O){if(G&&R1(O))throw O;L.add(D.id),G7(D.id,G,O)}}return m1().catch(()=>{}),L}let _J={refreshQuotaForDueAccounts:async()=>{await T1()},refreshQuotaForAllAccounts:async(Z)=>{await T1(!0)},refreshAccount:async(Z,G,W)=>{let K=await T0(Z.id,void 0,W?.force?Z.access:void 0);return{...Z,access:K.accessToken,expires:K.expires}},refreshAccountQuota:async(Z,G)=>{N$();let W=await P.fetchQuota(Z.id);return{account:{...Z,quota:W},fetched:!0}},getUsableFallbackAccounts:async(Z,G)=>{Z=Z??null;let W=[],K=Z?.accounts.some((_)=>w0(_)&&J0.has(_.id))?(await P.read()).accounts:[];for(let _ of Z?.accounts??[]){if(!w0(_)||!k0(_))continue;let L=K.find((Q)=>Q.id===_.id),D=b.getFallback(_.id,L?.binding?{authLineageId:JSON.stringify(L.binding)}:_)?.quota??L?.quota??_.quota,O=L&&Z?W$({...L,quota:D},Z):D;if(!t1(O,Z)||!i9(O,G?.modelId)||z1(Z)&&!j1(O,Z,_.id,G?.modelId))continue;if(O$(Z)){if(S4(_.id,Z))W.push(_);continue}try{let Q=await T0(_.id,void 0,void 0,G?.modelId);W.push({..._,access:Q.accessToken,expires:Q.expires})}catch(Q){if(R1(Q))throw Q}}return W}};async function LJ(){N$();let Z=await P.read();if(Z.mode==="local"&&Z.policyStorage.refresh?.enabled!==!1)for(let G of Z.accounts){if(G.id==="main"||G.type!=="oauth"||!k0(G))continue;try{let W=await T0(G.id);if(k1(G.lastRefreshError,G.accountIdentity,Date.now(),void 0))continue;if(W.localSource!=="rotated"&&W.localSource!=="adopted"&&(!W.expires||W.expires-Date.now()<=W3(Z.policyStorage)))await T0(G.id,void 0,void 0,void 0,"refresh")}catch{}}await T1(!1,!1,void 0,"background")}let OJ=z$!==null&&process.env.OPENCODE_AUTH_CONTENT===void 0,sZ=new Set;async function XY(){let Z=await P.read(),G=new Set(Z.accounts.filter((K)=>K.id!=="main"&&K.source==="vault"&&K.type==="oauth"&&k0(K)).map((K)=>K.id)),W=[...G].some((K)=>!sZ.has(K));if(sZ=G,W)await T1(!1,!1,void 0,"background");await m1()}let NJ=OJ&&O$(z$)?P.vault.watch({intervalMs:J.scopedRosterPollIntervalMs??2000,shouldRefresh:()=>process.env.OPENCODE_AUTH_CONTENT===void 0,onRefresh:XY,setInterval:Y.setInterval,clearInterval:Y.clearInterval}):void 0,GY=OJ?(NJ?NJ.ready.then(()=>LJ()):LJ()).catch(()=>{}):Promise.resolve(),DJ=OJ?Y.setInterval(()=>{LJ().catch(()=>{})},E6+k8(x8)):null;DJ?.unref?.();let WY=(Z,G)=>{let W=yJ({id:Z,role:"fallback"},G);return W==="na"?"off":W},HJ=new fJ,zY=new kJ,i$=new WeakMap,_4=new Map;async function UJ(Z){let G=(Z.get("anthropic-beta")??"").split(",").map((W)=>W.trim()).filter(Boolean).sort();return{betas:G,betasHash:await N6(G.join(","))}}function aZ(Z){try{if(!Z.request)return;let G=P3({request:Z.request,source:Z.source,accountId:Z.accountId,synthetic:Z.synthetic,betasHash:Z.betasHash,requestedModel:Z.requestedModel,onWarning:(K)=>v.warn("cache-diagnostics",K),message:Z.message,receivedAt:Z.receivedAt});if(!G.record||!G.messageId){v.debug("cache-diagnostics","skipped invalid response envelope",{status:Z.status});return}v.debug("cache-diagnostics",q3(G.record));let W=zY.capture(Z.betasHash,Z.betas);if(W)v.debug("cache-diagnostics",W);if(G.canary)v.warn("cache-diagnostics","short-gap previous_message_not_found",{message_id:G.canary.messageId,previous_message_id:G.canary.previousMessageId});if(Z.trackSessionId)HJ.capture(Z.trackSessionId,G.messageId,Z.receivedAt)}catch(G){v.debug("cache-diagnostics","response observation failed",{status:Z.status,error:G instanceof Error?G.message:String(G)})}}function tZ(Z,G,W=!0){let K=i$.get(Z);if(!K)return;if(G&&typeof G==="object"&&!Array.isArray(G)&&!W)K.messageStart=G;K.dumpWrite=K.dumpWrite.then(()=>wZ(K.dump,{status:K.status,message:G,complete:W})).catch(()=>{}),aZ({...K,message:G,receivedAt:Date.now()})}function VY(Z,G){let W=i$.get(Z);if(!W)return;let K=W.messageStart??{},_=K.usage&&typeof K.usage==="object"&&!Array.isArray(K.usage)?K.usage:{},L={...K,...G.usage?{usage:{..._,...G.usage}}:{},...G.stopReason?{stop_reason:G.stopReason}:{}};W.dumpWrite=W.dumpWrite.then(()=>wZ(W.dump,{status:W.status,message:L,complete:!0})).catch(()=>{})}function eZ(Z,G){let W=Promise.resolve(wZ(G.dump,{status:G.status,message:null,complete:!1})).catch(()=>{});i$.set(Z,{...G,dumpWrite:W})}let Y1=null,a4=null;function t4(Z){return Z!==null&&typeof Z==="object"&&gJ(Z)==="R"}function jY(Z){let G=BZ("anthropic");if(!Z||typeof Z!=="object")return!1;let W=Z;return W.type===G.type&&W.access===G.access&&W.refresh===G.refresh&&W.expires===G.expires}async function KY(){if(a4){let Z=await a4();return b6("opencode",Z===void 0?{}:{anthropic:Z}).kind}if(process.env.OPENCODE_AUTH_CONTENT!==void 0)throw Error("OpenCode logins cannot be checked while OPENCODE_AUTH_CONTENT is set");return NG("opencode",y8())}async function $3(){if(await f1("opencode")!=="claustrum")throw Error("This host is not connected to the credential vault; run setup to connect it first");if(await KY()!=="absent")throw Error("OpenCode already holds an Anthropic login; remove it before choosing the vault login")}let _Y={label:"Claude via credential vault",type:"oauth",authorize:async()=>{return await $3(),{url:"",instructions:"Claude requests use the credential vault this host is connected to. OpenCode stores only a placeholder, never a credential.",method:"auto",callback:async()=>{await $3();let Z=BZ("anthropic");return{type:"success",access:Z.access,refresh:Z.refresh,expires:Z.expires}}}}},QJ=new J6({directory:process.env.OPENCODE_ANTHROPIC_AUTH_CACHEKEEP_REGISTRY_DIR||x6("opencode")}),e4=[],y1=new Map,$$=new $6({loadStorage:()=>u(j),fetchImpl:R4,setIntervalImpl:Y.setInterval,clearIntervalImpl:Y.clearInterval,onTrackedSessionsChanged:async(Z)=>{await QJ.publish(Z),e4=await QJ.list(Z)},prepareBody:(Z,G)=>{if(!new Headers(G.headers).get("anthropic-beta")?.split(",").map((W)=>W.trim()).includes(C4))return Z;try{let W=JSON.parse(Z),K=HJ.previousFor(G.id),_=K?.messageId??null;return j9(W,_),_4.set(G.id,{sessionId:G.id,previousMessageId:_,...K?{previousMessageReceivedAt:K.receivedAt}:{},isSubagent:G.isSubagent,ttlSent:K9(W),accountId:G.oauthAccountId??"main",synthetic:!0,requestedModel:typeof W.model==="string"?W.model:void 0}),JSON.stringify(W)}catch{return Z}},onResponse:async({target:Z,bodyText:G,status:W,data:K,receivedAt:_,attempt:L})=>{let D=y1.get(L.id);if(W===401&&D?.scopedAttempt)await JJ(D.scopedAttempt,"direct");if(Z.sourceWarm&&W>=200&&W<300)R0.noteSourceWarmSentForTarget(Z.id);let O=_4.get(Z.id);if(!O?.betasHash||!O.betas){_4.delete(Z.id);return}try{let Q=JSON.parse(G),H=Q&&typeof Q==="object"&&!Array.isArray(Q)?Q.diagnostics:void 0,q=H&&typeof H==="object"&&!Array.isArray(H)&&H.previous_message_id===O.previousMessageId?O.previousMessageId:void 0;if(q===void 0)return;aZ({source:"prewarm_cachekeep",accountId:O.accountId,synthetic:O.synthetic,betasHash:O.betasHash,betas:O.betas,requestedModel:O.requestedModel,request:{...O,previousMessageId:q,ttlSent:K9(Q)},trackSessionId:Z.id,status:W,message:K,receivedAt:_})}catch{}finally{_4.delete(Z.id)}},onComplete:({attempt:Z})=>{y1.delete(Z.id)},retryOnUnauthorized:async({target:Z,headers:G,attempt:W})=>{let K=y1.get(W.id);if(!K)return;let _;try{let O=JSON.parse(Z.bodyText);if(typeof O.model==="string")_=O.model}catch{}if(K.scopedAttempt&&!await d4(K.scopedAttempt,"cachekeep",W.signal))return;let L=await T0(Z.oauthAccountId??"main",W.signal,K.scopedAttempt?void 0:K.accessToken,_,"cachekeep");if(L.accountIdentity!==K.accountIdentity||Boolean(L.scopedAttempt)!==Boolean(K.scopedAttempt))return;if(K.scopedAttempt&&(!L.scopedAttempt||L.scopedAttempt.credentialId!==K.scopedAttempt.credentialId||L.scopedAttempt.recordVersion<=K.scopedAttempt.recordVersion))return;if(!K.scopedAttempt&&L.accessToken===K.accessToken)return;let D=new Headers(G);return D.set("authorization",`Bearer ${L.accessToken}`),y1.set(W.id,L),D},prepareHeaders:async(Z,G,W)=>{if(!JZ(G.url))return;let K=G.oauthAccountId??"main",_;try{let Q=JSON.parse(G.bodyText);if(typeof Q.model==="string")_=Q.model}catch{}let L=await T0(K,W.signal,void 0,_,"cachekeep");if(G.oauthAccountIdentity&&L.accountIdentity!==G.oauthAccountIdentity)throw new x1("credential-changed");let D=L.accessToken;y1.set(W.id,L);try{let Q=JSON.parse(G.bodyText),H=E0(L.accountIdentity);if(Z.delete("anthropic-beta"),o1(Z,D,{body:Q,identity:H}),Z.set("anthropic-beta",U8(Z.get("anthropic-beta"),[e2])),Q.speed==="fast")M9(Z);let q=_4.get(G.id);if(q){let{betas:y,betasHash:p}=await UJ(Z);q.betas=y,q.betasHash=p}}catch{o1(Z,D)}let O=await T0(K,W.signal,void 0,_,"cachekeep");if(O.accountIdentity!==L.accountIdentity||Boolean(O.scopedAttempt)!==Boolean(L.scopedAttempt))throw new x1("credential-changed");if(Z.set("authorization",`Bearer ${O.accessToken}`),y1.set(W.id,O),G.sourceWarm){let Q=R0.sourceWarmForTarget(G.id);if(!Q||Q.oauthAccountId!==G.oauthAccountId||Q.accountIdentity!==void 0&&O.accountIdentity!==Q.accountIdentity){R0.dropSourceWarmForTarget(G.id),$$.untrack(G.id),v.warn("cachekeep","source warm refused: bound account changed",{session:G.id,reason:"source-warm-account-changed"});return}}return Z},validatePrewarm:({target:Z,warmBodyText:G})=>{if(!Z.sourceWarm)return{ok:!0};let W=R0.sourceWarmForTarget(Z.id);if(!W)return $$.untrack(Z.id),{ok:!1,reason:"source-round-ended"};if(W.warmsSinceUserTurn>=O6(W.model))return R0.dropSourceWarmForTarget(Z.id),{ok:!1,reason:"source-warm-idle-cap"};let K=$8(G),_=$8(W.bodyText);if(!K||!_||K!==_)return R0.dropSourceWarmForTarget(Z.id),{ok:!1,reason:"source-prefix-mismatch"};return{ok:!0}}});async function LY(Z){let G=Y$(Z.requestedModel);if(!G)return;let W=u1(Z.sessionId,G),K=R0.sourceWarmFor(Z.recoveryKey);if(!K){$$.untrack(W);return}let _;try{_=await u()}catch{return}if(!$$.track({sessionId:W,url:K.url,headers:new Headers(K.headers),bodyText:K.bodyText,storage:_,cacheMode:"hybrid",oauthAccountId:K.oauthAccountId,...K.accountIdentity!==void 0&&{oauthAccountIdentity:K.accountIdentity},isSubagent:K.subagent??!1,sourceWarm:!0}).tracked)R0.dropSourceWarm(Z.recoveryKey)}async function OY(Z){if(!Y1||!(await Y1()).active)throw Error("Native main OAuth activation is not available");let G=await T0("main",Z);return{...G,credentialAccountId:f$(G.accountIdentity)}}async function NY(){let Z=await OY();if((await K4(Z.accessToken,void 0,Z.credentialAccountId)).stale&&Z.credentialAccountId!==void 0)throw Error("Main account identity changed before the prime refresh");let W=await b.refreshMainWithMetadata(q$,Z.accessToken);return{quota:W.quota,fresh:W.fetched}}async function DY(Z){N$();let G=await u(j),W=G?.accounts.find((_)=>_.id===Z&&k0(_)&&w0(_));if(!W||!G)throw Error(`prime: OAuth account ${Z} is unavailable`);let K=await _J.refreshAccountQuota(W,G);return{quota:K.account.quota??{},fresh:K.fetched}}let BJ=new Map;async function HY(Z){let G=performance.now(),W,K,_,L="",D;try{if(Z==="main"&&(!Y1||!(await Y1()).active))throw Error("Native main OAuth activation is not available");let O=h4(qG,{baseURL:""}),Q=O.url?.toString()??O.input.toString();Q9(Q);let H=await T0(Z,void 0,void 0,e7);if(W=H.accessToken,_=H.scopedAttempt,K=e7,!W)return{ok:!1,error:"prime: no access token available"};let q=t2(),y=E0(H.accountIdentity),p=await R9(JSON.stringify(q),{identity:y}),r=new Headers({"content-type":"application/json"});o1(r,W,{body:JSON.parse(p),identity:y,requestClass:"auxiliary"}),r.delete("content-length"),r.delete("transfer-encoding");let L0=AbortSignal.timeout(30000),y0={method:"POST",headers:r,body:p,signal:L0},A0=await T0(Z,L0,void 0,K);if(A0.accountIdentity!==H.accountIdentity||Boolean(A0.scopedAttempt)!==Boolean(H.scopedAttempt))throw Error("Prime credential authority changed before dispatch");_=A0.scopedAttempt,L=A0.accessToken,r.set("authorization",`Bearer ${L}`);let m0=async()=>{let F0=g9([L],"http");return D=F0,F0.redactResponse(await R4(Q,y0))},Q0=await m0();if(Q0.status===401&&_&&!L0.aborted){let F0;try{F0=await d4(_,"prime",L0)}catch{}if(F0){D?.dispose(),await Q0.body?.cancel().catch(()=>{}),v.info("claustrum","retrying Prime after scoped credential rotation",{accountId:Z,previousVersion:_.recordVersion,newVersion:F0.recordVersion}),A0=await T0(Z,L0,void 0,K);let p0=A0.scopedAttempt;if(!p0||p0.credentialId!==_.credentialId||p0.accountIdentity!==_.accountIdentity||p0.recordVersion<=_.recordVersion)throw Error("Prime vault retry lost its strict newer receipt");_=p0,L=p0.accessToken,r.set("authorization",`Bearer ${L}`),Q0=await m0()}}if(Q0.status===401&&!A0.scopedAttempt&&!L0.aborted){let F0=A0.accessToken,p0=await T0(Z,L0,F0,K).catch(()=>{return});if(p0&&p0.accessToken!==F0&&p0.accountIdentity===H.accountIdentity&&!p0.scopedAttempt){if(D?.dispose(),await Q0.body?.cancel().catch(()=>{}),A0=await T0(Z,L0,void 0,K),A0.scopedAttempt||A0.accountIdentity!==H.accountIdentity)throw Error("Prime local authority changed before retry");L=A0.accessToken,r.set("authorization",`Bearer ${L}`),Q0=await m0()}}let D$=Math.round(performance.now()-G);if(!Q0.ok){let F0;try{F0=await Q0.text().catch(()=>"")||`HTTP ${Q0.status}`}finally{D?.dispose()}if(Q0.status===401&&_)await JJ(_,"direct");return{ok:!1,status:Q0.status,ms:D$,error:F0}}let M$=(await Q0.json().catch(()=>null))?.usage,R$=M$&&(Number.isFinite(M$.input_tokens)||Number.isFinite(M$.output_tokens))?{inputTokens:Number.isFinite(M$.input_tokens)?M$.input_tokens:void 0,outputTokens:Number.isFinite(M$.output_tokens)?M$.output_tokens:void 0}:void 0;return BJ.set(Z,A0),{ok:!0,status:Q0.status,ms:D$,...R$&&{usage:R$}}}catch(O){D?.dispose();let Q=g9([L],"http"),H=Q.redactError(O);return Q.dispose(),{ok:!1,...O instanceof A$&&O.tokenRefreshFailed&&{reason:"token-refresh"},ms:Math.round(performance.now()-G),error:H instanceof Error?H.message:String(H)}}}let J3={storagePath:j,loadStorage:()=>u(j),getAccountFingerprint:async(Z)=>{if(Z==="main"&&(!Y1||!(await Y1()).active))return;let G=await T0(Z),W=G.scopedAttempt??G.localSubject;if(!W)return;let K=await P.getOrCreateAuthLineage(Z,W);return K?K1(K):void 0},refreshQuota:async(Z)=>{if(Z==="main")return NY();return DY(Z)},sendPrime:HY,recordSuccess:async(Z,G)=>{let W=BJ.get(Z);BJ.delete(Z);let K=W?.scopedAttempt??W?.localSubject;if(!K||!await P.incrementPrimeUsage(Z,K,G))throw Error("Prime usage publication lost its native credential fence");let _=(await P.read()).accounts.find((L)=>L.id===Z)?.prime;if(!_)throw Error("Prime usage counters are unavailable after publication");return _},setIntervalImpl:Y.setInterval,clearIntervalImpl:Y.clearInterval,setTimeoutImpl:Y.setTimeout,clearTimeoutImpl:Y.clearTimeout},Z3=X7(j,()=>new e6(J3),{slot:$.directory??"default",rebind:(Z)=>Z.updateOptions(J3)}),C1=Z3.manager;if(c9(z$))C1.start();async function $9(){return e4=await QJ.list($$.trackedSessions()),e4}let Y3=J.cacheKeepAggregateRefreshIntervalMs??1e4,FJ=Y3>0?Y.setInterval(()=>{$9().catch(()=>{})},Y3):void 0;if(FJ?.unref?.(),n9({enabled:p9(z$),mode:g4(z$)}),kZ(qZ(z$)),vZ(RZ(z$)),!process.env.OPENCODE_ANTHROPIC_AUTH_LOG_LEVEL)TG(AZ(z$)??"info");let wJ=null,UY=async()=>{z0?.close(),D1.abort();while(N1.size)await Promise.all([...N1]);try{await Y4(j)}catch(Z){v.warn("claustrum","failed to close scoped runtime",{error:Z instanceof Error?Z.message:String(Z)})}try{b.close()}catch{}try{await VJ?.dispose()}catch(Z){v.warn("quota-header-feed","failed to dispose",{error:Z instanceof Error?Z.message:String(Z)})}try{if(S1)Y.clearInterval(S1),S1=null}catch(Z){v.warn("main-background","failed to stop",{error:Z instanceof Error?Z.message:String(Z)})}try{if(DJ)Y.clearInterval(DJ)}catch(Z){v.warn("fallback-background","failed to stop",{error:Z instanceof Error?Z.message:String(Z)})}try{if(FJ!==void 0)Y.clearInterval(FJ)}catch(Z){v.warn("cachekeep","failed to stop aggregate refresh",{error:Z instanceof Error?Z.message:String(Z)})}try{$$.stop()}catch(Z){v.warn("cachekeep","failed to stop",{error:Z instanceof Error?Z.message:String(Z)})}try{Z3.release()}catch(Z){v.warn("prime","failed to release slot",{error:Z instanceof Error?Z.message:String(Z)})}if(!wJ)return;try{await wJ.release()}catch(Z){v.warn("rpc","failed to stop",{error:Z instanceof Error?Z.message:String(Z)})}},X$={activeId:"main",route:"main"},QY=m8(),b$=new Map;function J9(Z,G){if(b.updateStorage(Z),b.seedMainFromStorage(Z,q$),!G.skipFallbackQuotaSeed)b.seedFallbacksFromAccounts((Z?.accounts??[]).filter(w0));let W=b.getMain(q$),K=b.getLastApiError(),_=Z?.refresh?.mainLastRefreshError,L=Z?.claustrum?.primaryAccount,D=O$(Z)&&!k0(L)?SZ({source:"vault",enabled:L?.enabled,state:L?.state}):void 0;return{main:{quota:W?.quota??null,enabled:L?.enabled,tierLabel:b4(Z?.main?.profile),quotaBackedOff:b.isBackedOff(),quotaBackoffUntil:K?.nextRetryAt,refreshBackedOff:_?k1(_,L4??Z?.mainAccountId,Date.now(),G.mainRefreshToken?K1(G.mainRefreshToken):void 0):!1,refreshBackoffUntil:_?.nextRetryAt,stateLine:D,quotaDated:Boolean(D)},fallbacks:(Z?.accounts??[]).filter((O)=>w0(O)&&(O.enabled!==!1||Boolean(O.claustrumScopedCredentialId))).map((O)=>{let Q=S4(O.id,Z),H=WY(O.id,Z),q=O.claustrumScopedCredentialId&&!Q?SZ({source:"vault",enabled:O.enabled!==!1,state:O.claustrumScopedState}):void 0;return{id:O.id,label:O.label,tierLabel:b4(O.profile),quota:G.skipFallbackQuotaSeed?null:b.getFallback(O.id,O)?.quota??O.quota??null,needsReauth:O.lastRefreshError!=null&&k1(O.lastRefreshError,O.id,Date.now(),K1(O.refresh))&&V1(O.lastRefreshError),vaultReauth:H==="on-vault-reauth",vaultServed:Q,custodyState:H,enabled:O.enabled!==!1,stateLine:q,quotaDated:Boolean(q)}}),activeId:G.activeId,route:G.route,relay:w6(Z?.relay),fastMode:MZ(),cacheKeep:{enabled:O8(Z),window:L8(Z)?"always":Z?.cacheKeep?.startHour!=null&&Z?.cacheKeep?.endHour!=null?`${Z.cacheKeep.startHour}-${Z.cacheKeep.endHour}`:void 0,trackedSessions:e4.length},prime:c9(Z)?{enabled:!0,accounts:C1.stats(Z)}:void 0,fableRecoveries:b$.size>0?[...b$.values()]:void 0,lastUpdated:Date.now()}}function g$(Z,G,W){let K=G.routingAuthoritative!==!1;if(K)X$={activeId:G.activeId,route:G.route};function _(L){return c8(L,QY,{routingAuthoritative:K,resolvePreservedRouting:K?void 0:async(D)=>{let O=await kG(D,()=>u(j),{activeId:L.activeId,route:L.route}),Q=await dZ(O.freshStorage,W);return{activeId:O.activeId,route:O.route,state:J9(Q,{...G,activeId:O.activeId,route:O.route})}},onRoutingResolved:K?void 0:(D)=>{X$=D}}).catch((D)=>v.warn("sidebar","state write failed",{error:D instanceof Error?D.message:String(D)}))}if(K){let L=uZ(Z);if(L.length>0)return dZ(Z,W,L).then((D)=>_(J9(D,G))).catch(()=>{return v.debug("quota","failed to recheck account profile for sidebar"),_(J9(Z,G))})}return _(J9(Z,G))}async function X3(){return{storage:await u(j),access:void 0}}async function m1(){await $9().catch(()=>{});let{storage:Z,access:G}=await X3();g$(Z,{activeId:X$.activeId,route:X$.route,mainAccessToken:G,mainRefreshToken:void 0,routingAuthoritative:!1})}function BY(Z,G,W){if(!G)return;if(Z?.quota?.enabled!==!0)return;let K=W?.quotaKey??q$;if(b.getMain(K))return;if(CJ)return;CJ=!0,b.refreshMain(K,G,W?.generation).then(()=>m1()).catch(()=>{}).finally(()=>{CJ=!1})}let H1=null,Z9,L4,q$,O4,p1,TJ,G3=0,Y9=new Map,CJ=!1,S1=null,X9=0;function W3(Z){let G=Z?.refresh?.refreshBeforeExpiryMinutes??RG;return Math.max(u8,G)*60000}function FY(Z){return Z?.refresh?.enabled!==!1}async function z3(Z=!1){let G=new Map;if(Z){if(Y1&&(await Y1()).active)try{await P.fetchQuota("main")}catch{G.set("main","Native primary usage refresh unavailable")}await T1(!0)}let W=await s4(AbortSignal.timeout(3000));b.updateStorage(W.policyStorage),b.seedMainFromStorage(W.policyStorage,q$),b.seedFallbacksFromAccounts(W.policyStorage.accounts.filter(w0));let K=[],_=W.accounts.find((D)=>D.id==="main"&&D.type==="oauth");if(_)K.push({name:_.label??"OpenCode anthropic",role:"main",quota:_.quota,tierLabel:b4(_.profile),error:G.get("main")??_.lastQuotaRefreshError?.message});K.push(...a2(W.policyStorage,G));let L=Math.max(0,...W.accounts.map((D)=>I1(D.quota)));return s2({accounts:K,refreshedAt:L||void 0})}async function SJ(Z){await $9().catch(()=>{}),await g$(Z,{activeId:X$.activeId,route:X$.route,routingAuthoritative:!1})}function N4(Z,G,W,K){if(b$.delete(Z.sessionId),b$.set(Z.sessionId,{...Z,changedAt:Date.now()}),b$.size>128){let _=b$.keys().next().value;if(_)b$.delete(_)}if(g$(G,{activeId:X$.activeId,route:X$.route,mainAccessToken:W.access,mainRefreshToken:W.refresh,routingAuthoritative:!1}),K)K3(Z.sessionId,K)}function V3(Z,G){let W=J1.get(Z)??new Set;W.delete(G),W.add(G);while(W.size>4){let K=W.values().next().value;if(typeof K!=="string")break;W.delete(K)}J1.delete(Z),J1.set(Z,W);while(J1.size>128){let K=J1.keys().next().value;if(typeof K!=="string")break;J1.delete(K)}}function j3(Z,G){return typeof G==="string"&&J1.get(Z)?.has(G)===!0}function K3(Z,G){if(T9(Z))return;P$.delete(Z),P$.set(Z,[G]);while(P$.size>128){let W=P$.keys().next().value;if(W)P$.delete(W);else break}if(V$.has(Z))EJ(Z)}function EJ(Z,G=0){if(!P$.has(Z)||z4.has(Z))return;z4.set(Z,G);let W=()=>{if(z4.get(Z)!==G)return;z4.delete(Z),wY(Z,G)};if(G===0)setImmediate(W);else setTimeout(W,bG*G)}function AJ(Z,G){if(G+1<hG)EJ(Z,G+1)}async function wY(Z,G){if(!V$.has(Z)||!P$.has(Z))return;let W=$.client.session;if(typeof W?.status==="function")try{let K=await Promise.resolve(W.status()),_=K!==null&&typeof K==="object"?K:void 0,L=_&&Object.hasOwn(_,"data")?_.data:_;if(L===null||typeof L!=="object"||Array.isArray(L)){AJ(Z,G);return}let D=L[Z];if(D!==void 0&&(!D||typeof D!=="object"||D.type!=="idle")){AJ(Z,G);return}}catch{AJ(Z,G);return}if(!V$.has(Z))return;await TY(Z)}function TY(Z){let G=i4.get(Z);if(G)return G;let W=(async()=>{while(!0){let K=P$.get(Z),_=K?.[0];if(!_){P$.delete(Z);return}try{let L=()=>P$.get(Z)===K&&K[0]===_;if(!await v8($,Z,_,{noReply:!0,beforeActiveAssistant:!0,canSend:()=>V$.has(Z)&&L(),onPreparedMessageId:(O)=>V3(Z,O),latestPreparedMessageId:()=>[...J1.get(Z)??[]].at(-1)})){if(V$.has(Z)&&!L())continue;return}if(L())K.shift()}catch(L){v.warn("fable-fallback","Desktop notification failed",{session:Z,error:L instanceof Error?L.message:String(L)})}}})();return i4.set(Z,W),W.finally(()=>{if(i4.get(Z)===W)i4.delete(Z)}),W}function CY(Z,G,W,K){if(G.fallback&&G.targetModel){let _=d$.get(Z.recoveryKey);d$.delete(Z.recoveryKey),d$.set(Z.recoveryKey,G.targetModel);while(d$.size>128){let D=d$.keys().next().value;if(D)d$.delete(D);else break}let L=b$.get(Z.sessionId);if(_===G.targetModel&&L?.mode==="server"&&Y$(L.requestedModelId)===Y$(Z.requestedModel)&&L.targetModelId===G.targetModel)return;v.info("fable-fallback","Anthropic server-side safety fallback active",{session:Z.sessionId,requestedModel:Z.requestedModel,targetModel:G.targetModel,handoff:G.handoff}),N4({sessionId:Z.sessionId,mode:"server",remaining:0,requestedModelId:Z.requestedModel,targetModelId:G.targetModel},W,K,oG(Z.requestedModel,G.targetModel));return}if(G.stopReason==="refusal"||!d$.delete(Z.recoveryKey))return;v.info("fable-fallback","Anthropic server-side safety fallback ended",{session:Z.sessionId,requestedModel:Z.requestedModel}),N4({sessionId:Z.sessionId,mode:"fable",remaining:0,requestedModelId:Z.requestedModel},W,K,rG(Z.requestedModel))}function SY(Z,G,W){if(!Z)return;for(let K of d$.keys())if(K.startsWith(`${Z}\x00`))d$.delete(K);if(!b$.delete(Z))return;g$(G,{activeId:X$.activeId,route:X$.route,mainAccessToken:W.access,mainRefreshToken:W.refresh,routingAuthoritative:!1})}async function PJ(Z){let G=JG(Z);if(G.type==="enable"||G.type==="disable"){let L=G.type==="enable",D=await l4(L),O=g4(D);return n9({enabled:L,mode:O}),v.info("commands","cache enabled changed",{enabled:L}),CZ({argumentsText:Z,enabled:L,mode:O,settingsPath:await P.getSettingsPath()})}if(G.type==="mode"){let L=await L1(G.mode),D=p9(L);return n9({enabled:D,mode:G.mode}),v.info("commands","cache mode changed",{mode:G.mode}),CZ({argumentsText:Z,enabled:D,mode:G.mode,settingsPath:await P.getSettingsPath()})}let W=await u(j),K=p9(W),_=g4(W);return n9({enabled:K,mode:_}),CZ({argumentsText:Z,enabled:K,mode:_})}async function D4(Z){let G=ZG(Z),W=await u(j);if(G.type==="window")W=await B1(G.startHour,G.endHour),v.info("commands","cachekeep schedule changed",{schedule:`${G.startHour}-${G.endHour}`});else if(G.type==="always")W=await u4(),v.info("commands","cachekeep schedule changed",{schedule:"always"});else if(G.type==="disable")W=await b1(!1),v.info("commands","cachekeep enabled changed",{enabled:!1});else if(G.type==="subagents")W=await t9(G.enabled),v.info("commands","cachekeep subagents changed",{subagents:G.enabled});let K=K8(W),_=await $9(),L=_.length?Math.min(..._.map((D)=>D.nextPrewarmAt)):void 0;return C6({argumentsText:Z,enabled:N8(W),always:L8(W),window:K,hybridActive:O8(W),trackedSessions:_.length,trackedSessionDetails:_,nextPrewarmAt:L})}async function _3(Z){let G=YG(Z);if(G.type==="enable"||G.type==="disable"){let _=G.type==="enable";return await e9(_),kZ(_),v.info("commands","dump changed",{enabled:_}),Z8({argumentsText:Z,enabled:_,settingsPath:await P.getSettingsPath()})}let W=await u(j),K=qZ(W);return kZ(K),Z8({argumentsText:Z,enabled:K})}async function L3(Z){let G=XG(Z);if(G.type==="enable"||G.type==="disable"){let _=G.type==="enable";return await $1(_),vZ(_),v.info("commands","fast mode changed",{enabled:_}),Y8({argumentsText:Z,enabled:_,settingsPath:await P.getSettingsPath()})}let W=await u(j),K=RZ(W);return vZ(K),Y8({argumentsText:Z,enabled:K})}async function O3(Z,G){if(GG(Z).type==="fire"){if(!G)return`## Claude Start Failed
26
+
27
+ - OpenCode did not provide a session ID.`;try{return await s3($.client,G),G8({argumentsText:Z}).text}catch(K){return`## Claude Start Failed
28
+
29
+ - ${K instanceof Error?K.message:String(K)}`}}return G8({argumentsText:Z}).text}async function qJ(Z,G){let W=VG(Z);if(W.type==="mode")return await k$(W.mode,j),v.info("commands","routing mode changed",{mode:W.mode}),z8({argumentsText:Z,mode:W.mode});if(W.type==="reset"&&G)await(await yZ()).router.clear(G),v.info("commands","sticky routing assignment reset");let K=await u(j);return z8({argumentsText:Z,mode:_1(K)})}async function N3(Z){let G=WG(Z);if(G.type==="level")return await $J(G.level),W8({argumentsText:Z,level:G.level,settingsPath:await P.getSettingsPath()});let W=await u(j),K=AZ(W)??"info";return W8({argumentsText:Z,level:K,settingsPath:await P.getSettingsPath()})}async function D3(Z){let G=zG(Z),W=c9(await u(j)),K=W;if(G.type==="enable"){if(K=!0,!W)await h0(!0,j),C1.start(),v.info("commands","prime changed",{enabled:!0})}else if(G.type==="disable"){if(K=!1,W)await h0(!1,j),C1.stop(),v.info("commands","prime changed",{enabled:!1})}if(G.type==="enable"||G.type==="disable"){let L=await u(j);if(L&&H1)try{let D=await H1().catch(()=>{return});await g$(L,{activeId:X$.activeId,route:X$.route,mainAccessToken:D?.access,routingAuthoritative:!1})}catch(D){v.warn("sidebar","prime-toggle sidebar write failed",{error:D instanceof Error?D.message:String(D)})}}let _=await u(j);return S6({argumentsText:Z,enabled:K,accounts:C1.stats(_)}).text}async function H4(Z,G,W){let K=W??$G(Z);if(K.type==="add-apikey"){if(!K.apiKey)return{text:"API key is required",accounts:t$(await u(j)??W1())};let H=K.label?.trim()||void 0,q=Date.now(),y=K.baseURL?.trim()||"https://api.kie.ai/claude";if(!xZ(y))return{text:"Invalid base URL. Must be an http(s) URL without embedded credentials.",accounts:t$(await u(j)??W1())};let p=K.authHeader??"authorization-bearer",r={id:H||UZ(),label:H||void 0,type:"api",apiKey:K.apiKey,baseURL:y,authHeader:p,enabled:!0,addedAt:q,lastUsed:q};await P.addApi({routeId:r.id,apiKey:K.apiKey,label:r.label,baseURL:y,authHeader:p});let L0=await u(j);await SJ(L0);let y0=t$(L0??{version:1,accounts:[]});return{text:`API key account "${r.label??r.id}" added.`,accounts:y0}}if(K.type==="add-oauth-start"){if(await f1("opencode",process.env)!=="local")throw Error("Disconnect from the vault first.");let H=await X("max"),q={state:H.state,verifier:H.verifier,redirectUri:H.redirectUri,createdAt:Date.now()};return l(G??"default",q),{text:`Open this URL in your browser:
30
+ ${H.url}`,knobs:{oauthUrl:H.url},accounts:t$(await u(j)??W1())}}if(K.type==="add-oauth-finish"){let H=G??"default",q=i(H);if(!q)return{text:"OAuth session expired. Please start again.",accounts:t$(await u(j)??W1())};try{let y=await TZ(K.code,q.verifier,q.redirectUri,q.state);if(y.type==="failed")return{text:"OAuth authentication failed. Please check the code and try again.",accounts:t$(await u(j)??W1())};let p=Date.now(),r={id:UZ(),type:"oauth",authLineageId:UZ(),label:K.label||void 0,access:y.access,refresh:y.refresh,expires:y.expires,enabled:!0,addedAt:p,lastUsed:p,lastRefreshedAt:p};N$(),await P.loginOAuth({routeId:r.id,label:r.label,credential:{access:y.access,refresh:y.refresh,expires:y.expires}});let L0=await u(j);return await SJ(L0),{text:"OAuth account added.",accounts:t$(L0??W1())}}catch{return{text:"OAuth exchange failed due to a network error. Please try again.",accounts:t$(await u(j)??W1())}}finally{A.delete(H)}}let _=await u(j);if(K.type==="status"&&_){let H;if(H1)try{let q=await H1();if(q.type==="oauth")H=O4??q.access}catch{}_=await s8(_,H,AbortSignal.timeout(3000),p1)}let L=K.type==="status"?await H3(_):void 0,D=await T6({argumentsText:Z,storage:_??{version:1,accounts:[]},path:j,claustrum:K.type==="status"&&!L?await J8(h8()):void 0,statusProjection:L,transition:async(H)=>({text:H==="claustrum"?"Run `npx @cortexkit/opencode-anthropic-auth setup` to enroll and activate scoped custody safely while OpenCode is stopped.":"Local exit requires replacing the OpenCode auth tombstone with a verified local OAuth login while OpenCode is stopped. Do not change custody mode alone."}),resetEnrollment:async()=>{switch(await HG(m9("opencode"),QZ)){case"reset":return{text:"Terminal Claustrum enrollment state cleared. Run setup to enroll OpenCode again."};case"idle":return{text:"No Claustrum enrollment state to reset. Run setup to enroll OpenCode."};case"refused-pending":return{text:"An enrollment request may still be in progress. Quit OpenCode and run setup again; it picks up the same request."};case"refused-approved":return{text:"Claustrum enrollment is already approved. Revoke it in Claustrum before removing local enrollment state."};case"busy":return{text:"Another process is updating Claustrum enrollment; retry shortly."}}}});if(D.updated){if(D.updated.action==="enable"||D.updated.action==="disable")await v$(D.updated.id,D.updated.action==="enable",j);else if(D.updated.action==="remove")await J4(D.updated.id,j);else if(D.updated.action==="reorder")await E$(D.updated.newOrder??D.updated.previousOrder??[],j,D.updated.id);else if(D.updated.action==="reset-backoff")await G4("main"),b.clearMainBackoff(),v.info("commands","native main refresh and quota backoff cleared");let H=await u(j);if(H1)try{let q=await H1();g$(H,{activeId:X$.activeId,route:X$.route,mainAccessToken:q.access,mainRefreshToken:q.refresh,routingAuthoritative:!1})}catch{}}let O=await u(j),Q=t$(O??{version:1,accounts:[]});return{text:D.text,accounts:Q,statusProjection:L}}async function H3(Z){let G=Z??await u(j),W=G??W1(),K=t$(W).map((O)=>{let Q=W.accounts.find((y)=>y.id===O.id),H=O.role==="main"?"na":Q&&w0(Q)&&S4(Q.id,W)?"on":"off",q=yJ(O,G);return{id:O.id,label:O.label,role:O.role,enabled:O.enabled,quotaPercent:O.quotaPercent,...O.tierLabel&&{tierLabel:O.tierLabel},claustrumGate:H,custodyState:q,vaultServed:q==="on-vault-served",vaultReauth:q==="on-vault-reauth"}}),_=await J8(h8()),L=y4(W),D=L==="claustrum"?await F8(m9("opencode"),QZ):void 0;return{accounts:K,claustrumDetection:_.status,custodyMode:L,...D&&{claustrumEnrollment:D}}}async function EY(Z,G,W){if(Z==="claude-quota")return{command:Z,text:await z3(),knobs:{}};if(Z==="claude-start"){let O=await O3(G,W);return{command:Z,text:O,knobs:{}}}if(Z==="claude-logging"){let O=await N3(G),Q=await u(j);return{command:Z,text:O,knobs:{level:AZ(Q)??"info"}}}if(Z==="claude-account"){let O=await H4(G,W),Q=O.statusProjection??await H3(),H={accounts:Q.accounts,claustrumDetection:Q.claustrumDetection,custodyMode:Q.custodyMode,custodyModeKnown:!0,...Q.claustrumEnrollment&&{enrollmentStatus:V8(Q.claustrumEnrollment,Q.accounts.some((q)=>q.role==="main"&&q.vaultServed)).join(`
31
+ `)}};if("knobs"in O&&O.knobs)Object.assign(H,O.knobs);return{command:Z,text:Z9?`${O.text}
32
+
33
+ - Custody startup mismatch: ${Z9}`:O.text,knobs:H}}if(Z==="claude-routing"){let O=await qJ(G,W),Q=await u(j);return{command:Z,text:O,knobs:{mode:_1(Q)}}}if(Z==="claude-fast"){let O=await L3(G),Q=await u(j);return{command:Z,text:O,knobs:{enabled:RZ(Q)}}}if(Z==="claude-dump"){let O=await _3(G),Q=await u(j);return{command:Z,text:O,knobs:{enabled:qZ(Q)}}}if(Z==="claude-cache"){let O=await PJ(G),Q=await u(j);return{command:Z,text:O,knobs:{enabled:p9(Q),mode:g4(Q)}}}if(Z==="claude-cachekeep"){let O=await D4(G),Q=await u(j);return{command:Z,text:O,knobs:{window:K8(Q)}}}if(Z==="claude-prime"){let O=await D3(G),Q=await u(j),H=c9(Q);return{command:Z,text:O,knobs:{enabled:H,accounts:C1.stats(Q)}}}if(Z!=="claude-killswitch")throw Error(`Unhandled command modal: ${Z}`);let K=await u(),_=EZ(K),L=(K?.accounts??[]).filter((O)=>O.enabled!==!1).map((O)=>O.id),D=X8({argumentsText:G,config:_,accountIds:L});if(D.updatedConfig)await $4(D.updatedConfig);return{command:Z,text:D.text,knobs:{config:EZ(await u()),accountIds:L}}}async function AY(Z){return{text:"Open /claude to manage native Claude settings.",knobs:{}}}let PY=async(Z,G)=>{if(G.signal?.aborted)throw G.signal.reason??Error("Menu action aborted");let W;switch(Z.action){case"enable":case"disable":await P.setEnabled(Z.values.id,Z.action==="enable"),W=`Account ${Z.values.id} ${Z.action}d.`;break;case"remove":await P.remove(Z.values.id),W=`Account ${Z.values.id} removed.`;break;case"move-up":case"move-down":{let K=(await P.read()).accounts.filter((D)=>D.id!=="main").map((D)=>D.id),_=K.indexOf(Z.values.id);if(_<0)throw Error("Native account not found");let L=_+(Z.action==="move-up"?-1:1);if(L>=0&&L<K.length){let D=K[L];if(D===void 0)throw Error("Native account order changed");K[L]=Z.values.id,K[_]=D,await P.reorder(K,Z.values.id)}W="Native account order updated.";break}case"add-apikey":W=(await H4("",Z.sessionId,{type:"add-apikey",apiKey:Z.values.apiKey,label:Z.values.label??void 0,baseURL:Z.values.baseURL??void 0,authHeader:Z.values.authHeader??void 0})).text;break;case"add-oauth-start":W=(await H4("",Z.sessionId,{type:"add-oauth-start"})).text;break;case"add-oauth-finish":W=(await H4("",Z.sessionId,{type:"add-oauth-finish",...Z.values})).text;break;case"reset-backoff":{await G4("main",G.signal),b.clearMainBackoff(),W="Native main refresh and quota backoff cleared; credential validation and quarantine are unchanged.";break}case"enrollment-reset":W=(await H4("enrollment-reset")).text;break;case"quota-refresh":W=await z3(!0);break;case"routing-mode":W=await qJ(Z.values.mode);break;case"routing-reset":W=await qJ("reset",Z.sessionId);break;case"cache-on":case"cache-off":W=await PJ(Z.action==="cache-on"?"on":"off");break;case"cache-mode":W=await PJ(`mode ${Z.values.mode}`);break;case"cachekeep-always":W=await D4("always");break;case"cachekeep-off":W=await D4("off");break;case"cachekeep-window":W=await D4(`${Z.values.startHour}-${Z.values.endHour}`);break;case"cachekeep-subagents":W=await D4(`subagents ${Z.values.enabled}`);break;case"dump-on":case"dump-off":W=await _3(Z.action==="dump-on"?"on":"off");break;case"fast-on":case"fast-off":W=await L3(Z.action==="fast-on"?"on":"off");break;case"prime-on":case"prime-off":W=await D3(Z.action==="prime-on"?"on":"off");break;case"logging-level":W=await N3(Z.values.level);break;case"killswitch-on":case"killswitch-off":case"killswitch-set":{let _=(await P.read()).accounts.filter((L)=>L.id!=="main").map((L)=>L.id);await P.updateSettings((L)=>{let D=EZ({...L,version:1,accounts:[]});if(Z.action!=="killswitch-set"){let H=X8({argumentsText:Z.action==="killswitch-on"?"on":"off",config:D,accountIds:_});return{...L,killswitch:H.updatedConfig??D}}let O={...D.accounts},Q={...D,enabled:!0,accounts:O};for(let H of Z.values.entries){let q={five_hour:H.fh,seven_day:H.sd,...H.scoped===void 0?{}:{scoped:H.scoped}};if(H.account==="main"||H.account==="all")Q.main=q;if(H.account==="all")for(let y of _)O[y]=q;else if(H.account!=="main")O[H.account]=q}return{...L,killswitch:Q}}),W="Native killswitch policy updated.";break}case"start-fire":W=await O3("",Z.sessionId);break;default:throw Error(`Unsupported native menu action: ${Z}`)}return SJ(await u()).catch(()=>{}),{ok:!0,text:W.split(`
34
+ `).filter((K)=>!K.includes("/claude-")).join(`
35
+ `)}},qY=async(Z,G)=>{if(Z==="account"){let _=await s4(AbortSignal.timeout(3000)),L=_.mode==="claustrum"?await F8(m9("opencode"),QZ):void 0;return[`Custody mode: ${_.mode}`,...L?V8(L,_.accounts.some((D)=>D.id==="main"&&D.source==="vault"&&k0(D))):[],..._.accounts.map((D)=>`${D.label??D.id} [${D.id==="main"?"main":"fallback"}] ${D.enabled?"enabled":"disabled"} — ${D.source}${D.state?` (${SZ(D)})`:""}${b4(D.profile)?` — ${b4(D.profile)}`:""}`)].join(`
36
+ `)}return(await EY({account:"claude-account",quota:"claude-quota",routing:"claude-routing",killswitch:"claude-killswitch",cache:"claude-cache",cachekeep:"claude-cachekeep",dump:"claude-dump",logging:"claude-logging",fast:"claude-fast",prime:"claude-prime"}[Z],"",G.sessionId)).text.split(`
37
+ `).filter((_)=>!_.includes("/claude-")).join(`
38
+ `)},MJ=new Map;function U3(Z){let G=T9(Z),W=MJ.get(Z);if(!W||W.interactive!==G)W={interactive:G,command:t3({host:"opencode",dispatch:PY,readStatus:qY,readAccounts:()=>P.read(),readSeparateHostLoginNotice:async()=>{if(await f1("opencode")!=="local")return!1;let K=await P.read(),_=B8(await w8(g));return K.mode==="local"&&(_==="committed"||_==="retired")&&T8(K)&&t4(await a4?.())},interactive:G})},MJ.set(Z,W);return W.command}function MY(Z,G=10){let W=Math.max(0,Math.min(Math.round(Z/100*G),G));return"█".repeat(W)+"░".repeat(G-W)}function G9(Z,G){return`${Z} ${MY(G)} ${String(Math.round(G)).padStart(3)}%`}function Q3(Z){if(!Z)return"";let G=new Date(Z).getTime();if(Number.isNaN(G))return"";let W=G-Date.now();if(W<=0)return"resets now";let K=Math.floor(W/60000);if(K<1)return"resets <1m";if(K<60)return`resets ${K}m`;let _=Math.floor(K/60),L=K%60;return L>0?`resets ${_}h${L}m`:`resets ${_}h`}function RY(Z,G,W){let K=[],_=0;if(Z){let{five_hour:O,seven_day:Q}=Z;if(O||Q){let q=W==="main"?"active":"idle",y=Q3(O?.resetsAt),p=[`main · ${q}${y?` (${y})`:""}`];if(O)p.push(G9("5h",O.usedPercent)),_=Math.max(_,O.usedPercent);if(Q)p.push(G9("7d",Q.usedPercent)),_=Math.max(_,Q.usedPercent);K.push(p.join(`
39
+ `))}}if(G?.length)for(let O of G){let Q=O.quota;if(!Q)continue;let{five_hour:H,seven_day:q}=Q;if(!H&&!q)continue;let y=O.label||"alt",r=W===O.id?"active":"idle",L0=Q3(H?.resetsAt),y0=[`${y} · ${r}${L0?` (${L0})`:""}`];if(H)y0.push(G9("5h",H.usedPercent)),_=Math.max(_,H.usedPercent);if(q)y0.push(G9("7d",q.usedPercent)),_=Math.max(_,q.usedPercent);K.push(y0.join(`
40
+ `))}if(!K.length)return;let L=K.join(`
41
+
42
+ `),D=_>=90?"error":_>=70?"warning":"info";z.tui?.showToast?.({body:{title:"Claude Quota",message:L,variant:D,duration:D==="error"?8000:5000}})?.catch?.(()=>{})}if($.directory){let Z=g8($.directory);try{wJ=await w7(Z,()=>F7({dir:Z,drain:Q7,apply:AY,applyMenu:(G)=>U3(G.sessionId??"").apply(G)}))}catch{v.warn("rpc","native menu server unavailable")}}let B3={"experimental.chat.messages.transform":async(Z,G)=>{let W=G.messages;g1.observeMessages(W);let K=p3(W);if(K){w1.record(K);return}let _=W.findLast((O)=>O.info?.role==="user"),L=_?.info?.sessionID,D=_?.info?.id;if(typeof L==="string"&&typeof D==="string")w1.clear(L,D)},"chat.message":async({sessionID:Z},G)=>{XJ.observeSyntheticMessage({sessionId:Z,messageId:G.message.id,parts:G.parts})},"chat.headers":async({sessionID:Z,agent:G,message:W},K)=>{if(W7(G))K.headers[ZZ]="auxiliary";XJ.markHeaders({sessionId:Z,messageId:W.id,headers:K.headers}),w1.markHeaders({sessionId:Z,messageId:W.id,headers:K.headers}),g1.markHeaders({sessionId:Z,messageId:W.id,headers:K.headers})},event:async({event:Z})=>{let G=Z,W=G.properties?.info,K=G.properties?.sessionID??W?.sessionID??W?.id;if(!K)return;if(G.type==="message.updated"&&W?.role==="user"&&!j3(K,W.id))if(typeof W.id==="string"){if(GJ.set(K,W.id),V$.has(K)&&n4.get(K)!==W.id)V$.delete(K)}else V$.delete(K);if(G.type==="session.status"&&G.properties?.status?.type!=="idle")V$.delete(K);if(G.type==="session.idle"){let _=GJ.get(K);if(_)n4.set(K,_);else n4.delete(K);V$.add(K);while(V$.size>128){let L=V$.values().next().value;if(L)V$.delete(L);else break}EJ(K)}if(G.type==="session.deleted"||G.type==="message.removed")g1.clearSession(K);if(G.type==="session.deleted"){R0.clearSession(K),YJ(K),MJ.delete(K),A.delete(K),XJ.clearSession(K),b$.delete(K),P$.delete(K),V$.delete(K),GJ.delete(K),n4.delete(K),J1.delete(K);for(let _ of h$.keys())if(_.startsWith(`${K}\x00`))h$.delete(_);z4.delete(K)}},config:async(Z)=>{let G={...Z.command??{}};for(let W of b8)delete G[W];Z.command={...G,claude:{template:"claude",description:"Manage Claude accounts, quotas, routing, and cache settings."}}},"experimental.chat.system.transform":async(Z,G)=>{if(!cG(Z))return;lG(G.system)},provider:{id:"anthropic",async models(Z,G){let W=eG(aG(Z.models));if(G.auth?.type!=="oauth"||!c6(z$??{}))return W;return $W(W)}},"command.execute.before":async(Z)=>{if(Z.command!=="claude")return;let G=await U3(Z.sessionID).open(Z.sessionID),W=T9(Z.sessionID),K=!1;if(W)YZ(G,Z.sessionID);else if(!XW()&&!U7(Z.sessionID))W=await H7(G,Z.sessionID,{timeoutMs:J.tuiPickupTimeoutMs??JW,setTimeout:Y.setTimeout,clearTimeout:Y.clearTimeout}),K=!W;if(!W){let _=[...K?[YW(),""]:[],G.menu.title,...G.menu.sections.flatMap((L)=>[`
43
+ ## ${L.title}`,...L.lines,...L.items.map((D)=>`${D.label}${D.detail?` — ${D.detail}`:""}`)])].join(`
44
+ `);await v8($,Z.sessionID,_)}pG()},auth:{provider:"anthropic",async loader(Z,G){Y1=async()=>{let Q=await Z();return{type:Q.type,active:PZ(Q,"anthropic")}},a4=Z;let W=await Z();if(W.type!=="oauth")return{};let K=await f1("opencode").catch(()=>{return});if(!lZ&&PZ(W,"anthropic")&&process.env.OPENCODE_ANTHROPIC_AUTH_DISABLE_PROFILE_HYDRATION!=="1"){lZ=!0;let Q=s4(D1.signal).then((H)=>{if(!D1.signal.aborted)return g$(H.policyStorage,{...X$,routingAuthoritative:!1})}).catch(()=>{if(!D1.signal.aborted)v.debug("quota","startup account profile hydration failed")});N1.add(Q),Q.then(()=>N1.delete(Q))}function _(Q,H=!1){if(!PZ(Q,"anthropic")&&!(H&&t4(Q)))throw Error("Native OAuth requires inert OpenCode activation; run offline setup")}async function L(Q){_(await Z(),Q&&await f1("opencode")==="local")}let D=async(Q,H,q=!1)=>{let y=await Z();if(y.type!=="oauth")return{type:y.type,access:"",expires:0,refresh:void 0,nativeAccountIdentity:void 0,nativeRoutingLineage:void 0,nativeLocalSource:void 0,nativeScopedAttempt:void 0,modelDenied:!1,credentialUnavailable:!1,credentialFailure:void 0,deferred:!1};let p=await f1("opencode");if(p==="claustrum"&&!jY(y))throw Error("This host uses the credential vault, but OpenCode holds a separate Anthropic login. Remove it and choose the vault login, or disconnect from the vault.");N$();let r=await OG(P,H),L0=p==="claustrum"?"committed":B8(await w8(g)),y0=T8(r);if(_(y,p==="local"&&(L0==="committed"||L0==="retired")&&y0),p==="claustrum"&&!r.accounts.some((x0)=>x0.type==="oauth"&&k0(x0)))throw new IZ;let A0=M3(r.policyStorage);try{R3({mode:p==="claustrum"?"C":"L",main:gJ(y),fallbacks:p==="claustrum"?"T":A0.fallbacks,evidence:"V",authority:L0,localOAuthServable:y0}),Z9=void 0}catch(x0){if(x0 instanceof E4)Z9=x0.verdict;throw x0}b0=r.policyStorage;let m0=r.accounts.find((x0)=>x0.id==="main"),Q0=m0?.binding,D$=m0?W$(m0,r.policyStorage):void 0,U1=D$&&D$!==m0?.quota?{...r.policyStorage,quota:{...r.policyStorage.quota,mainQuota:D$}}:r.policyStorage,M$=o("main",O0(Q0),m0?.accountIdentity,r.policyStorage),R$=Boolean(Q0&&M$?.lineage===O0(Q0)&&M$?.generalExhausted===!0);if(m0&&Q0&&(!v0||Q0.rowId!==v0.rowId||Q0.credentialEpoch>v0.credentialEpoch))b.clearMain(),b.setMainQuotaAccountIdentity(m0.accountIdentity),v0={rowId:Q0.rowId,credentialEpoch:Q0.credentialEpoch};if(q&&(_1(r.policyStorage)==="fallback-first"||mZ(U1,m0?.accountIdentity,R$))){let x0=r.accounts.find((_$)=>_$.id==="main");return H?.throwIfAborted(),{type:"oauth",access:"",expires:0,refresh:void 0,nativeAccountIdentity:x0?.accountIdentity,nativeRoutingLineage:x0?.binding?O0(x0.binding):void 0,nativeLocalSource:void 0,nativeScopedAttempt:void 0,modelDenied:!1,credentialUnavailable:!1,credentialFailure:void 0,deferred:!0}}let F0,p0,H$,n$;try{F0=await T0("main",H,void 0,Q,"serve",r)}catch(x0){if(x0 instanceof X4)throw x0;if(R1(x0))throw x0;if(x0 instanceof u$){p0=x0.account;let _$=v6(p0.quota,Q);if(_$!==void 0&&(!Number.isFinite(_$.checkedAt)||(_$.checkedAt??0)+x0.checkIntervalMs<=Date.now())||!fZ(p0.quota)&&!d9(p0.quota,Q))try{await P.fetchQuota("main",void 0,H),F0=await T0("main",H,void 0,Q),p0=void 0}catch(o$){if(R1(o$))throw o$;if(o$ instanceof u$)p0=o$.account;else if(o$ instanceof A$)H$=o$.account,n$=o$}}else if(x0 instanceof A$)H$=x0.account,n$=x0}return H?.throwIfAborted(),{type:"oauth",access:F0?.accessToken??"",expires:F0?.expires??0,refresh:void 0,nativeRoutingLineage:B0(F0?.localSubject,F0?.scopedAttempt)??(m0?.binding?O0(m0.binding):void 0),nativeAccountIdentity:F0?.accountIdentity??p0?.accountIdentity??H$?.accountIdentity,modelDenied:Boolean(p0),credentialUnavailable:Boolean(H$),credentialFailure:n$,deferred:!1,nativeLocalSource:F0?.localSource,nativeScopedAttempt:F0?.scopedAttempt}};H1=D;let O={type:"oauth",access:"",expires:0};if(O.type==="oauth"){let y=function(){if(S1)Y.clearInterval(S1);let U=async()=>{try{let B=await u(j);if(!FY(B))return;let I=await D();if(I.type!=="oauth")return;if(I.nativeLocalSource==="rotated"||I.nativeLocalSource==="adopted")return;if(I.expires&&I.expires-Date.now()>W3(B))return;await q()}catch{v.warn("refresh","native main OAuth background refresh unavailable")}};S1=Y.setInterval(()=>{U()},MG+k8(x8)),S1.unref?.()},r=function(U,B){if(U instanceof Request&&U.body)return!1;return B==null||typeof B==="string"},L0=function(U){if(typeof U!=="string")return;try{let B=JSON.parse(U);return typeof B.model==="string"?B.model:void 0}catch{return}},y0=function(U){return U.has("x-parent-session-id")},A0=function(U){let B;try{B=JSON.parse(U)}catch{return!1}if(typeof B!=="object"||B===null)return!1;let I=Reflect.get(B,"error");return Reflect.get(B,"type")==="error"&&typeof I==="object"&&I!==null&&Reflect.get(I,"type")==="rate_limit_error"},m0=function(U){return U?.quota?.enabled===!0},D$=function(U,B){if(U.delete("authorization"),U.delete("x-api-key"),B.authHeader==="x-api-key")U.set("x-api-key",B.apiKey??"");else U.set("Authorization",`Bearer ${B.apiKey??""}`);U.set("Content-Type","application/json"),a7(U)},F0=function(U){return b.getFallback(U.id,U)?.quota??U.quota},p0=function(U,B){return U.status===429||B},H$=function(U,B=b0){return M0("main",U?.routingLineage,U?.providerAccountUuid,b.getMain(U?.quotaKey??q$),B)},n$=function(U,B){if(!U&&!B?.providerAccountUuid)return!1;let I=H$(B);return Boolean(I&&(U||I.quota.accountIdentity===B?.providerAccountUuid)&&I.refreshAfter>Date.now()&&j4(I.quota)&&(I.quota.source!=="headers"||o("main",B?.routingLineage,B?.providerAccountUuid)?.generalExhausted===!0||["five_hour","seven_day"].some((k)=>I.quota.fieldSources?.[k]==="poll"&&(I.quota[k]?.remainingPercent??1)<=0)))},H=(await P.read().catch(()=>{return}))?.accounts.find((U)=>U.id==="main");if(L4=H?.binding?.rowId??H?.accountIdentity,q$??=H?.accountIdentity??L4,O.access)await K4(O.access);async function q(U,B,I){let k=t4(await Z());await L(k),I?.throwIfAborted();let d=await T0("main",I,U,B,"refresh");return await L(k),I?.throwIfAborted(),d.accessToken}if(K==="local")y();b.seedFallbacksFromAccounts((z$?.accounts??[]).filter(w0));let p=await vG(()=>u(j)).catch(()=>({freshStorage:null,activeId:void 0,route:"main"}));await g$(p.freshStorage,{activeId:p.activeId,route:p.route,mainAccessToken:O.access,routingAuthoritative:!1});async function Q0(U,B){if(!U.body||U.status!==200)return B?.mark("inspect_stream_skip",{status:U.status}),{response:U,rateLimited:!1};if(U.headers.get("x-cortexkit-relay-optimistic")==="true")return B?.mark("inspect_stream_skip",{status:U.status,reason:"optimistic_relay"}),{response:U,rateLimited:!1};let I=Y0(),k=U.body.getReader(),d=[],$0=0,m=U6({maxFrameBytes:65536}),T=!1,_0=!1,Z0=!0;while(!_0&&$0<65536){let{done:M,value:a}=await k.read().catch(async(w)=>{let S=zZ(w,i$.get(U)?.toolNameMap);if(S!==w)await VZ(k,S);throw S});if(M)break;d.push(a),$0+=a.byteLength;let X0;try{X0=m.push(a)}catch{break}for(let w of X0){let S=jG(F6(w,{streamStart:Z0}));if(Z0=!1,S.data===void 0)continue;T=A0(S.data),_0=!0;break}}if(T){zJ.get(U)?.(),zJ.delete(U),await k.cancel().catch(()=>{});try{k.releaseLock()}catch{}let M=new ReadableStream({start(X0){for(let w of d)X0.enqueue(w);X0.close()}});B?.mark("inspect_stream_first_event",{ms:q0(Y0()-I),bytes:$0,rateLimited:!0});let a=new Response(M,{status:U.status,statusText:U.statusText,headers:U.headers});return z9(i$,U,a),{response:a,rateLimited:!0}}let W0=new ReadableStream({start(M){for(let a of d)M.enqueue(a)},async pull(M){let{done:a,value:X0}=await k.read();if(a){M.close();return}M.enqueue(X0)},cancel(M){return k.cancel(M)}});B?.mark("inspect_stream_first_event",{ms:q0(Y0()-I),bytes:$0,rateLimited:!1});let C=new Response(W0,{status:U.status,statusText:U.statusText,headers:U.headers});return z9(i$,U,C),{response:C,rateLimited:!1}}async function U1(U,B,I,k){if(N$(),!B){let m=H$(I);if(!I?.providerAccountUuid||!m||m.refreshAfter<=Date.now()||!j4(m.quota))throw Error("API fallback requires fresh general primary OAuth exhaustion");let T=await T0("main",k);if(T.accountIdentity!==I.providerAccountUuid||I.routingLineage&&B0(T.localSubject,T.scopedAttempt)!==I.routingLineage)throw Error("Primary identity changed before API fallback");B=T.accessToken}let d=await P.authorizeApi(U,k),$0=(await P.read()).accounts.find((m)=>m.id==="main");if($0?.binding&&O0($0.binding)!==I?.routingLineage)throw Error("Primary identity changed before API fallback");if(!n$(B,I))throw Error("API fallback requires fresh general primary OAuth exhaustion");return d}async function M$(U,B,I,k,d="api_fallback",$0,m,T,_0){if(m)m.oauthAccountId=void 0,m.opusCacheAnchor=void 0;let Z0=Y0(),W0=v4(U,B),C=W0.get("x-session-affinity")||W0.get("x-opencode-session"),M=y0(W0),a=W0.get(l1)??void 0,X0=w1.resolveHeader(a),w=X0?w1.versionsFor(X0.sessionId,X0.messageId):void 0;W0.delete("x-parent-session-id"),W0.delete("x-session-affinity"),W0.delete("x-opencode-session"),W0.delete("x-opencode-session-id"),W0.delete("x-opencode-parent-session-id"),W0.delete(l1),W0.delete(w4),W0.delete(ZZ);let S=await m4(U,B),n=!1,U0=null,h,t0=typeof S==="string"?S.length:void 0;if(S&&typeof S==="string"){let V0=Y0(),e0=(()=>{if(!MZ())return!1;try{return D8(JSON.parse(S).model)}catch{return!1}})();try{S=await R9(S,{onToolNameMap:(l0)=>{h=l0},cache1hEnabled:!M&&a1(),cache1hMode:r1(),fastModeEnabled:e0,sessionId:C||void 0,midConversationEffortEnabled:!1,midConversationEffortPlan:a,midConversationEffortResolvedPlan:X0,midConversationEffortPlanVersions:w,modelRemapEnabled:!0,perf:(l0,E1)=>k?.mark(`rewrite_body_${l0}`,{route:d,...E1})})}catch(l0){if(l0 instanceof C0)return M8(l0);if(l0 instanceof C8)return R8(l0);throw l0}if(D$(W0,I),W0.set("anthropic-beta",U8(W0.get("anthropic-beta"),[])),e0)M9(W0);try{n=JSON.parse(S).stream===!0}catch{}k?.mark("rewrite_body",{route:d,ms:q0(Y0()-V0),originalBytes:t0,rewrittenBytes:S.length,cacheEnabled:!M&&a1(),cacheMode:r1(),fastModeEnabled:e0,subagent:M})}else D$(W0,I);let U$=await UJ(W0),Q$=await U1(I.id,T,_0,B?.signal??void 0);I={...I,...Q$},D$(W0,I);let c0=h4(U,{baseURL:I.baseURL}),c1=Y0(),B$=g9([I.apiKey??""],n?"event-stream":"http"),L$;try{L$=B$.redactResponse(await fetch(c0.input,{...B,body:S,headers:W0,...jZ()&&{tls:{rejectUnauthorized:!1}}}))}catch(V0){let e0=B$.redactError(V0);if(B$.dispose(),typeof S==="string")await y9({affinity:C,route:d,error:S8,bodyText:S,url:c0.url?.toString()??e1(c0.input),method:h1(U,B),headers:W0});throw e0}if(typeof S==="string")U0=await y9({affinity:C,route:d,status:L$.status,bodyText:S,url:c0.url?.toString()??e1(c0.input),method:h1(U,B),headers:W0});if(eZ(L$,{source:"turn",toolNameMap:h,accountId:I.id,synthetic:!1,...U$,requestedModel:L0(S),dump:U0,status:L$.status,streaming:n}),k?.mark("send_headers_received",{route:d,ms:q0(Y0()-c1),status:L$.status,relayConfigured:!1,totalSendWithAccessMs:q0(Y0()-Z0),baseURL:I.baseURL}),L$.ok)F1.publish(()=>P.publishApi(Q$.subject,{lastUsed:Date.now()}));return L$}async function R$(U,B,I,k,d="unknown",$0,m="main",T,_0,Z0=!1,W0,C){r2(I,"anthropic");let M=h4(U);if(!JZ(M.url?.toString()??e1(M.input)))return v.warn("oauth-destination","refused a Claude OAuth request to a non-Anthropic origin; nothing was sent",{route:d}),a9(n2);let a=t4(await Z()),X0=Y0(),w=$0,S=async()=>{return w??=await u(j),w},n=v4(U,B),U0=n.get("x-session-affinity")||n.get("x-opencode-session"),h=y0(n),t0=n.get(l1)??void 0,U$=w1.resolveHeader(t0),Q$=U$?w1.versionsFor(U$.sessionId,U$.messageId):void 0,c0=n.get(w4)??void 0,c1=g1.resolveHeader(c0),B$=!h&&!Z0?c1:void 0;n.delete("x-parent-session-id"),n.delete("x-session-affinity"),n.delete("x-opencode-session"),n.delete("x-opencode-session-id"),n.delete("x-opencode-parent-session-id"),n.delete(l1),n.delete(w4);let L$=z7(n),V0=await m4(U,B),e0=U0?HJ.previousFor(U0):null,l0=e0?.messageId??null,E1,x$=!1,W9=null,U4=null,Q4,R;if(V0&&typeof V0==="string"){let c=Y0();try{let D0=JSON.parse(V0);if(typeof D0.model==="string")R=D0.model}catch{}k?.mark("model_parse_for_identity",{route:d,ms:q0(Y0()-c),bodyBytes:V0.length})}let f=await T0(m,B?.signal??void 0,void 0,R,m==="main"?"last-main":"serve");if(I=f.accessToken,m==="main"&&W0?.providerAccountUuid&&f.accountIdentity!==W0.providerAccountUuid)throw Error("Main account identity changed after request routing");C=f.scopedAttempt;let e=Y0(),j0=E0(f.accountIdentity);k?.mark("resolve_claude_code_identity",{route:d,ms:q0(Y0()-e),hasAccountUuid:Boolean(j0.accountUuid)});let t=typeof V0==="string"?V0.length:void 0;if(V0&&typeof V0==="string"){let c=Y0(),D0=(()=>{if(!MZ())return!1;try{return D8(JSON.parse(V0).model)}catch{return!1}})(),o0=!h&&a1(),K$=r1(),r$=_0?.plan.downgraded&&_0.plan.standbyCacheAnchor?.oauthAccountId===m?_0.plan.standbyCacheAnchor:void 0;try{V0=await R9(V0,{onToolNameMap:(f0)=>{Q4=f0},cache1hEnabled:o0,cache1hMode:K$,fastModeEnabled:D0,identity:j0,sessionId:U0||void 0,thinkingPrefixMismatchBehavior:h6(await S()),midConversationEffortEnabled:!0,turnEndNoteEnabled:!0,turnEndNote:(await S())?.turnEndNote,midConversationEffortPlan:t0,midConversationEffortResolvedPlan:U$,midConversationEffortPlanVersions:Q$,hybridStandbyAnchor:r$,serverSideFallbackEnabled:ZJ==="server",laneStart:Z0,billingLineage:B$,cacheDiagnosticsPreviousMessageId:l0,perf:(f0,m$)=>{if(k?.mark(`rewrite_body_${f0}`,{route:d,...m$}),f0==="cache_strategy"&&m$?.standbyBridgeApplied===!0&&_0&&!_0.standbyBridgeLogged)_0.standbyBridgeLogged=!0,v.info("fable-fallback","restored standby Opus cache bridge",{session:_0.plan.sessionId,distanceBlocks:m$?.standbyDistanceBlocks})}})}catch(f0){if(f0 instanceof C0)return M8(f0);if(f0 instanceof C8)return R8(f0);throw f0}if(_0?.plan.downgraded&&o0&&K$==="hybrid"){let f0=d7(V0);_0.opusCacheAnchor=f0?{...f0,oauthAccountId:m}:void 0}let F4=Y0();try{let f0=JSON.parse(V0);o1(n,I,{body:f0,identity:j0,requestClass:L$});let m$=f0.diagnostics,F3=m$&&typeof m$==="object"&&!Array.isArray(m$)&&m$.previous_message_id===l0?l0:void 0;if(F3!==void 0&&n.get("anthropic-beta")?.split(",").map((IY)=>IY.trim()).includes(C4))E1={sessionId:U0??"session-unknown",previousMessageId:F3,...e0?{previousMessageReceivedAt:e0.receivedAt}:{},isSubagent:h,ttlSent:K9(f0)};x$=f0.stream===!0,k?.mark("set_oauth_headers_body_parse",{route:d,ms:q0(Y0()-F4),bodyBytes:V0.length,parsed:!0})}catch{o1(n,I,{identity:j0,requestClass:L$}),k?.mark("set_oauth_headers_body_parse",{route:d,ms:q0(Y0()-F4),bodyBytes:V0.length,parsed:!1})}if(D0)M9(n);k?.mark("rewrite_body",{route:d,ms:q0(Y0()-c),originalBytes:t,rewrittenBytes:V0.length,cacheEnabled:!h&&a1(),cacheMode:r1(),fastModeEnabled:D0,subagent:h})}let s=await UJ(n);if(_0)_0.oauthAccountId=m;if(_0)_0.subagent=h;if(typeof V0==="string"){let c=await S();if(a1()&&r1()==="hybrid"&&(!h||g6(c))){let D0=Y0(),o0=$$.track({sessionId:U0,url:M.url?.toString()??M.input.toString(),headers:n,bodyText:V0,storage:c,cacheMode:"hybrid",oauthAccountId:m,oauthAccountIdentity:f?.accountIdentity,isSubagent:h});if(k?.mark("cachekeep_track",{session:U0,ms:q0(Y0()-D0),tracked:o0.tracked,reason:o0.tracked?void 0:o0.reason,bodyBytes:V0.length}),U0&&_0&&!_0.plan.downgraded&&o0.tracked){O1.set(_0.plan.recoveryKey,{...f.accountIdentity!==void 0&&{accountIdentity:f.accountIdentity},sentAt:Date.now()});while(O1.size>128){let K$=O1.keys().next().value;if(K$===void 0)break;O1.delete(K$)}}}if(U0&&!h&&R0.hasSourceWarmForSession(U0)){if(B$&&B$.sessionId===U0)R0.noteSourceWarmUserTurn(U0,B$.promptId);if(!N8(c)||!a1()||r1()!=="hybrid")YJ(U0);else{let D0=OZ(V0),o0=new Set($$.trackedSessions().map((K$)=>K$.id));for(let{recoveryKey:K$,warm:r$}of R0.sourceWarmsForSession(U0)){let F4=Y$(r$.model),f0=F4?u1(U0,F4):void 0;if(f0!==void 0&&!o0.has(f0)&&Date.now()-r$.sentAt>30000){R0.dropSourceWarm(K$);continue}if(r$.oauthAccountId!=="main"&&!c?.accounts.some((m$)=>m$.id===r$.oauthAccountId&&k0(m$))){if(R0.dropSourceWarm(K$),f0!==void 0)$$.untrack(f0);v.info("fable-fallback","source warm stopped: bound account unavailable",{session:U0,reason:"account-unavailable"});continue}if(r$.firstAnchorFingerprint!==void 0&&!D0.includes(r$.firstAnchorFingerprint)){if(R0.dropSourceWarm(K$),f0!==void 0)$$.untrack(f0);v.warn("fable-fallback","source warm stopped: history no longer starts with the kept prefix",{session:U0,reason:"source-prefix-changed"})}}}}}let u0=f,I0,F$=async(c)=>{await L(a),B?.signal?.throwIfAborted();let D0=await T0(m,B?.signal??void 0,c,R,m==="main"?"last-main":"serve");if(await L(a),B?.signal?.throwIfAborted(),D0.accountIdentity!==u0.accountIdentity||Boolean(D0.scopedAttempt)!==Boolean(u0.scopedAttempt))throw Error("Native credential authority changed during the request");if(I0&&(!D0.scopedAttempt||D0.scopedAttempt.credentialId!==I0.credentialId||D0.scopedAttempt.accountIdentity!==I0.accountIdentity||D0.scopedAttempt.recordVersion<=I0.recordVersion))throw Error("Native vault retry has no strict newer same-account receipt");return D0},w$=!1,T$=C,d0=async()=>{w$=!0,f=await F$(),T$=f.scopedAttempt,n.set("authorization",`Bearer ${f.accessToken}`),j$={...j$,accessToken:f.accessToken,anthropicAccountUuid:f$(f.accountIdentity),localSubject:f.localSubject,scopedAttempt:f.scopedAttempt};let c=g9([f.accessToken],x$?"event-stream":"http");try{let D0=(K$,r$)=>R4(M.input,{...B,body:K$,headers:r$,...jZ()&&{tls:{rejectUnauthorized:!1}}}),o0=c.redactResponse(typeof V0==="string"?await wG({url:M.url?.toString()??e1(M.input),body:V0,headers:n,latch:N,send:D0}):await D0(V0,n));if(typeof V0==="string")W9=await y9({affinity:U0,route:d,status:o0.status,bodyText:V0,url:M.url?.toString()??e1(M.input),method:h1(U,B),headers:n,tag:Z0?"start":void 0});return o0}catch(D0){let o0=c.redactError(D0);if(c.dispose(),typeof V0==="string")await y9({affinity:U0,route:d,error:S8,bodyText:V0,url:M.url?.toString()??e1(M.input),method:h1(U,B),headers:n,tag:Z0?"start":void 0});throw o0}},P0=await S(),r0;try{r0=await P.getRelayConfig()}catch(c){if(c instanceof d6&&c.code==="relay-inconsistent")return a9(c.message);throw c}let i0=m==="main"?void 0:P0?.accounts.find((c)=>c.id===m&&w0(c)),C$=A6(i0,T),j$={accountId:m,accessToken:I,authLineageId:T,anthropicAccountUuid:f$(C?.accountIdentity)??(m==="main"?W0?.providerAccountUuid:f$(j0.accountUuid)??f$(C$)),localSubject:f.localSubject,scopedAttempt:f.scopedAttempt,...m==="main"&&W0?{mainQuotaIdentity:W0}:{}},s0=Y0(),y$,B4=!1,N0,a0=JJ,n0=()=>FG({config:r0,input:M.input,requireUpstreamUrl:Q9,init:B,headers:n,body:V0,fallback:d0,affinity:U0,optimisticResponse:r0?.transport==="websocket",authorizeAttempt:async()=>{let c=await F$(),D0=c.scopedAttempt;f=c,j$={...j$,accessToken:c.accessToken,anthropicAccountUuid:f$(c.accountIdentity),localSubject:c.localSubject,scopedAttempt:D0};let o0=new Headers(n);return o0.set("authorization",`Bearer ${c.accessToken}`),{headers:o0,errorSecrets:[c.accessToken],onUpstreamStatus:(K$)=>{if(K$!==401||!D0)return;if(y$=D0,B4)a0(D0,"relay_status_field")}}},onResponseHeaders:(c)=>{N0=c,oZ(c,j$),g1.commit(B$,xJ(c))},onDumpCreated:(c)=>{U4=c},dumpTag:Z0?"start":void 0}),K0=await n0();if(!w$&&y$&&K0.status===401&&typeof V0==="string"&&(h1(U,B)??"").toUpperCase()==="POST"&&!B?.signal?.aborted){let c;try{c=await d4(y$,"model-relay",B?.signal??void 0)}catch{}if(c)await K0.body?.cancel().catch(()=>{}),v.info("claustrum","retrying after scoped credential rotation",{accountId:m,previousVersion:y$.recordVersion,newVersion:c.recordVersion,transport:"relay"}),I0=y$,y$=void 0,K0=await n0()}if(w$&&T$&&K0.status===401&&typeof V0==="string"&&(h1(U,B)??"").toUpperCase()==="POST"&&!B?.signal?.aborted){let c;try{c=await d4(T$,"model",B?.signal??void 0)}catch{}if(c)await K0.body?.cancel().catch(()=>{}),v.info("claustrum","retrying after scoped credential rotation",{accountId:m,previousVersion:T$.recordVersion,newVersion:c.recordVersion,transport:"direct"}),I0=T$,K0=await d0()}if(K0.status===401&&!f.scopedAttempt&&typeof V0==="string"&&(h1(U,B)??"").toUpperCase()==="POST"&&!B?.signal?.aborted){let c=f.accessToken,D0;try{D0=await F$(c)}catch(o0){g0.set(K0,o0)}if(D0&&D0.accessToken!==c)await K0.body?.cancel().catch(()=>{}),K0=w$?await d0():await n0()}if(k?.mark("send_headers_received",{route:d,ms:q0(Y0()-s0),status:K0.status,relayConfigured:r0!=null,totalSendWithAccessMs:q0(Y0()-X0)}),w$)oZ(K0.headers,j$),g1.commit(B$,xJ(K0.headers));if(U0&&!Z0){let c=w$?K0.headers:N0??K0.headers,D0=K0.status<400&&(!k||!gZ.has(k));if(D0&&k)gZ.add(k);let o0={accountIdentity:f.accountIdentity,credentialId:f.scopedAttempt?.credentialId};if(V4.report(U0,o0,c,K0.status,R,D0),K0.status===200)zJ.set(K0,()=>V4.report(U0,o0,c,429,R,!1))}if(eZ(K0,{source:Z0?"start":"turn",toolNameMap:Q4,accountId:m,synthetic:Z0,...s,requestedModel:L0(V0),request:E1,trackSessionId:U0??void 0,dump:w$?W9:U4,status:K0.status,streaming:x$}),w$&&T$&&K0.status===401)await a0(T$,"direct");if(B4=!0,!w$&&y$)await a0(y$,"relay_status_field");if(K0.status===401)await q8(K0,B?.signal);if(K0.ok)F1.publish(async()=>{if(j$.scopedAttempt)await P.vault.publish(j$.scopedAttempt,{lastUsed:Date.now()});else if(j$.localSubject)await P.publishLocal(j$.localSubject,{lastUsed:Date.now()})});return K0}async function x0(U,B){if(!U)return!1;try{return await b.refreshMain(B?.quotaKey??q$,U,B?.generation),n$(U,B)}catch{return!1}}async function _$(U,B={}){let I=z1(U),k=await T1(!1,I,B.modelId,"admission");if(U=await u(j),I){if(U&&k.size)U={...U,accounts:U.accounts.filter((T)=>!k.has(T.id)||j1(void 0,U,T.id,B.modelId))}}let d=await _J.getUsableFallbackAccounts(U,{modelId:B.modelId}),$0=new Map(d.map((T)=>[T.id,T])),m=[];for(let T of U?.accounts??[]){if(U&&w0(T)){if(O$(U)){let Z0=$0.get(T.id);if(Z0)m.push(Z0);continue}if(y4(U)!=="local")continue;let _0=$0.get(T.id);if(_0)m.push(_0);else if(T.access&&(!T.expires||T.expires>Date.now())&&!V1(T.lastRefreshError)&&!k1(T.lastRefreshError,T.id,Date.now(),K1(T.refresh))&&U?.quota?.failClosedOnUnknownQuota!==!0&&!fZ(F0(T)))m.push(T);continue}if(B.includeApiRoutes===!0&&s1(T)&&k0(T)&&xZ(T.baseURL))m.push(T)}if(!z1(U))return m;return m.filter((T)=>w0(T)?j1(F0(T),U,T.id,B.modelId):!0)}async function RJ(U){let B=U.mainQuotaIdentity?.quotaKey,I=b.getMain(B),k=I?.quota;if(!v1(I?.quota,U.storage,Date.now(),U.requestedModelId))try{k=await b.refreshMain(B,U.mainAccessToken,U.mainQuotaIdentity?.generation,"admission")}catch{}let d=await _J.getUsableFallbackAccounts(U.storage,{modelId:U.requestedModelId}),$0=await u(j)??U.storage,m=[],T=O$($0);if(T){let C=$0?.claustrum?.primaryAccount;if(C!==void 0&&k0(C)&&!$0?.claustrum?.disabledAccountIdentities?.includes(C.accountId))m.push({id:G$,access:"",quota:k,identity:C?{kind:"known",accountId:C.accountId}:{kind:"unknown"},order:0,scoped:!0})}else if((U.mainAccessToken||U.mainPolicyDenied)&&!V1($0?.refresh?.mainLastRefreshError))m.push({id:G$,access:U.mainAccessToken,quota:k,identity:B?{kind:"known",accountId:B}:{kind:"unknown"},order:0});if(T)for(let[C,M]of($0?.accounts??[]).entries()){if(!k0(M)||!w0(M))continue;if(M.claustrumScopedCredentialId){let a=F0(M);if(!v1(a,$0,Date.now(),U.requestedModelId))try{a=await b.refreshFallback(M.id,"",M)}catch{}m.push({id:M.id,access:"",quota:a,identity:{kind:"known",accountId:M.id},order:C+1,account:M,scoped:!0})}}else{let C=new Map(d.map((M)=>[M.id,M]));for(let[M,a]of($0?.accounts??[]).entries()){if(!k0(a)||!w0(a))continue;let X0=C.get(a.id)??a;if(V1(X0.lastRefreshError))continue;let w=F0(X0);if(!v1(w,$0,Date.now(),U.requestedModelId))try{w=await b.refreshFallback(X0.id,X0.access??"",X0)}catch{}m.push({id:X0.id,access:X0.access??"",quota:w,identity:{kind:"known",accountId:X0.id},order:M+1,account:X0})}}let _0=new Set(d.map((C)=>C.id)),Z0=new Set(m.flatMap((C)=>{let M=C.id===G$?$0?.refresh?.mainLastRefreshError:C.account?.lastRefreshError,a=!C.scoped,X0=C.identity.kind==="known"?C.identity.accountId:void 0;if(a&&V1(M))return[];if(a&&k1(M,X0,Date.now(),C.id===G$?U.mainRefreshToken?K1(U.mainRefreshToken):void 0:C.account?.refresh?K1(C.account.refresh):void 0)&&(C.id===G$||!_0.has(C.id)))return[];if(v1(C.quota,$0,Date.now(),U.requestedModelId)&&FZ({quota:C.quota,modelId:U.requestedModelId}).action==="migrate")return[];if(z1($0)&&!j1(C.quota,$0,C.id===G$?void 0:C.id,U.requestedModelId))return[];return[C.id]})),W0=m.flatMap((C)=>{let M=C.id===G$?$0?.refresh?.mainLastRefreshError:C.account?.lastRefreshError,a=!C.scoped,X0=C.identity.kind==="known"?C.identity.accountId:void 0;if(a&&V1(M)||a&&k1(M,X0,Date.now(),C.id===G$?U.mainRefreshToken?K1(U.mainRefreshToken):void 0:C.account?.refresh?K1(C.account.refresh):void 0)&&(C.id===G$||!_0.has(C.id)))return[];let w=C.id===G$?void 0:C.id,S=fZ(C.quota)?C.quota:void 0,n=S?{kind:"known",quota:S}:{kind:"unknown"};return(!z1($0)||j1(n.kind==="known"?n.quota:void 0,$0,w,U.requestedModelId))&&t1(n.kind==="known"?n.quota:void 0,$0)&&(n.kind==="unknown"||i9(n.quota,U.requestedModelId)&&(C.id===G$||_0.has(C.id)||Boolean(C.scoped)))?[{accountId:C.id,quota:n,order:C.order}]:[]});return{storage:$0,allRoutes:m,candidates:W0,retainAccountIds:Z0}}let o$=new WeakMap;async function Q1(U,B,I,k,d,$0,m){if(!I.length)return d??null;let T=m?.returnLastOnExhausted??!0,_0=d??null,Z0=!1,W0=async()=>{if(Z0)return;Z0=!0,await d?.body?.cancel().catch(()=>{})};for(let[C,M]of I.entries()){let a;if(s1(M))await W0(),a=await M$(U,B,M,$0,`api_fallback_${C}`,k,m?.fableRequest,m?.mainAccessToken,m?.mainQuotaIdentity);else if(O$(k)&&M.claustrumScopedCredentialId){let w;try{w=await T0(M.id,B?.signal??void 0,void 0,L0(await m4(U,B)))}catch(n){if(n instanceof u$)continue;throw n}let S=w.scopedAttempt;if(!S)throw Error("Native vault fallback credential is unavailable");await W0(),a=await R$(U,B,S.accessToken,$0,`fallback_${C}`,k,M.id,M.authLineageId,m?.fableRequest,m?.laneStartRequest,void 0,S)}else if(y4(k)==="local"&&M.access)await W0(),a=await R$(U,B,M.access,$0,`fallback_${C}`,k,M.id,M.authLineageId,m?.fableRequest,m?.laneStartRequest);else continue;_0=a;let X0=hZ(a,k);if(!X0){let w=await Q0(a,$0);a=w.response,_0=a,X0=w.rateLimited}if(!X0){if(o$.set(a,s1(M)?"api":"oauth"),await m?.onSuccess?.(M),w0(M)&&m0(k)&&b.shouldRefreshOnRequestCount(X9)){if(O$(k)||M.access)b.refreshFallback(M.id,O$(k)?"":M.access??"",M).then(()=>m?.onSuccess?.(M)).catch(()=>{})}return a}if(C<I.length-1||!T)await a.body?.cancel().catch(()=>{})}return T?_0:null}async function xY(U,B,I,k,d,$0,m,T,_0,Z0,W0=!1,C){if(!r(U,B?.body))return I;let M=Y0(),a=$0??await u(j);if(d?.mark("fallback_load_storage",{ms:q0(Y0()-M),cached:!!$0}),!(a?.accounts??[]).some((t0)=>k0(t0)&&(w0(t0)||s1(t0)&&xZ(t0.baseURL))))return I;let w=I,S=hZ(w,a),n=p0(w,!1);if(!S){let t0=await Q0(w,d);w=t0.response,S=t0.rateLimited,n=p0(w,t0.rateLimited)}if(!S)return w;let U0=!1;if(k)U0=k.some(s1);else if(n)U0=await x0(m,C);let h=k;if(!h){let t0=Y0();h=await _$(a,{includeApiRoutes:U0,modelId:_0}),d?.mark("fallback_get_accounts",{ms:q0(Y0()-t0),accounts:h.length})}if(z1(a)){let t0=h.length;if(h=h.filter((U$)=>w0(U$)?j1(F0(U$),a,U$.id,_0):!0),h.length<t0)e$("[killswitch] filtered fallbacks",{before:t0,after:h.length})}return await Q1(U,B,h,a,w,d,{onSuccess:T,mainAccessToken:m,mainQuotaIdentity:C,fableRequest:Z0,laneStartRequest:W0})??w}return{apiKey:"",async fetch(U,B){if(U instanceof Request&&B?.signal===void 0)B={...B,signal:U.signal};let I=v4(U,B),k=I.get(U9)==="1";I.delete(U9),B={...B,headers:I};let d=I.get("x-session-affinity")||I.get("x-opencode-session"),$0=L0(B?.body),m=Boolean(d&&$0&&!y0(I)&&R0.resetForModelChange(d,$0));if(m&&d){for(let R of h$.keys())if(R.startsWith(`${d}\x00`))h$.delete(R);P$.delete(d),YJ(d)}let T=R0.plan(d,B?.body),_0=ZJ==="server"&&D9(T?.effectiveModel??$0)?T?.effectiveModel??$0:void 0,Z0=T?{plan:T}:void 0;if(T?.downgraded)B={...B,body:T.bodyText};let W0=B?.body,C=mG({bodyBytes:typeof W0==="string"?W0.length:void 0}),M=(R)=>{let f=i$.get(R);return s7(R,{toolNameMap:f?.toolNameMap,perf:(e,j0)=>C.mark(e,j0),laneStart:k,laneStartOAuthServed:o$.get(R)!=="api",...f?f.streaming?{onMessageStart:(e)=>tZ(R,e,!1),onMessageDelta:(e)=>VY(R,e),onStreamEnd:()=>f.dumpWrite}:{onMessageResponse:(e)=>tZ(R,e),onStreamEnd:()=>f.dumpWrite,responseMode:"json"}:{},contentFilterModel:T?.requestedModel,...!T?.downgraded&&T?{onContentFilter:(e)=>{if(!Z0?.oauthAccountId)return v.debug("fable-fallback","content filter recovery unavailable for non-OAuth route",{session:T.sessionId}),!1;let j0=O1.get(T.recoveryKey);O1.delete(T.recoveryKey);let t=$$.trackedRequest(T.sessionId),s;if(t)try{let d0=JSON.parse(t.bodyText);if(typeof d0.model==="string")s=d0.model}catch{}let u0=s?Y$(s):null,I0=Y$(T.requestedModel),F$=t?.oauthAccountId,w$=j0&&t&&F$!==void 0&&u0!==null&&u0===I0&&F$===Z0.oauthAccountId?{bodyText:t.bodyText,oauthAccountId:F$,...j0.accountIdentity!==void 0&&{accountIdentity:j0.accountIdentity},sentAt:j0.sentAt,model:T.requestedModel,firstAnchorFingerprint:OZ(t.bodyText)[0],url:t.url,headers:t.headers,...Z0.subagent&&{subagent:!0}}:void 0,T$=R0.activate(T,Z0.oauthAccountId,w$);LY(T).catch(()=>{v.warn("fable-fallback","source warm sync failed",{session:T.sessionId})}),h$.delete(T.recoveryKey),h$.set(T.recoveryKey,iG(T.requestedModel,T$));while(h$.size>128){let d0=h$.keys().next().value;if(d0)h$.delete(d0);else break}d$.delete(T.recoveryKey),v.info("fable-fallback","content filter detected; switching session to Opus 4.8",{session:T.sessionId,requestedModel:T.requestedModel,completedToolUse:e?.completedToolUse===!0,remaining:T$}),N4({sessionId:T.sessionId,mode:"opus",remaining:T$,requestedModelId:T.requestedModel},S,w)}}:{},...T&&Z0?{onComplete:(e)=>{if(!T.downgraded){if(R0.completeSource(T,!Z0.serverFallback)){let u0=Y$(T.requestedModel);if(u0)$$.untrack(u1(T.sessionId,u0))}return}let j0=R0.complete(T,Z0.opusCacheAnchor);if(!j0.counted)return;let t=h$.get(T.recoveryKey);if(t)h$.delete(T.recoveryKey),V$.delete(T.sessionId),K3(T.sessionId,t);if(v.info("fable-fallback","Opus 4.8 turn completed",{session:T.sessionId,requestedModel:T.requestedModel,finishReason:e,remaining:j0.remaining}),N4({sessionId:T.sessionId,mode:"opus",remaining:j0.remaining,requestedModelId:T.requestedModel},S,w),j0.remaining===0)N4({sessionId:T.sessionId,mode:"fable",remaining:0,requestedModelId:T.requestedModel},S,w,nG(T.requestedModel))}}:{},..._0?{serverSideFallbackModel:_0,...T?{onServerSideFallbackOutcome:(e)=>{if(Z0)Z0.serverFallback=e.fallback;CY(T,e,S,w)}}:{}}:{}})},a=Y0(),X0=T?.effectiveModel??L0(await m4(U,B)),w=await D(X0,B?.signal??void 0,!0);if(C.mark("get_auth",{ms:q0(Y0()-a),authType:w.type,hasAccess:Boolean(w.access)}),w.type!=="oauth"){let R=h4(U),f=v4(U,B);a7(f);let e=await m4(U,B);if(typeof e==="string")try{let t=JSON.parse(e);if(DG(t))e=JSON.stringify(t)}catch{}let j0=await fetch(R.input,{...B,body:e,headers:f});return C.done("non_oauth_passthrough",{status:j0.status}),j0}let S=await u(),n=f$(w.nativeAccountIdentity),U0=w.nativeScopedAttempt,h;if(w.access){let R=await K4(w.access,L0(B?.body),n,U0?.recordVersion);if(R.stale)throw Error("Main OAuth identity changed while resolving request credentials");if(h={...R,routingLineage:w.nativeRoutingLineage},n)O4=w.access,p1=R.providerAccountUuid}else if((w.modelDenied||w.credentialUnavailable||w.deferred)&&n)await pZ("",n,n),h={quotaKey:n,providerAccountUuid:n,generation:b.getMainQuotaIdentityGeneration(),routingLineage:w.nativeRoutingLineage,stale:!1,state:O$(S)?"on-cold":"na"};let t0=Y0();C.mark("load_storage",{ms:q0(Y0()-t0)}),b.updateStorage(S),b.seedMainFromStorage(S,q$),b.seedFallbacksFromAccounts((S?.accounts??[]).filter(w0));let U$=d?b$.get(d):void 0;if(m||!T||ZJ==="server"&&U$?.requestedModelId&&Y$(U$.requestedModelId)!==Y$(T.requestedModel))SY(d,S,w);let Q$=r(U,B?.body),c0=L0(B?.body)??X0,c1=H$(h,S),B$=o("main",h?.routingLineage,n,S),L$=w.deferred?mZ(c1&&S?{...S,accounts:S?.accounts??[],quota:{...S?.quota,mainQuota:c1.quota}}:S,n,B$?.lineage===h?.routingLineage&&B$?.generalExhausted===!0):void 0;if(L$){let R=Q$?await _$(S,{includeApiRoutes:n$(void 0,h),modelId:c0}):[],f=await Q1(U,B,R,S,void 0,C,{onSuccess:(e)=>e0(e.id,"fallback"),mainQuotaIdentity:h,fableRequest:Z0,laneStartRequest:k});if(f)return M(f);return new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:L$.message}}),{status:429,headers:{"content-type":"application/json","retry-after":String(L$.retryAfter)}})}let V0=()=>{let R=H8(b.getMain(h?.quotaKey)?.quota,(S?.accounts??[]).filter(w0),Date.now(),X0);return new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:"No enabled OAuth route can serve the requested model under current quota policy."}}),{status:429,headers:{"content-type":"application/json","retry-after":String(R)}})};if(Q$)X9++;if(Q$&&w.access&&(!w.expires||w.expires>Date.now()))BY(S,w.access,h);async function e0(R,f){let e=S,j0=!1;if((S?.accounts??[]).some((t)=>w0(t)&&t.quota))try{let t=await u(j);if(t)e=t;else j0=!0}catch{j0=!0}g$(e,{activeId:R,route:f,mainAccessToken:w.access,skipFallbackQuotaSeed:j0})}let l0;if(Q$&&d&&_1(S)==="sticky-balanced"){let R=T?.effectiveModel??c0,f=EG(R),e=$$.trackedOAuthRoute(d),j0=T?.cacheAccountId??(e?e.oauthAccountId??G$:void 0),t=!1;try{let s=await RJ({storage:S,mainAccessToken:w.access,mainRefreshToken:w.refresh,mainPolicyDenied:w.modelDenied||w.credentialUnavailable,requestedModelId:R,mainQuotaIdentity:h}),u0=await V4.accountFor(d,R??""),I0;if(u0){let r0=await P.read(),i0=r0.accounts.find((C$)=>_7(u0,C$));if(i0&&k0(i0)&&i6(i0,r0,R).status==="allowed"&&s.candidates.some((C$)=>C$.accountId===i0.id)&&L7(i0.id,s.candidates,s.storage,R??""))I0=i0.id;else V4.override(d,"unknown account, credential, account policy or Fable reserve")}let F$=async(r0)=>{let i0=await yZ(),C$=!r0&&I0;return i0.router.resolve({sessionId:d,family:f,modelId:R,affinityModelId:$0,candidates:C$?s.candidates.filter((j$)=>j$.accountId===C$):s.candidates,retainAccountIds:C$?new Set([C$]):s.retainAccountIds,storage:s.storage,inputBytes:typeof B?.body==="string"?Buffer.byteLength(B.body):1,preferredAccountId:j0,excludeAccountIds:r0,...C$&&{preserveOnNoCandidate:!0},...i0.accountIdentities&&{accountIdentities:i0.accountIdentities}})},w$=V1(s.storage?.refresh?.mainLastRefreshError),T$=s.allRoutes.length===0&&!w$||s.allRoutes.some((r0)=>!r0.quota||!v1(r0.quota,s.storage,Date.now(),R)),d0=await F$();if(I0&&!d0)V4.override(d,"advised account is not selectable"),I0=void 0,d0=await F$();if(I0&&d0?.accountId===I0&&u0?.hold)return new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:"Shared routing requested a wait; retaining session affinity."}}),{status:429,headers:{"content-type":"application/json","retry-after":String(Math.ceil(u0.hold.retry_after_ms/1000))}});if(!d0&&T$){if(w.modelDenied)return V0();throw Error("Sticky-balanced routing is waiting for current OAuth quota snapshots")}if(!d0){if(w.modelDenied)return V0();if(O$(S))throw new IZ;let r0=Q6({mainRefreshError:s.storage?.refresh?.mainLastRefreshError,fallbackReauthLabels:I6(s.storage),routeQuotas:s.allRoutes.flatMap((i0)=>i0.quota?[i0.quota]:[]),modelId:R});return C.done("return_sticky_no_route",{status:r0.status}),r0}let P0=s.allRoutes.find((r0)=>r0.id===d0?.accountId);if(d0&&P0){if(t=!0,T?.downgraded&&R0.bindRecoveryAccount(T,P0.id)){let N0=Y$(T.requestedModel);if(N0)$$.untrack(u1(T.sessionId,N0));v.info("fable-fallback","rebound recovery to migrated sticky account",{accountId:P0.id})}let r0=async(N0)=>{if(N0.scoped){let n0=(await T0(N0.id,B?.signal??void 0,void 0,R)).scopedAttempt;if(!n0)throw Error("Native vault sticky credential is unavailable");return R$(U,B,n0.accessToken,C,`sticky:${N0.id}`,s.storage,N0.id,N0.account?.authLineageId,Z0,k,N0.id===G$?h:void 0,n0)}return R$(U,B,N0.access??"",C,`sticky:${N0.id}`,s.storage,N0.id,N0.account?.authLineageId,Z0,k,N0.id===G$?h:void 0)},i0=async(N0,a0,n0=!0)=>{return await e0(N0.id,"sticky-balanced"),C.done("return_sticky_balanced",{status:a0.status,accountId:N0.id,created:d0?.created,migrated:d0?.migrated}),M(a0)},C$=async(N0)=>{let a0=N0,n0=hZ(N0,s.storage),K0=!1;if(!n0){let c=await Q0(N0,C);a0=c.response,K0=c.rateLimited,n0=c.rateLimited}return{response:a0,routeFailure:n0,streamingRateLimit:K0}},j$=v1(P0.quota,s.storage,Date.now(),R)?FZ({quota:P0.quota,modelId:R}):void 0;if(j$?.action==="hold")return i0(P0,await V9(new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:"Sticky OAuth account quota resets shortly; retaining session affinity."}}),{status:429,headers:{"content-type":"application/json"}}),d,j$.retryAfterSeconds,!1,i$),!1);let s0=await C$(await r0(P0)),y$=!1;if(!s0.routeFailure)return i0(P0,s0.response);if(s0.response.status===401){let N0=g0.get(s0.response);if(N0){let a0=await u(j),n0=P0.id,K0=P0.id===G$?a0?.refresh?.mainLastRefreshError:a0?.accounts.find((c)=>c.id===n0&&w0(c))?.lastRefreshError;if(!V1(K0))throw N0}y$=!0}let B4=s0.response.status===403||y$;if(s0.response.status===429||s0.streamingRateLimit){let N0=LG(s0.response.headers,R);if(Object.keys(N0).length===0)try{N0=P0.id===G$?await b.refreshMain(h?.quotaKey,P0.access??"",h?.generation):await b.refreshFallback(P0.id,P0.access??"",P0.account)}catch{N0=void 0}let a0=FZ({quota:N0,modelId:R,responseHeaders:s0.response.headers});if(C.mark("sticky_quota_failure",{accountId:P0.id,action:a0.action,reason:a0.reason}),a0.action==="hold")return i0(P0,await V9(s0.response,d,a0.retryAfterSeconds,s0.streamingRateLimit,i$));if(a0.action==="retain")return i0(P0,await V9(s0.response,d,60,s0.streamingRateLimit,i$,!0));B4=a0.action==="migrate"}if(B4){await q8(s0.response,B?.signal);let N0=P0.id;if(s=await RJ({storage:s.storage,mainAccessToken:w.access,mainRefreshToken:w.refresh,mainPolicyDenied:w.modelDenied||w.credentialUnavailable,requestedModelId:R,mainQuotaIdentity:h}),s.candidates.filter((n0)=>n0.accountId!==N0).length>0){await s0.response.body?.cancel().catch(()=>{}),d0=await F$(new Set([N0]));let n0=s.allRoutes.find((K0)=>K0.id===d0?.accountId);if(d0&&n0){if(P0=n0,T?.downgraded&&R0.bindRecoveryAccount(T,P0.id)){let K0=Y$(T.requestedModel);if(K0)$$.untrack(u1(T.sessionId,K0))}return i0(P0,await r0(P0))}}else if((s0.response.status===429||s0.streamingRateLimit)&&n$(w.access,h)){let n0=(await _$(s.storage,{includeApiRoutes:!0,modelId:R})).filter(s1);if(n0.length>0){let K0=await Q1(U,B,n0,s.storage,s0.response,C,{onSuccess:(c)=>e0(c.id,"sticky-balanced"),mainAccessToken:w.access,mainQuotaIdentity:h,fableRequest:Z0,laneStartRequest:k});if(K0)return C.done("return_sticky_api_fallback",{status:K0.status}),M(K0)}}}return i0(P0,s0.response)}}catch(s){if(C.mark("sticky_balanced_error",{error:s instanceof Error?s.message:String(s)}),t||R1(s))throw s;let u0=s instanceof Error?s:Error(String(s));throw Object.assign(u0,{code:"ECONNRESET",syscall:"sticky-routing"}),u0}}if(Q$&&_1(S)==="fallback-first")try{let R=Y0();l0=await _$(S,{includeApiRoutes:n$(w.access,h),modelId:c0}),C.mark("fallback_first_get_accounts",{ms:q0(Y0()-R),accounts:l0.length});let f=await Q1(U,B,l0,S,void 0,C,{returnLastOnExhausted:!1,mainAccessToken:w.access,mainQuotaIdentity:h,onSuccess:(e)=>e0(e.id,"fallback-first"),fableRequest:Z0,laneStartRequest:k});if(f)return C.done("return_fallback_first",{status:f.status}),M(f);l0=void 0}catch(R){if(C.mark("fallback_first_error",{error:R instanceof Error?R.message:String(R)}),R1(R))throw R}if(w.deferred){if(Object.assign(w,await D(X0,B?.signal??void 0)),w.access){let R=await K4(w.access,X0,w.nativeAccountIdentity,w.nativeScopedAttempt?.recordVersion);if(R.stale)throw Error("Main OAuth identity changed while resolving request credentials");h={...R,routingLineage:w.nativeRoutingLineage},O4=w.access,p1=R.providerAccountUuid}}if(!w.modelDenied&&(!w.access||!w.expires||w.expires<Date.now())){if(O$(S))try{let t=(await T0("main",B?.signal??void 0,void 0,X0)).scopedAttempt;if(!t)throw Error("Native vault main credential is unavailable");O4=t.accessToken;let s=await R$(U,B,t.accessToken,C,"main",S,"main",void 0,Z0,k,h,t);return M(s)}catch(j0){let t=Q$?await _$(S,{modelId:c0}):[],s=await Q1(U,B,t,S,void 0,C,{onSuccess:(u0)=>e0(u0.id,"fallback"),mainAccessToken:w.access,mainQuotaIdentity:h,fableRequest:Z0,laneStartRequest:k});if(s)return M(s);if(j0 instanceof A$)throw new IZ;throw j0}if(w.credentialFailure?.tokenRefreshFailed)throw w.credentialFailure;let R=await u(),f=R?.refresh?.mainLastRefreshError;if(f&&k1(f,w.nativeAccountIdentity??L4??R?.mainAccountId,Date.now(),w.refresh?K1(w.refresh):void 0))throw e$("[refresh] opencode main oauth request skipped backoff",{nextRetryAt:f.nextRetryAt,retryCount:f.retryCount,expiresInMs:w.expires?w.expires-Date.now():void 0}),Error(P6(f,Date.now()));e$("[refresh] opencode main oauth refresh required for request",{hasAccess:Boolean(w.access),expiresInMs:w.expires?w.expires-Date.now():void 0,expiredAgoMs:w.expires&&w.expires<Date.now()?Date.now()-w.expires:void 0});let e=Y0();w.access=await q(void 0,X0,B?.signal??void 0),C.mark("refresh_main_access",{ms:q0(Y0()-e)})}if(!w.access&&!w.modelDenied)throw C.done("missing_access_error"),Error("OAuth access token is missing after refresh");function E1(){if(S?.quota?.showToasts!==!0)return;let R=b.getMain(h?.quotaKey);if(!R)return;let f=(S?.accounts??[]).filter((t)=>t.enabled!==!1&&w0(t)).map((t)=>({...t,quota:b.getFallback(t.id,t)?.quota??t.quota})),e=t1(R.quota,S),j0;if(e)j0="main";else j0=f.find((t)=>t1(t.quota,S))?.id??"main";RY(R.quota,f,j0)}if(Q$&&m0(S))try{let R=Y0(),f=H$(h,S),e=f?.quota;if(!e)e=await b.refreshMain(h?.quotaKey,w.access,h?.generation,"admission"),f=H$(h,S),E1();else if(b.needsRefresh(X9,c0))if(j4(e)||d9(e,c0))e=await b.refreshMain(h?.quotaKey,w.access,h?.generation),f=H$(h,S);else b.refreshMain(h?.quotaKey,w.access,h?.generation).then(()=>{m1().catch(()=>{}),E1()}).catch(()=>{});g$(S,{activeId:"main",route:"main",mainAccessToken:w.access});let j0=t1(e,S)&&i9(e,c0);if(C.mark("main_quota_for_routing",{ms:q0(Y0()-R),passes:j0,model:c0,modelScopedExhausted:d9(e,c0)}),!j0){let t=Y0();l0=await _$(S,{includeApiRoutes:Boolean(f&&f.refreshAfter>Date.now()&&j4(f.quota)),modelId:c0}),C.mark("preselect_fallback_accounts",{ms:q0(Y0()-t),accounts:l0.length});let s=await Q1(U,B,l0,S,void 0,C,{onSuccess:(u0)=>e0(u0.id,"fallback"),mainAccessToken:w.access,mainQuotaIdentity:h,fableRequest:Z0,laneStartRequest:k});if(s)return C.done("return_preselected_fallback",{status:s.status}),M(s)}}catch(R){if(C.mark("main_quota_for_routing_error",{error:R instanceof Error?R.message:String(R)}),R1(R))throw R}let x$=H$(h,S)?.quota;if(S?.quota?.failClosedOnUnknownQuota&&(x$===void 0||w.access.startsWith("sk-ant-oat")&&h?.providerAccountUuid===void 0)&&b.isBackedOff()){let R=b.getLastApiError(),f=R?j8(R,Date.now()):"Quota API unavailable";return e$("[quota] blocked: quota API backed off (failClosed)",{nextRetryAt:R?.nextRetryAt,retryCount:R?.retryCount}),new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:f}}),{status:429,headers:{"content-type":"application/json","retry-after":String(R?.nextRetryAt?Math.max(1,Math.ceil((R.nextRetryAt-Date.now())/1000)):60)}})}if(z1(S)){if(b.needsRefresh(X9,c0))try{await Promise.all([b.refreshMain(h?.quotaKey,w.access,h?.generation),T1(!1,!0,void 0,"admission")])}catch(f){e$("[quota] killswitch refresh failed",{error:f instanceof Error?f.message:String(f),backedOff:b.isBackedOff()})}x$=H$(h,S)?.quota}if(z1(S)&&!j1(x$,S,void 0,c0)){let f=r(U,B?.body)?await _$(S,{includeApiRoutes:n$(w.access),modelId:c0}):[];if(f.length>0){e$("[route] skipping main (killswitch), trying fallbacks");let I0=await Q1(U,B,f,S,void 0,C,{onSuccess:(F$)=>e0(F$.id,"fallback"),mainAccessToken:w.access,mainQuotaIdentity:h,laneStartRequest:k});if(I0)return C.done("return_killswitch_fallback",{status:I0.status}),M(I0)}let e=Date.now(),j0=(S?.accounts??[]).filter((I0)=>k0(I0)&&w0(I0)).map((I0)=>({...I0,quota:F0(I0)})),t=j7({mainQuota:x$,requestModelId:c0,storage:S}),s=H8(x$,j0,e,t.isScopedDriven?t.modelId:void 0),u0=V7({retryAfterSeconds:s,...t.isScopedDriven&&{modelName:t.modelName}});return new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:u0}}),{status:429,headers:{"content-type":"application/json","retry-after":String(s)}})}if(w.modelDenied){let R=V0(),f=Q$?await _$(S,{modelId:X0}):[],e=await Q1(U,B,f,S,void 0,C,{onSuccess:(t)=>e0(t.id,"fallback"),fableRequest:Z0,laneStartRequest:k,mainAccessToken:w.access,mainQuotaIdentity:h});if(e)return M(e);if(!(_1(S)!=="sticky-balanced"&&d9(x$,X0)&&t1(x$,S)&&j1(x$,S,void 0,X0)))return M(R);return M(await R$(U,B,"",C,"main",S,"main",void 0,Z0,k,h))}let W9=await R$(U,B,w.access,C,"main",S,"main",void 0,Z0,k,h,U0),U4=!1,Q4=await xY(U,B,W9,l0,C,S,w.access,(R)=>{return U4=!0,e0(R.id,"fallback")},c0,Z0,k,h);if(!U4)await e0("main","main");return C.done("return_response",{status:Q4.status}),M(Q4)}}}return{}},get methods(){return[...c2(m9("opencode").tokenPath)?[_Y]:[],{label:"Claude Pro/Max",type:"oauth",authorize:async()=>{if(await f1("opencode",process.env)!=="local")throw Error("Disconnect from the vault first.");if(await P.read(),process.env.OPENCODE_AUTH_CONTENT!==void 0)throw Error("Local login cannot be verified while OPENCODE_AUTH_CONTENT is set");let Z=await X("max");return{url:Z.url,instructions:"Paste the authorization code here:",method:"code",callback:async(G)=>{let W=await TZ(G,Z.verifier,Z.redirectUri,Z.state);if(W.type==="failed")return W;N$(),await P.loginOAuth({routeId:"main",replace:!0,credential:{access:W.access,refresh:W.refresh,expires:W.expires}});let K=BZ("anthropic");return{type:"success",access:K.access,refresh:K.refresh,expires:K.expires}}}}},{label:"Create an API Key",type:"oauth",authorize:async()=>{let Z=await t7("console");return{url:Z.url,instructions:"Paste the authorization code here:",method:"code",callback:async(G)=>{let W=await TZ(G,Z.verifier,Z.redirectUri,Z.state);if(W.type==="failed")return W;return{type:"success",key:(await R4("https://api.anthropic.com/api/oauth/claude_cli/create_api_key",{method:"POST",headers:{"Content-Type":"application/json",authorization:`Bearer ${W.access}`}}).then((_)=>_.json())).raw_key}}}}},{provider:"anthropic",label:"Manually enter API Key",type:"api"}]}},dispose:UY};return Z7?.set(B3,{primeManager:C1,quotaManager:b,cacheKeepManager:$$,fableFallbackManager:R0,resolveMainQuotaIdentity:K4,resolveSidebarQuotaAccess:X3,refreshSidebarQuota:m1,fallbackRefreshReady:GY,get scopedRuntime(){return Z4(j,$.directory)},notificationMessageIdBeforeAssistant:i8,trackDesktopNoticeMessageId:V3,isDesktopNoticeMessage:j3}),B3},bz=GW;
45
+ export{w4 as a,xJ as b,IJ as c,l1 as d,C0 as e,r3 as f,U9 as g,Q9 as h,W7 as i,_7 as j,L7 as k,O7 as l,S7 as m,A7 as n,P7 as o,o1 as p,h4 as q,R9 as r,s7 as s,bz as t};
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{q as a}from"./index-j3mytf5r.js";import"./index-sg0knfec.js";import"./index-hc7bm3yf.js";import"./index-naff9h33.js";import"./index-j2cv839v.js";import"./index-gvswxab8.js";import"./index-71temqvq.js";export{a as AnthropicAuthPlugin};
1
+ import{t as a}from"./index-zxyjjr82.js";import"./index-2ra790fx.js";import"./index-jc8zwxvw.js";import"./index-a0jxsmac.js";import"./index-d4e8qj37.js";import"./index-crx0xd9j.js";import"./index-n8xr16kr.js";export{a as AnthropicAuthPlugin};
@@ -0,0 +1,22 @@
1
+ import { type AccountStorage, type StickyRouteCandidate } from '@cortexkit/anthropic-auth-core';
2
+ export declare const ROUTING_HOLD_LIMIT_MS: number;
3
+ export type RoutingChoice = {
4
+ account_id: string;
5
+ credential_id: string;
6
+ hold?: {
7
+ retry_after_ms: number;
8
+ };
9
+ };
10
+ type RoutingSubject = {
11
+ accountIdentity?: string;
12
+ credentialId?: string;
13
+ };
14
+ export declare function routingChoiceMatches(choice: RoutingChoice, account: RoutingSubject): boolean;
15
+ /** Opus model requests spend accounts with exhausted Fable quota first, preserving the others for Fable requests. */
16
+ export declare function routingReserveAllows(accountId: string, candidates: readonly StickyRouteCandidate[], storage: AccountStorage | null, modelId: string): boolean;
17
+ export declare function createRoutingRelay(): {
18
+ override: (sessionId: string, reason: string) => void;
19
+ accountFor(sessionId: string, modelId: string): Promise<RoutingChoice | null>;
20
+ report(sessionId: string, subject: RoutingSubject, headers: Headers, status: number, modelId?: string, served?: boolean): void;
21
+ };
22
+ export {};
@@ -1 +1 @@
1
- import{ga as a,ha as b}from"../index-gvswxab8.js";import"../index-71temqvq.js";export{a as writePortFile,b as discoverPortFile};
1
+ import{ja as a,ka as b}from"../index-crx0xd9j.js";import"../index-n8xr16kr.js";export{a as writePortFile,b as discoverPortFile};
@@ -1 +1 @@
1
- import{r as a}from"../index-sg0knfec.js";import"../index-71temqvq.js";export{a as COMMAND_MODAL_NAMES};
1
+ import{u as a}from"../index-2ra790fx.js";import"../index-n8xr16kr.js";export{a as COMMAND_MODAL_NAMES};