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