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