@cortexkit/opencode-anthropic-auth 2.2.8 → 2.4.0

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