@cortexkit/opencode-anthropic-auth 2.2.7 → 2.3.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 (39) hide show
  1. package/dist/cli.js +43 -42
  2. package/dist/index-2jsr8wvj.js +43 -0
  3. package/dist/index-46e2gk3c.js +2 -0
  4. package/dist/{index-62x1p34p.js → index-71temqvq.js} +1 -1
  5. package/dist/{index-ppdrzs41.js → index-bcp23wwb.js} +1 -1
  6. package/dist/{index-hazrk5c3.js → index-c8ehrd0p.js} +1 -1
  7. package/dist/index-dpnhamzw.js +2 -0
  8. package/dist/{index-0kxy8k2c.js → index-m4dazzyf.js} +1 -1
  9. package/dist/{index-b1dvkp15.js → index-naff9h33.js} +1 -1
  10. package/dist/{index-6chd6jnr.js → index-sg0knfec.js} +1 -1
  11. package/dist/index.js +1 -1
  12. package/dist/oauth-destination.d.ts +35 -0
  13. package/dist/plugin-test-handles.d.ts +26 -0
  14. package/dist/rpc/port-file.js +1 -1
  15. package/dist/rpc/protocol.js +1 -1
  16. package/dist/rpc/rpc-client.js +1 -1
  17. package/dist/rpc/rpc-dir.js +1 -1
  18. package/dist/sidebar-state.d.ts +6 -3
  19. package/dist/sidebar-state.js +1 -1
  20. package/dist/tui/claude-sidebar.d.ts +58 -0
  21. package/dist/tui/menu-status.d.ts +70 -0
  22. package/dist/tui-preferences.js +2 -2
  23. package/dist/v2/adapter.d.ts +13 -8
  24. package/dist/v2/server.js +10 -10
  25. package/dist/v2/tui.d.ts +12 -0
  26. package/dist/v2/tui.js +4 -5
  27. package/package.json +2 -2
  28. package/src/sidebar-state.ts +55 -46
  29. package/src/tui/claude-sidebar.tsx +155 -15
  30. package/src/tui/entry.mjs +13 -0
  31. package/src/tui/menu-status.tsx +300 -0
  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-20d6rmjj.js +0 -2
  38. package/dist/index-cjjjgewq.js +0 -43
  39. package/dist/index-jvhs8sxv.js +0 -2
