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