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