@cortexkit/opencode-anthropic-auth 2.4.6 → 2.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,45 +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
|
|
1
|
+
import{u as g8}from"./index-2ra790fx.js";import{w as y8}from"./index-jc8zwxvw.js";import{G as m8}from"./index-a0jxsmac.js";import{K as p8,P as o9,R as c8,S as l8}from"./index-d4e8qj37.js";import{ja as Q7}from"./index-crx0xd9j.js";import{randomUUID as UZ}from"node:crypto";import{existsSync as l2,readFileSync as u2}from"node:fs";import{dirname as d2,join as i2}from"node:path";import{fileURLToPath as n2}from"node:url";import{ANTHROPIC_OAUTH_ORIGIN_REFUSAL as o2,acquireNativeAccountRuntime as r2,applyCustomHeaders as s7,assertNotCustodyTombstone as s2,authorize as a7,buildAccountList as t$,buildClaudeQuotaSummary as a2,buildFallbackQuotaSummaries as t2,buildPrimeRequestBody as e2,CACHE_KEEP_EXTENDED_TTL_BETA as $6,CacheKeepManager as J6,CacheKeepSessionRegistry as Z6,CLAUDE_FABLE_MYTHOS_5_MODEL_SPECS as Y6,CLAUDE_HAIKU_4_5_MODEL_ID as t7,CLAUDE_HAIKU_5_5_CONTEXT_WINDOW as X6,CLAUDE_HAIKU_5_5_LONG_CONTEXT_PRICING as x9,CLAUDE_HAIKU_5_5_LONG_CONTEXT_THRESHOLD as G6,CLAUDE_HAIKU_5_5_MAX_OUTPUT_TOKENS as W6,CLAUDE_HAIKU_5_5_MODEL_ID as I9,CLAUDE_HAIKU_5_5_PRICING as f9,CLAUDE_HAIKU_5_5_RELEASE_DATE as z6,CLAUDE_OPUS_5_5_CONTEXT_WINDOW as V6,CLAUDE_OPUS_5_5_MAX_OUTPUT_TOKENS as j6,CLAUDE_OPUS_5_5_MODEL_ID as k9,CLAUDE_OPUS_5_5_PRICING as v9,CLAUDE_OPUS_5_5_RELEASE_DATE as K6,CLAUDE_SONNET_5_5_CONTEXT_WINDOW as _6,CLAUDE_SONNET_5_5_MAX_OUTPUT_TOKENS as L6,CLAUDE_SONNET_5_5_MODEL_ID as h9,CLAUDE_SONNET_5_5_PRICING as b9,CLAUDE_SONNET_5_5_RELEASE_DATE as O6,CLAUSTRUM_OPENCODE_ENROLLMENT_NAME as QZ,cacheKeepSourceWarmIdleCap as N6,cacheWarmCacheablePrefixFingerprint as e7,computeXxhash64Hex as D6,configuredAnthropicOAuthAccountCount as H6,createEmptyStorage as z1,createNativeUsagePublisher as U6,createNativeVaultNoRouteResponse as $8,createProviderErrorResponseScope as g9,createSseFramer as Q6,createStickyNoRouteResponse as B6,custodyTombstoneOAuth as BZ,decideOpenCodeStateLayoutOnce as F6,decideStickyQuotaFailure as FZ,decodeSseFrame as w6,detectClaustrumConnection as J8,dumpDirectRequest as y9,dumpResponseArtifact as wZ,effectiveRelayStatus as T6,exchange as TZ,executeAccountCommand as C6,executeCache1hCommand as CZ,executeCacheKeepCommand as S6,executeDumpCommand as Z8,executeFastModeCommand as Y8,executeKillswitchCommand as X8,executeLaneStartCommand as G8,executeLoggingCommand as W8,executePrimeCommand as E6,executeRoutingCommand as z8,FALLBACK_BACKGROUND_TICK_MS as A6,fallbackAccountUuidForLineage as P6,formatEnrollmentStatus as V8,formatNativeAccountState as SZ,formatOAuthAccountTier as b4,formatQuotaBackoffMessage as j8,formatRefreshBackoffMessage as q6,getAccountStoragePath as R6,getCache1hMode as r1,getCache1hPersistentMode as g4,getCacheKeepWindow as K8,getClaudeCodeIdentityForVerifiedAccount as M6,getClaudeModelCatalogue as x6,getClaustrumMode as y4,getDefaultCacheKeepRegistryDirectory as I6,getFallbackReauthLabels as f6,getHostClaustrumEnrollmentPaths as m9,getKillswitchConfig as EZ,getPersistedLogLevel as AZ,getQuotaCheckIntervalMs as _8,getQuotaNextRefreshAt as R1,getRequestGzipLatch as k6,getRequestGzipLatchPath as v6,getRoutingMode as e$,getScopedQuotaWindowForModel as h6,getThinkingPrefixMismatchBehavior as b6,inspectNativeHostAuthEntry as g6,isApiKeyAccount as s1,isCache1hEnabled as a1,isCache1hPersistentlyEnabled as p9,isCacheKeepAlways as L8,isCacheKeepHybridActive as O8,isCacheKeepPersistentlyEnabled as N8,isCacheKeepSubagentsEnabled as y6,isClaudeFableOrMythos51Model as m6,isClaudeOpus5Model as p6,isClaudeOpus55Model as c6,isCostZeroingEnabled as l6,isCustodyTombstoneOAuth as PZ,isDumpPersistentlyEnabled as qZ,isFastModeEnabled as RZ,isFastModePersistentlyEnabled as MZ,isFastModeSupportedModel as D8,isKillswitchEnabled as V1,isNativeTransientAccountError as M1,isOAuthAccount as w0,isPermanentRefreshError as j1,isPrimePersistentlyEnabled as c9,isQuotaBearingHeaderFrame as u6,isValidApiBaseURL as xZ,killswitchPassesPolicy as K1,killswitchRetryAfterSeconds as H8,log as $1,logger as v,mergeAnthropicBetas as U8,mergeHeaderQuotaForPersistence as Q8,NativeAccountRefusal as x1,NativeCustodyError as d6,NativeRuntimeError as i6,NativeVaultNoAccountError as B8,nativeAccountCanServe as k0,nativeAccountPolicy as n6,nativeAccountRefusal as o6,nativeLocalAccountRefusal as r6,nativeLocalQuotaLineage as s6,nativeMigrationAuthorityPhase as F8,normalizeQuotaHeaders as a6,oauthProfileIsFresh as l9,oauthProfileMatchesIdentity as t6,PARALLEL_TOOL_CALLS_SYSTEM_PROMPT as e6,PrimeManager as $G,parseAccountCommandAction as JG,parseCache1hCommandAction as ZG,parseCacheKeepCommandAction as YG,parseDumpCommandAction as XG,parseFastModeCommandAction as GG,parseLaneStartCommandAction as WG,parseLoggingCommandAction as zG,parsePrimeCommandAction as VG,parseRoutingCommandAction as jG,parseSseFrame as KG,QUOTA_HEADER_FEED_SCHEMA_VERSION as u9,QuotaHeaderFeedRegistry as _G,QuotaManager as LG,quotaExhaustionFromHeaders as OG,quotaSnapshotCheckedAt as I1,quotaSnapshotHasStandardWindows as IZ,quotaSnapshotModelScopeIsExhausted as d9,quotaSnapshotPassesModelScope as i9,quotaSnapshotPassesPolicy as t1,readClaustrumEnrollmentStatus as w8,readNativeAccountsForRequest as NG,readNativeEnrollmentMode as f1,readNativeHostAuthKind as DG,readNativeMigrationJournal as T8,refreshBackoffActive as k1,remapRequestBodyModel as HG,resetClaustrumEnrollmentState as UG,resolveClaudeModelCapabilities as QG,resolveNativePoolPaths as BG,STICKY_ROUTING_MAIN_ACCOUNT_ID as G$,StickySessionRouter as FG,sendViaRelay as wG,sendWithRequestGzip as TG,setCache1hState as n9,setDumpEnabled as fZ,setFastModeEnabled as kZ,setLogLevel as CG,shouldFallbackStatus as SG,snapshotHasServableLocalOAuth as C8,stateRefusalPublicMessage as EG,stickyQuotaSnapshotIsFresh as v1,stickyRouteFamilyForModel as AG,TrailingAssistantHistoryError as S8,tokenFingerprint as _1}from"@cortexkit/anthropic-auth-core";import{randomUUID as F3}from"node:crypto";import{isValidAnthropicRequestId as w3,isValidBillingPromptId as kY}from"@cortexkit/anthropic-auth-core";var w4="x-cortexkit-billing-lineage",vY=4096,hY=4096,bY=1024,T3=new Set(["title","summary","compaction"]),gY="[lane start] — automated cache warm; no response needed.";function yY($){let J=$.info?.sessionID??$.info?.sessionId;return typeof J==="string"&&J.length>0?J:void 0}function mY($){if($.info?.synthetic===!0||$.info?.ignored===!0||typeof $.info?.agent==="string"&&T3.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===gY)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&&w3(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??F3,this.#_=$.createRequestToken??F3,this.#j=$.maxPrompts??vY,this.#L=$.maxRequests??hY,this.#X=$.maxSessions??bY}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=yY(J),X=J.info?.id;if(!Y||typeof X!=="string"||X.length===0)return;let z=this.#K(Y,X);if(mY(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(!kY(j))return;this.#J.set(z,j),A1(this.#J,this.#j)}markHeaders($){let J=this.#K($.sessionId,$.messageId);if(T3.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||!w3(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 S3,stickyRetainRetryHeaders as pY,stickyRetryAfterWithJitter as cY}from"@cortexkit/anthropic-auth-core";var C4="cache-diagnosis-2026-04-07",lY="MC-CACHE-DIAG ",uY=1000,dY=300000,iY={turn:!1,start:!0,prewarm_cachekeep:!0},nY=1000;class fJ{entries=new Map;previousFor($){return this.entries.get($)??null}capture($,J,Y){S3(this.entries,$,{messageId:J,receivedAt:Y},uY)}}class kJ{hashes=new Map;capture($,J){if(this.hashes.has($))return null;return S3(this.hashes,$,!0,nY),`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?pY($.headers):new Headers($.headers);if(!V)j.set("retry-after",String(cY(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 G1($){return $!=null&&typeof $==="object"&&!Array.isArray($)}function oY($){return G1($)&&$.type==="ephemeral"}function E3($,J){if(!oY($))return;J.push($.ttl==="1h"?"1h":"5m")}function C3($,J){if(!Array.isArray($))return;for(let Y of $)if(G1(Y))E3(Y.cache_control,J)}function K9($){if(!G1($))return null;let J=[];if(E3($.cache_control,J),C3($.system,J),Array.isArray($.messages)){for(let Y of $.messages)if(G1(Y))C3(Y.content,J)}return J.at(-1)??null}function rY($){if(!Object.hasOwn($,"diagnostics"))return{state:"absent"};let J=$.diagnostics;if(J===null)return{state:"server_null"};if(!G1(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(!G1(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 A3($){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=iY[$.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(!G1($.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||!G1(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||!G1(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=rY($.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<dY&&$.receivedAt>=$.request.previousMessageReceivedAt?{messageId:X,previousMessageId:$.request.previousMessageId}:void 0;return{record:i,messageId:X,...H0?{canary:H0}:{}}}function P3($){return`${lY}${JSON.stringify($)}`}import{getClaustrumMode as _9,hasNoLocalCredential as vJ,isCustodyTombstoneOAuth as sY,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 q3($){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(sY($,"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 aY}from"node:crypto";import{defaultAdaptiveEffort as tY,logger as eY,normalizeAdaptiveEffort as $5,pinsEffortOnEveryRequest as M3,resolveClaudeModelCapabilities as J5,supportsPerMessageEffort as Z5}from"@cortexkit/anthropic-auth-core";var v3=512,Y5=1024,X5=4096,A4=32,P4=32,O9="[A-Za-z0-9_-]{1,128}",G5="<cortexkit-internal-effort ",W5="<cortexkit-internal-effort-plan ",h3=/^\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 z5($){let J=J5($);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 z5($.info.model.modelID)}function x3($){return $5($.info?.model?.variant)??tY($.info?.model?.modelID)}function I3($){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 aY("sha256").update($).digest("hex")}function V5($){return s$(`scope:${$}`).slice(0,P4)}function N9($){return s$(`cortexkit-effort-v2:${$}`).slice(0,A4)}function j5($,J,Y){let X=q4[Y],z=`transition:${$}:${J}:${X}`;return`${uJ}scope="${$}" boundary="${J}" effort="${X}" check="${N9(z)}"/>`}function b3($){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 K5($,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 g3($){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()===""||h3.test($)}function f3(){return new RegExp(`(?:${W5}nonce="[^"]+" baseline="[^"]+" count="[^"]+" sig="[0-9a-f]+"/>|${G5}nonce="[^"]+" effort="[^"]+" sig="[0-9a-f]+"/>)`,"g")}function _5(){return new RegExp(`${uJ}scope="[0-9a-f]{${P4}}" boundary="${O9}" effort="[lmhxz]" check="[0-9a-f]{${A4}}"/>`,"g")}function L5(){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 y3($,J,Y){let X=0,z=$,V=$.replace(f3(),"");if(V!==$&&h3.test(V))X+=[...$.matchAll(f3())].length,z=V;return z=z.replace(_5(),(j)=>{let N=b3(j);if(!N)return j;return J?.(N),X++,""}),z=z.replace(L5(),(j)=>{let N=g3(j);if(!N)return j;return Y?.(N),X++,""}),{text:z,removed:X}}function O5($){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=y3(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 N5($){return["v2",$.scope,q4[$.baseline],$.markerCount.toString(36),$.digest].join(".")}function D5($){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>v3)return null;return{scope:Y,baseline:j,markerCount:N,digest:V}}function m3($){let J=$.findLast((i)=>i.info?.role==="user"),Y=mJ(J);if(!J||!Y)return null;if(O5($),!Array.isArray(J.parts)||!I3(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=V5(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=x3(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||!I3(i))continue;let g=x3(i);if(!F){F=g,E=g;continue}if(g===E)continue;if(A.length>=v3)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 V0=j5(V,H0.id,g);i.parts.push({type:"text",text:V0}),A.push(V0),E=g}if(!F)return null;let x=L9(V,F,A.length,A,A.length>0?z:void 0),l=A.length>0?K5(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 H5($){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)=>y3(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 U5($,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 Q5($,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)=>U5($,X))}function k3($){if(!J$($))return null;if(typeof $.id==="string")return $.id;return typeof $.message_id==="string"?$.message_id:null}function p3($,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)=>b3(V)),X=J.anchorToken?g3(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 B5($,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 F5($){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=p3({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||!B5({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
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
|
|
4
|
+
`))return null}catch(V){if(V instanceof C0)return null;throw V}return z}function c3($,J,Y,X,z=[]){if(!Array.isArray($.messages))return{found:0,inserted:0};let V=D5(Y);if(Y&&!V)throw new C0("Missing or invalid internal per-message effort request plan");let j=V?p3(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((R0)=>J$(R0)&&R0.type==="text"&&typeof R0.text==="string"&&R0.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"),R0=$.messages[o],W$=J$(R0)&&Array.isArray(R0.content)?R0.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&&M3($.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=H5($),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 R0 of o.transitions)if(R0.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],V0=E.messages[H0]?.value,P=Q5(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:k3(V0),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?F5({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:k3(V0),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});eY.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 R0=A.at(-1)?.effort??V.baseline;if(g&&(g.effort!==R0||g.digest!==V.digest))throw new C0("Missing or invalid internal per-message effort anchor")}let b0=J&&Z5($),O0=0,B0=[];for(let o of E.messages){let R0=o.transitions.at(-1);if(R0&&b0)B0.push({role:"system",content:[],output_config:{effort:R0.effort}}),O0++;B0.push(o.value)}if($.messages=B0,b0&&(O0>0||M3($.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>Y5){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=N5(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>X5){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 w5}from"@cortexkit/anthropic-auth-core";var l3="claude-opus-4-8",nJ=10,rJ="source-warm:";function u1($,J){return`${rJ}${$}:${J}`}function R4($){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 u3=128,T5=86400000;function Y$($){return w5($)?.refusalRecoveryFamily??null}function D9($){return Y$($)!==null}function C5($,J){let Y=Y$(J);return Y?`${$}\x00${Y}`:null}function S5($){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>=T5)this.recoveries.delete(J);while(this.recoveries.size>u3){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>u3){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=S5(J);if(!Y||!D9(Y.model))return null;let X=C5($,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=l3,{sessionId:$,recoveryKey:X,requestedModel:z.model,effectiveModel:l3,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=R4($);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=R4($);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=R4($);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 W1($){return typeof $==="object"&&$!==null}function E5($){if(Array.isArray($))return $;if(W1($)&&Array.isArray($.data))return $.data;return[]}function n3($){if(!W1($)||!W1($.info))return;return $.info}function d3($){let J=n3($);return typeof J?.role==="string"?J.role:void 0}function A5($){let J=n3($);return typeof J?.id==="string"?J.id:void 0}function aJ($){if(!W1($)||!W1($.info))return null;let J=$.info,Y=W1(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 i3($){return Boolean($.agent&&$.model&&$.variant)}async function H9($,J){if(!$||!J)return null;let Y=$,X=[];if(typeof Y.session?.messages==="function")try{X=E5(await Promise.resolve(Y.session.messages({path:{id:J},query:{limit:100}})))}catch{X=[]}let z,V;for(let N of X){let F=A5(N);if(!F)continue;let E=d3(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(d3(X[N])!=="assistant")continue;let F=aJ(X[N]);if(!F)continue;if(j=tJ(j,F),i3(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),i3(j))return j}if(typeof Y.session?.get==="function")try{let N=await Promise.resolve(Y.session.get({path:{id:J}})),F=W1(N)&&W1(N.data)?N.data:W1(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 o3="[lane start] — automated cache warm; no response needed.",U9="x-cortexkit-lane-start",P5=1000;function q5($){if(!$||typeof $!=="object")return!1;let J=$;return J.type==="text"&&J.text===o3&&J.synthetic===!0}async function r3($,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:o3,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(q5))return!1;let J=`${$.sessionId}\x00${$.messageId}`;if(!this.#$.has(J)&&this.#$.size>=P5){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 R5,disconnectNativeVaultForHost as M5,readNativeEnrollmentMode as x5}from"@cortexkit/anthropic-auth-core";function s3($){if(!$?.trim())throw TypeError("sessionId is required");return $}function a3($){if($.host!=="opencode")throw TypeError("OpenCode host is required");let J=R5({...$,readMode:$.readMode??(()=>x5("opencode",process.env)),disconnectVault:$.disconnectVault??(()=>M5({host:"opencode",env:process.env}))});return{menu:J,open(Y){return J.open({sessionId:s3(Y),notify(){}})},apply(Y){return J.apply(Y,{sessionId:s3(Y.sessionId),notify(){}})}}}import{createAnthropicOAuthFetch as I5,logger as t3,requireAnthropicOAuthOrigin as f5}from"@cortexkit/anthropic-auth-core";var $Z="ANTHROPIC_AUTH_TEST_OAUTH_LOOPBACK_ORIGIN",k5=new Set(["127.0.0.1","[::1]","localhost"]),e3;function v5(){let $=process.env[$Z];if(!$)return;let J=h5($);if(e3!==$)if(e3=$,J)t3.warn("oauth-destination","test-only loopback origin is allowed for Claude OAuth requests",{env:$Z});else t3.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 h5($){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(!k5.has(J.hostname))return;if(!J.port)return;if($!==J.origin)return;return J.origin}function $7(){let $=v5();return $?{extraOrigin:$}:{}}function Q9($){return f5($,$7())}function JZ($){try{return Q9($),!0}catch{return!1}}var M4=I5($7);var J7;import{primeStorageFingerprint as b5}from"@cortexkit/anthropic-auth-core";var B9=new Map,F9=new Map;function Z7($,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 Y7($,J,Y){let X=b5($),z=B9.get(X),V=z?.manager??J();if(z)Y.rebind(V);let j=F9.get(Y.slot);if(j&&j.fingerprint!==X)Z7(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:()=>Z7(Y.slot,F)}}import{classifySafeErrorForLog as g5,logger as y5}from"@cortexkit/anthropic-auth-core";function X7($,J,Y){y5.warn("quota","fallback quota preflight could not obtain a reading",{accountId:$,requiredByPolicy:J,...g5(Y)})}var ZZ="x-cortexkit-request-class",m5=new Set(["title","summary","prime"]);function G7($){return typeof $==="string"&&m5.has($)}function W7($){let J=$.get("x-cortexkit-request-class");return $.delete("x-cortexkit-request-class"),J==="auxiliary"?"auxiliary":"main"}import{getKillswitchThresholdsForAccount as p5,getScopedQuotaWindowForModel as c5,killswitchPassesPolicy as l5}from"@cortexkit/anthropic-auth-core";function z7($){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 V7($){if(!$.requestModelId)return{isScopedDriven:!1};if(!l5($.mainQuota,$.storage))return{isScopedDriven:!1};let J=c5($.mainQuota,$.requestModelId);if(!J)return{isScopedDriven:!1};if(!Number.isFinite(J.remainingPercent))return{isScopedDriven:!1};let Y=p5($.storage);if(J.remainingPercent<=Y.scoped)return{isScopedDriven:!0,modelName:J.modelName,modelId:$.requestModelId};return{isScopedDriven:!1}}import{logger as u5,quotaExhaustionFromHeaders as d5,stickyRouteFamilyForModel as i5,stickyRouteKnownFableExhausted as n5}from"@cortexkit/anthropic-auth-core";var o5=920000;function j7($){let J=globalThis[Symbol.for("cortexkit.routing")];if(typeof J!=="function")return;return J($)??void 0}function K7($,J){return J.accountIdentity===$.account_id&&(!J.credentialId||J.credentialId===$.credential_id)}function _7($,J,Y,X){if(i5(X)!=="opus")return!0;let z=J.filter((V)=>n5(V,Y));return!z.length||z.some((V)=>V.accountId===$)}function L7(){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),u5.debug("routing-relay","Using local account choice",{sessionId:Y,reason:X})};return{override:J,async accountFor(Y,X){let z;try{let V=j7(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,o5)}}:{}}}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=d5(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=j7(Y);for(let x of E)try{Promise.resolve(A?.report(x)).catch(()=>{})}catch{}}).catch(()=>{})}}}var p$=[],r5=1,O7=new Map,w9=new Map,P1=new Set,s5=1000;function N7($){if(typeof $!=="string"||$.length===0)throw TypeError("sessionId is required")}function YZ($,J){N7(J);let Y=r5++;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 D7($,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>s5){let j=P1.values().next().value;if(j!==void 0)P1.delete(j)}z(!1)},Y.timeoutMs)})}function H7($){return P1.has($)}function U7($,J){if(N7(J),O7.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=O7.get($)??0;return Y>0&&J-Y<3000}import{randomBytes as a5,timingSafeEqual as t5}from"node:crypto";import{readFile as e5,unlink as $X}from"node:fs/promises";import{createServer as JX}from"node:http";import{join as ZX}from"node:path";import{parseApplyRequest as YX}from"@cortexkit/anthropic-auth-core";function XX($){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 GX($,J){if(!$?.startsWith("Bearer "))return!1;let Y=Buffer.from($.slice(7)),X=Buffer.from(J);return Y.length===X.length&&t5(Y,X)}async function B7($){let J=a5(32).toString("hex"),Y=JX((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(!GX(V.headers.authorization,J))return N(401,{error:"unauthorized"});let E=F.slice(5),A=JSON.parse(await XX(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=YX(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 Q7($.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=ZX($.dir,`port-${process.pid}.json`),j=JSON.parse(await e5(V,"utf8"));if(j.port===z&&j.pid===process.pid)await $X(V)}catch{}}}}async function F7($,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 WX}from"@cortexkit/anthropic-auth-core";var C7="server-side-fallback-2026-07-01",S7="",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 zX($){return`${C9}${$.fromModel}|${$.toModel}`}function VX($){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 jX($){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 KX($){return{type:"fallback",from:{model:$.fromModel},to:{model:$.toModel}}}function _X($,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===S7||F.thinking==="")&&typeof F.signature==="string"&&F.signature.startsWith(C9))){j.push(N);continue}let A=VX(F.signature);if(J&&A)j.push(KX(A)),Y++;else X++}V.content=j}return{restoredMarkers:Y,droppedMarkers:X}}function E7($){return $?.trim().toLowerCase()==="legacy"?"legacy":"server"}function A7($,J){let Y=J&&WX($.model)?.serverSideFallback===!0,X=_X($,Y);if(Y)$.fallbacks="default";else if($.fallbacks==="default")delete $.fallbacks;return{enabled:Y,...X}}function LX($){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 w7($){let J=$.indexOf(`
|
|
6
6
|
|
|
7
7
|
`),Y=$.indexOf(`\r
|
|
8
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
|
|
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 T7($,J){return`event: ${$}
|
|
10
10
|
data: ${JSON.stringify(J)}
|
|
11
11
|
|
|
12
|
-
`}function
|
|
12
|
+
`}function OX($,J){return T7("content_block_start",{type:"content_block_start",index:$,content_block:{type:"thinking",thinking:S7}})+T7("content_block_delta",{type:"content_block_delta",index:$,delta:{type:"signature_delta",signature:zX(J)}})}function NX($,J){let Y=Y$($),X=Y$(J);if(Y&&X)return Y===X;return $===J}function P7($){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 V0 of g.iterations){let P=c$(V0);if(P?.type!=="fallback_message")continue;let J0=d1(P,"model");if(i1(J0))N=J0}},l=(g)=>{if(F)return;F=!0;let V0=j?.toModel??N??(V&&!NX($.requestedModel,V)?V:void 0);$.onOutcome?.({requestedModel:$.requestedModel,servedModel:V,targetModel:V0,fallback:Boolean(V0),handoff:Boolean(j),stopReason:g})},i=(g,V0)=>{let P=LX(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?jX(O0):null;if(o){if(j=o,typeof B0==="number"&&Number.isInteger(B0)&&B0>=0)return OX(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
13
|
`:""}${J0?`data: ${JSON.stringify(J0)}
|
|
14
|
-
`:""}${
|
|
14
|
+
`:""}${V0}`}return g+V0},H0=()=>{let g="";while(!0){let V0=w7(J);if(!V0)break;let P=J.slice(0,V0.index),J0=J.slice(V0.index,V0.index+V0.length);J=J.slice(V0.index+V0.length),Y=new TextEncoder().encode(J).byteLength,g+=i(P,J0)}return g};return{pendingLength(){return Y},push(g){let V0="";if(X){let J0=z+g,b0=w7(J0);if(!b0)return z=J0.slice(-3),g;let O0=b0.index+b0.length;V0=g.slice(0,Math.max(0,O0-z.length)),g=J0.slice(O0),X=!1,z=""}if(!g)return V0;let P=new TextEncoder().encode(g).byteLength;if(J+=g,Y+=P,V0+=H0(),$.maxPendingBytes!==void 0&&Y>$.maxPendingBytes){let J0=J;return J="",Y=0,X=!0,z=J0.slice(-3),V0+J0}return V0},flush(){if(X)return z="","";let g=H0();if(!J)return g;let V0=i(J,"");return J="",Y=0,g+V0}}}import{createHash as DX}from"node:crypto";import{applyClaudeCodeHeaders as HX,applyClaudeCodeMetadata as UX,applyThinkingBindingControls as QX,applyTurnEndNotes as BX,assertNotCustodyTombstone as FX,buildBillingHeaderValue as wX,CLAUDE_CODE_ENTRYPOINT as TX,CLAUDE_CODE_IDENTITY as I4,CLAUDE_FABLE_MYTHOS_5_SUMMARIZED_THINKING as CX,CLAUDE_HAIKU_5_5_ADAPTIVE_THINKING as SX,CLAUDE_OPUS_5_5_ADAPTIVE_THINKING as EX,CLAUDE_OPUS_5_ADAPTIVE_THINKING as AX,CLAUDE_SONNET_5_5_ADAPTIVE_THINKING as PX,CLAUDE_SONNET_5_ADAPTIVE_THINKING as qX,ClaudeCodeFirstUserTextTracker as RX,countUserPrompts as MX,createSseFramer as xX,FAST_MODE_BETA as IX,isClaudeFableOrMythos5Model as fX,isClaudeHaiku55Model as kX,isClaudeOpus5Model as h7,isClaudeOpus55Model as vX,isClaudeSonnet5Model as hX,isClaudeSonnet55Model as bX,isFastModeSupportedModel as gX,isOpenAIReasoningSignature as yX,mergeAnthropicBetas as mX,OPENCODE_IDENTITY_PREFIX as pX,orderClaudeCodeBody as cX,PARAGRAPH_REMOVAL_ANCHORS as lX,parseSseFrame as uX,REQUIRED_BETAS as Jz,remapRequestBodyModel as dX,resolveClaudeModelCapabilities as iX,SseFrameTooLargeError as b7,selectClaudeCodeBetas as nX,signRequestBody as oX,stripEmptyTrailingAssistantMessages as rX,TEXT_REPLACEMENTS as sX,TOOL_PREFIX as g7,TrailingAssistantHistoryError as aX}from"@cortexkit/anthropic-auth-core";import{applyEdits as y7,parseTree as tX}from"jsonc-parser";function q7($,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,V0=Y.get(g)??"";Y.delete(g),X-=g.length+V0.length,j++}return i},stats:()=>({hits:z,misses:V,evictions:j,entries:Y.size,cacheBytes:X,computeMsTotal:N})}}var l$=8388608;function P9($){return`${g7}${$.charAt(0).toUpperCase()}${$.slice(1)}`}function eX($){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 b7&&J?.hazardousWireNames.size?new k4:$}async function VZ($,J){try{$.cancel(J).catch(()=>{})}catch{}try{await Promise.allSettled([$.closed])}finally{try{$.releaseLock()}catch{}}}function $2($){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,eX(F),F.charAt(0).toUpperCase()+F.slice(1)]))X(Y,E,V),X(Y,`${g7}${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 R9($){return $.set("anthropic-beta",mX($.get("anthropic-beta"),[IX])),$}function o1($,J,Y={}){return FX(J,"anthropic"),HX($,J,{...Y,extraBetas:[...Y.body?.fallbacks==="default"?[C7]:[]]})}function J2($){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(cX($))}function Z2($,J){return y7($,m7($,J,!1))}function x4($,J){if($?.type!=="object")return;return $.children?.filter((X)=>X.children?.[0]?.value===J)?.at(-1)?.children?.[1]}function m7($,J,Y,X=!0){if(!J?.size)return[];let z=$.charCodeAt(0)===65279?1:0,V=[],j;try{j=tX($.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 Y2($,J){let Y=$.charCodeAt(0)===65279?1:0,X=uX($.slice(Y));if(X.data===void 0)return $;let z=m7(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 y7($,N)}function X2($,J){let Y=new TextEncoder,X=new TextDecoder("utf-8",{ignoreBOM:!0}),z=xX({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?Z2(A,$):""}let x;try{x=z.push(Y.encode(F))}catch(i){if(!(i instanceof b7))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)=>Y2(i,$)).join("")}}}function jZ(){if(!process.env.ANTHROPIC_BASE_URL?.trim())return!1;let $=process.env.ANTHROPIC_INSECURE?.trim();return $==="1"||$==="true"}function p7($){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 G2(){return p7(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?p7(J.baseURL):G2();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 W2($){let X=$.split(/\n\n+/).filter((z)=>{if(z.includes(pX))return!1;for(let V of lX)if(z.includes(V))return!1;return!0}).join(`
|
|
15
15
|
|
|
16
|
-
`);for(let z of
|
|
17
|
-
`);J.splice(X,J.length-X,{...z,type:"text",text:V})}function
|
|
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=
|
|
16
|
+
`);for(let z of sX)X=X.replace(z.match,z.replacement);return X.trim()}var z2=8388608;function V2(){return process.env.OPENCODE_ANTHROPIC_AUTH_MEMO!=="0"}var j2=q7(W2,{maxBytes:z2,enabled:V2});function S9($){return j2.call($)}function G0($){return $!=null&&typeof $==="object"&&!Array.isArray($)}function K2($){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 c7={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?{...c7}:{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 DX("sha256").update(JSON.stringify(Y)).digest("hex")}function l7($){if(!G0($))return!1;let J=_Z($.content);return Boolean(J?.some((Y)=>G0(Y)&&KZ(Y)?.type==="ephemeral"))}function u7($){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"||!l7(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"||!l7(X))continue;let z=LZ(X);if(z)Y.push(z)}return Y}catch{return[]}}function d7($,J){if(!G0($))return;let Y=KZ($);if(Y?.type!=="ephemeral")return;if(J)Y.ttl="1h";else delete Y.ttl}function M7($,J){NZ($,(Y)=>d7(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 i7($){GZ($),NZ($,GZ)}function _2($){i7($),$.cache_control={...c7}}function L2($){return G0($)&&$.type!=="thinking"&&$.type!=="redacted_thinking"}function n7($){let J=_Z($.content);if(!J?.length)return;let Y=J.filter(L2);if(!Y.length)return;return{content:J,cacheableBlocks:Y}}function O2($){if(!G0($))return!1;let J=n7($);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=n7($);if(!J)return!1;let Y=J.cacheableBlocks[J.cacheableBlocks.length-1];return $.content=J.content,q9(Y,!0)}function N2($){if(!G0($))return 0;let J=$.content;if(Array.isArray(J))return J.length;if(J==null)return 0;return 1}function D2($){let J=[],Y=0;return $.forEach((X,z)=>{let V=N2(X);if(G0(X)&&X.role==="user"&&V>0)J.push({index:z,blockPosition:Y+V-1});Y+=V}),J}function H2($,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 U2($,J){let Y=D2($),X=[...Y].reverse().find((A)=>A.index>1);if(!X)return{latest:void 0,bridge:void 0,standbyAnchorMatched:!1,standbyBridgeApplied:!1};let z=H2($,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 Q2($){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 x7($){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 B2($,J){if(i7($),Q2($),!Array.isArray($.messages))return x7($),{standbyAnchorMatched:!1,standbyBridgeApplied:!1};let{latest:Y,bridge:X,standbyAnchorMatched:z,standbyDistanceBlocks:V,standbyBridgeApplied:j}=U2($.messages,J);if(!X)x7($);if(!O2($.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 F2($){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(!yX(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 w2($){if(!fX($.model))return null;let J=Object.hasOwn($,"thinking");if($.thinking={...CX},iX($.model)?.rejectsForcedToolChoice)DZ($);return{replacedExisting:J}}function T2($){if(bX($.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={...PX},{replacedExisting:X,display:"summarized"}}if(!hX($.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={...qX},{replacedExisting:J,display:"summarized"}}function C2($){if(vX($.model)){DZ($);let X=Object.hasOwn($,"thinking");return $.thinking={...EX},{replacedExisting:X,display:"summarized"}}if(!h7($.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={...AX},{replacedExisting:J,display:"summarized"}}function S2($){if(!kX($.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={...SX},{replacedExisting:J,display:"summarized"}}function E2($,J){if(!J.enabled)return M7($,!1),delete $.cache_control,delete $.cacheControl,{};if(J.mode==="automatic")return _2($),{};if(J.mode==="hybrid")return B2($,J.hybridStandbyAnchor);M7($,!0),delete $.cacheControl;let Y=[];if(NZ($,(X)=>{if(G0(X)&&KZ(X))Y.push(X)}),G0($.cache_control))d7($,!0),Y.push($);for(let X of Y.slice(0,-4))GZ(X);return{}}function A2($){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 P2=1000,q2=new RX(P2);function R2($,J,Y){return q2.resolve($,J,!Y)}function S0(){return performance.now()}function I$($){return Math.round($*10)/10}function I7($){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 M9($,J={}){try{let Y=S0(),X=JSON.parse($);J.perf?.("parse",{ms:I$(S0()-Y),inputBytes:$.length,...I7(X)});let z=S0(),V=Array.isArray(X.messages)?X.messages.length:void 0;rX(X.messages);let j=A2(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=F2(X),A=A7(X,J.serverSideFallbackEnabled===!0),x=w2(X),l=T2(X),i=C2(X),H0=S2(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(c3(X,J.midConversationEffortEnabled===!0,J.midConversationEffortPlan,J.midConversationEffortResolvedPlan,J.midConversationEffortPlanVersions),QX(X,J.thinkingPrefixMismatchBehavior??"account-default"),J.turnEndNoteEnabled)BX(X,{tools:J.turnEndNote?.tools});let g=S0(),V0=Array.isArray(X.messages)&&X.messages.some((u)=>u.role==="user")?wX(X.messages,void 0,TX,J.sessionId?R2(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(V0)});let P=S0();if(X.system=K2(X.system),J.perf?.("system_identity",{ms:I$(S0()-P),systemBlockCount:Array.isArray(X.system)?X.system.length:0}),V0&&Array.isArray(X.system))X.system.unshift({type:"text",text:V0});let J0=S0(),b0=E2(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&&gX(X.model))X.speed="fast";else if(X.speed==="fast")delete X.speed;if(J.cacheDiagnosticsPreviousMessageId!==void 0&&nX(X).split(",").includes(C4))j9(X,J.cacheDiagnosticsPreviousMessageId);let O0=S0();if(J.identity)UX(X,J.identity);J.perf?.("metadata",{ms:I$(S0()-O0),hasAccountUuid:Boolean(J.identity?.accountUuid)});let B0=S0();if(J.modelRemapEnabled===!0)dX(X);let o=$2(X.tools),R0=J2(X);J.perf?.("prefix_tools_stringify",{ms:I$(S0()-B0),outputBytesBeforeSign:R0.length,...I7(X)});let W$=S0(),v0=await oX(R0);return J.perf?.("cch_sign",{ms:I$(S0()-W$),outputBytes:v0.length}),J.onToolNameMap?.(o),v0}catch(Y){if(Y instanceof C0||Y instanceof aX)throw Y;return $}}var o7=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 o7.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 x2($,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=x2(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
19
|
|
|
20
20
|
`),Y=$.indexOf(`\r
|
|
21
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
|
|
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(!
|
|
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
|
|
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 f7($,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(o7.encode($.pending).byteLength>Y)$.pending="",$.disabled=!0,$.pendingOverflowCount++}function I2(){return{pending:"",completed:!1,disabled:!1,resyncCarry:""}}function f2($,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 k2(){return{pending:"",disabled:!1}}function k7($){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 v2($,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+=k7(j),z+=N}if(X&&$.pending)z+=k7($.pending),$.pending="";return z}function h2(){return{pending:"",disabled:!1,resyncCarry:""}}function b2($,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 g2($,J){let Y=$?`${$}: ${J}`:J,X=Error(`Anthropic stream error: ${Y}`);if(X.code="ECONNRESET",X.syscall="anthropic-sse",$)X.providerErrorType=$;return X}function y2($){let J=h7($)?"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 m2($){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(!b2(N,F))return null;return g2(N,F)}function p2($){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 v7($,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=p2(j);if(N!==void 0)X?.(N);let F=m2(j);z??=F}if(new TextEncoder().encode($.pending).byteLength>Y){let V=$.pending;$.pending="",$.disabled=!0,$.resyncCarry=V.slice(-3)}return z}function c2($){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 r7($,J={}){if(!$.body)return $;let Y=$.body.getReader(),X=new TextDecoder("utf-8",{ignoreBOM:!0}),z=new TextEncoder,V=J.responseMode==="json",j=X2(J.toolNameMap,V),N=!0,F="",E=0,A=0,x=0,l=0,i=0,H0=!1,g=!1,V0=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{}},R0=h2(),W$=J.onContentFilter||J.onComplete?I2():void 0,v0=J.laneStart&&J.laneStartOAuthServed!==!1?k2():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?P7({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$=f2(W$,h0,l$);if(k$?.type==="content-filter"&&J.onContentFilter)return l4()?y2(J.contentFilterModel):null;if(k$?.type==="complete")J.onComplete?.(k$.finishReason);return null},u4=(h0,k$=!1)=>v0?v2(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:R0.pending.length,sseFinishPending:W$?.pending.length??0,sseFinishDisabled:W$?.disabled??!1,serverFallbackPending:L1?.pendingLength()??0,rewriteMs:I$(i),totalMs:I$(S0()-P),...J0?c2(J0):{},...h0}),J1=(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,J1("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)f7(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$):v7(R0,E0,l$,J.onRelayUpstreamError)??b1(A$);if(T0)throw J1("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(J1("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)f7(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(),_$=L1?L1.push(E$):E$,Z4=u4(_$),F1=V?b1(Z4):v7(R0,E$,l$,J.onRelayUpstreamError)??b1(Z4);if(F1)throw J1("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$-V0>5000)V0=N$,J1("stream_tool_prefix_progress",{readMs:J4,lastChunkBytes:v$.byteLength});if(Y4)return}catch($4){let v$=zZ($4,J.toolNameMap);if(J1("stream_tool_prefix_error"),v$ instanceof k4)await VZ(Y,v$),g=!0,o(J.onToolNameRefusal);else B1();throw v$}}},async cancel(h0){J1("stream_tool_prefix_cancel");try{await Y.cancel(h0)}finally{B1()}}});return new Response($J,{status:$.status,statusText:$.statusText,headers:$.headers})}import{mergeNativeSettingsSection as zW,nativeCacheKeepAlways as VW,nativeSettingsRecord as jW}from"@cortexkit/anthropic-auth-core";var E8="physical send failed before a response",PG="__OPENCODE_ANTHROPIC_AUTH_COMMAND_HANDLED__",A8="~effect/http/HttpServerResponse",P8="~effect/http/Cookies",q8="~effect/http/HttpBody",qG="~effect/ErrorReporter/ignore",RG="https://api.anthropic.com/v1/messages",u8=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 u8.add(J),J}async function R8($,J){if(!J?.aborted)return;await $.body?.cancel().catch(()=>{}),J.throwIfAborted()}function vZ($,J){return($.status!==400||!u8.has($))&&SG($.status,J)}function M8($){return v.warn("effort-history","refused uncorrelated per-message effort request",{check:$.check,...$.details}),a9($.message)}function x8($){return v.warn("transform","refused request ending on assistant history",{check:$.check,...$.details}),a9($.message)}var MG=60000,I8=60000,d8=240,xG=d8,IG=600000;function fG($,J){return($?.accounts??[]).some((Y)=>Y.id===J&&k0(Y)&&w0(Y))}function kG($){let J=($?.accounts??[]).find((Y)=>k0(Y)&&w0(Y));if(e$($)==="fallback-first"&&J)return{activeId:J.id,route:"fallback-first"};return{activeId:"main",route:"main"}}function f8($,J){if($?.activeId==="main"||$?.activeId&&fG(J,$.activeId))return{activeId:$.activeId,route:$.route};return kG(J)}function i8($,J,Y){let X=Date.now()-$.lastUpdated;if(!$.activeId||X<0||X>IG)return f8(Y,J);return f8({activeId:$.activeId,route:$.route},J)}async function vG($,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{...i8($,X,Y),freshStorage:X}}async function hG($){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 c8();return{...i8(Y,J),freshStorage:J}}var bG=4,gG=25,yG=1,k8=!1;function r9(){return process.env.OPENCODE_ANTHROPIC_AUTH_PERF==="1"}function X0(){return performance.now()}function q0($){return Math.round($*10)/10}function v8($){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 mG(){if(k8||!1||!r9())return;k8=!0;let $=100,J=250,Y=X0()+$;setInterval(()=>{let X=X0(),z=X-Y;if(Y=X+$,z<J)return;$1("[perf] opencode event_loop_lag",{lagMs:q0(z),thresholdMs:J})},$).unref?.()}function pG($){let J=X0(),Y={requestId:String(yG++),start:J,last:J,mark(X,z){let V=X0();if(r9())$1("[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=X0();if(r9())$1("[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())$1("[perf] opencode request start",{requestId:Y.requestId,...$});return Y}function n8($,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 h8($,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?n8(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 cG(){throw Object.assign(Error(PG),{[A8]:A8,[qG]:!0,status:204,statusText:void 0,headers:{},cookies:{[P8]:P8,cookies:{}},body:{[q8]:q8,_tag:"Empty"}})}function lG($){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 uG($){if($.some((J)=>J.includes("<use_parallel_tool_calls>")))return!1;return $.push(e6),!0}var dG={input:0,output:0,cache:{read:0,write:0}},iG=1000;function f$($){return $}function nG($,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 oG($){let J=c4($);return`${J} recovery window complete. Returning to ${J}.`}function c4($){if(c6($))return"Opus 5.5";if(p6($))return"Opus 5";if(m6($)){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 rG($,J){return`Anthropic safety fallback active: ${c4($)} → ${c4(J)}. Follow-up requests may remain on the fallback model for about one hour.`}function sG($){return`Anthropic safety fallback ended. Returning to ${c4($)}.`}function aG(){return{input:f9.input,output:f9.output,cache:{read:f9.cacheRead,write:f9.cacheWrite5m},tiers:[{tier:{type:"context",size:G6},input:x9.input,output:x9.output,cache:{read:x9.cacheRead,write:x9.cacheWrite5m}}]}}function tG($){let J=$["claude-opus-4-8"]??$["claude-opus-4-5"]??Object.values($)[0];if(!J)return $;return{...$,...Object.fromEntries(Object.values(Y6).map((Y)=>{let X=x6(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:aG(),limit:{...J.limit??{},context:X6,output:W6},capabilities:{...J.capabilities??{},reasoning:!0,attachment:!0,toolcall:!0},release_date:z6,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:_6,output:L6},capabilities:{...J.capabilities??{},reasoning:!0,attachment:!0,toolcall:!0},release_date:O6,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:V6,output:j6},capabilities:{...J.capabilities??{},reasoning:!0,attachment:!0,toolcall:!0},release_date:K6,variants:s9()}}}}var eG=["low","medium","high","xhigh","max"];function s9($=eG){return Object.fromEntries($.map((J)=>[J,{thinking:{type:"adaptive",display:"summarized"},effort:J}]))}function $W($){return Object.fromEntries(Object.entries($).map(([J,Y])=>{let X=Y.api?.id??Y.id??J,z=QG(X)?.efforts.variants;return[J,z?{...Y,variants:s9(z)}:Y]}))}function JW($){return Object.fromEntries(Object.entries($).map(([J,Y])=>[J,{...Y,cost:dG}]))}var ZW=2000,hZ="@cortexkit/opencode-anthropic-auth",p4;function YW(){if(p4!==void 0)return p4;p4=hZ;try{let $=JSON.parse(u2(i2(d2(n2(import.meta.url)),"..","package.json"),"utf8"));if($.name===hZ&&typeof $.version==="string"&&$.version.trim())p4=`${hZ}@${$.version.trim()}`}catch{}return p4}function XW(){return["The Claude menu opens in OpenCode's terminal window when the plugin's TUI part is loaded.",`In the terminal, add "${YW()}" to the plugin list in tui.json (or rerun setup), then restart OpenCode.`,"In OpenCode Desktop, use the text menu below."].join(`
|
|
25
|
+
`)}function GW(){return process.env.OPENCODE_CLIENT==="desktop"}function b8(){return process.env.OPENCODE_ANTHROPIC_AUTH_CLAUSTRUM_CONNECTION_FILE?.trim()||process.env.CLAUSTRUM_SUBC_CONNECTION?.trim()||void 0}var WW=async($,J={})=>{let Y={setTimeout:globalThis.setTimeout,clearTimeout:globalThis.clearTimeout,setInterval:globalThis.setInterval,clearInterval:globalThis.clearInterval,...J},X=J.authorize??a7;mG();let{client:z}=$,V=globalThis.fetch,j=R6(),N=k6(v6(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 F6({role:"opencode1",onLockEvent:J.nativeLocal?.onLockEvent})}catch(Z){let G=EG(Z);if(G)throw Error(G,{cause:Z});throw Z}let g=await BG(j,void 0,H0.layout),V0=H0.kind==="state-home"?void 0:H0.registration,P=r2({paths:g,host:"opencode",local:J.nativeLocal,vault:J.claustrumScopedConnect?{connect:J.claustrumScopedConnect}:void 0}),J0=P.quotaObservations,b0=null;function O0(Z){return s6(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||R1(_.entry.quota,K,_.entry.checkedAt)<=Date.now())return;return _}function R0(Z,G,W,K,_=b0){let L=o(Z,G,W,_);if(!L)return K;if(!K)return{...L.entry,refreshAfter:R1(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:R1(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 R0(Z.id,K,Z.accountIdentity,Z.quota?{quota:Z.quota,checkedAt:_,refreshAfter:R1(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)=>zW(W,Z,G)),u()}let l4=async(Z)=>{return await P.updateSettings((G)=>({...G,claudeCache:{...jW(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(VW),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}),J1=(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 _$(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=U6("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"&&e$(r)!=="sticky-balanced";if(K&&(V1(r)&&!K1(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=o6(r);if(L0)throw L0}if(r instanceof d6&&["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=r6(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=E7(process.env.OPENCODE_ANTHROPIC_AUTH_FALLBACK_MODE),M0=new sJ,O1=new Map;function YJ(Z){for(let{recoveryKey:G}of M0.sourceWarmsForSession(Z))M0.dropSourceWarm(G);for(let G of $$.trackedSessions()){let W=R4(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,Z1=new Map,z4=new Map,WJ=new Map,V4=L7(),bZ=new WeakSet,zJ=new WeakMap;async function gZ(){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 FG({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 LG({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 yZ(Z,G,W=!1){if(!Z||Z.quota?.enabled===!1||!G||e$(Z)==="sticky-balanced"||j1(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||R1(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 mZ(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=++X3,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!==X3){let U1=TJ!==Z||q$!==y0;return{quotaKey:y0,providerAccountUuid:Q0,generation:b.getMainQuotaIdentityGeneration(),stale:U1,state:D$}}if(await mZ(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 _G:null,Y1=new Map,pZ=new Map,N1=new Set,D1=new AbortController,cZ=!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 lZ(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(Y1.values())].filter((W)=>W.persistence==="failed"&&W.profile!==void 0&&G.has(W.accountId))}async function o8(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 uZ(Z,G,W=lZ(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 o8(L,D.hydration,_,D.profile);return L}function r8(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)pZ.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&&Y1.get(G)===L)Y1.delete(G)}),N1.add(L.fetched),L.fetched.then(()=>N1.delete(L.fetched)),L}function s8(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 dZ(Z,G){return l9(Z.profile,G)&&t6(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)||dZ(O,W))continue;let Q=o4(O.id,O.accountIdentity),H=Y1.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=Y1.get(o4(O.id));if(q&&KJ(q,O))H=q,_.set(O.id,q)}if(H?.failed)continue;if(!H&&l9(pZ.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=r8(O,Q,Z),Y1.set(Q,H)}if(O.accountIdentity===void 0)_.set(O.id,H);K.push(s8(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&&!Y1.has(Q)&&KJ(H,O))Y1.set(Q,H);if(dZ(O,D))continue;let q=await r4(Y1.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 a8(Z,G,W,K){if(process.env.OPENCODE_ANTHROPIC_AUTH_DISABLE_PROFILE_HYDRATION==="1")return Z;return(await s4(W)).policyStorage}let iZ=new Set;async function t8(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:R1(Q.quota,O.policyStorage,G.checkedAt)}}function e8(Z){v.warn("quota","failed to persist harvested response quota",{error:Z instanceof Error?Z.message:String(Z)})}function $Y(Z){let G=Z instanceof Error?Z.name:typeof Z,W=Z instanceof Error?Z.message:String(Z),K=`${G}:${W}`;if(iZ.has(K))return;iZ.add(K),v.warn("quota","failed to normalize response quota headers",{error:W})}function JY(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 ZY(Z,G){if(!VJ)return;if(Z.accountId==="main"&&!Z.mainQuotaIdentity?.quotaKey)return;let W=await u(j)??z1(),_=(await H1?.())?.type==="oauth",L=Z.accountId==="main"?W.main:W.accounts.find((p)=>p.id===Z.accountId),D=JY(L),O=H6({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 YY(Z){v.debug("quota","failed to publish quota header feed",{error:Z instanceof Error?Z.message:String(Z)})}function nZ(Z,G){try{if(!u6(Z)){v.trace("quota","skipped non-quota response headers",{account:G.accountId});return}let W=a6(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>=iG){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 t8(G,{quota:W,checkedAt:L,refreshAfter:L},_)}catch(y){e8(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 ZY(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(YY),v.trace("quota","response quota awaiting publication",{account:G.accountId})}catch(W){$Y(W)}}let oZ=Promise.resolve();function T1(Z=!1,G=!1,W,K){let _=oZ.then(()=>XY(Z,G,W,K));return oZ=_.then(()=>{},()=>{}),_}async function XY(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&&R1(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&&M1(O))throw O;L.add(D.id),X7(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)||V1(Z)&&!K1(O,Z,_.id,G?.modelId))continue;if(_$(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(M1(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()<=G3(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,rZ=new Set;async function GY(){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)=>!rZ.has(K));if(rZ=G,W)await T1(!1,!1,void 0,"background");await m1()}let NJ=OJ&&_$(z$)?P.vault.watch({intervalMs:J.scopedRosterPollIntervalMs??2000,shouldRefresh:()=>process.env.OPENCODE_AUTH_CONTENT===void 0,onRefresh:GY,setInterval:Y.setInterval,clearInterval:Y.clearInterval}):void 0,WY=OJ?(NJ?NJ.ready.then(()=>LJ()):LJ()).catch(()=>{}):Promise.resolve(),DJ=OJ?Y.setInterval(()=>{LJ().catch(()=>{})},A6+v8(I8)):null;DJ?.unref?.();let zY=(Z,G)=>{let W=yJ({id:Z,role:"fallback"},G);return W==="na"?"off":W},HJ=new fJ,VY=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 D6(G.join(","))}}function sZ(Z){try{if(!Z.request)return;let G=A3({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",P3(G.record));let W=VY.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 aZ(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(()=>{}),sZ({...K,message:G,receivedAt:Date.now()})}function jY(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 tZ(Z,G){let W=Promise.resolve(wZ(G.dump,{status:G.status,message:null,complete:!1})).catch(()=>{});i$.set(Z,{...G,dumpWrite:W})}let X1=null,a4=null;function t4(Z){return Z!==null&&typeof Z==="object"&&gJ(Z)==="R"}function KY(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 _Y(){if(a4){let Z=await a4();return g6("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 DG("opencode",m8())}async function eZ(){if(await f1("opencode")!=="claustrum")throw Error("This host is not connected to the credential vault; run setup to connect it first");if(await _Y()!=="absent")throw Error("OpenCode already holds an Anthropic login; remove it before choosing the vault login")}let LY={label:"Claude via credential vault",type:"oauth",authorize:async()=>{return await eZ(),{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 eZ();let Z=BZ("anthropic");return{type:"success",access:Z.access,refresh:Z.refresh,expires:Z.expires}}}}},QJ=new Z6({directory:process.env.OPENCODE_ANTHROPIC_AUTH_CACHEKEEP_REGISTRY_DIR||I6("opencode")}),e4=[],y1=new Map,$$=new J6({loadStorage:()=>u(j),fetchImpl:M4,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)M0.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;sZ({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"),[$6])),Q.speed==="fast")R9(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=M0.sourceWarmForTarget(G.id);if(!Q||Q.oauthAccountId!==G.oauthAccountId||Q.accountIdentity!==void 0&&O.accountIdentity!==Q.accountIdentity){M0.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=M0.sourceWarmForTarget(Z.id);if(!W)return $$.untrack(Z.id),{ok:!1,reason:"source-round-ended"};if(W.warmsSinceUserTurn>=N6(W.model))return M0.dropSourceWarmForTarget(Z.id),{ok:!1,reason:"source-warm-idle-cap"};let K=e7(G),_=e7(W.bodyText);if(!K||!_||K!==_)return M0.dropSourceWarmForTarget(Z.id),{ok:!1,reason:"source-prefix-mismatch"};return{ok:!0}}});async function OY(Z){let G=Y$(Z.requestedModel);if(!G)return;let W=u1(Z.sessionId,G),K=M0.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)M0.dropSourceWarm(Z.recoveryKey)}async function NY(Z){if(!X1||!(await X1()).active)throw Error("Native main OAuth activation is not available");let G=await T0("main",Z);return{...G,credentialAccountId:f$(G.accountIdentity)}}async function DY(){let Z=await NY();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 HY(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 UY(Z){let G=performance.now(),W,K,_,L="",D;try{if(Z==="main"&&(!X1||!(await X1()).active))throw Error("Native main OAuth activation is not available");let O=h4(RG,{baseURL:""}),Q=O.url?.toString()??O.input.toString();Q9(Q);let H=await T0(Z,void 0,void 0,t7);if(W=H.accessToken,_=H.scopedAttempt,K=t7,!W)return{ok:!1,error:"prime: no access token available"};let q=e2(),y=E0(H.accountIdentity),p=await M9(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 M4(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 R$=(await Q0.json().catch(()=>null))?.usage,M$=R$&&(Number.isFinite(R$.input_tokens)||Number.isFinite(R$.output_tokens))?{inputTokens:Number.isFinite(R$.input_tokens)?R$.input_tokens:void 0,outputTokens:Number.isFinite(R$.output_tokens)?R$.output_tokens:void 0}:void 0;return BJ.set(Z,A0),{ok:!0,status:Q0.status,ms:D$,...M$&&{usage:M$}}}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 $3={storagePath:j,loadStorage:()=>u(j),getAccountFingerprint:async(Z)=>{if(Z==="main"&&(!X1||!(await X1()).active))return;let G=await T0(Z),W=G.scopedAttempt??G.localSubject;if(!W)return;let K=await P.getOrCreateAuthLineage(Z,W);return K?_1(K):void 0},refreshQuota:async(Z)=>{if(Z==="main")return DY();return HY(Z)},sendPrime:UY,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},J3=Y7(j,()=>new $G($3),{slot:$.directory??"default",rebind:(Z)=>Z.updateOptions($3)}),C1=J3.manager;if(c9(z$))C1.start();async function $9(){return e4=await QJ.list($$.trackedSessions()),e4}let Z3=J.cacheKeepAggregateRefreshIntervalMs??1e4,FJ=Z3>0?Y.setInterval(()=>{$9().catch(()=>{})},Z3):void 0;if(FJ?.unref?.(),n9({enabled:p9(z$),mode:g4(z$)}),fZ(qZ(z$)),kZ(MZ(z$)),!process.env.OPENCODE_ANTHROPIC_AUTH_LOG_LEVEL)CG(AZ(z$)??"info");let wJ=null,QY=async()=>{V0?.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{J3.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"},BY=p8(),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=_$(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?_1(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=zY(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(),_1(O.refresh))&&j1(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:T6(Z?.relay),fastMode:RZ(),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 l8(L,BY,{routingAuthoritative:K,resolvePreservedRouting:K?void 0:async(D)=>{let O=await vG(D,()=>u(j),{activeId:L.activeId,route:L.route}),Q=await uZ(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=lZ(Z);if(L.length>0)return uZ(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 Y3(){return{storage:await u(j),access:void 0}}async function m1(){await $9().catch(()=>{});let{storage:Z,access:G}=await Y3();g$(Z,{activeId:X$.activeId,route:X$.route,mainAccessToken:G,mainRefreshToken:void 0,routingAuthoritative:!1})}function FY(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,X3=0,Y9=new Map,CJ=!1,S1=null,X9=0;function G3(Z){let G=Z?.refresh?.refreshBeforeExpiryMinutes??xG;return Math.max(d8,G)*60000}function wY(Z){return Z?.refresh?.enabled!==!1}async function W3(Z=!1){let G=new Map;if(Z){if(X1&&(await X1()).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(...t2(W.policyStorage,G));let L=Math.max(0,...W.accounts.map((D)=>I1(D.quota)));return a2({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)j3(Z.sessionId,K)}function z3(Z,G){let W=Z1.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)}Z1.delete(Z),Z1.set(Z,W);while(Z1.size>128){let K=Z1.keys().next().value;if(typeof K!=="string")break;Z1.delete(K)}}function V3(Z,G){return typeof G==="string"&&Z1.get(Z)?.has(G)===!0}function j3(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),TY(Z,G)};if(G===0)setImmediate(W);else setTimeout(W,gG*G)}function AJ(Z,G){if(G+1<bG)EJ(Z,G+1)}async function TY(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 CY(Z)}function CY(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 h8($,Z,_,{noReply:!0,beforeActiveAssistant:!0,canSend:()=>V$.has(Z)&&L(),onPreparedMessageId:(O)=>z3(Z,O),latestPreparedMessageId:()=>[...Z1.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 SY(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,rG(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,sG(Z.requestedModel))}function EY(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=ZG(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=YG(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 S6({argumentsText:Z,enabled:N8(W),always:L8(W),window:K,hybridActive:O8(W),trackedSessions:_.length,trackedSessionDetails:_,nextPrewarmAt:L})}async function K3(Z){let G=XG(Z);if(G.type==="enable"||G.type==="disable"){let _=G.type==="enable";return await e9(_),fZ(_),v.info("commands","dump changed",{enabled:_}),Z8({argumentsText:Z,enabled:_,settingsPath:await P.getSettingsPath()})}let W=await u(j),K=qZ(W);return fZ(K),Z8({argumentsText:Z,enabled:K})}async function _3(Z){let G=GG(Z);if(G.type==="enable"||G.type==="disable"){let _=G.type==="enable";return await J1(_),kZ(_),v.info("commands","fast mode changed",{enabled:_}),Y8({argumentsText:Z,enabled:_,settingsPath:await P.getSettingsPath()})}let W=await u(j),K=MZ(W);return kZ(K),Y8({argumentsText:Z,enabled:K})}async function L3(Z,G){if(WG(Z).type==="fire"){if(!G)return`## Claude Start Failed
|
|
26
26
|
|
|
27
|
-
- OpenCode did not provide a session ID.`;try{return await
|
|
27
|
+
- OpenCode did not provide a session ID.`;try{return await r3($.client,G),G8({argumentsText:Z}).text}catch(K){return`## Claude Start Failed
|
|
28
28
|
|
|
29
|
-
- ${K instanceof Error?K.message:String(K)}`}}return G8({argumentsText:Z}).text}async function qJ(Z,G){let W=
|
|
30
|
-
${H.url}`,knobs:{oauthUrl:H.url},accounts:t$(await u(j)??
|
|
29
|
+
- ${K instanceof Error?K.message:String(K)}`}}return G8({argumentsText:Z}).text}async function qJ(Z,G){let W=jG(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 gZ()).router.clear(G),v.info("commands","sticky routing assignment reset");let K=await u(j);return z8({argumentsText:Z,mode:e$(K)})}async function O3(Z){let G=zG(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 N3(Z){let G=VG(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 E6({argumentsText:Z,enabled:K,accounts:C1.stats(_)}).text}async function H4(Z,G,W){let K=W??JG(Z);if(K.type==="add-apikey"){if(!K.apiKey)return{text:"API key is required",accounts:t$(await u(j)??z1())};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)??z1())};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)??z1())}}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)??z1())};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)??z1())};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??z1())}}catch{return{text:"OAuth exchange failed due to a network error. Please try again.",accounts:t$(await u(j)??z1())}}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 a8(_,H,AbortSignal.timeout(3000),p1)}let L=K.type==="status"?await D3(_):void 0,D=await C6({argumentsText:Z,storage:_??{version:1,accounts:[]},path:j,claustrum:K.type==="status"&&!L?await J8(b8()):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 UG(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 D3(Z){let G=Z??await u(j),W=G??z1(),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(b8()),L=y4(W),D=L==="claustrum"?await w8(m9("opencode"),QZ):void 0;return{accounts:K,claustrumDetection:_.status,custodyMode:L,...D&&{claustrumEnrollment:D}}}async function AY(Z,G,W){if(Z==="claude-quota")return{command:Z,text:await W3(),knobs:{}};if(Z==="claude-start"){let O=await L3(G,W);return{command:Z,text:O,knobs:{}}}if(Z==="claude-logging"){let O=await O3(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 D3(),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
31
|
`)}};if("knobs"in O&&O.knobs)Object.assign(H,O.knobs);return{command:Z,text:Z9?`${O.text}
|
|
32
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:
|
|
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:e$(Q)}}}if(Z==="claude-fast"){let O=await _3(G),Q=await u(j);return{command:Z,text:O,knobs:{enabled:MZ(Q)}}}if(Z==="claude-dump"){let O=await K3(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 N3(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 PY(Z){return{text:"Open /claude to manage native Claude settings.",knobs:{}}}let qY=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 W3(!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 K3(Z.action==="dump-on"?"on":"off");break;case"fast-on":case"fast-off":W=await _3(Z.action==="fast-on"?"on":"off");break;case"prime-on":case"prime-off":W=await N3(Z.action==="prime-on"?"on":"off");break;case"logging-level":W=await O3(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 L3("",Z.sessionId);break;default:throw Error(`Unsupported native menu action: ${Z}`)}return SJ(await u()).catch(()=>{}),{ok:!0,text:W.split(`
|
|
34
34
|
`).filter((K)=>!K.includes("/claude-")).join(`
|
|
35
|
-
`)}},
|
|
36
|
-
`)}return(await
|
|
35
|
+
`)}},RY=async(Z,G)=>{if(Z==="account"){let _=await s4(AbortSignal.timeout(3000)),L=_.mode==="claustrum"?await w8(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 AY({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
37
|
`).filter((_)=>!_.includes("/claude-")).join(`
|
|
38
|
-
`)},
|
|
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=
|
|
38
|
+
`)},RJ=new Map;function H3(Z){let G=T9(Z),W=RJ.get(Z);if(!W||W.interactive!==G)W={interactive:G,command:a3({host:"opencode",dispatch:qY,readStatus:RY,readAccounts:()=>P.read(),readSeparateHostLoginNotice:async()=>{if(await f1("opencode")!=="local")return!1;let K=await P.read(),_=F8(await T8(g));return K.mode==="local"&&(_==="committed"||_==="retired")&&C8(K)&&t4(await a4?.())},interactive:G})},RJ.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 U3(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 xY(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=U3(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=U3(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
40
|
`))}if(!K.length)return;let L=K.join(`
|
|
41
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=
|
|
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=y8($.directory);try{wJ=await F7(Z,()=>B7({dir:Z,drain:U7,apply:PY,applyMenu:(G)=>H3(G.sessionId??"").apply(G)}))}catch{v.warn("rpc","native menu server unavailable")}}let Q3={"experimental.chat.messages.transform":async(Z,G)=>{let W=G.messages;g1.observeMessages(W);let K=m3(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(G7(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"&&!V3(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"){M0.clearSession(K),YJ(K),RJ.delete(K),A.delete(K),XJ.clearSession(K),b$.delete(K),P$.delete(K),V$.delete(K),GJ.delete(K),n4.delete(K),Z1.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 g8)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(!lG(Z))return;uG(G.system)},provider:{id:"anthropic",async models(Z,G){let W=$W(tG(Z.models));if(G.auth?.type!=="oauth"||!l6(z$??{}))return W;return JW(W)}},"command.execute.before":async(Z)=>{if(Z.command!=="claude")return;let G=await H3(Z.sessionID).open(Z.sessionID),W=T9(Z.sessionID),K=!1;if(W)YZ(G,Z.sessionID);else if(!GW()&&!H7(Z.sessionID))W=await D7(G,Z.sessionID,{timeoutMs:J.tuiPickupTimeoutMs??ZW,setTimeout:Y.setTimeout,clearTimeout:Y.clearTimeout}),K=!W;if(!W){let _=[...K?[XW(),""]:[],G.menu.title,...G.menu.sections.flatMap((L)=>[`
|
|
43
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,
|
|
44
|
+
`);await h8($,Z.sessionID,_)}cG()},auth:{provider:"anthropic",async loader(Z,G){X1=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(!cZ&&PZ(W,"anthropic")&&process.env.OPENCODE_ANTHROPIC_AUTH_DISABLE_PROFILE_HYDRATION!=="1"){cZ=!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"&&!KY(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 NG(P,H),L0=p==="claustrum"?"committed":F8(await T8(g)),y0=C8(r);if(_(y,p==="local"&&(L0==="committed"||L0==="retired")&&y0),p==="claustrum"&&!r.accounts.some((x0)=>x0.type==="oauth"&&k0(x0)))throw new B8;let A0=q3(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,R$=o("main",O0(Q0),m0?.accountIdentity,r.policyStorage),M$=Boolean(Q0&&R$?.lineage===O0(Q0)&&R$?.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&&(e$(r.policyStorage)==="fallback-first"||yZ(U1,m0?.accountIdentity,M$))){let x0=r.accounts.find((L$)=>L$.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(M1(x0))throw x0;if(x0 instanceof u$){p0=x0.account;let L$=h6(p0.quota,Q);if(L$!==void 0&&(!Number.isFinite(L$.checkedAt)||(L$.checkedAt??0)+x0.checkIntervalMs<=Date.now())||!IZ(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(M1(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(!wY(B))return;let f=await D();if(f.type!=="oauth")return;if(f.nativeLocalSource==="rotated"||f.nativeLocalSource==="adopted")return;if(f.expires&&f.expires-Date.now()>G3(B))return;await q()}catch{v.warn("refresh","native main OAuth background refresh unavailable")}};S1=Y.setInterval(()=>{U()},MG+v8(I8)),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 f=Reflect.get(B,"error");return Reflect.get(B,"type")==="error"&&typeof f==="object"&&f!==null&&Reflect.get(f,"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"),s7(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 R0("main",U?.routingLineage,U?.providerAccountUuid,b.getMain(U?.quotaKey??q$),B)},n$=function(U,B){if(!U&&!B?.providerAccountUuid)return!1;let f=H$(B);return Boolean(f&&(U||f.quota.accountIdentity===B?.providerAccountUuid)&&f.refreshAfter>Date.now()&&j4(f.quota)&&(f.quota.source!=="headers"||o("main",B?.routingLineage,B?.providerAccountUuid)?.generalExhausted===!0||["five_hour","seven_day"].some((k)=>f.quota.fieldSources?.[k]==="poll"&&(f.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,f){let k=t4(await Z());await L(k),f?.throwIfAborted();let d=await T0("main",f,U,B,"refresh");return await L(k),f?.throwIfAborted(),d.accessToken}if(K==="local")y();b.seedFallbacksFromAccounts((z$?.accounts??[]).filter(w0));let p=await hG(()=>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 f=X0(),k=U.body.getReader(),d=[],$0=0,m=Q6({maxFrameBytes:65536}),T=!1,_0=!1,Z0=!0;while(!_0&&$0<65536){let{done:M,value:a}=await k.read().catch(async(w)=>{let C=zZ(w,i$.get(U)?.toolNameMap);if(C!==w)await VZ(k,C);throw C});if(M)break;d.push(a),$0+=a.byteLength;let Y0;try{Y0=m.push(a)}catch{break}for(let w of Y0){let C=KG(w6(w,{streamStart:Z0}));if(Z0=!1,C.data===void 0)continue;T=A0(C.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(Y0){for(let w of d)Y0.enqueue(w);Y0.close()}});B?.mark("inspect_stream_first_event",{ms:q0(X0()-f),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:Y0}=await k.read();if(a){M.close();return}M.enqueue(Y0)},cancel(M){return k.cancel(M)}});B?.mark("inspect_stream_first_event",{ms:q0(X0()-f),bytes:$0,rateLimited:!1});let S=new Response(W0,{status:U.status,statusText:U.statusText,headers:U.headers});return z9(i$,U,S),{response:S,rateLimited:!1}}async function U1(U,B,f,k){if(N$(),!B){let m=H$(f);if(!f?.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!==f.providerAccountUuid||f.routingLineage&&B0(T.localSubject,T.scopedAttempt)!==f.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)!==f?.routingLineage)throw Error("Primary identity changed before API fallback");if(!n$(B,f))throw Error("API fallback requires fresh general primary OAuth exhaustion");return d}async function R$(U,B,f,k,d="api_fallback",$0,m,T,_0){if(m)m.oauthAccountId=void 0,m.opusCacheAnchor=void 0;let Z0=X0(),W0=v4(U,B),S=W0.get("x-session-affinity")||W0.get("x-opencode-session"),M=y0(W0),a=W0.get(l1)??void 0,Y0=w1.resolveHeader(a),w=Y0?w1.versionsFor(Y0.sessionId,Y0.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 C=await m4(U,B),n=!1,U0=null,h,t0=typeof C==="string"?C.length:void 0;if(C&&typeof C==="string"){let j0=X0(),e0=(()=>{if(!RZ())return!1;try{return D8(JSON.parse(C).model)}catch{return!1}})();try{C=await M9(C,{onToolNameMap:(l0)=>{h=l0},cache1hEnabled:!M&&a1(),cache1hMode:r1(),fastModeEnabled:e0,sessionId:S||void 0,midConversationEffortEnabled:!1,midConversationEffortPlan:a,midConversationEffortResolvedPlan:Y0,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 S8)return x8(l0);throw l0}if(D$(W0,f),W0.set("anthropic-beta",U8(W0.get("anthropic-beta"),[])),e0)R9(W0);try{n=JSON.parse(C).stream===!0}catch{}k?.mark("rewrite_body",{route:d,ms:q0(X0()-j0),originalBytes:t0,rewrittenBytes:C.length,cacheEnabled:!M&&a1(),cacheMode:r1(),fastModeEnabled:e0,subagent:M})}else D$(W0,f);let U$=await UJ(W0),Q$=await U1(f.id,T,_0,B?.signal??void 0);f={...f,...Q$},D$(W0,f);let c0=h4(U,{baseURL:f.baseURL}),c1=X0(),B$=g9([f.apiKey??""],n?"event-stream":"http"),O$;try{O$=B$.redactResponse(await fetch(c0.input,{...B,body:C,headers:W0,...jZ()&&{tls:{rejectUnauthorized:!1}}}))}catch(j0){let e0=B$.redactError(j0);if(B$.dispose(),typeof C==="string")await y9({affinity:S,route:d,error:E8,bodyText:C,url:c0.url?.toString()??e1(c0.input),method:h1(U,B),headers:W0});throw e0}if(typeof C==="string")U0=await y9({affinity:S,route:d,status:O$.status,bodyText:C,url:c0.url?.toString()??e1(c0.input),method:h1(U,B),headers:W0});if(tZ(O$,{source:"turn",toolNameMap:h,accountId:f.id,synthetic:!1,...U$,requestedModel:L0(C),dump:U0,status:O$.status,streaming:n}),k?.mark("send_headers_received",{route:d,ms:q0(X0()-c1),status:O$.status,relayConfigured:!1,totalSendWithAccessMs:q0(X0()-Z0),baseURL:f.baseURL}),O$.ok)F1.publish(()=>P.publishApi(Q$.subject,{lastUsed:Date.now()}));return O$}async function M$(U,B,f,k,d="unknown",$0,m="main",T,_0,Z0=!1,W0,S){s2(f,"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(o2);let a=t4(await Z()),Y0=X0(),w=$0,C=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 O$=W7(n),j0=await m4(U,B),e0=U0?HJ.previousFor(U0):null,l0=e0?.messageId??null,E1,x$=!1,W9=null,U4=null,Q4,R;if(j0&&typeof j0==="string"){let c=X0();try{let D0=JSON.parse(j0);if(typeof D0.model==="string")R=D0.model}catch{}k?.mark("model_parse_for_identity",{route:d,ms:q0(X0()-c),bodyBytes:j0.length})}let I=await T0(m,B?.signal??void 0,void 0,R,m==="main"?"last-main":"serve");if(f=I.accessToken,m==="main"&&W0?.providerAccountUuid&&I.accountIdentity!==W0.providerAccountUuid)throw Error("Main account identity changed after request routing");S=I.scopedAttempt;let e=X0(),z0=E0(I.accountIdentity);k?.mark("resolve_claude_code_identity",{route:d,ms:q0(X0()-e),hasAccountUuid:Boolean(z0.accountUuid)});let t=typeof j0==="string"?j0.length:void 0;if(j0&&typeof j0==="string"){let c=X0(),D0=(()=>{if(!RZ())return!1;try{return D8(JSON.parse(j0).model)}catch{return!1}})(),o0=!h&&a1(),K$=r1(),r$=_0?.plan.downgraded&&_0.plan.standbyCacheAnchor?.oauthAccountId===m?_0.plan.standbyCacheAnchor:void 0;try{j0=await M9(j0,{onToolNameMap:(f0)=>{Q4=f0},cache1hEnabled:o0,cache1hMode:K$,fastModeEnabled:D0,identity:z0,sessionId:U0||void 0,thinkingPrefixMismatchBehavior:b6(await C()),midConversationEffortEnabled:!0,turnEndNoteEnabled:!0,turnEndNote:(await C())?.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 S8)return x8(f0);throw f0}if(_0?.plan.downgraded&&o0&&K$==="hybrid"){let f0=u7(j0);_0.opusCacheAnchor=f0?{...f0,oauthAccountId:m}:void 0}let F4=X0();try{let f0=JSON.parse(j0);o1(n,f,{body:f0,identity:z0,requestClass:O$});let m$=f0.diagnostics,B3=m$&&typeof m$==="object"&&!Array.isArray(m$)&&m$.previous_message_id===l0?l0:void 0;if(B3!==void 0&&n.get("anthropic-beta")?.split(",").map((fY)=>fY.trim()).includes(C4))E1={sessionId:U0??"session-unknown",previousMessageId:B3,...e0?{previousMessageReceivedAt:e0.receivedAt}:{},isSubagent:h,ttlSent:K9(f0)};x$=f0.stream===!0,k?.mark("set_oauth_headers_body_parse",{route:d,ms:q0(X0()-F4),bodyBytes:j0.length,parsed:!0})}catch{o1(n,f,{identity:z0,requestClass:O$}),k?.mark("set_oauth_headers_body_parse",{route:d,ms:q0(X0()-F4),bodyBytes:j0.length,parsed:!1})}if(D0)R9(n);k?.mark("rewrite_body",{route:d,ms:q0(X0()-c),originalBytes:t,rewrittenBytes:j0.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 j0==="string"){let c=await C();if(a1()&&r1()==="hybrid"&&(!h||y6(c))){let D0=X0(),o0=$$.track({sessionId:U0,url:M.url?.toString()??M.input.toString(),headers:n,bodyText:j0,storage:c,cacheMode:"hybrid",oauthAccountId:m,oauthAccountIdentity:I?.accountIdentity,isSubagent:h});if(k?.mark("cachekeep_track",{session:U0,ms:q0(X0()-D0),tracked:o0.tracked,reason:o0.tracked?void 0:o0.reason,bodyBytes:j0.length}),U0&&_0&&!_0.plan.downgraded&&o0.tracked){O1.set(_0.plan.recoveryKey,{...I.accountIdentity!==void 0&&{accountIdentity:I.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&&M0.hasSourceWarmForSession(U0)){if(B$&&B$.sessionId===U0)M0.noteSourceWarmUserTurn(U0,B$.promptId);if(!N8(c)||!a1()||r1()!=="hybrid")YJ(U0);else{let D0=OZ(j0),o0=new Set($$.trackedSessions().map((K$)=>K$.id));for(let{recoveryKey:K$,warm:r$}of M0.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){M0.dropSourceWarm(K$);continue}if(r$.oauthAccountId!=="main"&&!c?.accounts.some((m$)=>m$.id===r$.oauthAccountId&&k0(m$))){if(M0.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(M0.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=I,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$=S,d0=async()=>{w$=!0,I=await F$(),T$=I.scopedAttempt,n.set("authorization",`Bearer ${I.accessToken}`),j$={...j$,accessToken:I.accessToken,anthropicAccountUuid:f$(I.accountIdentity),localSubject:I.localSubject,scopedAttempt:I.scopedAttempt};let c=g9([I.accessToken],x$?"event-stream":"http");try{let D0=(K$,r$)=>M4(M.input,{...B,body:K$,headers:r$,...jZ()&&{tls:{rejectUnauthorized:!1}}}),o0=c.redactResponse(typeof j0==="string"?await TG({url:M.url?.toString()??e1(M.input),body:j0,headers:n,latch:N,send:D0}):await D0(j0,n));if(typeof j0==="string")W9=await y9({affinity:U0,route:d,status:o0.status,bodyText:j0,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 j0==="string")await y9({affinity:U0,route:d,error:E8,bodyText:j0,url:M.url?.toString()??e1(M.input),method:h1(U,B),headers:n,tag:Z0?"start":void 0});throw o0}},P0=await C(),r0;try{r0=await P.getRelayConfig()}catch(c){if(c instanceof i6&&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$=P6(i0,T),j$={accountId:m,accessToken:f,authLineageId:T,anthropicAccountUuid:f$(S?.accountIdentity)??(m==="main"?W0?.providerAccountUuid:f$(z0.accountUuid)??f$(C$)),localSubject:I.localSubject,scopedAttempt:I.scopedAttempt,...m==="main"&&W0?{mainQuotaIdentity:W0}:{}},s0=X0(),y$,B4=!1,N0,a0=JJ,n0=()=>wG({config:r0,input:M.input,requireUpstreamUrl:Q9,init:B,headers:n,body:j0,fallback:d0,affinity:U0,optimisticResponse:r0?.transport==="websocket",authorizeAttempt:async()=>{let c=await F$(),D0=c.scopedAttempt;I=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,nZ(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 j0==="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 j0==="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&&!I.scopedAttempt&&typeof j0==="string"&&(h1(U,B)??"").toUpperCase()==="POST"&&!B?.signal?.aborted){let c=I.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(X0()-s0),status:K0.status,relayConfigured:r0!=null,totalSendWithAccessMs:q0(X0()-Y0)}),w$)nZ(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||!bZ.has(k));if(D0&&k)bZ.add(k);let o0={accountIdentity:I.accountIdentity,credentialId:I.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(tZ(K0,{source:Z0?"start":"turn",toolNameMap:Q4,accountId:m,synthetic:Z0,...s,requestedModel:L0(j0),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 R8(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 L$(U,B={}){let f=V1(U),k=await T1(!1,f,B.modelId,"admission");if(U=await u(j),f){if(U&&k.size)U={...U,accounts:U.accounts.filter((T)=>!k.has(T.id)||K1(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(_$(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())&&!j1(T.lastRefreshError)&&!k1(T.lastRefreshError,T.id,Date.now(),_1(T.refresh))&&U?.quota?.failClosedOnUnknownQuota!==!0&&!IZ(F0(T)))m.push(T);continue}if(B.includeApiRoutes===!0&&s1(T)&&k0(T)&&xZ(T.baseURL))m.push(T)}if(!V1(U))return m;return m.filter((T)=>w0(T)?K1(F0(T),U,T.id,B.modelId):!0)}async function MJ(U){let B=U.mainQuotaIdentity?.quotaKey,f=b.getMain(B),k=f?.quota;if(!v1(f?.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=_$($0);if(T){let S=$0?.claustrum?.primaryAccount;if(S!==void 0&&k0(S)&&!$0?.claustrum?.disabledAccountIdentities?.includes(S.accountId))m.push({id:G$,access:"",quota:k,identity:S?{kind:"known",accountId:S.accountId}:{kind:"unknown"},order:0,scoped:!0})}else if((U.mainAccessToken||U.mainPolicyDenied)&&!j1($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[S,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:S+1,account:M,scoped:!0})}}else{let S=new Map(d.map((M)=>[M.id,M]));for(let[M,a]of($0?.accounts??[]).entries()){if(!k0(a)||!w0(a))continue;let Y0=S.get(a.id)??a;if(j1(Y0.lastRefreshError))continue;let w=F0(Y0);if(!v1(w,$0,Date.now(),U.requestedModelId))try{w=await b.refreshFallback(Y0.id,Y0.access??"",Y0)}catch{}m.push({id:Y0.id,access:Y0.access??"",quota:w,identity:{kind:"known",accountId:Y0.id},order:M+1,account:Y0})}}let _0=new Set(d.map((S)=>S.id)),Z0=new Set(m.flatMap((S)=>{let M=S.id===G$?$0?.refresh?.mainLastRefreshError:S.account?.lastRefreshError,a=!S.scoped,Y0=S.identity.kind==="known"?S.identity.accountId:void 0;if(a&&j1(M))return[];if(a&&k1(M,Y0,Date.now(),S.id===G$?U.mainRefreshToken?_1(U.mainRefreshToken):void 0:S.account?.refresh?_1(S.account.refresh):void 0)&&(S.id===G$||!_0.has(S.id)))return[];if(v1(S.quota,$0,Date.now(),U.requestedModelId)&&FZ({quota:S.quota,modelId:U.requestedModelId}).action==="migrate")return[];if(V1($0)&&!K1(S.quota,$0,S.id===G$?void 0:S.id,U.requestedModelId))return[];return[S.id]})),W0=m.flatMap((S)=>{let M=S.id===G$?$0?.refresh?.mainLastRefreshError:S.account?.lastRefreshError,a=!S.scoped,Y0=S.identity.kind==="known"?S.identity.accountId:void 0;if(a&&j1(M)||a&&k1(M,Y0,Date.now(),S.id===G$?U.mainRefreshToken?_1(U.mainRefreshToken):void 0:S.account?.refresh?_1(S.account.refresh):void 0)&&(S.id===G$||!_0.has(S.id)))return[];let w=S.id===G$?void 0:S.id,C=IZ(S.quota)?S.quota:void 0,n=C?{kind:"known",quota:C}:{kind:"unknown"};return(!V1($0)||K1(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)&&(S.id===G$||_0.has(S.id)||Boolean(S.scoped)))?[{accountId:S.id,quota:n,order:S.order}]:[]});return{storage:$0,allRoutes:m,candidates:W0,retainAccountIds:Z0}}let o$=new WeakMap;async function Q1(U,B,f,k,d,$0,m){if(!f.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[S,M]of f.entries()){let a;if(s1(M))await W0(),a=await R$(U,B,M,$0,`api_fallback_${S}`,k,m?.fableRequest,m?.mainAccessToken,m?.mainQuotaIdentity);else if(_$(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 C=w.scopedAttempt;if(!C)throw Error("Native vault fallback credential is unavailable");await W0(),a=await M$(U,B,C.accessToken,$0,`fallback_${S}`,k,M.id,M.authLineageId,m?.fableRequest,m?.laneStartRequest,void 0,C)}else if(y4(k)==="local"&&M.access)await W0(),a=await M$(U,B,M.access,$0,`fallback_${S}`,k,M.id,M.authLineageId,m?.fableRequest,m?.laneStartRequest);else continue;_0=a;let Y0=vZ(a,k);if(!Y0){let w=await Q0(a,$0);a=w.response,_0=a,Y0=w.rateLimited}if(!Y0){if(o$.set(a,s1(M)?"api":"oauth"),await m?.onSuccess?.(M),w0(M)&&m0(k)&&b.shouldRefreshOnRequestCount(X9)){if(_$(k)||M.access)b.refreshFallback(M.id,_$(k)?"":M.access??"",M).then(()=>m?.onSuccess?.(M)).catch(()=>{})}return a}if(S<f.length-1||!T)await a.body?.cancel().catch(()=>{})}return T?_0:null}async function IY(U,B,f,k,d,$0,m,T,_0,Z0,W0=!1,S){if(!r(U,B?.body))return f;let M=X0(),a=$0??await u(j);if(d?.mark("fallback_load_storage",{ms:q0(X0()-M),cached:!!$0}),!(a?.accounts??[]).some((t0)=>k0(t0)&&(w0(t0)||s1(t0)&&xZ(t0.baseURL))))return f;let w=f,C=vZ(w,a),n=p0(w,!1);if(!C){let t0=await Q0(w,d);w=t0.response,C=t0.rateLimited,n=p0(w,t0.rateLimited)}if(!C)return w;let U0=!1;if(k)U0=k.some(s1);else if(n)U0=await x0(m,S);let h=k;if(!h){let t0=X0();h=await L$(a,{includeApiRoutes:U0,modelId:_0}),d?.mark("fallback_get_accounts",{ms:q0(X0()-t0),accounts:h.length})}if(V1(a)){let t0=h.length;if(h=h.filter((U$)=>w0(U$)?K1(F0(U$),a,U$.id,_0):!0),h.length<t0)$1("[killswitch] filtered fallbacks",{before:t0,after:h.length})}return await Q1(U,B,h,a,w,d,{onSuccess:T,mainAccessToken:m,mainQuotaIdentity:S,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 f=v4(U,B),k=f.get(U9)==="1";f.delete(U9),B={...B,headers:f};let d=f.get("x-session-affinity")||f.get("x-opencode-session"),$0=L0(B?.body),m=Boolean(d&&$0&&!y0(f)&&M0.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=M0.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,S=pG({bodyBytes:typeof W0==="string"?W0.length:void 0}),M=(R)=>{let I=i$.get(R);return r7(R,{toolNameMap:I?.toolNameMap,perf:(e,z0)=>S.mark(e,z0),laneStart:k,laneStartOAuthServed:o$.get(R)!=="api",...I?I.streaming?{onMessageStart:(e)=>aZ(R,e,!1),onMessageDelta:(e)=>jY(R,e),onStreamEnd:()=>I.dumpWrite}:{onMessageResponse:(e)=>aZ(R,e),onStreamEnd:()=>I.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 z0=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$=z0&&t&&F$!==void 0&&u0!==null&&u0===I0&&F$===Z0.oauthAccountId?{bodyText:t.bodyText,oauthAccountId:F$,...z0.accountIdentity!==void 0&&{accountIdentity:z0.accountIdentity},sentAt:z0.sentAt,model:T.requestedModel,firstAnchorFingerprint:OZ(t.bodyText)[0],url:t.url,headers:t.headers,...Z0.subagent&&{subagent:!0}}:void 0,T$=M0.activate(T,Z0.oauthAccountId,w$);OY(T).catch(()=>{v.warn("fable-fallback","source warm sync failed",{session:T.sessionId})}),h$.delete(T.recoveryKey),h$.set(T.recoveryKey,nG(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},C,w)}}:{},...T&&Z0?{onComplete:(e)=>{if(!T.downgraded){if(M0.completeSource(T,!Z0.serverFallback)){let u0=Y$(T.requestedModel);if(u0)$$.untrack(u1(T.sessionId,u0))}return}let z0=M0.complete(T,Z0.opusCacheAnchor);if(!z0.counted)return;let t=h$.get(T.recoveryKey);if(t)h$.delete(T.recoveryKey),V$.delete(T.sessionId),j3(T.sessionId,t);if(v.info("fable-fallback","Opus 4.8 turn completed",{session:T.sessionId,requestedModel:T.requestedModel,finishReason:e,remaining:z0.remaining}),N4({sessionId:T.sessionId,mode:"opus",remaining:z0.remaining,requestedModelId:T.requestedModel},C,w),z0.remaining===0)N4({sessionId:T.sessionId,mode:"fable",remaining:0,requestedModelId:T.requestedModel},C,w,oG(T.requestedModel))}}:{},..._0?{serverSideFallbackModel:_0,...T?{onServerSideFallbackOutcome:(e)=>{if(Z0)Z0.serverFallback=e.fallback;SY(T,e,C,w)}}:{}}:{}})},a=X0(),Y0=T?.effectiveModel??L0(await m4(U,B)),w=await D(Y0,B?.signal??void 0,!0);if(S.mark("get_auth",{ms:q0(X0()-a),authType:w.type,hasAccess:Boolean(w.access)}),w.type!=="oauth"){let R=h4(U),I=v4(U,B);s7(I);let e=await m4(U,B);if(typeof e==="string")try{let t=JSON.parse(e);if(HG(t))e=JSON.stringify(t)}catch{}let z0=await fetch(R.input,{...B,body:e,headers:I});return S.done("non_oauth_passthrough",{status:z0.status}),z0}let C=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 mZ("",n,n),h={quotaKey:n,providerAccountUuid:n,generation:b.getMainQuotaIdentityGeneration(),routingLineage:w.nativeRoutingLineage,stale:!1,state:_$(C)?"on-cold":"na"};let t0=X0();S.mark("load_storage",{ms:q0(X0()-t0)}),b.updateStorage(C),b.seedMainFromStorage(C,q$),b.seedFallbacksFromAccounts((C?.accounts??[]).filter(w0));let U$=d?b$.get(d):void 0;if(m||!T||ZJ==="server"&&U$?.requestedModelId&&Y$(U$.requestedModelId)!==Y$(T.requestedModel))EY(d,C,w);let Q$=r(U,B?.body),c0=L0(B?.body)??Y0,c1=H$(h,C),B$=o("main",h?.routingLineage,n,C),O$=w.deferred?yZ(c1&&C?{...C,accounts:C?.accounts??[],quota:{...C?.quota,mainQuota:c1.quota}}:C,n,B$?.lineage===h?.routingLineage&&B$?.generalExhausted===!0):void 0;if(O$){let R=Q$?await L$(C,{includeApiRoutes:n$(void 0,h),modelId:c0}):[],I=await Q1(U,B,R,C,void 0,S,{onSuccess:(e)=>e0(e.id,"fallback"),mainQuotaIdentity:h,fableRequest:Z0,laneStartRequest:k});if(I)return M(I);return new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:O$.message}}),{status:429,headers:{"content-type":"application/json","retry-after":String(O$.retryAfter)}})}let j0=async()=>{if(_$(C))return $8({snapshot:await P.read(),modelId:Y0,sticky:e$(C)==="sticky-balanced"});let R=H8(b.getMain(h?.quotaKey)?.quota,(C?.accounts??[]).filter(w0),Date.now(),Y0);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()))FY(C,w.access,h);async function e0(R,I){let e=C,z0=!1;if((C?.accounts??[]).some((t)=>w0(t)&&t.quota))try{let t=await u(j);if(t)e=t;else z0=!0}catch{z0=!0}g$(e,{activeId:R,route:I,mainAccessToken:w.access,skipFallbackQuotaSeed:z0})}let l0;if(Q$&&d&&e$(C)==="sticky-balanced"){let R=T?.effectiveModel??c0,I=AG(R),e=$$.trackedOAuthRoute(d),z0=T?.cacheAccountId??(e?e.oauthAccountId??G$:void 0),t=!1;try{let s=await MJ({storage:C,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$)=>K7(u0,C$));if(i0&&k0(i0)&&n6(i0,r0,R).status==="allowed"&&s.candidates.some((C$)=>C$.accountId===i0.id)&&_7(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 gZ(),C$=!r0&&I0;return i0.router.resolve({sessionId:d,family:I,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:z0,excludeAccountIds:r0,...C$&&{preserveOnNoCandidate:!0},...i0.accountIdentities&&{accountIdentities:i0.accountIdentities}})},w$=j1(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 j0();throw Error("Sticky-balanced routing is waiting for current OAuth quota snapshots")}if(!d0){if(w.modelDenied)return j0();if(_$(C))return $8({snapshot:await P.read(),modelId:R,sticky:!0});let r0=B6({mainRefreshError:s.storage?.refresh?.mainLastRefreshError,fallbackReauthLabels:f6(s.storage),routeQuotas:s.allRoutes.flatMap((i0)=>i0.quota?[i0.quota]:[]),modelId:R});return S.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&&M0.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 M$(U,B,n0.accessToken,S,`sticky:${N0.id}`,s.storage,N0.id,N0.account?.authLineageId,Z0,k,N0.id===G$?h:void 0,n0)}return M$(U,B,N0.access??"",S,`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"),S.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=vZ(N0,s.storage),K0=!1;if(!n0){let c=await Q0(N0,S);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(!j1(K0))throw N0}y$=!0}let B4=s0.response.status===403||y$;if(s0.response.status===429||s0.streamingRateLimit){let N0=OG(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(S.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 R8(s0.response,B?.signal);let N0=P0.id;if(s=await MJ({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&&M0.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 L$(s.storage,{includeApiRoutes:!0,modelId:R})).filter(s1);if(n0.length>0){let K0=await Q1(U,B,n0,s.storage,s0.response,S,{onSuccess:(c)=>e0(c.id,"sticky-balanced"),mainAccessToken:w.access,mainQuotaIdentity:h,fableRequest:Z0,laneStartRequest:k});if(K0)return S.done("return_sticky_api_fallback",{status:K0.status}),M(K0)}}}return i0(P0,s0.response)}}catch(s){if(S.mark("sticky_balanced_error",{error:s instanceof Error?s.message:String(s)}),t||M1(s))throw s;let u0=s instanceof Error?s:Error(String(s));throw Object.assign(u0,{code:"ECONNRESET",syscall:"sticky-routing"}),u0}}if(Q$&&e$(C)==="fallback-first")try{let R=X0();l0=await L$(C,{includeApiRoutes:n$(w.access,h),modelId:c0}),S.mark("fallback_first_get_accounts",{ms:q0(X0()-R),accounts:l0.length});let I=await Q1(U,B,l0,C,void 0,S,{returnLastOnExhausted:!1,mainAccessToken:w.access,mainQuotaIdentity:h,onSuccess:(e)=>e0(e.id,"fallback-first"),fableRequest:Z0,laneStartRequest:k});if(I)return S.done("return_fallback_first",{status:I.status}),M(I);l0=void 0}catch(R){if(S.mark("fallback_first_error",{error:R instanceof Error?R.message:String(R)}),M1(R))throw R}if(w.deferred){if(Object.assign(w,await D(Y0,B?.signal??void 0)),w.access){let R=await K4(w.access,Y0,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(_$(C))try{let t=(await T0("main",B?.signal??void 0,void 0,Y0)).scopedAttempt;if(!t)throw Error("Native vault main credential is unavailable");O4=t.accessToken;let s=await M$(U,B,t.accessToken,S,"main",C,"main",void 0,Z0,k,h,t);return M(s)}catch(z0){let t=Q$?await L$(C,{modelId:c0}):[],s=await Q1(U,B,t,C,void 0,S,{onSuccess:(u0)=>e0(u0.id,"fallback"),mainAccessToken:w.access,mainQuotaIdentity:h,fableRequest:Z0,laneStartRequest:k});if(s)return M(s);if(z0 instanceof A$)throw new B8;throw z0}if(w.credentialFailure?.tokenRefreshFailed)throw w.credentialFailure;let R=await u(),I=R?.refresh?.mainLastRefreshError;if(I&&k1(I,w.nativeAccountIdentity??L4??R?.mainAccountId,Date.now(),w.refresh?_1(w.refresh):void 0))throw $1("[refresh] opencode main oauth request skipped backoff",{nextRetryAt:I.nextRetryAt,retryCount:I.retryCount,expiresInMs:w.expires?w.expires-Date.now():void 0}),Error(q6(I,Date.now()));$1("[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=X0();w.access=await q(void 0,Y0,B?.signal??void 0),S.mark("refresh_main_access",{ms:q0(X0()-e)})}if(!w.access&&!w.modelDenied)throw S.done("missing_access_error"),Error("OAuth access token is missing after refresh");function E1(){if(C?.quota?.showToasts!==!0)return;let R=b.getMain(h?.quotaKey);if(!R)return;let I=(C?.accounts??[]).filter((t)=>t.enabled!==!1&&w0(t)).map((t)=>({...t,quota:b.getFallback(t.id,t)?.quota??t.quota})),e=t1(R.quota,C),z0;if(e)z0="main";else z0=I.find((t)=>t1(t.quota,C))?.id??"main";xY(R.quota,I,z0)}if(Q$&&m0(C))try{let R=X0(),I=H$(h,C),e=I?.quota;if(!e)e=await b.refreshMain(h?.quotaKey,w.access,h?.generation,"admission"),I=H$(h,C),E1();else if(b.needsRefresh(X9,c0))if(j4(e)||d9(e,c0))e=await b.refreshMain(h?.quotaKey,w.access,h?.generation),I=H$(h,C);else b.refreshMain(h?.quotaKey,w.access,h?.generation).then(()=>{m1().catch(()=>{}),E1()}).catch(()=>{});g$(C,{activeId:"main",route:"main",mainAccessToken:w.access});let z0=t1(e,C)&&i9(e,c0);if(S.mark("main_quota_for_routing",{ms:q0(X0()-R),passes:z0,model:c0,modelScopedExhausted:d9(e,c0)}),!z0){let t=X0();l0=await L$(C,{includeApiRoutes:Boolean(I&&I.refreshAfter>Date.now()&&j4(I.quota)),modelId:c0}),S.mark("preselect_fallback_accounts",{ms:q0(X0()-t),accounts:l0.length});let s=await Q1(U,B,l0,C,void 0,S,{onSuccess:(u0)=>e0(u0.id,"fallback"),mainAccessToken:w.access,mainQuotaIdentity:h,fableRequest:Z0,laneStartRequest:k});if(s)return S.done("return_preselected_fallback",{status:s.status}),M(s)}}catch(R){if(S.mark("main_quota_for_routing_error",{error:R instanceof Error?R.message:String(R)}),M1(R))throw R}let x$=H$(h,C)?.quota;if(C?.quota?.failClosedOnUnknownQuota&&(x$===void 0||w.access.startsWith("sk-ant-oat")&&h?.providerAccountUuid===void 0)&&b.isBackedOff()){let R=b.getLastApiError(),I=R?j8(R,Date.now()):"Quota API unavailable";return $1("[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:I}}),{status:429,headers:{"content-type":"application/json","retry-after":String(R?.nextRetryAt?Math.max(1,Math.ceil((R.nextRetryAt-Date.now())/1000)):60)}})}if(V1(C)){if(b.needsRefresh(X9,c0))try{await Promise.all([b.refreshMain(h?.quotaKey,w.access,h?.generation),T1(!1,!0,void 0,"admission")])}catch(I){$1("[quota] killswitch refresh failed",{error:I instanceof Error?I.message:String(I),backedOff:b.isBackedOff()})}x$=H$(h,C)?.quota}if(V1(C)&&!K1(x$,C,void 0,c0)){let I=r(U,B?.body)?await L$(C,{includeApiRoutes:n$(w.access),modelId:c0}):[];if(I.length>0){$1("[route] skipping main (killswitch), trying fallbacks");let I0=await Q1(U,B,I,C,void 0,S,{onSuccess:(F$)=>e0(F$.id,"fallback"),mainAccessToken:w.access,mainQuotaIdentity:h,laneStartRequest:k});if(I0)return S.done("return_killswitch_fallback",{status:I0.status}),M(I0)}let e=Date.now(),z0=(C?.accounts??[]).filter((I0)=>k0(I0)&&w0(I0)).map((I0)=>({...I0,quota:F0(I0)})),t=V7({mainQuota:x$,requestModelId:c0,storage:C}),s=H8(x$,z0,e,t.isScopedDriven?t.modelId:void 0),u0=z7({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=Q$?await L$(C,{modelId:Y0}):[],I=await Q1(U,B,R,C,void 0,S,{onSuccess:(z0)=>e0(z0.id,"fallback"),fableRequest:Z0,laneStartRequest:k,mainAccessToken:w.access,mainQuotaIdentity:h});if(I)return M(I);if(!(e$(C)!=="sticky-balanced"&&d9(x$,Y0)&&t1(x$,C)&&K1(x$,C,void 0,Y0)))return M(await j0());return M(await M$(U,B,"",S,"main",C,"main",void 0,Z0,k,h))}let W9=await M$(U,B,w.access,S,"main",C,"main",void 0,Z0,k,h,U0),U4=!1,Q4=await IY(U,B,W9,l0,S,C,w.access,(R)=>{return U4=!0,e0(R.id,"fallback")},c0,Z0,k,h);if(!U4)await e0("main","main");return S.done("return_response",{status:Q4.status}),M(Q4)}}}return{}},get methods(){return[...l2(m9("opencode").tokenPath)?[LY]:[],{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 a7("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 M4("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:QY};return J7?.set(Q3,{primeManager:C1,quotaManager:b,cacheKeepManager:$$,fableFallbackManager:M0,resolveMainQuotaIdentity:K4,resolveSidebarQuotaAccess:Y3,refreshSidebarQuota:m1,fallbackRefreshReady:WY,get scopedRuntime(){return Z4(j,$.directory)},notificationMessageIdBeforeAssistant:n8,trackDesktopNoticeMessageId:z3,isDesktopNoticeMessage:V3}),Q3},gz=WW;
|
|
45
|
+
export{w4 as a,xJ as b,IJ as c,l1 as d,C0 as e,o3 as f,U9 as g,Q9 as h,G7 as i,K7 as j,_7 as k,L7 as l,C7 as m,E7 as n,A7 as o,o1 as p,h4 as q,M9 as r,r7 as s,gz as t};
|