@cortexkit/opencode-anthropic-auth 2.2.6 → 2.2.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,4 +1,4 @@
1
- import{q as X8}from"./index-6chd6jnr.js";import{s as G8}from"./index-hazrk5c3.js";import{C as W8}from"./index-b1dvkp15.js";import{G as V8,L as f9,N as z8,O as K8}from"./index-20d6rmjj.js";import{fa as p3}from"./index-ppdrzs41.js";import{randomUUID as rJ}from"node:crypto";import{existsSync as sX,readFileSync as aX}from"node:fs";import{dirname as tX,join as eX}from"node:path";import{fileURLToPath as $G}from"node:url";import{acquireNativeAccountRuntime as JG,applyCustomHeaders as F7,assertNotCustodyTombstone as ZG,authorize as w7,buildAccountList as y$,buildClaudeQuotaSummary as YG,buildFallbackQuotaSummaries as XG,buildPrimeRequestBody as GG,CACHE_KEEP_EXTENDED_TTL_BETA as WG,CacheKeepManager as VG,CacheKeepSessionRegistry as zG,CLAUDE_FABLE_MYTHOS_5_MODEL_SPECS as KG,CLAUDE_HAIKU_4_5_MODEL_ID as T7,CLAUDE_HAIKU_5_5_CONTEXT_WINDOW as OG,CLAUDE_HAIKU_5_5_LONG_CONTEXT_PRICING as D9,CLAUDE_HAIKU_5_5_LONG_CONTEXT_THRESHOLD as _G,CLAUDE_HAIKU_5_5_MAX_OUTPUT_TOKENS as jG,CLAUDE_HAIKU_5_5_MODEL_ID as U9,CLAUDE_HAIKU_5_5_PRICING as Q9,CLAUDE_HAIKU_5_5_RELEASE_DATE as LG,CLAUDE_OPUS_5_5_CONTEXT_WINDOW as NG,CLAUDE_OPUS_5_5_MAX_OUTPUT_TOKENS as HG,CLAUDE_OPUS_5_5_MODEL_ID as B9,CLAUDE_OPUS_5_5_PRICING as F9,CLAUDE_OPUS_5_5_RELEASE_DATE as DG,CLAUDE_SONNET_5_5_CONTEXT_WINDOW as UG,CLAUDE_SONNET_5_5_MAX_OUTPUT_TOKENS as QG,CLAUDE_SONNET_5_5_MODEL_ID as w9,CLAUDE_SONNET_5_5_PRICING as T9,CLAUDE_SONNET_5_5_RELEASE_DATE as BG,CLAUSTRUM_OPENCODE_ENROLLMENT_NAME as sJ,computeXxhash64Hex as FG,configuredAnthropicOAuthAccountCount as wG,createEmptyStorage as o$,createNativeUsagePublisher as TG,createProviderErrorResponseScope as E9,createSseFramer as EG,createStickyNoRouteResponse as SG,custodyTombstoneOAuth as aJ,decideStickyQuotaFailure as tJ,decodeSseFrame as CG,detectClaustrumConnection as E7,dumpDirectRequest as S9,dumpResponseArtifact as eJ,effectiveRelayStatus as AG,exchange as $Z,executeAccountCommand as PG,executeCache1hCommand as JZ,executeCacheKeepCommand as qG,executeDumpCommand as S7,executeFastModeCommand as C7,executeKillswitchCommand as A7,executeLaneStartCommand as P7,executeLoggingCommand as q7,executePrimeCommand as RG,executeRoutingCommand as R7,FALLBACK_BACKGROUND_TICK_MS as MG,fallbackAccountUuidForLineage as IG,formatEnrollmentStatus as M7,formatNativeAccountState as ZZ,formatOAuthAccountTier as B4,formatQuotaBackoffMessage as I7,formatRefreshBackoffMessage as xG,getAccountStoragePath as fG,getCache1hMode as F4,getCache1hPersistentMode as w4,getCacheKeepWindow as x7,getClaudeCodeIdentityForVerifiedAccount as kG,getClaudeModelCatalogue as vG,getClaustrumMode as T4,getDefaultCacheKeepRegistryDirectory as hG,getFallbackReauthLabels as bG,getHostClaustrumEnrollmentPaths as C9,getKillswitchConfig as YZ,getPersistedLogLevel as XZ,getQuotaCheckIntervalMs as f7,getQuotaNextRefreshAt as w1,getRequestGzipLatch as gG,getRequestGzipLatchPath as yG,getRoutingMode as e$,getScopedQuotaWindowForModel as mG,getThinkingPrefixMismatchBehavior as cG,inspectNativeHostAuthEntry as pG,isApiKeyAccount as c1,isCache1hEnabled as E4,isCache1hPersistentlyEnabled as A9,isCacheKeepAlways as k7,isCacheKeepHybridActive as v7,isCacheKeepPersistentlyEnabled as lG,isCacheKeepSubagentsEnabled as uG,isClaudeFableOrMythos51Model as dG,isClaudeOpus5Model as iG,isClaudeOpus55Model as nG,isCostZeroingEnabled as oG,isCustodyTombstoneOAuth as GZ,isDumpPersistentlyEnabled as WZ,isFastModeEnabled as VZ,isFastModePersistentlyEnabled as zZ,isFastModeSupportedModel as h7,isKillswitchEnabled as r$,isNativeTransientAccountError as T1,isOAuthAccount as B0,isPermanentRefreshError as s$,isPrimePersistentlyEnabled as P9,isQuotaBearingHeaderFrame as rG,isValidApiBaseURL as KZ,killswitchPassesPolicy as a$,killswitchRetryAfterSeconds as b7,log as m$,logger as h,mergeAnthropicBetas as g7,mergeHeaderQuotaForPersistence as y7,NativeCustodyError as sG,NativeRuntimeError as aG,NativeVaultNoAccountError as OZ,nativeAccountCanServe as y0,nativeLocalQuotaLineage as tG,nativeMigrationAuthorityPhase as m7,normalizeQuotaHeaders as eG,oauthProfileIsFresh as q9,oauthProfileMatchesIdentity as $W,PARALLEL_TOOL_CALLS_SYSTEM_PROMPT as JW,PrimeManager as ZW,parseAccountCommandAction as YW,parseCache1hCommandAction as XW,parseCacheKeepCommandAction as GW,parseDumpCommandAction as WW,parseFastModeCommandAction as VW,parseLaneStartCommandAction as zW,parseLoggingCommandAction as KW,parsePrimeCommandAction as OW,parseRoutingCommandAction as _W,parseSseFrame as jW,QUOTA_HEADER_FEED_SCHEMA_VERSION as R9,QuotaHeaderFeedRegistry as LW,QuotaManager as NW,quotaSnapshotCheckedAt as E1,quotaSnapshotHasStandardWindows as _Z,quotaSnapshotModelScopeIsExhausted as M9,quotaSnapshotPassesModelScope as I9,quotaSnapshotPassesPolicy as p1,readClaustrumEnrollmentStatus as c7,readNativeAccountsForRequest as HW,readNativeEnrollmentMode as S1,readNativeHostAuthKind as DW,readNativeMigrationJournal as p7,refreshBackoffActive as C1,remapRequestBodyModel as UW,resetClaustrumEnrollmentState as QW,resolveClaudeModelCapabilities as BW,resolveNativePoolPaths as FW,STICKY_ROUTING_MAIN_ACCOUNT_ID as Y$,StickySessionRouter as wW,sendViaRelay as TW,sendWithRequestGzip as EW,setCache1hState as x9,setDumpEnabled as jZ,setFastModeEnabled as LZ,setLogLevel as SW,shouldFallbackStatus as CW,snapshotHasServableLocalOAuth as l7,stickyQuotaSnapshotIsFresh as A1,stickyRouteFamilyForModel as AW,TrailingAssistantHistoryError as u7,tokenFingerprint as t$}from"@cortexkit/anthropic-auth-core";import{randomUUID as eZ}from"node:crypto";import{isValidAnthropicRequestId as $3,isValidBillingPromptId as e8}from"@cortexkit/anthropic-auth-core";var G4="x-cortexkit-billing-lineage",$Y=4096,JY=4096,ZY=1024,J3=new Set(["title","summary","compaction"]),YY="[lane start] — automated cache warm; no response needed.";function XY($){let J=$.info?.sessionID??$.info?.sessionId;return typeof J==="string"&&J.length>0?J:void 0}function GY($){if($.info?.synthetic===!0||$.info?.ignored===!0||typeof $.info?.agent==="string"&&J3.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===YY)return!0}return!1}function Q1($,J){while($.size>J){let Y=$.keys().next().value;if(Y===void 0)return;$.delete(Y)}}function HJ($){let J=$.get("request-id")??$.get("x-request-id");return J&&$3(J)?J:void 0}class DJ{#$;#_;#K;#j;#X;#J=new Map;#Y=new Map;#Z=new Map;#G=new Map;#W=new Map;#V=new Map;#z=new Map;constructor($={}){this.#$=$.createPromptId??eZ,this.#_=$.createRequestToken??eZ,this.#K=$.maxPrompts??$Y,this.#j=$.maxRequests??JY,this.#X=$.maxSessions??ZY}observeMessages($){let J;for(let H=$.length-1;H>=0;H-=1)if($[H]?.info?.role==="user"){J=$[H];break}if(!J)return;let Y=XY(J),X=J.info?.id;if(!Y||typeof X!=="string"||X.length===0)return;let V=this.#O(Y,X);if(GY(J)){this.#Y.delete(V),this.#Y.set(V,!0),Q1(this.#Y,this.#K),this.#J.delete(V);return}this.#Y.delete(V);let O=this.#J.get(V);if(O){this.#J.delete(V),this.#J.set(V,O);return}let K=this.#$();if(!e8(K))return;this.#J.set(V,K),Q1(this.#J,this.#K)}markHeaders($){let J=this.#O($.sessionId,$.messageId);if(J3.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 V={sessionId:$.sessionId,messageId:$.messageId,promptId:Y,requestToken:X,generation:this.#W.get($.sessionId)??0,sequence:0};return this.#Z.set(X,V),Q1(this.#Z,this.#j),$.headers[G4]=X,!0}resolveHeader($){if(!$)return;let J=this.#Z.get($);if(!J)return;this.#Z.delete($),this.#Z.set($,J);let Y=(this.#V.get(J.sessionId)??0)+1;this.#V.delete(J.sessionId),this.#V.set(J.sessionId,Y),Q1(this.#V,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||!$3(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.#O($.sessionId,$.messageId))!==$.promptId)return!1;if($.sequence<(this.#z.get($.sessionId)??0))return!1;return this.#z.delete($.sessionId),this.#z.set($.sessionId,$.sequence),Q1(this.#z,this.#X),this.#G.delete($.sessionId),this.#G.set($.sessionId,J),Q1(this.#G,this.#X),!0}clearSession($){this.#W.set($,(this.#W.get($)??0)+1),this.#G.delete($),this.#V.delete($),this.#z.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);Q1(this.#W,this.#X)}#O($,J){return`${$}\x00${J}`}}import{setBounded as Y3,stickyRetryAfterWithJitter as WY}from"@cortexkit/anthropic-auth-core";var V4="cache-diagnosis-2026-04-07",VY="MC-CACHE-DIAG ",zY=1000,KY=300000,OY={turn:!1,start:!0,prewarm_cachekeep:!0},_Y=1000;class UJ{entries=new Map;previousFor($){return this.entries.get($)??null}capture($,J,Y){Y3(this.entries,$,{messageId:J,receivedAt:Y},zY)}}class QJ{hashes=new Map;capture($,J){if(this.hashes.has($))return null;return Y3(this.hashes,$,!0,_Y),`MC-CACHE-DIAG-BETAS ${JSON.stringify({hash:$,betas:[...J].sort()})}`}}function o4($,J,Y){let X=$.get(J);if(X)$.set(Y,X)}async function BJ($,J,Y,X,V){let O=new Headers($.headers);if(O.set("retry-after",String(WY(J,Y))),X)return await $.body?.cancel().catch(()=>{}),O.set("content-type","application/json"),new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:"Sticky OAuth account five-hour quota resets shortly; retaining session affinity."}}),{status:429,headers:O});let K=new Response($.body,{status:$.status,statusText:$.statusText,headers:O});return o4(V,$,K),K}function r4($,J){$.diagnostics={previous_message_id:J}}function i$($){return $!=null&&typeof $==="object"&&!Array.isArray($)}function jY($){return i$($)&&$.type==="ephemeral"}function X3($,J){if(!jY($))return;J.push($.ttl==="1h"?"1h":"5m")}function Z3($,J){if(!Array.isArray($))return;for(let Y of $)if(i$(Y))X3(Y.cache_control,J)}function s4($){if(!i$($))return null;let J=[];if(X3($.cache_control,J),Z3($.system,J),Array.isArray($.messages)){for(let Y of $.messages)if(i$(Y))Z3(Y.content,J)}return J.at(-1)??null}function LY($){if(!Object.hasOwn($,"diagnostics"))return{state:"absent"};let J=$.diagnostics;if(J===null)return{state:"server_null"};if(!i$(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(!i$(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 W4($,J){let Y=$[J];return typeof Y==="number"&&Number.isFinite(Y)&&Y>=0?Y:null}function G3($){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=OY[$.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(!i$($.message))return{};let X=$.message.id,V=$.message.model,O=$.message.usage;if(typeof X!=="string"||X.length===0)return{};if(typeof V!=="string"||V.length===0||!i$(O))return{};let K=W4(O,"input_tokens"),H=W4(O,"cache_read_input_tokens"),w=W4(O,"cache_creation_input_tokens"),q=O.cache_creation;if(K===null||H===null||w===null||!i$(q))return{};let P=W4(q,"ephemeral_5m_input_tokens"),c=W4(q,"ephemeral_1h_input_tokens");if(P===null||c===null)return{};let a=LY($.message);if(!a)return{};let u={v:2,source:$.source,account_id:$.accountId,synthetic:$.synthetic,betas_hash:$.betasHash,session_id:$.request.sessionId,ts_ms_received:Y,model:V,is_subagent:$.request.isSubagent,ttl_sent:$.request.ttlSent,cache_read:H,cache_creation:w,input_tokens:K,ephemeral_5m_tokens:P,ephemeral_1h_tokens:c,message_id:X,previous_message_id:$.request.previousMessageId,diag_state:a.state};if(a.missReason!==void 0)u.miss_reason=a.missReason;if(a.cacheMissedInputTokens!==void 0)u.cache_missed_input_tokens=a.cacheMissedInputTokens;if($.requestedModel!==void 0&&$.requestedModel!==V)u.requested_model=$.requestedModel;let s=a.missReason==="previous_message_not_found"&&$.request.previousMessageId!==null&&$.request.previousMessageReceivedAt!==void 0&&$.receivedAt-$.request.previousMessageReceivedAt<KY&&$.receivedAt>=$.request.previousMessageReceivedAt?{messageId:X,previousMessageId:$.request.previousMessageId}:void 0;return{record:u,messageId:X,...s?{canary:s}:{}}}function W3($){return`${VY}${JSON.stringify($)}`}import{getClaustrumMode as a4,hasNoLocalCredential as FJ,isCustodyTombstoneOAuth as NY,isOAuthAccount as wJ,nativeAccountCanServe as TJ}from"@cortexkit/anthropic-auth-core";function z4($,J){if(a4(J)!=="claustrum"||!J?.claustrum?.scopedRoster)return!1;let Y=J.accounts.find((X)=>X.id===$);return Boolean(Y&&wJ(Y)&&TJ(Y)&&Y.claustrumScopedCredentialId&&Y.anthropicAccountUuid&&FJ(Y))}function V3($){if(a4($)!=="claustrum")return{fallbacks:"R",evidence:"V"};if(!$?.claustrum?.scopedRoster)return{fallbacks:"M",evidence:"N"};return{fallbacks:$.accounts.filter((Y)=>TJ(Y)&&wJ(Y)).every((Y)=>Boolean(Y.claustrumScopedCredentialId&&Y.anthropicAccountUuid&&FJ(Y)))?"T":"R",evidence:"V"}}function EJ($){if(NY($,"anthropic"))return"T";if($.type==="oauth"&&$.access&&$.refresh)return"R";return"X"}function SJ($,J){if($.role==="main"){if(a4(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 TJ(X)?"on-vault-served":"on-cold"}if(a4(J)!=="claustrum")return"off";let Y=J?.accounts.find((X)=>X.id===$.id);if(!Y||!wJ(Y)||!Y.claustrumScopedCredentialId||!Y.anthropicAccountUuid||!FJ(Y))return"off";if(Y.claustrumScopedState==="needs_reauth")return"on-vault-reauth";return z4($.id,J)?"on-vault-served":"on-cold"}class K4 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 z3($){if($.authority!=="committed"&&$.authority!=="retired")throw new K4("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 K4("FAIL_CLOSED",$)}import{createHash as HY}from"node:crypto";import{defaultAdaptiveEffort as DY,normalizeAdaptiveEffort as UY,pinsEffortOnEveryRequest as K3,resolveClaudeModelCapabilities as QY,supportsPerMessageEffort as BY}from"@cortexkit/anthropic-auth-core";var N3=512,FY=1024,wY=4096,O4=32,_4=32,e4="[A-Za-z0-9_-]{1,128}",TY="<cortexkit-internal-effort ",EY="<cortexkit-internal-effort-plan ",H3=/^\s*(?:§[0-9]+§\s*)+$/,j4={low:"l",medium:"m",high:"h",xhigh:"x",max:"z"},PJ=Object.fromEntries(Object.entries(j4).map(([$,J])=>[J,$])),qJ="<cortexkit-internal-effort-v2 ",RJ="<cortexkit-internal-effort-anchor-v1 ",h1="x-cortexkit-effort-plan";class E0 extends Error{check;details;constructor($,J="unspecified",Y={}){super($);this.check=J;this.details=Y;this.name="EffortMarkerCorrelationError"}}function o0($){return typeof $==="object"&&$!==null&&!Array.isArray($)}function SY($){let J=QY($);if(!J||J.effortMarkers==="none")return;return J.id.replace(/^claude-/,"")}function CJ($){if($?.info?.role!=="user")return;if($.info.model?.providerID!=="anthropic")return;return SY($.info.model.modelID)}function O3($){return UY($.info?.model?.variant)??DY($.info?.model?.modelID)}function _3($){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 O1($){return HY("sha256").update($).digest("hex")}function CY($){return O1(`scope:${$}`).slice(0,_4)}function $9($){return O1(`cortexkit-effort-v2:${$}`).slice(0,O4)}function AY($,J,Y){let X=j4[Y],V=`transition:${$}:${J}:${X}`;return`${qJ}scope="${$}" boundary="${J}" effort="${X}" check="${$9(V)}"/>`}function D3($){let J=$.match(new RegExp(`^${qJ}scope="([0-9a-f]{${_4}})" boundary="(${e4})" effort="([lmhxz])" check="([0-9a-f]{${O4}})"/>$`));if(!J)return null;let[,Y,X,V,O]=J,K=PJ[V??""];if(!Y||!X||!V||!O||!K)return null;let H=`transition:${Y}:${X}:${V}`;if($9(H)!==O)return null;return{scope:Y,boundary:X,effort:K,token:$}}function PY($,J,Y,X){let V=j4[Y],O=`anchor:${$}:${J}:${V}:${X}`;return`${RJ}scope="${$}" boundary="${J}" effort="${V}" digest="${X}" check="${$9(O)}"/>`}function U3($){let J=$.match(new RegExp(`^${RJ}scope="([0-9a-f]{${_4}})" boundary="(${e4})" effort="([lmhxz])" digest="([0-9a-f]{64})" check="([0-9a-f]{${O4}})"/>$`));if(!J)return null;let[,Y,X,V,O,K]=J,H=PJ[V??""];if(!Y||!X||!V||!O||!K||!H)return null;let w=`anchor:${Y}:${X}:${V}:${O}`;if($9(w)!==K)return null;return{scope:Y,boundary:X,effort:H,digest:O,token:$}}function AJ($){return $.trim()===""||H3.test($)}function j3(){return new RegExp(`(?:${EY}nonce="[^"]+" baseline="[^"]+" count="[^"]+" sig="[0-9a-f]+"/>|${TY}nonce="[^"]+" effort="[^"]+" sig="[0-9a-f]+"/>)`,"g")}function qY(){return new RegExp(`${qJ}scope="[0-9a-f]{${_4}}" boundary="${e4}" effort="[lmhxz]" check="[0-9a-f]{${O4}}"/>`,"g")}function RY(){return new RegExp(`${RJ}scope="[0-9a-f]{${_4}}" boundary="${e4}" effort="[lmhxz]" digest="[0-9a-f]{64}" check="[0-9a-f]{${O4}}"/>`,"g")}function Q3($,J,Y){let X=0,V=$,O=$.replace(j3(),"");if(O!==$&&H3.test(O))X+=[...$.matchAll(j3())].length,V=O;return V=V.replace(qY(),(K)=>{let H=D3(K);if(!H)return K;return J?.(H),X++,""}),V=V.replace(RY(),(K)=>{let H=U3(K);if(!H)return K;return Y?.(H),X++,""}),{text:V,removed:X}}function MY($){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=Q3(Y.text);if(X.removed===0)return[Y];if(AJ(X.text))return[];return Y.text=X.text,[Y]})}}function t4($,J,Y,X,V){let O=V?`:${V}`:"",K=`plan:${$}:${j4[J]}:${Y.toString(36)}${O}`;return O1([K,...X].join(`
1
+ import{q as X8}from"./index-6chd6jnr.js";import{s as G8}from"./index-hazrk5c3.js";import{C as W8}from"./index-b1dvkp15.js";import{G as V8,L as f9,N as z8,O as K8}from"./index-20d6rmjj.js";import{fa as p3}from"./index-ppdrzs41.js";import{randomUUID as rJ}from"node:crypto";import{existsSync as sX,readFileSync as aX}from"node:fs";import{dirname as tX,join as eX}from"node:path";import{fileURLToPath as $G}from"node:url";import{acquireNativeAccountRuntime as JG,applyCustomHeaders as F7,assertNotCustodyTombstone as ZG,authorize as w7,buildAccountList as y$,buildClaudeQuotaSummary as YG,buildFallbackQuotaSummaries as XG,buildPrimeRequestBody as GG,CACHE_KEEP_EXTENDED_TTL_BETA as WG,CacheKeepManager as VG,CacheKeepSessionRegistry as zG,CLAUDE_FABLE_MYTHOS_5_MODEL_SPECS as KG,CLAUDE_HAIKU_4_5_MODEL_ID as T7,CLAUDE_HAIKU_5_5_CONTEXT_WINDOW as OG,CLAUDE_HAIKU_5_5_LONG_CONTEXT_PRICING as D9,CLAUDE_HAIKU_5_5_LONG_CONTEXT_THRESHOLD as _G,CLAUDE_HAIKU_5_5_MAX_OUTPUT_TOKENS as jG,CLAUDE_HAIKU_5_5_MODEL_ID as U9,CLAUDE_HAIKU_5_5_PRICING as Q9,CLAUDE_HAIKU_5_5_RELEASE_DATE as LG,CLAUDE_OPUS_5_5_CONTEXT_WINDOW as NG,CLAUDE_OPUS_5_5_MAX_OUTPUT_TOKENS as HG,CLAUDE_OPUS_5_5_MODEL_ID as B9,CLAUDE_OPUS_5_5_PRICING as F9,CLAUDE_OPUS_5_5_RELEASE_DATE as DG,CLAUDE_SONNET_5_5_CONTEXT_WINDOW as UG,CLAUDE_SONNET_5_5_MAX_OUTPUT_TOKENS as QG,CLAUDE_SONNET_5_5_MODEL_ID as w9,CLAUDE_SONNET_5_5_PRICING as T9,CLAUDE_SONNET_5_5_RELEASE_DATE as BG,CLAUSTRUM_OPENCODE_ENROLLMENT_NAME as sJ,computeXxhash64Hex as FG,configuredAnthropicOAuthAccountCount as wG,createEmptyStorage as o$,createNativeUsagePublisher as TG,createProviderErrorResponseScope as E9,createSseFramer as EG,createStickyNoRouteResponse as SG,custodyTombstoneOAuth as aJ,decideStickyQuotaFailure as tJ,decodeSseFrame as CG,detectClaustrumConnection as E7,dumpDirectRequest as S9,dumpResponseArtifact as eJ,effectiveRelayStatus as AG,exchange as $Z,executeAccountCommand as PG,executeCache1hCommand as JZ,executeCacheKeepCommand as qG,executeDumpCommand as S7,executeFastModeCommand as C7,executeKillswitchCommand as A7,executeLaneStartCommand as P7,executeLoggingCommand as q7,executePrimeCommand as RG,executeRoutingCommand as R7,FALLBACK_BACKGROUND_TICK_MS as MG,fallbackAccountUuidForLineage as IG,formatEnrollmentStatus as M7,formatNativeAccountState as ZZ,formatOAuthAccountTier as B4,formatQuotaBackoffMessage as I7,formatRefreshBackoffMessage as xG,getAccountStoragePath as fG,getCache1hMode as F4,getCache1hPersistentMode as w4,getCacheKeepWindow as x7,getClaudeCodeIdentityForVerifiedAccount as kG,getClaudeModelCatalogue as vG,getClaustrumMode as T4,getDefaultCacheKeepRegistryDirectory as hG,getFallbackReauthLabels as bG,getHostClaustrumEnrollmentPaths as C9,getKillswitchConfig as YZ,getPersistedLogLevel as XZ,getQuotaCheckIntervalMs as f7,getQuotaNextRefreshAt as w1,getRequestGzipLatch as gG,getRequestGzipLatchPath as yG,getRoutingMode as e$,getScopedQuotaWindowForModel as mG,getThinkingPrefixMismatchBehavior as cG,inspectNativeHostAuthEntry as pG,isApiKeyAccount as c1,isCache1hEnabled as E4,isCache1hPersistentlyEnabled as A9,isCacheKeepAlways as k7,isCacheKeepHybridActive as v7,isCacheKeepPersistentlyEnabled as lG,isCacheKeepSubagentsEnabled as uG,isClaudeFableOrMythos51Model as dG,isClaudeOpus5Model as iG,isClaudeOpus55Model as nG,isCostZeroingEnabled as oG,isCustodyTombstoneOAuth as GZ,isDumpPersistentlyEnabled as WZ,isFastModeEnabled as VZ,isFastModePersistentlyEnabled as zZ,isFastModeSupportedModel as h7,isKillswitchEnabled as r$,isNativeTransientAccountError as T1,isOAuthAccount as B0,isPermanentRefreshError as s$,isPrimePersistentlyEnabled as P9,isQuotaBearingHeaderFrame as rG,isValidApiBaseURL as KZ,killswitchPassesPolicy as a$,killswitchRetryAfterSeconds as b7,log as m$,logger as h,mergeAnthropicBetas as g7,mergeHeaderQuotaForPersistence as y7,NativeCustodyError as sG,NativeRuntimeError as aG,NativeVaultNoAccountError as OZ,nativeAccountCanServe as y0,nativeLocalQuotaLineage as tG,nativeMigrationAuthorityPhase as m7,normalizeQuotaHeaders as eG,oauthProfileIsFresh as q9,oauthProfileMatchesIdentity as $W,PARALLEL_TOOL_CALLS_SYSTEM_PROMPT as JW,PrimeManager as ZW,parseAccountCommandAction as YW,parseCache1hCommandAction as XW,parseCacheKeepCommandAction as GW,parseDumpCommandAction as WW,parseFastModeCommandAction as VW,parseLaneStartCommandAction as zW,parseLoggingCommandAction as KW,parsePrimeCommandAction as OW,parseRoutingCommandAction as _W,parseSseFrame as jW,QUOTA_HEADER_FEED_SCHEMA_VERSION as R9,QuotaHeaderFeedRegistry as LW,QuotaManager as NW,quotaSnapshotCheckedAt as E1,quotaSnapshotHasStandardWindows as _Z,quotaSnapshotModelScopeIsExhausted as M9,quotaSnapshotPassesModelScope as I9,quotaSnapshotPassesPolicy as p1,readClaustrumEnrollmentStatus as c7,readNativeAccountsForRequest as HW,readNativeEnrollmentMode as S1,readNativeHostAuthKind as DW,readNativeMigrationJournal as p7,refreshBackoffActive as C1,remapRequestBodyModel as UW,resetClaustrumEnrollmentState as QW,resolveClaudeModelCapabilities as BW,resolveNativePoolPaths as FW,STICKY_ROUTING_MAIN_ACCOUNT_ID as Y$,StickySessionRouter as wW,sendViaRelay as TW,sendWithRequestGzip as EW,setCache1hState as x9,setDumpEnabled as jZ,setFastModeEnabled as LZ,setLogLevel as SW,shouldFallbackStatus as CW,snapshotHasServableLocalOAuth as l7,stickyQuotaSnapshotIsFresh as A1,stickyRouteFamilyForModel as AW,TrailingAssistantHistoryError as u7,tokenFingerprint as t$}from"@cortexkit/anthropic-auth-core";import{randomUUID as eZ}from"node:crypto";import{isValidAnthropicRequestId as $3,isValidBillingPromptId as e8}from"@cortexkit/anthropic-auth-core";var G4="x-cortexkit-billing-lineage",$Y=4096,JY=4096,ZY=1024,J3=new Set(["title","summary","compaction"]),YY="[lane start] — automated cache warm; no response needed.";function XY($){let J=$.info?.sessionID??$.info?.sessionId;return typeof J==="string"&&J.length>0?J:void 0}function GY($){if($.info?.synthetic===!0||$.info?.ignored===!0||typeof $.info?.agent==="string"&&J3.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===YY)return!0}return!1}function Q1($,J){while($.size>J){let Y=$.keys().next().value;if(Y===void 0)return;$.delete(Y)}}function HJ($){let J=$.get("request-id")??$.get("x-request-id");return J&&$3(J)?J:void 0}class DJ{#$;#_;#K;#j;#X;#J=new Map;#Y=new Map;#Z=new Map;#G=new Map;#W=new Map;#V=new Map;#z=new Map;constructor($={}){this.#$=$.createPromptId??eZ,this.#_=$.createRequestToken??eZ,this.#K=$.maxPrompts??$Y,this.#j=$.maxRequests??JY,this.#X=$.maxSessions??ZY}observeMessages($){let J;for(let H=$.length-1;H>=0;H-=1)if($[H]?.info?.role==="user"){J=$[H];break}if(!J)return;let Y=XY(J),X=J.info?.id;if(!Y||typeof X!=="string"||X.length===0)return;let V=this.#O(Y,X);if(GY(J)){this.#Y.delete(V),this.#Y.set(V,!0),Q1(this.#Y,this.#K),this.#J.delete(V);return}this.#Y.delete(V);let O=this.#J.get(V);if(O){this.#J.delete(V),this.#J.set(V,O);return}let K=this.#$();if(!e8(K))return;this.#J.set(V,K),Q1(this.#J,this.#K)}markHeaders($){let J=this.#O($.sessionId,$.messageId);if(J3.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 V={sessionId:$.sessionId,messageId:$.messageId,promptId:Y,requestToken:X,generation:this.#W.get($.sessionId)??0,sequence:0};return this.#Z.set(X,V),Q1(this.#Z,this.#j),$.headers[G4]=X,!0}resolveHeader($){if(!$)return;let J=this.#Z.get($);if(!J)return;this.#Z.delete($),this.#Z.set($,J);let Y=(this.#V.get(J.sessionId)??0)+1;this.#V.delete(J.sessionId),this.#V.set(J.sessionId,Y),Q1(this.#V,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||!$3(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.#O($.sessionId,$.messageId))!==$.promptId)return!1;if($.sequence<(this.#z.get($.sessionId)??0))return!1;return this.#z.delete($.sessionId),this.#z.set($.sessionId,$.sequence),Q1(this.#z,this.#X),this.#G.delete($.sessionId),this.#G.set($.sessionId,J),Q1(this.#G,this.#X),!0}clearSession($){this.#W.set($,(this.#W.get($)??0)+1),this.#G.delete($),this.#V.delete($),this.#z.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);Q1(this.#W,this.#X)}#O($,J){return`${$}\x00${J}`}}import{setBounded as Y3,stickyRetryAfterWithJitter as WY}from"@cortexkit/anthropic-auth-core";var V4="cache-diagnosis-2026-04-07",VY="MC-CACHE-DIAG ",zY=1000,KY=300000,OY={turn:!1,start:!0,prewarm_cachekeep:!0},_Y=1000;class UJ{entries=new Map;previousFor($){return this.entries.get($)??null}capture($,J,Y){Y3(this.entries,$,{messageId:J,receivedAt:Y},zY)}}class QJ{hashes=new Map;capture($,J){if(this.hashes.has($))return null;return Y3(this.hashes,$,!0,_Y),`MC-CACHE-DIAG-BETAS ${JSON.stringify({hash:$,betas:[...J].sort()})}`}}function o4($,J,Y){let X=$.get(J);if(X)$.set(Y,X)}async function BJ($,J,Y,X,V){let O=new Headers($.headers);if(O.set("retry-after",String(WY(J,Y))),X)return await $.body?.cancel().catch(()=>{}),O.set("content-type","application/json"),new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:"Sticky OAuth account quota resets shortly; retaining session affinity."}}),{status:429,headers:O});let K=new Response($.body,{status:$.status,statusText:$.statusText,headers:O});return o4(V,$,K),K}function r4($,J){$.diagnostics={previous_message_id:J}}function i$($){return $!=null&&typeof $==="object"&&!Array.isArray($)}function jY($){return i$($)&&$.type==="ephemeral"}function X3($,J){if(!jY($))return;J.push($.ttl==="1h"?"1h":"5m")}function Z3($,J){if(!Array.isArray($))return;for(let Y of $)if(i$(Y))X3(Y.cache_control,J)}function s4($){if(!i$($))return null;let J=[];if(X3($.cache_control,J),Z3($.system,J),Array.isArray($.messages)){for(let Y of $.messages)if(i$(Y))Z3(Y.content,J)}return J.at(-1)??null}function LY($){if(!Object.hasOwn($,"diagnostics"))return{state:"absent"};let J=$.diagnostics;if(J===null)return{state:"server_null"};if(!i$(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(!i$(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 W4($,J){let Y=$[J];return typeof Y==="number"&&Number.isFinite(Y)&&Y>=0?Y:null}function G3($){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=OY[$.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(!i$($.message))return{};let X=$.message.id,V=$.message.model,O=$.message.usage;if(typeof X!=="string"||X.length===0)return{};if(typeof V!=="string"||V.length===0||!i$(O))return{};let K=W4(O,"input_tokens"),H=W4(O,"cache_read_input_tokens"),w=W4(O,"cache_creation_input_tokens"),q=O.cache_creation;if(K===null||H===null||w===null||!i$(q))return{};let P=W4(q,"ephemeral_5m_input_tokens"),c=W4(q,"ephemeral_1h_input_tokens");if(P===null||c===null)return{};let a=LY($.message);if(!a)return{};let u={v:2,source:$.source,account_id:$.accountId,synthetic:$.synthetic,betas_hash:$.betasHash,session_id:$.request.sessionId,ts_ms_received:Y,model:V,is_subagent:$.request.isSubagent,ttl_sent:$.request.ttlSent,cache_read:H,cache_creation:w,input_tokens:K,ephemeral_5m_tokens:P,ephemeral_1h_tokens:c,message_id:X,previous_message_id:$.request.previousMessageId,diag_state:a.state};if(a.missReason!==void 0)u.miss_reason=a.missReason;if(a.cacheMissedInputTokens!==void 0)u.cache_missed_input_tokens=a.cacheMissedInputTokens;if($.requestedModel!==void 0&&$.requestedModel!==V)u.requested_model=$.requestedModel;let s=a.missReason==="previous_message_not_found"&&$.request.previousMessageId!==null&&$.request.previousMessageReceivedAt!==void 0&&$.receivedAt-$.request.previousMessageReceivedAt<KY&&$.receivedAt>=$.request.previousMessageReceivedAt?{messageId:X,previousMessageId:$.request.previousMessageId}:void 0;return{record:u,messageId:X,...s?{canary:s}:{}}}function W3($){return`${VY}${JSON.stringify($)}`}import{getClaustrumMode as a4,hasNoLocalCredential as FJ,isCustodyTombstoneOAuth as NY,isOAuthAccount as wJ,nativeAccountCanServe as TJ}from"@cortexkit/anthropic-auth-core";function z4($,J){if(a4(J)!=="claustrum"||!J?.claustrum?.scopedRoster)return!1;let Y=J.accounts.find((X)=>X.id===$);return Boolean(Y&&wJ(Y)&&TJ(Y)&&Y.claustrumScopedCredentialId&&Y.anthropicAccountUuid&&FJ(Y))}function V3($){if(a4($)!=="claustrum")return{fallbacks:"R",evidence:"V"};if(!$?.claustrum?.scopedRoster)return{fallbacks:"M",evidence:"N"};return{fallbacks:$.accounts.filter((Y)=>TJ(Y)&&wJ(Y)).every((Y)=>Boolean(Y.claustrumScopedCredentialId&&Y.anthropicAccountUuid&&FJ(Y)))?"T":"R",evidence:"V"}}function EJ($){if(NY($,"anthropic"))return"T";if($.type==="oauth"&&$.access&&$.refresh)return"R";return"X"}function SJ($,J){if($.role==="main"){if(a4(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 TJ(X)?"on-vault-served":"on-cold"}if(a4(J)!=="claustrum")return"off";let Y=J?.accounts.find((X)=>X.id===$.id);if(!Y||!wJ(Y)||!Y.claustrumScopedCredentialId||!Y.anthropicAccountUuid||!FJ(Y))return"off";if(Y.claustrumScopedState==="needs_reauth")return"on-vault-reauth";return z4($.id,J)?"on-vault-served":"on-cold"}class K4 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 z3($){if($.authority!=="committed"&&$.authority!=="retired")throw new K4("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 K4("FAIL_CLOSED",$)}import{createHash as HY}from"node:crypto";import{defaultAdaptiveEffort as DY,normalizeAdaptiveEffort as UY,pinsEffortOnEveryRequest as K3,resolveClaudeModelCapabilities as QY,supportsPerMessageEffort as BY}from"@cortexkit/anthropic-auth-core";var N3=512,FY=1024,wY=4096,O4=32,_4=32,e4="[A-Za-z0-9_-]{1,128}",TY="<cortexkit-internal-effort ",EY="<cortexkit-internal-effort-plan ",H3=/^\s*(?:§[0-9]+§\s*)+$/,j4={low:"l",medium:"m",high:"h",xhigh:"x",max:"z"},PJ=Object.fromEntries(Object.entries(j4).map(([$,J])=>[J,$])),qJ="<cortexkit-internal-effort-v2 ",RJ="<cortexkit-internal-effort-anchor-v1 ",h1="x-cortexkit-effort-plan";class E0 extends Error{check;details;constructor($,J="unspecified",Y={}){super($);this.check=J;this.details=Y;this.name="EffortMarkerCorrelationError"}}function o0($){return typeof $==="object"&&$!==null&&!Array.isArray($)}function SY($){let J=QY($);if(!J||J.effortMarkers==="none")return;return J.id.replace(/^claude-/,"")}function CJ($){if($?.info?.role!=="user")return;if($.info.model?.providerID!=="anthropic")return;return SY($.info.model.modelID)}function O3($){return UY($.info?.model?.variant)??DY($.info?.model?.modelID)}function _3($){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 O1($){return HY("sha256").update($).digest("hex")}function CY($){return O1(`scope:${$}`).slice(0,_4)}function $9($){return O1(`cortexkit-effort-v2:${$}`).slice(0,O4)}function AY($,J,Y){let X=j4[Y],V=`transition:${$}:${J}:${X}`;return`${qJ}scope="${$}" boundary="${J}" effort="${X}" check="${$9(V)}"/>`}function D3($){let J=$.match(new RegExp(`^${qJ}scope="([0-9a-f]{${_4}})" boundary="(${e4})" effort="([lmhxz])" check="([0-9a-f]{${O4}})"/>$`));if(!J)return null;let[,Y,X,V,O]=J,K=PJ[V??""];if(!Y||!X||!V||!O||!K)return null;let H=`transition:${Y}:${X}:${V}`;if($9(H)!==O)return null;return{scope:Y,boundary:X,effort:K,token:$}}function PY($,J,Y,X){let V=j4[Y],O=`anchor:${$}:${J}:${V}:${X}`;return`${RJ}scope="${$}" boundary="${J}" effort="${V}" digest="${X}" check="${$9(O)}"/>`}function U3($){let J=$.match(new RegExp(`^${RJ}scope="([0-9a-f]{${_4}})" boundary="(${e4})" effort="([lmhxz])" digest="([0-9a-f]{64})" check="([0-9a-f]{${O4}})"/>$`));if(!J)return null;let[,Y,X,V,O,K]=J,H=PJ[V??""];if(!Y||!X||!V||!O||!K||!H)return null;let w=`anchor:${Y}:${X}:${V}:${O}`;if($9(w)!==K)return null;return{scope:Y,boundary:X,effort:H,digest:O,token:$}}function AJ($){return $.trim()===""||H3.test($)}function j3(){return new RegExp(`(?:${EY}nonce="[^"]+" baseline="[^"]+" count="[^"]+" sig="[0-9a-f]+"/>|${TY}nonce="[^"]+" effort="[^"]+" sig="[0-9a-f]+"/>)`,"g")}function qY(){return new RegExp(`${qJ}scope="[0-9a-f]{${_4}}" boundary="${e4}" effort="[lmhxz]" check="[0-9a-f]{${O4}}"/>`,"g")}function RY(){return new RegExp(`${RJ}scope="[0-9a-f]{${_4}}" boundary="${e4}" effort="[lmhxz]" digest="[0-9a-f]{64}" check="[0-9a-f]{${O4}}"/>`,"g")}function Q3($,J,Y){let X=0,V=$,O=$.replace(j3(),"");if(O!==$&&H3.test(O))X+=[...$.matchAll(j3())].length,V=O;return V=V.replace(qY(),(K)=>{let H=D3(K);if(!H)return K;return J?.(H),X++,""}),V=V.replace(RY(),(K)=>{let H=U3(K);if(!H)return K;return Y?.(H),X++,""}),{text:V,removed:X}}function MY($){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=Q3(Y.text);if(X.removed===0)return[Y];if(AJ(X.text))return[];return Y.text=X.text,[Y]})}}function t4($,J,Y,X,V){let O=V?`:${V}`:"",K=`plan:${$}:${j4[J]}:${Y.toString(36)}${O}`;return O1([K,...X].join(`
2
2
  `))}function IY($){return["v2",$.scope,j4[$.baseline],$.markerCount.toString(36),$.digest].join(".")}function xY($){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,V,O]=J,K=PJ[X??""],H=Number.parseInt(V??"",36);if(!Y||!K||!O||!Number.isSafeInteger(H)||H<0||H>N3)return null;return{scope:Y,baseline:K,markerCount:H,digest:O}}function B3($){let J=$.findLast((u)=>u.info?.role==="user"),Y=CJ(J);if(!J||!Y)return null;if(MY($),!Array.isArray(J.parts)||!_3(J))return null;let X=J.info?.sessionID,V=J.info?.id;if(typeof X!=="string"||typeof V!=="string")throw new E0("Cannot correlate Fable 5.1 effort markers without session and message IDs");let O=CY(X),K=$.findLast((u)=>u.info?.role==="user"&&u.parts?.some((s)=>s.type==="compaction")),H=typeof K?.info?.id==="string"?K.info.id:void 0,w,q;if(K&&CJ(K)===Y)w=O3(K),q=w;let P=[];for(let u of $){let s=u.info;if(s?.role!=="user")continue;if(H&&typeof s.id==="string"&&s.id<=H)continue;if(CJ(u)!==Y||!_3(u))continue;let T=O3(u);if(!w){w=T,q=T;continue}if(T===q)continue;if(P.length>=N3)throw new E0("Too many Fable 5.1 effort changes in the active context");if(!Array.isArray(u.parts)||typeof s.id!=="string")throw new E0("Cannot mark a Fable 5.1 effort change without message identity");let o=AY(O,s.id,T);u.parts.push({type:"text",text:o}),P.push(o),q=T}if(!w)return null;let c=t4(O,w,P.length,P,P.length>0?V:void 0),a=P.length>0?PY(O,V,q??w,c):void 0;if(a)J.parts.push({type:"text",text:a});return{scope:O,baseline:w,markerCount:P.length,digest:c,transitionTokens:P,anchorToken:a,sessionId:X,messageId:V}}function fY($){let J=Array.isArray($.messages)?$.messages:[],Y=[];for(let X of J){let V=[],O=[];if(!o0(X)||X.role!=="user"){Y.push({value:X,transitions:V,anchors:O});continue}let K=(H)=>Q3(H,(w)=>V.push(w),(w)=>O.push(w));if(typeof X.content==="string"){let H=K(X.content);X.content=H.removed>0&&AJ(H.text)?"":H.text}else if(Array.isArray(X.content))X.content=X.content.flatMap((H)=>{if(!o0(H)||H.type!=="text"||typeof H.text!=="string")return[H];let w=K(H.text);if(w.removed>0&&AJ(w.text))return[];return[{...H,text:w.text}]});Y.push({value:X,transitions:V,anchors:O})}return $.messages=Y.map((X)=>X.value),{messages:Y}}function kY($,J){let Y=$[J]?.value,X=$[J-1]?.value;if(!o0(Y)||Y.role!=="user"||!Array.isArray(Y.content)||Y.content.length===0||!o0(X)||X.role!=="assistant"||!Array.isArray(X.content))return!1;let V=new Set(X.content.flatMap((O)=>o0(O)&&O.type==="tool_use"&&typeof O.id==="string"?[O.id]:[]));return Y.content.every((O)=>o0(O)&&O.type==="tool_result"&&typeof O.tool_use_id==="string"&&V.has(O.tool_use_id))}function vY($,J){if(J<0)return!1;let Y=$.flatMap((X,V)=>V>J&&o0(X.value)&&X.value.role==="user"?[V]:[]);return Y.length>0&&Y.every((X)=>kY($,X))}function L3($){if(!o0($))return null;if(typeof $.id==="string")return $.id;return typeof $.message_id==="string"?$.message_id:null}function hY($,J){if(!J)return null;if(J.scope!==$.scope||J.baseline!==$.baseline||J.markerCount!==$.markerCount||J.digest!==$.digest||J.transitionTokens.length!==$.markerCount)throw new E0("Fable 5.1 effort marker request plan mismatch");let Y=J.transitionTokens.map((O)=>D3(O)),X=J.anchorToken?U3(J.anchorToken):null,V=Y.at(-1)?.effort??$.baseline;if(Y.some((O)=>O===null)||Y.some((O)=>O?.scope!==$.scope)||$.markerCount>0&&(!X||X.scope!==$.scope||X.boundary!==J.messageId||X.effort!==V||X.digest!==$.digest)||$.markerCount===0&&X!==null||$.digest!==t4($.scope,$.baseline,$.markerCount,J.transitionTokens,J.markerCount>0?J.messageId:void 0))throw new E0("Fable 5.1 effort marker request plan mismatch");return{transitions:Y,anchor:X}}function F3($,J,Y,X){if(!Array.isArray($.messages))return{found:0,inserted:0};let V=xY(Y);if(Y&&!V)throw new E0("Missing or invalid internal Fable 5.1 effort request plan");let O=V?hY(V,X):null,K=O?.transitions??null;if(!$.messages.some((b)=>{if(!o0(b)||b.role!=="user")return!1;if(typeof b.content==="string"&&b.content.includes("<cortexkit-internal-effort"))return!0;return Array.isArray(b.content)&&b.content.some((O0)=>o0(O0)&&O0.type==="text"&&typeof O0.text==="string"&&O0.text.includes("<cortexkit-internal-effort"))})){if(!V)return{found:0,inserted:0};if(V.markerCount!==0){let b=$.messages.findLastIndex((R)=>o0(R)&&R.role==="user"),O0=$.messages[b],m0=o0(O0)&&Array.isArray(O0.content)?O0.content:[];throw new E0(`Fable 5.1 effort marker correlation failed: expected ${V.markerCount}, found 0`,"missing_all_markers",{markerCount:V.markerCount,resolvedPlan:O!==null,plannedBoundaryId:O?.anchor?.boundary??null,expectedAnchorHash:O?.anchor?O1(O.anchor.token):null,retainedMessageCount:$.messages.length,retainedUserMessageCount:$.messages.filter((R)=>o0(R)&&R.role==="user").length,lastUserMessageIndex:b,lastUserTextBlockCount:m0.filter((R)=>o0(R)&&R.type==="text").length,lastUserToolResultBlockCount:m0.filter((R)=>o0(R)&&R.type==="tool_result").length})}if(!K&&V.digest!==t4(V.scope,V.baseline,0,[]))throw new E0("Fable 5.1 effort marker request plan mismatch");if(J&&K3($.model)){let b=o0($.output_config)?{...$.output_config}:{};b.effort=K?.at(-1)?.effort??V.baseline,$.output_config=b}return{found:0,inserted:0}}let w=fY($),q=w.messages.flatMap((b)=>b.transitions),P=w.messages.flatMap((b)=>b.anchors),c=q.length;if(!V){if(c===0)return{found:0,inserted:0};throw new E0("Missing or invalid internal Fable 5.1 effort request plan")}for(let b of w.messages){for(let O0 of b.transitions)if(O0.scope!==V.scope)throw new E0("Fable 5.1 effort marker scope mismatch");if(b.anchors.length>1)throw new E0("Multiple internal Fable 5.1 effort anchors on one user boundary")}let a=w.messages.findIndex((b)=>b.anchors.length===1),u=w.messages.findLastIndex((b)=>o0(b.value)&&b.value.role==="user"),s=P[0],T=w.messages[u]?.value,o=vY(w.messages,a);if(V.markerCount>0&&(P.length!==1||a!==u&&!o||!s||s.scope!==V.scope))throw new E0("Missing or invalid internal Fable 5.1 effort anchor placement","anchor_placement",{anchorBoundaryId:s?.boundary??null,plannedBoundaryId:O?.anchor?.boundary??null,lastUserMessageId:L3(T),anchorMessageIndex:a,lastUserMessageIndex:u,validToolContinuationSuffix:o,anchorsFound:P.length,markerCount:V.markerCount,scope:V.scope,foundScope:s?.scope??null,expectedAnchorHash:O?.anchor?O1(O.anchor.token):null,foundAnchorHash:s?O1(s.token):null,anchorMatchesExpected:O?.anchor!=null&&s?.token===O.anchor.token});if(V.markerCount===0&&P.length!==0)throw new E0("Unexpected internal Fable 5.1 effort anchor");if(O?.anchor&&s?.token!==O.anchor.token)throw new E0("Mismatched internal Fable 5.1 effort anchor token","anchor_token",{anchorBoundaryId:s?.boundary??null,plannedBoundaryId:O.anchor.boundary,lastUserMessageId:L3(T),anchorMessageIndex:a,lastUserMessageIndex:u,anchorsFound:P.length,markerCount:V.markerCount,scope:V.scope,foundScope:s?.scope??null,expectedAnchorHash:O1(O.anchor.token),foundAnchorHash:s?O1(s.token):null,anchorMatchesExpected:!1});let R0=V.baseline;if(K){let b=K.length-c;if(b<0)throw new E0(`Fable 5.1 effort marker correlation failed: expected ${V.markerCount}, found ${c}`);let O0=K.slice(b);if(q.some((R,s0)=>R.token!==O0[s0]?.token))throw new E0("Fable 5.1 effort marker non-prefix loss");let m0=K.slice(0,b);if(s&&m0.some((R)=>R.boundary===s.boundary))throw new E0("Fable 5.1 effort marker non-prefix loss");R0=m0.at(-1)?.effort??V.baseline}else{if(c!==V.markerCount)throw new E0(`Fable 5.1 effort marker correlation failed: expected ${V.markerCount}, found ${c}`);let b=t4(V.scope,V.baseline,V.markerCount,q.map((m0)=>m0.token),s?.boundary);if(V.digest!==b)throw new E0("Fable 5.1 effort marker request plan mismatch");let O0=q.at(-1)?.effort??V.baseline;if(s&&(s.effort!==O0||s.digest!==V.digest))throw new E0("Missing or invalid internal Fable 5.1 effort anchor")}let W0=J&&BY($),I0=0,L0=[];for(let b of w.messages){let O0=b.transitions.at(-1);if(O0&&W0)L0.push({role:"system",content:[],output_config:{effort:O0.effort}}),I0++;L0.push(b.value)}if($.messages=L0,W0&&(I0>0||K3($.model))){let b=o0($.output_config)?{...$.output_config}:{};b.effort=R0,$.output_config=b}return{found:c,inserted:I0}}class MJ{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>FY){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[h1]=this.remember(J,Y),this.plans.delete(J),this.plans.set(J,Y),!0}resolveHeader($){return $?this.history.get($):void 0}remember($,J){let Y=IY(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 E0("Fable 5.1 effort plan header collision");let O=this.key(X.sessionId,X.messageId),K=this.historyByMessage.get(O);if(K?.delete(Y),K?.size===0)this.historyByMessage.delete(O)}this.history.delete(Y),this.history.set(Y,J);let V=this.historyByMessage.get($)??new Set;V.add(Y),this.historyByMessage.set($,V);while(this.history.size>wY){let O=this.history.entries().next().value;if(!O)break;let[K,H]=O;this.history.delete(K);let w=this.key(H.sessionId,H.messageId),q=this.historyByMessage.get(w);if(q?.delete(K),q?.size===0)this.historyByMessage.delete(w)}return Y}key($,J){return`${$}\x00${J}`}}import{resolveClaudeModelCapabilities as bY}from"@cortexkit/anthropic-auth-core";var w3="claude-opus-4-8",IJ=10,T3=128,gY=86400000;function b$($){return bY($)?.refusalRecoveryFamily??null}function J9($){return b$($)!==null}function yY($,J){let Y=b$(J);return Y?`${$}\x00${Y}`:null}function mY($){try{let J=JSON.parse($);return typeof J.model==="string"?{body:J,model:J.model}:null}catch{return null}}class xJ{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>=gY)this.recoveries.delete(J);while(this.recoveries.size>T3){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>T3){let V=this.selectedModels.keys().next().value;if(V===void 0)break;this.selectedModels.delete(V)}return X}plan($,J){if(!$||typeof J!=="string")return null;this.prune();for(let[O,K]of[...this.recoveries]){if(!O.startsWith(`${$}\x00`))continue;K.updatedAt=this.now(),this.recoveries.delete(O),this.recoveries.set(O,K)}let Y=mY(J);if(!Y||!J9(Y.model))return null;let X=yY($,Y.model);if(!X)return null;let V=this.recoveries.get(X);if(V)V.nextRequestSequence++;if(!V||V.remaining<=0)return{sessionId:$,recoveryKey:X,requestedModel:Y.model,effectiveModel:Y.model,bodyText:J,downgraded:!1,cycle:V?.cycle,standbyCacheAnchor:V?.standbyCacheAnchor};return V.updatedAt=this.now(),this.recoveries.delete(X),this.recoveries.set(X,V),Y.body.model=w3,{sessionId:$,recoveryKey:X,requestedModel:V.model,effectiveModel:w3,bodyText:JSON.stringify(Y.body),downgraded:!0,cycle:V.cycle,cacheAccountId:V.cacheAccountId,standbyCacheAnchor:V.standbyCacheAnchor,requestSequence:V.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.updatedAt=this.now(),$.cacheAccountId=J,$.standbyCacheAnchor=void 0,!0}activate($,J){if($.downgraded||!J9($.requestedModel))return this.remaining($);let Y=this.recoveries.get($.recoveryKey),X=Y&&Y.sourceSuccesses<IJ?Y.reRefusals+1:0,V={model:$.requestedModel,remaining:IJ*2**Math.min(X,2),reRefusals:X,sourceSuccesses:0,cycle:this.nextCycle++,cacheAccountId:J,standbyCacheAnchor:$.standbyCacheAnchor,nextRequestSequence:0,standbyAnchorSequence:0,updatedAt:this.now()};return this.recoveries.delete($.recoveryKey),this.recoveries.set($.recoveryKey,V),this.prune(),V.remaining}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,IJ),Y.updatedAt=this.now(),!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 n$($){return typeof $==="object"&&$!==null}function cY($){if(Array.isArray($))return $;if(n$($)&&Array.isArray($.data))return $.data;return[]}function C3($){if(!n$($)||!n$($.info))return;return $.info}function E3($){let J=C3($);return typeof J?.role==="string"?J.role:void 0}function pY($){let J=C3($);return typeof J?.id==="string"?J.id:void 0}function fJ($){if(!n$($)||!n$($.info))return null;let J=$.info,Y=n$(J.model)?J.model:void 0,X=typeof J.agent==="string"?J.agent:void 0,V=typeof Y?.providerID==="string"?Y.providerID:typeof J.providerID==="string"?J.providerID:void 0,O=typeof Y?.modelID==="string"?Y.modelID:typeof Y?.id==="string"?Y.id:typeof J.modelID==="string"?J.modelID:void 0,K=typeof Y?.variant==="string"?Y.variant:typeof J.variant==="string"?J.variant:void 0;if(!X&&(!V||!O)&&!K)return null;let H={};if(X)H.agent=X;if(V&&O)H.model={providerID:V,modelID:O};if(K)H.variant=K;return H}function kJ($,J){return{agent:$.agent??J.agent,model:$.model??J.model,variant:$.variant??J.variant,latestAssistantMessageId:$.latestAssistantMessageId??J.latestAssistantMessageId,latestUserMessageId:$.latestUserMessageId??J.latestUserMessageId}}function S3($){return Boolean($.agent&&$.model&&$.variant)}async function Z9($,J){if(!$||!J)return null;let Y=$,X=[];if(typeof Y.session?.messages==="function")try{X=cY(await Promise.resolve(Y.session.messages({path:{id:J},query:{limit:100}})))}catch{X=[]}let V,O;for(let H of X){let w=pY(H);if(!w)continue;let q=E3(H);if(q==="assistant"&&(!V||w>V))V=w;if(q==="user"&&(!O||w>O))O=w}let K={latestAssistantMessageId:V,latestUserMessageId:O};for(let H=X.length-1;H>=0;H--){if(E3(X[H])!=="assistant")continue;let w=fJ(X[H]);if(!w)continue;if(K=kJ(K,w),S3(K))return K}for(let H=X.length-1;H>=0;H--){let w=fJ(X[H]);if(!w)continue;if(K=kJ(K,w),S3(K))return K}if(typeof Y.session?.get==="function")try{let H=await Promise.resolve(Y.session.get({path:{id:J}})),w=n$(H)&&n$(H.data)?H.data:n$(H)?H:void 0,q=w?fJ({info:w}):null;if(q)K=kJ(K,q)}catch{}if(!K.agent&&!K.model&&!K.variant&&!K.latestAssistantMessageId&&!K.latestUserMessageId)return null;return K}var A3="[lane start] — automated cache warm; no response needed.",Y9="x-cortexkit-lane-start",lY=1000;function uY($){if(!$||typeof $!=="object")return!1;let J=$;return J.type==="text"&&J.text===A3&&J.synthetic===!0}async function P3($,J){let Y=$?.session;if(typeof Y?.promptAsync!=="function")throw Error("OpenCode plugin client does not support session.promptAsync");let X=await Z9($,J),V={noReply:!1,parts:[{type:"text",text:A3,synthetic:!0}]};if(X?.agent)V.agent=X.agent;if(X?.model)V.model=X.model;if(X?.variant)V.variant=X.variant;await Promise.resolve(Y.promptAsync({path:{id:J},body:V}))}class vJ{#$=new Map;observeSyntheticMessage($){if(!$.parts.some(uY))return!1;let J=`${$.sessionId}\x00${$.messageId}`;if(!this.#$.has(J)&&this.#$.size>=lY){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[Y9]="1",!0}clearSession($){for(let[J,Y]of this.#$)if(Y===$)this.#$.delete(J)}}import{createNativeUi as dY,disconnectNativeVaultForHost as iY,readNativeEnrollmentMode as nY}from"@cortexkit/anthropic-auth-core";function q3($){if(!$?.trim())throw TypeError("sessionId is required");return $}function R3($){if($.host!=="opencode")throw TypeError("OpenCode host is required");let J=dY({...$,readMode:$.readMode??(()=>nY("opencode",process.env)),disconnectVault:$.disconnectVault??(()=>iY({host:"opencode",env:process.env}))});return{menu:J,open(Y){return J.open({sessionId:q3(Y),notify(){}})},apply(Y){return J.apply(Y,{sessionId:q3(Y.sessionId),notify(){}})}}}import{primeStorageFingerprint as oY}from"@cortexkit/anthropic-auth-core";var X9=new Map,G9=new Map;function M3($,J){let Y=G9.get($);if(Y?.fingerprint!==J.fingerprint||Y.marker!==J.marker)return;let X=X9.get(J.fingerprint);if(X?.slots.delete($),X?.slots.size===0)X.manager.stop(),X9.delete(J.fingerprint);G9.delete($)}function I3($,J,Y){let X=oY($),V=X9.get(X),O=V?.manager??J();if(V)Y.rebind(O);let K=G9.get(Y.slot);if(K&&K.fingerprint!==X)M3(Y.slot,K);let H=V??{manager:O,slots:new Set};if(!V)X9.set(X,H);let w={fingerprint:X,marker:Symbol(Y.slot)};return H.slots.add(Y.slot),G9.set(Y.slot,w),{manager:O,release:()=>M3(Y.slot,w)}}import{classifySafeErrorForLog as rY,logger as sY}from"@cortexkit/anthropic-auth-core";function x3($,J,Y){sY.warn("quota","fallback quota preflight could not obtain a reading",{accountId:$,requiredByPolicy:J,...rY(Y)})}var hJ="x-cortexkit-request-class",aY=new Set(["title","summary","prime"]);function f3($){return typeof $==="string"&&aY.has($)}function k3($){let J=$.get("x-cortexkit-request-class");return $.delete("x-cortexkit-request-class"),J==="auxiliary"?"auxiliary":"main"}import{getKillswitchThresholdsForAccount as tY,getScopedQuotaWindowForModel as eY,killswitchPassesPolicy as $5}from"@cortexkit/anthropic-auth-core";function v3($){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 h3($){if(!$.requestModelId)return{isScopedDriven:!1};if(!$5($.mainQuota,$.storage))return{isScopedDriven:!1};let J=eY($.mainQuota,$.requestModelId);if(!J)return{isScopedDriven:!1};if(!Number.isFinite(J.remainingPercent))return{isScopedDriven:!1};let Y=tY($.storage);if(J.remainingPercent<=Y.scoped)return{isScopedDriven:!0,modelName:J.modelName,modelId:$.requestModelId};return{isScopedDriven:!1}}var M$=[],J5=1,b3=new Map,W9=new Map,B1=new Set,Z5=1000;function g3($){if(typeof $!=="string"||$.length===0)throw TypeError("sessionId is required")}function bJ($,J){g3(J);let Y=J5++;if("menu"in $){if($.command!=="claude"||$.menu.command!=="claude")throw TypeError("Only the claude menu is supported");M$.push({id:Y,type:"open-menu",payload:$,sessionId:J})}else M$.push({id:Y,type:"open-dialog",payload:$,sessionId:J});if(M$.length>100)M$=M$.slice(M$.length-100);return Y}function y3($,J,Y){let X=bJ($,J);return new Promise((V)=>{let O;W9.set(X,{picked(){if(O!==void 0)Y.clearTimeout(O);V(!0)},cancel(){if(O!==void 0)Y.clearTimeout(O);V(!1)}}),O=Y.setTimeout(()=>{if(!W9.delete(X))return;if(M$=M$.filter((K)=>K.id!==X),B1.delete(J),B1.add(J),B1.size>Z5){let K=B1.values().next().value;if(K!==void 0)B1.delete(K)}V(!1)},Y.timeoutMs)})}function m3($){return B1.has($)}function c3($,J){if(g3(J),b3.set(J,Date.now()),B1.delete(J),$>0)M$=M$.filter((X)=>X.id>$||X.sessionId!==J);let Y=M$.filter((X)=>X.id>$&&X.sessionId===J);for(let X of Y){let V=W9.get(X.id);if(!V)continue;W9.delete(X.id),V.picked()}return Y}function V9($){let J=Date.now(),Y=b3.get($)??0;return Y>0&&J-Y<3000}import{randomBytes as Y5,timingSafeEqual as X5}from"node:crypto";import{readFile as G5,unlink as W5}from"node:fs/promises";import{createServer as V5}from"node:http";import{join as z5}from"node:path";import{parseApplyRequest as K5}from"@cortexkit/anthropic-auth-core";function O5($){return new Promise((J,Y)=>{let X=[],V=0;$.on("data",(O)=>{if(V+=O.length,V>1e6){$.destroy(),Y(Error("body too large"));return}X.push(O)}),$.on("end",()=>J(Buffer.concat(X).toString("utf8"))),$.on("error",Y)})}function _5($,J){if(!$?.startsWith("Bearer "))return!1;let Y=Buffer.from($.slice(7)),X=Buffer.from(J);return Y.length===X.length&&X5(Y,X)}async function l3($){let J=Y5(32).toString("hex"),Y=V5((O,K)=>{X(O,K)});async function X(O,K){let H=(w,q)=>{K.writeHead(w,{"content-type":"application/json"}),K.end(JSON.stringify(q))};try{let w=O.url??"";if(O.method==="GET"&&w==="/health")return H(200,{ok:!0});if(O.method!=="POST"||!w.startsWith("/rpc/"))return H(404,{error:"not found"});if(!_5(O.headers.authorization,J))return H(401,{error:"unauthorized"});let q=w.slice(5),P=JSON.parse(await O5(O)||"{}");if(q==="pending-notifications"){if(typeof P.sessionId!=="string"||P.sessionId.length===0)return H(400,{error:"sessionId is required"});let c=$.drain(Number(P.lastReceivedId??0),P.sessionId);return H(200,{messages:c})}if(q==="apply"){if(!$.apply)return H(501,{error:"text apply unavailable"});let c=await $.apply(P);return H(200,c)}if(q==="apply-menu"){let c=K5(P);if(c?.command!=="claude"||!c.sessionId?.trim())return H(400,{error:"invalid menu request"});if(!$.applyMenu)return H(501,{error:"menu unavailable"});return H(200,await $.applyMenu(c))}return H(404,{error:"unknown method"})}catch{if(!K.headersSent&&!K.writableEnded&&!K.destroyed)H(500,{error:"RPC request failed"})}}let V=await new Promise((O,K)=>{Y.on("error",K),Y.listen(0,"127.0.0.1",()=>{let H=Y.address();if(H&&typeof H==="object")O(H.port);else K(Error("no port"))})});Y.unref();try{await p3($.dir,{port:V,token:J,pid:process.pid})}catch(O){throw await new Promise((K)=>Y.close(()=>K())),O}return{port:V,token:J,async stop(){await new Promise((O)=>Y.close(()=>O()));try{let O=z5($.dir,`port-${process.pid}.json`),K=JSON.parse(await G5(O,"utf8"));if(K.port===V&&K.pid===process.pid)await W5(O)}catch{}}}}async function u3($,J){let Y=globalThis,X=Y.__anthropicAuthRpcServers??new Map,V=Y.__anthropicAuthRpcServersPending??new Map;Y.__anthropicAuthRpcServers=X,Y.__anthropicAuthRpcServersPending=V;let O=V.get($)??Promise.resolve(),K,H=O.catch(()=>{}).then(async()=>{let q=X.get($);if(q){if(await q.stop(),X.get($)===q)X.delete($)}K=await J(),X.set($,K)});V.set($,H);try{await H}finally{if(V.get($)===H)V.delete($)}let w=K;if(!w)throw Error("RPC server failed to start");return{server:w,release:async()=>{if(X.get($)!==w)return;if(await w.stop(),X.get($)===w)X.delete($)}}}import{resolveClaudeModelCapabilities as j5}from"@cortexkit/anthropic-auth-core";var n3="server-side-fallback-2026-07-01",o3="⁠",z9="cortexkit-server-fallback-v1:";function I$($){return $!==null&&typeof $==="object"&&!Array.isArray($)?$:void 0}function b1($,J){let Y=$?.[J];return typeof Y==="string"?Y:void 0}function g1($){return typeof $==="string"&&$.length>0&&$.length<=128&&/^claude-[a-z0-9-]+$/i.test($)}function L5($){return`${z9}${$.fromModel}|${$.toModel}`}function N5($){if(typeof $!=="string"||!$.startsWith(z9))return null;let J=$.slice(z9.length),Y=J.indexOf("|");if(Y<=0||Y!==J.lastIndexOf("|"))return null;let X=J.slice(0,Y),V=J.slice(Y+1);if(!g1(X)||!g1(V))return null;return{fromModel:X,toModel:V}}function H5($){if($.type!=="fallback")return null;let J=b1(I$($.from),"model"),Y=b1(I$($.to),"model");if(!g1(J)||!g1(Y))return null;return{fromModel:J,toModel:Y}}function D5($){return{type:"fallback",from:{model:$.fromModel},to:{model:$.toModel}}}function U5($,J){let Y=0,X=0;if(!Array.isArray($.messages))return{restoredMarkers:Y,droppedMarkers:X};for(let V of $.messages){let O=I$(V);if(O?.role!=="assistant"||!Array.isArray(O.content))continue;let K=[];for(let H of O.content){let w=I$(H);if(!(w?.type==="thinking"&&(w.thinking===o3||w.thinking==="")&&typeof w.signature==="string"&&w.signature.startsWith(z9))){K.push(H);continue}let P=N5(w.signature);if(J&&P)K.push(D5(P)),Y++;else X++}O.content=K}return{restoredMarkers:Y,droppedMarkers:X}}function r3($){return $?.trim().toLowerCase()==="legacy"?"legacy":"server"}function s3($,J){let Y=J&&j5($.model)?.serverSideFallback===!0,X=U5($,Y);if(Y)$.fallbacks="default";else if($.fallbacks==="default")delete $.fallbacks;return{enabled:Y,...X}}function Q5($){let J,Y=[];for(let V of $.split(/\r?\n/))if(V.startsWith("event:"))J=V.slice(6).trim();else if(V.startsWith("data:")){let O=V.slice(5);Y.push(O.startsWith(" ")?O.slice(1):O)}let X=Y.join(`
3
3
  `);if(!X||X==="[DONE]")return{event:J};try{return{event:J,data:I$(JSON.parse(X))}}catch{return{event:J}}}function d3($){let J=$.indexOf(`
4
4
 
@@ -39,5 +39,5 @@ ${U.url}`,knobs:{oauthUrl:U.url},accounts:y$(await R(K)??o$())}}if(z.type==="add
39
39
 
40
40
  `),N=_>=90?"error":_>=70?"warning":"info";V.tui?.showToast?.({body:{title:"Claude Quota",message:L,variant:N,duration:N==="error"?8000:5000}})?.catch?.(()=>{})}if($.directory){let Z=G8($.directory);try{YJ=await u3(Z,()=>l3({dir:Z,drain:c3,apply:i8,applyMenu:(G)=>rZ(G.sessionId??"").apply(G)}))}catch{h.warn("rpc","native menu server unavailable")}}return{"experimental.chat.messages.transform":async(Z,G)=>{let W=G.messages;I1.observeMessages(W);let z=B3(W);if(z){n1.record(z);return}let _=W.findLast((j)=>j.info?.role==="user"),L=_?.info?.sessionID,N=_?.info?.id;if(typeof L==="string"&&typeof N==="string")n1.clear(L,N)},"chat.message":async({sessionID:Z},G)=>{c9.observeSyntheticMessage({sessionId:Z,messageId:G.message.id,parts:G.parts})},"chat.headers":async({sessionID:Z,agent:G,message:W},z)=>{if(f3(G))z.headers[hJ]="auxiliary";c9.markHeaders({sessionId:Z,messageId:W.id,headers:z.headers}),n1.markHeaders({sessionId:Z,messageId:W.id,headers:z.headers}),I1.markHeaders({sessionId:Z,messageId:W.id,headers:z.headers})},event:async({event:Z})=>{let G=Z,W=G.properties?.info,z=G.properties?.sessionID??W?.sessionID??W?.id;if(!z)return;if(G.type==="message.updated"&&W?.role==="user"&&!cZ(z,W.id))if(typeof W.id==="string"){if(p9.set(z,W.id),X$.has(z)&&x4.get(z)!==W.id)X$.delete(z)}else X$.delete(z);if(G.type==="session.status"&&G.properties?.status?.type!=="idle")X$.delete(z);if(G.type==="session.idle"){let _=p9.get(z);if(_)x4.set(z,_);else x4.delete(z);X$.add(z);while(X$.size>128){let L=X$.values().next().value;if(L)X$.delete(L);else break}VJ(z)}if(G.type==="session.deleted"||G.type==="message.removed")I1.clearSession(z);if(G.type==="session.deleted"){Y1.clearSession(z),_J.delete(z),P.delete(z),c9.clearSession(z),S$.delete(z),N$.delete(z),X$.delete(z),p9.delete(z),x4.delete(z),c$.delete(z);for(let _ of E$.keys())if(_.startsWith(`${z}\x00`))E$.delete(_);o1.delete(z)}},config:async(Z)=>{let G={...Z.command??{}};for(let W of X8)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(!lW(Z))return;uW(G.system)},provider:{id:"anthropic",async models(Z,G){let W=$2(tW(Z.models));if(G.auth?.type!=="oauth"||!oG(a0??{}))return W;return J2(W)}},"command.execute.before":async(Z)=>{if(Z.command!=="claude")return;let G=await rZ(Z.sessionID).open(Z.sessionID),W=V9(Z.sessionID),z=!1;if(W)bJ(G,Z.sessionID);else if(!G2()&&!m3(Z.sessionID))W=await y3(G,Z.sessionID,{timeoutMs:J.tuiPickupTimeoutMs??Z2,setTimeout:Y.setTimeout,clearTimeout:Y.clearTimeout}),z=!W;if(!W){let _=[...z?[X2(),""]:[],G.menu.title,...G.menu.sections.flatMap((L)=>[`
41
41
  ## ${L.title}`,...L.lines,...L.items.map((N)=>`${N.label}${N.detail?` — ${N.detail}`:""}`)])].join(`
42
- `);await Z8($,Z.sessionID,_)}pW()},auth:{provider:"anthropic",async loader(Z,G){u$=async()=>{let Q=await Z();return{type:Q.type,active:GZ(Q,"anthropic")}},h4=Z;let W=await Z();if(W.type!=="oauth")return{};let z=await S1("opencode").catch(()=>{return});if(!wZ&&GZ(W,"anthropic")&&process.env.OPENCODE_ANTHROPIC_AUTH_DISABLE_PROFILE_HYDRATION!=="1"){wZ=!0;let Q=v4(G1.signal).then((U)=>{if(!G1.signal.aborted)return C$(U.policyStorage,{...$$,routingAuthoritative:!1})}).catch(()=>{if(!G1.signal.aborted)h.debug("quota","startup account profile hydration failed")});X1.add(Q),Q.then(()=>X1.delete(Q))}function _(Q,U=!1){if(!GZ(Q,"anthropic")&&!(U&&b4(Q)))throw Error("Native OAuth requires inert OpenCode activation; run offline setup")}async function L(Q){_(await Z(),Q&&await S1("opencode")==="local")}let N=async(Q,U,C=!1)=>{let f=await Z();if(f.type!=="oauth")return{type:f.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 m=await S1("opencode");if(m==="claustrum"&&!M8(f))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.");W$();let J0=await HW(T,U),_0=m==="claustrum"?"committed":m7(await p7(s)),f0=l7(J0);if(_(f,m==="local"&&(_0==="committed"||_0==="retired")&&f0),m==="claustrum"&&!J0.accounts.some((q0)=>q0.type==="oauth"&&y0(q0)))throw new OZ;let w0=V3(J0.policyStorage);try{z3({mode:m==="claustrum"?"C":"L",main:EJ(f),fallbacks:m==="claustrum"?"T":w0.fallbacks,evidence:"V",authority:_0,localOAuthServable:f0}),c4=void 0}catch(q0){if(q0 instanceof K4)c4=q0.verdict;throw q0}R0=J0.policyStorage;let k0=J0.accounts.find((q0)=>q0.id==="main"),N0=k0?.binding,_$=k0?O0(k0,J0.policyStorage):void 0,V1=_$&&_$!==k0?.quota?{...J0.policyStorage,quota:{...J0.policyStorage.quota,mainQuota:_$}}:J0.policyStorage,D$=L0("main",W0(N0),k0?.accountIdentity,J0.policyStorage),U$=Boolean(N0&&D$?.lineage===W0(N0)&&D$?.generalExhausted===!0);if(k0&&N0&&(!m0||N0.rowId!==m0.rowId||N0.credentialEpoch>m0.credentialEpoch))k.clearMain(),k.setMainQuotaAccountIdentity(k0.accountIdentity),m0={rowId:N0.rowId,credentialEpoch:N0.credentialEpoch};if(C&&(e$(J0.policyStorage)==="fallback-first"||QZ(V1,k0?.accountIdentity,U$))){let q0=J0.accounts.find((V$)=>V$.id==="main");return U?.throwIfAborted(),{type:"oauth",access:"",expires:0,refresh:void 0,nativeAccountIdentity:q0?.accountIdentity,nativeRoutingLineage:q0?.binding?W0(q0.binding):void 0,nativeLocalSource:void 0,nativeScopedAttempt:void 0,modelDenied:!1,credentialUnavailable:!1,credentialFailure:void 0,deferred:!0}}let Q0,v0,j$,v$;try{Q0=await P0("main",U,void 0,Q,"serve",J0)}catch(q0){if(q0 instanceof S0)throw q0;if(T1(q0))throw q0;if(q0 instanceof Z1){v0=q0.account;let V$=mG(v0.quota,Q);if(V$!==void 0&&(!Number.isFinite(V$.checkedAt)||(V$.checkedAt??0)+q0.checkIntervalMs<=Date.now())||!_Z(v0.quota)&&!M9(v0.quota,Q))try{await T.fetchQuota("main",void 0,U),Q0=await P0("main",U,void 0,Q),v0=void 0}catch(h$){if(T1(h$))throw h$;if(h$ instanceof Z1)v0=h$.account;else if(h$ instanceof O$)j$=h$.account,v$=h$}}else if(q0 instanceof O$)j$=q0.account,v$=q0}return U?.throwIfAborted(),{type:"oauth",access:Q0?.accessToken??"",expires:Q0?.expires??0,refresh:void 0,nativeRoutingLineage:I0(Q0?.localSubject,Q0?.scopedAttempt)??(k0?.binding?W0(k0.binding):void 0),nativeAccountIdentity:Q0?.accountIdentity??v0?.accountIdentity??j$?.accountIdentity,modelDenied:Boolean(v0),credentialUnavailable:Boolean(j$),credentialFailure:v$,deferred:!1,nativeLocalSource:Q0?.localSource,nativeScopedAttempt:Q0?.scopedAttempt}};W1=N;let j={type:"oauth",access:"",expires:0};if(j.type==="oauth"){let f=function(){if(U1)Y.clearInterval(U1);let D=async()=>{try{let B=await R(K);if(!m8(B))return;let x=await N();if(x.type!=="oauth")return;if(x.nativeLocalSource==="rotated"||x.nativeLocalSource==="adopted")return;if(x.expires&&x.expires-Date.now()>gZ(B))return;await C()}catch{h.warn("refresh","native main OAuth background refresh unavailable")}};U1=Y.setInterval(()=>{D()},MW+J8(t7)),U1.unref?.()},J0=function(D,B){if(D instanceof Request&&D.body)return!1;return B==null||typeof B==="string"},_0=function(D){if(typeof D!=="string")return;try{let B=JSON.parse(D);return typeof B.model==="string"?B.model:void 0}catch{return}},f0=function(D){return D.has("x-parent-session-id")},w0=function(D){let B;try{B=JSON.parse(D)}catch{return!1}if(typeof B!=="object"||B===null)return!1;let x=Reflect.get(B,"error");return Reflect.get(B,"type")==="error"&&typeof x==="object"&&x!==null&&Reflect.get(x,"type")==="rate_limit_error"},k0=function(D){return D?.quota?.enabled===!0},_$=function(D,B){if(D.delete("authorization"),D.delete("x-api-key"),B.authHeader==="x-api-key")D.set("x-api-key",B.apiKey??"");else D.set("Authorization",`Bearer ${B.apiKey??""}`);D.set("Content-Type","application/json"),F7(D)},Q0=function(D){return k.getFallback(D.id,D)?.quota??D.quota},v0=function(D,B){return D.status===429||B},j$=function(D,B=R0){return b("main",D?.routingLineage,D?.providerAccountUuid,k.getMain(D?.quotaKey??H$),B)},v$=function(D,B){if(!D&&!B?.providerAccountUuid)return!1;let x=j$(B);return Boolean(x&&(D||x.quota.accountIdentity===B?.providerAccountUuid)&&x.refreshAfter>Date.now()&&r1(x.quota)&&(x.quota.source!=="headers"||L0("main",B?.routingLineage,B?.providerAccountUuid)?.generalExhausted===!0||["five_hour","seven_day"].some((v)=>x.quota.fieldSources?.[v]==="poll"&&(x.quota[v]?.remainingPercent??1)<=0)))},U=(await T.read().catch(()=>{return}))?.accounts.find((D)=>D.id==="main");if(e1=U?.binding?.rowId??U?.accountIdentity,H$??=U?.accountIdentity??e1,j.access)await s1(j.access);async function C(D,B,x){let v=b4(await Z());await L(v),x?.throwIfAborted();let d=await P0("main",x,D,B,"refresh");return await L(v),x?.throwIfAborted(),d.accessToken}if(z==="local")f();k.seedFallbacksFromAccounts((a0?.accounts??[]).filter(B0));let m=await hW(()=>R(K)).catch(()=>({freshStorage:null,activeId:void 0,route:"main"}));await C$(m.freshStorage,{activeId:m.activeId,route:m.route,mainAccessToken:j.access,routingAuthoritative:!1});async function N0(D,B){if(!D.body||D.status!==200)return B?.mark("inspect_stream_skip",{status:D.status}),{response:D,rateLimited:!1};if(D.headers.get("x-cortexkit-relay-optimistic")==="true")return B?.mark("inspect_stream_skip",{status:D.status,reason:"optimistic_relay"}),{response:D,rateLimited:!1};let x=$0(),v=D.body.getReader(),d=[],t=0,g=EG({maxFrameBytes:65536}),A=!1,j0=!1,Y0=!0;while(!j0&&t<65536){let{done:I,value:n}=await v.read().catch(async(F)=>{let E=cJ(F,l$.get(D)?.toolNameMap);if(E!==F)await pJ(v,E);throw E});if(I)break;d.push(n),t+=n.byteLength;let X0;try{X0=g.push(n)}catch{break}for(let F of X0){let E=jW(CG(F,{streamStart:Y0}));if(Y0=!1,E.data===void 0)continue;A=w0(E.data),j0=!0;break}}if(A){await v.cancel().catch(()=>{});try{v.releaseLock()}catch{}let I=new ReadableStream({start(X0){for(let F of d)X0.enqueue(F);X0.close()}});B?.mark("inspect_stream_first_event",{ms:A0($0()-x),bytes:t,rateLimited:!0});let n=new Response(I,{status:D.status,statusText:D.statusText,headers:D.headers});return o4(l$,D,n),{response:n,rateLimited:!0}}let V0=new ReadableStream({start(I){for(let n of d)I.enqueue(n)},async pull(I){let{done:n,value:X0}=await v.read();if(n){I.close();return}I.enqueue(X0)},cancel(I){return v.cancel(I)}});B?.mark("inspect_stream_first_event",{ms:A0($0()-x),bytes:t,rateLimited:!1});let S=new Response(V0,{status:D.status,statusText:D.statusText,headers:D.headers});return o4(l$,D,S),{response:S,rateLimited:!1}}async function V1(D,B,x,v){if(W$(),!B){let g=j$(x);if(!x?.providerAccountUuid||!g||g.refreshAfter<=Date.now()||!r1(g.quota))throw Error("API fallback requires fresh general primary OAuth exhaustion");let A=await P0("main",v);if(A.accountIdentity!==x.providerAccountUuid||x.routingLineage&&I0(A.localSubject,A.scopedAttempt)!==x.routingLineage)throw Error("Primary identity changed before API fallback");B=A.accessToken}let d=await T.authorizeApi(D,v),t=(await T.read()).accounts.find((g)=>g.id==="main");if(t?.binding&&W0(t.binding)!==x?.routingLineage)throw Error("Primary identity changed before API fallback");if(!v$(B,x))throw Error("API fallback requires fresh general primary OAuth exhaustion");return d}async function D$(D,B,x,v,d="api_fallback",t,g,A,j0){if(g)g.oauthAccountId=void 0,g.opusCacheAnchor=void 0;let Y0=$0(),V0=U4(D,B),S=V0.get("x-session-affinity")||V0.get("x-opencode-session"),I=f0(V0),n=V0.get(h1)??void 0,X0=n1.resolveHeader(n);V0.delete("x-parent-session-id"),V0.delete("x-session-affinity"),V0.delete("x-opencode-session"),V0.delete("x-opencode-session-id"),V0.delete("x-opencode-parent-session-id"),V0.delete(h1),V0.delete(G4),V0.delete(hJ);let F=await C4(D,B),E=!1,z0=null,d0,y=typeof F==="string"?F.length:void 0;if(F&&typeof F==="string"){let P$=$0(),L$=(()=>{if(!VZ())return!1;try{return h7(JSON.parse(F).model)}catch{return!1}})();try{F=await H9(F,{onToolNameMap:(h0)=>{d0=h0},cache1hEnabled:!I&&E4(),cache1hMode:F4(),fastModeEnabled:L$,sessionId:S||void 0,midConversationEffortEnabled:!1,midConversationEffortPlan:n,midConversationEffortResolvedPlan:X0,modelRemapEnabled:!0,perf:(h0,z$)=>v?.mark(`rewrite_body_${h0}`,{route:d,...z$})})}catch(h0){if(h0 instanceof E0)return s7(h0);if(h0 instanceof u7)return a7(h0);throw h0}if(_$(V0,x),V0.set("anthropic-beta",g7(V0.get("anthropic-beta"),[])),L$)N9(V0);try{E=JSON.parse(F).stream===!0}catch{}v?.mark("rewrite_body",{route:d,ms:A0($0()-P$),originalBytes:y,rewrittenBytes:F.length,cacheEnabled:!I&&E4(),cacheMode:F4(),fastModeEnabled:L$,subagent:I})}else _$(V0,x);let u0=await e9(V0),A$=await V1(x.id,A,j0,B?.signal??void 0);x={...x,...A$},_$(V0,x);let J$=Q4(D,{baseURL:x.baseURL}),c0=$0(),d$=E9([x.apiKey??""],E?"event-stream":"http"),G0;try{G0=d$.redactResponse(await fetch(J$.input,{...B,body:F,headers:V0,...lJ()&&{tls:{rejectUnauthorized:!1}}}))}catch(P$){let L$=d$.redactError(P$);if(d$.dispose(),typeof F==="string")await S9({affinity:S,route:d,error:d7,bodyText:F,url:J$.url?.toString()??S4(J$.input),method:P1(D,B),headers:V0});throw L$}if(typeof F==="string")z0=await S9({affinity:S,route:d,status:G0.status,bodyText:F,url:J$.url?.toString()??S4(J$.input),method:P1(D,B),headers:V0});if(IZ(G0,{source:"turn",toolNameMap:d0,accountId:x.id,synthetic:!1,...u0,requestedModel:_0(F),dump:z0,status:G0.status,streaming:E}),v?.mark("send_headers_received",{route:d,ms:A0($0()-c0),status:G0.status,relayConfigured:!1,totalSendWithAccessMs:A0($0()-Y0),baseURL:x.baseURL}),G0.ok)u1.publish(()=>T.publishApi(A$.subject,{lastUsed:Date.now()}));return G0}async function U$(D,B,x,v,d="unknown",t,g="main",A,j0,Y0=!1,V0,S){ZG(x,"anthropic");let I=b4(await Z()),n=$0(),X0=t,F=async()=>{return X0??=await R(K),X0},E=U4(D,B),z0=E.get("x-session-affinity")||E.get("x-opencode-session"),d0=f0(E),y=E.get(h1)??void 0,u0=n1.resolveHeader(y),A$=E.get(G4)??void 0,J$=I1.resolveHeader(A$),c0=!d0&&!Y0?J$:void 0;E.delete("x-parent-session-id"),E.delete("x-session-affinity"),E.delete("x-opencode-session"),E.delete("x-opencode-session-id"),E.delete("x-opencode-parent-session-id"),E.delete(h1),E.delete(G4);let d$=k3(E),G0=await C4(D,B),P$=z0?t9.previousFor(z0):null,L$=P$?.messageId??null,h0,z$=!1,X4=null,q$=null,d4,k1;if(G0&&typeof G0==="string"){let l=$0();try{let U0=JSON.parse(G0);if(typeof U0.model==="string")k1=U0.model}catch{}v?.mark("model_parse_for_identity",{route:d,ms:A0($0()-l),bodyBytes:G0.length})}let p0=await P0(g,B?.signal??void 0,void 0,k1,g==="main"?"last-main":"serve");if(x=p0.accessToken,g==="main"&&V0?.providerAccountUuid&&p0.accountIdentity!==V0.providerAccountUuid)throw Error("Main account identity changed after request routing");S=p0.scopedAttempt;let M=$0(),i=J1(p0.accountIdentity);v?.mark("resolve_claude_code_identity",{route:d,ms:A0($0()-M),hasAccountUuid:Boolean(i.accountUuid)});let r=typeof G0==="string"?G0.length:void 0;if(G0&&typeof G0==="string"){let l=$0(),U0=(()=>{if(!VZ())return!1;try{return h7(JSON.parse(G0).model)}catch{return!1}})(),Z$=!d0&&E4(),v1=F4(),NJ=j0?.plan.downgraded&&j0.plan.standbyCacheAnchor?.oauthAccountId===g?j0.plan.standbyCacheAnchor:void 0;try{G0=await H9(G0,{onToolNameMap:(n0)=>{d4=n0},cache1hEnabled:Z$,cache1hMode:v1,fastModeEnabled:U0,identity:i,sessionId:z0||void 0,thinkingPrefixMismatchBehavior:cG(await F()),midConversationEffortEnabled:!0,turnEndNoteEnabled:!0,turnEndNote:(await F())?.turnEndNote,midConversationEffortPlan:y,midConversationEffortResolvedPlan:u0,hybridStandbyAnchor:NJ,serverSideFallbackEnabled:m9==="server",laneStart:Y0,billingLineage:c0,cacheDiagnosticsPreviousMessageId:L$,perf:(n0,K1)=>{if(v?.mark(`rewrite_body_${n0}`,{route:d,...K1}),n0==="cache_strategy"&&K1?.standbyBridgeApplied===!0&&j0&&!j0.standbyBridgeLogged)j0.standbyBridgeLogged=!0,h.info("fable-fallback","restored standby Opus cache bridge",{session:j0.plan.sessionId,distanceBlocks:K1?.standbyDistanceBlocks})}})}catch(n0){if(n0 instanceof E0)return s7(n0);if(n0 instanceof u7)return a7(n0);throw n0}if(j0?.plan.downgraded&&Z$&&v1==="hybrid"){let n0=N7(G0);j0.opusCacheAnchor=n0?{...n0,oauthAccountId:g}:void 0}let aZ=$0();try{let n0=JSON.parse(G0);m1(E,x,{body:n0,identity:i,requestClass:d$});let K1=n0.diagnostics,tZ=K1&&typeof K1==="object"&&!Array.isArray(K1)&&K1.previous_message_id===L$?L$:void 0;if(tZ!==void 0&&E.get("anthropic-beta")?.split(",").map((t8)=>t8.trim()).includes(V4))h0={sessionId:z0??"session-unknown",previousMessageId:tZ,...P$?{previousMessageReceivedAt:P$.receivedAt}:{},isSubagent:d0,ttlSent:s4(n0)};z$=n0.stream===!0,v?.mark("set_oauth_headers_body_parse",{route:d,ms:A0($0()-aZ),bodyBytes:G0.length,parsed:!0})}catch{m1(E,x,{identity:i,requestClass:d$}),v?.mark("set_oauth_headers_body_parse",{route:d,ms:A0($0()-aZ),bodyBytes:G0.length,parsed:!1})}if(U0)N9(E);v?.mark("rewrite_body",{route:d,ms:A0($0()-l),originalBytes:r,rewrittenBytes:G0.length,cacheEnabled:!d0&&E4(),cacheMode:F4(),fastModeEnabled:U0,subagent:d0})}let K0=await e9(E),p=Q4(D);if(j0)j0.oauthAccountId=g;if(typeof G0==="string"&&E4()&&F4()==="hybrid"){let l=await F();if(!d0||uG(l)){let U0=$0(),Z$=t1.track({sessionId:z0,url:p.url?.toString()??p.input.toString(),headers:E,bodyText:G0,storage:l,cacheMode:"hybrid",oauthAccountId:g,isSubagent:d0});v?.mark("cachekeep_track",{session:z0,ms:A0($0()-U0),tracked:Z$.tracked,reason:Z$.tracked?void 0:Z$.reason,bodyBytes:G0.length})}}let e=p0,i0,G$=async(l)=>{await L(I),B?.signal?.throwIfAborted();let U0=await P0(g,B?.signal??void 0,l,k1,g==="main"?"last-main":"serve");if(await L(I),B?.signal?.throwIfAborted(),U0.accountIdentity!==e.accountIdentity||Boolean(U0.scopedAttempt)!==Boolean(e.scopedAttempt))throw Error("Native credential authority changed during the request");if(i0&&(!U0.scopedAttempt||U0.scopedAttempt.credentialId!==i0.credentialId||U0.scopedAttempt.accountIdentity!==i0.accountIdentity||U0.scopedAttempt.recordVersion<=i0.recordVersion))throw Error("Native vault retry has no strict newer same-account receipt");return U0},Q$=!1,t0=S,T0=async()=>{Q$=!0,p0=await G$(),t0=p0.scopedAttempt,E.set("authorization",`Bearer ${p0.accessToken}`),C0={...C0,accessToken:p0.accessToken,anthropicAccountUuid:F$(p0.accountIdentity),localSubject:p0.localSubject,scopedAttempt:p0.scopedAttempt};let l=E9([p0.accessToken],z$?"event-stream":"http");try{let U0=(v1,NJ)=>fetch(p.input,{...B,body:v1,headers:NJ,...lJ()&&{tls:{rejectUnauthorized:!1}}}),Z$=l.redactResponse(typeof G0==="string"?await EW({url:p.url?.toString()??S4(p.input),body:G0,headers:E,latch:H,send:U0}):await U0(G0,E));if(typeof G0==="string")X4=await S9({affinity:z0,route:d,status:Z$.status,bodyText:G0,url:p.url?.toString()??S4(p.input),method:P1(D,B),headers:E,tag:Y0?"start":void 0});return Z$}catch(U0){let Z$=l.redactError(U0);if(l.dispose(),typeof G0==="string")await S9({affinity:z0,route:d,error:d7,bodyText:G0,url:p.url?.toString()??S4(p.input),method:P1(D,B),headers:E,tag:Y0?"start":void 0});throw Z$}},K$=await F(),e0;try{e0=await T.getRelayConfig()}catch(l){if(l instanceof aG&&l.code==="relay-inconsistent")return DZ(l.message);throw l}let LJ=g==="main"?void 0:K$?.accounts.find((l)=>l.id===g&&B0(l)),i4=IG(LJ,A),C0={accountId:g,accessToken:x,authLineageId:A,anthropicAccountUuid:F$(S?.accountIdentity)??(g==="main"?V0?.providerAccountUuid:F$(i.accountUuid)??F$(i4)),localSubject:p0.localSubject,scopedAttempt:p0.scopedAttempt,...g==="main"&&V0?{mainQuotaIdentity:V0}:{}},n4=$0(),R$,H0=!1,l0=M0,g0=()=>TW({config:e0,input:p.input,init:B,headers:E,body:G0,fallback:T0,affinity:z0,optimisticResponse:e0?.transport==="websocket",authorizeAttempt:async()=>{let l=await G$(),U0=l.scopedAttempt;p0=l,C0={...C0,accessToken:l.accessToken,anthropicAccountUuid:F$(l.accountIdentity),localSubject:l.localSubject,scopedAttempt:U0};let Z$=new Headers(E);return Z$.set("authorization",`Bearer ${l.accessToken}`),{headers:Z$,errorSecrets:[l.accessToken],onUpstreamStatus:(v1)=>{if(v1!==401||!U0)return;if(R$=U0,H0)l0(U0,"relay_status_field")}}},onResponseHeaders:(l)=>{AZ(l,C0),I1.commit(c0,HJ(l))},onDumpCreated:(l)=>{q$=l},dumpTag:Y0?"start":void 0}),D0=await g0();if(!Q$&&R$&&D0.status===401&&typeof G0==="string"&&(P1(D,B)??"").toUpperCase()==="POST"&&!B?.signal?.aborted){let l;try{l=await L1(R$,"model-relay",B?.signal??void 0)}catch{}if(l)await D0.body?.cancel().catch(()=>{}),h.info("claustrum","retrying after scoped credential rotation",{accountId:g,previousVersion:R$.recordVersion,newVersion:l.recordVersion,transport:"relay"}),i0=R$,R$=void 0,D0=await g0()}if(Q$&&t0&&D0.status===401&&typeof G0==="string"&&(P1(D,B)??"").toUpperCase()==="POST"&&!B?.signal?.aborted){let l;try{l=await L1(t0,"model",B?.signal??void 0)}catch{}if(l)await D0.body?.cancel().catch(()=>{}),h.info("claustrum","retrying after scoped credential rotation",{accountId:g,previousVersion:t0.recordVersion,newVersion:l.recordVersion,transport:"direct"}),i0=t0,D0=await T0()}if(D0.status===401&&!p0.scopedAttempt&&typeof G0==="string"&&(P1(D,B)??"").toUpperCase()==="POST"&&!B?.signal?.aborted){let l=p0.accessToken,U0;try{U0=await G$(l)}catch(Z$){j1.set(D0,Z$)}if(U0&&U0.accessToken!==l)await D0.body?.cancel().catch(()=>{}),D0=Q$?await T0():await g0()}if(v?.mark("send_headers_received",{route:d,ms:A0($0()-n4),status:D0.status,relayConfigured:e0!=null,totalSendWithAccessMs:A0($0()-n)}),Q$)AZ(D0.headers,C0),I1.commit(c0,HJ(D0.headers));if(IZ(D0,{source:Y0?"start":"turn",toolNameMap:d4,accountId:g,synthetic:Y0,...K0,requestedModel:_0(G0),request:h0,trackSessionId:z0??void 0,dump:Q$?X4:q$,status:D0.status,streaming:z$}),Q$&&t0&&D0.status===401)await l0(t0,"direct");if(H0=!0,!Q$&&R$)await l0(R$,"relay_status_field");if(D0.status===401)await r7(D0,B?.signal);if(D0.ok)u1.publish(async()=>{if(C0.scopedAttempt)await T.vault.publish(C0.scopedAttempt,{lastUsed:Date.now()});else if(C0.localSubject)await T.publishLocal(C0.localSubject,{lastUsed:Date.now()})});return D0}async function q0(D,B){if(!D)return!1;try{return await k.refreshMain(B?.quotaKey??H$,D,B?.generation),v$(D,B)}catch{return!1}}async function V$(D,B={}){let x=r$(D),v=await N1(!1,x,B.modelId,"admission");if(D=await R(K),x){if(D&&v.size)D={...D,accounts:D.accounts.filter((A)=>!v.has(A.id)||a$(void 0,D,A.id,B.modelId))}}let d=await n9.getUsableFallbackAccounts(D,{modelId:B.modelId}),t=new Map(d.map((A)=>[A.id,A])),g=[];for(let A of D?.accounts??[]){if(D&&B0(A)){if(b0(D)){let Y0=t.get(A.id);if(Y0)g.push(Y0);continue}if(T4(D)!=="local")continue;let j0=t.get(A.id);if(j0)g.push(j0);else if(A.access&&(!A.expires||A.expires>Date.now())&&!s$(A.lastRefreshError)&&!C1(A.lastRefreshError,A.id,Date.now(),t$(A.refresh))&&D?.quota?.failClosedOnUnknownQuota!==!0&&!_Z(Q0(A)))g.push(A);continue}if(B.includeApiRoutes===!0&&c1(A)&&y0(A)&&KZ(A.baseURL))g.push(A)}if(!r$(D))return g;return g.filter((A)=>B0(A)?a$(Q0(A),D,A.id,B.modelId):!0)}async function jJ(D){let B=D.mainQuotaIdentity?.quotaKey,x=k.getMain(B),v=x?.quota;if(!A1(x?.quota,D.storage,Date.now(),D.requestedModelId))try{v=await k.refreshMain(B,D.mainAccessToken,D.mainQuotaIdentity?.generation,"admission")}catch{}let d=await n9.getUsableFallbackAccounts(D.storage,{modelId:D.requestedModelId}),t=await R(K)??D.storage,g=[],A=b0(t);if(A){let S=t?.claustrum?.primaryAccount;if(S!==void 0&&y0(S)&&!t?.claustrum?.disabledAccountIdentities?.includes(S.accountId))g.push({id:Y$,access:"",quota:v,identity:S?{kind:"known",accountId:S.accountId}:{kind:"unknown"},order:0,scoped:!0})}else if((D.mainAccessToken||D.mainPolicyDenied)&&!s$(t?.refresh?.mainLastRefreshError))g.push({id:Y$,access:D.mainAccessToken,quota:v,identity:B?{kind:"known",accountId:B}:{kind:"unknown"},order:0});if(A)for(let[S,I]of(t?.accounts??[]).entries()){if(!y0(I)||!B0(I))continue;if(I.claustrumScopedCredentialId){let n=Q0(I);if(!A1(n,t,Date.now(),D.requestedModelId))try{n=await k.refreshFallback(I.id,"",I)}catch{}g.push({id:I.id,access:"",quota:n,identity:{kind:"known",accountId:I.id},order:S+1,account:I,scoped:!0})}}else{let S=new Map(d.map((I)=>[I.id,I]));for(let[I,n]of(t?.accounts??[]).entries()){if(!y0(n)||!B0(n))continue;let X0=S.get(n.id)??n;if(s$(X0.lastRefreshError))continue;let F=Q0(X0);if(!A1(F,t,Date.now(),D.requestedModelId))try{F=await k.refreshFallback(X0.id,X0.access??"",X0)}catch{}g.push({id:X0.id,access:X0.access??"",quota:F,identity:{kind:"known",accountId:X0.id},order:I+1,account:X0})}}let j0=new Set(d.map((S)=>S.id)),Y0=new Set(g.flatMap((S)=>{let I=S.id===Y$?t?.refresh?.mainLastRefreshError:S.account?.lastRefreshError,n=!S.scoped,X0=S.identity.kind==="known"?S.identity.accountId:void 0;if(n&&s$(I))return[];if(n&&C1(I,X0,Date.now(),S.id===Y$?D.mainRefreshToken?t$(D.mainRefreshToken):void 0:S.account?.refresh?t$(S.account.refresh):void 0)&&(S.id===Y$||!j0.has(S.id)))return[];if(A1(S.quota,t,Date.now(),D.requestedModelId)&&tJ({quota:S.quota,modelId:D.requestedModelId}).action==="migrate")return[];if(r$(t)&&!a$(S.quota,t,S.id===Y$?void 0:S.id,D.requestedModelId))return[];return[S.id]})),V0=g.flatMap((S)=>{let I=S.id===Y$?t?.refresh?.mainLastRefreshError:S.account?.lastRefreshError,n=!S.scoped,X0=S.identity.kind==="known"?S.identity.accountId:void 0;if(n&&s$(I)||n&&C1(I,X0,Date.now(),S.id===Y$?D.mainRefreshToken?t$(D.mainRefreshToken):void 0:S.account?.refresh?t$(S.account.refresh):void 0)&&(S.id===Y$||!j0.has(S.id)))return[];let F=S.id===Y$?void 0:S.id,E=_Z(S.quota)?S.quota:void 0,z0=E?{kind:"known",quota:E}:{kind:"unknown"};return(!r$(t)||a$(z0.kind==="known"?z0.quota:void 0,t,F,D.requestedModelId))&&p1(z0.kind==="known"?z0.quota:void 0,t)&&(z0.kind==="unknown"||I9(z0.quota,D.requestedModelId)&&(S.id===Y$||j0.has(S.id)||Boolean(S.scoped)))?[{accountId:S.id,quota:z0,order:S.order}]:[]});return{storage:t,allRoutes:g,candidates:V0,retainAccountIds:Y0}}let h$=new WeakMap;async function z1(D,B,x,v,d,t,g){if(!x.length)return d??null;let A=g?.returnLastOnExhausted??!0,j0=d??null,Y0=!1,V0=async()=>{if(Y0)return;Y0=!0,await d?.body?.cancel().catch(()=>{})};for(let[S,I]of x.entries()){let n;if(c1(I))await V0(),n=await D$(D,B,I,t,`api_fallback_${S}`,v,g?.fableRequest,g?.mainAccessToken,g?.mainQuotaIdentity);else if(b0(v)&&I.claustrumScopedCredentialId){let F;try{F=await P0(I.id,B?.signal??void 0,void 0,_0(await C4(D,B)))}catch(z0){if(z0 instanceof Z1)continue;throw z0}let E=F.scopedAttempt;if(!E)throw Error("Native vault fallback credential is unavailable");await V0(),n=await U$(D,B,E.accessToken,t,`fallback_${S}`,v,I.id,I.authLineageId,g?.fableRequest,g?.laneStartRequest,void 0,E)}else if(T4(v)==="local"&&I.access)await V0(),n=await U$(D,B,I.access,t,`fallback_${S}`,v,I.id,I.authLineageId,g?.fableRequest,g?.laneStartRequest);else continue;j0=n;let X0=NZ(n,v);if(!X0){let F=await N0(n,t);n=F.response,j0=n,X0=F.rateLimited}if(!X0){if(h$.set(n,c1(I)?"api":"oauth"),await g?.onSuccess?.(I),B0(I)&&k0(v)&&k.shouldRefreshOnRequestCount(l4)){if(b0(v)||I.access)k.refreshFallback(I.id,b0(v)?"":I.access??"",I).then(()=>g?.onSuccess?.(I)).catch(()=>{})}return n}if(S<x.length-1||!A)await n.body?.cancel().catch(()=>{})}return A?j0:null}async function a8(D,B,x,v,d,t,g,A,j0,Y0,V0=!1,S){if(!J0(D,B?.body))return x;let I=$0(),n=t??await R(K);if(d?.mark("fallback_load_storage",{ms:A0($0()-I),cached:!!t}),!(n?.accounts??[]).some((u0)=>y0(u0)&&(B0(u0)||c1(u0)&&KZ(u0.baseURL))))return x;let F=x,E=NZ(F,n),z0=v0(F,!1);if(!E){let u0=await N0(F,d);F=u0.response,E=u0.rateLimited,z0=v0(F,u0.rateLimited)}if(!E)return F;let d0=!1;if(v)d0=v.some(c1);else if(z0)d0=await q0(g,S);let y=v;if(!y){let u0=$0();y=await V$(n,{includeApiRoutes:d0,modelId:j0}),d?.mark("fallback_get_accounts",{ms:A0($0()-u0),accounts:y.length})}if(r$(n)){let u0=y.length;if(y=y.filter((A$)=>B0(A$)?a$(Q0(A$),n,A$.id,j0):!0),y.length<u0)m$("[killswitch] filtered fallbacks",{before:u0,after:y.length})}return await z1(D,B,y,n,F,d,{onSuccess:A,mainAccessToken:g,mainQuotaIdentity:S,fableRequest:Y0,laneStartRequest:V0})??F}return{apiKey:"",async fetch(D,B){if(D instanceof Request&&B?.signal===void 0)B={...B,signal:D.signal};let x=U4(D,B),v=x.get(Y9)==="1";x.delete(Y9),B={...B,headers:x};let d=x.get("x-session-affinity")||x.get("x-opencode-session"),t=_0(B?.body),g=Boolean(d&&t&&!f0(x)&&Y1.resetForModelChange(d,t));if(g&&d){for(let M of E$.keys())if(M.startsWith(`${d}\x00`))E$.delete(M);N$.delete(d)}let A=Y1.plan(d,B?.body),j0=m9==="server"&&J9(A?.effectiveModel??t)?A?.effectiveModel??t:void 0,Y0=A?{plan:A}:void 0;if(A?.downgraded)B={...B,body:A.bodyText};let V0=B?.body,S=cW({bodyBytes:typeof V0==="string"?V0.length:void 0}),I=(M)=>{let i=l$.get(M);return B7(M,{toolNameMap:i?.toolNameMap,perf:(r,K0)=>S.mark(r,K0),laneStart:v,laneStartOAuthServed:h$.get(M)!=="api",...i?i.streaming?{onMessageStart:(r)=>MZ(M,r,!1),onMessageDelta:(r)=>R8(M,r),onStreamEnd:()=>i.dumpWrite}:{onMessageResponse:(r)=>MZ(M,r),onStreamEnd:()=>i.dumpWrite,responseMode:"json"}:{},contentFilterModel:A?.requestedModel,...!A?.downgraded&&A?{onContentFilter:(r)=>{if(!Y0?.oauthAccountId)return h.debug("fable-fallback","content filter recovery unavailable for non-OAuth route",{session:A.sessionId}),!1;let K0=Y1.activate(A,Y0.oauthAccountId);E$.delete(A.recoveryKey),E$.set(A.recoveryKey,nW(A.requestedModel,K0));while(E$.size>128){let p=E$.keys().next().value;if(p)E$.delete(p);else break}k$.delete(A.recoveryKey),h.info("fable-fallback","content filter detected; switching session to Opus 4.8",{session:A.sessionId,requestedModel:A.requestedModel,completedToolUse:r?.completedToolUse===!0,remaining:K0}),J4({sessionId:A.sessionId,mode:"opus",remaining:K0,requestedModelId:A.requestedModel},E,F)}}:{},...A&&Y0?{onComplete:(r)=>{if(!A.downgraded){Y1.completeSource(A,!Y0.serverFallback);return}let K0=Y1.complete(A,Y0.opusCacheAnchor);if(!K0.counted)return;let p=E$.get(A.recoveryKey);if(p)E$.delete(A.recoveryKey),X$.delete(A.sessionId),pZ(A.sessionId,p);if(h.info("fable-fallback","Opus 4.8 turn completed",{session:A.sessionId,requestedModel:A.requestedModel,finishReason:r,remaining:K0.remaining}),J4({sessionId:A.sessionId,mode:"opus",remaining:K0.remaining,requestedModelId:A.requestedModel},E,F),K0.remaining===0)J4({sessionId:A.sessionId,mode:"fable",remaining:0,requestedModelId:A.requestedModel},E,F,oW(A.requestedModel))}}:{},...j0?{serverSideFallbackModel:j0,...A?{onServerSideFallbackOutcome:(r)=>{if(Y0)Y0.serverFallback=r.fallback;l8(A,r,E,F)}}:{}}:{}})},n=$0(),X0=A?.effectiveModel??_0(await C4(D,B)),F=await N(X0,B?.signal??void 0,!0);if(S.mark("get_auth",{ms:A0($0()-n),authType:F.type,hasAccess:Boolean(F.access)}),F.type!=="oauth"){let M=Q4(D),i=U4(D,B);F7(i);let r=await C4(D,B);if(typeof r==="string")try{let p=JSON.parse(r);if(UW(p))r=JSON.stringify(p)}catch{}let K0=await fetch(M.input,{...B,body:r,headers:i});return S.done("non_oauth_passthrough",{status:K0.status}),K0}let E=await R(),z0=F$(F.nativeAccountIdentity),d0=F.nativeScopedAttempt,y;if(F.access){let M=await s1(F.access,_0(B?.body),z0,d0?.recordVersion);if(M.stale)throw Error("Main OAuth identity changed while resolving request credentials");if(y={...M,routingLineage:F.nativeRoutingLineage},z0)$4=F.access,D1=M.providerAccountUuid}else if((F.modelDenied||F.credentialUnavailable||F.deferred)&&z0)await BZ("",z0,z0),y={quotaKey:z0,providerAccountUuid:z0,generation:k.getMainQuotaIdentityGeneration(),routingLineage:F.nativeRoutingLineage,stale:!1,state:b0(E)?"on-cold":"na"};let u0=$0();S.mark("load_storage",{ms:A0($0()-u0)}),k.updateStorage(E),k.seedMainFromStorage(E,H$),k.seedFallbacksFromAccounts((E?.accounts??[]).filter(B0));let A$=d?S$.get(d):void 0;if(g||!A||m9==="server"&&A$?.requestedModelId&&b$(A$.requestedModelId)!==b$(A.requestedModel))u8(d,E,F);let J$=J0(D,B?.body),c0=_0(B?.body)??X0,d$=j$(y,E),G0=L0("main",y?.routingLineage,z0,E),P$=F.deferred?QZ(d$&&E?{...E,accounts:E?.accounts??[],quota:{...E?.quota,mainQuota:d$.quota}}:E,z0,G0?.lineage===y?.routingLineage&&G0?.generalExhausted===!0):void 0;if(P$){let M=J$?await V$(E,{includeApiRoutes:v$(void 0,y),modelId:c0}):[],i=await z1(D,B,M,E,void 0,S,{onSuccess:(r)=>h0(r.id,"fallback"),mainQuotaIdentity:y,fableRequest:Y0,laneStartRequest:v});if(i)return I(i);return new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:P$.message}}),{status:429,headers:{"content-type":"application/json","retry-after":String(P$.retryAfter)}})}let L$=()=>{let M=b7(k.getMain(y?.quotaKey)?.quota,(E?.accounts??[]).filter(B0),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(M)}})};if(J$)l4++;if(J$&&F.access&&(!F.expires||F.expires>Date.now()))y8(E,F.access,y);async function h0(M,i){let r=E,K0=!1;if((E?.accounts??[]).some((p)=>B0(p)&&p.quota))try{let p=await R(K);if(p)r=p;else K0=!0}catch{K0=!0}C$(r,{activeId:M,route:i,mainAccessToken:F.access,skipFallbackQuotaSeed:K0})}let z$;if(J$&&d&&e$(E)==="sticky-balanced"){let M=A?.effectiveModel??c0,i=AW(M),r=t1.trackedOAuthRoute(d),K0=A?.cacheAccountId??(r?r.oauthAccountId??Y$:void 0),p=!1;try{let e=await jJ({storage:E,mainAccessToken:F.access,mainRefreshToken:F.refresh,mainPolicyDenied:F.modelDenied||F.credentialUnavailable,requestedModelId:M,mainQuotaIdentity:y}),i0=async(K$)=>{let e0=await UZ();return e0.router.resolve({sessionId:d,family:i,modelId:M,affinityModelId:t,candidates:e.candidates,retainAccountIds:e.retainAccountIds,storage:e.storage,inputBytes:typeof B?.body==="string"?Buffer.byteLength(B.body):1,preferredAccountId:K0,excludeAccountIds:K$,...e0.accountIdentities&&{accountIdentities:e0.accountIdentities}})},G$=s$(e.storage?.refresh?.mainLastRefreshError),Q$=e.allRoutes.length===0&&!G$||e.allRoutes.some((K$)=>!K$.quota||!A1(K$.quota,e.storage,Date.now(),M)),t0=await i0();if(!t0&&Q$){if(F.modelDenied)return L$();throw Error("Sticky-balanced routing is waiting for current OAuth quota snapshots")}if(!t0){if(F.modelDenied)return L$();if(b0(E))throw new OZ;let K$=SG({mainRefreshError:e.storage?.refresh?.mainLastRefreshError,fallbackReauthLabels:bG(e.storage),routeQuotas:e.allRoutes.flatMap((e0)=>e0.quota?[e0.quota]:[]),modelId:M});return S.done("return_sticky_no_route",{status:K$.status}),K$}let T0=e.allRoutes.find((K$)=>K$.id===t0?.accountId);if(t0&&T0){if(p=!0,A?.downgraded&&Y1.bindRecoveryAccount(A,T0.id))h.info("fable-fallback","rebound recovery to migrated sticky account",{accountId:T0.id});let K$=async(H0)=>{if(H0.scoped){let g0=(await P0(H0.id,B?.signal??void 0,void 0,M)).scopedAttempt;if(!g0)throw Error("Native vault sticky credential is unavailable");return U$(D,B,g0.accessToken,S,`sticky:${H0.id}`,e.storage,H0.id,H0.account?.authLineageId,Y0,v,H0.id===Y$?y:void 0,g0)}return U$(D,B,H0.access??"",S,`sticky:${H0.id}`,e.storage,H0.id,H0.account?.authLineageId,Y0,v,H0.id===Y$?y:void 0)},e0=async(H0,l0,g0=!0)=>{return await h0(H0.id,"sticky-balanced"),S.done("return_sticky_balanced",{status:l0.status,accountId:H0.id,created:t0?.created,migrated:t0?.migrated}),I(l0)},LJ=async(H0)=>{let l0=H0,g0=NZ(H0,e.storage),D0=!1;if(!g0){let l=await N0(H0,S);l0=l.response,D0=l.rateLimited,g0=l.rateLimited}return{response:l0,routeFailure:g0,streamingRateLimit:D0}},i4=A1(T0.quota,e.storage,Date.now(),M)?tJ({quota:T0.quota,modelId:M}):void 0;if(i4?.action==="hold")return e0(T0,await BJ(new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:"Sticky OAuth account five-hour quota resets shortly; retaining session affinity."}}),{status:429,headers:{"content-type":"application/json"}}),d,i4.retryAfterSeconds,!1,l$),!1);let C0=await LJ(await K$(T0)),n4=!1;if(!C0.routeFailure)return e0(T0,C0.response);if(C0.response.status===401){let H0=j1.get(C0.response);if(H0){let l0=await R(K),g0=T0.id,D0=T0.id===Y$?l0?.refresh?.mainLastRefreshError:l0?.accounts.find((l)=>l.id===g0&&B0(l))?.lastRefreshError;if(!s$(D0))throw H0}n4=!0}let R$=C0.response.status===403||n4;if(C0.response.status===429||C0.streamingRateLimit){let H0;try{H0=T0.id===Y$?await k.refreshMain(y?.quotaKey,T0.access??"",y?.generation):await k.refreshFallback(T0.id,T0.access??"",T0.account)}catch{H0=void 0}let l0=tJ({quota:H0,modelId:M});if(S.mark("sticky_quota_failure",{accountId:T0.id,action:l0.action,reason:l0.reason}),l0.action==="hold")return e0(T0,await BJ(C0.response,d,l0.retryAfterSeconds,C0.streamingRateLimit,l$));R$=l0.action==="migrate"}if(R$){await r7(C0.response,B?.signal);let H0=T0.id;if(e=await jJ({storage:e.storage,mainAccessToken:F.access,mainRefreshToken:F.refresh,mainPolicyDenied:F.modelDenied||F.credentialUnavailable,requestedModelId:M,mainQuotaIdentity:y}),e.candidates.filter((g0)=>g0.accountId!==H0).length>0){await C0.response.body?.cancel().catch(()=>{}),t0=await i0(new Set([H0]));let g0=e.allRoutes.find((D0)=>D0.id===t0?.accountId);if(t0&&g0){if(T0=g0,A?.downgraded)Y1.bindRecoveryAccount(A,T0.id);return e0(T0,await K$(T0))}}else if((C0.response.status===429||C0.streamingRateLimit)&&v$(F.access,y)){let g0=(await V$(e.storage,{includeApiRoutes:!0,modelId:M})).filter(c1);if(g0.length>0){let D0=await z1(D,B,g0,e.storage,C0.response,S,{onSuccess:(l)=>h0(l.id,"sticky-balanced"),mainAccessToken:F.access,mainQuotaIdentity:y,fableRequest:Y0,laneStartRequest:v});if(D0)return S.done("return_sticky_api_fallback",{status:D0.status}),I(D0)}}}return e0(T0,C0.response)}}catch(e){if(S.mark("sticky_balanced_error",{error:e instanceof Error?e.message:String(e)}),p||T1(e))throw e;let i0=e instanceof Error?e:Error(String(e));throw Object.assign(i0,{code:"ECONNRESET",syscall:"sticky-routing"}),i0}}if(J$&&e$(E)==="fallback-first")try{let M=$0();z$=await V$(E,{includeApiRoutes:v$(F.access,y),modelId:c0}),S.mark("fallback_first_get_accounts",{ms:A0($0()-M),accounts:z$.length});let i=await z1(D,B,z$,E,void 0,S,{returnLastOnExhausted:!1,mainAccessToken:F.access,mainQuotaIdentity:y,onSuccess:(r)=>h0(r.id,"fallback-first"),fableRequest:Y0,laneStartRequest:v});if(i)return S.done("return_fallback_first",{status:i.status}),I(i);z$=void 0}catch(M){if(S.mark("fallback_first_error",{error:M instanceof Error?M.message:String(M)}),T1(M))throw M}if(F.deferred){if(Object.assign(F,await N(X0,B?.signal??void 0)),F.access){let M=await s1(F.access,X0,F.nativeAccountIdentity,F.nativeScopedAttempt?.recordVersion);if(M.stale)throw Error("Main OAuth identity changed while resolving request credentials");y={...M,routingLineage:F.nativeRoutingLineage},$4=F.access,D1=M.providerAccountUuid}}if(!F.modelDenied&&(!F.access||!F.expires||F.expires<Date.now())){if(b0(E))try{let p=(await P0("main",B?.signal??void 0,void 0,X0)).scopedAttempt;if(!p)throw Error("Native vault main credential is unavailable");$4=p.accessToken;let e=await U$(D,B,p.accessToken,S,"main",E,"main",void 0,Y0,v,y,p);return I(e)}catch(K0){let p=J$?await V$(E,{modelId:c0}):[],e=await z1(D,B,p,E,void 0,S,{onSuccess:(i0)=>h0(i0.id,"fallback"),mainAccessToken:F.access,mainQuotaIdentity:y,fableRequest:Y0,laneStartRequest:v});if(e)return I(e);if(K0 instanceof O$)throw new OZ;throw K0}if(F.credentialFailure?.tokenRefreshFailed)throw F.credentialFailure;let M=await R(),i=M?.refresh?.mainLastRefreshError;if(i&&C1(i,F.nativeAccountIdentity??e1??M?.mainAccountId,Date.now(),F.refresh?t$(F.refresh):void 0))throw m$("[refresh] opencode main oauth request skipped backoff",{nextRetryAt:i.nextRetryAt,retryCount:i.retryCount,expiresInMs:F.expires?F.expires-Date.now():void 0}),Error(xG(i,Date.now()));m$("[refresh] opencode main oauth refresh required for request",{hasAccess:Boolean(F.access),expiresInMs:F.expires?F.expires-Date.now():void 0,expiredAgoMs:F.expires&&F.expires<Date.now()?Date.now()-F.expires:void 0});let r=$0();F.access=await C(void 0,X0,B?.signal??void 0),S.mark("refresh_main_access",{ms:A0($0()-r)})}if(!F.access&&!F.modelDenied)throw S.done("missing_access_error"),Error("OAuth access token is missing after refresh");function X4(){if(E?.quota?.showToasts!==!0)return;let M=k.getMain(y?.quotaKey);if(!M)return;let i=(E?.accounts??[]).filter((p)=>p.enabled!==!1&&B0(p)).map((p)=>({...p,quota:k.getFallback(p.id,p)?.quota??p.quota})),r=p1(M.quota,E),K0;if(r)K0="main";else K0=i.find((p)=>p1(p.quota,E))?.id??"main";s8(M.quota,i,K0)}if(J$&&k0(E))try{let M=$0(),i=j$(y,E),r=i?.quota;if(!r)r=await k.refreshMain(y?.quotaKey,F.access,y?.generation,"admission"),i=j$(y,E),X4();else if(k.needsRefresh(l4,c0))if(r1(r)||M9(r,c0))r=await k.refreshMain(y?.quotaKey,F.access,y?.generation),i=j$(y,E);else k.refreshMain(y?.quotaKey,F.access,y?.generation).then(()=>{f1().catch(()=>{}),X4()}).catch(()=>{});C$(E,{activeId:"main",route:"main",mainAccessToken:F.access});let K0=p1(r,E)&&I9(r,c0);if(S.mark("main_quota_for_routing",{ms:A0($0()-M),passes:K0,model:c0,modelScopedExhausted:M9(r,c0)}),!K0){let p=$0();z$=await V$(E,{includeApiRoutes:Boolean(i&&i.refreshAfter>Date.now()&&r1(i.quota)),modelId:c0}),S.mark("preselect_fallback_accounts",{ms:A0($0()-p),accounts:z$.length});let e=await z1(D,B,z$,E,void 0,S,{onSuccess:(i0)=>h0(i0.id,"fallback"),mainAccessToken:F.access,mainQuotaIdentity:y,fableRequest:Y0,laneStartRequest:v});if(e)return S.done("return_preselected_fallback",{status:e.status}),I(e)}}catch(M){if(S.mark("main_quota_for_routing_error",{error:M instanceof Error?M.message:String(M)}),T1(M))throw M}let q$=j$(y,E)?.quota;if(E?.quota?.failClosedOnUnknownQuota&&(q$===void 0||F.access.startsWith("sk-ant-oat")&&y?.providerAccountUuid===void 0)&&k.isBackedOff()){let M=k.getLastApiError(),i=M?I7(M,Date.now()):"Quota API unavailable";return m$("[quota] blocked: quota API backed off (failClosed)",{nextRetryAt:M?.nextRetryAt,retryCount:M?.retryCount}),new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:i}}),{status:429,headers:{"content-type":"application/json","retry-after":String(M?.nextRetryAt?Math.max(1,Math.ceil((M.nextRetryAt-Date.now())/1000)):60)}})}if(r$(E)){if(k.needsRefresh(l4,c0))try{await Promise.all([k.refreshMain(y?.quotaKey,F.access,y?.generation),N1(!1,!0,void 0,"admission")])}catch(i){m$("[quota] killswitch refresh failed",{error:i instanceof Error?i.message:String(i),backedOff:k.isBackedOff()})}q$=j$(y,E)?.quota}if(r$(E)&&!a$(q$,E,void 0,c0)){let i=J0(D,B?.body)?await V$(E,{includeApiRoutes:v$(F.access),modelId:c0}):[];if(i.length>0){m$("[route] skipping main (killswitch), trying fallbacks");let G$=await z1(D,B,i,E,void 0,S,{onSuccess:(Q$)=>h0(Q$.id,"fallback"),mainAccessToken:F.access,mainQuotaIdentity:y,laneStartRequest:v});if(G$)return S.done("return_killswitch_fallback",{status:G$.status}),I(G$)}let r=Date.now(),K0=(E?.accounts??[]).filter((G$)=>y0(G$)&&B0(G$)).map((G$)=>({...G$,quota:Q0(G$)})),p=h3({mainQuota:q$,requestModelId:c0,storage:E}),e=b7(q$,K0,r,p.isScopedDriven?p.modelId:void 0),i0=v3({retryAfterSeconds:e,...p.isScopedDriven&&{modelName:p.modelName}});return new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:i0}}),{status:429,headers:{"content-type":"application/json","retry-after":String(e)}})}if(F.modelDenied){let M=L$(),i=J$?await V$(E,{modelId:X0}):[],r=await z1(D,B,i,E,void 0,S,{onSuccess:(p)=>h0(p.id,"fallback"),fableRequest:Y0,laneStartRequest:v,mainAccessToken:F.access,mainQuotaIdentity:y});if(r)return I(r);if(!(e$(E)!=="sticky-balanced"&&M9(q$,X0)&&p1(q$,E)&&a$(q$,E,void 0,X0)))return I(M);return I(await U$(D,B,"",S,"main",E,"main",void 0,Y0,v,y))}let d4=await U$(D,B,F.access,S,"main",E,"main",void 0,Y0,v,y,d0),k1=!1,p0=await a8(D,B,d4,z$,S,E,F.access,(M)=>{return k1=!0,h0(M.id,"fallback")},c0,Y0,v,y);if(!k1)await h0("main","main");return S.done("return_response",{status:p0.status}),I(p0)}}}return{}},get methods(){return[...sX(C9("opencode").tokenPath)?[x8]:[],{label:"Claude Pro/Max",type:"oauth",authorize:async()=>{if(await S1("opencode",process.env)!=="local")throw Error("Disconnect from the vault first.");if(await T.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 $Z(G,Z.verifier,Z.redirectUri,Z.state);if(W.type==="failed")return W;W$(),await T.loginOAuth({routeId:"main",replace:!0,credential:{access:W.access,refresh:W.refresh,expires:W.expires}});let z=aJ("anthropic");return{type:"success",access:z.access,refresh:z.refresh,expires:z.expires}}}}},{label:"Create an API Key",type:"oauth",authorize:async()=>{let Z=await w7("console");return{url:Z.url,instructions:"Paste the authorization code here:",method:"code",callback:async(G)=>{let W=await $Z(G,Z.verifier,Z.redirectUri,Z.state);if(W.type==="failed")return W;return{type:"success",key:(await fetch("https://api.anthropic.com/api/oauth/claude_cli/create_api_key",{method:"POST",headers:{"Content-Type":"application/json",authorization:`Bearer ${W.access}`}}).then((_)=>_.json())).raw_key}}}}},{provider:"anthropic",label:"Manually enter API Key",type:"api"}]}},dispose:b8,__primeManager:H1,__quotaManager:k,__cacheKeepManager:t1,__resolveMainQuotaIdentityForTest:s1,__resolveSidebarQuotaAccessForTest:hZ,__refreshSidebarQuotaForTest:f1,__mainProviderAccountUuidForTest:()=>D1,__fallbackRefreshReady:A8,get __scopedRuntime(){return y9(K,$.directory)},__notificationMessageIdBeforeAssistantForTest:L8,__trackDesktopNoticeMessageIdForTest:mZ,__isDesktopNoticeMessageForTest:cZ}},M6=W2;
42
+ `);await Z8($,Z.sessionID,_)}pW()},auth:{provider:"anthropic",async loader(Z,G){u$=async()=>{let Q=await Z();return{type:Q.type,active:GZ(Q,"anthropic")}},h4=Z;let W=await Z();if(W.type!=="oauth")return{};let z=await S1("opencode").catch(()=>{return});if(!wZ&&GZ(W,"anthropic")&&process.env.OPENCODE_ANTHROPIC_AUTH_DISABLE_PROFILE_HYDRATION!=="1"){wZ=!0;let Q=v4(G1.signal).then((U)=>{if(!G1.signal.aborted)return C$(U.policyStorage,{...$$,routingAuthoritative:!1})}).catch(()=>{if(!G1.signal.aborted)h.debug("quota","startup account profile hydration failed")});X1.add(Q),Q.then(()=>X1.delete(Q))}function _(Q,U=!1){if(!GZ(Q,"anthropic")&&!(U&&b4(Q)))throw Error("Native OAuth requires inert OpenCode activation; run offline setup")}async function L(Q){_(await Z(),Q&&await S1("opencode")==="local")}let N=async(Q,U,C=!1)=>{let f=await Z();if(f.type!=="oauth")return{type:f.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 m=await S1("opencode");if(m==="claustrum"&&!M8(f))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.");W$();let J0=await HW(T,U),_0=m==="claustrum"?"committed":m7(await p7(s)),f0=l7(J0);if(_(f,m==="local"&&(_0==="committed"||_0==="retired")&&f0),m==="claustrum"&&!J0.accounts.some((q0)=>q0.type==="oauth"&&y0(q0)))throw new OZ;let w0=V3(J0.policyStorage);try{z3({mode:m==="claustrum"?"C":"L",main:EJ(f),fallbacks:m==="claustrum"?"T":w0.fallbacks,evidence:"V",authority:_0,localOAuthServable:f0}),c4=void 0}catch(q0){if(q0 instanceof K4)c4=q0.verdict;throw q0}R0=J0.policyStorage;let k0=J0.accounts.find((q0)=>q0.id==="main"),N0=k0?.binding,_$=k0?O0(k0,J0.policyStorage):void 0,V1=_$&&_$!==k0?.quota?{...J0.policyStorage,quota:{...J0.policyStorage.quota,mainQuota:_$}}:J0.policyStorage,D$=L0("main",W0(N0),k0?.accountIdentity,J0.policyStorage),U$=Boolean(N0&&D$?.lineage===W0(N0)&&D$?.generalExhausted===!0);if(k0&&N0&&(!m0||N0.rowId!==m0.rowId||N0.credentialEpoch>m0.credentialEpoch))k.clearMain(),k.setMainQuotaAccountIdentity(k0.accountIdentity),m0={rowId:N0.rowId,credentialEpoch:N0.credentialEpoch};if(C&&(e$(J0.policyStorage)==="fallback-first"||QZ(V1,k0?.accountIdentity,U$))){let q0=J0.accounts.find((V$)=>V$.id==="main");return U?.throwIfAborted(),{type:"oauth",access:"",expires:0,refresh:void 0,nativeAccountIdentity:q0?.accountIdentity,nativeRoutingLineage:q0?.binding?W0(q0.binding):void 0,nativeLocalSource:void 0,nativeScopedAttempt:void 0,modelDenied:!1,credentialUnavailable:!1,credentialFailure:void 0,deferred:!0}}let Q0,v0,j$,v$;try{Q0=await P0("main",U,void 0,Q,"serve",J0)}catch(q0){if(q0 instanceof S0)throw q0;if(T1(q0))throw q0;if(q0 instanceof Z1){v0=q0.account;let V$=mG(v0.quota,Q);if(V$!==void 0&&(!Number.isFinite(V$.checkedAt)||(V$.checkedAt??0)+q0.checkIntervalMs<=Date.now())||!_Z(v0.quota)&&!M9(v0.quota,Q))try{await T.fetchQuota("main",void 0,U),Q0=await P0("main",U,void 0,Q),v0=void 0}catch(h$){if(T1(h$))throw h$;if(h$ instanceof Z1)v0=h$.account;else if(h$ instanceof O$)j$=h$.account,v$=h$}}else if(q0 instanceof O$)j$=q0.account,v$=q0}return U?.throwIfAborted(),{type:"oauth",access:Q0?.accessToken??"",expires:Q0?.expires??0,refresh:void 0,nativeRoutingLineage:I0(Q0?.localSubject,Q0?.scopedAttempt)??(k0?.binding?W0(k0.binding):void 0),nativeAccountIdentity:Q0?.accountIdentity??v0?.accountIdentity??j$?.accountIdentity,modelDenied:Boolean(v0),credentialUnavailable:Boolean(j$),credentialFailure:v$,deferred:!1,nativeLocalSource:Q0?.localSource,nativeScopedAttempt:Q0?.scopedAttempt}};W1=N;let j={type:"oauth",access:"",expires:0};if(j.type==="oauth"){let f=function(){if(U1)Y.clearInterval(U1);let D=async()=>{try{let B=await R(K);if(!m8(B))return;let x=await N();if(x.type!=="oauth")return;if(x.nativeLocalSource==="rotated"||x.nativeLocalSource==="adopted")return;if(x.expires&&x.expires-Date.now()>gZ(B))return;await C()}catch{h.warn("refresh","native main OAuth background refresh unavailable")}};U1=Y.setInterval(()=>{D()},MW+J8(t7)),U1.unref?.()},J0=function(D,B){if(D instanceof Request&&D.body)return!1;return B==null||typeof B==="string"},_0=function(D){if(typeof D!=="string")return;try{let B=JSON.parse(D);return typeof B.model==="string"?B.model:void 0}catch{return}},f0=function(D){return D.has("x-parent-session-id")},w0=function(D){let B;try{B=JSON.parse(D)}catch{return!1}if(typeof B!=="object"||B===null)return!1;let x=Reflect.get(B,"error");return Reflect.get(B,"type")==="error"&&typeof x==="object"&&x!==null&&Reflect.get(x,"type")==="rate_limit_error"},k0=function(D){return D?.quota?.enabled===!0},_$=function(D,B){if(D.delete("authorization"),D.delete("x-api-key"),B.authHeader==="x-api-key")D.set("x-api-key",B.apiKey??"");else D.set("Authorization",`Bearer ${B.apiKey??""}`);D.set("Content-Type","application/json"),F7(D)},Q0=function(D){return k.getFallback(D.id,D)?.quota??D.quota},v0=function(D,B){return D.status===429||B},j$=function(D,B=R0){return b("main",D?.routingLineage,D?.providerAccountUuid,k.getMain(D?.quotaKey??H$),B)},v$=function(D,B){if(!D&&!B?.providerAccountUuid)return!1;let x=j$(B);return Boolean(x&&(D||x.quota.accountIdentity===B?.providerAccountUuid)&&x.refreshAfter>Date.now()&&r1(x.quota)&&(x.quota.source!=="headers"||L0("main",B?.routingLineage,B?.providerAccountUuid)?.generalExhausted===!0||["five_hour","seven_day"].some((v)=>x.quota.fieldSources?.[v]==="poll"&&(x.quota[v]?.remainingPercent??1)<=0)))},U=(await T.read().catch(()=>{return}))?.accounts.find((D)=>D.id==="main");if(e1=U?.binding?.rowId??U?.accountIdentity,H$??=U?.accountIdentity??e1,j.access)await s1(j.access);async function C(D,B,x){let v=b4(await Z());await L(v),x?.throwIfAborted();let d=await P0("main",x,D,B,"refresh");return await L(v),x?.throwIfAborted(),d.accessToken}if(z==="local")f();k.seedFallbacksFromAccounts((a0?.accounts??[]).filter(B0));let m=await hW(()=>R(K)).catch(()=>({freshStorage:null,activeId:void 0,route:"main"}));await C$(m.freshStorage,{activeId:m.activeId,route:m.route,mainAccessToken:j.access,routingAuthoritative:!1});async function N0(D,B){if(!D.body||D.status!==200)return B?.mark("inspect_stream_skip",{status:D.status}),{response:D,rateLimited:!1};if(D.headers.get("x-cortexkit-relay-optimistic")==="true")return B?.mark("inspect_stream_skip",{status:D.status,reason:"optimistic_relay"}),{response:D,rateLimited:!1};let x=$0(),v=D.body.getReader(),d=[],t=0,g=EG({maxFrameBytes:65536}),A=!1,j0=!1,Y0=!0;while(!j0&&t<65536){let{done:I,value:n}=await v.read().catch(async(F)=>{let E=cJ(F,l$.get(D)?.toolNameMap);if(E!==F)await pJ(v,E);throw E});if(I)break;d.push(n),t+=n.byteLength;let X0;try{X0=g.push(n)}catch{break}for(let F of X0){let E=jW(CG(F,{streamStart:Y0}));if(Y0=!1,E.data===void 0)continue;A=w0(E.data),j0=!0;break}}if(A){await v.cancel().catch(()=>{});try{v.releaseLock()}catch{}let I=new ReadableStream({start(X0){for(let F of d)X0.enqueue(F);X0.close()}});B?.mark("inspect_stream_first_event",{ms:A0($0()-x),bytes:t,rateLimited:!0});let n=new Response(I,{status:D.status,statusText:D.statusText,headers:D.headers});return o4(l$,D,n),{response:n,rateLimited:!0}}let V0=new ReadableStream({start(I){for(let n of d)I.enqueue(n)},async pull(I){let{done:n,value:X0}=await v.read();if(n){I.close();return}I.enqueue(X0)},cancel(I){return v.cancel(I)}});B?.mark("inspect_stream_first_event",{ms:A0($0()-x),bytes:t,rateLimited:!1});let S=new Response(V0,{status:D.status,statusText:D.statusText,headers:D.headers});return o4(l$,D,S),{response:S,rateLimited:!1}}async function V1(D,B,x,v){if(W$(),!B){let g=j$(x);if(!x?.providerAccountUuid||!g||g.refreshAfter<=Date.now()||!r1(g.quota))throw Error("API fallback requires fresh general primary OAuth exhaustion");let A=await P0("main",v);if(A.accountIdentity!==x.providerAccountUuid||x.routingLineage&&I0(A.localSubject,A.scopedAttempt)!==x.routingLineage)throw Error("Primary identity changed before API fallback");B=A.accessToken}let d=await T.authorizeApi(D,v),t=(await T.read()).accounts.find((g)=>g.id==="main");if(t?.binding&&W0(t.binding)!==x?.routingLineage)throw Error("Primary identity changed before API fallback");if(!v$(B,x))throw Error("API fallback requires fresh general primary OAuth exhaustion");return d}async function D$(D,B,x,v,d="api_fallback",t,g,A,j0){if(g)g.oauthAccountId=void 0,g.opusCacheAnchor=void 0;let Y0=$0(),V0=U4(D,B),S=V0.get("x-session-affinity")||V0.get("x-opencode-session"),I=f0(V0),n=V0.get(h1)??void 0,X0=n1.resolveHeader(n);V0.delete("x-parent-session-id"),V0.delete("x-session-affinity"),V0.delete("x-opencode-session"),V0.delete("x-opencode-session-id"),V0.delete("x-opencode-parent-session-id"),V0.delete(h1),V0.delete(G4),V0.delete(hJ);let F=await C4(D,B),E=!1,z0=null,d0,y=typeof F==="string"?F.length:void 0;if(F&&typeof F==="string"){let P$=$0(),L$=(()=>{if(!VZ())return!1;try{return h7(JSON.parse(F).model)}catch{return!1}})();try{F=await H9(F,{onToolNameMap:(h0)=>{d0=h0},cache1hEnabled:!I&&E4(),cache1hMode:F4(),fastModeEnabled:L$,sessionId:S||void 0,midConversationEffortEnabled:!1,midConversationEffortPlan:n,midConversationEffortResolvedPlan:X0,modelRemapEnabled:!0,perf:(h0,z$)=>v?.mark(`rewrite_body_${h0}`,{route:d,...z$})})}catch(h0){if(h0 instanceof E0)return s7(h0);if(h0 instanceof u7)return a7(h0);throw h0}if(_$(V0,x),V0.set("anthropic-beta",g7(V0.get("anthropic-beta"),[])),L$)N9(V0);try{E=JSON.parse(F).stream===!0}catch{}v?.mark("rewrite_body",{route:d,ms:A0($0()-P$),originalBytes:y,rewrittenBytes:F.length,cacheEnabled:!I&&E4(),cacheMode:F4(),fastModeEnabled:L$,subagent:I})}else _$(V0,x);let u0=await e9(V0),A$=await V1(x.id,A,j0,B?.signal??void 0);x={...x,...A$},_$(V0,x);let J$=Q4(D,{baseURL:x.baseURL}),c0=$0(),d$=E9([x.apiKey??""],E?"event-stream":"http"),G0;try{G0=d$.redactResponse(await fetch(J$.input,{...B,body:F,headers:V0,...lJ()&&{tls:{rejectUnauthorized:!1}}}))}catch(P$){let L$=d$.redactError(P$);if(d$.dispose(),typeof F==="string")await S9({affinity:S,route:d,error:d7,bodyText:F,url:J$.url?.toString()??S4(J$.input),method:P1(D,B),headers:V0});throw L$}if(typeof F==="string")z0=await S9({affinity:S,route:d,status:G0.status,bodyText:F,url:J$.url?.toString()??S4(J$.input),method:P1(D,B),headers:V0});if(IZ(G0,{source:"turn",toolNameMap:d0,accountId:x.id,synthetic:!1,...u0,requestedModel:_0(F),dump:z0,status:G0.status,streaming:E}),v?.mark("send_headers_received",{route:d,ms:A0($0()-c0),status:G0.status,relayConfigured:!1,totalSendWithAccessMs:A0($0()-Y0),baseURL:x.baseURL}),G0.ok)u1.publish(()=>T.publishApi(A$.subject,{lastUsed:Date.now()}));return G0}async function U$(D,B,x,v,d="unknown",t,g="main",A,j0,Y0=!1,V0,S){ZG(x,"anthropic");let I=b4(await Z()),n=$0(),X0=t,F=async()=>{return X0??=await R(K),X0},E=U4(D,B),z0=E.get("x-session-affinity")||E.get("x-opencode-session"),d0=f0(E),y=E.get(h1)??void 0,u0=n1.resolveHeader(y),A$=E.get(G4)??void 0,J$=I1.resolveHeader(A$),c0=!d0&&!Y0?J$:void 0;E.delete("x-parent-session-id"),E.delete("x-session-affinity"),E.delete("x-opencode-session"),E.delete("x-opencode-session-id"),E.delete("x-opencode-parent-session-id"),E.delete(h1),E.delete(G4);let d$=k3(E),G0=await C4(D,B),P$=z0?t9.previousFor(z0):null,L$=P$?.messageId??null,h0,z$=!1,X4=null,q$=null,d4,k1;if(G0&&typeof G0==="string"){let l=$0();try{let U0=JSON.parse(G0);if(typeof U0.model==="string")k1=U0.model}catch{}v?.mark("model_parse_for_identity",{route:d,ms:A0($0()-l),bodyBytes:G0.length})}let p0=await P0(g,B?.signal??void 0,void 0,k1,g==="main"?"last-main":"serve");if(x=p0.accessToken,g==="main"&&V0?.providerAccountUuid&&p0.accountIdentity!==V0.providerAccountUuid)throw Error("Main account identity changed after request routing");S=p0.scopedAttempt;let M=$0(),i=J1(p0.accountIdentity);v?.mark("resolve_claude_code_identity",{route:d,ms:A0($0()-M),hasAccountUuid:Boolean(i.accountUuid)});let r=typeof G0==="string"?G0.length:void 0;if(G0&&typeof G0==="string"){let l=$0(),U0=(()=>{if(!VZ())return!1;try{return h7(JSON.parse(G0).model)}catch{return!1}})(),Z$=!d0&&E4(),v1=F4(),NJ=j0?.plan.downgraded&&j0.plan.standbyCacheAnchor?.oauthAccountId===g?j0.plan.standbyCacheAnchor:void 0;try{G0=await H9(G0,{onToolNameMap:(n0)=>{d4=n0},cache1hEnabled:Z$,cache1hMode:v1,fastModeEnabled:U0,identity:i,sessionId:z0||void 0,thinkingPrefixMismatchBehavior:cG(await F()),midConversationEffortEnabled:!0,turnEndNoteEnabled:!0,turnEndNote:(await F())?.turnEndNote,midConversationEffortPlan:y,midConversationEffortResolvedPlan:u0,hybridStandbyAnchor:NJ,serverSideFallbackEnabled:m9==="server",laneStart:Y0,billingLineage:c0,cacheDiagnosticsPreviousMessageId:L$,perf:(n0,K1)=>{if(v?.mark(`rewrite_body_${n0}`,{route:d,...K1}),n0==="cache_strategy"&&K1?.standbyBridgeApplied===!0&&j0&&!j0.standbyBridgeLogged)j0.standbyBridgeLogged=!0,h.info("fable-fallback","restored standby Opus cache bridge",{session:j0.plan.sessionId,distanceBlocks:K1?.standbyDistanceBlocks})}})}catch(n0){if(n0 instanceof E0)return s7(n0);if(n0 instanceof u7)return a7(n0);throw n0}if(j0?.plan.downgraded&&Z$&&v1==="hybrid"){let n0=N7(G0);j0.opusCacheAnchor=n0?{...n0,oauthAccountId:g}:void 0}let aZ=$0();try{let n0=JSON.parse(G0);m1(E,x,{body:n0,identity:i,requestClass:d$});let K1=n0.diagnostics,tZ=K1&&typeof K1==="object"&&!Array.isArray(K1)&&K1.previous_message_id===L$?L$:void 0;if(tZ!==void 0&&E.get("anthropic-beta")?.split(",").map((t8)=>t8.trim()).includes(V4))h0={sessionId:z0??"session-unknown",previousMessageId:tZ,...P$?{previousMessageReceivedAt:P$.receivedAt}:{},isSubagent:d0,ttlSent:s4(n0)};z$=n0.stream===!0,v?.mark("set_oauth_headers_body_parse",{route:d,ms:A0($0()-aZ),bodyBytes:G0.length,parsed:!0})}catch{m1(E,x,{identity:i,requestClass:d$}),v?.mark("set_oauth_headers_body_parse",{route:d,ms:A0($0()-aZ),bodyBytes:G0.length,parsed:!1})}if(U0)N9(E);v?.mark("rewrite_body",{route:d,ms:A0($0()-l),originalBytes:r,rewrittenBytes:G0.length,cacheEnabled:!d0&&E4(),cacheMode:F4(),fastModeEnabled:U0,subagent:d0})}let K0=await e9(E),p=Q4(D);if(j0)j0.oauthAccountId=g;if(typeof G0==="string"&&E4()&&F4()==="hybrid"){let l=await F();if(!d0||uG(l)){let U0=$0(),Z$=t1.track({sessionId:z0,url:p.url?.toString()??p.input.toString(),headers:E,bodyText:G0,storage:l,cacheMode:"hybrid",oauthAccountId:g,isSubagent:d0});v?.mark("cachekeep_track",{session:z0,ms:A0($0()-U0),tracked:Z$.tracked,reason:Z$.tracked?void 0:Z$.reason,bodyBytes:G0.length})}}let e=p0,i0,G$=async(l)=>{await L(I),B?.signal?.throwIfAborted();let U0=await P0(g,B?.signal??void 0,l,k1,g==="main"?"last-main":"serve");if(await L(I),B?.signal?.throwIfAborted(),U0.accountIdentity!==e.accountIdentity||Boolean(U0.scopedAttempt)!==Boolean(e.scopedAttempt))throw Error("Native credential authority changed during the request");if(i0&&(!U0.scopedAttempt||U0.scopedAttempt.credentialId!==i0.credentialId||U0.scopedAttempt.accountIdentity!==i0.accountIdentity||U0.scopedAttempt.recordVersion<=i0.recordVersion))throw Error("Native vault retry has no strict newer same-account receipt");return U0},Q$=!1,t0=S,T0=async()=>{Q$=!0,p0=await G$(),t0=p0.scopedAttempt,E.set("authorization",`Bearer ${p0.accessToken}`),C0={...C0,accessToken:p0.accessToken,anthropicAccountUuid:F$(p0.accountIdentity),localSubject:p0.localSubject,scopedAttempt:p0.scopedAttempt};let l=E9([p0.accessToken],z$?"event-stream":"http");try{let U0=(v1,NJ)=>fetch(p.input,{...B,body:v1,headers:NJ,...lJ()&&{tls:{rejectUnauthorized:!1}}}),Z$=l.redactResponse(typeof G0==="string"?await EW({url:p.url?.toString()??S4(p.input),body:G0,headers:E,latch:H,send:U0}):await U0(G0,E));if(typeof G0==="string")X4=await S9({affinity:z0,route:d,status:Z$.status,bodyText:G0,url:p.url?.toString()??S4(p.input),method:P1(D,B),headers:E,tag:Y0?"start":void 0});return Z$}catch(U0){let Z$=l.redactError(U0);if(l.dispose(),typeof G0==="string")await S9({affinity:z0,route:d,error:d7,bodyText:G0,url:p.url?.toString()??S4(p.input),method:P1(D,B),headers:E,tag:Y0?"start":void 0});throw Z$}},K$=await F(),e0;try{e0=await T.getRelayConfig()}catch(l){if(l instanceof aG&&l.code==="relay-inconsistent")return DZ(l.message);throw l}let LJ=g==="main"?void 0:K$?.accounts.find((l)=>l.id===g&&B0(l)),i4=IG(LJ,A),C0={accountId:g,accessToken:x,authLineageId:A,anthropicAccountUuid:F$(S?.accountIdentity)??(g==="main"?V0?.providerAccountUuid:F$(i.accountUuid)??F$(i4)),localSubject:p0.localSubject,scopedAttempt:p0.scopedAttempt,...g==="main"&&V0?{mainQuotaIdentity:V0}:{}},n4=$0(),R$,H0=!1,l0=M0,g0=()=>TW({config:e0,input:p.input,init:B,headers:E,body:G0,fallback:T0,affinity:z0,optimisticResponse:e0?.transport==="websocket",authorizeAttempt:async()=>{let l=await G$(),U0=l.scopedAttempt;p0=l,C0={...C0,accessToken:l.accessToken,anthropicAccountUuid:F$(l.accountIdentity),localSubject:l.localSubject,scopedAttempt:U0};let Z$=new Headers(E);return Z$.set("authorization",`Bearer ${l.accessToken}`),{headers:Z$,errorSecrets:[l.accessToken],onUpstreamStatus:(v1)=>{if(v1!==401||!U0)return;if(R$=U0,H0)l0(U0,"relay_status_field")}}},onResponseHeaders:(l)=>{AZ(l,C0),I1.commit(c0,HJ(l))},onDumpCreated:(l)=>{q$=l},dumpTag:Y0?"start":void 0}),D0=await g0();if(!Q$&&R$&&D0.status===401&&typeof G0==="string"&&(P1(D,B)??"").toUpperCase()==="POST"&&!B?.signal?.aborted){let l;try{l=await L1(R$,"model-relay",B?.signal??void 0)}catch{}if(l)await D0.body?.cancel().catch(()=>{}),h.info("claustrum","retrying after scoped credential rotation",{accountId:g,previousVersion:R$.recordVersion,newVersion:l.recordVersion,transport:"relay"}),i0=R$,R$=void 0,D0=await g0()}if(Q$&&t0&&D0.status===401&&typeof G0==="string"&&(P1(D,B)??"").toUpperCase()==="POST"&&!B?.signal?.aborted){let l;try{l=await L1(t0,"model",B?.signal??void 0)}catch{}if(l)await D0.body?.cancel().catch(()=>{}),h.info("claustrum","retrying after scoped credential rotation",{accountId:g,previousVersion:t0.recordVersion,newVersion:l.recordVersion,transport:"direct"}),i0=t0,D0=await T0()}if(D0.status===401&&!p0.scopedAttempt&&typeof G0==="string"&&(P1(D,B)??"").toUpperCase()==="POST"&&!B?.signal?.aborted){let l=p0.accessToken,U0;try{U0=await G$(l)}catch(Z$){j1.set(D0,Z$)}if(U0&&U0.accessToken!==l)await D0.body?.cancel().catch(()=>{}),D0=Q$?await T0():await g0()}if(v?.mark("send_headers_received",{route:d,ms:A0($0()-n4),status:D0.status,relayConfigured:e0!=null,totalSendWithAccessMs:A0($0()-n)}),Q$)AZ(D0.headers,C0),I1.commit(c0,HJ(D0.headers));if(IZ(D0,{source:Y0?"start":"turn",toolNameMap:d4,accountId:g,synthetic:Y0,...K0,requestedModel:_0(G0),request:h0,trackSessionId:z0??void 0,dump:Q$?X4:q$,status:D0.status,streaming:z$}),Q$&&t0&&D0.status===401)await l0(t0,"direct");if(H0=!0,!Q$&&R$)await l0(R$,"relay_status_field");if(D0.status===401)await r7(D0,B?.signal);if(D0.ok)u1.publish(async()=>{if(C0.scopedAttempt)await T.vault.publish(C0.scopedAttempt,{lastUsed:Date.now()});else if(C0.localSubject)await T.publishLocal(C0.localSubject,{lastUsed:Date.now()})});return D0}async function q0(D,B){if(!D)return!1;try{return await k.refreshMain(B?.quotaKey??H$,D,B?.generation),v$(D,B)}catch{return!1}}async function V$(D,B={}){let x=r$(D),v=await N1(!1,x,B.modelId,"admission");if(D=await R(K),x){if(D&&v.size)D={...D,accounts:D.accounts.filter((A)=>!v.has(A.id)||a$(void 0,D,A.id,B.modelId))}}let d=await n9.getUsableFallbackAccounts(D,{modelId:B.modelId}),t=new Map(d.map((A)=>[A.id,A])),g=[];for(let A of D?.accounts??[]){if(D&&B0(A)){if(b0(D)){let Y0=t.get(A.id);if(Y0)g.push(Y0);continue}if(T4(D)!=="local")continue;let j0=t.get(A.id);if(j0)g.push(j0);else if(A.access&&(!A.expires||A.expires>Date.now())&&!s$(A.lastRefreshError)&&!C1(A.lastRefreshError,A.id,Date.now(),t$(A.refresh))&&D?.quota?.failClosedOnUnknownQuota!==!0&&!_Z(Q0(A)))g.push(A);continue}if(B.includeApiRoutes===!0&&c1(A)&&y0(A)&&KZ(A.baseURL))g.push(A)}if(!r$(D))return g;return g.filter((A)=>B0(A)?a$(Q0(A),D,A.id,B.modelId):!0)}async function jJ(D){let B=D.mainQuotaIdentity?.quotaKey,x=k.getMain(B),v=x?.quota;if(!A1(x?.quota,D.storage,Date.now(),D.requestedModelId))try{v=await k.refreshMain(B,D.mainAccessToken,D.mainQuotaIdentity?.generation,"admission")}catch{}let d=await n9.getUsableFallbackAccounts(D.storage,{modelId:D.requestedModelId}),t=await R(K)??D.storage,g=[],A=b0(t);if(A){let S=t?.claustrum?.primaryAccount;if(S!==void 0&&y0(S)&&!t?.claustrum?.disabledAccountIdentities?.includes(S.accountId))g.push({id:Y$,access:"",quota:v,identity:S?{kind:"known",accountId:S.accountId}:{kind:"unknown"},order:0,scoped:!0})}else if((D.mainAccessToken||D.mainPolicyDenied)&&!s$(t?.refresh?.mainLastRefreshError))g.push({id:Y$,access:D.mainAccessToken,quota:v,identity:B?{kind:"known",accountId:B}:{kind:"unknown"},order:0});if(A)for(let[S,I]of(t?.accounts??[]).entries()){if(!y0(I)||!B0(I))continue;if(I.claustrumScopedCredentialId){let n=Q0(I);if(!A1(n,t,Date.now(),D.requestedModelId))try{n=await k.refreshFallback(I.id,"",I)}catch{}g.push({id:I.id,access:"",quota:n,identity:{kind:"known",accountId:I.id},order:S+1,account:I,scoped:!0})}}else{let S=new Map(d.map((I)=>[I.id,I]));for(let[I,n]of(t?.accounts??[]).entries()){if(!y0(n)||!B0(n))continue;let X0=S.get(n.id)??n;if(s$(X0.lastRefreshError))continue;let F=Q0(X0);if(!A1(F,t,Date.now(),D.requestedModelId))try{F=await k.refreshFallback(X0.id,X0.access??"",X0)}catch{}g.push({id:X0.id,access:X0.access??"",quota:F,identity:{kind:"known",accountId:X0.id},order:I+1,account:X0})}}let j0=new Set(d.map((S)=>S.id)),Y0=new Set(g.flatMap((S)=>{let I=S.id===Y$?t?.refresh?.mainLastRefreshError:S.account?.lastRefreshError,n=!S.scoped,X0=S.identity.kind==="known"?S.identity.accountId:void 0;if(n&&s$(I))return[];if(n&&C1(I,X0,Date.now(),S.id===Y$?D.mainRefreshToken?t$(D.mainRefreshToken):void 0:S.account?.refresh?t$(S.account.refresh):void 0)&&(S.id===Y$||!j0.has(S.id)))return[];if(A1(S.quota,t,Date.now(),D.requestedModelId)&&tJ({quota:S.quota,modelId:D.requestedModelId}).action==="migrate")return[];if(r$(t)&&!a$(S.quota,t,S.id===Y$?void 0:S.id,D.requestedModelId))return[];return[S.id]})),V0=g.flatMap((S)=>{let I=S.id===Y$?t?.refresh?.mainLastRefreshError:S.account?.lastRefreshError,n=!S.scoped,X0=S.identity.kind==="known"?S.identity.accountId:void 0;if(n&&s$(I)||n&&C1(I,X0,Date.now(),S.id===Y$?D.mainRefreshToken?t$(D.mainRefreshToken):void 0:S.account?.refresh?t$(S.account.refresh):void 0)&&(S.id===Y$||!j0.has(S.id)))return[];let F=S.id===Y$?void 0:S.id,E=_Z(S.quota)?S.quota:void 0,z0=E?{kind:"known",quota:E}:{kind:"unknown"};return(!r$(t)||a$(z0.kind==="known"?z0.quota:void 0,t,F,D.requestedModelId))&&p1(z0.kind==="known"?z0.quota:void 0,t)&&(z0.kind==="unknown"||I9(z0.quota,D.requestedModelId)&&(S.id===Y$||j0.has(S.id)||Boolean(S.scoped)))?[{accountId:S.id,quota:z0,order:S.order}]:[]});return{storage:t,allRoutes:g,candidates:V0,retainAccountIds:Y0}}let h$=new WeakMap;async function z1(D,B,x,v,d,t,g){if(!x.length)return d??null;let A=g?.returnLastOnExhausted??!0,j0=d??null,Y0=!1,V0=async()=>{if(Y0)return;Y0=!0,await d?.body?.cancel().catch(()=>{})};for(let[S,I]of x.entries()){let n;if(c1(I))await V0(),n=await D$(D,B,I,t,`api_fallback_${S}`,v,g?.fableRequest,g?.mainAccessToken,g?.mainQuotaIdentity);else if(b0(v)&&I.claustrumScopedCredentialId){let F;try{F=await P0(I.id,B?.signal??void 0,void 0,_0(await C4(D,B)))}catch(z0){if(z0 instanceof Z1)continue;throw z0}let E=F.scopedAttempt;if(!E)throw Error("Native vault fallback credential is unavailable");await V0(),n=await U$(D,B,E.accessToken,t,`fallback_${S}`,v,I.id,I.authLineageId,g?.fableRequest,g?.laneStartRequest,void 0,E)}else if(T4(v)==="local"&&I.access)await V0(),n=await U$(D,B,I.access,t,`fallback_${S}`,v,I.id,I.authLineageId,g?.fableRequest,g?.laneStartRequest);else continue;j0=n;let X0=NZ(n,v);if(!X0){let F=await N0(n,t);n=F.response,j0=n,X0=F.rateLimited}if(!X0){if(h$.set(n,c1(I)?"api":"oauth"),await g?.onSuccess?.(I),B0(I)&&k0(v)&&k.shouldRefreshOnRequestCount(l4)){if(b0(v)||I.access)k.refreshFallback(I.id,b0(v)?"":I.access??"",I).then(()=>g?.onSuccess?.(I)).catch(()=>{})}return n}if(S<x.length-1||!A)await n.body?.cancel().catch(()=>{})}return A?j0:null}async function a8(D,B,x,v,d,t,g,A,j0,Y0,V0=!1,S){if(!J0(D,B?.body))return x;let I=$0(),n=t??await R(K);if(d?.mark("fallback_load_storage",{ms:A0($0()-I),cached:!!t}),!(n?.accounts??[]).some((u0)=>y0(u0)&&(B0(u0)||c1(u0)&&KZ(u0.baseURL))))return x;let F=x,E=NZ(F,n),z0=v0(F,!1);if(!E){let u0=await N0(F,d);F=u0.response,E=u0.rateLimited,z0=v0(F,u0.rateLimited)}if(!E)return F;let d0=!1;if(v)d0=v.some(c1);else if(z0)d0=await q0(g,S);let y=v;if(!y){let u0=$0();y=await V$(n,{includeApiRoutes:d0,modelId:j0}),d?.mark("fallback_get_accounts",{ms:A0($0()-u0),accounts:y.length})}if(r$(n)){let u0=y.length;if(y=y.filter((A$)=>B0(A$)?a$(Q0(A$),n,A$.id,j0):!0),y.length<u0)m$("[killswitch] filtered fallbacks",{before:u0,after:y.length})}return await z1(D,B,y,n,F,d,{onSuccess:A,mainAccessToken:g,mainQuotaIdentity:S,fableRequest:Y0,laneStartRequest:V0})??F}return{apiKey:"",async fetch(D,B){if(D instanceof Request&&B?.signal===void 0)B={...B,signal:D.signal};let x=U4(D,B),v=x.get(Y9)==="1";x.delete(Y9),B={...B,headers:x};let d=x.get("x-session-affinity")||x.get("x-opencode-session"),t=_0(B?.body),g=Boolean(d&&t&&!f0(x)&&Y1.resetForModelChange(d,t));if(g&&d){for(let M of E$.keys())if(M.startsWith(`${d}\x00`))E$.delete(M);N$.delete(d)}let A=Y1.plan(d,B?.body),j0=m9==="server"&&J9(A?.effectiveModel??t)?A?.effectiveModel??t:void 0,Y0=A?{plan:A}:void 0;if(A?.downgraded)B={...B,body:A.bodyText};let V0=B?.body,S=cW({bodyBytes:typeof V0==="string"?V0.length:void 0}),I=(M)=>{let i=l$.get(M);return B7(M,{toolNameMap:i?.toolNameMap,perf:(r,K0)=>S.mark(r,K0),laneStart:v,laneStartOAuthServed:h$.get(M)!=="api",...i?i.streaming?{onMessageStart:(r)=>MZ(M,r,!1),onMessageDelta:(r)=>R8(M,r),onStreamEnd:()=>i.dumpWrite}:{onMessageResponse:(r)=>MZ(M,r),onStreamEnd:()=>i.dumpWrite,responseMode:"json"}:{},contentFilterModel:A?.requestedModel,...!A?.downgraded&&A?{onContentFilter:(r)=>{if(!Y0?.oauthAccountId)return h.debug("fable-fallback","content filter recovery unavailable for non-OAuth route",{session:A.sessionId}),!1;let K0=Y1.activate(A,Y0.oauthAccountId);E$.delete(A.recoveryKey),E$.set(A.recoveryKey,nW(A.requestedModel,K0));while(E$.size>128){let p=E$.keys().next().value;if(p)E$.delete(p);else break}k$.delete(A.recoveryKey),h.info("fable-fallback","content filter detected; switching session to Opus 4.8",{session:A.sessionId,requestedModel:A.requestedModel,completedToolUse:r?.completedToolUse===!0,remaining:K0}),J4({sessionId:A.sessionId,mode:"opus",remaining:K0,requestedModelId:A.requestedModel},E,F)}}:{},...A&&Y0?{onComplete:(r)=>{if(!A.downgraded){Y1.completeSource(A,!Y0.serverFallback);return}let K0=Y1.complete(A,Y0.opusCacheAnchor);if(!K0.counted)return;let p=E$.get(A.recoveryKey);if(p)E$.delete(A.recoveryKey),X$.delete(A.sessionId),pZ(A.sessionId,p);if(h.info("fable-fallback","Opus 4.8 turn completed",{session:A.sessionId,requestedModel:A.requestedModel,finishReason:r,remaining:K0.remaining}),J4({sessionId:A.sessionId,mode:"opus",remaining:K0.remaining,requestedModelId:A.requestedModel},E,F),K0.remaining===0)J4({sessionId:A.sessionId,mode:"fable",remaining:0,requestedModelId:A.requestedModel},E,F,oW(A.requestedModel))}}:{},...j0?{serverSideFallbackModel:j0,...A?{onServerSideFallbackOutcome:(r)=>{if(Y0)Y0.serverFallback=r.fallback;l8(A,r,E,F)}}:{}}:{}})},n=$0(),X0=A?.effectiveModel??_0(await C4(D,B)),F=await N(X0,B?.signal??void 0,!0);if(S.mark("get_auth",{ms:A0($0()-n),authType:F.type,hasAccess:Boolean(F.access)}),F.type!=="oauth"){let M=Q4(D),i=U4(D,B);F7(i);let r=await C4(D,B);if(typeof r==="string")try{let p=JSON.parse(r);if(UW(p))r=JSON.stringify(p)}catch{}let K0=await fetch(M.input,{...B,body:r,headers:i});return S.done("non_oauth_passthrough",{status:K0.status}),K0}let E=await R(),z0=F$(F.nativeAccountIdentity),d0=F.nativeScopedAttempt,y;if(F.access){let M=await s1(F.access,_0(B?.body),z0,d0?.recordVersion);if(M.stale)throw Error("Main OAuth identity changed while resolving request credentials");if(y={...M,routingLineage:F.nativeRoutingLineage},z0)$4=F.access,D1=M.providerAccountUuid}else if((F.modelDenied||F.credentialUnavailable||F.deferred)&&z0)await BZ("",z0,z0),y={quotaKey:z0,providerAccountUuid:z0,generation:k.getMainQuotaIdentityGeneration(),routingLineage:F.nativeRoutingLineage,stale:!1,state:b0(E)?"on-cold":"na"};let u0=$0();S.mark("load_storage",{ms:A0($0()-u0)}),k.updateStorage(E),k.seedMainFromStorage(E,H$),k.seedFallbacksFromAccounts((E?.accounts??[]).filter(B0));let A$=d?S$.get(d):void 0;if(g||!A||m9==="server"&&A$?.requestedModelId&&b$(A$.requestedModelId)!==b$(A.requestedModel))u8(d,E,F);let J$=J0(D,B?.body),c0=_0(B?.body)??X0,d$=j$(y,E),G0=L0("main",y?.routingLineage,z0,E),P$=F.deferred?QZ(d$&&E?{...E,accounts:E?.accounts??[],quota:{...E?.quota,mainQuota:d$.quota}}:E,z0,G0?.lineage===y?.routingLineage&&G0?.generalExhausted===!0):void 0;if(P$){let M=J$?await V$(E,{includeApiRoutes:v$(void 0,y),modelId:c0}):[],i=await z1(D,B,M,E,void 0,S,{onSuccess:(r)=>h0(r.id,"fallback"),mainQuotaIdentity:y,fableRequest:Y0,laneStartRequest:v});if(i)return I(i);return new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:P$.message}}),{status:429,headers:{"content-type":"application/json","retry-after":String(P$.retryAfter)}})}let L$=()=>{let M=b7(k.getMain(y?.quotaKey)?.quota,(E?.accounts??[]).filter(B0),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(M)}})};if(J$)l4++;if(J$&&F.access&&(!F.expires||F.expires>Date.now()))y8(E,F.access,y);async function h0(M,i){let r=E,K0=!1;if((E?.accounts??[]).some((p)=>B0(p)&&p.quota))try{let p=await R(K);if(p)r=p;else K0=!0}catch{K0=!0}C$(r,{activeId:M,route:i,mainAccessToken:F.access,skipFallbackQuotaSeed:K0})}let z$;if(J$&&d&&e$(E)==="sticky-balanced"){let M=A?.effectiveModel??c0,i=AW(M),r=t1.trackedOAuthRoute(d),K0=A?.cacheAccountId??(r?r.oauthAccountId??Y$:void 0),p=!1;try{let e=await jJ({storage:E,mainAccessToken:F.access,mainRefreshToken:F.refresh,mainPolicyDenied:F.modelDenied||F.credentialUnavailable,requestedModelId:M,mainQuotaIdentity:y}),i0=async(K$)=>{let e0=await UZ();return e0.router.resolve({sessionId:d,family:i,modelId:M,affinityModelId:t,candidates:e.candidates,retainAccountIds:e.retainAccountIds,storage:e.storage,inputBytes:typeof B?.body==="string"?Buffer.byteLength(B.body):1,preferredAccountId:K0,excludeAccountIds:K$,...e0.accountIdentities&&{accountIdentities:e0.accountIdentities}})},G$=s$(e.storage?.refresh?.mainLastRefreshError),Q$=e.allRoutes.length===0&&!G$||e.allRoutes.some((K$)=>!K$.quota||!A1(K$.quota,e.storage,Date.now(),M)),t0=await i0();if(!t0&&Q$){if(F.modelDenied)return L$();throw Error("Sticky-balanced routing is waiting for current OAuth quota snapshots")}if(!t0){if(F.modelDenied)return L$();if(b0(E))throw new OZ;let K$=SG({mainRefreshError:e.storage?.refresh?.mainLastRefreshError,fallbackReauthLabels:bG(e.storage),routeQuotas:e.allRoutes.flatMap((e0)=>e0.quota?[e0.quota]:[]),modelId:M});return S.done("return_sticky_no_route",{status:K$.status}),K$}let T0=e.allRoutes.find((K$)=>K$.id===t0?.accountId);if(t0&&T0){if(p=!0,A?.downgraded&&Y1.bindRecoveryAccount(A,T0.id))h.info("fable-fallback","rebound recovery to migrated sticky account",{accountId:T0.id});let K$=async(H0)=>{if(H0.scoped){let g0=(await P0(H0.id,B?.signal??void 0,void 0,M)).scopedAttempt;if(!g0)throw Error("Native vault sticky credential is unavailable");return U$(D,B,g0.accessToken,S,`sticky:${H0.id}`,e.storage,H0.id,H0.account?.authLineageId,Y0,v,H0.id===Y$?y:void 0,g0)}return U$(D,B,H0.access??"",S,`sticky:${H0.id}`,e.storage,H0.id,H0.account?.authLineageId,Y0,v,H0.id===Y$?y:void 0)},e0=async(H0,l0,g0=!0)=>{return await h0(H0.id,"sticky-balanced"),S.done("return_sticky_balanced",{status:l0.status,accountId:H0.id,created:t0?.created,migrated:t0?.migrated}),I(l0)},LJ=async(H0)=>{let l0=H0,g0=NZ(H0,e.storage),D0=!1;if(!g0){let l=await N0(H0,S);l0=l.response,D0=l.rateLimited,g0=l.rateLimited}return{response:l0,routeFailure:g0,streamingRateLimit:D0}},i4=A1(T0.quota,e.storage,Date.now(),M)?tJ({quota:T0.quota,modelId:M}):void 0;if(i4?.action==="hold")return e0(T0,await BJ(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,i4.retryAfterSeconds,!1,l$),!1);let C0=await LJ(await K$(T0)),n4=!1;if(!C0.routeFailure)return e0(T0,C0.response);if(C0.response.status===401){let H0=j1.get(C0.response);if(H0){let l0=await R(K),g0=T0.id,D0=T0.id===Y$?l0?.refresh?.mainLastRefreshError:l0?.accounts.find((l)=>l.id===g0&&B0(l))?.lastRefreshError;if(!s$(D0))throw H0}n4=!0}let R$=C0.response.status===403||n4;if(C0.response.status===429||C0.streamingRateLimit){let H0;try{H0=T0.id===Y$?await k.refreshMain(y?.quotaKey,T0.access??"",y?.generation):await k.refreshFallback(T0.id,T0.access??"",T0.account)}catch{H0=void 0}let l0=tJ({quota:H0,modelId:M});if(S.mark("sticky_quota_failure",{accountId:T0.id,action:l0.action,reason:l0.reason}),l0.action==="hold")return e0(T0,await BJ(C0.response,d,l0.retryAfterSeconds,C0.streamingRateLimit,l$));R$=l0.action==="migrate"}if(R$){await r7(C0.response,B?.signal);let H0=T0.id;if(e=await jJ({storage:e.storage,mainAccessToken:F.access,mainRefreshToken:F.refresh,mainPolicyDenied:F.modelDenied||F.credentialUnavailable,requestedModelId:M,mainQuotaIdentity:y}),e.candidates.filter((g0)=>g0.accountId!==H0).length>0){await C0.response.body?.cancel().catch(()=>{}),t0=await i0(new Set([H0]));let g0=e.allRoutes.find((D0)=>D0.id===t0?.accountId);if(t0&&g0){if(T0=g0,A?.downgraded)Y1.bindRecoveryAccount(A,T0.id);return e0(T0,await K$(T0))}}else if((C0.response.status===429||C0.streamingRateLimit)&&v$(F.access,y)){let g0=(await V$(e.storage,{includeApiRoutes:!0,modelId:M})).filter(c1);if(g0.length>0){let D0=await z1(D,B,g0,e.storage,C0.response,S,{onSuccess:(l)=>h0(l.id,"sticky-balanced"),mainAccessToken:F.access,mainQuotaIdentity:y,fableRequest:Y0,laneStartRequest:v});if(D0)return S.done("return_sticky_api_fallback",{status:D0.status}),I(D0)}}}return e0(T0,C0.response)}}catch(e){if(S.mark("sticky_balanced_error",{error:e instanceof Error?e.message:String(e)}),p||T1(e))throw e;let i0=e instanceof Error?e:Error(String(e));throw Object.assign(i0,{code:"ECONNRESET",syscall:"sticky-routing"}),i0}}if(J$&&e$(E)==="fallback-first")try{let M=$0();z$=await V$(E,{includeApiRoutes:v$(F.access,y),modelId:c0}),S.mark("fallback_first_get_accounts",{ms:A0($0()-M),accounts:z$.length});let i=await z1(D,B,z$,E,void 0,S,{returnLastOnExhausted:!1,mainAccessToken:F.access,mainQuotaIdentity:y,onSuccess:(r)=>h0(r.id,"fallback-first"),fableRequest:Y0,laneStartRequest:v});if(i)return S.done("return_fallback_first",{status:i.status}),I(i);z$=void 0}catch(M){if(S.mark("fallback_first_error",{error:M instanceof Error?M.message:String(M)}),T1(M))throw M}if(F.deferred){if(Object.assign(F,await N(X0,B?.signal??void 0)),F.access){let M=await s1(F.access,X0,F.nativeAccountIdentity,F.nativeScopedAttempt?.recordVersion);if(M.stale)throw Error("Main OAuth identity changed while resolving request credentials");y={...M,routingLineage:F.nativeRoutingLineage},$4=F.access,D1=M.providerAccountUuid}}if(!F.modelDenied&&(!F.access||!F.expires||F.expires<Date.now())){if(b0(E))try{let p=(await P0("main",B?.signal??void 0,void 0,X0)).scopedAttempt;if(!p)throw Error("Native vault main credential is unavailable");$4=p.accessToken;let e=await U$(D,B,p.accessToken,S,"main",E,"main",void 0,Y0,v,y,p);return I(e)}catch(K0){let p=J$?await V$(E,{modelId:c0}):[],e=await z1(D,B,p,E,void 0,S,{onSuccess:(i0)=>h0(i0.id,"fallback"),mainAccessToken:F.access,mainQuotaIdentity:y,fableRequest:Y0,laneStartRequest:v});if(e)return I(e);if(K0 instanceof O$)throw new OZ;throw K0}if(F.credentialFailure?.tokenRefreshFailed)throw F.credentialFailure;let M=await R(),i=M?.refresh?.mainLastRefreshError;if(i&&C1(i,F.nativeAccountIdentity??e1??M?.mainAccountId,Date.now(),F.refresh?t$(F.refresh):void 0))throw m$("[refresh] opencode main oauth request skipped backoff",{nextRetryAt:i.nextRetryAt,retryCount:i.retryCount,expiresInMs:F.expires?F.expires-Date.now():void 0}),Error(xG(i,Date.now()));m$("[refresh] opencode main oauth refresh required for request",{hasAccess:Boolean(F.access),expiresInMs:F.expires?F.expires-Date.now():void 0,expiredAgoMs:F.expires&&F.expires<Date.now()?Date.now()-F.expires:void 0});let r=$0();F.access=await C(void 0,X0,B?.signal??void 0),S.mark("refresh_main_access",{ms:A0($0()-r)})}if(!F.access&&!F.modelDenied)throw S.done("missing_access_error"),Error("OAuth access token is missing after refresh");function X4(){if(E?.quota?.showToasts!==!0)return;let M=k.getMain(y?.quotaKey);if(!M)return;let i=(E?.accounts??[]).filter((p)=>p.enabled!==!1&&B0(p)).map((p)=>({...p,quota:k.getFallback(p.id,p)?.quota??p.quota})),r=p1(M.quota,E),K0;if(r)K0="main";else K0=i.find((p)=>p1(p.quota,E))?.id??"main";s8(M.quota,i,K0)}if(J$&&k0(E))try{let M=$0(),i=j$(y,E),r=i?.quota;if(!r)r=await k.refreshMain(y?.quotaKey,F.access,y?.generation,"admission"),i=j$(y,E),X4();else if(k.needsRefresh(l4,c0))if(r1(r)||M9(r,c0))r=await k.refreshMain(y?.quotaKey,F.access,y?.generation),i=j$(y,E);else k.refreshMain(y?.quotaKey,F.access,y?.generation).then(()=>{f1().catch(()=>{}),X4()}).catch(()=>{});C$(E,{activeId:"main",route:"main",mainAccessToken:F.access});let K0=p1(r,E)&&I9(r,c0);if(S.mark("main_quota_for_routing",{ms:A0($0()-M),passes:K0,model:c0,modelScopedExhausted:M9(r,c0)}),!K0){let p=$0();z$=await V$(E,{includeApiRoutes:Boolean(i&&i.refreshAfter>Date.now()&&r1(i.quota)),modelId:c0}),S.mark("preselect_fallback_accounts",{ms:A0($0()-p),accounts:z$.length});let e=await z1(D,B,z$,E,void 0,S,{onSuccess:(i0)=>h0(i0.id,"fallback"),mainAccessToken:F.access,mainQuotaIdentity:y,fableRequest:Y0,laneStartRequest:v});if(e)return S.done("return_preselected_fallback",{status:e.status}),I(e)}}catch(M){if(S.mark("main_quota_for_routing_error",{error:M instanceof Error?M.message:String(M)}),T1(M))throw M}let q$=j$(y,E)?.quota;if(E?.quota?.failClosedOnUnknownQuota&&(q$===void 0||F.access.startsWith("sk-ant-oat")&&y?.providerAccountUuid===void 0)&&k.isBackedOff()){let M=k.getLastApiError(),i=M?I7(M,Date.now()):"Quota API unavailable";return m$("[quota] blocked: quota API backed off (failClosed)",{nextRetryAt:M?.nextRetryAt,retryCount:M?.retryCount}),new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:i}}),{status:429,headers:{"content-type":"application/json","retry-after":String(M?.nextRetryAt?Math.max(1,Math.ceil((M.nextRetryAt-Date.now())/1000)):60)}})}if(r$(E)){if(k.needsRefresh(l4,c0))try{await Promise.all([k.refreshMain(y?.quotaKey,F.access,y?.generation),N1(!1,!0,void 0,"admission")])}catch(i){m$("[quota] killswitch refresh failed",{error:i instanceof Error?i.message:String(i),backedOff:k.isBackedOff()})}q$=j$(y,E)?.quota}if(r$(E)&&!a$(q$,E,void 0,c0)){let i=J0(D,B?.body)?await V$(E,{includeApiRoutes:v$(F.access),modelId:c0}):[];if(i.length>0){m$("[route] skipping main (killswitch), trying fallbacks");let G$=await z1(D,B,i,E,void 0,S,{onSuccess:(Q$)=>h0(Q$.id,"fallback"),mainAccessToken:F.access,mainQuotaIdentity:y,laneStartRequest:v});if(G$)return S.done("return_killswitch_fallback",{status:G$.status}),I(G$)}let r=Date.now(),K0=(E?.accounts??[]).filter((G$)=>y0(G$)&&B0(G$)).map((G$)=>({...G$,quota:Q0(G$)})),p=h3({mainQuota:q$,requestModelId:c0,storage:E}),e=b7(q$,K0,r,p.isScopedDriven?p.modelId:void 0),i0=v3({retryAfterSeconds:e,...p.isScopedDriven&&{modelName:p.modelName}});return new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:i0}}),{status:429,headers:{"content-type":"application/json","retry-after":String(e)}})}if(F.modelDenied){let M=L$(),i=J$?await V$(E,{modelId:X0}):[],r=await z1(D,B,i,E,void 0,S,{onSuccess:(p)=>h0(p.id,"fallback"),fableRequest:Y0,laneStartRequest:v,mainAccessToken:F.access,mainQuotaIdentity:y});if(r)return I(r);if(!(e$(E)!=="sticky-balanced"&&M9(q$,X0)&&p1(q$,E)&&a$(q$,E,void 0,X0)))return I(M);return I(await U$(D,B,"",S,"main",E,"main",void 0,Y0,v,y))}let d4=await U$(D,B,F.access,S,"main",E,"main",void 0,Y0,v,y,d0),k1=!1,p0=await a8(D,B,d4,z$,S,E,F.access,(M)=>{return k1=!0,h0(M.id,"fallback")},c0,Y0,v,y);if(!k1)await h0("main","main");return S.done("return_response",{status:p0.status}),I(p0)}}}return{}},get methods(){return[...sX(C9("opencode").tokenPath)?[x8]:[],{label:"Claude Pro/Max",type:"oauth",authorize:async()=>{if(await S1("opencode",process.env)!=="local")throw Error("Disconnect from the vault first.");if(await T.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 $Z(G,Z.verifier,Z.redirectUri,Z.state);if(W.type==="failed")return W;W$(),await T.loginOAuth({routeId:"main",replace:!0,credential:{access:W.access,refresh:W.refresh,expires:W.expires}});let z=aJ("anthropic");return{type:"success",access:z.access,refresh:z.refresh,expires:z.expires}}}}},{label:"Create an API Key",type:"oauth",authorize:async()=>{let Z=await w7("console");return{url:Z.url,instructions:"Paste the authorization code here:",method:"code",callback:async(G)=>{let W=await $Z(G,Z.verifier,Z.redirectUri,Z.state);if(W.type==="failed")return W;return{type:"success",key:(await fetch("https://api.anthropic.com/api/oauth/claude_cli/create_api_key",{method:"POST",headers:{"Content-Type":"application/json",authorization:`Bearer ${W.access}`}}).then((_)=>_.json())).raw_key}}}}},{provider:"anthropic",label:"Manually enter API Key",type:"api"}]}},dispose:b8,__primeManager:H1,__quotaManager:k,__cacheKeepManager:t1,__resolveMainQuotaIdentityForTest:s1,__resolveSidebarQuotaAccessForTest:hZ,__refreshSidebarQuotaForTest:f1,__mainProviderAccountUuidForTest:()=>D1,__fallbackRefreshReady:A8,get __scopedRuntime(){return y9(K,$.directory)},__notificationMessageIdBeforeAssistantForTest:L8,__trackDesktopNoticeMessageIdForTest:mZ,__isDesktopNoticeMessageForTest:cZ}},M6=W2;
43
43
  export{G4 as a,HJ as b,DJ as c,h1 as d,E0 as e,A3 as f,Y9 as g,f3 as h,n3 as i,r3 as j,s3 as k,m1 as l,Q4 as m,H9 as n,B7 as o,M6 as p};
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{p as a}from"./index-0tb7qc58.js";import"./index-6chd6jnr.js";import"./index-hazrk5c3.js";import"./index-b1dvkp15.js";import"./index-20d6rmjj.js";import"./index-ppdrzs41.js";import"./index-62x1p34p.js";export{a as AnthropicAuthPlugin};
1
+ import{p as a}from"./index-cjjjgewq.js";import"./index-6chd6jnr.js";import"./index-hazrk5c3.js";import"./index-b1dvkp15.js";import"./index-20d6rmjj.js";import"./index-ppdrzs41.js";import"./index-62x1p34p.js";export{a as AnthropicAuthPlugin};
@@ -6,9 +6,11 @@ type HostIndependentActivationCode = 'auth-content-refused' | 'host-auth-invalid
6
6
  /** Activation codes whose remedy names the host, so the host is required. */
7
7
  type HostActivationCode = 'no-read-grant' | 'grant-reaches-nothing';
8
8
  export declare class NativeVaultActivationError extends Error {
9
+ readonly host: HarnessKind;
10
+ readonly approvedName?: string | undefined;
9
11
  readonly code: HostIndependentActivationCode | HostActivationCode;
10
12
  constructor(code: HostIndependentActivationCode);
11
- constructor(code: HostActivationCode, host: HarnessKind);
13
+ constructor(code: HostActivationCode, host: HarnessKind, approvedName?: string);
12
14
  }
13
15
  export interface NativeVaultActivationOptions {
14
16
  env: NodeJS.ProcessEnv;
@@ -42,6 +42,6 @@ export declare function enrollNativeVaultForHost(host: HarnessKind, options: Nat
42
42
  * the vault's anthropic-native category. Setup runs them, and the empty-vault
43
43
  * message shows the same command so the user can run it by hand.
44
44
  */
45
- export declare function nativeVaultGrantArgs(host: HarnessKind): string[];
45
+ export declare function nativeVaultGrantArgs(host: HarnessKind, approvedName?: string): string[];
46
46
  /** Grant this OpenCode or Pi principal read access to the vault's anthropic-native category; enrollment alone grants no provider access. */
47
- export declare function grantNativeVaultForHost(host: HarnessKind, options: Pick<NativeVaultEnrollmentOptions, 'env' | 'runner' | 'processFence' | 'ckBinary'>): Promise<void>;
47
+ export declare function grantNativeVaultForHost(host: HarnessKind, options: Pick<NativeVaultEnrollmentOptions, 'env' | 'runner' | 'processFence' | 'ckBinary' | 'paths'>): Promise<string | undefined>;