@@ -0,0 +1,43 @@
1
+ import{r as L8}from"./index-sg0knfec.js";import{t as N8}from"./index-c8ehrd0p.js";import{D as D8}from"./index-naff9h33.js";import{H as H8,M as v9,O as U8,P as Q8}from"./index-46e2gk3c.js";import{ga as a3}from"./index-bcp23wwb.js";import{randomUUID as $Z}from"node:crypto";import{existsSync as jW,readFileSync as _W}from"node:fs";import{dirname as OW,join as LW}from"node:path";import{fileURLToPath as NW}from"node:url";import{ANTHROPIC_OAUTH_ORIGIN_REFUSAL as DW,acquireNativeAccountRuntime as HW,applyCustomHeaders as R7,assertNotCustodyTombstone as UW,authorize as M7,buildAccountList as y$,buildClaudeQuotaSummary as QW,buildFallbackQuotaSummaries as BW,buildPrimeRequestBody as FW,CACHE_KEEP_EXTENDED_TTL_BETA as wW,CacheKeepManager as TW,CacheKeepSessionRegistry as EW,CLAUDE_FABLE_MYTHOS_5_MODEL_SPECS as SW,CLAUDE_HAIKU_4_5_MODEL_ID as I7,CLAUDE_HAIKU_5_5_CONTEXT_WINDOW as CW,CLAUDE_HAIKU_5_5_LONG_CONTEXT_PRICING as Q9,CLAUDE_HAIKU_5_5_LONG_CONTEXT_THRESHOLD as AW,CLAUDE_HAIKU_5_5_MAX_OUTPUT_TOKENS as PW,CLAUDE_HAIKU_5_5_MODEL_ID as B9,CLAUDE_HAIKU_5_5_PRICING as F9,CLAUDE_HAIKU_5_5_RELEASE_DATE as qW,CLAUDE_OPUS_5_5_CONTEXT_WINDOW as RW,CLAUDE_OPUS_5_5_MAX_OUTPUT_TOKENS as MW,CLAUDE_OPUS_5_5_MODEL_ID as w9,CLAUDE_OPUS_5_5_PRICING as T9,CLAUDE_OPUS_5_5_RELEASE_DATE as IW,CLAUDE_SONNET_5_5_CONTEXT_WINDOW as xW,CLAUDE_SONNET_5_5_MAX_OUTPUT_TOKENS as fW,CLAUDE_SONNET_5_5_MODEL_ID as E9,CLAUDE_SONNET_5_5_PRICING as S9,CLAUDE_SONNET_5_5_RELEASE_DATE as kW,CLAUSTRUM_OPENCODE_ENROLLMENT_NAME as JZ,computeXxhash64Hex as vW,configuredAnthropicOAuthAccountCount as hW,createEmptyStorage as n$,createNativeUsagePublisher as bW,createProviderErrorResponseScope as C9,createSseFramer as gW,createStickyNoRouteResponse as yW,custodyTombstoneOAuth as ZZ,decideStickyQuotaFailure as YZ,decodeSseFrame as mW,detectClaustrumConnection as x7,dumpDirectRequest as A9,dumpResponseArtifact as XZ,effectiveRelayStatus as cW,exchange as WZ,executeAccountCommand as pW,executeCache1hCommand as GZ,executeCacheKeepCommand as lW,executeDumpCommand as f7,executeFastModeCommand as k7,executeKillswitchCommand as v7,executeLaneStartCommand as h7,executeLoggingCommand as b7,executePrimeCommand as uW,executeRoutingCommand as g7,FALLBACK_BACKGROUND_TICK_MS as dW,fallbackAccountUuidForLineage as iW,formatEnrollmentStatus as y7,formatNativeAccountState as zZ,formatOAuthAccountTier as w4,formatQuotaBackoffMessage as m7,formatRefreshBackoffMessage as nW,getAccountStoragePath as oW,getCache1hMode as T4,getCache1hPersistentMode as E4,getCacheKeepWindow as c7,getClaudeCodeIdentityForVerifiedAccount as rW,getClaudeModelCatalogue as sW,getClaustrumMode as S4,getDefaultCacheKeepRegistryDirectory as aW,getFallbackReauthLabels as tW,getHostClaustrumEnrollmentPaths as P9,getKillswitchConfig as VZ,getPersistedLogLevel as KZ,getQuotaCheckIntervalMs as p7,getQuotaNextRefreshAt as B1,getRequestGzipLatch as eW,getRequestGzipLatchPath as $2,getRoutingMode as t$,getScopedQuotaWindowForModel as J2,getThinkingPrefixMismatchBehavior as Z2,inspectNativeHostAuthEntry as Y2,isApiKeyAccount as c1,isCache1hEnabled as C4,isCache1hPersistentlyEnabled as q9,isCacheKeepAlways as l7,isCacheKeepHybridActive as u7,isCacheKeepPersistentlyEnabled as X2,isCacheKeepSubagentsEnabled as W2,isClaudeFableOrMythos51Model as G2,isClaudeOpus5Model as z2,isClaudeOpus55Model as V2,isCostZeroingEnabled as K2,isCustodyTombstoneOAuth as jZ,isDumpPersistentlyEnabled as _Z,isFastModeEnabled as OZ,isFastModePersistentlyEnabled as LZ,isFastModeSupportedModel as d7,isKillswitchEnabled as o$,isNativeTransientAccountError as F1,isOAuthAccount as B0,isPermanentRefreshError as r$,isPrimePersistentlyEnabled as R9,isQuotaBearingHeaderFrame as j2,isValidApiBaseURL as NZ,killswitchPassesPolicy as s$,killswitchRetryAfterSeconds as i7,log as m$,logger as h,mergeAnthropicBetas as n7,mergeHeaderQuotaForPersistence as o7,NativeCustodyError as _2,NativeRuntimeError as O2,NativeVaultNoAccountError as DZ,nativeAccountCanServe as y0,nativeLocalQuotaLineage as L2,nativeMigrationAuthorityPhase as r7,normalizeQuotaHeaders as N2,oauthProfileIsFresh as M9,oauthProfileMatchesIdentity as D2,PARALLEL_TOOL_CALLS_SYSTEM_PROMPT as H2,PrimeManager as U2,parseAccountCommandAction as Q2,parseCache1hCommandAction as B2,parseCacheKeepCommandAction as F2,parseDumpCommandAction as w2,parseFastModeCommandAction as T2,parseLaneStartCommandAction as E2,parseLoggingCommandAction as S2,parsePrimeCommandAction as C2,parseRoutingCommandAction as A2,parseSseFrame as P2,QUOTA_HEADER_FEED_SCHEMA_VERSION as I9,QuotaHeaderFeedRegistry as q2,QuotaManager as R2,quotaSnapshotCheckedAt as w1,quotaSnapshotHasStandardWindows as HZ,quotaSnapshotModelScopeIsExhausted as x9,quotaSnapshotPassesModelScope as f9,quotaSnapshotPassesPolicy as p1,readClaustrumEnrollmentStatus as s7,readNativeAccountsForRequest as M2,readNativeEnrollmentMode as T1,readNativeHostAuthKind as I2,readNativeMigrationJournal as a7,refreshBackoffActive as E1,remapRequestBodyModel as x2,resetClaustrumEnrollmentState as f2,resolveClaudeModelCapabilities as k2,resolveNativePoolPaths as v2,STICKY_ROUTING_MAIN_ACCOUNT_ID as Z$,StickySessionRouter as h2,sendViaRelay as b2,sendWithRequestGzip as g2,setCache1hState as k9,setDumpEnabled as UZ,setFastModeEnabled as QZ,setLogLevel as y2,shouldFallbackStatus as m2,snapshotHasServableLocalOAuth as t7,stickyQuotaSnapshotIsFresh as S1,stickyRouteFamilyForModel as c2,TrailingAssistantHistoryError as e7,tokenFingerprint as a$}from"@cortexkit/anthropic-auth-core";import{randomUUID as X3}from"node:crypto";import{isValidAnthropicRequestId as W3,isValidBillingPromptId as VY}from"@cortexkit/anthropic-auth-core";var G4="x-cortexkit-billing-lineage",KY=4096,jY=4096,_Y=1024,G3=new Set(["title","summary","compaction"]),OY="[lane start] — automated cache warm; no response needed.";function LY($){let J=$.info?.sessionID??$.info?.sessionId;return typeof J==="string"&&J.length>0?J:void 0}function NY($){if($.info?.synthetic===!0||$.info?.ignored===!0||typeof $.info?.agent==="string"&&G3.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===OY)return!0}return!1}function H1($,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&&W3(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??X3,this.#_=$.createRequestToken??X3,this.#K=$.maxPrompts??KY,this.#O=$.maxRequests??jY,this.#X=$.maxSessions??_Y}observeMessages($){let J;for(let D=$.length-1;D>=0;D-=1)if($[D]?.info?.role==="user"){J=$[D];break}if(!J)return;let Y=LY(J),X=J.info?.id;if(!Y||typeof X!=="string"||X.length===0)return;let z=this.#j(Y,X);if(NY(J)){this.#Y.delete(z),this.#Y.set(z,!0),H1(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(!VY(K))return;this.#J.set(z,K),H1(this.#J,this.#K)}markHeaders($){let J=this.#j($.sessionId,$.messageId);if(G3.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),H1(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),H1(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||!W3(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),H1(this.#V,this.#X),this.#W.delete($.sessionId),this.#W.set($.sessionId,J),H1(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);H1(this.#G,this.#X)}#j($,J){return`${$}\x00${J}`}}import{setBounded as V3,stickyRetryAfterWithJitter as DY}from"@cortexkit/anthropic-auth-core";var V4="cache-diagnosis-2026-04-07",HY="MC-CACHE-DIAG ",UY=1000,QY=300000,BY={turn:!1,start:!0,prewarm_cachekeep:!0},FY=1000;class FJ{entries=new Map;previousFor($){return this.entries.get($)??null}capture($,J,Y){V3(this.entries,$,{messageId:J,receivedAt:Y},UY)}}class wJ{hashes=new Map;capture($,J){if(this.hashes.has($))return null;return V3(this.hashes,$,!0,FY),`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(DY(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 wY($){return d$($)&&$.type==="ephemeral"}function K3($,J){if(!wY($))return;J.push($.ttl==="1h"?"1h":"5m")}function z3($,J){if(!Array.isArray($))return;for(let Y of $)if(d$(Y))K3(Y.cache_control,J)}function a4($){if(!d$($))return null;let J=[];if(K3($.cache_control,J),z3($.system,J),Array.isArray($.messages)){for(let Y of $.messages)if(d$(Y))z3(Y.content,J)}return J.at(-1)??null}function TY($){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 j3($){if(typeof $.source!=="string"||$.source.length===0||typeof $.accountId!=="string"||$.accountId.length===0||typeof $.synthetic!=="boolean"||typeof $.betasHash!=="string"||$.betasHash.length===0)return{};let J=BY[$.source];if(J!==void 0&&J!==$.synthetic)$.onWarning?.(`cache diagnostics source/synthetic mismatch: source=${$.source} expected=${J} actual=${$.synthetic}`);let Y=Math.trunc($.receivedAt);if(!Number.isFinite($.receivedAt)||Y!==$.receivedAt)return{};if(!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"),D=z4(j,"cache_read_input_tokens"),F=z4(j,"cache_creation_input_tokens"),M=j.cache_creation;if(K===null||D===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=TY($.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:D,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<QY&&$.receivedAt>=$.request.previousMessageReceivedAt?{messageId:X,previousMessageId:$.request.previousMessageId}:void 0;return{record:i,messageId:X,...a?{canary:a}:{}}}function _3($){return`${HY}${JSON.stringify($)}`}import{getClaustrumMode as t4,hasNoLocalCredential as EJ,isCustodyTombstoneOAuth as EY,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 O3($){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(EY($,"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 L3($){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 SY}from"node:crypto";import{defaultAdaptiveEffort as CY,normalizeAdaptiveEffort as AY,pinsEffortOnEveryRequest as N3,resolveClaudeModelCapabilities as PY,supportsPerMessageEffort as qY}from"@cortexkit/anthropic-auth-core";var B3=512,RY=1024,MY=4096,_4=32,O4=32,$9="[A-Za-z0-9_-]{1,128}",IY="<cortexkit-internal-effort ",xY="<cortexkit-internal-effort-plan ",F3=/^\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 fY($){let J=PY($);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 fY($.info.model.modelID)}function D3($){return AY($.info?.model?.variant)??CY($.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 SY("sha256").update($).digest("hex")}function kY($){return K1(`scope:${$}`).slice(0,O4)}function J9($){return K1(`cortexkit-effort-v2:${$}`).slice(0,_4)}function vY($,J,Y){let X=L4[Y],z=`transition:${$}:${J}:${X}`;return`${IJ}scope="${$}" boundary="${J}" effort="${X}" check="${J9(z)}"/>`}function w3($){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 D=`transition:${Y}:${X}:${z}`;if(J9(D)!==j)return null;return{scope:Y,boundary:X,effort:K,token:$}}function hY($,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 T3($){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,D=MJ[z??""];if(!Y||!X||!z||!j||!K||!D)return null;let F=`anchor:${Y}:${X}:${z}:${j}`;if(J9(F)!==K)return null;return{scope:Y,boundary:X,effort:D,digest:j,token:$}}function RJ($){return $.trim()===""||F3.test($)}function U3(){return new RegExp(`(?:${xY}nonce="[^"]+" baseline="[^"]+" count="[^"]+" sig="[0-9a-f]+"/>|${IY}nonce="[^"]+" effort="[^"]+" sig="[0-9a-f]+"/>)`,"g")}function bY(){return new RegExp(`${IJ}scope="[0-9a-f]{${O4}}" boundary="${$9}" effort="[lmhxz]" check="[0-9a-f]{${_4}}"/>`,"g")}function gY(){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 E3($,J,Y){let X=0,z=$,j=$.replace(U3(),"");if(j!==$&&F3.test(j))X+=[...$.matchAll(U3())].length,z=j;return z=z.replace(bY(),(K)=>{let D=w3(K);if(!D)return K;return J?.(D),X++,""}),z=z.replace(gY(),(K)=>{let D=T3(K);if(!D)return K;return Y?.(D),X++,""}),{text:z,removed:X}}function yY($){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=E3(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 mY($){return["v2",$.scope,L4[$.baseline],$.markerCount.toString(36),$.digest].join(".")}function cY($){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??""],D=Number.parseInt(z??"",36);if(!Y||!K||!j||!Number.isSafeInteger(D)||D<0||D>B3)return null;return{scope:Y,baseline:K,markerCount:D,digest:j}}function S3($){let J=$.findLast((i)=>i.info?.role==="user"),Y=qJ(J);if(!J||!Y)return null;if(yY($),!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=kY(X),K=$.findLast((i)=>i.info?.role==="user"&&i.parts?.some((a)=>a.type==="compaction")),D=typeof K?.info?.id==="string"?K.info.id:void 0,F,M;if(K&&qJ(K)===Y)F=D3(K),M=F;let q=[];for(let i of $){let a=i.info;if(a?.role!=="user")continue;if(D&&typeof a.id==="string"&&a.id<=D)continue;if(qJ(i)!==Y||!H3(i))continue;let T=D3(i);if(!F){F=T,M=T;continue}if(T===M)continue;if(q.length>=B3)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=vY(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?hY(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 pY($){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=(D)=>E3(D,(F)=>z.push(F),(F)=>j.push(F));if(typeof X.content==="string"){let D=K(X.content);X.content=D.removed>0&&RJ(D.text)?"":D.text}else if(Array.isArray(X.content))X.content=X.content.flatMap((D)=>{if(!n0(D)||D.type!=="text"||typeof D.text!=="string")return[D];let F=K(D.text);if(F.removed>0&&RJ(F.text))return[];return[{...D,text:F.text}]});Y.push({value:X,transitions:z,anchors:j})}return $.messages=Y.map((X)=>X.value),{messages:Y}}function lY($,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 uY($,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)=>lY($,X))}function Q3($){if(!n0($))return null;if(typeof $.id==="string")return $.id;return typeof $.message_id==="string"?$.message_id:null}function dY($,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)=>w3(j)),X=J.anchorToken?T3(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 C3($,J,Y,X){if(!Array.isArray($.messages))return{found:0,inserted:0};let z=cY(Y);if(Y&&!z)throw new E0("Missing or invalid internal Fable 5.1 effort request plan");let j=z?dY(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&&N3($.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=pY($),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=uY(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:Q3(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:Q3(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&&qY($),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||N3($.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>RY){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=mY(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>MY){let j=this.history.entries().next().value;if(!j)break;let[K,D]=j;this.history.delete(K);let F=this.key(D.sessionId,D.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 iY}from"@cortexkit/anthropic-auth-core";var A3="claude-opus-4-8",kJ=10,P3=128,nY=86400000;function b$($){return iY($)?.refusalRecoveryFamily??null}function Z9($){return b$($)!==null}function oY($,J){let Y=b$(J);return Y?`${$}\x00${Y}`:null}function rY($){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>=nY)this.recoveries.delete(J);while(this.recoveries.size>P3){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>P3){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=rY(J);if(!Y||!Z9(Y.model))return null;let X=oY($,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=A3,{sessionId:$,recoveryKey:X,requestedModel:z.model,effectiveModel:A3,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 sY($){if(Array.isArray($))return $;if(i$($)&&Array.isArray($.data))return $.data;return[]}function M3($){if(!i$($)||!i$($.info))return;return $.info}function q3($){let J=M3($);return typeof J?.role==="string"?J.role:void 0}function aY($){let J=M3($);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 D={};if(X)D.agent=X;if(z&&j)D.model={providerID:z,modelID:j};if(K)D.variant=K;return D}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 R3($){return Boolean($.agent&&$.model&&$.variant)}async function Y9($,J){if(!$||!J)return null;let Y=$,X=[];if(typeof Y.session?.messages==="function")try{X=sY(await Promise.resolve(Y.session.messages({path:{id:J},query:{limit:100}})))}catch{X=[]}let z,j;for(let D of X){let F=aY(D);if(!F)continue;let M=q3(D);if(M==="assistant"&&(!z||F>z))z=F;if(M==="user"&&(!j||F>j))j=F}let K={latestAssistantMessageId:z,latestUserMessageId:j};for(let D=X.length-1;D>=0;D--){if(q3(X[D])!=="assistant")continue;let F=hJ(X[D]);if(!F)continue;if(K=bJ(K,F),R3(K))return K}for(let D=X.length-1;D>=0;D--){let F=hJ(X[D]);if(!F)continue;if(K=bJ(K,F),R3(K))return K}if(typeof Y.session?.get==="function")try{let D=await Promise.resolve(Y.session.get({path:{id:J}})),F=i$(D)&&i$(D.data)?D.data:i$(D)?D: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 I3="[lane start] — automated cache warm; no response needed.",X9="x-cortexkit-lane-start",tY=1000;function eY($){if(!$||typeof $!=="object")return!1;let J=$;return J.type==="text"&&J.text===I3&&J.synthetic===!0}async function x3($,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:I3,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(eY))return!1;let J=`${$.sessionId}\x00${$.messageId}`;if(!this.#$.has(J)&&this.#$.size>=tY){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 $5,disconnectNativeVaultForHost as J5,readNativeEnrollmentMode as Z5}from"@cortexkit/anthropic-auth-core";function f3($){if(!$?.trim())throw TypeError("sessionId is required");return $}function k3($){if($.host!=="opencode")throw TypeError("OpenCode host is required");let J=$5({...$,readMode:$.readMode??(()=>Z5("opencode",process.env)),disconnectVault:$.disconnectVault??(()=>J5({host:"opencode",env:process.env}))});return{menu:J,open(Y){return J.open({sessionId:f3(Y),notify(){}})},apply(Y){return J.apply(Y,{sessionId:f3(Y.sessionId),notify(){}})}}}import{createAnthropicOAuthFetch as Y5,logger as v3,requireAnthropicOAuthOrigin as X5}from"@cortexkit/anthropic-auth-core";var yJ="ANTHROPIC_AUTH_TEST_OAUTH_LOOPBACK_ORIGIN",W5=new Set(["127.0.0.1","[::1]","localhost"]),h3;function G5(){let $=process.env[yJ];if(!$)return;let J=z5($);if(h3!==$)if(h3=$,J)v3.warn("oauth-destination","test-only loopback origin is allowed for Claude OAuth requests",{env:yJ});else v3.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 z5($){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(!W5.has(J.hostname))return;if(!J.port)return;if($!==J.origin)return;return J.origin}function b3(){let $=G5();return $?{extraOrigin:$}:{}}function W9($){return X5($,b3())}function mJ($){try{return W9($),!0}catch{return!1}}var N4=Y5(b3);var g3;import{primeStorageFingerprint as V5}from"@cortexkit/anthropic-auth-core";var G9=new Map,z9=new Map;function y3($,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 m3($,J,Y){let X=V5($),z=G9.get(X),j=z?.manager??J();if(z)Y.rebind(j);let K=z9.get(Y.slot);if(K&&K.fingerprint!==X)y3(Y.slot,K);let D=z??{manager:j,slots:new Set};if(!z)G9.set(X,D);let F={fingerprint:X,marker:Symbol(Y.slot)};return D.slots.add(Y.slot),z9.set(Y.slot,F),{manager:j,release:()=>y3(Y.slot,F)}}import{classifySafeErrorForLog as K5,logger as j5}from"@cortexkit/anthropic-auth-core";function c3($,J,Y){j5.warn("quota","fallback quota preflight could not obtain a reading",{accountId:$,requiredByPolicy:J,...K5(Y)})}var cJ="x-cortexkit-request-class",_5=new Set(["title","summary","prime"]);function p3($){return typeof $==="string"&&_5.has($)}function l3($){let J=$.get("x-cortexkit-request-class");return $.delete("x-cortexkit-request-class"),J==="auxiliary"?"auxiliary":"main"}import{getKillswitchThresholdsForAccount as O5,getScopedQuotaWindowForModel as L5,killswitchPassesPolicy as N5}from"@cortexkit/anthropic-auth-core";function u3($){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 d3($){if(!$.requestModelId)return{isScopedDriven:!1};if(!N5($.mainQuota,$.storage))return{isScopedDriven:!1};let J=L5($.mainQuota,$.requestModelId);if(!J)return{isScopedDriven:!1};if(!Number.isFinite(J.remainingPercent))return{isScopedDriven:!1};let Y=O5($.storage);if(J.remainingPercent<=Y.scoped)return{isScopedDriven:!0,modelName:J.modelName,modelId:$.requestModelId};return{isScopedDriven:!1}}var R$=[],D5=1,i3=new Map,V9=new Map,U1=new Set,H5=1000;function n3($){if(typeof $!=="string"||$.length===0)throw TypeError("sessionId is required")}function pJ($,J){n3(J);let Y=D5++;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 o3($,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),U1.delete(J),U1.add(J),U1.size>H5){let K=U1.values().next().value;if(K!==void 0)U1.delete(K)}z(!1)},Y.timeoutMs)})}function r3($){return U1.has($)}function s3($,J){if(n3(J),i3.set(J,Date.now()),U1.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=i3.get($)??0;return Y>0&&J-Y<3000}import{randomBytes as U5,timingSafeEqual as Q5}from"node:crypto";import{readFile as B5,unlink as F5}from"node:fs/promises";import{createServer as w5}from"node:http";import{join as T5}from"node:path";import{parseApplyRequest as E5}from"@cortexkit/anthropic-auth-core";function S5($){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 C5($,J){if(!$?.startsWith("Bearer "))return!1;let Y=Buffer.from($.slice(7)),X=Buffer.from(J);return Y.length===X.length&&Q5(Y,X)}async function t3($){let J=U5(32).toString("hex"),Y=w5((j,K)=>{X(j,K)});async function X(j,K){let D=(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 D(200,{ok:!0});if(j.method!=="POST"||!F.startsWith("/rpc/"))return D(404,{error:"not found"});if(!C5(j.headers.authorization,J))return D(401,{error:"unauthorized"});let M=F.slice(5),q=JSON.parse(await S5(j)||"{}");if(M==="pending-notifications"){if(typeof q.sessionId!=="string"||q.sessionId.length===0)return D(400,{error:"sessionId is required"});let c=$.drain(Number(q.lastReceivedId??0),q.sessionId);return D(200,{messages:c})}if(M==="apply"){if(!$.apply)return D(501,{error:"text apply unavailable"});let c=await $.apply(q);return D(200,c)}if(M==="apply-menu"){let c=E5(q);if(c?.command!=="claude"||!c.sessionId?.trim())return D(400,{error:"invalid menu request"});if(!$.applyMenu)return D(501,{error:"menu unavailable"});return D(200,await $.applyMenu(c))}return D(404,{error:"unknown method"})}catch{if(!K.headersSent&&!K.writableEnded&&!K.destroyed)D(500,{error:"RPC request failed"})}}let z=await new Promise((j,K)=>{Y.on("error",K),Y.listen(0,"127.0.0.1",()=>{let D=Y.address();if(D&&typeof D==="object")j(D.port);else K(Error("no port"))})});Y.unref();try{await a3($.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=T5($.dir,`port-${process.pid}.json`),K=JSON.parse(await B5(j,"utf8"));if(K.port===z&&K.pid===process.pid)await F5(j)}catch{}}}}async function e3($,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,D=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($,D);try{await D}finally{if(z.get($)===D)z.delete($)}let F=K;if(!F)throw Error("RPC server failed to start");return{server:F,release:async()=>{if(X.get($)!==F)return;if(await F.stop(),X.get($)===F)X.delete($)}}}import{resolveClaudeModelCapabilities as A5}from"@cortexkit/anthropic-auth-core";var Z7="server-side-fallback-2026-07-01",Y7="⁠",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 P5($){return`${j9}${$.fromModel}|${$.toModel}`}function q5($){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 R5($){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 M5($){return{type:"fallback",from:{model:$.fromModel},to:{model:$.toModel}}}function I5($,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 D of j.content){let F=M$(D);if(!(F?.type==="thinking"&&(F.thinking===Y7||F.thinking==="")&&typeof F.signature==="string"&&F.signature.startsWith(j9))){K.push(D);continue}let q=q5(F.signature);if(J&&q)K.push(M5(q)),Y++;else X++}j.content=K}return{restoredMarkers:Y,droppedMarkers:X}}function X7($){return $?.trim().toLowerCase()==="legacy"?"legacy":"server"}function W7($,J){let Y=J&&A5($.model)?.serverSideFallback===!0,X=I5($,Y);if(Y)$.fallbacks="default";else if($.fallbacks==="default")delete $.fallbacks;return{enabled:Y,...X}}function x5($){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 $7($){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 J7($,J){return`event: ${$}
8
+ data: ${JSON.stringify(J)}
9
+
10
+ `}function f5($,J){return J7("content_block_start",{type:"content_block_start",index:$,content_block:{type:"thinking",thinking:Y7}})+J7("content_block_delta",{type:"content_block_delta",index:$,delta:{type:"signature_delta",signature:P5(J)}})}function k5($,J){let Y=b$($),X=b$(J);if(Y&&X)return Y===X;return $===J}function G7($){let J="",Y=0,X=!1,z="",j,K,D,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))D=W0}},t=(T)=>{if(F)return;F=!0;let o=K?.toModel??D??(j&&!k5($.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=x5(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?R5(L0):null;if(j0){if(K=j0,typeof g==="number"&&Number.isInteger(g)&&g>=0)return f5(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=$7(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=$7(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 v5}from"node:crypto";import{applyClaudeCodeHeaders as h5,applyClaudeCodeMetadata as b5,applyThinkingBindingControls as g5,applyTurnEndNotes as y5,assertNotCustodyTombstone as m5,buildBillingHeaderValue as c5,CLAUDE_CODE_ENTRYPOINT as p5,CLAUDE_CODE_IDENTITY as H4,CLAUDE_FABLE_MYTHOS_5_SUMMARIZED_THINKING as l5,CLAUDE_HAIKU_5_5_ADAPTIVE_THINKING as u5,CLAUDE_OPUS_5_5_ADAPTIVE_THINKING as d5,CLAUDE_OPUS_5_ADAPTIVE_THINKING as i5,CLAUDE_SONNET_5_5_ADAPTIVE_THINKING as n5,CLAUDE_SONNET_5_ADAPTIVE_THINKING as o5,ClaudeCodeFirstUserTextTracker as r5,countUserPrompts as s5,createSseFramer as a5,FAST_MODE_BETA as t5,isClaudeFableOrMythos5Model as e5,isClaudeHaiku55Model as $X,isClaudeOpus5Model as D7,isClaudeOpus55Model as JX,isClaudeSonnet5Model as ZX,isClaudeSonnet55Model as YX,isFastModeSupportedModel as XX,isOpenAIReasoningSignature as WX,mergeAnthropicBetas as GX,OPENCODE_IDENTITY_PREFIX as zX,orderClaudeCodeBody as VX,PARAGRAPH_REMOVAL_ANCHORS as KX,parseSseFrame as jX,REQUIRED_BETAS as NG,remapRequestBodyModel as _X,resolveClaudeModelCapabilities as OX,SseFrameTooLargeError as H7,selectClaudeCodeBetas as LX,signRequestBody as NX,stripEmptyTrailingAssistantMessages as DX,TEXT_REPLACEMENTS as HX,TOOL_PREFIX as U7,TrailingAssistantHistoryError as UX}from"@cortexkit/anthropic-auth-core";import{applyEdits as Q7,parseTree as QX}from"jsonc-parser";function z7($,J){let Y=new Map,X=0,z=0,j=0,K=0,D=0,F=(c)=>{let t=performance.now(),i=$(c);return D+=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:D})}}var I$=8388608;function N9($){return`${U7}${$.charAt(0).toUpperCase()}${$.slice(1)}`}function BX($){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 H7&&J?.hazardousWireNames.size?new Q4:$}async function nJ($,J){try{$.cancel(J).catch(()=>{})}catch{}try{await Promise.allSettled([$.closed])}finally{try{$.releaseLock()}catch{}}}function FX($){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,D)=>{j.set(K,j.has(K)&&j.get(K)!==D?null:D)},z=new Map;for(let j of J){let K=j.split("_");for(let D=0;D<K.length;D++){let F=K.slice(D).join("_");if(!F)continue;for(let M of new Set([F,BX(F),F.charAt(0).toUpperCase()+F.slice(1)]))X(Y,M,j),X(Y,`${U7}${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 H9($){return $.set("anthropic-beta",GX($.get("anthropic-beta"),[t5])),$}function m1($,J,Y={}){return m5(J,"anthropic"),h5($,J,{...Y,extraBetas:[...Y.body?.fallbacks==="default"?[Z7]:[]]})}function wX($){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(VX($))}function TX($,J){return Q7($,B7($,J,!1))}function D4($,J){if($?.type!=="object")return;return $.children?.filter((X)=>X.children?.[0]?.value===J)?.at(-1)?.children?.[1]}function B7($,J,Y,X=!0){if(!J?.size)return[];let z=$.charCodeAt(0)===65279?1:0,j=[],K;try{K=QX($.slice(z),j,{disallowComments:!0,allowTrailingComma:!1})}catch{return U4(J),[]}if(j.length||K?.type!=="object")return U4(J),[];let D=D4(K,"type")?.value,F;if(Y){X&&=D==="content_block_start";let q=D4(K,"content_block");F=q?[q]:[]}else{X&&=D===void 0||D==="message";let q=D4(K,"content");F=q?.type==="array"?q.children??[]:[]}let M=[];for(let q of F){if(D4(q,"type")?.value!=="tool_use")continue;let c=D4(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 EX($,J){let Y=$.charCodeAt(0)===65279?1:0,X=jX($.slice(Y));if(X.data===void 0)return $;let z=B7(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 D=[];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),$;D.push({...F,offset:M.frameOffset+F.offset-M.dataOffset})}return Q7($,D)}function SX($,J){let Y=new TextEncoder,X=new TextDecoder("utf-8",{ignoreBOM:!0}),z=a5({maxFrameBytes:I$}),j="",K=0,D=!$?.size;return{pendingLength:()=>j.length,push(F,M=!1){if(D||!$)return F;let q=j+F;if(J){if(K+=Y.encode(F).byteLength,K>I$)return D=!0,j="",U4($),q;return j=M?"":q,M?TX(q,$):""}let c;try{c=z.push(Y.encode(F))}catch(i){if(!(i instanceof H7))throw i;return D=!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)=>EX(i,$)).join("")}}}function oJ(){if(!process.env.ANTHROPIC_BASE_URL?.trim())return!1;let $=process.env.ANTHROPIC_INSECURE?.trim();return $==="1"||$==="true"}function F7($){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 CX(){return F7(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?F7(J.baseURL):CX();if(z){let K=z.pathname.replace(/\/$/,""),D=Y.pathname;if(Y.protocol=z.protocol,Y.host=z.host,!(D===K||K!==""&&D.startsWith(`${K}/`))){let M=/\/v\d[^/]*$/.test(K);if(D==="/messages")Y.pathname=M?`${K}/messages`:`${K}/v1/messages`;else if(D==="/v1/messages"&&M)Y.pathname=`${K}/messages`;else Y.pathname=`${K}${D}`}else if(D===`${K}/messages`){if(!/\/v\d[^/]*$/.test(K))Y.pathname=`${K}/v1/messages`}}if(Y.pathname.endsWith("/v1/messages")&&!Y.searchParams.has("beta"))Y.searchParams.set("beta","true");if(Y.href===X)return{input:$,url:Y};return{input:$ instanceof Request?new Request(Y.toString(),$):Y,url:Y}}function AX($){let X=$.split(/\n\n+/).filter((z)=>{if(z.includes(zX))return!1;for(let j of KX)if(z.includes(j))return!1;return!0}).join(`
13
+
14
+ `);for(let z of HX)X=X.replace(z.match,z.replacement);return X.trim()}var PX=8388608;function qX(){return process.env.OPENCODE_ANTHROPIC_AUTH_MEMO!=="0"}var RX=z7(AX,{maxBytes:PX,enabled:qX});function _9($){return RX.call($)}function Y0($){return $!=null&&typeof $==="object"&&!Array.isArray($)}function MX($){let J={type:"text",text:H4};if($==null)return[J];if(typeof $==="string"){let X=_9($);if(X===H4)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===H4)return Y;return[J,...Y]}var w7={type:"ephemeral",ttl:"1h"},V7=20;function rJ($){if(Y0($.cache_control))return $.cache_control;if(Y0($.cacheControl))return $.cacheControl;return null}function D9($,J){if(!Y0($))return!1;return delete $.cacheControl,$.cache_control=J?{...w7}:{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 T7($){if(!Y0($))return;let J=sJ($.content);if(!J?.length)return;let Y=dJ({...$,content:J});return v5("sha256").update(JSON.stringify(Y)).digest("hex")}function IX($){if(!Y0($))return!1;let J=sJ($.content);return Boolean(J?.some((Y)=>Y0(Y)&&rJ(Y)?.type==="ephemeral"))}function E7($){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"||!IX(X))continue;let z=T7(X);if(!z)return;return{fingerprint:z,messageIndex:Y,messageCount:J.messages.length}}return}catch{return}}function S7($,J){if(!Y0($))return;let Y=rJ($);if(Y?.type!=="ephemeral")return;if(J)Y.ttl="1h";else delete Y.ttl}function K7($,J){aJ($,(Y)=>S7(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 C7($){uJ($),aJ($,uJ)}function xX($){C7($),$.cache_control={...w7}}function fX($){return Y0($)&&$.type!=="thinking"&&$.type!=="redacted_thinking"}function A7($){let J=sJ($.content);if(!J?.length)return;let Y=J.filter(fX);if(!Y.length)return;return{content:J,cacheableBlocks:Y}}function kX($){if(!Y0($))return!1;let J=A7($);if(!J||J.cacheableBlocks.length<2)return!1;let[Y,X,z]=J.content,K=$.role==="user"&&Y0(Y)&&Y.type==="text"&&typeof Y.text==="string"&&Y0(X)&&X.type==="image"&&Y0(z)&&z.type==="text"&&typeof z.text==="string"&&/<memory-mural>[\s\S]*?<\/memory-mural>/.test(Y.text)?[X,z]:J.cacheableBlocks.slice(0,2);$.content=J.content;for(let D of K)D9(D,!0);return!0}function O9($){if(!Y0($))return!1;let J=A7($);if(!J)return!1;let Y=J.cacheableBlocks[J.cacheableBlocks.length-1];return $.content=J.content,D9(Y,!0)}function vX($){if(!Y0($))return 0;let J=$.content;if(Array.isArray(J))return J.length;if(J==null)return 0;return 1}function hX($){let J=[],Y=0;return $.forEach((X,z)=>{let j=vX(X);if(Y0(X)&&X.role==="user"&&j>0)J.push({index:z,blockPosition:Y+j-1});Y+=j}),J}function bX($,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(T7($[K.index])===X.fingerprint)return K;return}function gX($,J){let Y=hX($),X=[...Y].reverse().find((q)=>q.index>1);if(!X)return{latest:void 0,bridge:void 0,standbyAnchorMatched:!1,standbyBridgeApplied:!1};let z=bX($,Y,X,J),j=z?X.blockPosition-z.blockPosition+1:void 0,K=z&&j!=null&&j>V7?z:void 0,D=[...Y].reverse().find((q)=>q.index<X.index),F=D?X.blockPosition-D.blockPosition+1:0,M=D&&D.index>1&&F>V7?D: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 yX($){if(!Array.isArray($.system))return;let J=$.system,Y=0;if(lJ(J[Y]).startsWith("x-anthropic-billing-header:"))Y++;if(lJ(J[Y])===H4)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 j7($){if(Array.isArray($.system)){let J=$.system.findIndex((z)=>Y0(z)&&z.text===H4),Y=$.system.slice(J>=0?J+1:0).filter(Y0),X=Y[Y.length-1];D9(X,!0)}else D9($.system,!0)}function mX($,J){if(C7($),yX($),!Array.isArray($.messages))return j7($),{standbyAnchorMatched:!1,standbyBridgeApplied:!1};let{latest:Y,bridge:X,standbyAnchorMatched:z,standbyDistanceBlocks:j,standbyBridgeApplied:K}=gX($.messages,J);if(!X)j7($);if(!kX($.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 cX($){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(!WX(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 pX($){if(!e5($.model))return null;let J=Object.hasOwn($,"thinking");if($.thinking={...l5},OX($.model)?.rejectsForcedToolChoice)tJ($);return{replacedExisting:J}}function lX($){if(YX($.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={...n5},{replacedExisting:X,display:"summarized"}}if(!ZX($.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={...o5},{replacedExisting:J,display:"summarized"}}function uX($){if(JX($.model)){tJ($);let X=Object.hasOwn($,"thinking");return $.thinking={...d5},{replacedExisting:X,display:"summarized"}}if(!D7($.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={...i5},{replacedExisting:J,display:"summarized"}}function dX($){if(!$X($.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={...u5},{replacedExisting:J,display:"summarized"}}function iX($,J){if(!J.enabled)return K7($,!1),delete $.cache_control,delete $.cacheControl,{};if(J.mode==="automatic")return xX($),{};if(J.mode==="hybrid")return mX($,J.hybridStandbyAnchor);K7($,!0),delete $.cacheControl;let Y=[];if(aJ($,(X)=>{if(Y0(X)&&rJ(X))Y.push(X)}),Y0($.cache_control))S7($,!0),Y.push($);for(let X of Y.slice(0,-4))uJ(X);return{}}function nX($){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 oX=1000,rX=new r5(oX);function sX($,J,Y){return rX.resolve($,J,!Y)}function F0(){return performance.now()}function B$($){return Math.round($*10)/10}function _7($){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 D of K)if(D&&typeof D==="object"&&D.type==="tool_use")X++}return{messageCount:J,contentBlockCount:Y,toolDefinitionCount:Array.isArray($.tools)?$.tools.length:0,toolUseCount:X,systemBlockCount:Array.isArray($.system)?$.system.length:0}}async function U9($,J={}){try{let Y=F0(),X=JSON.parse($);J.perf?.("parse",{ms:B$(F0()-Y),inputBytes:$.length,..._7(X)});let z=F0(),j=Array.isArray(X.messages)?X.messages.length:void 0;DX(X.messages);let K=nX(X),D=Array.isArray(X.messages)?X.messages.length:void 0;J.perf?.("strip_trailing_assistant",{ms:B$(F0()-z),removedMessages:typeof j==="number"&&typeof D==="number"?j-D:void 0,removedWhitespaceBlocks:K});let F=F0(),M=cX(X),q=W7(X,J.serverSideFallbackEnabled===!0),c=pX(X),t=lX(X),i=uX(X),a=dX(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(C3(X,J.midConversationEffortEnabled===!0,J.midConversationEffortPlan,J.midConversationEffortResolvedPlan),g5(X,J.thinkingPrefixMismatchBehavior??"account-default"),J.turnEndNoteEnabled)y5(X,{tools:J.turnEndNote?.tools});let T=F0(),o=Array.isArray(X.messages)&&X.messages.some((A1)=>A1.role==="user")?c5(X.messages,void 0,p5,J.sessionId?sX(J.sessionId,X.messages,J.laneStart===!0):void 0,J.billingLineage?.promptId?{...J.billingLineage,promptIndex:J.billingLineage.promptIndex??s5(X.messages)}:J.billingLineage):null;J.perf?.("billing_header",{ms:B$(F0()-T),hasBillingHeader:Boolean(o)});let R0=F0();if(X.system=MX(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=iX(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&&XX(X.model))X.speed="fast";else if(X.speed==="fast")delete X.speed;if(J.cacheDiagnosticsPreviousMessageId!==void 0&&LX(X).split(",").includes(V4))s4(X,J.cacheDiagnosticsPreviousMessageId);let L0=F0();if(J.identity)b5(X,J.identity);J.perf?.("metadata",{ms:B$(F0()-L0),hasAccountUuid:Boolean(J.identity?.accountUuid)});let g=F0();if(J.modelRemapEnabled===!0)_X(X);let j0=FX(X.tools),m0=wX(X);J.perf?.("prefix_tools_stringify",{ms:B$(F0()-g),outputBytesBeforeSign:m0.length,..._7(X)});let I=F0(),r0=await NX(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 UX)throw Y;return $}}var P7=new TextEncoder;function aX(){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 Q1($){return P7.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 tX($,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:Q1($),dataBytes:Q1(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),D=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=tX(K,"index"),z.contentBlockType=o0(F,"type"),z.deltaType=o0(D,"type"),z.stopReason=o0(D,"stop_reason")??o0(K,"stop_reason"),z.deltaType==="text_delta")z.textDeltaBytes=Q1(o0(D,"text")??"");if(z.deltaType==="thinking_delta")z.thinkingDeltaBytes=Q1(o0(D,"thinking")??"");if(z.deltaType==="input_json_delta")z.inputJsonDeltaBytes=Q1(o0(D,"partial_json")??"");if(z.deltaType==="signature_delta")z.signatureDeltaBytes=Q1(o0(D,"signature")??"");if(z.contentBlockType==="redacted_thinking")z.redactedThinkingBytes=Q1(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 O7($,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(P7.encode($.pending).byteLength>Y)$.pending="",$.disabled=!0,$.pendingOverflowCount++}function eX(){return{pending:"",completed:!1,disabled:!1,resyncCarry:""}}function $W($,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 JW(){return{pending:"",disabled:!1}}function L7($){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 ZW($,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),D=$.pending.slice(j.index,j.index+j.length);$.pending=$.pending.slice(j.index+j.length),z+=L7(K),z+=D}if(X&&$.pending)z+=L7($.pending),$.pending="";return z}function YW(){return{pending:"",disabled:!1,resyncCarry:""}}function XW($,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 WW($,J){let Y=$?`${$}: ${J}`:J,X=Error(`Anthropic stream error: ${Y}`);if(X.code="ECONNRESET",X.syscall="anthropic-sse",$)X.providerErrorType=$;return X}function GW($){let J=D7($)?"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 zW($){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),D=o0(K,"type")??o0(K,"code")??void 0,F=o0(K,"message")??o0(j,"message")??D??"Anthropic stream error";if(!XW(D,F))return null;return WW(D,F)}function VW($){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 N7($,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 D=VW(K);if(D!==void 0)X?.(D);let F=zW(K);z??=F}if(new TextEncoder().encode($.pending).byteLength>Y){let j=$.pending;$.pending="",$.disabled=!0,$.resyncCarry=j.slice(-3)}return z}function KW($){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 q7($,J={}){if(!$.body)return $;let Y=$.body.getReader(),X=new TextDecoder("utf-8",{ignoreBOM:!0}),z=new TextEncoder,j=J.responseMode==="json",K=SX(J.toolNameMap,j),D=!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?aX():void 0,x0="",L0=0,g=!1,j0=(f0)=>{if(!f0)return;try{f0()}catch{}},m0=YW(),I=J.onContentFilter||J.onComplete?eX():void 0,r0=J.laneStart&&J.laneStartOAuthServed!==!1?JW():void 0,A1=!1,R4=!1,M4=(f0=!1)=>{if(!J.onContentFilter)return!1;if(!A1)A1=!0,R4=J.onContentFilter({completedToolUse:f0})!==!1;return R4},e$=J.serverSideFallbackModel?G7({requestedModel:J.serverSideFallbackModel,maxPendingBytes:I$,onOutcome:J.onServerSideFallbackOutcome,onRefusalAfterToolUse:J.onContentFilter?()=>M4(!0):void 0}):void 0,P1=(f0)=>{if(!I)return null;let w$=$W(I,f0,I$);if(w$?.type==="content-filter"&&J.onContentFilter)return M4()?GW(J.contentFilterModel):null;if(w$?.type==="complete")J.onComplete?.(w$.finishReason);return null},I4=(f0,w$=!1)=>r0?ZW(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?KW(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)O7(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,q1=I4(P0,!0),_1=j?P1(q1):N7(m0,S0,I$,J.onRelayUpstreamError)??P1(q1);if(_1)throw x$("stream_tool_prefix_retryable_error",{providerErrorType:_1.providerErrorType}),await y9(_1),_1;let n1=K.push(q1,!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(D&&b0){if(D=!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)O7(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?P1(i1):N7(m0,b0,I$,J.onRelayUpstreamError)??P1(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 T6,nativeCacheKeepAlways as E6,nativeSettingsRecord as S6}from"@cortexkit/anthropic-auth-core";var $8="physical send failed before a response",p2="__OPENCODE_ANTHROPIC_AUTH_COMMAND_HANDLED__",J8="~effect/http/HttpServerResponse",Z8="~effect/http/Cookies",Y8="~effect/http/HttpBody",l2="~effect/ErrorReporter/ignore",u2="https://api.anthropic.com/v1/messages",B8=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 B8.add(J),J}async function X8($,J){if(!J?.aborted)return;await $.body?.cancel().catch(()=>{}),J.throwIfAborted()}function BZ($,J){return($.status!==400||!B8.has($))&&m2($.status,J)}function W8($){return h.warn("effort-history","refused uncorrelated Fable 5.1 request",{check:$.check,...$.details}),g9($.message)}function G8($){return h.warn("transform","refused request ending on assistant history",{check:$.check,...$.details}),g9($.message)}var d2=60000,z8=60000,F8=240,i2=F8,n2=600000;function o2($,J){return($?.accounts??[]).some((Y)=>Y.id===J&&y0(Y)&&B0(Y))}function r2($){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 V8($,J){if($?.activeId==="main"||$?.activeId&&o2(J,$.activeId))return{activeId:$.activeId,route:$.route};return r2(J)}function w8($,J,Y){let X=Date.now()-$.lastUpdated;if(!$.activeId||X<0||X>n2)return V8(Y,J);return V8({activeId:$.activeId,route:$.route},J)}async function s2($,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{...w8($,X,Y),freshStorage:X}}async function a2($){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 U8();return{...w8(Y,J),freshStorage:J}}var t2=4,e2=25,$6=1,K8=!1;function h9(){return process.env.OPENCODE_ANTHROPIC_AUTH_PERF==="1"}function Z0(){return performance.now()}function A0($){return Math.round($*10)/10}function j8($){return Math.floor(Math.random()*Math.max(0,$))}function l1($){if(typeof $==="string")return $;if($ instanceof URL)return $.toString();return $.url}function C1($,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 J6(){if(K8||!1||!h9())return;K8=!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 Z6($){let J=Z0(),Y={requestId:String($6++),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 T8($,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 _8($,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 D=X.latestPreparedMessageId?.(),F=j?.latestUserMessageId,M=D&&(!F||D>F)?D:F,q=j?.latestAssistantMessageId?T8(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 Y6(){throw Object.assign(Error(p2),{[J8]:J8,[l2]:!0,status:204,statusText:void 0,headers:{},cookies:{[Z8]:Z8,cookies:{}},body:{[Y8]:Y8,_tag:"Empty"}})}function X6($){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 W6($){if($.some((J)=>J.includes("<use_parallel_tool_calls>")))return!1;return $.push(H2),!0}var G6={input:0,output:0,cache:{read:0,write:0}},z6=1000;function F$($){return $}function V6($,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 K6($){let J=q4($);return`${J} recovery window complete. Returning to ${J}.`}function q4($){if(V2($))return"Opus 5.5";if(z2($))return"Opus 5";if(G2($)){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 j6($,J){return`Anthropic safety fallback active: ${q4($)} → ${q4(J)}. Follow-up requests may remain on the fallback model for about one hour.`}function _6($){return`Anthropic safety fallback ended. Returning to ${q4($)}.`}function O6(){return{input:F9.input,output:F9.output,cache:{read:F9.cacheRead,write:F9.cacheWrite5m},tiers:[{tier:{type:"context",size:AW},input:Q9.input,output:Q9.output,cache:{read:Q9.cacheRead,write:Q9.cacheWrite5m}}]}}function L6($){let J=$["claude-opus-4-8"]??$["claude-opus-4-5"]??Object.values($)[0];if(!J)return $;return{...$,...Object.fromEntries(Object.values(SW).map((Y)=>{let X=sW(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:O6(),limit:{...J.limit??{},context:CW,output:PW},capabilities:{...J.capabilities??{},reasoning:!0,attachment:!0,toolcall:!0},release_date:qW,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:xW,output:fW},capabilities:{...J.capabilities??{},reasoning:!0,attachment:!0,toolcall:!0},release_date:kW,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:RW,output:MW},capabilities:{...J.capabilities??{},reasoning:!0,attachment:!0,toolcall:!0},release_date:IW,variants:b9()}}}}var N6=["low","medium","high","xhigh","max"];function b9($=N6){return Object.fromEntries($.map((J)=>[J,{thinking:{type:"adaptive",display:"summarized"},effort:J}]))}function D6($){return Object.fromEntries(Object.entries($).map(([J,Y])=>{let X=Y.api?.id??Y.id??J,z=k2(X)?.efforts.variants;return[J,z?{...Y,variants:b9(z)}:Y]}))}function H6($){return Object.fromEntries(Object.entries($).map(([J,Y])=>[J,{...Y,cost:G6}]))}var U6=2000,FZ="@cortexkit/opencode-anthropic-auth",P4;function Q6(){if(P4!==void 0)return P4;P4=FZ;try{let $=JSON.parse(_W(LW(OW(NW(import.meta.url)),"..","package.json"),"utf8"));if($.name===FZ&&typeof $.version==="string"&&$.version.trim())P4=`${FZ}@${$.version.trim()}`}catch{}return P4}function B6(){return["The Claude menu opens in OpenCode's terminal window when the plugin's TUI part is loaded.",`In the terminal, add "${Q6()}" to the plugin list in tui.json (or rerun setup), then restart OpenCode.`,"In OpenCode Desktop, use the text menu below."].join(`
23
+ `)}function F6(){return process.env.OPENCODE_CLIENT==="desktop"}function O8(){return process.env.OPENCODE_ANTHROPIC_AUTH_CLAUSTRUM_CONNECTION_FILE?.trim()||process.env.CLAUSTRUM_SUBC_CONNECTION?.trim()||void 0}var w6=async($,J={})=>{let Y={setTimeout:globalThis.setTimeout,clearTimeout:globalThis.clearTimeout,setInterval:globalThis.setInterval,clearInterval:globalThis.clearInterval,...J},X=J.authorize??M7;J6();let{client:z}=$,j=globalThis.fetch,K=oW(),D=eW($2(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 v2(K),T=HW({paths:a,host:"opencode",local:J.nativeLocal,vault:J.claustrumScopedConnect?{connect:J.claustrumScopedConnect}:void 0}),o=T.quotaObservations,R0=null;function W0(Z){return L2(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||B1(_.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:B1(O.entry.quota,_,O.entry.checkedAt)};let N=O.entry.quota.source!=="headers"&&w1(V.quota)>w1(O.entry.quota)?V.quota:o7(V.quota,O.entry.quota);return{...O.entry,quota:N,refreshAfter:B1(N,_,w1(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),_=w1(Z.quota);return g(Z.id,V,Z.accountIdentity,Z.quota?{quota:Z.quota,checkedAt:_,refreshAfter:B1(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)=>T6(G,Z,W)),I()}let A1=async(Z)=>{return await T.updateSettings((W)=>({...W,claudeCache:{...S6(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(E6),I()},P1=(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=bW("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(),await 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 rW(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,p7(r))};Q(L,N.policyStorage);let H;if(L.source==="vault"){let m=await T.authorizeVault(Z,W).catch((r)=>{if(W?.throwIfAborted(),r instanceof _2&&["not-active","route-declined","route-unavailable"].includes(r.code))throw new V$(L,r.code);throw r});H={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);H={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!==H.accountIdentity)throw Error("Native OAuth account changed before dispatch");if(H.localSubject&&(!b.binding||b.binding.storageId!==H.localSubject.binding.storageId||b.binding.rowId!==H.localSubject.binding.rowId||b.binding.credentialEpoch!==H.localSubject.binding.credentialEpoch||b.binding.identity!==H.localSubject.binding.identity))throw Error("Native local account binding changed before dispatch");if(H.scopedAttempt&&b.credentialId!==H.scopedAttempt.credentialId)throw Error("Native vault credential binding changed before dispatch");return Q(b,S.policyStorage,H.scopedAttempt),H}async function q1(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=X7(process.env.OPENCODE_ANTHROPIC_AUTH_FALLBACK_MODE),Z1=new vJ,u9=new gJ,o1=new fJ,R1=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 h2({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 R2({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:m7(_,V),retryAfter:Math.max(1,Math.ceil((_.nextRetryAt-V)/1000))};let O=Z.quota?.mainQuota,N=w1(O);if(O?.accountIdentity!==W||O.source==="headers"&&!G||!s1(O)||N<=0||N>V||B1(O,Z,N)<=V)return;let L=["five_hour","seven_day"].flatMap((Q)=>{let H=O[Q],S=H?.resetsAt?Date.parse(H.resetsAt):Number.NaN;return H&&H.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+p7(Z))-V)/1000))}}async function EZ(Z,W,G){if(zJ===Z&&D$===W)return;let V=x1!==void 0&&G!==void 0&&x1!==G;zJ=Z,D$=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,H=await T.read(),S=H.policyStorage,b=H.accounts.find((G1)=>G1.id==="main")?.accountIdentity,m=$1(G??b),r=H.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||D$!==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(x1=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 q2: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 E8(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 E8(O,N.hydration,_,N.profile);return O}function S8(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 H=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(H),H.then(()=>Y1.delete(H))},(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 C8(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)&&D2(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),H=p$.get(Q);if(H&&L.accountIdentity===void 0&&(H.lineage===void 0||H.lineage!==o9(L)))H=void 0;if(!H&&L.accountIdentity!==void 0){let S=p$.get(k4(L.id));if(S&&r9(S,L))H=S,_.set(L.id,S)}if(H?.failed)continue;if(!H&&M9(SZ.get(Q),G))continue;if(!H||!H.profile&&(H.deadline?.aborted||H.settled)||H.profile&&!M9(H.profile,G)){if(Z?.aborted||X1.signal.aborted)continue;H=S8(L,Q,Z),p$.set(Q,H)}if(L.accountIdentity===void 0)_.set(L.id,H);V.push(C8(H,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),H=_.get(L.id);if(H&&L.accountIdentity!==void 0&&!p$.has(Q)&&r9(H,L))p$.set(Q,H);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 A8(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 P8(Z,W,G){let _=(await T.read()).accounts.find((H)=>H.id===Z.accountId);if(!_||!Z.anthropicAccountUuid||_.accountIdentity!==Z.anthropicAccountUuid)return null;let O={...o7(_.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((H)=>H.id===Z.accountId);if(!Q?.quota||Q.accountIdentity!==Z.anthropicAccountUuid||Q.source!==_.source)return null;if(Z.localSubject&&Q.binding?.credentialEpoch!==Z.localSubject.binding.credentialEpoch)return null;if(Z.scopedAttempt&&Q.credentialId!==Z.scopedAttempt.credentialId)return null;return{...W,quota:Q.quota,refreshAfter:B1(Q.quota,L.policyStorage,W.checkedAt)}}function q8(Z){h.warn("quota","failed to persist harvested response quota",{error:Z instanceof Error?Z.message:String(Z)})}function R8(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 M8(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 I8(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=M8(O),L=hW({storage:G,mainOAuthConfigured:_}),Q=W.checkedAt,H={five_hour:W.quota.five_hour,seven_day:W.quota.seven_day,bindingWindow:W.quota.bindingWindow,fallbackAdvised:W.quota.fallbackAdvised,scoped:W.quota.scoped,extraUsage:W.quota.extraUsage,fieldSources:W.quota.fieldSources},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:H,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:H,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:H,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:H,accountKey:S};await n9.publish(b)}function x8(Z){h.debug("quota","failed to publish quota header feed",{error:Z instanceof Error?Z.message:String(Z)})}function MZ(Z,W){try{if(!j2(Z)){h.trace("quota","skipped non-quota response headers",{account:W.accountId});return}let G=N2(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 H=Z.get(Q==="five_hour"?"anthropic-ratelimit-unified-5h-utilization":"anthropic-ratelimit-unified-7d-utilization");return G[Q]!==void 0&&H!==null&&Number.isFinite(Number(H))&&Number(H)>=1})}:void 0;if(L){if(o.delete(W.accountId),o.size>=z6){let Q=o.keys().next().value;if(Q!==void 0)o.delete(Q)}o.set(W.accountId,L)}(async()=>{let Q=!1;try{let H;try{H=await P8(W,{quota:G,checkedAt:O,refreshAfter:O},_)}catch(b){q8(b);return}if(H===null)return;if(W.accountId==="main"&&f.getMainQuotaIdentityGeneration()!==V?.generation)return;let S=H;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});I1().catch(()=>{}),await I8(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(x8),h.trace("quota","response quota awaiting publication",{account:W.accountId})}catch(G){R8(G)}}let IZ=Promise.resolve();function L1(Z=!1,W=!1,G,V){let _=IZ.then(()=>f8(Z,W,G,V));return IZ=_.then(()=>{},()=>{}),_}async function f8(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&&B1(N.quota,_.policyStorage,w1(N.quota))>Date.now()&&(!G||S1(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&&F1(L))throw L;O.add(N.id),c3(N.id,W,L)}}return I1().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(F1(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(E1(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 k8(){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 I1()}let e9=t9&&b0(s0)?T.vault.watch({intervalMs:J.scopedRosterPollIntervalMs??2000,shouldRefresh:()=>process.env.OPENCODE_AUTH_CONTENT===void 0,onRefresh:k8,setInterval:Y.setInterval,clearInterval:Y.clearInterval}):void 0,v8=t9?(e9?e9.ready.then(()=>a9()):a9()).catch(()=>{}):Promise.resolve(),$J=t9?Y.setInterval(()=>{a9().catch(()=>{})},dW+j8(z8)):null;$J?.unref?.();let h8=(Z,W)=>{let G=PJ({id:Z,role:"fallback"},W);return G==="na"?"off":G},JJ=new FJ,b8=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 vW(W.join(","))}}function fZ(Z){try{if(!Z.request)return;let W=j3({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",_3(W.record));let G=b8.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 g8(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 y8(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 m8(){if(b4){let Z=await b4();return Y2("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 I2("opencode",D8())}async function hZ(){if(await T1("opencode")!=="claustrum")throw Error("This host is not connected to the credential vault; run setup to connect it first");if(await m8()!=="absent")throw Error("OpenCode already holds an Anthropic login; remove it before choosing the vault login")}let c8={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 EW({directory:process.env.OPENCODE_ANTHROPIC_AUTH_CACHEKEEP_REGISTRY_DIR||aW("opencode")}),y4=[],M1=new Map,e1=new TW({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=M1.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),H=Q&&typeof Q==="object"&&!Array.isArray(Q)?Q.diagnostics:void 0,S=H&&typeof H==="object"&&!Array.isArray(H)&&H.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})=>{M1.delete(Z.id)},retryOnUnauthorized:async({target:Z,headers:W,attempt:G})=>{let V=M1.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}`),M1.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;M1.set(G.id,O);try{let Q=JSON.parse(W.bodyText),H=$1(O.accountIdentity);if(Z.delete("anthropic-beta"),m1(Z,N,{body:Q,identity:H}),Z.set("anthropic-beta",n7(Z.get("anthropic-beta"),[wW])),Q.speed==="fast")H9(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}`),M1.set(G.id,L),Z}});async function p8(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 l8(){let Z=await p8();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(D$,Z.accessToken);return{quota:G.quota,fresh:G.fetched}}async function u8(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 d8(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(u2,{baseURL:""}),Q=L.url?.toString()??L.input.toString();W9(Q);let H=await P0(Z,void 0,void 0,I7);if(G=H.accessToken,_=H.scopedAttempt,V=I7,!G)return{ok:!1,error:"prime: no access token available"};let S=FW(),b=$1(H.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!==H.accountIdentity||Boolean(w0.scopedAttempt)!==Boolean(H.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===H.accountIdentity&&!h0.scopedAttempt){if(N?.dispose(),await N0.body?.cancel().catch(()=>{}),w0=await P0(Z,_0,void 0,V),w0.scopedAttempt||w0.accountIdentity!==H.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 H$=(await N0.json().catch(()=>null))?.usage,U$=H$&&(Number.isFinite(H$.input_tokens)||Number.isFinite(H$.output_tokens))?{inputTokens:Number.isFinite(H$.input_tokens)?H$.input_tokens:void 0,outputTokens:Number.isFinite(H$.output_tokens)?H$.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"),H=Q.redactError(L);return Q.dispose(),{ok:!1,...L instanceof V$&&L.tokenRefreshFailed&&{reason:"token-refresh"},ms:Math.round(performance.now()-W),error:H instanceof Error?H.message:String(H)}}}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 l8();return u8(Z)},sendPrime:d8,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=m3(K,()=>new U2(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)y2(KZ(s0)??"info");let GJ=null,i8=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"},n8=H8(),S$=new Map;function c4(Z,W){if(f.updateStorage(Z),f.seedMainFromStorage(Z,D$),!W.skipFallbackQuotaSeed)f.seedFallbacksFromAccounts((Z?.accounts??[]).filter(B0));let G=f.getMain(D$),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:_?E1(_,$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),H=h8(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&&E1(L.lastRefreshError,L.id,Date.now(),a$(L.refresh))&&r$(L.lastRefreshError),vaultReauth:H==="on-vault-reauth",vaultServed:Q,custodyState:H,enabled:L.enabled!==!1,stateLine:S,quotaDated:Boolean(S)}}),activeId:W.activeId,route:W.route,relay:cW(Z?.relay),fastMode:OZ(),cacheKeep:{enabled:u7(Z),window:l7(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 Q8(O,n8,{routingAuthoritative:V,resolvePreservedRouting:V?void 0:async(N)=>{let L=await s2(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 I1(){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 o8(Z,W,G){if(!W)return;if(Z?.quota?.enabled!==!0)return;let V=G?.quotaKey??D$;if(f.getMain(V))return;if(VJ)return;VJ=!0,f.refreshMain(V,W,G?.generation).then(()=>I1()).catch(()=>{}).finally(()=>{VJ=!1})}let W1=null,p4,$4,D$,J4,x1,zJ,cZ=0,l4=new Map,VJ=!1,D1=null,u4=0;function pZ(Z){let W=Z?.refresh?.refreshBeforeExpiryMinutes??i2;return Math.max(F8,W)*60000}function r8(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,D$),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(...BW(G.policyStorage,W));let O=Math.max(0,...G.accounts.map((N)=>w1(N.quota)));return QW({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),s8(Z,W)};if(W===0)setImmediate(G);else setTimeout(G,e2*W)}function _J(Z,W){if(W+1<t2)jJ(Z,W+1)}async function s8(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 a8(Z)}function a8(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 _8($,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 t8(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,j6(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,_6(Z.requestedModel))}function e8(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=B2(Z);if(W.type==="enable"||W.type==="disable"){let O=W.type==="enable",N=await A1(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=F2(Z),G=await I(K);if(W.type==="window")G=await P1(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=c7(G),_=await m4(),O=_.length?Math.min(..._.map((N)=>N.nextPrewarmAt)):void 0;return lW({argumentsText:Z,enabled:X2(G),always:l7(G),window:V,hybridActive:u7(G),trackedSessions:_.length,trackedSessionDetails:_,nextPrewarmAt:O})}async function nZ(Z){let W=w2(Z);if(W.type==="enable"||W.type==="disable"){let _=W.type==="enable";return await j1(_),UZ(_),h.info("commands","dump changed",{enabled:_}),f7({argumentsText:Z,enabled:_,settingsPath:await T.getSettingsPath()})}let G=await I(K),V=_Z(G);return UZ(V),f7({argumentsText:Z,enabled:V})}async function oZ(Z){let W=T2(Z);if(W.type==="enable"||W.type==="disable"){let _=W.type==="enable";return await y9(_),QZ(_),h.info("commands","fast mode changed",{enabled:_}),k7({argumentsText:Z,enabled:_,settingsPath:await T.getSettingsPath()})}let G=await I(K),V=LZ(G);return QZ(V),k7({argumentsText:Z,enabled:V})}async function rZ(Z,W){if(E2(Z).type==="fire"){if(!W)return`## Claude Start Failed
24
+
25
+ - OpenCode did not provide a session ID.`;try{return await x3($.client,W),h7({argumentsText:Z}).text}catch(V){return`## Claude Start Failed
26
+
27
+ - ${V instanceof Error?V.message:String(V)}`}}return h7({argumentsText:Z}).text}async function LJ(Z,W){let G=A2(Z);if(G.type==="mode")return await c9(G.mode,K),h.info("commands","routing mode changed",{mode:G.mode}),g7({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 g7({argumentsText:Z,mode:t$(V)})}async function sZ(Z){let W=S2(Z);if(W.type==="level")return await m9(W.level),b7({argumentsText:Z,level:W.level,settingsPath:await T.getSettingsPath()});let G=await I(K),V=KZ(G)??"info";return b7({argumentsText:Z,level:V,settingsPath:await T.getSettingsPath()})}async function aZ(Z){let W=C2(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 uW({argumentsText:Z,enabled:V,accounts:N1.stats(_)}).text}async function X4(Z,W,G){let V=G??Q2(Z);if(V.type==="add-apikey"){if(!V.apiKey)return{text:"API key is required",accounts:y$(await I(K)??n$())};let H=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:H||$Z(),label:H||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 T1("opencode",process.env)!=="local")throw Error("Disconnect from the vault first.");let H=await X("max"),S={state:H.state,verifier:H.verifier,redirectUri:H.redirectUri,createdAt:Date.now()};return t(W??"default",S),{text:`Open this URL in your browser:
28
+ ${H.url}`,knobs:{oauthUrl:H.url},accounts:y$(await I(K)??n$())}}if(V.type==="add-oauth-finish"){let H=W??"default",S=i(H);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(H)}}let _=await I(K);if(V.type==="status"&&_){let H;if(W1)try{let S=await W1();if(S.type==="oauth")H=J4??S.access}catch{}_=await A8(_,H,AbortSignal.timeout(3000),x1)}let O=V.type==="status"?await tZ(_):void 0,N=await pW({argumentsText:Z,storage:_??{version:1,accounts:[]},path:K,claustrum:V.type==="status"&&!O?await x7(O8()):void 0,statusProjection:O,transition:async(H)=>({text:H==="claustrum"?"Run `npx @cortexkit/opencode-anthropic-auth setup` to enroll and activate scoped custody safely while OpenCode is stopped.":"Local exit requires replacing the OpenCode auth tombstone with a verified local OAuth login while OpenCode is stopped. Do not change custody mode alone."}),resetEnrollment:async()=>{switch(await f2(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 q1("main"),f.clearMainBackoff(),h.info("commands","native main refresh and quota backoff cleared");let H=await I(K);if(W1)try{let S=await W1();C$(H,{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),H=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:H,custodyState:S,vaultServed:S==="on-vault-served",vaultReauth:S==="on-vault-reauth"}}),_=await x7(O8()),O=S4(G),N=O==="claustrum"?await s7(P9("opencode"),JZ):void 0;return{accounts:V,claustrumDetection:_.status,custodyMode:O,...N&&{claustrumEnrollment:N}}}async function $Y(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(),H={accounts:Q.accounts,claustrumDetection:Q.claustrumDetection,custodyMode:Q.custodyMode,custodyModeKnown:!0,...Q.claustrumEnrollment&&{enrollmentStatus:y7(Q.claustrumEnrollment,Q.accounts.some((S)=>S.role==="main"&&S.vaultServed)).join(`
29
+ `)}};if("knobs"in L&&L.knobs)Object.assign(H,L.knobs);return{command:Z,text:p4?`${L.text}
30
+
31
+ - Custody startup mismatch: ${p4}`:L.text,knobs:H}}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:c7(Q)}}}if(Z==="claude-prime"){let L=await aZ(W),Q=await I(K),H=R9(Q);return{command:Z,text:L,knobs:{enabled:H,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=v7({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 JY(Z){return{text:"Open /claude to manage native Claude settings.",knobs:{}}}let ZY=async(Z,W)=>{if(W.signal?.aborted)throw W.signal.reason??Error("Menu action aborted");let G;switch(Z.action){case"enable":case"disable":await 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 q1("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 H=v7({argumentsText:Z.action==="killswitch-on"?"on":"off",config:N,accountIds:_});return{...O,killswitch:H.updatedConfig??N}}let L={...N.accounts},Q={...N,enabled:!0,accounts:L};for(let H of Z.values.entries){let S={five_hour:H.fh,seven_day:H.sd,...H.scoped===void 0?{}:{scoped:H.scoped}};if(H.account==="main"||H.account==="all")Q.main=S;if(H.account==="all")for(let b of _)L[b]=S;else if(H.account!=="main")L[H.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
+ `)}},YY=async(Z,W)=>{if(Z==="account"){let _=await h4(AbortSignal.timeout(3000)),O=_.mode==="claustrum"?await s7(P9("opencode"),JZ):void 0;return[`Custody mode: ${_.mode}`,...O?y7(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 $Y({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:k3({host:"opencode",dispatch:ZY,readStatus:YY,readAccounts:()=>T.read(),readSeparateHostLoginNotice:async()=>{if(await T1("opencode")!=="local")return!1;let V=await T.read(),_=r7(await a7(a));return V.mode==="local"&&(_==="committed"||_==="retired")&&t7(V)&&g4(await b4?.())},interactive:W})},NJ.set(Z,G);return G.command}function XY(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} ${XY(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 WY(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:H,seven_day:S}=Q;if(!H&&!S)continue;let b=L.label||"alt",r=G===L.id?"active":"idle",_0=$3(H?.resetsAt),k0=[`${b} · ${r}${_0?` (${_0})`:""}`];if(H)k0.push(d4("5h",H.usedPercent)),_=Math.max(_,H.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=N8($.directory);try{GJ=await e3(Z,()=>t3({dir:Z,drain:s3,apply:JY,applyMenu:(W)=>eZ(W.sessionId??"").apply(W)}))}catch{h.warn("rpc","native menu server unavailable")}}let J3={"experimental.chat.messages.transform":async(Z,W)=>{let G=W.messages;R1.observeMessages(G);let V=S3(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(p3(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}),R1.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")R1.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 L8)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(!X6(Z))return;W6(W.system)},provider:{id:"anthropic",async models(Z,W){let G=D6(L6(Z.models));if(W.auth?.type!=="oauth"||!K2(s0??{}))return G;return H6(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(!F6()&&!r3(Z.sessionID))G=await o3(W,Z.sessionID,{timeoutMs:J.tuiPickupTimeoutMs??U6,setTimeout:Y.setTimeout,clearTimeout:Y.clearTimeout}),V=!G;if(!G){let _=[...V?[B6(),""]:[],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 _8($,Z.sessionID,_)}Y6()},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 T1("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((H)=>{if(!X1.signal.aborted)return C$(H.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,H=!1){if(!jZ(Q,"anthropic")&&!(H&&g4(Q)))throw Error("Native OAuth requires inert OpenCode activation; run offline setup")}async function O(Q){_(await Z(),Q&&await T1("opencode")==="local")}let N=async(Q,H,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 T1("opencode");if(m==="claustrum"&&!y8(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 M2(T,H),_0=m==="claustrum"?"committed":r7(await a7(a)),k0=t7(r);if(_(b,m==="local"&&(_0==="committed"||_0==="retired")&&k0),m==="claustrum"&&!r.accounts.some((q0)=>q0.type==="oauth"&&y0(q0)))throw new DZ;let w0=O3(r.policyStorage);try{L3({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,H$=L0("main",W0(N0),v0?.accountIdentity,r.policyStorage),U$=Boolean(N0&&H$?.lineage===W0(N0)&&H$?.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 H?.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",H,void 0,Q,"serve",r)}catch(q0){if(q0 instanceof S0)throw q0;if(F1(q0))throw q0;if(q0 instanceof J1){h0=q0.account;let G$=J2(h0.quota,Q);if(G$!==void 0&&(!Number.isFinite(G$.checkedAt)||(G$.checkedAt??0)+q0.checkIntervalMs<=Date.now())||!HZ(h0.quota)&&!x9(h0.quota,Q))try{await T.fetchQuota("main",void 0,H),Q0=await P0("main",H,void 0,Q),h0=void 0}catch(v$){if(F1(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 H?.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(!r8(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()},d2+j8(z8)),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"),R7(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??D$),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)))},H=(await T.read().catch(()=>{return}))?.accounts.find((U)=>U.id==="main");if($4=H?.binding?.rowId??H?.accountIdentity,D$??=H?.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 a2(()=>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=gW({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=P2(mW(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 H$(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 d7(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 W8(I0);if(I0 instanceof e7)return G8(I0);throw I0}if(K$(G0,x),G0.set("anthropic-beta",n7(G0.get("anthropic-beta"),[])),O$)H9(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:$8,bodyText:w,url:$$.url?.toString()??l1($$.input),method:C1(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:C1(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){UW(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(DW);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=R1.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 _$=l3(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 d7(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:Z2(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 W8(i0);if(i0 instanceof e7)return G8(i0);throw i0}if(O0?.plan.downgraded&&J$&&v1==="hybrid"){let i0=E7(V0);O0.opusCacheAnchor=i0?{...i0,oauthAccountId:y}:void 0}let Z3=Z0();try{let i0=JSON.parse(V0);m1(l,x,{body:i0,identity:u,requestClass:_$});let V1=i0.diagnostics,Y3=V1&&typeof V1==="object"&&!Array.isArray(V1)&&V1.previous_message_id===I0?I0:void 0;if(Y3!==void 0&&l.get("anthropic-beta")?.split(",").map((zY)=>zY.trim()).includes(V4))L$={sessionId:c0??"session-unknown",previousMessageId:Y3,...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()-Z3),bodyBytes:V0.length,parsed:!0})}catch{m1(l,x,{identity:u,requestClass:_$}),k?.mark("set_oauth_headers_body_parse",{route:p,ms:A0(Z0()-Z3),bodyBytes:V0.length,parsed:!1})}if(U0)H9(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||W2(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 g2({url:R.url?.toString()??l1(R.input),body:V0,headers:l,latch:D,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:C1(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:$8,bodyText:V0,url:R.url?.toString()??l1(R.input),method:C1(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 O2&&d.code==="relay-inconsistent")return g9(d.message);throw d}let HJ=y==="main"?void 0:z$?.accounts.find((d)=>d.id===y&&B0(d)),n4=iW(HJ,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$,D0=!1,l0=M0,g0=()=>b2({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,D0)l0(U0,"relay_status_field")}}},onResponseHeaders:(d)=>{MZ(d,C0),R1.commit(h$,QJ(d))},onDumpCreated:(d)=>{i4=d},dumpTag:X0?"start":void 0}),H0=await g0();if(!Q$&&q$&&H0.status===401&&typeof V0==="string"&&(C1(U,B)??"").toUpperCase()==="POST"&&!B?.signal?.aborted){let d;try{d=await O1(q$,"model-relay",B?.signal??void 0)}catch{}if(d)await H0.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,H0=await g0()}if(Q$&&a0&&H0.status===401&&typeof V0==="string"&&(C1(U,B)??"").toUpperCase()==="POST"&&!B?.signal?.aborted){let d;try{d=await O1(a0,"model",B?.signal??void 0)}catch{}if(d)await H0.body?.cancel().catch(()=>{}),h.info("claustrum","retrying after scoped credential rotation",{accountId:y,previousVersion:a0.recordVersion,newVersion:d.recordVersion,transport:"direct"}),d0=a0,H0=await T0()}if(H0.status===401&&!A.scopedAttempt&&typeof V0==="string"&&(C1(U,B)??"").toUpperCase()==="POST"&&!B?.signal?.aborted){let d=A.accessToken,U0;try{U0=await X$(d)}catch(J$){_1.set(H0,J$)}if(U0&&U0.accessToken!==d)await H0.body?.cancel().catch(()=>{}),H0=Q$?await T0():await g0()}if(k?.mark("send_headers_received",{route:p,ms:A0(Z0()-o4),status:H0.status,relayConfigured:t0!=null,totalSendWithAccessMs:A0(Z0()-z0)}),Q$)MZ(H0.headers,C0),R1.commit(h$,QJ(H0.headers));if(vZ(H0,{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:H0.status,streaming:f1}),Q$&&a0&&H0.status===401)await l0(a0,"direct");if(D0=!0,!Q$&&q$)await l0(q$,"relay_status_field");if(H0.status===401)await X8(H0,B?.signal);if(H0.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 H0}async function q0(U,B){if(!U)return!1;try{return await f.refreshMain(B?.quotaKey??D$,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)&&!E1(C.lastRefreshError,C.id,Date.now(),a$(C.refresh))&&U?.quota?.failClosedOnUnknownQuota!==!0&&!HZ(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 DJ(U){let B=U.mainQuotaIdentity?.quotaKey,x=f.getMain(B),k=x?.quota;if(!S1(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(!S1(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(!S1(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&&E1(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(S1(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&&E1(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=HZ(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 H$(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 GY(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=Z6({bodyBytes:typeof G0==="string"?G0.length:void 0}),R=(A)=>{let s=l$.get(A);return q7(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)=>g8(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,V6(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,K6(C.requestedModel))}}:{},...O0?{serverSideFallbackModel:O0,...C?{onServerSideFallbackOutcome:(u)=>{if(X0)X0.serverFallback=u.fallback;t8(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);R7(s);let u=await A4(U,B);if(typeof u==="string")try{let $0=JSON.parse(u);if(x2($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,x1=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,D$),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))e8(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=i7(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()))o8(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=c2(A),u=e1.trackedOAuthRoute(p),K0=C?.cacheAccountId??(u?u.oauthAccountId??Z$:void 0),$0=!1;try{let J0=await DJ({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||!S1(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 DZ;let z$=yW({mainRefreshError:J0.storage?.refresh?.mainLastRefreshError,fallbackReauthLabels:tW(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(D0)=>{if(D0.scoped){let g0=(await P0(D0.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:${D0.id}`,J0.storage,D0.id,D0.account?.authLineageId,X0,k,D0.id===Z$?v:void 0,g0)}return U$(U,B,D0.access??"",E,`sticky:${D0.id}`,J0.storage,D0.id,D0.account?.authLineageId,X0,k,D0.id===Z$?v:void 0)},t0=async(D0,l0,g0=!0)=>{return await I0(D0.id,"sticky-balanced"),E.done("return_sticky_balanced",{status:l0.status,accountId:D0.id,created:a0?.created,migrated:a0?.migrated}),R(l0)},HJ=async(D0)=>{let l0=D0,g0=BZ(D0,J0.storage),H0=!1;if(!g0){let d=await N0(D0,E);l0=d.response,H0=d.rateLimited,g0=d.rateLimited}return{response:l0,routeFailure:g0,streamingRateLimit:H0}},n4=S1(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 HJ(await z$(T0)),o4=!1;if(!C0.routeFailure)return t0(T0,C0.response);if(C0.response.status===401){let D0=_1.get(C0.response);if(D0){let l0=await I(K),g0=T0.id,H0=T0.id===Z$?l0?.refresh?.mainLastRefreshError:l0?.accounts.find((d)=>d.id===g0&&B0(d))?.lastRefreshError;if(!r$(H0))throw D0}o4=!0}let q$=C0.response.status===403||o4;if(C0.response.status===429||C0.streamingRateLimit){let D0;try{D0=T0.id===Z$?await f.refreshMain(v?.quotaKey,T0.access??"",v?.generation):await f.refreshFallback(T0.id,T0.access??"",T0.account)}catch{D0=void 0}let l0=YZ({quota:D0,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 X8(C0.response,B?.signal);let D0=T0.id;if(J0=await DJ({storage:J0.storage,mainAccessToken:w.access,mainRefreshToken:w.refresh,mainPolicyDenied:w.modelDenied||w.credentialUnavailable,requestedModelId:A,mainQuotaIdentity:v}),J0.candidates.filter((g0)=>g0.accountId!==D0).length>0){await C0.response.body?.cancel().catch(()=>{}),a0=await d0(new Set([D0]));let g0=J0.allRoutes.find((H0)=>H0.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 H0=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(H0)return E.done("return_sticky_api_fallback",{status:H0.status}),R(H0)}}}return t0(T0,C0.response)}}catch(J0){if(E.mark("sticky_balanced_error",{error:J0 instanceof Error?J0.message:String(J0)}),$0||F1(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)}),F1(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,x1=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 DZ;throw K0}if(w.credentialFailure?.tokenRefreshFailed)throw w.credentialFailure;let A=await I(),s=A?.refresh?.mainLastRefreshError;if(s&&E1(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(nW(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";WY(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(()=>{I1().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)}),F1(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?m7(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=d3({mainQuota:P$,requestModelId:u0,storage:P}),J0=i7(P$,K0,u,$0.isScopedDriven?$0.modelId:void 0),d0=u3({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 GY(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[...jW(P9("opencode").tokenPath)?[c8]:[],{label:"Claude Pro/Max",type:"oauth",authorize:async()=>{if(await T1("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 M7("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:i8};return g3?.set(J3,{primeManager:N1,quotaManager:f,cacheKeepManager:e1,resolveMainQuotaIdentity:a1,resolveSidebarQuotaAccess:mZ,refreshSidebarQuota:I1,fallbackRefreshReady:v8,get scopedRuntime(){return p9(K,$.directory)},notificationMessageIdBeforeAssistant:T8,trackDesktopNoticeMessageId:uZ,isDesktopNoticeMessage:dZ}),J3},sG=w6;
43
+ export{G4 as a,QJ as b,BJ as c,h1 as d,E0 as e,I3 as f,X9 as g,W9 as h,p3 as i,Z7 as j,X7 as k,W7 as l,m1 as m,F4 as n,U9 as o,q7 as p,sG as q};
@@ -0,0 +1,2 @@
1
+ import{randomUUID as P}from"node:crypto";import{mkdir as g,readFile as y,rename as S,rm as N,rmdir as w,stat as R,unlink as m,writeFile as I}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 O,quotaDisplayProjection as b,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:[],route:"main",relay:null,fastMode:!1,lastUpdated:0};function Q(J){return J!==null&&typeof J==="object"&&!Array.isArray(J)}function z(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(z(J.nextDueAt))Z.nextDueAt=J.nextDueAt;if(J.lastPrimedAt===null)Z.lastPrimedAt=null;else if(z(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(z(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,...z(J.checkedAt)&&{checkedAt:J.checkedAt}}}function D(J){if(!Q(J))return null;let Z={};if(z(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 G=q(x);if(!G)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 $=typeof x.modelId==="string"&&x.modelId.trim()?x.modelId.trim():void 0;return{...G,id:x.id.trim(),title:x.title.trim(),...$&&{modelId:$},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 k(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(z($.quotaBackoffUntil))Z.quotaBackoffUntil=$.quotaBackoffUntil;if(typeof $.refreshBackedOff==="boolean")Z.refreshBackedOff=$.refreshBackedOff;if(z($.refreshBackoffUntil))Z.refreshBackoffUntil=$.refreshBackoffUntil}let V=Array.isArray(J.fallbacks)?J.fallbacks.filter(Q).filter(($)=>typeof $.id==="string").map(($)=>({id:$.id,...typeof $.label==="string"&&{label:$.label},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},...typeof $.tierLabel==="string"&&$.tierLabel.trim()&&{tierLabel:$.tierLabel.trim()}})):[],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,...typeof $.window==="string"&&{window:$.window},...z($.trackedSessions)&&{trackedSessions:$.trackedSessions}}}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,...typeof $.requestedModelId==="string"&&{requestedModelId:$.requestedModelId},...typeof $.targetModelId==="string"&&{targetModelId:$.targetModelId}}]}):[],G=a(J.prime);return{main:Z,fallbacks:V,...typeof J.activeId==="string"&&{activeId:J.activeId},route:typeof J.route==="string"?J.route:H.route,relay:X,fastMode:typeof J.fastMode==="boolean"?J.fastMode:H.fastMode,cacheKeep:Y,...G&&{prime:G},...x.length>0&&{fableRecoveries:x},lastUpdated:z(J.lastUpdated)?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 p=null;function WJ(J){p=J}function UJ(){return p}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,G=Date.now()+X;while(!0){try{await g(Z);let K=P(),j=M(Z,K);return await I(j,"",{encoding:"utf8",mode:384,flag:"wx"}),await V?.onLockAcquired?.(Z),{ownsLock:async()=>{try{return await R(j),!0}catch{return!1}},release:async()=>{try{await m(j)}catch{return}await V?.beforeReleaseDirectoryRemoval?.(Z),await w(Z).catch(()=>{})}}}catch(K){if(K.code!=="EEXIST")return O.trace("sidebar","state lock unavailable; write skipped",{stateFile:J,error:K instanceof Error?K.message:String(K)}),null}try{let K=await R(Z);if(Date.now()-K.mtimeMs>e){await V?.afterStaleLockStat?.(Z);let j=`${Z}.evict-${process.pid}-${P()}`;try{await S(Z,j)}catch(C){if(C.code==="ENOENT")continue;throw C}await V?.onStaleLockClaimed?.(Z),await N(j,{recursive:!0,force:!0}).catch(()=>{});continue}}catch(K){if(K.code==="ENOENT")continue;return O.trace("sidebar","state lock inspection failed; write skipped",{stateFile:J,error:K instanceof Error?K.message:String(K)}),null}let $=G-Date.now();if($<=0)return O.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,$))}}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 I(Y,JSON.stringify(Z),{encoding:"utf8",mode:384});try{if(!await V())return O.trace("sidebar","state lock lost before rename; write aborted",{stateFile:J}),await N(Y,{force:!0}).catch(()=>{}),"lock-lost-before-rename";if(await X?.beforeRename?.(J,Y),!await V())return O.trace("sidebar","state lock lost before rename; write aborted",{stateFile:J}),await N(Y,{force:!0}).catch(()=>{}),"lock-lost-before-rename";if(await S(Y,J),await U(J)?.afterRename?.(J),!await V())return"lock-lost-after-rename";return"written"}catch(x){throw await N(Y,{force:!0}).catch(()=>{}),x}}async function T(J=f()){try{let Z=await y(J,"utf8");return k(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)O.warn("sidebar","post-rename repair lock unavailable; write skipped",{stateFile:Z});return}let G=J,$;try{if(V.routingAuthoritative===!1){let B=await T(Z),K=await V.resolvePreservedRouting?.(B);if(K){let j=K.state??J;G={...j,activeId:K.activeId,route:K.route,lastUpdated:Math.max(j.lastUpdated,B.lastUpdated)}}await U(Z)?.afterMergeRead?.(Z)}else if(Y){let B=await T(Z);G={...B,activeId:J.activeId,route:J.route,relay:J.relay,fastMode:J.fastMode,cacheKeep:J.cacheKeep,lastUpdated:Math.max(B.lastUpdated,J.lastUpdated)}}G=k(G),$=await VJ(Z,G,x.ownsLock)}finally{await x.release()}if($==="lock-lost-after-rename"){if(Y){O.warn("sidebar","post-rename repair lost lock; write skipped",{stateFile:Z});return}O.warn("sidebar","state lock lost after rename; repairing write",{stateFile:Z});continue}if($==="lock-lost-before-rename")return;V.onRoutingResolved?.({activeId:G.activeId,route:G.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(b({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,G={barCells:X,reset:x||void 0};if(Z===void 0)return G;let $=(j)=>V+1+(j.barCells>0?j.barCells+1:0)+Bun.stringWidth(Y)+(j.reset?1+Bun.stringWidth(j.reset):0),B=Math.min(GJ,X),K=[G];for(let j=X;j>=B;j--)K.push({barCells:j});return K.find((j)=>$(j)<=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 G of Y){if(Bun.stringWidth(x+G)>Z-1)break;x+=G}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(($)=>$.usedPercent);if(!J||V==null&&X==null&&Y.length===0&&!J.extraUsage)return{fiveHourUsedPercent:V,sevenDayUsedPercent:X,scopedUsedPercents:x,text:null,stale:!1};let G=b(J,Z);return{fiveHourUsedPercent:V,sevenDayUsedPercent:X,scopedUsedPercents:x,text:c(G,{now:Z,form:"narrow"}),stale:u(G,{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 SJ(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 G=J.usedPercent,$=Math.min(Math.max(x/Z*100,0),100),B=G-$,K=Math.abs(B)<BJ?"on-pace":B>0?"deficit":"reserve",j=null;if(G>0){let C=x*100/G,_=Y+C;if(_<X)j=new Date(_).toISOString()}return{pacePercent:$,deltaPercent:B,state:K,runsOutAt:j}}
2
+ export{f as H,H as I,k 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,SJ as fa};
@@ -1,2 +1,2 @@
1
1
  import{createRequire as q}from"node:module";var j=Object.create;var{getPrototypeOf:k,defineProperty:i,getOwnPropertyNames:l}=Object;var m=Object.prototype.hasOwnProperty;function n(a){return this[a]}var o,p,r=(a,b,d)=>{var f=a!=null&&typeof a==="object";if(f){var g=b?o??=new WeakMap:p??=new WeakMap,h=g.get(a);if(h)return h}d=a!=null?j(k(a)):{};let c=b||!a||!a.__esModule?i(d,"default",{value:a,enumerable:!0}):d;for(let e of l(a))if(!m.call(c,e))i(c,e,{get:n.bind(a,e),enumerable:!0});if(f)g.set(a,c);return c};var s=(a,b)=>()=>(b||a((b={exports:{}}).exports,b),b.exports);var u=q(import.meta.url);
2
- export{r as ha,s as ia,u as ja};
2
+ export{r as ia,s as ja,u as ka};
@@ -1,2 +1,2 @@
1
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 fa,h as ga};
2
+ export{b as ga,h as ha};
@@ -1 +1 @@
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 r,T as s};
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};
@@ -0,0 +1,2 @@
1
+ import{I as P,J as k}from"./index-46e2gk3c.js";var G=(f)=>f!==null&&typeof f==="object"&&!Array.isArray(f),K=(f)=>G(f)&&typeof f.sessionId==="string"&&f.sessionId.length>0,D=(f)=>{if(!K(f)||!G(f)||f.command!=="claude"||typeof f.sectionId!=="string"||typeof f.actionId!=="string")return!1;if(f.itemId!==void 0&&typeof f.itemId!=="string")return!1;if(f.confirmed!==void 0&&typeof f.confirmed!=="boolean")return!1;if(f.values!==void 0&&(!G(f.values)||!Object.values(f.values).every((q)=>q===null||typeof q==="string"||typeof q==="boolean"||typeof q==="number"&&Number.isFinite(q))))return!1;return!0};function H(f){return{"~standard":{version:1,vendor:"cortexkit-native",validate:(q)=>f(q)?{value:q}:{issues:[{message:"Invalid native menu payload"}]}}}}var M=(f)=>G(f)&&f.command==="claude"&&G(f.menu)&&f.menu.command==="claude"&&typeof f.menu.title==="string"&&Array.isArray(f.menu.sections),L=(f)=>G(f)&&f.command==="claude"&&typeof f.ok==="boolean"&&typeof f.text==="string"&&(f.authorizationUrl===void 0||typeof f.authorizationUrl==="string")&&G(f.menu)&&Array.isArray(f.menu.sections),Z=(f)=>{if(f===null||typeof f==="string"||typeof f==="boolean")return!0;if(typeof f==="number")return Number.isFinite(f);if(Array.isArray(f))return f.every(Z);if(G(f))return Object.values(f).every(Z);return!1},N={"~standard":{version:1,vendor:"cortexkit-native",validate:(f)=>{let q=k(f);return{value:Z(q)?q:{...P}}}}},O={id:"cortexkit-anthropic-native",methods:{open:{input:H(K),output:H(M)},apply:{input:H(D),output:H(L)},sidebar:{input:H(K),output:N}},events:{opened:{schema:H((f)=>K(f)&&M(f.payload))},notification:{schema:H((f)=>K(f)&&typeof f.message==="string"&&["info","warning","error"].includes(String(f.kind)))}}};async function U(f,q,$){let z=new AbortController,X=(j)=>({sessionId:j,notify(W,Y="info"){Q.events.emit("notification",{sessionId:j,message:W,kind:Y}).catch(()=>{})}}),Q=await f.rpc.register(O,{open:(j)=>q.open(X(j.sessionId)),apply:(j)=>q.apply(j,X(j.sessionId)),sidebar:(j)=>$.readSidebar(j.sessionId)}),B;try{B=await f.command.transform((j)=>j.add({name:"claude",description:"Native Claude accounts and settings",async execute(W){let Y=await q.open(X(W.sessionID));await Q.events.emit("opened",{sessionId:W.sessionID,payload:Y})}}))}catch(j){throw await Q.dispose(),j}let w=(async()=>{try{for await(let j of f.event.subscribe({signal:z.signal}))if(j.type==="session.deleted")$.forgetSession(j.data.sessionID)}catch{}})(),F=!1;return{async dispose(){if(F)return;F=!0,z.abort(),await Promise.all([Q.dispose(),B.dispose(),w])}}}
2
+ export{O as u,U as v};