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