@cortexkit/opencode-anthropic-auth 2.0.2 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -845
- package/dist/cli-failure.d.ts +38 -7
- package/dist/cli.js +50 -102
- package/dist/custody-mode.d.ts +1 -0
- package/dist/fable-fallback.d.ts +6 -2
- package/dist/index-0kxy8k2c.js +2 -0
- package/dist/index-1nwcnxp8.js +42 -0
- package/dist/index-53nnxq39.js +2 -0
- package/dist/{index-2arfb1y3.js → index-6chd6jnr.js} +1 -1
- package/dist/{index-1tbpt45x.js → index-ah5s0bew.js} +1 -1
- package/dist/index-b1dvkp15.js +2 -0
- package/dist/{index-mge0rw54.js → index-f2ne65w4.js} +1 -1
- package/dist/{index-rqync0pc.js → index-hazrk5c3.js} +1 -1
- package/dist/{index-1jkyhgyr.js → index-jexctf5w.js} +1 -1
- package/dist/index.js +1 -1
- package/dist/quota-preflight.d.ts +1 -0
- package/dist/request-class.d.ts +10 -0
- package/dist/rpc/port-file.js +1 -1
- package/dist/rpc/protocol.js +1 -1
- package/dist/rpc/rpc-client.js +1 -1
- package/dist/rpc/rpc-dir.js +1 -1
- package/dist/setup/command.d.ts +5 -14
- package/dist/setup/native-activation.d.ts +21 -8
- package/dist/setup/native-enrollment.d.ts +21 -0
- package/dist/setup/native-local.d.ts +31 -1
- package/dist/setup/native-login.d.ts +12 -1
- package/dist/setup/process-fence.d.ts +0 -6
- package/dist/setup/types.d.ts +9 -0
- package/dist/sidebar-state.d.ts +20 -2
- package/dist/sidebar-state.js +1 -1
- package/dist/transform.d.ts +2 -8
- package/dist/tui-preferences.js +1 -1
- package/dist/tui.d.ts +0 -2
- package/dist/v2/activation.d.ts +2 -0
- package/dist/v2/adapter.d.ts +11 -1
- package/dist/v2/cachekeep.d.ts +19 -0
- package/dist/v2/menu.d.ts +2 -1
- package/dist/v2/server.js +4 -4
- package/dist/v2/setup.d.ts +2 -0
- package/dist/v2/source.d.ts +1 -0
- package/dist/v2/tui.js +1 -1
- package/package.json +10 -6
- package/src/sidebar-state.ts +105 -30
- package/src/tui-compiled/sidebar-state.ts +105 -30
- package/src/tui-compiled/tui.tsx +395 -241
- package/src/tui.tsx +199 -58
- package/dist/index-227rsmfv.js +0 -42
- package/dist/index-74r84r5f.js +0 -1
- package/dist/index-b3mxpp4w.js +0 -2
- package/dist/index-fn0zqnnw.js +0 -3
- package/dist/index-j0wsgy54.js +0 -449
- package/dist/index-jc8p0tkv.js +0 -2
- package/dist/setup/activation.d.ts +0 -7
- package/dist/setup/command.test.d.ts +0 -1
- package/dist/setup/detect.d.ts +0 -8
- package/dist/setup/host-executable.d.ts +0 -3
- package/dist/setup/jsonc.d.ts +0 -9
- package/dist/setup/opencode-config.d.ts +0 -18
- package/dist/setup/pi.d.ts +0 -18
package/dist/index-227rsmfv.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import{p as c5}from"./index-2arfb1y3.js";import{r as l5}from"./index-rqync0pc.js";import{y as u5}from"./index-b3mxpp4w.js";import{F as d5,K as $J,M as i5,N as n5}from"./index-jc8p0tkv.js";import{$a as NZ,$b as l8,$c as m7,$d as M5,Aa as S8,Ab as q$,Ac as V1,Ad as B5,Ba as v$,Bb as i9,Bc as e8,Ca as u1,Cb as f8,Cc as v7,Da as OZ,Db as HZ,Dc as h7,Ea as C$,Eb as k4,Ec as b4,Ed as w5,Fa as R4,Fb as n9,Fc as $5,Ga as d1,Gb as $Z,Gc as J5,Ha as m9,Hb as R9,Hc as Z5,Hd as F5,Ia as p9,Ib as k8,Ic as g4,Id as T5,Ja as C8,Jb as I9,Jc as b7,Jd as S5,Ka as I4,Kc as M9,Kd as C5,La as A8,Lb as v4,Lc as y4,Ld as $7,Ma as h$,Mb as v8,Mc as W5,Md as m3,Na as z1,Nb as h8,Nc as X5,Nd as A5,Oa as E8,Ob as DZ,Oc as Y5,Od as e9,Pa as P8,Pb as UZ,Pc as G5,Pd as E5,Qa as _Z,Qb as b8,Qc as m4,Ra as LZ,Rb as QZ,Rc as p4,Sa as c9,Sb as g8,Sc as g7,Sd as p3,Ta as B9,Tb as y8,Tc as x9,Td as P5,Ua as M4,Ub as m8,Uc as y7,Va as x4,Vb as p8,Vc as x$,Wa as S1,Wb as r9,Wc as c4,Wd as q5,Xa as l9,Xc as V5,Xd as R5,Ya as b$,Yb as h4,Yc as K5,Yd as u3,Za as i3,Zb as BZ,Zc as z5,Zd as I5,_a as N$,_b as c8,_c as l4,_d as u4,ab as u9,ac as o9,ad as g1,ae as x5,bb as j1,bc as r1,bd as j5,be as f5,ca as zZ,cb as q8,cc as u8,cd as p7,ce as k5,da as b9,db as i1,dc as wZ,dd as c7,de as v5,ea as v1,eb as n1,ec as P$,ed as mJ,ee as h5,fa as q9,fb as f4,fc as d8,fd as l7,fe as b5,ga as eJ,gb as R8,gc as FZ,ha as w7,hb as d9,hc as s9,hd as f9,he as g5,ia as T4,ib as MJ,ic as a9,id as g$,ja as S4,jb as _3,jc as i8,je as C4,ka as F7,kb as A7,kc as TZ,kd as O5,ke as u7,la as p1,lb as I8,lc as SZ,ld as _5,le as y$,ma as w8,mb as E7,mc as n8,md as L5,me as y5,na as T7,nb as P7,nc as CZ,nd as K1,ne as EZ,oa as S7,ob as q7,oc as B4,od as N5,oe as m5,pa as C7,pb as kJ,pc as iJ,pd as H5,pe as PZ,qa as jZ,qb as M8,qc as AZ,qd as O1,qe as d7,ra as g9,rc as f3,re as p5,sb as R7,sc as f7,sd as r0,se as i7,tb as I7,tc as r8,td as D5,te as n7,ua as O9,ub as M7,uc as o8,ud as C1,va as D0,vb as x7,vc as s8,vd as U5,wa as T1,wb as x8,wc as a8,wd as t9,xa as y9,xc as t8,ya as F8,yc as k7,yd as H3,za as T8,zb as k,zc as w1,zd as Q5}from"./index-j0wsgy54.js";import{Re as J7}from"./index-1tbpt45x.js";import{randomUUID as VZ}from"node:crypto";import{existsSync as xY}from"node:fs";import{randomUUID as O3}from"node:crypto";var O4="x-cortexkit-billing-lineage",yW=4096,mW=4096,pW=1024,L3=new Set(["title","summary","compaction"]),cW="[lane start] — automated cache warm; no response needed.";function lW($){let J=$.info?.sessionID??$.info?.sessionId;return typeof J==="string"&&J.length>0?J:void 0}function uW($){if($.info?.synthetic===!0||$.info?.ignored===!0||typeof $.info?.agent==="string"&&L3.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===cW)return!0}return!1}function Q1($,J){while($.size>J){let W=$.keys().next().value;if(W===void 0)return;$.delete(W)}}function xJ($){let J=$.get("request-id")??$.get("x-request-id");return J&&MJ(J)?J:void 0}class fJ{#$;#O;#z;#_;#X;#J=new Map;#W=new Map;#Z=new Map;#Y=new Map;#G=new Map;#V=new Map;#K=new Map;constructor($={}){this.#$=$.createPromptId??O3,this.#O=$.createRequestToken??O3,this.#z=$.maxPrompts??yW,this.#_=$.maxRequests??mW,this.#X=$.maxSessions??pW}observeMessages($){let J;for(let N=$.length-1;N>=0;N-=1)if($[N]?.info?.role==="user"){J=$[N];break}if(!J)return;let W=lW(J),X=J.info?.id;if(!W||typeof X!=="string"||X.length===0)return;let V=this.#j(W,X);if(uW(J)){this.#W.delete(V),this.#W.set(V,!0),Q1(this.#W,this.#z),this.#J.delete(V);return}this.#W.delete(V);let j=this.#J.get(V);if(j){this.#J.delete(V),this.#J.set(V,j);return}let K=this.#$();if(!_3(K))return;this.#J.set(V,K),Q1(this.#J,this.#z)}markHeaders($){let J=this.#j($.sessionId,$.messageId);if(L3.has($.agent??"")||this.#W.has(J))return!1;let W=this.#J.get(J);if(!W)return!1;let X=this.#O();if(!X||/[\r\n]/.test(X))return!1;let V={sessionId:$.sessionId,messageId:$.messageId,promptId:W,requestToken:X,generation:this.#G.get($.sessionId)??0,sequence:0};return this.#Z.set(X,V),Q1(this.#Z,this.#_),$.headers[O4]=X,!0}resolveHeader($){if(!$)return;let J=this.#Z.get($);if(!J)return;this.#Z.delete($),this.#Z.set($,J);let W=(this.#V.get(J.sessionId)??0)+1;this.#V.delete(J.sessionId),this.#V.set(J.sessionId,W),Q1(this.#V,this.#X);let X={...J,previousRequestId:this.#Y.get(J.sessionId),sequence:W};if(X.previousRequestId===void 0)delete X.previousRequestId;return X}commit($,J){if(!$||!J||!MJ(J))return!1;if((this.#G.get($.sessionId)??0)!==$.generation)return!1;let W=this.#Z.get($.requestToken);if(!W||W.sessionId!==$.sessionId||W.messageId!==$.messageId||W.promptId!==$.promptId||W.generation!==$.generation)return!1;if(this.#J.get(this.#j($.sessionId,$.messageId))!==$.promptId)return!1;if($.sequence<(this.#K.get($.sessionId)??0))return!1;return this.#K.delete($.sessionId),this.#K.set($.sessionId,$.sequence),Q1(this.#K,this.#X),this.#Y.delete($.sessionId),this.#Y.set($.sessionId,J),Q1(this.#Y,this.#X),!0}clearSession($){this.#G.set($,(this.#G.get($)??0)+1),this.#Y.delete($),this.#V.delete($),this.#K.delete($);let J=`${$}\x00`;for(let W of this.#J.keys())if(W.startsWith(J))this.#J.delete(W);for(let W of this.#W.keys())if(W.startsWith(J))this.#W.delete(W);for(let[W,X]of this.#Z)if(X.sessionId===$)this.#Z.delete(W);Q1(this.#G,this.#X)}#j($,J){return`${$}\x00${J}`}}var L4="cache-diagnosis-2026-04-07",dW="MC-CACHE-DIAG ",iW=1000,nW=300000,rW={turn:!1,start:!0,prewarm_cachekeep:!0},oW=1000;class vJ{entries=new Map;previousFor($){return this.entries.get($)??null}capture($,J,W){kJ(this.entries,$,{messageId:J,receivedAt:W},iW)}}class hJ{hashes=new Map;capture($,J){if(this.hashes.has($))return null;return kJ(this.hashes,$,!0,oW),`MC-CACHE-DIAG-BETAS ${JSON.stringify({hash:$,betas:[...J].sort()})}`}}function K9($,J,W){let X=$.get(J);if(X)$.set(W,X)}async function bJ($,J,W,X,V){let j=new Headers($.headers);if(j.set("retry-after",String(H3(J,W))),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 five-hour quota resets shortly; retaining session affinity."}}),{status:429,headers:j});let K=new Response($.body,{status:$.status,statusText:$.statusText,headers:j});return K9(V,$,K),K}function z9($,J){$.diagnostics={previous_message_id:J}}function r$($){return $!=null&&typeof $==="object"&&!Array.isArray($)}function sW($){return r$($)&&$.type==="ephemeral"}function D3($,J){if(!sW($))return;J.push($.ttl==="1h"?"1h":"5m")}function N3($,J){if(!Array.isArray($))return;for(let W of $)if(r$(W))D3(W.cache_control,J)}function j9($){if(!r$($))return null;let J=[];if(D3($.cache_control,J),N3($.system,J),Array.isArray($.messages)){for(let W of $.messages)if(r$(W))N3(W.content,J)}return J.at(-1)??null}function aW($){if(!Object.hasOwn($,"diagnostics"))return{state:"absent"};let J=$.diagnostics;if(J===null)return{state:"server_null"};if(!r$(J))return null;if(!Object.hasOwn(J,"cache_miss_reason"))return null;let W=J.cache_miss_reason;if(W===null)return{state:"pending"};if(!r$(W)||typeof W.type!=="string"||!W.type)return null;let X=W.cache_missed_input_tokens;if(X!==void 0&&typeof X!=="number")return null;return{state:"populated",missReason:W.type,cacheMissedInputTokens:X}}function _4($,J){let W=$[J];return typeof W==="number"&&Number.isFinite(W)&&W>=0?W:null}function U3($){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=rW[$.source];if(J!==void 0&&J!==$.synthetic)$.onWarning?.(`cache diagnostics source/synthetic mismatch: source=${$.source} expected=${J} actual=${$.synthetic}`);let W=Math.trunc($.receivedAt);if(!Number.isFinite($.receivedAt)||W!==$.receivedAt)return{};if(!r$($.message))return{};let X=$.message.id,V=$.message.model,j=$.message.usage;if(typeof X!=="string"||X.length===0)return{};if(typeof V!=="string"||V.length===0||!r$(j))return{};let K=_4(j,"input_tokens"),N=_4(j,"cache_read_input_tokens"),w=_4(j,"cache_creation_input_tokens"),A=j.cache_creation;if(K===null||N===null||w===null||!r$(A))return{};let R=_4(A,"ephemeral_5m_input_tokens"),c=_4(A,"ephemeral_1h_input_tokens");if(R===null||c===null)return{};let u=aW($.message);if(!u)return{};let n={v:2,source:$.source,account_id:$.accountId,synthetic:$.synthetic,betas_hash:$.betasHash,session_id:$.request.sessionId,ts_ms_received:W,model:V,is_subagent:$.request.isSubagent,ttl_sent:$.request.ttlSent,cache_read:N,cache_creation:w,input_tokens:K,ephemeral_5m_tokens:R,ephemeral_1h_tokens:c,message_id:X,previous_message_id:$.request.previousMessageId,diag_state:u.state};if(u.missReason!==void 0)n.miss_reason=u.missReason;if(u.cacheMissedInputTokens!==void 0)n.cache_missed_input_tokens=u.cacheMissedInputTokens;if($.requestedModel!==void 0&&$.requestedModel!==V)n.requested_model=$.requestedModel;let C=u.missReason==="previous_message_not_found"&&$.request.previousMessageId!==null&&$.request.previousMessageReceivedAt!==void 0&&$.receivedAt-$.request.previousMessageReceivedAt<nW&&$.receivedAt>=$.request.previousMessageReceivedAt?{messageId:X,previousMessageId:$.request.previousMessageId}:void 0;return{record:n,messageId:X,...C?{canary:C}:{}}}function Q3($){return`${dW}${JSON.stringify($)}`}function N4($,J){if(C$(J)!=="claustrum"||!J?.claustrum?.scopedRoster)return!1;let W=J.accounts.find((X)=>X.id===$);return Boolean(W&&D0(W)&&W.enabled!==!1&&W.claustrumScopedCredentialId&&W.anthropicAccountUuid&&W.claustrumScopedState==="active"&&O9(W))}function B3($){if(C$($)!=="claustrum")return{fallbacks:"R",evidence:"V"};if(!$?.claustrum?.scopedRoster)return{fallbacks:"M",evidence:"N"};return{fallbacks:$.accounts.filter((W)=>W.enabled!==!1&&D0(W)).every((W)=>Boolean(W.claustrumScopedCredentialId&&W.anthropicAccountUuid&&O9(W)))?"T":"R",evidence:"V"}}function w3($){if(v1($,"anthropic"))return"T";if($.type==="oauth"&&$.access&&$.refresh)return"R";return"X"}function gJ($,J){if($.role==="main"){if(C$(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 X.state==="active"?"on-vault-served":"on-cold"}if(C$(J)!=="claustrum")return"off";let W=J?.accounts.find((X)=>X.id===$.id);if(!W||!D0(W)||!W.claustrumScopedCredentialId||!W.anthropicAccountUuid||!O9(W))return"off";if(W.claustrumScopedState==="needs_reauth")return"on-vault-reauth";return N4($.id,J)?"on-vault-served":"on-cold"}class H4 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 F3($){if($.authority!=="committed"&&$.authority!=="retired")throw new H4("MIGRATION_REQUIRED",$);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 H4("FAIL_CLOSED",$)}import{createHash as tW}from"node:crypto";var A3=512,eW=1024,$X=4096,D4=32,U4=32,L9="[A-Za-z0-9_-]{1,128}",JX="<cortexkit-internal-effort ",ZX="<cortexkit-internal-effort-plan ",E3=/^\s*(?:§[0-9]+§\s*)+$/,Q4={low:"l",medium:"m",high:"h",xhigh:"x",max:"z"},cJ=Object.fromEntries(Object.entries(Q4).map(([$,J])=>[J,$])),lJ="<cortexkit-internal-effort-v2 ",uJ="<cortexkit-internal-effort-anchor-v1 ",h1="x-cortexkit-effort-plan";class T0 extends Error{check;details;constructor($,J="unspecified",W={}){super($);this.check=J;this.details=W;this.name="EffortMarkerCorrelationError"}}function d0($){return typeof $==="object"&&$!==null&&!Array.isArray($)}function yJ($){return $?.info?.role==="user"&&$.info.model?.providerID==="anthropic"&&V1($.info.model.modelID)}function T3($){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 G1($){return tW("sha256").update($).digest("hex")}function WX($){return G1(`scope:${$}`).slice(0,U4)}function N9($){return G1(`cortexkit-effort-v2:${$}`).slice(0,D4)}function XX($,J,W){let X=Q4[W],V=`transition:${$}:${J}:${X}`;return`${lJ}scope="${$}" boundary="${J}" effort="${X}" check="${N9(V)}"/>`}function P3($){let J=$.match(new RegExp(`^${lJ}scope="([0-9a-f]{${U4}})" boundary="(${L9})" effort="([lmhxz])" check="([0-9a-f]{${D4}})"/>$`));if(!J)return null;let[,W,X,V,j]=J,K=cJ[V??""];if(!W||!X||!V||!j||!K)return null;let N=`transition:${W}:${X}:${V}`;if(N9(N)!==j)return null;return{scope:W,boundary:X,effort:K,token:$}}function YX($,J,W,X){let V=Q4[W],j=`anchor:${$}:${J}:${V}:${X}`;return`${uJ}scope="${$}" boundary="${J}" effort="${V}" digest="${X}" check="${N9(j)}"/>`}function q3($){let J=$.match(new RegExp(`^${uJ}scope="([0-9a-f]{${U4}})" boundary="(${L9})" effort="([lmhxz])" digest="([0-9a-f]{64})" check="([0-9a-f]{${D4}})"/>$`));if(!J)return null;let[,W,X,V,j,K]=J,N=cJ[V??""];if(!W||!X||!V||!j||!K||!N)return null;let w=`anchor:${W}:${X}:${V}:${j}`;if(N9(w)!==K)return null;return{scope:W,boundary:X,effort:N,digest:j,token:$}}function pJ($){return $.trim()===""||E3.test($)}function S3(){return new RegExp(`(?:${ZX}nonce="[^"]+" baseline="[^"]+" count="[^"]+" sig="[0-9a-f]+"/>|${JX}nonce="[^"]+" effort="[^"]+" sig="[0-9a-f]+"/>)`,"g")}function GX(){return new RegExp(`${lJ}scope="[0-9a-f]{${U4}}" boundary="${L9}" effort="[lmhxz]" check="[0-9a-f]{${D4}}"/>`,"g")}function VX(){return new RegExp(`${uJ}scope="[0-9a-f]{${U4}}" boundary="${L9}" effort="[lmhxz]" digest="[0-9a-f]{64}" check="[0-9a-f]{${D4}}"/>`,"g")}function R3($,J,W){let X=0,V=$,j=$.replace(S3(),"");if(j!==$&&E3.test(j))X+=[...$.matchAll(S3())].length,V=j;return V=V.replace(GX(),(K)=>{let N=P3(K);if(!N)return K;return J?.(N),X++,""}),V=V.replace(VX(),(K)=>{let N=q3(K);if(!N)return K;return W?.(N),X++,""}),{text:V,removed:X}}function KX($){for(let J of $){if(!Array.isArray(J.parts))continue;J.parts=J.parts.flatMap((W)=>{if(W.type!=="text"||typeof W.text!=="string"||!W.text.includes("<cortexkit-internal-effort"))return[W];let X=R3(W.text);if(X.removed===0)return[W];if(pJ(X.text))return[];return W.text=X.text,[W]})}}function _9($,J,W,X,V){let j=V?`:${V}`:"",K=`plan:${$}:${Q4[J]}:${W.toString(36)}${j}`;return G1([K,...X].join(`
|
|
2
|
-
`))}function zX($){return["v2",$.scope,Q4[$.baseline],$.markerCount.toString(36),$.digest].join(".")}function jX($){if(!$)return null;let J=$.match(/^v2\.([0-9a-f]{32})\.([lmhxz])\.([0-9a-z]+)\.([0-9a-f]{64})$/);if(!J)return null;let[,W,X,V,j]=J,K=cJ[X??""],N=Number.parseInt(V??"",36);if(!W||!K||!j||!Number.isSafeInteger(N)||N<0||N>A3)return null;return{scope:W,baseline:K,markerCount:N,digest:j}}function I3($){let J=$.findLast((u)=>u.info?.role==="user");if(!J||!yJ(J))return null;if(KX($),!Array.isArray(J.parts)||!T3(J))return null;let W=J.info?.sessionID,X=J.info?.id;if(typeof W!=="string"||typeof X!=="string")throw new T0("Cannot correlate Fable 5.1 effort markers without session and message IDs");let V=WX(W),j=$.findLast((u)=>u.info?.role==="user"&&u.parts?.some((n)=>n.type==="compaction")),K=typeof j?.info?.id==="string"?j.info.id:void 0,N,w;if(j&&yJ(j))N=mJ(j.info?.model?.variant)??"high",w=N;let A=[];for(let u of $){let n=u.info;if(n?.role!=="user")continue;if(K&&typeof n.id==="string"&&n.id<=K)continue;if(!yJ(u)||!T3(u))continue;let C=mJ(n.model?.variant)??"high";if(!N){N=C,w=C;continue}if(C===w)continue;if(A.length>=A3)throw new T0("Too many Fable 5.1 effort changes in the active context");if(!Array.isArray(u.parts)||typeof n.id!=="string")throw new T0("Cannot mark a Fable 5.1 effort change without message identity");let o=XX(V,n.id,C);u.parts.push({type:"text",text:o}),A.push(o),w=C}if(!N)return null;let R=_9(V,N,A.length,A,A.length>0?X:void 0),c=A.length>0?YX(V,X,w??N,R):void 0;if(c)J.parts.push({type:"text",text:c});return{scope:V,baseline:N,markerCount:A.length,digest:R,transitionTokens:A,anchorToken:c,sessionId:W,messageId:X}}function OX($){let J=Array.isArray($.messages)?$.messages:[],W=[];for(let X of J){let V=[],j=[];if(!d0(X)||X.role!=="user"){W.push({value:X,transitions:V,anchors:j});continue}let K=(N)=>R3(N,(w)=>V.push(w),(w)=>j.push(w));if(typeof X.content==="string"){let N=K(X.content);X.content=N.removed>0&&pJ(N.text)?"":N.text}else if(Array.isArray(X.content))X.content=X.content.flatMap((N)=>{if(!d0(N)||N.type!=="text"||typeof N.text!=="string")return[N];let w=K(N.text);if(w.removed>0&&pJ(w.text))return[];return[{...N,text:w.text}]});W.push({value:X,transitions:V,anchors:j})}return $.messages=W.map((X)=>X.value),{messages:W}}function _X($,J){let W=$[J]?.value,X=$[J-1]?.value;if(!d0(W)||W.role!=="user"||!Array.isArray(W.content)||W.content.length===0||!d0(X)||X.role!=="assistant"||!Array.isArray(X.content))return!1;let V=new Set(X.content.flatMap((j)=>d0(j)&&j.type==="tool_use"&&typeof j.id==="string"?[j.id]:[]));return W.content.every((j)=>d0(j)&&j.type==="tool_result"&&typeof j.tool_use_id==="string"&&V.has(j.tool_use_id))}function LX($,J){if(J<0)return!1;let W=$.flatMap((X,V)=>V>J&&d0(X.value)&&X.value.role==="user"?[V]:[]);return W.length>0&&W.every((X)=>_X($,X))}function C3($){if(!d0($))return null;if(typeof $.id==="string")return $.id;return typeof $.message_id==="string"?$.message_id:null}function NX($,J){if(!J)return null;if(J.scope!==$.scope||J.baseline!==$.baseline||J.markerCount!==$.markerCount||J.digest!==$.digest||J.transitionTokens.length!==$.markerCount)throw new T0("Fable 5.1 effort marker request plan mismatch");let W=J.transitionTokens.map((j)=>P3(j)),X=J.anchorToken?q3(J.anchorToken):null,V=W.at(-1)?.effort??$.baseline;if(W.some((j)=>j===null)||W.some((j)=>j?.scope!==$.scope)||$.markerCount>0&&(!X||X.scope!==$.scope||X.boundary!==J.messageId||X.effort!==V||X.digest!==$.digest)||$.markerCount===0&&X!==null||$.digest!==_9($.scope,$.baseline,$.markerCount,J.transitionTokens,J.markerCount>0?J.messageId:void 0))throw new T0("Fable 5.1 effort marker request plan mismatch");return{transitions:W,anchor:X}}function M3($,J,W,X){if(!Array.isArray($.messages))return{found:0,inserted:0};let V=jX(W);if(W&&!V)throw new T0("Missing or invalid internal Fable 5.1 effort request plan");let j=V?NX(V,X):null,K=j?.transitions??null;if(!$.messages.some((b)=>{if(!d0(b)||b.role!=="user")return!1;if(typeof b.content==="string"&&b.content.includes("<cortexkit-internal-effort"))return!0;return Array.isArray(b.content)&&b.content.some((K0)=>d0(K0)&&K0.type==="text"&&typeof K0.text==="string"&&K0.text.includes("<cortexkit-internal-effort"))})){if(!V)return{found:0,inserted:0};if(V.markerCount!==0){let b=$.messages.findLastIndex((L0)=>d0(L0)&&L0.role==="user"),K0=$.messages[b],v=d0(K0)&&Array.isArray(K0.content)?K0.content:[];throw new T0(`Fable 5.1 effort marker correlation failed: expected ${V.markerCount}, found 0`,"missing_all_markers",{markerCount:V.markerCount,resolvedPlan:j!==null,plannedBoundaryId:j?.anchor?.boundary??null,expectedAnchorHash:j?.anchor?G1(j.anchor.token):null,retainedMessageCount:$.messages.length,retainedUserMessageCount:$.messages.filter((L0)=>d0(L0)&&L0.role==="user").length,lastUserMessageIndex:b,lastUserTextBlockCount:v.filter((L0)=>d0(L0)&&L0.type==="text").length,lastUserToolResultBlockCount:v.filter((L0)=>d0(L0)&&L0.type==="tool_result").length})}if(!K&&V.digest!==_9(V.scope,V.baseline,0,[]))throw new T0("Fable 5.1 effort marker request plan mismatch");if(J&&V1($.model)){let b=d0($.output_config)?{...$.output_config}:{};b.effort=K?.at(-1)?.effort??V.baseline,$.output_config=b}return{found:0,inserted:0}}let w=OX($),A=w.messages.flatMap((b)=>b.transitions),R=w.messages.flatMap((b)=>b.anchors),c=A.length;if(!V){if(c===0)return{found:0,inserted:0};throw new T0("Missing or invalid internal Fable 5.1 effort request plan")}for(let b of w.messages){for(let K0 of b.transitions)if(K0.scope!==V.scope)throw new T0("Fable 5.1 effort marker scope mismatch");if(b.anchors.length>1)throw new T0("Multiple internal Fable 5.1 effort anchors on one user boundary")}let u=w.messages.findIndex((b)=>b.anchors.length===1),n=w.messages.findLastIndex((b)=>d0(b.value)&&b.value.role==="user"),C=R[0],o=w.messages[n]?.value,Y0=LX(w.messages,u);if(V.markerCount>0&&(R.length!==1||u!==n&&!Y0||!C||C.scope!==V.scope))throw new T0("Missing or invalid internal Fable 5.1 effort anchor placement","anchor_placement",{anchorBoundaryId:C?.boundary??null,plannedBoundaryId:j?.anchor?.boundary??null,lastUserMessageId:C3(o),anchorMessageIndex:u,lastUserMessageIndex:n,validToolContinuationSuffix:Y0,anchorsFound:R.length,markerCount:V.markerCount,scope:V.scope,foundScope:C?.scope??null,expectedAnchorHash:j?.anchor?G1(j.anchor.token):null,foundAnchorHash:C?G1(C.token):null,anchorMatchesExpected:j?.anchor!=null&&C?.token===j.anchor.token});if(V.markerCount===0&&R.length!==0)throw new T0("Unexpected internal Fable 5.1 effort anchor");if(j?.anchor&&C?.token!==j.anchor.token)throw new T0("Mismatched internal Fable 5.1 effort anchor token","anchor_token",{anchorBoundaryId:C?.boundary??null,plannedBoundaryId:j.anchor.boundary,lastUserMessageId:C3(o),anchorMessageIndex:u,lastUserMessageIndex:n,anchorsFound:R.length,markerCount:V.markerCount,scope:V.scope,foundScope:C?.scope??null,expectedAnchorHash:G1(j.anchor.token),foundAnchorHash:C?G1(C.token):null,anchorMatchesExpected:!1});let S0=V.baseline;if(K){let b=K.length-c;if(b<0)throw new T0(`Fable 5.1 effort marker correlation failed: expected ${V.markerCount}, found ${c}`);let K0=K.slice(b);if(A.some((L0,m$)=>L0.token!==K0[m$]?.token))throw new T0("Fable 5.1 effort marker non-prefix loss");let v=K.slice(0,b);if(C&&v.some((L0)=>L0.boundary===C.boundary))throw new T0("Fable 5.1 effort marker non-prefix loss");S0=v.at(-1)?.effort??V.baseline}else{if(c!==V.markerCount)throw new T0(`Fable 5.1 effort marker correlation failed: expected ${V.markerCount}, found ${c}`);let b=_9(V.scope,V.baseline,V.markerCount,A.map((v)=>v.token),C?.boundary);if(V.digest!==b)throw new T0("Fable 5.1 effort marker request plan mismatch");let K0=A.at(-1)?.effort??V.baseline;if(C&&(C.effort!==K0||C.digest!==V.digest))throw new T0("Missing or invalid internal Fable 5.1 effort anchor")}let V0=J&&V1($.model),k0=0,U0=[];for(let b of w.messages){let K0=b.transitions.at(-1);if(K0&&V0)U0.push({role:"system",content:[],output_config:{effort:K0.effort}}),k0++;U0.push(b.value)}if($.messages=U0,V0){let b=d0($.output_config)?{...$.output_config}:{};b.effort=S0,$.output_config=b}return{found:c,inserted:k0}}class dJ{plans=new Map;history=new Map;historyByMessage=new Map;record($){let J=this.key($.sessionId,$.messageId),W={...$,transitionTokens:[...$.transitionTokens]};this.remember(J,W),this.plans.delete(J),this.plans.set(J,W);while(this.plans.size>eW){let X=this.plans.keys().next().value;if(typeof X!=="string")break;this.plans.delete(X)}}clear($,J){let W=this.key($,J);this.plans.delete(W);for(let X of this.historyByMessage.get(W)??[])this.history.delete(X);this.historyByMessage.delete(W)}markHeaders($){let J=this.key($.sessionId,$.messageId),W=this.plans.get(J);if(!W)return!1;return $.headers[h1]=this.remember(J,W),this.plans.delete(J),this.plans.set(J,W),!0}resolveHeader($){return $?this.history.get($):void 0}remember($,J){let W=zX(J),X=this.history.get(W);if(X&&this.key(X.sessionId,X.messageId)!==$){if(X.markerCount!==0||J.markerCount!==0||X.sessionId!==J.sessionId)throw new T0("Fable 5.1 effort plan header collision");let j=this.key(X.sessionId,X.messageId),K=this.historyByMessage.get(j);if(K?.delete(W),K?.size===0)this.historyByMessage.delete(j)}this.history.delete(W),this.history.set(W,J);let V=this.historyByMessage.get($)??new Set;V.add(W),this.historyByMessage.set($,V);while(this.history.size>$X){let j=this.history.entries().next().value;if(!j)break;let[K,N]=j;this.history.delete(K);let w=this.key(N.sessionId,N.messageId),A=this.historyByMessage.get(w);if(A?.delete(K),A?.size===0)this.historyByMessage.delete(w)}return W}key($,J){return`${$}\x00${J}`}}var x3="claude-opus-4-8",HX=10,DX=128,UX=86400000;function f$($){if(typeof $!=="string")return null;let J=f3($);if(g1(J))return"opus-5-5";if(x$(J))return"opus-5";if(J===iJ||J.startsWith(`${iJ}-`))return"fable-5-1";if(J===B4||J.startsWith(`${B4}-`))return"fable-5";return null}function b1($){return f$($)!==null}function QX($,J){let W=f$(J);return W?`${$}\x00${W}`:null}function BX($){try{let J=JSON.parse($);return typeof J.model==="string"?{body:J,model:J.model}:null}catch{return null}}class nJ{now;recoveries=new Map;nextCycle=1;constructor($=Date.now){this.now=$}prune(){let $=this.now();for(let[J,W]of this.recoveries)if($-W.updatedAt>=UX)this.recoveries.delete(J);while(this.recoveries.size>DX){let J=this.recoveries.keys().next().value;if(typeof J!=="string")break;this.recoveries.delete(J)}}plan($,J){if(!$||typeof J!=="string")return null;let W=BX(J);if(!W||!b1(W.model))return null;let X=QX($,W.model);if(!X)return null;this.prune();let V=this.recoveries.get(X);if(!V||V.remaining<=0)return{sessionId:$,recoveryKey:X,requestedModel:W.model,effectiveModel:W.model,bodyText:J,downgraded:!1,standbyCacheAnchor:V?.standbyCacheAnchor};return V.updatedAt=this.now(),V.nextRequestSequence++,this.recoveries.delete(X),this.recoveries.set(X,V),W.body.model=x3,{sessionId:$,recoveryKey:X,requestedModel:V.model,effectiveModel:x3,bodyText:JSON.stringify(W.body),downgraded:!0,cycle:V.cycle,cacheAccountId:V.cacheAccountId,standbyCacheAnchor:V.standbyCacheAnchor,requestSequence:V.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 W=this.recoveries.get($.recoveryKey);if(!W||W.cycle!==$.cycle)return!1;if(W.cacheAccountId===J)return!1;return W.cacheAccountId=J,W.standbyCacheAnchor=void 0,W.standbyAnchorSequence=0,W.updatedAt=this.now(),$.cacheAccountId=J,$.standbyCacheAnchor=void 0,!0}activate($,J){if($.downgraded||!b1($.requestedModel))return this.remaining($);let W={model:$.requestedModel,remaining:HX,cycle:this.nextCycle++,cacheAccountId:J,standbyCacheAnchor:$.standbyCacheAnchor,nextRequestSequence:0,standbyAnchorSequence:0,updatedAt:this.now()};return this.recoveries.delete($.recoveryKey),this.recoveries.set($.recoveryKey,W),this.prune(),W.remaining}complete($,J){if(!$.downgraded||$.cycle==null||$.completed)return{counted:!1,remaining:this.remaining($)};$.completed=!0;let W=this.recoveries.get($.recoveryKey);if(!W||W.cycle!==$.cycle||W.remaining<=0)return{counted:!1,remaining:W?.remaining??0};if(W.remaining--,J&&(!W.cacheAccountId||J.oauthAccountId===W.cacheAccountId)&&$.requestSequence!=null&&$.requestSequence>=W.standbyAnchorSequence)W.standbyCacheAnchor=J,W.standbyAnchorSequence=$.requestSequence;return W.updatedAt=this.now(),this.recoveries.delete($.recoveryKey),this.recoveries.set($.recoveryKey,W),{counted:!0,remaining:W.remaining}}remaining($){return this.prune(),this.recoveries.get($.recoveryKey)?.remaining??0}}function o$($){return typeof $==="object"&&$!==null}function wX($){if(Array.isArray($))return $;if(o$($)&&Array.isArray($.data))return $.data;return[]}function h3($){if(!o$($)||!o$($.info))return;return $.info}function k3($){let J=h3($);return typeof J?.role==="string"?J.role:void 0}function FX($){let J=h3($);return typeof J?.id==="string"?J.id:void 0}function rJ($){if(!o$($)||!o$($.info))return null;let J=$.info,W=o$(J.model)?J.model:void 0,X=typeof J.agent==="string"?J.agent:void 0,V=typeof W?.providerID==="string"?W.providerID:typeof J.providerID==="string"?J.providerID:void 0,j=typeof W?.modelID==="string"?W.modelID:typeof W?.id==="string"?W.id:typeof J.modelID==="string"?J.modelID:void 0,K=typeof W?.variant==="string"?W.variant:typeof J.variant==="string"?J.variant:void 0;if(!X&&(!V||!j)&&!K)return null;let N={};if(X)N.agent=X;if(V&&j)N.model={providerID:V,modelID:j};if(K)N.variant=K;return N}function oJ($,J){return{agent:$.agent??J.agent,model:$.model??J.model,variant:$.variant??J.variant,latestAssistantMessageId:$.latestAssistantMessageId??J.latestAssistantMessageId,latestUserMessageId:$.latestUserMessageId??J.latestUserMessageId}}function v3($){return Boolean($.agent&&$.model&&$.variant)}async function H9($,J){if(!$||!J)return null;let W=$,X=[];if(typeof W.session?.messages==="function")try{X=wX(await Promise.resolve(W.session.messages({path:{id:J},query:{limit:100}})))}catch{X=[]}let V,j;for(let N of X){let w=FX(N);if(!w)continue;let A=k3(N);if(A==="assistant"&&(!V||w>V))V=w;if(A==="user"&&(!j||w>j))j=w}let K={latestAssistantMessageId:V,latestUserMessageId:j};for(let N=X.length-1;N>=0;N--){if(k3(X[N])!=="assistant")continue;let w=rJ(X[N]);if(!w)continue;if(K=oJ(K,w),v3(K))return K}for(let N=X.length-1;N>=0;N--){let w=rJ(X[N]);if(!w)continue;if(K=oJ(K,w),v3(K))return K}if(typeof W.session?.get==="function")try{let N=await Promise.resolve(W.session.get({path:{id:J}})),w=o$(N)&&o$(N.data)?N.data:o$(N)?N:void 0,A=w?rJ({info:w}):null;if(A)K=oJ(K,A)}catch{}if(!K.agent&&!K.model&&!K.variant&&!K.latestAssistantMessageId&&!K.latestUserMessageId)return null;return K}var b3="[lane start] — automated cache warm; no response needed.",D9="x-cortexkit-lane-start",TX=1000;function SX($){if(!$||typeof $!=="object")return!1;let J=$;return J.type==="text"&&J.text===b3&&J.synthetic===!0}async function g3($,J){let W=$?.session;if(typeof W?.promptAsync!=="function")throw Error("OpenCode plugin client does not support session.promptAsync");let X=await H9($,J),V={noReply:!1,parts:[{type:"text",text:b3,synthetic:!0}]};if(X?.agent)V.agent=X.agent;if(X?.model)V.model=X.model;if(X?.variant)V.variant=X.variant;await Promise.resolve(W.promptAsync({path:{id:J},body:V}))}class sJ{#$=new Map;observeSyntheticMessage($){if(!$.parts.some(SX))return!1;let J=`${$.sessionId}\x00${$.messageId}`;if(!this.#$.has(J)&&this.#$.size>=TX){let W=this.#$.keys().next().value;if(W!==void 0)this.#$.delete(W)}return this.#$.set(J,$.sessionId),!0}markHeaders($){let J=`${$.sessionId}\x00${$.messageId}`;if(!this.#$.has(J))return!1;return this.#$.delete(J),$.headers[D9]="1",!0}clearSession($){for(let[J,W]of this.#$)if(W===$)this.#$.delete(J)}}function y3($){if(!$?.trim())throw TypeError("sessionId is required");return $}function c3($){if($.host!=="opencode")throw TypeError("OpenCode host is required");let J=m3({...$,readMode:$.readMode??(()=>K1("opencode",process.env)),disconnectVault:$.disconnectVault??(()=>p3({host:"opencode",env:process.env}))});return{menu:J,open(W){return J.open({sessionId:y3(W),notify(){}})},apply(W){return J.apply(W,{sessionId:y3(W.sessionId),notify(){}})}}}var U9=new Map,Q9=new Map;function l3($,J){let W=Q9.get($);if(W?.fingerprint!==J.fingerprint||W.marker!==J.marker)return;let X=U9.get(J.fingerprint);if(X?.slots.delete($),X?.slots.size===0)X.manager.stop(),U9.delete(J.fingerprint);Q9.delete($)}function d3($,J,W){let X=u3($),V=U9.get(X),j=V?.manager??J();if(V)W.rebind(j);let K=Q9.get(W.slot);if(K&&K.fingerprint!==X)l3(W.slot,K);let N=V??{manager:j,slots:new Set};if(!V)U9.set(X,N);let w={fingerprint:X,marker:Symbol(W.slot)};return N.slots.add(W.slot),Q9.set(W.slot,w),{manager:j,release:()=>l3(W.slot,w)}}function n3($){let J=Math.floor($.retryAfterSeconds/60),W=$.retryAfterSeconds%60,X=`Retry in ${J}m ${W}s.`;return $.modelName?`${$.modelName} weekly limit reached, no routable accounts. ${X}`:`Killswitch: no routable accounts. ${X}`}function r3($){if(!$.requestModelId)return{isScopedDriven:!1};if(!N$($.mainQuota,$.storage))return{isScopedDriven:!1};let J=B9($.mainQuota,$.requestModelId);if(!J)return{isScopedDriven:!1};if(!Number.isFinite(J.remainingPercent))return{isScopedDriven:!1};let W=i3($.storage);if(J.remainingPercent<=W.scoped)return{isScopedDriven:!0,modelName:J.modelName,modelId:$.requestModelId};return{isScopedDriven:!1}}var s$=[],o3=1,s3=new Map;function a3($){if(typeof $!=="string"||$.length===0)throw TypeError("sessionId is required")}function t3($,J){if(a3(J),"menu"in $){if($.command!=="claude"||$.menu.command!=="claude")throw TypeError("Only the claude menu is supported");s$.push({id:o3++,type:"open-menu",payload:$,sessionId:J})}else s$.push({id:o3++,type:"open-dialog",payload:$,sessionId:J});if(s$.length>100)s$=s$.slice(s$.length-100)}function e3($,J){if(a3(J),s3.set(J,Date.now()),$>0)s$=s$.filter((W)=>W.id>$||W.sessionId!==J);return s$.filter((W)=>W.id>$&&W.sessionId===J)}function w9($){let J=Date.now(),W=s3.get($)??0;return W>0&&J-W<3000}import{randomBytes as CX,timingSafeEqual as AX}from"node:crypto";import{readFile as EX,unlink as PX}from"node:fs/promises";import{createServer as qX}from"node:http";import{join as RX}from"node:path";function IX($){return new Promise((J,W)=>{let X=[],V=0;$.on("data",(j)=>{if(V+=j.length,V>1e6){$.destroy(),W(Error("body too large"));return}X.push(j)}),$.on("end",()=>J(Buffer.concat(X).toString("utf8"))),$.on("error",W)})}function MX($,J){if(!$?.startsWith("Bearer "))return!1;let W=Buffer.from($.slice(7)),X=Buffer.from(J);return W.length===X.length&&AX(W,X)}async function Z7($){let J=CX(32).toString("hex"),W=qX((j,K)=>{X(j,K)});async function X(j,K){let N=(w,A)=>{K.writeHead(w,{"content-type":"application/json"}),K.end(JSON.stringify(A))};try{let w=j.url??"";if(j.method==="GET"&&w==="/health")return N(200,{ok:!0});if(j.method!=="POST"||!w.startsWith("/rpc/"))return N(404,{error:"not found"});if(!MX(j.headers.authorization,J))return N(401,{error:"unauthorized"});let A=w.slice(5),R=JSON.parse(await IX(j)||"{}");if(A==="pending-notifications"){if(typeof R.sessionId!=="string"||R.sessionId.length===0)return N(400,{error:"sessionId is required"});let c=$.drain(Number(R.lastReceivedId??0),R.sessionId);return N(200,{messages:c})}if(A==="apply"){if(!$.apply)return N(501,{error:"text apply unavailable"});let c=await $.apply(R);return N(200,c)}if(A==="apply-menu"){let c=$7(R);if(c?.command!=="claude"||!c.sessionId?.trim())return N(400,{error:"invalid menu request"});if(!$.applyMenu)return N(501,{error:"menu unavailable"});return N(200,await $.applyMenu(c))}return N(404,{error:"unknown method"})}catch{if(!K.headersSent&&!K.writableEnded&&!K.destroyed)N(500,{error:"RPC request failed"})}}let V=await new Promise((j,K)=>{W.on("error",K),W.listen(0,"127.0.0.1",()=>{let N=W.address();if(N&&typeof N==="object")j(N.port);else K(Error("no port"))})});W.unref();try{await J7($.dir,{port:V,token:J,pid:process.pid})}catch(j){throw await new Promise((K)=>W.close(()=>K())),j}return{port:V,token:J,async stop(){await new Promise((j)=>W.close(()=>j()));try{let j=RX($.dir,`port-${process.pid}.json`),K=JSON.parse(await EX(j,"utf8"));if(K.port===V&&K.pid===process.pid)await PX(j)}catch{}}}}async function W7($,J){let W=globalThis,X=W.__anthropicAuthRpcServers??new Map,V=W.__anthropicAuthRpcServersPending??new Map;W.__anthropicAuthRpcServers=X,W.__anthropicAuthRpcServersPending=V;let j=V.get($)??Promise.resolve(),K,N=j.catch(()=>{}).then(async()=>{let A=X.get($);if(A){if(await A.stop(),X.get($)===A)X.delete($)}K=await J(),X.set($,K)});V.set($,N);try{await N}finally{if(V.get($)===N)V.delete($)}let w=K;if(!w)throw Error("RPC server failed to start");return{server:w,release:async()=>{if(X.get($)!==w)return;if(await w.stop(),X.get($)===w)X.delete($)}}}var G7="server-side-fallback-2026-07-01",V7="",F9="cortexkit-server-fallback-v1:";function A$($){return $!==null&&typeof $==="object"&&!Array.isArray($)?$:void 0}function y1($,J){let W=$?.[J];return typeof W==="string"?W:void 0}function m1($){return typeof $==="string"&&$.length>0&&$.length<=128&&/^claude-[a-z0-9-]+$/i.test($)}function xX($){return`${F9}${$.fromModel}|${$.toModel}`}function fX($){if(typeof $!=="string"||!$.startsWith(F9))return null;let J=$.slice(F9.length),W=J.indexOf("|");if(W<=0||W!==J.lastIndexOf("|"))return null;let X=J.slice(0,W),V=J.slice(W+1);if(!m1(X)||!m1(V))return null;return{fromModel:X,toModel:V}}function kX($){if($.type!=="fallback")return null;let J=y1(A$($.from),"model"),W=y1(A$($.to),"model");if(!m1(J)||!m1(W))return null;return{fromModel:J,toModel:W}}function vX($){return{type:"fallback",from:{model:$.fromModel},to:{model:$.toModel}}}function hX($,J){let W=0,X=0;if(!Array.isArray($.messages))return{restoredMarkers:W,droppedMarkers:X};for(let V of $.messages){let j=A$(V);if(j?.role!=="assistant"||!Array.isArray(j.content))continue;let K=[];for(let N of j.content){let w=A$(N);if(!(w?.type==="thinking"&&(w.thinking===V7||w.thinking==="")&&typeof w.signature==="string"&&w.signature.startsWith(F9))){K.push(N);continue}let R=fX(w.signature);if(J&&R)K.push(vX(R)),W++;else X++}j.content=K}return{restoredMarkers:W,droppedMarkers:X}}function K7($){return $?.trim().toLowerCase()==="legacy"?"legacy":"server"}function z7($,J){let W=J&&(b1($.model)||V1($.model)),X=hX($,W);if(W)$.fallbacks="default";else if($.fallbacks==="default")delete $.fallbacks;return{enabled:W,...X}}function bX($){let J,W=[];for(let V of $.split(/\r?\n/))if(V.startsWith("event:"))J=V.slice(6).trim();else if(V.startsWith("data:")){let j=V.slice(5);W.push(j.startsWith(" ")?j.slice(1):j)}let X=W.join(`
|
|
3
|
-
`);if(!X||X==="[DONE]")return{event:J};try{return{event:J,data:A$(JSON.parse(X))}}catch{return{event:J}}}function X7($){let J=$.indexOf(`
|
|
4
|
-
|
|
5
|
-
`),W=$.indexOf(`\r
|
|
6
|
-
\r
|
|
7
|
-
`);if(J===-1)return W===-1?null:{index:W,length:4};if(W===-1||J<W)return{index:J,length:2};return{index:W,length:4}}function Y7($,J){return`event: ${$}
|
|
8
|
-
data: ${JSON.stringify(J)}
|
|
9
|
-
|
|
10
|
-
`}function gX($,J){return Y7("content_block_start",{type:"content_block_start",index:$,content_block:{type:"thinking",thinking:V7}})+Y7("content_block_delta",{type:"content_block_delta",index:$,delta:{type:"signature_delta",signature:xX(J)}})}function yX($,J){let W=f$($),X=f$(J);if(W&&X)return W===X;return $===J}function j7($){let J="",W=0,X=!1,V="",j,K,N,w=!1,A=!1,R=new Set,c=(o)=>{if(!Array.isArray(o?.iterations))return;for(let Y0 of o.iterations){let S0=A$(Y0);if(S0?.type!=="fallback_message")continue;let V0=y1(S0,"model");if(m1(V0))N=V0}},u=(o)=>{if(w)return;w=!0;let Y0=K?.toModel??N??(j&&!yX($.requestedModel,j)?j:void 0);$.onOutcome?.({requestedModel:$.requestedModel,servedModel:j,targetModel:Y0,fallback:Boolean(Y0),handoff:Boolean(K),stopReason:o})},n=(o,Y0)=>{let S0=bX(o),V0=S0.data,k0=y1(V0,"type")??S0.event;if(k0==="message_start"){let U0=A$(V0?.message),b=y1(U0,"model");if(m1(b))j=b;c(A$(U0?.usage))}else if(k0==="content_block_start"){let U0=A$(V0?.content_block),b=V0?.index;if(U0?.type==="tool_use"&&typeof b==="number"&&Number.isInteger(b)&&b>=0)R.add(b);let K0=U0?kX(U0):null;if(K0){if(K=K0,typeof b==="number"&&Number.isInteger(b)&&b>=0)return gX(b,K0)}}else if(k0==="content_block_stop"){let U0=V0?.index;if(typeof U0==="number"&&R.delete(U0))A=!0}else if(k0==="message_delta"){c(A$(V0?.usage));let U0=A$(V0?.delta),b=y1(U0,"stop_reason");if(b)u(b);if(b==="refusal"&&A&&R.size===0&&U0&&$.onRefusalAfterToolUse&&$.onRefusalAfterToolUse()!==!1)return U0.stop_reason="tool_use",`${S0.event?`event: ${S0.event}
|
|
11
|
-
`:""}${V0?`data: ${JSON.stringify(V0)}
|
|
12
|
-
`:""}${Y0}`}return o+Y0},C=()=>{let o="";while(!0){let Y0=X7(J);if(!Y0)break;let S0=J.slice(0,Y0.index),V0=J.slice(Y0.index,Y0.index+Y0.length);J=J.slice(Y0.index+Y0.length),W=new TextEncoder().encode(J).byteLength,o+=n(S0,V0)}return o};return{pendingLength(){return W},push(o){let Y0="";if(X){let V0=V+o,k0=X7(V0);if(!k0)return V=V0.slice(-3),o;let U0=k0.index+k0.length;Y0=o.slice(0,Math.max(0,U0-V.length)),o=V0.slice(U0),X=!1,V=""}if(!o)return Y0;let S0=new TextEncoder().encode(o).byteLength;if(J+=o,W+=S0,Y0+=C(),$.maxPendingBytes!==void 0&&W>$.maxPendingBytes){let V0=J;return J="",W=0,X=!0,V=V0.slice(-3),Y0+V0}return Y0},flush(){if(X)return V="","";let o=C();if(!J)return o;let Y0=n(J,"");return J="",W=0,o+Y0}}}import{createHash as mX}from"node:crypto";import{applyEdits as r7,parseTree as pX}from"jsonc-parser";function O7($,J){let W=new Map,X=0,V=0,j=0,K=0,N=0,w=(c)=>{let u=performance.now(),n=$(c);return N+=performance.now()-u,j++,n};return{call:(c)=>{if(!J.enabled())return w(c);let u=W.get(c);if(u!==void 0)return V++,W.delete(c),W.set(c,u),u;let n=w(c),C=c.length+n.length;if(C>J.maxBytes)return n;W.set(c,n),X+=C;while(X>J.maxBytes&&W.size>1){let o=W.keys().next().value,Y0=W.get(o)??"";W.delete(o),X-=o.length+Y0.length,K++}return n},stats:()=>({hits:V,misses:j,evictions:K,entries:W.size,cacheBytes:X,computeMsTotal:N})}}var E$=8388608;function E9($){return`${eJ}${$.charAt(0).toUpperCase()}${$.slice(1)}`}function cX($){if($==="StructuredOutput")return $;return`${$.charAt(0).toLowerCase()}${$.slice(1)}`}class A4 extends Error{retryable=!1;isRetryable=!1;constructor(){super("Response tool-name mapping could not be validated safely");this.name="UnsafeToolNameResponseError"}}function F4($){if($?.hazardousWireNames.size)throw new A4}function JZ($,J){return $ instanceof $Z&&J?.hazardousWireNames.size?new A4:$}async function ZZ($,J){try{$.cancel(J).catch(()=>{})}catch{}try{await Promise.allSettled([$.closed])}finally{try{$.releaseLock()}catch{}}}function lX($){let J=new Set;if(Array.isArray($)){for(let j of $)if(X0(j)&&typeof j.name==="string"&&j.name)J.add(j.name)}let W=new Map,X=(j,K,N)=>{j.set(K,j.has(K)&&j.get(K)!==N?null:N)},V=new Map;for(let j of J){let K=j.split("_");for(let N=0;N<K.length;N++){let w=K.slice(N).join("_");if(!w)continue;for(let A of new Set([w,cX(w),w.charAt(0).toUpperCase()+w.slice(1)]))X(W,A,j),X(W,`${eJ}${A}`,j)}X(V,E9(j),j)}for(let j of J)W.set(j,j);for(let[j,K]of V)W.set(j,K);return Object.assign(W,{declaredHostNames:J,hazardousWireNames:new Set([...V.keys()].filter((j)=>J.has(j)))})}function E4($,J){let W=new Headers;if($ instanceof Request)$.headers.forEach((V,j)=>{W.set(j,V)});let X=J?.headers;if(X){if(X instanceof Headers)X.forEach((V,j)=>{W.set(j,V)});else if(Array.isArray(X))for(let V of X){let[j,K]=V;if(typeof K<"u")W.set(j,String(K))}else for(let[V,j]of Object.entries(X))if(typeof j<"u")W.set(V,String(j))}return W}function k9($){return $.set("anthropic-beta",T4($.get("anthropic-beta"),[w7])),$}function l1($,J,W={}){return q9(J,"anthropic"),M7($,J,{...W,extraBetas:[...W.body?.fallbacks==="default"?[G7]:[],...W.body&&n7(W.body)?[d7]:[],...W.body&&l7(W.body)?[c7]:[]]})}function uX($){if($.tools&&Array.isArray($.tools))$.tools=$.tools.map((W)=>({...W,name:W.name?E9(W.name):W.name}));let J=$.tool_choice;if(X0(J)&&J.type==="tool"&&typeof J.name==="string")$.tool_choice={...J,name:E9(J.name)};if($.messages&&Array.isArray($.messages))$.messages=$.messages.map((W)=>{if(W.content&&Array.isArray(W.content))W.content=W.content.map((X)=>{if(X.type==="tool_use"&&X.name)return{...X,name:E9(X.name)};return X});return W});return JSON.stringify(x7($))}function dX($,J){return r7($,o7($,J,!1))}function w4($,J){if($?.type!=="object")return;return $.children?.filter((X)=>X.children?.[0]?.value===J)?.at(-1)?.children?.[1]}function o7($,J,W,X=!0){if(!J?.size)return[];let V=$.charCodeAt(0)===65279?1:0,j=[],K;try{K=pX($.slice(V),j,{disallowComments:!0,allowTrailingComma:!1})}catch{return F4(J),[]}if(j.length||K?.type!=="object")return F4(J),[];let N=w4(K,"type")?.value,w;if(W){X&&=N==="content_block_start";let R=w4(K,"content_block");w=R?[R]:[]}else{X&&=N===void 0||N==="message";let R=w4(K,"content");w=R?.type==="array"?R.children??[]:[]}let A=[];for(let R of w){if(w4(R,"type")?.value!=="tool_use")continue;let c=w4(R,"name");if(c?.type!=="string")continue;let u=J.get(c.value);if(J.hazardousWireNames.has(c.value)&&(!X||u===null))throw new A4;if(!X)continue;if(u&&u!==c.value)A.push({offset:V+c.offset,length:c.length,content:JSON.stringify(u)})}return A}function iX($,J){let W=$.charCodeAt(0)===65279?1:0,X=I9($.slice(W));if(X.data===void 0)return $;let V=o7(X.data,J,!0,X.event===void 0||X.event==="content_block_start");if(!V.length)return $;let j=[],K=0;for(let w of $.slice(W).matchAll(/([^\r\n]*)(?:\r\n|\r|\n|$)/g)){let A=/^data(?:: ?(.*))?$/.exec(w[1]??"");if(!A)continue;let R=A[1]?.length??0;j.push({dataOffset:K,frameOffset:W+(w.index??0)+A[0].length-R,length:R}),K+=R+1}let N=[];for(let w of V){let A=j.find((R)=>w.offset>=R.dataOffset&&w.offset+w.length<=R.dataOffset+R.length);if(!A)return F4(J),$;N.push({...w,offset:A.frameOffset+w.offset-A.dataOffset})}return r7($,N)}function nX($,J){let W=new TextEncoder,X=new TextDecoder("utf-8",{ignoreBOM:!0}),V=R9({maxFrameBytes:E$}),j="",K=0,N=!$?.size;return{pendingLength:()=>j.length,push(w,A=!1){if(N||!$)return w;let R=j+w;if(J){if(K+=W.encode(w).byteLength,K>E$)return N=!0,j="",F4($),R;return j=A?"":R,A?dX(R,$):""}let c;try{c=V.push(W.encode(w))}catch(n){if(!(n instanceof $Z))throw n;return N=!0,j="",F4($),R}let u=c.map((n)=>X.decode(n));if(j=R.slice(u.reduce((n,C)=>n+C.length,0)),A){let n=V.finish();if(n)u.push(X.decode(n));j=""}return u.map((n)=>iX(n,$)).join("")}}}function WZ(){if(!process.env.ANTHROPIC_BASE_URL?.trim())return!1;let $=process.env.ANTHROPIC_INSECURE?.trim();return $==="1"||$==="true"}function s7($){let J=$?.trim();if(!J)return null;try{let W=new URL(J);if(W.protocol!=="http:"&&W.protocol!=="https:"||W.username||W.password)return null;return W}catch{return null}}function rX(){return s7(process.env.ANTHROPIC_BASE_URL)}function P4($,J={}){let W=null;try{if(typeof $==="string"||$ instanceof URL)W=new URL($.toString());else if($ instanceof Request)W=new URL($.url)}catch{W=null}if(!W)return{input:$,url:null};let X=W.href,V=J.baseURL?s7(J.baseURL):rX();if(V){let K=V.pathname.replace(/\/$/,""),N=W.pathname;if(W.protocol=V.protocol,W.host=V.host,!(N===K||K!==""&&N.startsWith(`${K}/`))){let A=/\/v\d[^/]*$/.test(K);if(N==="/messages")W.pathname=A?`${K}/messages`:`${K}/v1/messages`;else if(N==="/v1/messages"&&A)W.pathname=`${K}/messages`;else W.pathname=`${K}${N}`}else if(N===`${K}/messages`){if(!/\/v\d[^/]*$/.test(K))W.pathname=`${K}/v1/messages`}}if(W.pathname.endsWith("/v1/messages")&&!W.searchParams.has("beta"))W.searchParams.set("beta","true");if(W.href===X)return{input:$,url:W};return{input:$ instanceof Request?new Request(W.toString(),$):W,url:W}}function oX($){let X=$.split(/\n\n+/).filter((V)=>{if(V.includes(F7))return!1;for(let j of S7)if(V.includes(j))return!1;return!0}).join(`
|
|
13
|
-
|
|
14
|
-
`);for(let V of C7)X=X.replace(V.match,V.replacement);return X.trim()}var sX=8388608;function aX(){return process.env.OPENCODE_ANTHROPIC_AUTH_MEMO!=="0"}var tX=O7(oX,{maxBytes:sX,enabled:aX});function T9($){return tX.call($)}function X0($){return $!=null&&typeof $==="object"&&!Array.isArray($)}function eX($){let J={type:"text",text:p1};if($==null)return[J];if(typeof $==="string"){let X=T9($);if(X===p1)return[J];return[J,{type:"text",text:X}]}if(X0($)){let X=typeof $.type==="string"?$.type:"text",V=typeof $.text==="string"?$.text:"";return[J,{...$,type:X,text:T9(V)}]}if(!Array.isArray($))return[J];let W=$.map((X)=>{if(typeof X==="string")return{type:"text",text:T9(X)};if(X0(X)&&X.type==="text"&&typeof X.text==="string")return{...X,type:"text",text:T9(X.text)};return{type:"text",text:String(X)}});if(W[0]?.text===p1)return W;return[J,...W]}var a7={type:"ephemeral",ttl:"1h"},_7=20;function t7($){if(X0($.cache_control))return $.cache_control;if(X0($.cacheControl))return $.cacheControl;return null}function P9($,J){if(!X0($))return!1;return delete $.cacheControl,$.cache_control=J?{...a7}:{type:"ephemeral"},!0}function L7($){if(!X0($))return;delete $.cache_control,delete $.cacheControl}function XZ($){if(Array.isArray($))return $;if(typeof $==="string")return[{type:"text",text:$}];return null}function tJ($){if(Array.isArray($))return $.map(tJ);if(!X0($))return $;let J={};for(let W of Object.keys($).sort()){if(W==="cache_control"||W==="cacheControl")continue;J[W]=tJ($[W])}return J}function e7($){if(!X0($))return;let J=XZ($.content);if(!J?.length)return;let W=tJ({...$,content:J});return mX("sha256").update(JSON.stringify(W)).digest("hex")}function $Y($){if(!X0($))return!1;let J=XZ($.content);return Boolean(J?.some((W)=>X0(W)&&t7(W)?.type==="ephemeral"))}function $8($){try{let J=JSON.parse($);if(!Array.isArray(J.messages))return;for(let W=J.messages.length-1;W>1;W--){let X=J.messages[W];if(!X0(X)||X.role!=="user"||!$Y(X))continue;let V=e7(X);if(!V)return;return{fingerprint:V,messageIndex:W,messageCount:J.messages.length}}return}catch{return}}function S9($,J){if(!X0($))return;let W=t7($);if(W?.type!=="ephemeral")return;if(J)W.ttl="1h";else delete W.ttl}function N7($,J){if(Array.isArray($.system))for(let W of $.system)S9(W,J);else S9($.system,J);if(!Array.isArray($.messages))return;for(let W of $.messages)if(S9(W,J),X0(W)&&Array.isArray(W.content))for(let X of W.content)S9(X,J)}function JY($,J){if(Array.isArray($.system))for(let W of $.system)J(W);else J($.system);if(!Array.isArray($.messages))return;for(let W of $.messages)if(J(W),X0(W)&&Array.isArray(W.content))for(let X of W.content)J(X)}function J8($){L7($),JY($,L7)}function ZY($){J8($),$.cache_control={...a7}}function WY($){return X0($)&&$.type!=="thinking"&&$.type!=="redacted_thinking"}function Z8($){let J=XZ($.content);if(!J?.length)return;let W=J.filter(WY);if(!W.length)return;return{content:J,cacheableBlocks:W}}function XY($){if(!X0($))return!1;let J=Z8($);if(!J||J.cacheableBlocks.length<2)return!1;let[W,X,V]=J.content,K=$.role==="user"&&X0(W)&&W.type==="text"&&typeof W.text==="string"&&X0(X)&&X.type==="image"&&X0(V)&&V.type==="text"&&typeof V.text==="string"&&/<memory-mural>[\s\S]*?<\/memory-mural>/.test(W.text)?[X,V]:J.cacheableBlocks.slice(0,2);$.content=J.content;for(let N of K)P9(N,!0);return!0}function C9($){if(!X0($))return!1;let J=Z8($);if(!J)return!1;let W=J.cacheableBlocks[J.cacheableBlocks.length-1];return $.content=J.content,P9(W,!0)}function YY($){if(!X0($))return 0;let J=$.content;if(Array.isArray(J))return J.length;if(J==null)return 0;return 1}function GY($){let J=[],W=0;return $.forEach((X,V)=>{let j=YY(X);if(X0(X)&&X.role==="user"&&j>0)J.push({index:V,blockPosition:W+j-1});W+=j}),J}function VY($,J,W,X){if(!X)return;let V=[],j=J.find((K)=>K.index===X.messageIndex&&K.index>1&&K.index<W.index);if(j)V.push(j);for(let K of[...J].reverse()){if(K.index<=1||K.index>=W.index||K.index===j?.index)continue;V.push(K)}for(let K of V)if(e7($[K.index])===X.fingerprint)return K;return}function KY($,J){let W=GY($),X=[...W].reverse().find((R)=>R.index>1);if(!X)return{latest:void 0,bridge:void 0,standbyAnchorMatched:!1,standbyBridgeApplied:!1};let V=VY($,W,X,J),j=V?X.blockPosition-V.blockPosition+1:void 0,K=V&&j!=null&&j>_7?V:void 0,N=[...W].reverse().find((R)=>R.index<X.index),w=N?X.blockPosition-N.blockPosition+1:0,A=N&&N.index>1&&w>_7?N:void 0;return{latest:X,bridge:K??A,standbyAnchorMatched:Boolean(V),standbyDistanceBlocks:j,standbyBridgeApplied:Boolean(K)}}function aJ($){return X0($)&&typeof $.text==="string"?$.text:""}function zY($){if(!Array.isArray($.system))return;let J=$.system,W=0;if(aJ(J[W]).startsWith("x-anthropic-billing-header:"))W++;if(aJ(J[W])===p1)W++;let X=W+1;if(X>=J.length-1)return;let V=J[X];if(!X0(V))return;let j=J.slice(X).map(aJ).join(`
|
|
15
|
-
`);J.splice(X,J.length-X,{...V,type:"text",text:j})}function H7($){if(Array.isArray($.system)){let J=$.system.findIndex((V)=>X0(V)&&V.text===p1),W=$.system.slice(J>=0?J+1:0).filter(X0),X=W[W.length-1];P9(X,!0)}else P9($.system,!0)}function jY($,J){if(J8($),zY($),!Array.isArray($.messages))return H7($),{standbyAnchorMatched:!1,standbyBridgeApplied:!1};let{latest:W,bridge:X,standbyAnchorMatched:V,standbyDistanceBlocks:j,standbyBridgeApplied:K}=KY($.messages,J);if(!X)H7($);if(!XY($.messages[0]))C9($.messages[0]),C9($.messages[1]);if(X)C9($.messages[X.index]);if(W)C9($.messages[W.index]);return{standbyAnchorMatched:V,standbyDistanceBlocks:j,standbyBridgeApplied:K,...K&&X?{standbyBridgeMessageIndex:X.index}:{}}}function OY($){if(!Array.isArray($.messages))return 0;let J=0;return $.messages=$.messages.filter((W)=>{if(!X0(W)||!Array.isArray(W.content))return!0;if(W.role!=="assistant")return!0;let X=W.content.filter((V)=>{if(!X0(V)||V.type!=="thinking")return!0;if(!p7(V.signature))return!0;return J+=1,!1});if(X.length===W.content.length)return!0;return W.content=X,X.length>0}),J}function YZ($){let J=$.tool_choice;if(X0(J)&&(J.type==="any"||J.type==="tool"))delete $.tool_choice}function W8($){if(!k7($.model))return null;let J=Object.hasOwn($,"thinking");if($.thinking={...f7},w1($.model))YZ($);return{replacedExisting:J}}function _Y($){if(M9($.model)){YZ($);let X=Object.hasOwn($,"thinking"),V=$.thinking;if(X0(V)&&(V.type==="disabled"||V.type==="between_tools")){$.thinking={type:"between_tools"};let j=$.output_config;if(X0(j)&&(j.effort==="xhigh"||j.effort==="max"))j.effort="high";return{replacedExisting:X,display:"between_tools"}}return $.thinking={...b7},{replacedExisting:X,display:"summarized"}}if(!h7($.model))return null;let J=Object.hasOwn($,"thinking"),W=$.thinking;if(X0(W)&&W.type==="disabled")return $.thinking={type:"disabled"},{replacedExisting:J,display:"disabled"};return $.thinking={...v7},{replacedExisting:J,display:"summarized"}}function X8($){if(g1($.model)){YZ($);let X=Object.hasOwn($,"thinking");return $.thinking={...m7},{replacedExisting:X,display:"summarized"}}if(!x$($.model))return null;let J=Object.hasOwn($,"thinking"),W=$.thinking;if(X0(W)&&W.type==="disabled"){$.thinking={type:"disabled"};let X=$.output_config;if(X0(X)&&X.effort==="xhigh")X.effort="high";else if(X0(X)&&X.effort==="max")X.effort="high";return{replacedExisting:J,display:"disabled"}}return $.thinking={...y7},{replacedExisting:J,display:"summarized"}}function LY($){if(!x9($.model))return null;delete $.temperature,delete $.top_p,delete $.top_k;let J=Object.hasOwn($,"thinking");if(X0($.thinking)&&$.thinking.type==="disabled"){$.thinking={type:"disabled"};let W=$.output_config;if(X0(W)&&(W.effort==="xhigh"||W.effort==="max"))W.effort="high";return{replacedExisting:J,display:"disabled"}}return $.thinking={...g7},{replacedExisting:J,display:"summarized"}}function Y8($,J=B4){try{let W=JSON.parse($);return W.model=J,delete W.speed,delete W.fallbacks,q7(W),W8(W),X8(W),{ok:!0,bodyText:JSON.stringify(W)}}catch{return{ok:!1,reason:"body is not valid JSON"}}}function NY($,J){if(!J.enabled)return N7($,!1),delete $.cache_control,delete $.cacheControl,{};if(J.mode==="automatic")return ZY($),{};if(J.mode==="hybrid")return jY($,J.hybridStandbyAnchor);return N7($,!0),delete $.cacheControl,{}}function HY($){if(!Array.isArray($.messages))return 0;for(let J=$.messages.length-1;J>=0;J--){let W=$.messages[J];if(!X0(W)||W.role!=="assistant")continue;if(!Array.isArray(W.content))return 0;if(!W.content.some((V)=>X0(V)&&V.type==="tool_use"))return 0;let X=0;while(W.content.length){let V=W.content[W.content.length-1];if(!X0(V)||V.type!=="text"||typeof V.text!=="string"||V.text.trim())break;W.content.pop(),X++}return X}return 0}var DY=1000,UY=new A7(DY);function QY($,J,W){return UY.resolve($,J,!W)}function w0(){return performance.now()}function H$($){return Math.round($*10)/10}function D7($){let J=0,W=0,X=0,V=Array.isArray($.messages)?$.messages:[];J=V.length;for(let j of V){if(!j||typeof j!=="object")continue;let K=j.content;if(!Array.isArray(K))continue;W+=K.length;for(let N of K)if(N&&typeof N==="object"&&N.type==="tool_use")X++}return{messageCount:J,contentBlockCount:W,toolDefinitionCount:Array.isArray($.tools)?$.tools.length:0,toolUseCount:X,systemBlockCount:Array.isArray($.system)?$.system.length:0}}async function v9($,J={}){try{let W=w0(),X=JSON.parse($);J.perf?.("parse",{ms:H$(w0()-W),inputBytes:$.length,...D7(X)});let V=w0(),j=Array.isArray(X.messages)?X.messages.length:void 0;u7(X.messages);let K=HY(X),N=Array.isArray(X.messages)?X.messages.length:void 0;J.perf?.("strip_trailing_assistant",{ms:H$(w0()-V),removedMessages:typeof j==="number"&&typeof N==="number"?j-N:void 0,removedWhitespaceBlocks:K});let w=w0(),A=OY(X),R=z7(X,J.serverSideFallbackEnabled===!0),c=W8(X),u=_Y(X),n=X8(X),C=LY(X);if(J.perf?.("model_normalize",{ms:H$(w0()-w),model:typeof X.model==="string"?X.model:void 0,fableMythosThinkingDisplay:c?"summarized":void 0,replacedFableMythosThinking:c?.replacedExisting??!1,sonnet5ThinkingDisplay:u?.display,replacedSonnet5Thinking:u?.replacedExisting??!1,opus5ThinkingDisplay:n?.display,replacedOpus5Thinking:n?.replacedExisting??!1,haiku55ThinkingDisplay:C?.display,replacedHaiku55Thinking:C?.replacedExisting??!1,removedNonAnthropicThinking:A,serverSideFallbackEnabled:R.enabled,serverFallbackMarkersRestored:R.restoredMarkers,serverFallbackMarkersDropped:R.droppedMarkers,hasOutputConfig:Object.hasOwn(X,"output_config")}),J.laneStart===!0)X.max_tokens=1,delete X.thinking;M3(X,J.midConversationEffortEnabled===!0,J.midConversationEffortPlan,J.midConversationEffortResolvedPlan),i7(X,J.thinkingPrefixMismatchBehavior??"account-default");let o=w0(),Y0=Array.isArray(X.messages)&&X.messages.some((A1)=>A1.role==="user")?P7(X.messages,void 0,T7,J.sessionId?QY(J.sessionId,X.messages,J.laneStart===!0):void 0,J.billingLineage):null;J.perf?.("billing_header",{ms:H$(w0()-o),hasBillingHeader:Boolean(Y0)});let S0=w0();if(X.system=eX(X.system),J.perf?.("system_identity",{ms:H$(w0()-S0),systemBlockCount:Array.isArray(X.system)?X.system.length:0}),Y0&&Array.isArray(X.system))X.system.unshift({type:"text",text:Y0});let V0=w0(),k0=NY(X,{enabled:J.cache1hEnabled??!1,mode:J.cache1hMode??"explicit",hybridStandbyAnchor:J.hybridStandbyAnchor});if(J.perf?.("cache_strategy",{ms:H$(w0()-V0),enabled:J.cache1hEnabled??!1,mode:J.cache1hMode??"explicit",...k0}),J.fastModeEnabled&&S4(X.model))X.speed="fast";else if(X.speed==="fast")delete X.speed;if(J.cacheDiagnosticsPreviousMessageId!==void 0&&I7(X).split(",").includes(L4))z9(X,J.cacheDiagnosticsPreviousMessageId);let U0=w0();if(J.identity)R7(X,J.identity);J.perf?.("metadata",{ms:H$(w0()-U0),hasAccountUuid:Boolean(J.identity?.accountUuid)});let b=w0();if(J.modelRemapEnabled===!0)f9(X);let K0=lX(X.tools),v=uX(X);J.perf?.("prefix_tools_stringify",{ms:H$(w0()-b),outputBytesBeforeSign:v.length,...D7(X)});let L0=w0(),m$=await E7(v);return J.perf?.("cch_sign",{ms:H$(w0()-L0),outputBytes:m$.length}),J.onToolNameMap?.(K0),m$}catch(W){if(W instanceof T0||W instanceof C4)throw W;return $}}var G8=new TextEncoder;function BY(){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 A9($,J){if(!J)return;$[J]=($[J]??0)+1}function B1($){return G8.encode($).byteLength}function k$($){return $&&typeof $==="object"&&!Array.isArray($)?$:void 0}function i0($,J){let W=$?.[J];return typeof W==="string"?W:void 0}function wY($,J){let W=$?.[J];return typeof W==="number"?W:void 0}function GZ($){if(!$.trim())return null;let J,W=[];for(let c of $.split(/\r?\n/)){if(c.startsWith("event:")){J=c.slice(6).trim();continue}if(c.startsWith("data:")){let u=c.slice(5);W.push(u.startsWith(" ")?u.slice(1):u)}}let X=W.join(`
|
|
16
|
-
`),V={event:J,rawBytes:B1($),dataBytes:B1(X)};if(!X||X==="[DONE]")return V.type=X==="[DONE]"?"done":void 0,V.event??=V.type,V;let j;try{j=JSON.parse(X)}catch{return V}let K=k$(j),N=k$(K?.delta),w=k$(K?.content_block),A=k$(K?.message),R=k$(K?.usage)??k$(A?.usage);if(V.type=i0(K,"type"),V.event??=V.type,V.index=wY(K,"index"),V.contentBlockType=i0(w,"type"),V.deltaType=i0(N,"type"),V.stopReason=i0(N,"stop_reason")??i0(K,"stop_reason"),V.deltaType==="text_delta")V.textDeltaBytes=B1(i0(N,"text")??"");if(V.deltaType==="thinking_delta")V.thinkingDeltaBytes=B1(i0(N,"thinking")??"");if(V.deltaType==="input_json_delta")V.inputJsonDeltaBytes=B1(i0(N,"partial_json")??"");if(V.deltaType==="signature_delta")V.signatureDeltaBytes=B1(i0(N,"signature")??"");if(V.contentBlockType==="redacted_thinking")V.redactedThinkingBytes=B1(i0(w,"data")??"");if(R)V.usage=R,V.stopReason??=i0(A,"stop_reason");if(V.type==="message_start"&&A)V.message=A;return V}function c1($){let J=$.indexOf(`
|
|
17
|
-
|
|
18
|
-
`),W=$.indexOf(`\r
|
|
19
|
-
\r
|
|
20
|
-
`);if(J===-1)return W===-1?null:{index:W,length:4};if(W===-1||J<W)return{index:J,length:2};return{index:W,length:4}}function U7($,J,W,X){if(!J||$.disabled)return;$.pending+=J;while(!0){let V=c1($.pending);if(!V)break;let j=$.pending.slice(0,V.index);$.pending=$.pending.slice(V.index+V.length);let K=GZ(j);if(!K)continue;if($.events++,A9($.eventCounts,K.event??"unknown"),A9($.typeCounts,K.type),A9($.deltaTypeCounts,K.deltaType),A9($.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(G8.encode($.pending).byteLength>W)$.pending="",$.disabled=!0,$.pendingOverflowCount++}function FY(){return{pending:"",completed:!1,disabled:!1,resyncCarry:""}}function TY($,J,W){if(!J||$.completed)return null;if($.disabled){let V=$.resyncCarry+J,j=c1(V);if(!j)return $.resyncCarry=V.slice(-3),null;if($.disabled=!1,$.resyncCarry="",J=V.slice(j.index+j.length),!J)return null}$.pending+=J;let X=null;while(!0){let V=c1($.pending);if(!V)break;let j=$.pending.slice(0,V.index);$.pending=$.pending.slice(V.index+V.length);let K=GZ(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>W){let V=$.pending;$.pending="",$.disabled=!0,$.resyncCarry=V.slice(-3)}return X}function SY(){return{pending:"",disabled:!1}}function Q7($){let J=GZ($);if(J?.type!=="message_delta"||J.stopReason!=="max_tokens")return $;return $.replace(/("stop_reason"\s*:\s*)"max_tokens"/,'$1"end_turn"')}function CY($,J,W,X=!1){if(!J&&!X)return"";if($.disabled)return J;if(new TextEncoder().encode($.pending+J).byteLength>W){let j=$.pending+J;return $.pending="",$.disabled=!0,j}$.pending+=J;let V="";while(!0){let j=c1($.pending);if(!j)break;let K=$.pending.slice(0,j.index),N=$.pending.slice(j.index,j.index+j.length);$.pending=$.pending.slice(j.index+j.length),V+=Q7(K),V+=N}if(X&&$.pending)V+=Q7($.pending),$.pending="";return V}function AY(){return{pending:"",disabled:!1,resyncCarry:""}}function EY($,J){let W=$?.toLowerCase(),X=J.toLowerCase();return W==="api_error"||W==="overloaded_error"||W==="server_error"||W==="internal_server_error"||X.includes("internal server error")||X.includes("server overloaded")}function PY($,J){let W=$?`${$}: ${J}`:J,X=Error(`Anthropic stream error: ${W}`);if(X.code="ECONNRESET",X.syscall="anthropic-sse",$)X.providerErrorType=$;return X}function qY($){let J=x$($)?"Opus 5":"Fable",W=Error(`${J} response was blocked by the provider content filter; retrying with Opus 4.8`);return W.code="ECONNRESET",W.syscall="anthropic-sse",W.providerErrorType="refusal",W}function RY($){if(!$.includes("error"))return null;let J,W=[];for(let A of $.split(/\r?\n/)){if(A.startsWith("event:")){J=A.slice(6).trim();continue}if(A.startsWith("data:")){let R=A.slice(5);W.push(R.startsWith(" ")?R.slice(1):R)}}let X=W.join(`
|
|
21
|
-
`);if(!X||X==="[DONE]")return null;let V;try{V=JSON.parse(X)}catch{return null}let j=k$(V);if(J!=="error"&&i0(j,"type")!=="error")return null;let K=k$(j?.error),N=i0(K,"type")??i0(K,"code")??void 0,w=i0(K,"message")??i0(j,"message")??N??"Anthropic stream error";if(!EY(N,w))return null;return PY(N,w)}function IY($){if(!$.includes("relay_upstream_error"))return;let J=[];for(let W of $.split(/\r?\n/))if(W.startsWith("data:")){let X=W.slice(5);J.push(X.startsWith(" ")?X.slice(1):X)}if(!J.length)return;try{let W=k$(JSON.parse(J.join(`
|
|
22
|
-
`))),X=k$(W?.error);if(i0(X,"type")!=="relay_upstream_error")return;let V=X?.status;if(typeof V==="number"&&Number.isInteger(V))return{status:V,source:"relay_status_field"};let K=i0(X,"message")?.match(/HTTP\s+(\d{3})\b/i);return K?{status:Number(K[1]),source:"relay_message_parse"}:void 0}catch{return}}function B7($,J,W,X){if(!J)return null;if($.disabled){let j=$.resyncCarry+J,K=c1(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 V=null;while(!0){let j=c1($.pending);if(!j)break;let K=$.pending.slice(0,j.index);$.pending=$.pending.slice(j.index+j.length);let N=IY(K);if(N!==void 0)X?.(N);let w=RY(K);V??=w}if(new TextEncoder().encode($.pending).byteLength>W){let j=$.pending;$.pending="",$.disabled=!0,$.resyncCarry=j.slice(-3)}return V}function MY($){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 V8($,J={}){if(!$.body)return $;let W=$.body.getReader(),X=new TextDecoder("utf-8",{ignoreBOM:!0}),V=new TextEncoder,j=J.responseMode==="json",K=nX(J.toolNameMap,j),N=!0,w="",A=0,R=0,c=0,u=0,n=0,C=!1,o=!1,Y0=w0(),S0=w0(),V0=J.perf||J.onMessageStart||J.onMessageDelta?BY():void 0,k0="",U0=0,b=!1,K0=(M0)=>{if(!M0)return;try{M0()}catch{}},v=AY(),L0=J.onContentFilter||J.onComplete?FY():void 0,m$=J.laneStart&&J.laneStartOAuthServed!==!1?SY():void 0,A1=!1,i4=!1,n4=(M0=!1)=>{if(!J.onContentFilter)return!1;if(!A1)A1=!0,i4=J.onContentFilter({completedToolUse:M0})!==!1;return i4},a$=J.serverSideFallbackModel?j7({requestedModel:J.serverSideFallbackModel,maxPendingBytes:E$,onOutcome:J.onServerSideFallbackOutcome,onRefusalAfterToolUse:J.onContentFilter?()=>n4(!0):void 0}):void 0,E1=(M0)=>{if(!L0)return null;let U$=TY(L0,M0,E$);if(U$?.type==="content-filter"&&J.onContentFilter)return n4()?qY(J.contentFilterModel):null;if(U$?.type==="complete")J.onComplete?.(U$.finishReason);return null},r4=(M0,U$=!1)=>m$?CY(m$,M0,E$,U$):M0,_1=()=>{if(o)return;o=!0,W.releaseLock()},WJ=async(M0)=>{try{await W.cancel(M0)}catch{}finally{_1()}},o4=(M0={})=>({chunks:A,pulls:R,inputBytes:c,outputBytes:u,pendingChars:K.pendingLength(),sseErrorPending:v.pending.length,sseFinishPending:L0?.pending.length??0,sseFinishDisabled:L0?.disabled??!1,serverFallbackPending:a$?.pendingLength()??0,rewriteMs:H$(n),totalMs:H$(w0()-S0),...V0?MY(V0):{},...M0}),p$=(M0,U$={})=>{J.perf?.(M0,o4(U$))};J.perf?.("stream_tool_prefix_wrapper_created",{status:$.status,hasBody:!0});let XJ=new ReadableStream({async pull(M0){if(R++,!C)C=!0,p$("stream_tool_prefix_first_pull");while(!0){let U$=w0();try{let{done:o1,value:x0}=await W.read(),V$=H$(w0()-U$);if(o1){let H0=X.decode();if(V0&&!j)U7(V0,H0,E$,(E0)=>{let I1=E0.message;if(E0.type==="message_start"&&I1)K0(()=>J.onMessageStart?.(I1));if(E0.type==="message_delta"&&(E0.usage||E0.stopReason))K0(()=>J.onMessageDelta?.({...E0.usage?{usage:E0.usage}:{},...E0.stopReason?{stopReason:E0.stopReason}:{}}))});if(j){let E0=V.encode(H0).byteLength;if(U0+E0<=E$)k0+=H0,U0+=E0;else b=!0}if(j&&!b)try{let E0=JSON.parse(k0);if(E0&&typeof E0==="object"&&!Array.isArray(E0))K0(()=>J.onMessageResponse?.(E0))}catch{}let B0=w0(),s4=a$?a$.push(H0)+a$.flush():H0,q1=r4(s4,!0),L1=j?E1(q1):B7(v,H0,E$,J.onRelayUpstreamError)??E1(q1);if(L1)throw p$("stream_tool_prefix_retryable_error",{providerErrorType:L1.providerErrorType}),await WJ(L1),L1;let R1=K.push(q1,!0);if(n+=w0()-B0,R1||w){let E0=V.encode(w+R1);w="",u+=E0.byteLength,M0.enqueue(E0)}if(p$("stream_tool_prefix_rewrite",{readMs:V$}),_1(),J.onStreamEnd)try{await J.onStreamEnd()}catch{}M0.close();return}A++,c+=x0.byteLength;let O$=X.decode(x0,{stream:!0});if(N&&O$){if(N=!1,O$.charCodeAt(0)===65279)w=O$[0]??"",O$=O$.slice(1)}if(j){let H0=x0.byteLength;if(U0+H0<=E$)k0+=O$,U0+=H0;else b=!0}if(V0&&!j)U7(V0,O$,E$,(H0)=>{let B0=H0.message;if(H0.type==="message_start"&&B0)K0(()=>J.onMessageStart?.(B0));if(H0.type==="message_delta"&&(H0.usage||H0.stopReason))K0(()=>J.onMessageDelta?.({...H0.usage?{usage:H0.usage}:{},...H0.stopReason?{stopReason:H0.stopReason}:{}}))});let s1=w0(),YJ=a$?a$.push(O$):O$,X$=r4(YJ),t$=j?E1(X$):B7(v,O$,E$,J.onRelayUpstreamError)??E1(X$);if(t$)throw p$("stream_tool_prefix_retryable_error",{providerErrorType:t$.providerErrorType,readMs:V$,lastChunkBytes:x0.byteLength}),_1(),t$;let e$=K.push(X$);if(n+=w0()-s1,e$){let H0=V.encode(w+e$);w="",u+=H0.byteLength,M0.enqueue(H0)}let P1=w0();if(A===1||A%25===0||P1-Y0>5000)Y0=P1,p$("stream_tool_prefix_progress",{readMs:V$,lastChunkBytes:x0.byteLength});if(e$)return}catch(o1){let x0=JZ(o1,J.toolNameMap);if(p$("stream_tool_prefix_error"),x0 instanceof A4)await ZZ(W,x0),o=!0,K0(J.onToolNameRefusal);else _1();throw x0}}},async cancel(M0){p$("stream_tool_prefix_cancel");try{await W.cancel(M0)}finally{_1()}}});return new Response(XJ,{status:$.status,statusText:$.statusText,headers:$.headers})}var K8="physical send failed before a response",fY="__OPENCODE_ANTHROPIC_AUTH_COMMAND_HANDLED__",z8="~effect/http/HttpServerResponse",j8="~effect/http/Cookies",O8="~effect/http/HttpBody",kY="~effect/ErrorReporter/ignore",vY="https://api.anthropic.com/v1/messages",r5=new WeakSet;function o5($){let J=new Response(JSON.stringify({type:"error",error:{type:"invalid_request_error",message:$}}),{status:400,headers:{"content-type":"application/json"}});return r5.add(J),J}function KZ($,J){return($.status!==400||!r5.has($))&&A8($.status,J)}function _8($){return k.warn("effort-history","refused uncorrelated Fable 5.1 request",{check:$.check,...$.details}),o5($.message)}function L8($){return k.warn("transform","refused request ending on assistant history",{check:$.check,...$.details}),o5($.message)}var hY=60000,N8=60000,s5=240,bY=s5,gY=600000;function yY($,J){return($?.accounts??[]).some((W)=>W.id===J&&W.enabled!==!1&&D0(W))}function mY($){let J=($?.accounts??[]).find((W)=>W.enabled!==!1&&D0(W));if(y$($)==="fallback-first"&&J)return{activeId:J.id,route:"fallback-first"};return{activeId:"main",route:"main"}}function H8($,J){if($?.activeId==="main"||$?.activeId&&yY(J,$.activeId))return $;return mY(J)}function a5($,J,W){let X=Date.now()-$.lastUpdated;if(!$.activeId||X<0||X>gY)return H8(W,J);return H8($,J)}async function pY($,J,W){let X;try{X=await J()}catch(V){return k.warn("sidebar","account storage reload failed; routing preserved",{message:V instanceof Error?V.message:String(V)}),{...$.activeId?{activeId:$.activeId,route:$.route}:W??{activeId:"main",route:"main"},freshStorage:null}}return{...a5($,X,W),freshStorage:X}}async function cY($){await $J()?.beforeStorageLoad?.();let J;try{J=await $()}catch{return{activeId:"main",route:"main",freshStorage:null}}finally{await $J()?.afterStorageLoad?.()}await $J()?.beforeSidebarRead?.();let W=await i5();return{...a5(W,J),freshStorage:J}}var lY=4,uY=25,dY=1,D8=!1;function JJ(){return process.env.OPENCODE_ANTHROPIC_AUTH_PERF==="1"}function J0(){return performance.now()}function A0($){return Math.round($*10)/10}function U8($){return Math.floor(Math.random()*Math.max(0,$))}function h9($){if(typeof $==="string")return $;if($ instanceof URL)return $.toString();return $.url}function F1($,J){return J?.method??($ instanceof Request?$.method:void 0)}async function q4($,J){if(J?.body!==void 0)return J.body;if(!($ instanceof Request)||$.body===null)return;try{return await $.clone().text()}catch{return}}function iY(){if(D8||!1||!JJ())return;D8=!0;let $=100,J=250,W=J0()+$;setInterval(()=>{let X=J0(),V=X-W;if(W=X+$,V<J)return;q$("[perf] opencode event_loop_lag",{lagMs:A0(V),thresholdMs:J})},$).unref?.()}function nY($){let J=J0(),W={requestId:String(dY++),start:J,last:J,mark(X,V){let j=J0();if(JJ())q$("[perf] opencode request stage",{requestId:W.requestId,stage:X,deltaMs:A0(j-W.last),totalMs:A0(j-W.start),...V});W.last=j},done(X,V){let j=J0();if(JJ())q$("[perf] opencode request done",{requestId:W.requestId,stage:X,deltaMs:A0(j-W.last),totalMs:A0(j-W.start),...V});W.last=j}};if(JJ())q$("[perf] opencode request start",{requestId:W.requestId,...$});return W}function t5($,J){let W=/^msg_([0-9a-fA-F]{12})/.exec($);if(!W)return;let X=BigInt(`0x${W[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 Q8($,J,W,X={}){let V=$.client.session,j=await H9($.client,J),K={path:{id:J},body:{noReply:X.noReply??!0,parts:[{type:"text",text:W,ignored:!0}]}};if(X.beforeActiveAssistant){let N=X.latestPreparedMessageId?.(),w=j?.latestUserMessageId,A=N&&(!w||N>w)?N:w,R=j?.latestAssistantMessageId?t5(j.latestAssistantMessageId,A):void 0;if(!R)return!1;K.body.messageID=R}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 V?.promptAsync==="function")return await V.promptAsync(K),!0;if(typeof V?.prompt==="function")return await Promise.resolve(V.prompt(K)),!0;throw Error("OpenCode session prompt API is unavailable for ignored replies.")}function rY(){throw Object.assign(Error(fY),{[z8]:z8,[kY]:!0,status:204,statusText:void 0,headers:{},cookies:{[j8]:j8,cookies:{}},body:{[O8]:O8,_tag:"Empty"}})}function oY($){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 sY($){if($.some((J)=>J.includes("<use_parallel_tool_calls>")))return!1;return $.push(w8),!0}var aY={input:0,output:0,cache:{read:0,write:0}},tY=1000;function D$($){return $}var eY="Fable content filter detected. Switched to Opus 4.8 for a 10-response recovery window while keeping the Fable cache warm.",$G="Fable recovery window complete. Returning to Fable 5.";function JG($){if(x$($))return"Opus 5 content filter detected. Switched to Opus 4.8 for a 10-response recovery window while keeping the Opus 5 cache warm.";if(w1($)){let J=d4($);return`${J} content filter detected. Switched to Opus 4.8 for a 10-response recovery window while keeping the ${J} cache warm.`}return eY}function ZG($){if(x$($))return"Opus 5 recovery window complete. Returning to Opus 5.";if(w1($))return`Recovery window complete. Returning to ${d4($)}.`;return $G}function d4($){if(g1($))return"Opus 5.5";if(x$($))return"Opus 5";if(w1($)){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 WG($,J){return`Anthropic safety fallback active: ${d4($)} → ${d4(J)}. Follow-up requests may remain on the fallback model for about one hour.`}function XG($){return`Anthropic safety fallback ended. Returning to ${d4($)}.`}function YG(){return{input:m4.input,output:m4.output,cache:{read:m4.cacheRead,write:m4.cacheWrite5m},tiers:[{tier:{type:"context",size:G5},input:p4.input,output:p4.output,cache:{read:p4.cacheRead,write:p4.cacheWrite5m}}]}}function GG($){let J=$["claude-opus-4-8"]??$["claude-opus-4-5"]??Object.values($)[0];if(!J)return $;return{...$,...Object.fromEntries(Object.values(t8).map((W)=>{let X=w1(W.id)?o8:r8;return[W.id,{...J,id:W.id,name:W.name,api:J.api?{...J.api,id:W.id}:void 0,cost:{input:X.input,output:X.output,cache:{read:X.cacheRead,write:X.cacheWrite5m}},limit:{...J.limit??{},context:s8,output:a8},capabilities:{...J.capabilities??{},reasoning:!0,attachment:!0,toolcall:!0},release_date:e8(W.id)}]})),...$[y4]?{}:{[y4]:{...J,id:y4,name:"Claude Haiku 5.5",api:J.api?{...J.api,id:y4}:void 0,cost:YG(),limit:{...J.limit??{},context:X5,output:Y5},capabilities:{...J.capabilities??{},reasoning:!0,attachment:!0,toolcall:!0},release_date:W5,variants:ZJ()}},...$[b4]?{}:{[b4]:{...J,id:b4,name:"Claude Sonnet 5.5",api:J.api?{...J.api,id:b4}:void 0,cost:{input:g4.input,output:g4.output,cache:{read:g4.cacheRead,write:g4.cacheWrite5m}},limit:{...J.limit??{},context:J5,output:Z5},capabilities:{...J.capabilities??{},reasoning:!0,attachment:!0,toolcall:!0},release_date:$5,variants:ZJ()}},...$[c4]?{}:{[c4]:{...J,id:c4,name:"Claude Opus 5.5",api:J.api?{...J.api,id:c4}:void 0,cost:{input:l4.input,output:l4.output,cache:{read:l4.cacheRead,write:l4.cacheWrite5m}},limit:{...J.limit??{},context:K5,output:z5},capabilities:{...J.capabilities??{},reasoning:!0,attachment:!0,toolcall:!0},release_date:V5,variants:ZJ()}}}}var VG=["low","medium","high","xhigh","max"];function ZJ(){return Object.fromEntries(VG.map(($)=>[$,{thinking:{type:"adaptive",display:"summarized"},effort:$}]))}function KG($){return Object.fromEntries(Object.entries($).map(([J,W])=>{let X=W.api?.id??W.id??J;return[J,j5(X)||V1(X)||M9(X)||x9(X)?{...W,variants:ZJ()}:W]}))}function zG($){return Object.fromEntries(Object.entries($).map(([J,W])=>[J,{...W,cost:aY}]))}function B8(){return process.env.OPENCODE_ANTHROPIC_AUTH_CLAUSTRUM_CONNECTION_FILE?.trim()||process.env.CLAUSTRUM_SUBC_CONNECTION?.trim()||void 0}var jG=async($,J={})=>{let W={setTimeout:globalThis.setTimeout,clearTimeout:globalThis.clearTimeout,setInterval:globalThis.setInterval,clearInterval:globalThis.clearInterval,...J},X=J.authorize??jZ;iY();let{client:V}=$,j=globalThis.fetch,K=S8(),N=600000,w=50,A=new Map;function R(){let Z=Date.now();for(let[Y,G]of A)if(Z-G.createdAt>N)A.delete(Y)}function c(Z,Y){if(R(),A.size>=w){let G="",z=1/0;for(let[O,_]of A)if(_.createdAt<z)z=_.createdAt,G=O;if(G)A.delete(G)}A.set(Z,Y)}function u(Z){R();let Y=A.get(Z);if(!Y)return;if(Date.now()-Y.createdAt>N){A.delete(Z);return}return Y}let n=await w5(K),C=B5({paths:n,host:"opencode",local:J.nativeLocal,vault:J.claustrumScopedConnect?{connect:J.claustrumScopedConnect}:void 0}),o=new Map,Y0=null;function S0(Z){return Z?.identity?JSON.stringify([Z.storageId,Z.rowId,Z.credentialEpoch,Z.identity]):void 0}function V0(Z,Y){return Z?S0(Z.binding):Y?JSON.stringify([Y.credentialId,Y.accountIdentity,Y.recordVersion]):void 0}function k0(Z,Y,G,z=Y0){let O=o.get(Z);if(!O||!Y||O.lineage!==Y||O.accountUuid!==G||j1(O.entry.quota,z,O.entry.checkedAt)<=Date.now())return;return O}function U0(Z,Y,G,z,O=Y0){let _=k0(Z,Y,G,O);if(!_)return z;if(!z)return{..._.entry,refreshAfter:j1(_.entry.quota,O,_.entry.checkedAt)};let H=OZ(z.quota,_.entry.quota);return{..._.entry,quota:H,refreshAfter:j1(H,O,u1(H))}}function b(Z,Y,G){if(!o.has(Z.id))return Z.quota;let z=Z.binding?S0(Z.binding):V0(void 0,G),O=u1(Z.quota);return U0(Z.id,z,Z.accountIdentity,Z.quota?{quota:Z.quota,checkedAt:O,refreshAfter:j1(Z.quota,Y,O)}:null,Y)?.quota}let K0;async function v(Z=K){if(Z!==K)throw Error("Native account storage mismatch");let Y=await C.read();if(Y0=Y.policyStorage,!K0){let O=Y.accounts.find((_)=>_.id==="main")?.binding;if(O)K0={rowId:O.rowId,credentialEpoch:O.credentialEpoch}}if(Y.mode!=="claustrum")return Y.policyStorage;let G=Y.accounts.find((O)=>O.id==="main"&&O.source==="vault"),z=D$(G?.accountIdentity);return{...Y.policyStorage,claustrum:{...Y.policyStorage.claustrum,mode:"claustrum",scopedRoster:!0,primaryAccount:G?.credentialId&&z?{credentialId:G.credentialId,accountId:z,state:G.state??"cold"}:void 0}}}async function L0(Z,Y){return await C.updateSettings((G)=>S5(G,Z,Y)),v()}let m$=async(Z)=>{return await C.updateSettings((Y)=>({...Y,claudeCache:{...T5(Y.claudeCache),enabled:Z,mode:d1({...Y,version:1,accounts:[]})}})),v()},A1=(Z)=>L0("claudeCache",{mode:Z}),i4=(Z)=>L0("cacheKeep",{enabled:Z}),n4=async()=>{return await C.updateSettings(C5),v()},a$=(Z,Y)=>L0("cacheKeep",{enabled:!0,always:!1,startHour:Z,endHour:Y}),E1=(Z)=>L0("cacheKeep",{subagents:Z}),r4=(Z)=>L0("dump",{enabled:Z}),_1=(Z)=>L0("claudeFast",{enabled:Z}),WJ=async(Z)=>{return await C.setLoggingLevel(Z),v()},o4=(Z,Y=K)=>L0("prime",{enabled:Z}),p$=(Z,Y=K)=>L0("routing",{mode:Z}),XJ=(Z)=>L0("killswitch",Z),M0=(Z,Y,G=K)=>C.setEnabled(Z,Y),U$=(Z,Y=K)=>C.remove(Z),o1=(Z,Y=K,G)=>C.reorder(Z,G),x0=null;try{x0=await v()}catch{}function V$(Z){return Boolean(Z&&C$(Z)==="claustrum"&&Z.claustrum?.scopedRoster===!0)}function O$(Z=K,Y=$.directory){if(Z!==K)throw Error("Native vault storage mismatch");return C.vault}let s1=A5("native-auth");async function YJ(Z=K){LJ?.close(),await s1.drain(),C.close()}function X$(){if(process.env.OPENCODE_AUTH_CONTENT!==void 0)throw Error("Native OAuth cannot serve while OPENCODE_AUTH_CONTENT is set")}function t$(Z){let Y=D$(Z);if(!Y)throw Error("Native wire identity requires an admitted provider account");return M8(Y,Y)}class e$ extends Error{account;checkIntervalMs;constructor(Z,Y){super("OAuth account cannot serve the requested model under current quota policy");this.account=Z;this.checkIntervalMs=Y}}class P1 extends Error{constructor(){super("Native OAuth requires a Claude Pro/Max credential. An API key belongs in OpenCode stock Anthropic authentication.")}}class H0 extends Error{account;tokenRefreshFailed;failure;constructor(Z,Y,G=!1,z){super(z?.kind==="provider"&&z.status!==void 0?`Claude OAuth refresh failed: ${z.status} — ${z.classification==="invalid-grant"?"invalid_grant":"OAuth operation failed"}`:`Native OAuth authorization refused: ${Y}`);this.account=Z;this.tokenRefreshFailed=G;this.failure=z}}async function B0(Z,Y,G,z,O="serve",_){X$(),Y?.throwIfAborted();let H=_??await C.read(),L=H.accounts.find((m)=>m.id===Z);if(L?.state==="unsupported-access")throw new P1;if(L?.source==="vault"&&(!L.enabled||L.state!=="active"))throw new H0(L,"not-active");if(L?.type!=="oauth"||!L.enabled)throw Error("Native OAuth account is unavailable");let F=(m,O0,_0)=>{let F0=b(m,O0,_0),Q0=O==="last-main"&&Z==="main"&&y$(O0)!=="sticky-balanced";if(z&&(b$(O0)&&!N$(F0,O0,Z==="main"?void 0:Z,z)||!Q0&&!x4(F0,z)))throw new e$(m,LZ(O0))};F(L,H.policyStorage);let U;if(L.source==="vault"){let m=await C.authorizeVault(Z,Y).catch((O0)=>{if(Y?.throwIfAborted(),O0 instanceof L5&&["not-active","route-declined","route-unavailable"].includes(O0.code))throw new H0(L,O0.code);throw O0});U={accessToken:m.accessToken,expires:m.expiresAtMs??void 0,accountIdentity:m.accountIdentity,scopedAttempt:m}}else{let m=await C.authorizeLocal(Z,{signal:Y,rejectedAccessToken:G,intent:G?"refresh":O==="last-main"?"serve":O});if(m.status!=="usable")throw new H0(L,m.status,m.status==="failed"&&m.failure.kind==="provider",m.status==="failed"?m.failure:void 0);U={accessToken:m.access,expires:m.expires,accountIdentity:m.binding.identity,localSubject:m.subject,localSource:m.source}}let E=await C.read(),x=E.accounts.find((m)=>m.id===Z);if(Y?.aborted)throw Y.reason??Error("Request aborted");if(!x?.enabled||x.source!==L.source||x.accountIdentity!==U.accountIdentity)throw Error("Native OAuth account changed before dispatch");if(U.localSubject&&(!x.binding||x.binding.storageId!==U.localSubject.binding.storageId||x.binding.rowId!==U.localSubject.binding.rowId||x.binding.credentialEpoch!==U.localSubject.binding.credentialEpoch||x.binding.identity!==U.localSubject.binding.identity))throw Error("Native local account binding changed before dispatch");if(U.scopedAttempt&&x.credentialId!==U.scopedAttempt.credentialId)throw Error("Native vault credential binding changed before dispatch");return F(x,E.policyStorage,U.scopedAttempt),U}async function s4(Z,Y){let z=(await C.read()).accounts.find((_)=>_.id===Z);if(z?.type!=="oauth")throw Error("Native OAuth account is unavailable");let O=z.source==="vault"?await C.authorizeVault(Z,Y):await C.captureLocalSubject(Z);if(!await C.resetBackoff(Z,O))throw Error("Native reset fence changed")}let q1=new WeakMap,L1=new WeakSet;async function R1(Z,Y){if(L1.has(Z))return;L1.add(Z),await C.vault.reportFailure(Z,401,Y).catch(()=>{k.warn("claustrum","native auth-failure report unavailable")})}async function E0(Z,Y,G){let z=await C.vault.prepareRetry(Z,G,Y);return z.retry?z.receipt:void 0}let I1=K7(process.env.OPENCODE_ANTHROPIC_AUTH_FALLBACK_MODE),c$=new nJ,GJ=new sJ,a1=new dJ,M1=new fJ,R$=new Map,Q$=new Map,l$=new Map,a4=new Map,J$=new Set,VJ=new Map,t4=new Map,u$=new Map,t1=new Map,qZ=new Map;async function RZ(){let Z=await C.read(),Y=Z.routingPath;if(!Y)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 O of Z.accounts)if(O.source==="vault"&&O.accountIdentity)G.set(O.id,O.accountIdentity)}let z=qZ.get(Y);if(!z)z=new Q5({path:Y,vaultSeed:Z.routingSeed,localRecoveryPath:Z.mode==="local"?Z.routingRecoveryPath:void 0}),qZ.set(Y,z);return z.setVaultSeed(Z.routingSeed),{router:z,...G&&{accountIdentities:G}}}let h=new v5({storage:x0,fetchQuotaSnapshot:(Z,Y)=>{X$();let G=Z.kind==="main"?"main":Z.accountId;if(!G)throw Error("Quota request has no account identity");return C.fetchQuota(G,void 0,void 0,Y)}});function e1(Z){return["five_hour","seven_day"].some((Y)=>(Z?.[Y]?.remainingPercent??1)<=0)}function IZ(Z,Y,G=!1){if(!Z||Z.quota?.enabled===!1||!Y||y$(Z)==="sticky-balanced"||h$(Z.refresh?.mainLastRefreshError))return;let z=Date.now(),O=Z.quota?.mainLastQuotaApiError;if(O&&O.accountIdentity===Y&&O.nextRetryAt!==void 0&&O.nextRetryAt>z)return{message:_Z(O,z),retryAfter:Math.max(1,Math.ceil((O.nextRetryAt-z)/1000))};let _=Z.quota?.mainQuota,H=u1(_);if(_?.accountIdentity!==Y||_.source==="headers"&&!G||!e1(_)||H<=0||H>z||j1(_,Z,H)<=z)return;let L=["five_hour","seven_day"].flatMap((F)=>{let U=_[F],E=U?.resetsAt?Date.parse(U.resetsAt):Number.NaN;return U&&U.remainingPercent<=0&&Number.isFinite(E)&&E>z?[E]:[]});return{message:"Claude OAuth quota is exhausted for this account.",retryAfter:Math.max(1,Math.ceil(((L.length?Math.max(...L):z+LZ(Z))-z)/1000))}}async function MZ(Z,Y,G){if(TJ===Z&&_$===Y)return;let z=H1!==void 0&&G!==void 0&&H1!==G;TJ=Z,_$=Y,h.setMainQuotaAccountIdentity(Y,!0,z)}async function $4(Z,Y,G,z){let O=Z,_=W9.get(O);if(_){let L=await _.promise;return z===_.recordVersion?L:{...L,stale:!0}}let H=(async()=>{let L=++iZ,F=X4,U=await C.read(),E=U.policyStorage,x=U.accounts.find((s0)=>s0.id==="main")?.accountIdentity,m=t$(G??x),O0=U.mode==="claustrum",_0=O0?E?.claustrum?.primaryAccount?.accountId:void 0;if(G!==void 0&&G!==x||O0&&G===void 0)return{quotaKey:void 0,providerAccountUuid:void 0,generation:h.getMainQuotaIdentityGeneration(),stale:!0,state:"on-identity-mismatch"};let F0=x??_0??F,Q0=E?.main?.profile?.providerAccountUuid??E?.main?.profile?.accountIdentity,Z$=D$(G)??D$(m.accountUuid),C0=G?Z$:Z.startsWith("sk-ant-oat")?Z$??D$(Q0):void 0,n$=C$(E)!=="claustrum"?"na":Q0===void 0||Z$===void 0?"unknown-identity":Q0!==void 0&&Z$!==void 0&&Q0!==Z$?"on-identity-mismatch":"on-vault-served";if(L!==iZ){let s0=TJ!==Z||_$!==F0;return{quotaKey:F0,providerAccountUuid:C0,generation:h.getMainQuotaIdentityGeneration(),stale:s0,state:n$}}if(await MZ(Z,F0,C0),Z.startsWith("sk-ant-oat")&&C0===void 0)h.clearMain();if(H1=C0,Z.startsWith("sk-ant-oat"))Y4=Z;return{quotaKey:F0,providerAccountUuid:C0,generation:h.getMainQuotaIdentityGeneration(),stale:!1,state:n$}})();W9.set(O,{promise:H,recordVersion:z});try{return await H}finally{if(W9.get(O)?.promise===H)W9.delete(O)}}let KJ=x0?.quotaHeaderFeed?.enabled===!0?new x5:null,$1=new Map,J1=new Set,Z1=new AbortController,xZ=!1;function zJ(Z,Y){return JSON.stringify([Z,Y??null])}async function e5(Z,Y){if(!Z?.profile||!o9(Z.profile,Y)||!await Z.isCurrent?.())return;return Z.persistence==="refused"?void 0:Z.profile}function $W(Z,Y,G){X$();let z=!1,O=Object.assign((H,L)=>{return z=!0,j(H,L)},{preconnect:j.preconnect}),_={fetched:Promise.resolve(),...G&&{deadline:G}};return _.fetched=C.fetchProfileForDisplay(Z.id,O,AbortSignal.any([Z1.signal,...G?[G]:[]])).then(({profile:H,persisted:L,isCurrent:F})=>{if(_.settled=!0,Z.accountIdentity===void 0||H.accountIdentity===Z.accountIdentity)_.profile=H,_.isCurrent=F,_.persistence="pending";let U=L.then(async(E)=>{if(_.persistence=E,E==="failed")k.warn("quota","failed to persist account profile",{account:Z.id});else if(E==="refused")k.debug("quota","refused account profile publication",{account:Z.id});if(E==="saved"&&!Z1.signal.aborted)try{let x=await C.read();if(!Z1.signal.aborted)await w$(x.policyStorage,{...o0,routingAuthoritative:!1})}catch{k.debug("quota","failed to publish account profile to sidebar",{account:Z.id})}});J1.add(U),U.then(()=>J1.delete(U))},(H)=>{if(_.settled=!0,k.debug("quota","failed to hydrate account profile",{account:Z.id,error:H instanceof Error?H.message:String(H)}),!z&&$1.get(Y)===_)$1.delete(Y)}),J1.add(_.fetched),_.fetched.then(()=>J1.delete(_.fetched)),_}function JW(Z,Y){let G=[Y,Z.deadline].filter((O)=>O!==void 0);if(!G.length)return Z.fetched;let z=AbortSignal.any(G);if(z.aborted)return Promise.resolve();return new Promise((O)=>{let _=()=>{z.removeEventListener("abort",_),O()};z.addEventListener("abort",_,{once:!0}),Z.fetched.then(_)})}function fZ(Z,Y){return o9(Z.profile,Y)&&l8(Z.profile,Z.accountIdentity)}async function e4(Z){let Y=await C.read();if(process.env.OPENCODE_ANTHROPIC_AUTH_DISABLE_PROFILE_HYDRATION==="1")return Y;let G=Date.now(),z=[],O=new Map;for(let L of Y.accounts){if(L.type!=="oauth"||!L.enabled||fZ(L,G))continue;let F=zJ(L.id,L.accountIdentity),U=$1.get(F);if(!U&&L.accountIdentity!==void 0){let E=$1.get(zJ(L.id));if(E&&!E.settled)U=E,O.set(L.id,E)}if(!U||U.profile&&!o9(U.profile,G)){if(Z?.aborted||Z1.signal.aborted)continue;U=$W(L,F,Z),$1.set(F,U)}if(L.accountIdentity===void 0)O.set(L.id,U);z.push(JW(U,Z))}if(!z.length)return Y;await Promise.all(z);let _=await C.read(),H=Date.now();for(let L of _.accounts){if(L.type!=="oauth")continue;let F=zJ(L.id,L.accountIdentity),U=O.get(L.id);if(U&&L.accountIdentity!==void 0&&!$1.has(F)&&(!U.profile||U.profile.accountIdentity===L.accountIdentity))$1.set(F,U);if(fZ(L,H))continue;let E=await e5($1.get(F),H);if(!E||E.accountIdentity!==L.accountIdentity)continue;if(L.profile=E,L.id==="main"){if(_.policyStorage.main)_.policyStorage.main.profile=E}else for(let x of _.policyStorage.accounts)if(x.id===L.id&&D0(x))x.profile=E}return _}async function ZW(Z,Y,G,z){if(process.env.OPENCODE_ANTHROPIC_AUTH_DISABLE_PROFILE_HYDRATION==="1")return Z;return(await e4(G)).policyStorage}let kZ=new Set;async function WW(Z,Y,G){let O=(await C.read()).accounts.find((U)=>U.id===Z.accountId);if(!O||!Z.anthropicAccountUuid||O.accountIdentity!==Z.anthropicAccountUuid)return null;let _={...OZ(O.quota,Y.quota),accountIdentity:O.accountIdentity};if(!(Z.scopedAttempt?await C.vault.publish(Z.scopedAttempt,{quota:_}):Z.localSubject?await C.publishLocal(Z.localSubject,{quota:_}):!1)){if(Z.accountId==="main"){if(h.getMain(Z.mainQuotaIdentity?.quotaKey)===G)h.clearMain()}else if(h.getAllFallbacks().get(Z.accountId)===G)h.clearFallback(Z.accountId);return k.debug("quota","native quota publication refused",{accountId:Z.accountId}),null}let L=await C.read(),F=L.accounts.find((U)=>U.id===Z.accountId);if(!F?.quota||F.accountIdentity!==Z.anthropicAccountUuid||F.source!==O.source)return null;if(Z.localSubject&&F.binding?.credentialEpoch!==Z.localSubject.binding.credentialEpoch)return null;if(Z.scopedAttempt&&F.credentialId!==Z.scopedAttempt.credentialId)return null;return{...Y,quota:F.quota,refreshAfter:j1(F.quota,L.policyStorage,Y.checkedAt)}}function XW(Z){k.warn("quota","failed to persist harvested response quota",{error:Z instanceof Error?Z.message:String(Z)})}function YW(Z){let Y=Z instanceof Error?Z.name:typeof Z,G=Z instanceof Error?Z.message:String(Z),z=`${Y}:${G}`;if(kZ.has(z))return;kZ.add(z),k.warn("quota","failed to normalize response quota headers",{error:G})}function GW(Z){if(!Z||typeof Z!=="object")return;let Y=Z,G=Y.credential_id;if(typeof G==="string"&&G&&G!=="main")return G;let z=Y.vault;if(z&&typeof z==="object"){let O=z.credential_id;if(typeof O==="string"&&O&&O!=="main")return O}return}async function VW(Z,Y){if(!KJ)return;if(Z.accountId==="main"&&!Z.mainQuotaIdentity?.quotaKey)return;let G=await v(K)??v$(),O=(await W1?.())?.type==="oauth",_=Z.accountId==="main"?G.main:G.accounts.find((m)=>m.id===Z.accountId),H=GW(_),L=M5({storage:G,mainOAuthConfigured:O}),F=Y.checkedAt,U={five_hour:Y.quota.five_hour,seven_day:Y.quota.seven_day,bindingWindow:Y.quota.bindingWindow,fallbackAdvised:Y.quota.fallbackAdvised,scoped:Y.quota.scoped,extraUsage:Y.quota.extraUsage,fieldSources:Y.quota.fieldSources},E=H??(Z.accountId==="main"?Z.mainQuotaIdentity?.quotaKey??"main":Z.accountId),x=H?{identity_source:"credential_id",credential_id:H,schema_version:u4,provider:"anthropic",configured_account_count:L,observed_at_ms:F,anthropic_account_uuid:Z.anthropicAccountUuid??null,quota:U,accountKey:E}:Z.accountId==="main"&&Z.mainQuotaIdentity?.quotaKey?{identity_source:"account_ref",account_ref:Z.mainQuotaIdentity.quotaKey,schema_version:u4,provider:"anthropic",configured_account_count:L,observed_at_ms:F,anthropic_account_uuid:Z.anthropicAccountUuid??null,quota:U,accountKey:E}:Z.accountId==="main"?{identity_source:"none",schema_version:u4,provider:"anthropic",configured_account_count:L,observed_at_ms:F,anthropic_account_uuid:Z.anthropicAccountUuid??null,quota:U,accountKey:E}:{identity_source:"account_ref",account_ref:Z.accountId,schema_version:u4,provider:"anthropic",configured_account_count:L,observed_at_ms:F,anthropic_account_uuid:Z.anthropicAccountUuid??null,quota:U,accountKey:E};await KJ.publish(x)}function KW(Z){k.debug("quota","failed to publish quota header feed",{error:Z instanceof Error?Z.message:String(Z)})}function vZ(Z,Y){try{if(!f5(Z)){k.trace("quota","skipped non-quota response headers",{account:Y.accountId});return}let G=k5(Z),z=Y.accountId==="main"?Y.mainQuotaIdentity:void 0;if(Y.accountId==="main"){if(!z||h.getMainQuotaIdentityGeneration()!==z.generation){k.trace("quota","discarded stale main quota headers",{boundIdentity:z?.quotaKey,currentGeneration:h.getMainQuotaIdentityGeneration()});return}}let O=Y.accountId==="main"?h.getMain(z?.quotaKey):h.getAllFallbacks().get(Y.accountId),_=G.checkedAt??Date.now(),H=V0(Y.localSubject,Y.scopedAttempt),L=H&&Y.anthropicAccountUuid?{lineage:H,accountUuid:Y.anthropicAccountUuid,entry:{quota:{...G,accountIdentity:Y.anthropicAccountUuid},checkedAt:_,refreshAfter:_},generalExhausted:["five_hour","seven_day"].some((F)=>{let U=Z.get(F==="five_hour"?"anthropic-ratelimit-unified-5h-utilization":"anthropic-ratelimit-unified-7d-utilization");return G[F]!==void 0&&U!==null&&Number.isFinite(Number(U))&&Number(U)>=1})}:void 0;if(L){if(o.delete(Y.accountId),o.size>=tY){let F=o.keys().next().value;if(F!==void 0)o.delete(F)}o.set(Y.accountId,L)}(async()=>{let F=!1;try{let U;try{U=await WW(Y,{quota:G,checkedAt:_,refreshAfter:_},O)}catch(x){XW(x);return}if(U===null)return;if(Y.accountId==="main"&&h.getMainQuotaIdentityGeneration()!==z?.generation)return;let E=U;if(L&&o.get(Y.accountId)===L)L.entry=E,F=!0;if(Y.accountId==="main")h.setMain(z?.quotaKey,E);else h.setFallback(Y.accountId,E,{authLineageId:Y.authLineageId});W4().catch(()=>{}),await VW(Y,E),k.debug("quota","harvested response quota",{account:Y.accountId,fiveHourPercent:E.quota.five_hour?.usedPercent,sevenDayPercent:E.quota.seven_day?.usedPercent,source:"headers"})}finally{if(!F&&L&&o.get(Y.accountId)===L)o.delete(Y.accountId),k.debug("quota","discarded pending response quota",{accountId:Y.accountId})}})().catch(KW),k.trace("quota","response quota awaiting publication",{account:Y.accountId})}catch(G){YW(G)}}let hZ=Promise.resolve();function x1(Z=!1,Y=!1){let G=hZ.then(()=>zW(Z,Y));return hZ=G.then(()=>{},()=>{}),G}async function zW(Z,Y){let G=await C.read(),z=new Set;if(!Z&&!Y&&G.policyStorage.quota?.enabled===!1)return z;for(let O of G.accounts){if(O.id==="main"||O.type!=="oauth")continue;if(!O.enabled){if(Y)z.add(O.id);continue}if(!Z&&j1(O.quota,G.policyStorage,u1(O.quota))>Date.now())continue;try{if(!await h.refreshFallback(O.id,"",G.policyStorage.accounts.find((H)=>H.id===O.id&&D0(H))))z.add(O.id),k.debug("quota","fallback quota preflight returned no reading",{accountId:O.id,requiredByPolicy:Y})}catch(_){if(Y&&O1(_))throw _;z.add(O.id),k.warn("quota","fallback quota preflight could not obtain a reading",{accountId:O.id,requiredByPolicy:Y})}}return W4().catch(()=>{}),z}let jJ={refreshQuotaForDueAccounts:async()=>{await x1()},refreshQuotaForAllAccounts:async(Z)=>{await x1(!0)},refreshAccount:async(Z,Y,G)=>{let z=await B0(Z.id,void 0,G?.force?Z.access:void 0);return{...Z,access:z.accessToken,expires:z.expires}},refreshAccountQuota:async(Z,Y)=>{X$();let G=await C.fetchQuota(Z.id);return{account:{...Z,quota:G},fetched:!0}},getUsableFallbackAccounts:async(Z,Y)=>{Z=Z??null;let G=[],z=Z?.accounts.some((O)=>D0(O)&&o.has(O.id))?(await C.read()).accounts:[];for(let O of Z?.accounts??[]){if(!D0(O)||O.enabled===!1)continue;let _=z.find((F)=>F.id===O.id),H=h.getFallback(O.id,_?.binding?{authLineageId:JSON.stringify(_.binding)}:O)?.quota??_?.quota??O.quota,L=_&&Z?b({..._,quota:H},Z):H;if(!S1(L,Z)||!x4(L,Y?.modelId)||b$(Z)&&!N$(L,Z,O.id,Y?.modelId))continue;try{let F=await B0(O.id,void 0,void 0,Y?.modelId);G.push({...O,access:F.accessToken,expires:F.expires})}catch(F){if(O1(F))throw F}}return G}};async function OJ(){X$();let Z=await C.read();if(Z.mode==="local"&&Z.policyStorage.refresh?.enabled!==!1)for(let Y of Z.accounts){if(Y.id==="main"||Y.type!=="oauth"||!Y.enabled)continue;try{let G=await B0(Y.id);if(z1(Y.lastRefreshError,Y.accountIdentity,Date.now(),void 0))continue;if(G.localSource!=="rotated"&&G.localSource!=="adopted"&&(!G.expires||G.expires-Date.now()<=nZ(Z.policyStorage)))await B0(Y.id,void 0,void 0,void 0,"refresh")}catch{}}await x1()}let _J=x0!==null&&process.env.OPENCODE_AUTH_CONTENT===void 0,LJ=_J&&V$(x0)?C.vault.watch({intervalMs:J.scopedRosterPollIntervalMs??2000,shouldRefresh:()=>process.env.OPENCODE_AUTH_CONTENT===void 0,onRefresh:()=>W4(),setInterval:W.setInterval,clearInterval:W.clearInterval}):void 0,jW=_J?(LJ?LJ.ready.then(()=>OJ()):OJ()).catch(()=>{}):Promise.resolve(),NJ=_J?W.setInterval(()=>{OJ().catch(()=>{})},T8+U8(N8)):null;NJ?.unref?.();let OW=(Z,Y)=>{let G=gJ({id:Z,role:"fallback"},Y);return G==="na"?"off":G},HJ=new vJ,_W=new hJ,d$=new WeakMap,J4=new Map;async function DJ(Z){let Y=(Z.get("anthropic-beta")??"").split(",").map((G)=>G.trim()).filter(Boolean).sort();return{betas:Y,betasHash:await I8(Y.join(","))}}function bZ(Z){try{if(!Z.request)return;let Y=U3({request:Z.request,source:Z.source,accountId:Z.accountId,synthetic:Z.synthetic,betasHash:Z.betasHash,requestedModel:Z.requestedModel,onWarning:(z)=>k.warn("cache-diagnostics",z),message:Z.message,receivedAt:Z.receivedAt});if(!Y.record||!Y.messageId){k.debug("cache-diagnostics","skipped invalid response envelope",{status:Z.status});return}k.debug("cache-diagnostics",Q3(Y.record));let G=_W.capture(Z.betasHash,Z.betas);if(G)k.debug("cache-diagnostics",G);if(Y.canary)k.warn("cache-diagnostics","short-gap previous_message_not_found",{message_id:Y.canary.messageId,previous_message_id:Y.canary.previousMessageId});if(Z.trackSessionId)HJ.capture(Z.trackSessionId,Y.messageId,Z.receivedAt)}catch(Y){k.debug("cache-diagnostics","response observation failed",{status:Z.status,error:Y instanceof Error?Y.message:String(Y)})}}function gZ(Z,Y,G=!0){let z=d$.get(Z);if(!z)return;if(Y&&typeof Y==="object"&&!Array.isArray(Y)&&!G)z.messageStart=Y;z.dumpWrite=z.dumpWrite.then(()=>n9(z.dump,{status:z.status,message:Y,complete:G})).catch(()=>{}),bZ({...z,message:Y,receivedAt:Date.now()})}function LW(Z,Y){let G=d$.get(Z);if(!G)return;let z=G.messageStart??{},O=z.usage&&typeof z.usage==="object"&&!Array.isArray(z.usage)?z.usage:{},_={...z,...Y.usage?{usage:{...O,...Y.usage}}:{},...Y.stopReason?{stop_reason:Y.stopReason}:{}};G.dumpWrite=G.dumpWrite.then(()=>n9(G.dump,{status:G.status,message:_,complete:!0})).catch(()=>{})}function yZ(Z,Y){let G=Promise.resolve(n9(Y.dump,{status:Y.status,message:null,complete:!1})).catch(()=>{});d$.set(Z,{...Y,dumpWrite:G})}let i$=null,UJ=null;function NW(Z){let Y=b9("anthropic");if(!Z||typeof Z!=="object")return!1;let G=Z;return G.type===Y.type&&G.access===Y.access&&G.refresh===Y.refresh&&G.expires===Y.expires}async function HW(){if(UJ){let Z=await UJ();return O5("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 F5("opencode",u5())}async function mZ(){if(await K1("opencode")!=="claustrum")throw Error("This host is not connected to the credential vault; run setup to connect it first");if(await HW()!=="absent")throw Error("OpenCode already holds an Anthropic login; remove it before choosing the vault login")}let DW={label:"Claude via credential vault",type:"oauth",authorize:async()=>{return await mZ(),{url:"",instructions:"Claude requests use the credential vault this host is connected to. OpenCode stores only a placeholder, never a credential.",method:"auto",callback:async()=>{await mZ();let Z=b9("anthropic");return{type:"success",access:Z.access,refresh:Z.refresh,expires:Z.expires}}}}},QJ=new p8({directory:process.env.OPENCODE_ANTHROPIC_AUTH_CACHEKEEP_REGISTRY_DIR||m8("opencode")}),$9=[],f1=new Map,k1=new y8({loadStorage:()=>v(K),setIntervalImpl:W.setInterval,clearIntervalImpl:W.clearInterval,onTrackedSessionsChanged:async(Z)=>{await QJ.publish(Z),$9=await QJ.list(Z)},prepareBody:(Z,Y)=>{if(!new Headers(Y.headers).get("anthropic-beta")?.split(",").map((G)=>G.trim()).includes(L4))return Z;try{let G=JSON.parse(Z),z=HJ.previousFor(Y.id),O=z?.messageId??null;return z9(G,O),J4.set(Y.id,{sessionId:Y.id,previousMessageId:O,...z?{previousMessageReceivedAt:z.receivedAt}:{},isSubagent:Y.isSubagent,ttlSent:j9(G),accountId:Y.oauthAccountId??"main",synthetic:!0,requestedModel:typeof G.model==="string"?G.model:void 0}),JSON.stringify(G)}catch{return Z}},onResponse:async({target:Z,bodyText:Y,status:G,data:z,receivedAt:O,attempt:_})=>{let H=f1.get(_.id);if(G===401&&H?.scopedAttempt)await R1(H.scopedAttempt,"direct");let L=J4.get(Z.id);if(!L?.betasHash||!L.betas){J4.delete(Z.id);return}try{let F=JSON.parse(Y),U=F&&typeof F==="object"&&!Array.isArray(F)?F.diagnostics:void 0,E=U&&typeof U==="object"&&!Array.isArray(U)&&U.previous_message_id===L.previousMessageId?L.previousMessageId:void 0;if(E===void 0)return;bZ({source:"prewarm_cachekeep",accountId:L.accountId,synthetic:L.synthetic,betasHash:L.betasHash,betas:L.betas,requestedModel:L.requestedModel,request:{...L,previousMessageId:E,ttlSent:j9(F)},trackSessionId:Z.id,status:G,message:z,receivedAt:O})}catch{}finally{J4.delete(Z.id)}},onComplete:({attempt:Z})=>{f1.delete(Z.id)},retryOnUnauthorized:async({target:Z,headers:Y,attempt:G})=>{let z=f1.get(G.id);if(!z)return;let O;try{let L=JSON.parse(Z.bodyText);if(typeof L.model==="string")O=L.model}catch{}if(z.scopedAttempt&&!await E0(z.scopedAttempt,"cachekeep",G.signal))return;let _=await B0(Z.oauthAccountId??"main",G.signal,z.scopedAttempt?void 0:z.accessToken,O);if(_.accountIdentity!==z.accountIdentity||Boolean(_.scopedAttempt)!==Boolean(z.scopedAttempt))return;if(z.scopedAttempt&&(!_.scopedAttempt||_.scopedAttempt.credentialId!==z.scopedAttempt.credentialId||_.scopedAttempt.recordVersion<=z.scopedAttempt.recordVersion))return;if(!z.scopedAttempt&&_.accessToken===z.accessToken)return;let H=new Headers(Y);return H.set("authorization",`Bearer ${_.accessToken}`),f1.set(G.id,_),H},prepareHeaders:async(Z,Y,G)=>{let z=Y.oauthAccountId??"main",O;try{let F=JSON.parse(Y.bodyText);if(typeof F.model==="string")O=F.model}catch{}let _=await B0(z,G.signal,void 0,O),H=_.accessToken;f1.set(G.id,_);try{let F=JSON.parse(Y.bodyText),U=t$(_.accountIdentity);if(Z.delete("anthropic-beta"),l1(Z,H,{body:F,identity:U}),Z.set("anthropic-beta",T4(Z.get("anthropic-beta"),[v8])),F.speed==="fast")k9(Z);let E=J4.get(Y.id);if(E){let{betas:x,betasHash:m}=await DJ(Z);E.betas=x,E.betasHash=m}}catch{l1(Z,H)}let L=await B0(z,G.signal,void 0,O);if(L.accountIdentity!==_.accountIdentity||Boolean(L.scopedAttempt)!==Boolean(_.scopedAttempt))throw Error("CacheKeep credential authority changed before dispatch");return Z.set("authorization",`Bearer ${L.accessToken}`),f1.set(G.id,L),Z}}),Z4=new Map;async function UW(Z){if(!i$||!(await i$()).active)throw Error("Native main OAuth activation is not available");let Y=await B0("main",Z);return{...Y,credentialAccountId:D$(Y.accountIdentity)}}async function QW(){let Z=await UW();if((await $4(Z.accessToken,void 0,Z.credentialAccountId)).stale&&Z.credentialAccountId!==void 0)throw Error("Main account identity changed before the prime refresh");let G=await h.refreshMainWithMetadata(_$,Z.accessToken);return{quota:G.quota,fresh:G.fetched}}async function BW(Z){X$();let Y=await v(K),G=Y?.accounts.find((O)=>O.id===Z&&O.enabled!==!1&&D0(O));if(!G||!Y)throw Error(`prime: OAuth account ${Z} is unavailable`);let z=await jJ.refreshAccountQuota(G,Y);return{quota:z.account.quota??{},fresh:z.fetched}}let BJ=new Map;async function wW(Z){let Y=performance.now(),G,z,O,_="",H;try{if(Z==="main"&&(!i$||!(await i$()).active))throw Error("Native main OAuth activation is not available");let L=await B0(Z,void 0,void 0,AZ);if(G=L.accessToken,O=L.scopedAttempt,z=AZ,!G)return{ok:!1,error:"prime: no access token available"};let F=R5(),U=t$(L.accountIdentity),E=await v9(JSON.stringify(F),{identity:U}),x=new Headers({"content-type":"application/json"});l1(x,G,{body:JSON.parse(E),identity:U}),x.delete("content-length"),x.delete("transfer-encoding");let m=P4(vY,{baseURL:""}),O0=m.url?.toString()??m.input.toString(),_0=AbortSignal.timeout(30000),F0={method:"POST",headers:x,body:E,signal:_0},Q0=await B0(Z,_0,void 0,z);if(Q0.accountIdentity!==L.accountIdentity||Boolean(Q0.scopedAttempt)!==Boolean(L.scopedAttempt))throw Error("Prime credential authority changed before dispatch");O=Q0.scopedAttempt,_=Q0.accessToken,x.set("authorization",`Bearer ${_}`);let Z$=async()=>{let c0=v4([_],"http");return H=c0,c0.redactResponse(await fetch(O0,F0))},C0=await Z$();if(C0.status===401&&O&&!_0.aborted){let c0;try{c0=await E0(O,"prime",_0)}catch{}if(c0){H?.dispose(),await C0.body?.cancel().catch(()=>{}),k.info("claustrum","retrying Prime after scoped credential rotation",{accountId:Z,previousVersion:O.recordVersion,newVersion:c0.recordVersion}),Q0=await B0(Z,_0,void 0,z);let e=Q0.scopedAttempt;if(!e||e.credentialId!==O.credentialId||e.accountIdentity!==O.accountIdentity||e.recordVersion<=O.recordVersion)throw Error("Prime vault retry lost its strict newer receipt");O=e,_=e.accessToken,x.set("authorization",`Bearer ${_}`),C0=await Z$()}}if(C0.status===401&&!Q0.scopedAttempt&&!_0.aborted){let c0=Q0.accessToken,e=await B0(Z,_0,c0,z).catch(()=>{return});if(e&&e.accessToken!==c0&&e.accountIdentity===L.accountIdentity&&!e.scopedAttempt){if(H?.dispose(),await C0.body?.cancel().catch(()=>{}),Q0=await B0(Z,_0,void 0,z),Q0.scopedAttempt||Q0.accountIdentity!==L.accountIdentity)throw Error("Prime local authority changed before retry");_=Q0.accessToken,x.set("authorization",`Bearer ${_}`),C0=await Z$()}}let n$=Math.round(performance.now()-Y);if(!C0.ok){let c0;try{c0=await C0.text().catch(()=>"")||`HTTP ${C0.status}`}finally{H?.dispose()}if(C0.status===401&&O)await R1(O,"direct");return{ok:!1,status:C0.status,ms:n$,error:c0}}let R0=(await C0.json().catch(()=>null))?.usage,Y$=R0&&(Number.isFinite(R0.input_tokens)||Number.isFinite(R0.output_tokens))?{inputTokens:Number.isFinite(R0.input_tokens)?R0.input_tokens:void 0,outputTokens:Number.isFinite(R0.output_tokens)?R0.output_tokens:void 0}:void 0;return BJ.set(Z,Q0),{ok:!0,status:C0.status,ms:n$,...Y$&&{usage:Y$}}}catch(L){H?.dispose();let F=v4([_],"http"),U=F.redactError(L);return F.dispose(),{ok:!1,...L instanceof H0&&L.tokenRefreshFailed&&{reason:"token-refresh"},ms:Math.round(performance.now()-Y),error:U instanceof Error?U.message:String(U)}}}let pZ={storagePath:K,loadStorage:()=>v(K),getAccountFingerprint:async(Z)=>{if(Z==="main"&&(!i$||!(await i$()).active))return;let Y=await B0(Z),G=Y.scopedAttempt??Y.localSubject;if(!G)return;let z=await C.getOrCreateAuthLineage(Z,G);return z?g$(z):void 0},refreshQuota:async(Z)=>{if(Z==="main")return QW();return BW(Z)},sendPrime:wW,recordSuccess:async(Z,Y)=>{let G=BJ.get(Z);BJ.delete(Z);let z=G?.scopedAttempt??G?.localSubject;if(!z||!await C.incrementPrimeUsage(Z,z,Y))throw Error("Prime usage publication lost its native credential fence");let O=(await C.read()).accounts.find((_)=>_.id===Z)?.prime;if(!O)throw Error("Prime usage counters are unavailable after publication");return O},setIntervalImpl:W.setInterval,clearIntervalImpl:W.clearInterval,setTimeoutImpl:W.setTimeout,clearTimeoutImpl:W.clearTimeout},cZ=d3(K,()=>new I5(pZ),{slot:$.directory??"default",rebind:(Z)=>Z.updateOptions(pZ)}),N1=cZ.manager;if(I4(x0))N1.start();function FW(Z){let Y=Z.plan.sessionId,G=x$(Z.plan.requestedModel)?"Opus 5":"Fable",z=async()=>{let L=Z.warmTarget;if(!L){k.debug("fable-fallback","cache warm skipped",{session:Y,reason:"Opus response was not served by an OAuth route"});return}let F=Y8(L.bodyText,Z.plan.requestedModel);if(!F.ok){k.warn("fable-fallback","cache warm skipped",{session:Y,reason:F.reason});return}try{let U=await k1.prewarmNow({sessionId:Y,url:L.url,headers:L.headers,bodyText:F.bodyText,oauthAccountId:c$.recoveryAccount(Z.plan)??L.oauthAccountId});if(U.ok){k.debug("fable-fallback",`${G} cache warmed`,{session:Y,remaining:c$.remaining(Z.plan),...U.usage&&{usage:U.usage}});return}k.warn("fable-fallback",`${G} cache warm skipped`,{session:Y,status:U.status,reason:U.reason})}catch(U){k.warn("fable-fallback",`${G} cache warm failed`,{session:Y,error:U instanceof Error?U.message:String(U)})}},{recoveryKey:O}=Z.plan,H=(Z4.get(O)??Promise.resolve()).then(z,z);return Z4.set(O,H),H.finally(()=>{if(Z4.get(O)===H)Z4.delete(O)}),H}async function J9(){return $9=await QJ.list(k1.trackedSessions()),$9}let lZ=J.cacheKeepAggregateRefreshIntervalMs??1e4,wJ=lZ>0?W.setInterval(()=>{J9().catch(()=>{})},lZ):void 0;if(wJ?.unref?.(),f4({enabled:R4(x0),mode:d1(x0)}),i9(m9(x0)),a9(p9(x0)),!process.env.OPENCODE_ANTHROPIC_AUTH_LOG_LEVEL)x8(c9(x0)??"info");let FJ=null,TW=async()=>{Z1.abort();while(J1.size)await Promise.all([...J1]);try{await YJ(K)}catch(Z){k.warn("claustrum","failed to close scoped runtime",{error:Z instanceof Error?Z.message:String(Z)})}try{h.close()}catch{}try{await KJ?.dispose()}catch(Z){k.warn("quota-header-feed","failed to dispose",{error:Z instanceof Error?Z.message:String(Z)})}try{if(D1)W.clearInterval(D1),D1=null}catch(Z){k.warn("main-background","failed to stop",{error:Z instanceof Error?Z.message:String(Z)})}try{if(NJ)W.clearInterval(NJ)}catch(Z){k.warn("fallback-background","failed to stop",{error:Z instanceof Error?Z.message:String(Z)})}try{if(wJ!==void 0)W.clearInterval(wJ)}catch(Z){k.warn("cachekeep","failed to stop aggregate refresh",{error:Z instanceof Error?Z.message:String(Z)})}try{k1.stop()}catch(Z){k.warn("cachekeep","failed to stop",{error:Z instanceof Error?Z.message:String(Z)})}try{cZ.release()}catch(Z){k.warn("prime","failed to release slot",{error:Z instanceof Error?Z.message:String(Z)})}if(!FJ)return;try{await FJ.release()}catch(Z){k.warn("rpc","failed to stop",{error:Z instanceof Error?Z.message:String(Z)})}},o0={activeId:"main",route:"main"},SW=d5(),B$=new Map;function uZ(Z,Y){if(h.updateStorage(Z),h.seedMainFromStorage(Z,_$),!Y.skipFallbackQuotaSeed)h.seedFallbacksFromAccounts((Z?.accounts??[]).filter(D0));let G=h.getMain(_$),z=h.getLastApiError(),O=Z?.refresh?.mainLastRefreshError;return{main:{quota:G?.quota??null,tierLabel:r1(Z?.main?.profile),quotaBackedOff:h.isBackedOff(),quotaBackoffUntil:z?.nextRetryAt,refreshBackedOff:O?z1(O,X4??Z?.mainAccountId,Date.now(),Y.mainRefreshToken?g$(Y.mainRefreshToken):void 0):!1,refreshBackoffUntil:O?.nextRetryAt},fallbacks:(Z?.accounts??[]).filter((_)=>_.enabled!==!1&&D0(_)).map((_)=>{let H=N4(_.id,Z),L=OW(_.id,Z);return{id:_.id,label:_.label,tierLabel:r1(_.profile),quota:Y.skipFallbackQuotaSeed?null:h.getFallback(_.id,_)?.quota??_.quota??null,needsReauth:_.lastRefreshError!=null&&z1(_.lastRefreshError,_.id,Date.now(),g$(_.refresh))&&h$(_.lastRefreshError),vaultReauth:L==="on-vault-reauth",vaultServed:H,custodyState:L,enabled:_.enabled!==!1}}),activeId:Y.activeId,route:Y.route,relay:Z?.relay?.enabled&&Z.relay.url?{enabled:!0,transport:Z.relay.transport??"http"}:null,fastMode:s9(),cacheKeep:{enabled:QZ(Z),window:UZ(Z)?"always":Z?.cacheKeep?.startHour!=null&&Z?.cacheKeep?.endHour!=null?`${Z.cacheKeep.startHour}-${Z.cacheKeep.endHour}`:void 0,trackedSessions:$9.length},prime:I4(Z)?{enabled:!0,accounts:N1.stats(Z)}:void 0,fableRecoveries:B$.size>0?[...B$.values()]:void 0,lastUpdated:Date.now()}}function w$(Z,Y){let G=Y.routingAuthoritative!==!1;if(G)o0={activeId:Y.activeId,route:Y.route};let z=uZ(Z,Y);return n5(z,SW,{routingAuthoritative:G,resolvePreservedRouting:G?void 0:async(O)=>{let _=await pY(O,()=>v(K),{activeId:z.activeId,route:z.route}),H=_.freshStorage;return{activeId:_.activeId,route:_.route,state:uZ(H,{...Y,activeId:_.activeId,route:_.route})}},onRoutingResolved:G?void 0:(O)=>{o0=O}}).catch((O)=>k.warn("sidebar","state write failed",{error:O instanceof Error?O.message:String(O)}))}async function dZ(){return{storage:await v(K),access:void 0}}async function W4(){await J9().catch(()=>{});let{storage:Z,access:Y}=await dZ();w$(Z,{activeId:o0.activeId,route:o0.route,mainAccessToken:Y,mainRefreshToken:void 0,routingAuthoritative:!1})}function CW(Z,Y,G){if(!Y)return;if(Z?.quota?.enabled!==!0)return;let z=G?.quotaKey??_$;if(h.getMain(z))return;if(SJ)return;SJ=!0,h.refreshMain(z,Y,G?.generation).then(()=>W4()).catch(()=>{}).finally(()=>{SJ=!1})}let W1=null,Z9,X4,_$,Y4,H1,TJ,iZ=0,W9=new Map,SJ=!1,D1=null,X9=0;function nZ(Z){let Y=Z?.refresh?.refreshBeforeExpiryMinutes??bY;return Math.max(s5,Y)*60000}function AW(Z){return Z?.refresh?.enabled!==!1}async function rZ(Z=!1){let Y=new Map;if(Z){if(i$&&(await i$()).active)try{await C.fetchQuota("main")}catch{Y.set("main","Native primary usage refresh unavailable")}await x1(!0)}let G=await e4(AbortSignal.timeout(3000));h.updateStorage(G.policyStorage),h.seedMainFromStorage(G.policyStorage,_$),h.seedFallbacksFromAccounts(G.policyStorage.accounts.filter(D0));let z=[],O=G.accounts.find((H)=>H.id==="main"&&H.type==="oauth");if(O)z.push({name:O.label??"OpenCode anthropic",role:"main",quota:O.quota,tierLabel:r1(O.profile),error:Y.get("main")??O.lastQuotaRefreshError?.message});z.push(...h5(G.policyStorage,Y));let _=Math.max(0,...G.accounts.map((H)=>u1(H.quota)));return b5({accounts:z,refreshedAt:_||void 0})}async function CJ(Z){await J9().catch(()=>{}),await w$(Z,{activeId:o0.activeId,route:o0.route,routingAuthoritative:!1})}function G4(Z,Y,G,z){if(B$.delete(Z.sessionId),B$.set(Z.sessionId,{...Z,changedAt:Date.now()}),B$.size>128){let O=B$.keys().next().value;if(O)B$.delete(O)}if(w$(Y,{activeId:o0.activeId,route:o0.route,mainAccessToken:G.access,mainRefreshToken:G.refresh,routingAuthoritative:!1}),z)aZ(Z.sessionId,z)}function oZ(Z,Y){let G=u$.get(Z)??new Set;G.delete(Y),G.add(Y);while(G.size>4){let z=G.values().next().value;if(typeof z!=="string")break;G.delete(z)}u$.delete(Z),u$.set(Z,G);while(u$.size>128){let z=u$.keys().next().value;if(typeof z!=="string")break;u$.delete(z)}}function sZ(Z,Y){return typeof Y==="string"&&u$.get(Z)?.has(Y)===!0}function aZ(Z,Y){if(w9(Z))return;Q$.delete(Z),Q$.set(Z,[Y]);while(Q$.size>128){let G=Q$.keys().next().value;if(G)Q$.delete(G);else break}if(J$.has(Z))AJ(Z)}function AJ(Z,Y=0){if(!Q$.has(Z)||t1.has(Z))return;t1.set(Z,Y);let G=()=>{if(t1.get(Z)!==Y)return;t1.delete(Z),EW(Z,Y)};if(Y===0)setImmediate(G);else setTimeout(G,uY*Y)}function EJ(Z,Y){if(Y+1<lY)AJ(Z,Y+1)}async function EW(Z,Y){if(!J$.has(Z)||!Q$.has(Z))return;let G=$.client.session;if(typeof G?.status==="function")try{let z=await Promise.resolve(G.status()),O=z!==null&&typeof z==="object"?z:void 0,_=O&&Object.hasOwn(O,"data")?O.data:O;if(_===null||typeof _!=="object"||Array.isArray(_)){EJ(Z,Y);return}let H=_[Z];if(H!==void 0&&(!H||typeof H!=="object"||H.type!=="idle")){EJ(Z,Y);return}}catch{EJ(Z,Y);return}if(!J$.has(Z))return;await PW(Z)}function PW(Z){let Y=a4.get(Z);if(Y)return Y;let G=(async()=>{while(!0){let z=Q$.get(Z),O=z?.[0];if(!O){Q$.delete(Z);return}try{let _=()=>Q$.get(Z)===z&&z[0]===O;if(!await Q8($,Z,O,{noReply:!0,beforeActiveAssistant:!0,canSend:()=>J$.has(Z)&&_(),onPreparedMessageId:(L)=>oZ(Z,L),latestPreparedMessageId:()=>[...u$.get(Z)??[]].at(-1)})){if(J$.has(Z)&&!_())continue;return}if(_())z.shift()}catch(_){k.warn("fable-fallback","Desktop notification failed",{session:Z,error:_ instanceof Error?_.message:String(_)})}}})();return a4.set(Z,G),G.finally(()=>{if(a4.get(Z)===G)a4.delete(Z)}),G}function qW(Z,Y,G,z){if(Y.fallback&&Y.targetModel){let O=R$.get(Z.recoveryKey);R$.delete(Z.recoveryKey),R$.set(Z.recoveryKey,Y.targetModel);while(R$.size>128){let H=R$.keys().next().value;if(H)R$.delete(H);else break}let _=B$.get(Z.sessionId);if(O===Y.targetModel&&_?.mode==="server"&&f$(_.requestedModelId)===f$(Z.requestedModel)&&_.targetModelId===Y.targetModel)return;k.info("fable-fallback","Anthropic server-side safety fallback active",{session:Z.sessionId,requestedModel:Z.requestedModel,targetModel:Y.targetModel,handoff:Y.handoff}),G4({sessionId:Z.sessionId,mode:"server",remaining:0,requestedModelId:Z.requestedModel,targetModelId:Y.targetModel},G,z,WG(Z.requestedModel,Y.targetModel));return}if(Y.stopReason==="refusal"||!R$.delete(Z.recoveryKey))return;k.info("fable-fallback","Anthropic server-side safety fallback ended",{session:Z.sessionId,requestedModel:Z.requestedModel}),G4({sessionId:Z.sessionId,mode:"fable",remaining:0,requestedModelId:Z.requestedModel},G,z,XG(Z.requestedModel))}function RW(Z,Y,G){if(!Z)return;for(let z of R$.keys())if(z.startsWith(`${Z}\x00`))R$.delete(z);if(!B$.delete(Z))return;w$(Y,{activeId:o0.activeId,route:o0.route,mainAccessToken:G.access,mainRefreshToken:G.refresh,routingAuthoritative:!1})}async function PJ(Z){let Y=R8(Z);if(Y.type==="enable"||Y.type==="disable"){let _=Y.type==="enable",H=await m$(_),L=d1(H);return f4({enabled:_,mode:L}),k.info("commands","cache enabled changed",{enabled:_}),d9({argumentsText:Z,enabled:_,mode:L})}if(Y.type==="mode"){let _=await A1(Y.mode),H=R4(_);return f4({enabled:H,mode:Y.mode}),k.info("commands","cache mode changed",{mode:Y.mode}),d9({argumentsText:Z,enabled:H,mode:Y.mode})}let G=await v(K),z=R4(G),O=d1(G);return f4({enabled:z,mode:O}),d9({argumentsText:Z,enabled:z,mode:O})}async function V4(Z){let Y=h8(Z),G=await v(K);if(Y.type==="window")G=await a$(Y.startHour,Y.endHour),k.info("commands","cachekeep schedule changed",{schedule:`${Y.startHour}-${Y.endHour}`});else if(Y.type==="always")G=await n4(),k.info("commands","cachekeep schedule changed",{schedule:"always"});else if(Y.type==="disable")G=await i4(!1),k.info("commands","cachekeep enabled changed",{enabled:!1});else if(Y.type==="subagents")G=await E1(Y.enabled),k.info("commands","cachekeep subagents changed",{subagents:Y.enabled});let z=DZ(G),O=await J9(),_=O.length?Math.min(...O.map((H)=>H.nextPrewarmAt)):void 0;return g8({argumentsText:Z,enabled:b8(G),always:UZ(G),window:z,hybridActive:QZ(G),trackedSessions:O.length,trackedSessionDetails:O,nextPrewarmAt:_})}async function tZ(Z){let Y=f8(Z);if(Y.type==="enable"||Y.type==="disable"){let O=Y.type==="enable";return await r4(O),i9(O),k.info("commands","dump changed",{enabled:O}),HZ({argumentsText:Z,enabled:O})}let G=await v(K),z=m9(G);return i9(z),HZ({argumentsText:Z,enabled:z})}async function eZ(Z){let Y=i8(Z);if(Y.type==="enable"||Y.type==="disable"){let O=Y.type==="enable";return await _1(O),a9(O),k.info("commands","fast mode changed",{enabled:O}),TZ({argumentsText:Z,enabled:O})}let G=await v(K),z=p9(G);return a9(z),TZ({argumentsText:Z,enabled:z})}async function $3(Z,Y){if(m5(Z).type==="fire"){if(!Y)return`## Claude Start Failed
|
|
23
|
-
|
|
24
|
-
- OpenCode did not provide a session ID.`;try{return await g3($.client,Y),PZ({argumentsText:Z}).text}catch(z){return`## Claude Start Failed
|
|
25
|
-
|
|
26
|
-
- ${z instanceof Error?z.message:String(z)}`}}return PZ({argumentsText:Z}).text}async function qJ(Z,Y){let G=y5(Z);if(G.type==="mode")return await p$(G.mode,K),k.info("commands","routing mode changed",{mode:G.mode}),EZ({argumentsText:Z,mode:G.mode});if(G.type==="reset"&&Y)await(await RZ()).router.clear(Y),k.info("commands","sticky routing assignment reset");let z=await v(K);return EZ({argumentsText:Z,mode:y$(z)})}async function J3(Z){let Y=n8(Z);if(Y.type==="level")return await WJ(Y.level),CZ({argumentsText:Z,level:Y.level});let G=await v(K),z=c9(G)??"info";return CZ({argumentsText:Z,level:z})}async function Z3(Z){let Y=P5(Z),G=I4(await v(K)),z=G;if(Y.type==="enable"){if(z=!0,!G)await o4(!0,K),N1.start(),k.info("commands","prime changed",{enabled:!0})}else if(Y.type==="disable"){if(z=!1,G)await o4(!1,K),N1.stop(),k.info("commands","prime changed",{enabled:!1})}if(Y.type==="enable"||Y.type==="disable"){let _=await v(K);if(_&&W1)try{let H=await W1().catch(()=>{return});await w$(_,{activeId:o0.activeId,route:o0.route,mainAccessToken:H?.access,routingAuthoritative:!1})}catch(H){k.warn("sidebar","prime-toggle sidebar write failed",{error:H instanceof Error?H.message:String(H)})}}let O=await v(K);return q5({argumentsText:Z,enabled:z,accounts:N1.stats(O)}).text}async function K4(Z,Y,G){let z=G??u8(Z);if(z.type==="add-apikey"){if(!z.apiKey)return{text:"API key is required",accounts:P$(await v(K)??v$())};let U=z.label?.trim()||void 0,E=Date.now(),x=z.baseURL?.trim()||"https://api.kie.ai/claude";if(!y9(x))return{text:"Invalid base URL. Must be an http(s) URL without embedded credentials.",accounts:P$(await v(K)??v$())};let m=z.authHeader??"authorization-bearer",O0={id:U||VZ(),label:U||void 0,type:"api",apiKey:z.apiKey,baseURL:x,authHeader:m,enabled:!0,addedAt:E,lastUsed:E};await C.addApi({routeId:O0.id,apiKey:z.apiKey,label:O0.label,baseURL:x,authHeader:m});let _0=await v(K);await CJ(_0);let F0=P$(_0??{version:1,accounts:[]});return{text:`API key account "${O0.label??O0.id}" added.`,accounts:F0}}if(z.type==="add-oauth-start"){if(await K1("opencode",process.env)!=="local")throw Error("Disconnect from the vault first.");let U=await X("max"),E={state:U.state,verifier:U.verifier,redirectUri:U.redirectUri,createdAt:Date.now()};return c(Y??"default",E),{text:`Open this URL in your browser:
|
|
27
|
-
${U.url}`,knobs:{oauthUrl:U.url},accounts:P$(await v(K)??v$())}}if(z.type==="add-oauth-finish"){let U=Y??"default",E=u(U);if(!E)return{text:"OAuth session expired. Please start again.",accounts:P$(await v(K)??v$())};try{let x=await g9(z.code,E.verifier,E.redirectUri,E.state);if(x.type==="failed")return{text:"OAuth authentication failed. Please check the code and try again.",accounts:P$(await v(K)??v$())};let m=Date.now(),O0={id:VZ(),type:"oauth",authLineageId:VZ(),label:z.label||void 0,access:x.access,refresh:x.refresh,expires:x.expires,enabled:!0,addedAt:m,lastUsed:m,lastRefreshedAt:m};X$(),await C.loginOAuth({routeId:O0.id,label:O0.label,credential:{access:x.access,refresh:x.refresh,expires:x.expires}});let _0=await v(K);return await CJ(_0),{text:"OAuth account added.",accounts:P$(_0??v$())}}catch{return{text:"OAuth exchange failed due to a network error. Please try again.",accounts:P$(await v(K)??v$())}}finally{A.delete(U)}}let O=await v(K);if(z.type==="status"&&O){let U;if(W1)try{let E=await W1();if(E.type==="oauth")U=Y4??E.access}catch{}O=await ZW(O,U,AbortSignal.timeout(3000),H1)}let _=z.type==="status"?await W3(O):void 0,H=await d8({argumentsText:Z,storage:O??{version:1,accounts:[]},path:K,claustrum:z.type==="status"&&!_?await zZ(B8()):void 0,statusProjection:_,transition:async(U)=>({text:U==="claustrum"?"Run `bunx @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 c8(h4("opencode"),r9)){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:"Claustrum enrollment is still pending. Run setup to resume it or renew an expired 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(H.updated){if(H.updated.action==="enable"||H.updated.action==="disable")await M0(H.updated.id,H.updated.action==="enable",K);else if(H.updated.action==="remove")await U$(H.updated.id,K);else if(H.updated.action==="reorder")await o1(H.updated.newOrder??H.updated.previousOrder??[],K,H.updated.id);else if(H.updated.action==="reset-backoff")await s4("main"),h.clearMainBackoff(),k.info("commands","native main refresh and quota backoff cleared");let U=await v(K);if(W1)try{let E=await W1();w$(U,{activeId:o0.activeId,route:o0.route,mainAccessToken:E.access,mainRefreshToken:E.refresh,routingAuthoritative:!1})}catch{}}let L=await v(K),F=P$(L??{version:1,accounts:[]});return{text:H.text,accounts:F,statusProjection:_}}async function W3(Z){let Y=Z??await v(K),G=Y??v$(),z=P$(G).map((L)=>{let F=G.accounts.find((x)=>x.id===L.id),U=L.role==="main"?"na":F&&D0(F)&&N4(F.id,G)?"on":"off",E=gJ(L,Y);return{id:L.id,label:L.label,role:L.role,enabled:L.enabled,quotaPercent:L.quotaPercent,...L.tierLabel&&{tierLabel:L.tierLabel},claustrumGate:U,custodyState:E,vaultServed:E==="on-vault-served",vaultReauth:E==="on-vault-reauth"}}),O=await zZ(B8()),_=C$(G),H=_==="claustrum"?await BZ(h4("opencode"),r9):void 0;return{accounts:z,claustrumDetection:O.status,custodyMode:_,...H&&{claustrumEnrollment:H}}}async function IW(Z,Y,G){if(Z==="claude-quota")return{command:Z,text:await rZ(),knobs:{}};if(Z==="claude-start"){let L=await $3(Y,G);return{command:Z,text:L,knobs:{}}}if(Z==="claude-logging"){let L=await J3(Y),F=await v(K);return{command:Z,text:L,knobs:{level:c9(F)??"info"}}}if(Z==="claude-account"){let L=await K4(Y,G),F=L.statusProjection??await W3(),U={accounts:F.accounts,claustrumDetection:F.claustrumDetection,custodyMode:F.custodyMode,custodyModeKnown:!0,...F.claustrumEnrollment&&{enrollmentStatus:wZ(F.claustrumEnrollment,F.accounts.some((E)=>E.role==="main"&&E.vaultServed)).join(`
|
|
28
|
-
`)}};if("knobs"in L&&L.knobs)Object.assign(U,L.knobs);return{command:Z,text:Z9?`${L.text}
|
|
29
|
-
|
|
30
|
-
- Custody startup mismatch: ${Z9}`:L.text,knobs:U}}if(Z==="claude-routing"){let L=await qJ(Y,G),F=await v(K);return{command:Z,text:L,knobs:{mode:y$(F)}}}if(Z==="claude-fast"){let L=await eZ(Y),F=await v(K);return{command:Z,text:L,knobs:{enabled:p9(F)}}}if(Z==="claude-dump"){let L=await tZ(Y),F=await v(K);return{command:Z,text:L,knobs:{enabled:m9(F)}}}if(Z==="claude-cache"){let L=await PJ(Y),F=await v(K);return{command:Z,text:L,knobs:{enabled:R4(F),mode:d1(F)}}}if(Z==="claude-cachekeep"){let L=await V4(Y),F=await v(K);return{command:Z,text:L,knobs:{window:DZ(F)}}}if(Z==="claude-prime"){let L=await Z3(Y),F=await v(K),U=I4(F);return{command:Z,text:L,knobs:{enabled:U,accounts:N1.stats(F)}}}if(Z!=="claude-killswitch")throw Error(`Unhandled command modal: ${Z}`);let z=await v(),O=u9(z),_=(z?.accounts??[]).filter((L)=>L.enabled!==!1).map((L)=>L.id),H=SZ({argumentsText:Y,config:O,accountIds:_});if(H.updatedConfig)await XJ(H.updatedConfig);return{command:Z,text:H.text,knobs:{config:u9(await v()),accountIds:_}}}async function MW(Z){return{text:"Open /claude to manage native Claude settings.",knobs:{}}}let xW=async(Z,Y)=>{if(Y.signal?.aborted)throw Y.signal.reason??Error("Menu action aborted");let G;switch(Z.action){case"enable":case"disable":await C.setEnabled(Z.values.id,Z.action==="enable"),G=`Account ${Z.values.id} ${Z.action}d.`;break;case"remove":await C.remove(Z.values.id),G=`Account ${Z.values.id} removed.`;break;case"move-up":case"move-down":{let z=(await C.read()).accounts.filter((H)=>H.id!=="main").map((H)=>H.id),O=z.indexOf(Z.values.id);if(O<0)throw Error("Native account not found");let _=O+(Z.action==="move-up"?-1:1);if(_>=0&&_<z.length){let H=z[_];if(H===void 0)throw Error("Native account order changed");z[_]=Z.values.id,z[O]=H,await C.reorder(z,Z.values.id)}G="Native account order updated.";break}case"add-apikey":G=(await K4("",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 K4("",Z.sessionId,{type:"add-oauth-start"})).text;break;case"add-oauth-finish":G=(await K4("",Z.sessionId,{type:"add-oauth-finish",...Z.values})).text;break;case"reset-backoff":{await s4("main",Y.signal),h.clearMainBackoff(),G="Native main refresh and quota backoff cleared; credential validation and quarantine are unchanged.";break}case"enrollment-reset":G=(await K4("enrollment-reset")).text;break;case"quota-refresh":G=await rZ(!0);break;case"routing-mode":G=await qJ(Z.values.mode);break;case"routing-reset":G=await qJ("reset",Z.sessionId);break;case"cache-on":case"cache-off":G=await PJ(Z.action==="cache-on"?"on":"off");break;case"cache-mode":G=await PJ(`mode ${Z.values.mode}`);break;case"cachekeep-always":G=await V4("always");break;case"cachekeep-off":G=await V4("off");break;case"cachekeep-window":G=await V4(`${Z.values.startHour}-${Z.values.endHour}`);break;case"cachekeep-subagents":G=await V4(`subagents ${Z.values.enabled}`);break;case"dump-on":case"dump-off":G=await tZ(Z.action==="dump-on"?"on":"off");break;case"fast-on":case"fast-off":G=await eZ(Z.action==="fast-on"?"on":"off");break;case"prime-on":case"prime-off":G=await Z3(Z.action==="prime-on"?"on":"off");break;case"logging-level":G=await J3(Z.values.level);break;case"killswitch-on":case"killswitch-off":case"killswitch-set":{let O=(await C.read()).accounts.filter((_)=>_.id!=="main").map((_)=>_.id);await C.updateSettings((_)=>{let H=u9({..._,version:1,accounts:[]});if(Z.action!=="killswitch-set"){let U=SZ({argumentsText:Z.action==="killswitch-on"?"on":"off",config:H,accountIds:O});return{..._,killswitch:U.updatedConfig??H}}let L={...H.accounts},F={...H,enabled:!0,accounts:L};for(let U of Z.values.entries){let E={five_hour:U.fh,seven_day:U.sd,...U.scoped===void 0?{}:{scoped:U.scoped}};if(U.account==="main"||U.account==="all")F.main=E;if(U.account==="all")for(let x of O)L[x]=E;else if(U.account!=="main")L[U.account]=E}return{..._,killswitch:F}}),G="Native killswitch policy updated.";break}case"start-fire":G=await $3("",Z.sessionId);break;default:throw Error(`Unsupported native menu action: ${Z}`)}return CJ(await v()).catch(()=>{}),{ok:!0,text:G.split(`
|
|
31
|
-
`).filter((z)=>!z.includes("/claude-")).join(`
|
|
32
|
-
`)}},fW=async(Z,Y)=>{if(Z==="account"){let O=await e4(AbortSignal.timeout(3000)),_=O.mode==="claustrum"?await BZ(h4("opencode"),r9):void 0;return[`Custody mode: ${O.mode}`,..._?wZ(_,O.accounts.some((H)=>H.id==="main"&&H.source==="vault"&&H.enabled)):[],...O.accounts.map((H)=>`${H.label??H.id} [${H.id==="main"?"main":"fallback"}] ${H.enabled?"enabled":"disabled"} — ${H.source}${H.state?` (${_5(H)})`:""}${r1(H.profile)?` — ${r1(H.profile)}`:""}`)].join(`
|
|
33
|
-
`)}return(await IW({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],"",Y.sessionId)).text.split(`
|
|
34
|
-
`).filter((O)=>!O.includes("/claude-")).join(`
|
|
35
|
-
`)},RJ=new Map;function X3(Z){let Y=w9(Z),G=RJ.get(Z);if(!G||G.interactive!==Y)G={interactive:Y,command:c3({host:"opencode",dispatch:xW,readStatus:fW,readAccounts:()=>C.read(),interactive:Y})},RJ.set(Z,G);return G.command}function kW(Z,Y=10){let G=Math.max(0,Math.min(Math.round(Z/100*Y),Y));return"█".repeat(G)+"░".repeat(Y-G)}function Y9(Z,Y){return`${Z} ${kW(Y)} ${String(Math.round(Y)).padStart(3)}%`}function Y3(Z){if(!Z)return"";let Y=new Date(Z).getTime();if(Number.isNaN(Y))return"";let G=Y-Date.now();if(G<=0)return"resets now";let z=Math.floor(G/60000);if(z<1)return"resets <1m";if(z<60)return`resets ${z}m`;let O=Math.floor(z/60),_=z%60;return _>0?`resets ${O}h${_}m`:`resets ${O}h`}function vW(Z,Y,G){let z=[],O=0;if(Z){let{five_hour:L,seven_day:F}=Z;if(L||F){let E=G==="main"?"active":"idle",x=Y3(L?.resetsAt),m=[`main · ${E}${x?` (${x})`:""}`];if(L)m.push(Y9("5h",L.usedPercent)),O=Math.max(O,L.usedPercent);if(F)m.push(Y9("7d",F.usedPercent)),O=Math.max(O,F.usedPercent);z.push(m.join(`
|
|
36
|
-
`))}}if(Y?.length)for(let L of Y){let F=L.quota;if(!F)continue;let{five_hour:U,seven_day:E}=F;if(!U&&!E)continue;let x=L.label||"alt",O0=G===L.id?"active":"idle",_0=Y3(U?.resetsAt),F0=[`${x} · ${O0}${_0?` (${_0})`:""}`];if(U)F0.push(Y9("5h",U.usedPercent)),O=Math.max(O,U.usedPercent);if(E)F0.push(Y9("7d",E.usedPercent)),O=Math.max(O,E.usedPercent);z.push(F0.join(`
|
|
37
|
-
`))}if(!z.length)return;let _=z.join(`
|
|
38
|
-
|
|
39
|
-
`),H=O>=90?"error":O>=70?"warning":"info";V.tui?.showToast?.({body:{title:"Claude Quota",message:_,variant:H,duration:H==="error"?8000:5000}})?.catch?.(()=>{})}if($.directory){let Z=l5($.directory);try{FJ=await W7(Z,()=>Z7({dir:Z,drain:e3,apply:MW,applyMenu:(Y)=>X3(Y.sessionId??"").apply(Y)}))}catch{k.warn("rpc","native menu server unavailable")}}return{"experimental.chat.messages.transform":async(Z,Y)=>{let G=Y.messages;M1.observeMessages(G);let z=I3(G);if(z){a1.record(z);return}let O=G.findLast((L)=>L.info?.role==="user"),_=O?.info?.sessionID,H=O?.info?.id;if(typeof _==="string"&&typeof H==="string")a1.clear(_,H)},"chat.message":async({sessionID:Z},Y)=>{GJ.observeSyntheticMessage({sessionId:Z,messageId:Y.message.id,parts:Y.parts})},"chat.headers":async({sessionID:Z,message:Y},G)=>{GJ.markHeaders({sessionId:Z,messageId:Y.id,headers:G.headers}),a1.markHeaders({sessionId:Z,messageId:Y.id,headers:G.headers}),M1.markHeaders({sessionId:Z,messageId:Y.id,headers:G.headers})},event:async({event:Z})=>{let Y=Z,G=Y.properties?.info,z=Y.properties?.sessionID??G?.sessionID??G?.id;if(!z)return;if(Y.type==="message.updated"&&G?.role==="user"&&!sZ(z,G.id))if(typeof G.id==="string"){if(VJ.set(z,G.id),J$.has(z)&&t4.get(z)!==G.id)J$.delete(z)}else J$.delete(z);if(Y.type==="session.status"&&Y.properties?.status?.type!=="idle")J$.delete(z);if(Y.type==="session.idle"){let O=VJ.get(z);if(O)t4.set(z,O);else t4.delete(z);J$.add(z);while(J$.size>128){let _=J$.values().next().value;if(_)J$.delete(_);else break}AJ(z)}if(Y.type==="session.deleted"||Y.type==="message.removed")M1.clearSession(z);if(Y.type==="session.deleted"){RJ.delete(z),A.delete(z),GJ.clearSession(z),B$.delete(z),Q$.delete(z),J$.delete(z),VJ.delete(z),t4.delete(z),u$.delete(z);for(let O of l$.keys())if(O.startsWith(`${z}\x00`))l$.delete(O);t1.delete(z)}},config:async(Z)=>{let Y={...Z.command??{}};for(let G of c5)delete Y[G];Z.command={...Y,claude:{template:"claude",description:"Manage Claude accounts, quotas, routing, and cache settings."}}},"experimental.chat.system.transform":async(Z,Y)=>{if(!oY(Z))return;sY(Y.system)},provider:{id:"anthropic",async models(Z,Y){let G=KG(GG(Z.models));if(Y.auth?.type!=="oauth"||!F8(x0??{}))return G;return zG(G)}},"command.execute.before":async(Z)=>{if(Z.command!=="claude")return;let Y=await X3(Z.sessionID).open(Z.sessionID);if(w9(Z.sessionID))t3(Y,Z.sessionID);else{let G=[Y.menu.title,...Y.menu.sections.flatMap((z)=>[`
|
|
40
|
-
## ${z.title}`,...z.lines,...z.items.map((O)=>`${O.label}${O.detail?` — ${O.detail}`:""}`)])].join(`
|
|
41
|
-
`);await Q8($,Z.sessionID,G)}rY()},auth:{provider:"anthropic",async loader(Z,Y){i$=async()=>{let L=await Z();return{type:L.type,active:v1(L,"anthropic")}},UJ=Z;let G=await Z();if(G.type!=="oauth")return{};let z=await K1("opencode").catch(()=>{return});if(!xZ&&v1(G,"anthropic")&&process.env.OPENCODE_ANTHROPIC_AUTH_DISABLE_PROFILE_HYDRATION!=="1"){xZ=!0;let L=e4(Z1.signal).then((F)=>{if(!Z1.signal.aborted)return w$(F.policyStorage,{...o0,routingAuthoritative:!1})}).catch(()=>{if(!Z1.signal.aborted)k.debug("quota","startup account profile hydration failed")});J1.add(L),L.then(()=>J1.delete(L))}function O(L){if(!v1(L,"anthropic"))throw Error("Native OAuth requires inert OpenCode activation; run offline setup")}let _=async(L,F,U=!1)=>{let E=await Z();if(E.type!=="oauth")return{type:E.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 x=await K1("opencode");if(x==="claustrum"&&!NW(E))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.");X$();let m=await E5(C,F);if(O(E),x==="claustrum"&&!m.accounts.some((e)=>e.type==="oauth"&&e.enabled&&e.state==="active"))throw new e9;let O0=B3(m.policyStorage);try{F3({mode:x==="claustrum"?"C":"L",main:w3(E),fallbacks:x==="claustrum"?"T":O0.fallbacks,evidence:"V",authority:x==="claustrum"?"committed":H5(await N5(n))}),Z9=void 0}catch(e){if(e instanceof H4)Z9=e.verdict;throw e}Y0=m.policyStorage;let _0=m.accounts.find((e)=>e.id==="main"),F0=_0?.binding,Q0=_0?b(_0,m.policyStorage):void 0,Z$=Q0&&Q0!==_0?.quota?{...m.policyStorage,quota:{...m.policyStorage.quota,mainQuota:Q0}}:m.policyStorage,C0=k0("main",S0(F0),_0?.accountIdentity,m.policyStorage),n$=Boolean(F0&&C0?.lineage===S0(F0)&&C0?.generalExhausted===!0);if(_0&&F0&&(!K0||F0.rowId!==K0.rowId||F0.credentialEpoch>K0.credentialEpoch))h.clearMain(),h.setMainQuotaAccountIdentity(_0.accountIdentity),K0={rowId:F0.rowId,credentialEpoch:F0.credentialEpoch};if(U&&(y$(m.policyStorage)==="fallback-first"||IZ(Z$,_0?.accountIdentity,n$))){let e=m.accounts.find((L$)=>L$.id==="main");return F?.throwIfAborted(),{type:"oauth",access:"",expires:0,refresh:void 0,nativeAccountIdentity:e?.accountIdentity,nativeRoutingLineage:e?.binding?S0(e.binding):void 0,nativeLocalSource:void 0,nativeScopedAttempt:void 0,modelDenied:!1,credentialUnavailable:!1,credentialFailure:void 0,deferred:!0}}let s0,R0,Y$,c0;try{s0=await B0("main",F,void 0,L,"serve",m)}catch(e){if(e instanceof P1)throw e;if(O1(e))throw e;if(e instanceof e$){R0=e.account;let L$=B9(R0.quota,L);if(L$!==void 0&&(!Number.isFinite(L$.checkedAt)||(L$.checkedAt??0)+e.checkIntervalMs<=Date.now())||!l9(R0.quota)&&!M4(R0.quota,L))try{await C.fetchQuota("main",void 0,F),s0=await B0("main",F,void 0,L),R0=void 0}catch(a0){if(O1(a0))throw a0;if(a0 instanceof e$)R0=a0.account;else if(a0 instanceof H0)Y$=a0.account,c0=a0}}else if(e instanceof H0)Y$=e.account,c0=e}return F?.throwIfAborted(),{type:"oauth",access:s0?.accessToken??"",expires:s0?.expires??0,refresh:void 0,nativeRoutingLineage:V0(s0?.localSubject,s0?.scopedAttempt)??(_0?.binding?S0(_0.binding):void 0),nativeAccountIdentity:s0?.accountIdentity??R0?.accountIdentity??Y$?.accountIdentity,modelDenied:Boolean(R0),credentialUnavailable:Boolean(Y$),credentialFailure:c0,deferred:!1,nativeLocalSource:s0?.localSource,nativeScopedAttempt:s0?.scopedAttempt}};W1=_;let H={type:"oauth",access:"",expires:0};if(H.type==="oauth"){let E=function(){if(D1)W.clearInterval(D1);let D=async()=>{try{let B=await v(K);if(!AW(B))return;let f=await _();if(f.type!=="oauth")return;if(f.nativeLocalSource==="rotated"||f.nativeLocalSource==="adopted")return;if(f.expires&&f.expires-Date.now()>nZ(B))return;await U()}catch{k.warn("refresh","native main OAuth background refresh unavailable")}};D1=W.setInterval(()=>{D()},hY+U8(N8)),D1.unref?.()},m=function(D,B){if(D instanceof Request&&D.body)return!1;return B==null||typeof B==="string"},O0=function(D){if(typeof D!=="string")return;try{let B=JSON.parse(D);return typeof B.model==="string"?B.model:void 0}catch{return}},_0=function(D){return D.has("x-parent-session-id")},F0=function(D){let B;try{B=JSON.parse(D)}catch{return!1}if(typeof B!=="object"||B===null)return!1;let f=Reflect.get(B,"error");return Reflect.get(B,"type")==="error"&&typeof f==="object"&&f!==null&&Reflect.get(f,"type")==="rate_limit_error"},Q0=function(D){return D?.quota?.enabled===!0},C0=function(D,B){if(D.delete("authorization"),D.delete("x-api-key"),B.authHeader==="x-api-key")D.set("x-api-key",B.apiKey??"");else D.set("Authorization",`Bearer ${B.apiKey??""}`);D.set("Content-Type","application/json"),FZ(D)},Y$=function(D){return h.getFallback(D.id,D)?.quota??D.quota},c0=function(D,B){return D.status===429||B},e=function(D,B=Y0){return U0("main",D?.routingLineage,D?.providerAccountUuid,h.getMain(D?.quotaKey??_$),B)},L$=function(D,B){if(!D&&!B?.providerAccountUuid)return!1;let f=e(B);return Boolean(f&&(D||f.quota.accountIdentity===B?.providerAccountUuid)&&f.refreshAfter>Date.now()&&e1(f.quota)&&(f.quota.source!=="headers"||k0("main",B?.routingLineage,B?.providerAccountUuid)?.generalExhausted===!0||["five_hour","seven_day"].some((g)=>f.quota.fieldSources?.[g]==="poll"&&(f.quota[g]?.remainingPercent??1)<=0)))},F=(await C.read().catch(()=>{return}))?.accounts.find((D)=>D.id==="main");if(X4=F?.binding?.rowId??F?.accountIdentity,_$??=F?.accountIdentity??X4,H.access)await $4(H.access);async function U(D,B,f){O(await Z()),f?.throwIfAborted();let g=await B0("main",f,D,B,"refresh");return O(await Z()),f?.throwIfAborted(),g.accessToken}if(z==="local")E();h.seedFallbacksFromAccounts((x0?.accounts??[]).filter(D0));let x=await cY(()=>v(K)).catch(()=>({freshStorage:null,activeId:void 0,route:"main"}));await w$(x.freshStorage,{activeId:x.activeId,route:x.route,mainAccessToken:H.access,routingAuthoritative:!1});async function Z$(D,B){if(!D.body||D.status!==200)return B?.mark("inspect_stream_skip",{status:D.status}),{response:D,rateLimited:!1};if(D.headers.get("x-cortexkit-relay-optimistic")==="true")return B?.mark("inspect_stream_skip",{status:D.status,reason:"optimistic_relay"}),{response:D,rateLimited:!1};let f=J0(),g=D.body.getReader(),d=[],M=0,S=R9({maxFrameBytes:65536}),f0=!1,$0=!1,v0=!0;while(!$0&&M<65536){let{done:y,value:p}=await g.read().catch(async(Q)=>{let W0=JZ(Q,d$.get(D)?.toolNameMap);if(W0!==Q)await ZZ(g,W0);throw W0});if(y)break;d.push(p),M+=p.byteLength;let T;try{T=S.push(p)}catch{break}for(let Q of T){let W0=I9(k8(Q,{streamStart:v0}));if(v0=!1,W0.data===void 0)continue;f0=F0(W0.data),$0=!0;break}}if(f0){await g.cancel().catch(()=>{});try{g.releaseLock()}catch{}let y=new ReadableStream({start(T){for(let Q of d)T.enqueue(Q);T.close()}});B?.mark("inspect_stream_first_event",{ms:A0(J0()-f),bytes:M,rateLimited:!0});let p=new Response(y,{status:D.status,statusText:D.statusText,headers:D.headers});return K9(d$,D,p),{response:p,rateLimited:!0}}let I=new ReadableStream({start(y){for(let p of d)y.enqueue(p)},async pull(y){let{done:p,value:T}=await g.read();if(p){y.close();return}y.enqueue(T)},cancel(y){return g.cancel(y)}});B?.mark("inspect_stream_first_event",{ms:A0(J0()-f),bytes:M,rateLimited:!1});let P=new Response(I,{status:D.status,statusText:D.statusText,headers:D.headers});return K9(d$,D,P),{response:P,rateLimited:!1}}async function n$(D,B,f,g){if(X$(),!B){let S=e(f);if(!f?.providerAccountUuid||!S||S.refreshAfter<=Date.now()||!e1(S.quota))throw Error("API fallback requires fresh general primary OAuth exhaustion");let f0=await B0("main",g);if(f0.accountIdentity!==f.providerAccountUuid||f.routingLineage&&V0(f0.localSubject,f0.scopedAttempt)!==f.routingLineage)throw Error("Primary identity changed before API fallback");B=f0.accessToken}let d=await C.authorizeApi(D,g),M=(await C.read()).accounts.find((S)=>S.id==="main");if(M?.binding&&S0(M.binding)!==f?.routingLineage)throw Error("Primary identity changed before API fallback");if(!L$(B,f))throw Error("API fallback requires fresh general primary OAuth exhaustion");return d}async function s0(D,B,f,g,d="api_fallback",M,S,f0,$0){if(S?.plan.downgraded)S.warmTarget=void 0,S.opusCacheAnchor=void 0;let v0=J0(),I=E4(D,B),P=I.get("x-session-affinity")||I.get("x-opencode-session"),y=_0(I),p=I.get(h1)??void 0,T=a1.resolveHeader(p);I.delete("x-parent-session-id"),I.delete("x-session-affinity"),I.delete("x-opencode-session"),I.delete("x-opencode-session-id"),I.delete("x-opencode-parent-session-id"),I.delete(h1),I.delete(O4);let Q=await q4(D,B),W0=!1,I0=null,l,t0=typeof Q==="string"?Q.length:void 0;if(Q&&typeof Q==="string"){let M$=J0(),y0=(()=>{if(!s9())return!1;try{return S4(JSON.parse(Q).model)}catch{return!1}})();try{Q=await v9(Q,{onToolNameMap:(h0)=>{l=h0},cache1hEnabled:!y&&i1(),cache1hMode:n1(),fastModeEnabled:y0,sessionId:P||void 0,midConversationEffortEnabled:!1,midConversationEffortPlan:p,midConversationEffortResolvedPlan:T,modelRemapEnabled:!0,perf:(h0,U1)=>g?.mark(`rewrite_body_${h0}`,{route:d,...U1})})}catch(h0){if(h0 instanceof T0)return _8(h0);if(h0 instanceof C4)return L8(h0);throw h0}if(C0(I,f),I.set("anthropic-beta",T4(I.get("anthropic-beta"),[])),y0)k9(I);try{W0=JSON.parse(Q).stream===!0}catch{}g?.mark("rewrite_body",{route:d,ms:A0(J0()-M$),originalBytes:t0,rewrittenBytes:Q.length,cacheEnabled:!y&&i1(),cacheMode:n1(),fastModeEnabled:y0,subagent:y})}else C0(I,f);let g0=await DJ(I),n0=await n$(f.id,f0,$0,B?.signal??void 0);f={...f,...n0},C0(I,f);let P0=P4(D,{baseURL:f.baseURL}),j0=J0(),I$=v4([f.apiKey??""],W0?"event-stream":"http"),W$;try{W$=I$.redactResponse(await fetch(P0.input,{...B,body:Q,headers:I,...WZ()&&{tls:{rejectUnauthorized:!1}}}))}catch(M$){let y0=I$.redactError(M$);if(I$.dispose(),typeof Q==="string")await k4({affinity:P,route:d,error:K8,bodyText:Q,url:P0.url?.toString()??h9(P0.input),method:F1(D,B),headers:I});throw y0}if(typeof Q==="string")I0=await k4({affinity:P,route:d,status:W$.status,bodyText:Q,url:P0.url?.toString()??h9(P0.input),method:F1(D,B),headers:I});if(yZ(W$,{source:"turn",toolNameMap:l,accountId:f.id,synthetic:!1,...g0,requestedModel:O0(Q),dump:I0,status:W$.status,streaming:W0}),g?.mark("send_headers_received",{route:d,ms:A0(J0()-j0),status:W$.status,relayConfigured:!1,totalSendWithAccessMs:A0(J0()-v0),baseURL:f.baseURL}),W$.ok)s1.publish(()=>C.publishApi(n0.subject,{lastUsed:Date.now()}));return W$}async function R0(D,B,f,g,d="unknown",M,S="main",f0,$0,v0=!1,I,P){q9(f,"anthropic");let y=J0(),p=M,T=async()=>{return p??=await v(K),p},Q=E4(D,B),W0=Q.get("x-session-affinity")||Q.get("x-opencode-session"),I0=_0(Q),l=Q.get(h1)??void 0,t0=a1.resolveHeader(l),g0=Q.get(O4)??void 0,n0=M1.resolveHeader(g0),P0=!I0&&!v0?n0:void 0;Q.delete("x-parent-session-id"),Q.delete("x-session-affinity"),Q.delete("x-opencode-session"),Q.delete("x-opencode-session-id"),Q.delete("x-opencode-parent-session-id"),Q.delete(h1),Q.delete(O4);let j0=await q4(D,B),I$=W0?HJ.previousFor(W0):null,W$=I$?.messageId??null,M$,y0=!1,h0=null,U1=null,F$,z4;if(j0&&typeof j0==="string"){let r=J0();try{let G0=JSON.parse(j0);if(typeof G0.model==="string")z4=G0.model}catch{}g?.mark("model_parse_for_identity",{route:d,ms:A0(J0()-r),bodyBytes:j0.length})}let b0=await B0(S,B?.signal??void 0,void 0,z4,S==="main"?"last-main":"serve");if(f=b0.accessToken,S==="main"&&I?.providerAccountUuid&&b0.accountIdentity!==I.providerAccountUuid)throw Error("Main account identity changed after request routing");P=b0.scopedAttempt;let G9=J0(),q=t$(b0.accountIdentity);g?.mark("resolve_claude_code_identity",{route:d,ms:A0(J0()-G9),hasAccountUuid:Boolean(q.accountUuid)});let s=typeof j0==="string"?j0.length:void 0;if(j0&&typeof j0==="string"){let r=J0(),G0=(()=>{if(!s9())return!1;try{return S4(JSON.parse(j0).model)}catch{return!1}})(),j$=!I0&&i1(),V9=n1(),bW=$0?.plan.downgraded&&$0.plan.standbyCacheAnchor?.oauthAccountId===S?$0.plan.standbyCacheAnchor:void 0;try{j0=await v9(j0,{onToolNameMap:(u0)=>{F$=u0},cache1hEnabled:j$,cache1hMode:V9,fastModeEnabled:G0,identity:q,sessionId:W0||void 0,thinkingPrefixMismatchBehavior:p5(await T()),midConversationEffortEnabled:!0,midConversationEffortPlan:l,midConversationEffortResolvedPlan:t0,hybridStandbyAnchor:bW,serverSideFallbackEnabled:I1==="server",laneStart:v0,billingLineage:P0,cacheDiagnosticsPreviousMessageId:W$,perf:(u0,Y1)=>{if(g?.mark(`rewrite_body_${u0}`,{route:d,...Y1}),u0==="cache_strategy"&&Y1?.standbyBridgeApplied===!0&&$0&&!$0.standbyBridgeLogged)$0.standbyBridgeLogged=!0,k.info("fable-fallback","restored standby Opus cache bridge",{session:$0.plan.sessionId,distanceBlocks:Y1?.standbyDistanceBlocks})}})}catch(u0){if(u0 instanceof T0)return _8(u0);if(u0 instanceof C4)return L8(u0);throw u0}if($0?.plan.downgraded&&j$&&V9==="hybrid"){let u0=$8(j0);$0.opusCacheAnchor=u0?{...u0,oauthAccountId:S}:void 0}let z3=J0();try{let u0=JSON.parse(j0);l1(Q,f,{body:u0,identity:q});let Y1=u0.diagnostics,j3=Y1&&typeof Y1==="object"&&!Array.isArray(Y1)&&Y1.previous_message_id===W$?W$:void 0;if(j3!==void 0&&Q.get("anthropic-beta")?.split(",").map((gW)=>gW.trim()).includes(L4))M$={sessionId:W0??"session-unknown",previousMessageId:j3,...I$?{previousMessageReceivedAt:I$.receivedAt}:{},isSubagent:I0,ttlSent:j9(u0)};y0=u0.stream===!0,g?.mark("set_oauth_headers_body_parse",{route:d,ms:A0(J0()-z3),bodyBytes:j0.length,parsed:!0})}catch{l1(Q,f,{identity:q}),g?.mark("set_oauth_headers_body_parse",{route:d,ms:A0(J0()-z3),bodyBytes:j0.length,parsed:!1})}if(G0)k9(Q);g?.mark("rewrite_body",{route:d,ms:A0(J0()-r),originalBytes:s,rewrittenBytes:j0.length,cacheEnabled:!I0&&i1(),cacheMode:n1(),fastModeEnabled:G0,subagent:I0})}let a=await DJ(Q),Z0=P4(D);if($0&&typeof j0==="string")$0.warmTarget={url:Z0.url?.toString()??Z0.input.toString(),headers:new Headers(Q),bodyText:j0,oauthAccountId:S};if(typeof j0==="string"&&i1()&&n1()==="hybrid"){let r=await T();if(!I0||C8(r)){let G0=J0(),j$=k1.track({sessionId:W0,url:Z0.url?.toString()??Z0.input.toString(),headers:Q,bodyText:j0,storage:r,cacheMode:"hybrid",oauthAccountId:S,isSubagent:I0});g?.mark("cachekeep_track",{session:W0,ms:A0(J0()-G0),tracked:j$.tracked,reason:j$.tracked?void 0:j$.reason,bodyBytes:j0.length})}}let t=b0,i,l0=async(r)=>{O(await Z()),B?.signal?.throwIfAborted();let G0=await B0(S,B?.signal??void 0,r,z4,S==="main"?"last-main":"serve");if(O(await Z()),B?.signal?.throwIfAborted(),G0.accountIdentity!==t.accountIdentity||Boolean(G0.scopedAttempt)!==Boolean(t.scopedAttempt))throw Error("Native credential authority changed during the request");if(i&&(!G0.scopedAttempt||G0.scopedAttempt.credentialId!==i.credentialId||G0.scopedAttempt.accountIdentity!==i.accountIdentity||G0.scopedAttempt.recordVersion<=i.recordVersion))throw Error("Native vault retry has no strict newer same-account receipt");return G0},m0=!1,T$=P,K$=async()=>{m0=!0,b0=await l0(),T$=b0.scopedAttempt,Q.set("authorization",`Bearer ${b0.accessToken}`),z$={...z$,accessToken:b0.accessToken,anthropicAccountUuid:D$(b0.accountIdentity),localSubject:b0.localSubject,scopedAttempt:b0.scopedAttempt};let r=v4([b0.accessToken],y0?"event-stream":"http");try{let G0=r.redactResponse(await fetch(Z0.input,{...B,body:j0,headers:Q,...WZ()&&{tls:{rejectUnauthorized:!1}}}));if(typeof j0==="string")h0=await k4({affinity:W0,route:d,status:G0.status,bodyText:j0,url:Z0.url?.toString()??h9(Z0.input),method:F1(D,B),headers:Q,tag:v0?"start":void 0});return G0}catch(G0){let j$=r.redactError(G0);if(r.dispose(),typeof j0==="string")await k4({affinity:W0,route:d,error:K8,bodyText:j0,url:Z0.url?.toString()??h9(Z0.input),method:F1(D,B),headers:Q,tag:v0?"start":void 0});throw j$}},q0=await T(),e0=await C.getRelayConfig(),G$=S==="main"?void 0:q0?.accounts.find((r)=>r.id===S&&D0(r)),IJ=q8(G$,f0),z$={accountId:S,accessToken:f,authLineageId:f0,anthropicAccountUuid:D$(P?.accountIdentity)??(S==="main"?I?.providerAccountUuid:D$(q.accountUuid)??D$(IJ)),localSubject:b0.localSubject,scopedAttempt:b0.scopedAttempt,...S==="main"&&I?{mainQuotaIdentity:I}:{}},$$=J0(),S$,j4=!1,N0=R1,p0=()=>g5({config:e0,input:Z0.input,init:B,headers:Q,body:j0,fallback:K$,affinity:W0,optimisticResponse:e0?.transport==="websocket",authorizeAttempt:async()=>{let r=await l0(),G0=r.scopedAttempt;b0=r,z$={...z$,accessToken:r.accessToken,anthropicAccountUuid:D$(r.accountIdentity),localSubject:r.localSubject,scopedAttempt:G0};let j$=new Headers(Q);return j$.set("authorization",`Bearer ${r.accessToken}`),{headers:j$,errorSecrets:[r.accessToken],onUpstreamStatus:(V9)=>{if(V9!==401||!G0)return;if(S$=G0,j4)N0(G0,"relay_status_field")}}},onResponseHeaders:(r)=>{vZ(r,z$),M1.commit(P0,xJ(r))},onDumpCreated:(r)=>{U1=r},dumpTag:v0?"start":void 0}),z0=await p0();if(!m0&&S$&&z0.status===401&&typeof j0==="string"&&(F1(D,B)??"").toUpperCase()==="POST"&&!B?.signal?.aborted){let r;try{r=await E0(S$,"model-relay",B?.signal??void 0)}catch{}if(r)await z0.body?.cancel().catch(()=>{}),k.info("claustrum","retrying after scoped credential rotation",{accountId:S,previousVersion:S$.recordVersion,newVersion:r.recordVersion,transport:"relay"}),i=S$,S$=void 0,z0=await p0()}if(m0&&T$&&z0.status===401&&typeof j0==="string"&&(F1(D,B)??"").toUpperCase()==="POST"&&!B?.signal?.aborted){let r;try{r=await E0(T$,"model",B?.signal??void 0)}catch{}if(r)await z0.body?.cancel().catch(()=>{}),k.info("claustrum","retrying after scoped credential rotation",{accountId:S,previousVersion:T$.recordVersion,newVersion:r.recordVersion,transport:"direct"}),i=T$,z0=await K$()}if(z0.status===401&&!b0.scopedAttempt&&typeof j0==="string"&&(F1(D,B)??"").toUpperCase()==="POST"&&!B?.signal?.aborted){let r=b0.accessToken,G0;try{G0=await l0(r)}catch(j$){q1.set(z0,j$)}if(G0&&G0.accessToken!==r)await z0.body?.cancel().catch(()=>{}),z0=m0?await K$():await p0()}if(g?.mark("send_headers_received",{route:d,ms:A0(J0()-$$),status:z0.status,relayConfigured:e0!=null,totalSendWithAccessMs:A0(J0()-y)}),m0)vZ(z0.headers,z$),M1.commit(P0,xJ(z0.headers));if(yZ(z0,{source:v0?"start":"turn",toolNameMap:F$,accountId:S,synthetic:v0,...a,requestedModel:O0(j0),request:M$,trackSessionId:W0??void 0,dump:m0?h0:U1,status:z0.status,streaming:y0}),m0&&T$&&z0.status===401)await N0(T$,"direct");if(j4=!0,!m0&&S$)await N0(S$,"relay_status_field");if(z0.ok)s1.publish(async()=>{if(z$.scopedAttempt)await C.vault.publish(z$.scopedAttempt,{lastUsed:Date.now()});else if(z$.localSubject)await C.publishLocal(z$.localSubject,{lastUsed:Date.now()})});return z0}async function G3(D,B){if(!D)return!1;try{return await h.refreshMain(B?.quotaKey??_$,D,B?.generation),L$(D,B)}catch{return!1}}async function a0(D,B={}){if(b$(D)){let M=await x1(!1,!0);if(D=await v(K),D&&M.size)D={...D,accounts:D.accounts.filter((S)=>!M.has(S.id)||N$(void 0,D,S.id,B.modelId))}}let f=await jJ.getUsableFallbackAccounts(D,{modelId:B.modelId}),g=new Map(f.map((M)=>[M.id,M])),d=[];for(let M of D?.accounts??[]){if(D&&D0(M)){if(V$(D)){if(N4(M.id,D))d.push(M);continue}if(C$(D)!=="local")continue;let S=g.get(M.id);if(S)d.push(S);else if(M.access&&(!M.expires||M.expires>Date.now())&&!h$(M.lastRefreshError)&&!z1(M.lastRefreshError,M.id,Date.now(),g$(M.refresh))&&D?.quota?.failClosedOnUnknownQuota!==!0&&!l9(Y$(M)))d.push(M);continue}if(B.includeApiRoutes===!0&&T1(M)&&M.enabled!==!1&&y9(M.baseURL))d.push(M)}if(!b$(D))return d;return d.filter((M)=>D0(M)?N$(Y$(M),D,M.id,B.modelId):!0)}async function V3(D){let B=D.mainQuotaIdentity?.quotaKey,f=h.getMain(B),g=f?.quota;if(!C1(f?.quota,D.storage,Date.now(),D.requestedModelId))try{g=await h.refreshMain(B,D.mainAccessToken,D.mainQuotaIdentity?.generation)}catch{}let d=await jJ.getUsableFallbackAccounts(D.storage,{modelId:D.requestedModelId}),M=await v(K)??D.storage,S=[],f0=V$(M);if(f0){let P=M?.claustrum?.primaryAccount;if(P?.state==="active"&&!M?.claustrum?.disabledAccountIdentities?.includes(P.accountId))S.push({id:r0,access:"",quota:g,identity:P?{kind:"known",accountId:P.accountId}:{kind:"unknown"},order:0,scoped:!0})}else if((D.mainAccessToken||D.mainPolicyDenied)&&!h$(M?.refresh?.mainLastRefreshError))S.push({id:r0,access:D.mainAccessToken,quota:g,identity:B?{kind:"known",accountId:B}:{kind:"unknown"},order:0});if(f0)for(let[P,y]of(M?.accounts??[]).entries()){if(y.enabled===!1||!D0(y))continue;if(y.claustrumScopedCredentialId&&y.claustrumScopedState==="active"){let p=Y$(y);if(!C1(p,M,Date.now(),D.requestedModelId))try{p=await h.refreshFallback(y.id,"",y)}catch{}S.push({id:y.id,access:"",quota:p,identity:{kind:"known",accountId:y.id},order:P+1,account:y,scoped:!0})}}else{let P=new Map(d.map((y)=>[y.id,y]));for(let[y,p]of(M?.accounts??[]).entries()){if(p.enabled===!1||!D0(p))continue;let T=P.get(p.id)??p;if(h$(T.lastRefreshError))continue;let Q=Y$(T);if(!C1(Q,M,Date.now(),D.requestedModelId))try{Q=await h.refreshFallback(T.id,T.access??"",T)}catch{}S.push({id:T.id,access:T.access??"",quota:Q,identity:{kind:"known",accountId:T.id},order:y+1,account:T})}}let $0=new Set(d.map((P)=>P.id)),v0=new Set(S.flatMap((P)=>{let y=P.id===r0?M?.refresh?.mainLastRefreshError:P.account?.lastRefreshError,p=!P.scoped,T=P.identity.kind==="known"?P.identity.accountId:void 0;if(p&&h$(y))return[];if(p&&z1(y,T,Date.now(),P.id===r0?D.mainRefreshToken?g$(D.mainRefreshToken):void 0:P.account?.refresh?g$(P.account.refresh):void 0)&&(P.id===r0||!$0.has(P.id)))return[];if(C1(P.quota,M,Date.now(),D.requestedModelId)&&t9({quota:P.quota,modelId:D.requestedModelId}).action==="migrate")return[];if(b$(M)&&!N$(P.quota,M,P.id===r0?void 0:P.id,D.requestedModelId))return[];return[P.id]})),I=S.flatMap((P)=>{let y=P.id===r0?M?.refresh?.mainLastRefreshError:P.account?.lastRefreshError,p=!P.scoped,T=P.identity.kind==="known"?P.identity.accountId:void 0;if(p&&h$(y)||p&&z1(y,T,Date.now(),P.id===r0?D.mainRefreshToken?g$(D.mainRefreshToken):void 0:P.account?.refresh?g$(P.account.refresh):void 0)&&(P.id===r0||!$0.has(P.id)))return[];let Q=P.id===r0?void 0:P.id,W0=l9(P.quota)?P.quota:void 0,I0=W0?{kind:"known",quota:W0}:{kind:"unknown"};return(!b$(M)||N$(I0.kind==="known"?I0.quota:void 0,M,Q,D.requestedModelId))&&S1(I0.kind==="known"?I0.quota:void 0,M)&&(I0.kind==="unknown"||x4(I0.quota,D.requestedModelId)&&(P.id===r0||$0.has(P.id)||Boolean(P.scoped)))?[{accountId:P.id,quota:I0,order:P.order}]:[]});return{storage:M,allRoutes:S,candidates:I,retainAccountIds:v0}}let K3=new WeakMap;async function X1(D,B,f,g,d,M,S){if(!f.length)return d??null;let f0=S?.returnLastOnExhausted??!0,$0=d??null,v0=!1,I=async()=>{if(v0)return;v0=!0,await d?.body?.cancel().catch(()=>{})};for(let[P,y]of f.entries()){let p;if(T1(y))await I(),p=await s0(D,B,y,M,`api_fallback_${P}`,g,S?.fableRequest,S?.mainAccessToken,S?.mainQuotaIdentity);else if(V$(g)&&y.claustrumScopedCredentialId){let W0=(await B0(y.id,B?.signal??void 0,void 0,O0(await q4(D,B)))).scopedAttempt;if(!W0)throw Error("Native vault fallback credential is unavailable");await I(),p=await R0(D,B,W0.accessToken,M,`fallback_${P}`,g,y.id,y.authLineageId,S?.fableRequest,S?.laneStartRequest,void 0,W0)}else if(C$(g)==="local"&&y.access)await I(),p=await R0(D,B,y.access,M,`fallback_${P}`,g,y.id,y.authLineageId,S?.fableRequest,S?.laneStartRequest);else continue;$0=p;let T=KZ(p,g);if(!T){let Q=await Z$(p,M);p=Q.response,$0=p,T=Q.rateLimited}if(!T){if(K3.set(p,T1(y)?"api":"oauth"),await S?.onSuccess?.(y),D0(y)&&Q0(g)&&h.shouldRefreshOnRequestCount(X9)){if(V$(g)||y.access)h.refreshFallback(y.id,V$(g)?"":y.access??"",y).then(()=>S?.onSuccess?.(y)).catch(()=>{})}return p}if(P<f.length-1||!f0)await p.body?.cancel().catch(()=>{})}return f0?$0:null}async function hW(D,B,f,g,d,M,S,f0,$0,v0,I=!1,P){if(!m(D,B?.body))return f;let y=J0(),p=M??await v(K);if(d?.mark("fallback_load_storage",{ms:A0(J0()-y),cached:!!M}),!(p?.accounts??[]).some((g0)=>g0.enabled!==!1&&(D0(g0)||T1(g0)&&y9(g0.baseURL))))return f;let Q=f,W0=KZ(Q,p),I0=c0(Q,!1);if(!W0){let g0=await Z$(Q,d);Q=g0.response,W0=g0.rateLimited,I0=c0(Q,g0.rateLimited)}if(!W0)return Q;let l=!1;if(g)l=g.some(T1);else if(I0)l=await G3(S,P);let t0=g;if(!t0){let g0=J0();t0=await a0(p,{includeApiRoutes:l,modelId:$0}),d?.mark("fallback_get_accounts",{ms:A0(J0()-g0),accounts:t0.length})}if(b$(p)){let g0=t0.length;if(t0=t0.filter((n0)=>D0(n0)?N$(Y$(n0),p,n0.id,$0):!0),t0.length<g0)q$("[killswitch] filtered fallbacks",{before:g0,after:t0.length})}return await X1(D,B,t0,p,Q,d,{onSuccess:f0,mainAccessToken:S,mainQuotaIdentity:P,fableRequest:v0,laneStartRequest:I})??Q}return{apiKey:"",async fetch(D,B){if(D instanceof Request&&B?.signal===void 0)B={...B,signal:D.signal};let f=E4(D,B),g=f.get(D9)==="1";f.delete(D9),B={...B,headers:f};let d=f.get("x-session-affinity")||f.get("x-opencode-session"),M=O0(B?.body),S=c$.plan(d,B?.body);if(S&&!S.downgraded){let q=Z4.get(S.recoveryKey);if(q)await q,S=c$.plan(d,B?.body)}let f0=I1==="server"&&b1(S?.effectiveModel??M)?S?.effectiveModel??M:void 0,$0=S?{plan:S}:void 0;if(S?.downgraded)B={...B,body:S.bodyText};let v0=B?.body,I=nY({bodyBytes:typeof v0==="string"?v0.length:void 0}),P=(q)=>{let s=d$.get(q);return V8(q,{toolNameMap:s?.toolNameMap,perf:(a,Z0)=>I.mark(a,Z0),laneStart:g,laneStartOAuthServed:K3.get(q)!=="api",...s?s.streaming?{onMessageStart:(a)=>gZ(q,a,!1),onMessageDelta:(a)=>LW(q,a),onStreamEnd:()=>s.dumpWrite}:{onMessageResponse:(a)=>gZ(q,a),onStreamEnd:()=>s.dumpWrite,responseMode:"json"}:{},contentFilterModel:S?.requestedModel,...!S?.downgraded&&S?{onContentFilter:(a)=>{if(!$0?.warmTarget)return k.debug("fable-fallback","content filter recovery unavailable for non-OAuth route",{session:S.sessionId}),!1;let Z0=c$.activate(S,$0.warmTarget.oauthAccountId);l$.delete(S.recoveryKey),l$.set(S.recoveryKey,JG(S.requestedModel));while(l$.size>128){let t=l$.keys().next().value;if(t)l$.delete(t);else break}R$.delete(S.recoveryKey),k.info("fable-fallback","content filter detected; switching session to Opus 4.8",{session:S.sessionId,requestedModel:S.requestedModel,completedToolUse:a?.completedToolUse===!0,remaining:Z0}),G4({sessionId:S.sessionId,mode:"opus",remaining:Z0,requestedModelId:S.requestedModel},Q,T)}}:{},...S?.downgraded&&$0?{onComplete:(a)=>{let Z0=c$.complete(S,$0.opusCacheAnchor);if(!Z0.counted)return;let t=l$.get(S.recoveryKey);if(t)l$.delete(S.recoveryKey),J$.delete(S.sessionId),aZ(S.sessionId,t);k.info("fable-fallback","Opus 4.8 turn completed",{session:S.sessionId,requestedModel:S.requestedModel,finishReason:a,remaining:Z0.remaining}),G4({sessionId:S.sessionId,mode:"opus",remaining:Z0.remaining,requestedModelId:S.requestedModel},Q,T);let i=FW($0);if(Z0.remaining===0){let l0=()=>{if(c$.remaining(S)!==0)return;G4({sessionId:S.sessionId,mode:"fable",remaining:0,requestedModelId:S.requestedModel},Q,T,ZG(S.requestedModel))};i.then(l0,l0)}}}:{},...f0?{serverSideFallbackModel:f0,...S?{onServerSideFallbackOutcome:(a)=>qW(S,a,Q,T)}:{}}:{}})},y=J0(),p=S?.effectiveModel??O0(await q4(D,B)),T=await _(p,B?.signal??void 0,!0);if(I.mark("get_auth",{ms:A0(J0()-y),authType:T.type,hasAccess:Boolean(T.access)}),T.type!=="oauth"){let q=P4(D),s=E4(D,B);FZ(s);let a=await q4(D,B);if(typeof a==="string")try{let t=JSON.parse(a);if(f9(t))a=JSON.stringify(t)}catch{}let Z0=await fetch(q.input,{...B,body:a,headers:s});return I.done("non_oauth_passthrough",{status:Z0.status}),Z0}let Q=await v(),W0=D$(T.nativeAccountIdentity),I0=T.nativeScopedAttempt,l;if(T.access){let q=await $4(T.access,O0(B?.body),W0,I0?.recordVersion);if(q.stale)throw Error("Main OAuth identity changed while resolving request credentials");if(l={...q,routingLineage:T.nativeRoutingLineage},W0)Y4=T.access,H1=q.providerAccountUuid}else if((T.modelDenied||T.credentialUnavailable||T.deferred)&&W0)await MZ("",W0,W0),l={quotaKey:W0,providerAccountUuid:W0,generation:h.getMainQuotaIdentityGeneration(),routingLineage:T.nativeRoutingLineage,stale:!1,state:V$(Q)?"on-cold":"na"};let t0=J0();I.mark("load_storage",{ms:A0(J0()-t0)}),h.updateStorage(Q),h.seedMainFromStorage(Q,_$),h.seedFallbacksFromAccounts((Q?.accounts??[]).filter(D0));let g0=d?B$.get(d):void 0;if(!S||I1==="server"&&g0?.requestedModelId&&f$(g0.requestedModelId)!==f$(S.requestedModel))RW(d,Q,T);let n0=m(D,B?.body),P0=O0(B?.body)??p,j0=e(l,Q),I$=k0("main",l?.routingLineage,W0,Q),W$=T.deferred?IZ(j0&&Q?{...Q,accounts:Q?.accounts??[],quota:{...Q?.quota,mainQuota:j0.quota}}:Q,W0,I$?.lineage===l?.routingLineage&&I$?.generalExhausted===!0):void 0;if(W$){let q=n0?await a0(Q,{includeApiRoutes:L$(void 0,l),modelId:P0}):[],s=await X1(D,B,q,Q,void 0,I,{onSuccess:(a)=>y0(a.id,"fallback"),mainQuotaIdentity:l,fableRequest:$0,laneStartRequest:g});if(s)return P(s);return new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:W$.message}}),{status:429,headers:{"content-type":"application/json","retry-after":String(W$.retryAfter)}})}let M$=()=>{let q=NZ(h.getMain(l?.quotaKey)?.quota,(Q?.accounts??[]).filter(D0),Date.now(),p);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(q)}})};if(n0)X9++;if(n0&&T.access&&(!T.expires||T.expires>Date.now()))CW(Q,T.access,l);async function y0(q,s){let a=Q,Z0=!1;if((Q?.accounts??[]).some((t)=>D0(t)&&t.quota))try{let t=await v(K);if(t)a=t;else Z0=!0}catch{Z0=!0}w$(a,{activeId:q,route:s,mainAccessToken:T.access,skipFallbackQuotaSeed:Z0})}let h0;if(n0&&d&&y$(Q)==="sticky-balanced"){let q=S?.effectiveModel??P0,s=U5(q),a=k1.trackedOAuthRoute(d),Z0=S?.cacheAccountId??(a?a.oauthAccountId??r0:void 0),t=!1;try{let i=await V3({storage:Q,mainAccessToken:T.access,mainRefreshToken:T.refresh,mainPolicyDenied:T.modelDenied||T.credentialUnavailable,requestedModelId:q,mainQuotaIdentity:l}),l0=async(e0)=>{let G$=await RZ();return G$.router.resolve({sessionId:d,family:s,modelId:q,affinityModelId:M,candidates:i.candidates,retainAccountIds:i.retainAccountIds,storage:i.storage,inputBytes:typeof B?.body==="string"?Buffer.byteLength(B.body):1,preferredAccountId:Z0,excludeAccountIds:e0,...G$.accountIdentities&&{accountIdentities:G$.accountIdentities}})},m0=h$(i.storage?.refresh?.mainLastRefreshError),T$=i.allRoutes.length===0&&!m0||i.allRoutes.some((e0)=>!e0.quota||!C1(e0.quota,i.storage,Date.now(),q)),K$=await l0();if(!K$&&T$){if(T.modelDenied)return M$();throw Error("Sticky-balanced routing is waiting for current OAuth quota snapshots")}if(!K$){if(T.modelDenied)return M$();if(V$(Q))throw new e9;let e0=D5({mainRefreshError:i.storage?.refresh?.mainLastRefreshError,fallbackReauthLabels:P8(i.storage),routeQuotas:i.allRoutes.flatMap((G$)=>G$.quota?[G$.quota]:[]),modelId:q});return I.done("return_sticky_no_route",{status:e0.status}),e0}let q0=i.allRoutes.find((e0)=>e0.id===K$?.accountId);if(K$&&q0){if(t=!0,S?.downgraded&&c$.bindRecoveryAccount(S,q0.id))k.info("fable-fallback","rebound recovery to migrated sticky account",{accountId:q0.id});let e0=async(N0)=>{if(N0.scoped){let z0=(await B0(N0.id,B?.signal??void 0,void 0,q)).scopedAttempt;if(!z0)throw Error("Native vault sticky credential is unavailable");return R0(D,B,z0.accessToken,I,`sticky:${N0.id}`,i.storage,N0.id,N0.account?.authLineageId,$0,g,N0.id===r0?l:void 0,z0)}return R0(D,B,N0.access??"",I,`sticky:${N0.id}`,i.storage,N0.id,N0.account?.authLineageId,$0,g,N0.id===r0?l:void 0)},G$=async(N0,p0,z0=!0)=>{return await y0(N0.id,"sticky-balanced"),I.done("return_sticky_balanced",{status:p0.status,accountId:N0.id,created:K$?.created,migrated:K$?.migrated}),P(p0)},IJ=async(N0)=>{let p0=N0,z0=KZ(N0,i.storage),r=!1;if(!z0){let G0=await Z$(N0,I);p0=G0.response,r=G0.rateLimited,z0=G0.rateLimited}return{response:p0,routeFailure:z0,streamingRateLimit:r}},z$=C1(q0.quota,i.storage,Date.now(),q)?t9({quota:q0.quota,modelId:q}):void 0;if(z$?.action==="hold")return G$(q0,await bJ(new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:"Sticky OAuth account five-hour quota resets shortly; retaining session affinity."}}),{status:429,headers:{"content-type":"application/json"}}),d,z$.retryAfterSeconds,!1,d$),!1);let $$=await IJ(await e0(q0)),S$=!1;if(!$$.routeFailure)return G$(q0,$$.response);if($$.response.status===401){let N0=q1.get($$.response);if(N0){let p0=await v(K),z0=q0.id,r=q0.id===r0?p0?.refresh?.mainLastRefreshError:p0?.accounts.find((G0)=>G0.id===z0&&D0(G0))?.lastRefreshError;if(!h$(r))throw N0}S$=!0}let j4=$$.response.status===403||S$;if($$.response.status===429||$$.streamingRateLimit){let N0;try{N0=q0.id===r0?await h.refreshMain(l?.quotaKey,q0.access??"",l?.generation):await h.refreshFallback(q0.id,q0.access??"",q0.account)}catch{N0=void 0}let p0=t9({quota:N0,modelId:q});if(I.mark("sticky_quota_failure",{accountId:q0.id,action:p0.action,reason:p0.reason}),p0.action==="hold")return G$(q0,await bJ($$.response,d,p0.retryAfterSeconds,$$.streamingRateLimit,d$));j4=p0.action==="migrate"}if(j4){let N0=q0.id;if(i=await V3({storage:i.storage,mainAccessToken:T.access,mainRefreshToken:T.refresh,mainPolicyDenied:T.modelDenied||T.credentialUnavailable,requestedModelId:q,mainQuotaIdentity:l}),i.candidates.filter((z0)=>z0.accountId!==N0).length>0){await $$.response.body?.cancel().catch(()=>{}),K$=await l0(new Set([N0]));let z0=i.allRoutes.find((r)=>r.id===K$?.accountId);if(K$&&z0){if(q0=z0,S?.downgraded)c$.bindRecoveryAccount(S,q0.id);return G$(q0,await e0(q0))}}else if(($$.response.status===429||$$.streamingRateLimit)&&L$(T.access,l)){let z0=(await a0(i.storage,{includeApiRoutes:!0,modelId:q})).filter(T1);if(z0.length>0){let r=await X1(D,B,z0,i.storage,$$.response,I,{onSuccess:(G0)=>y0(G0.id,"sticky-balanced"),mainAccessToken:T.access,mainQuotaIdentity:l,fableRequest:$0,laneStartRequest:g});if(r)return I.done("return_sticky_api_fallback",{status:r.status}),P(r)}}}return G$(q0,$$.response)}}catch(i){if(I.mark("sticky_balanced_error",{error:i instanceof Error?i.message:String(i)}),t||O1(i))throw i;let l0=i instanceof Error?i:Error(String(i));throw Object.assign(l0,{code:"ECONNRESET",syscall:"sticky-routing"}),l0}}if(n0&&y$(Q)==="fallback-first")try{let q=J0();h0=await a0(Q,{includeApiRoutes:L$(T.access,l),modelId:P0}),I.mark("fallback_first_get_accounts",{ms:A0(J0()-q),accounts:h0.length});let s=await X1(D,B,h0,Q,void 0,I,{returnLastOnExhausted:!1,mainAccessToken:T.access,mainQuotaIdentity:l,onSuccess:(a)=>y0(a.id,"fallback-first"),fableRequest:$0,laneStartRequest:g});if(s)return I.done("return_fallback_first",{status:s.status}),P(s);h0=void 0}catch(q){if(I.mark("fallback_first_error",{error:q instanceof Error?q.message:String(q)}),O1(q))throw q}if(T.deferred){if(Object.assign(T,await _(p,B?.signal??void 0)),T.access){let q=await $4(T.access,p,T.nativeAccountIdentity,T.nativeScopedAttempt?.recordVersion);if(q.stale)throw Error("Main OAuth identity changed while resolving request credentials");l={...q,routingLineage:T.nativeRoutingLineage},Y4=T.access,H1=q.providerAccountUuid}}if(!T.modelDenied&&(!T.access||!T.expires||T.expires<Date.now())){if(V$(Q))try{let t=(await B0("main",B?.signal??void 0,void 0,p)).scopedAttempt;if(!t)throw Error("Native vault main credential is unavailable");Y4=t.accessToken;let i=await R0(D,B,t.accessToken,I,"main",Q,"main",void 0,$0,g,l,t);return P(i)}catch(Z0){let t=n0?await a0(Q,{modelId:P0}):[],i=await X1(D,B,t,Q,void 0,I,{onSuccess:(l0)=>y0(l0.id,"fallback"),mainAccessToken:T.access,mainQuotaIdentity:l,fableRequest:$0,laneStartRequest:g});if(i)return P(i);if(Z0 instanceof H0)throw new e9;throw Z0}if(T.credentialFailure?.tokenRefreshFailed)throw T.credentialFailure;let q=await v(),s=q?.refresh?.mainLastRefreshError;if(s&&z1(s,T.nativeAccountIdentity??X4??q?.mainAccountId,Date.now(),T.refresh?g$(T.refresh):void 0))throw q$("[refresh] opencode main oauth request skipped backoff",{nextRetryAt:s.nextRetryAt,retryCount:s.retryCount,expiresInMs:T.expires?T.expires-Date.now():void 0}),Error(E8(s,Date.now()));q$("[refresh] opencode main oauth refresh required for request",{hasAccess:Boolean(T.access),expiresInMs:T.expires?T.expires-Date.now():void 0,expiredAgoMs:T.expires&&T.expires<Date.now()?Date.now()-T.expires:void 0});let a=J0();T.access=await U(void 0,p,B?.signal??void 0),I.mark("refresh_main_access",{ms:A0(J0()-a)})}if(!T.access&&!T.modelDenied)throw I.done("missing_access_error"),Error("OAuth access token is missing after refresh");function U1(){if(Q?.quota?.showToasts!==!0)return;let q=h.getMain(l?.quotaKey);if(!q)return;let s=(Q?.accounts??[]).filter((t)=>t.enabled!==!1&&D0(t)).map((t)=>({...t,quota:h.getFallback(t.id,t)?.quota??t.quota})),a=S1(q.quota,Q),Z0;if(a)Z0="main";else Z0=s.find((t)=>S1(t.quota,Q))?.id??"main";vW(q.quota,s,Z0)}if(n0&&Q0(Q))try{let q=J0(),s=e(l,Q),a=s?.quota;if(!a)a=await h.refreshMain(l?.quotaKey,T.access,l?.generation),s=e(l,Q),U1();else if(h.needsRefresh(X9,P0))if(e1(a)||M4(a,P0))a=await h.refreshMain(l?.quotaKey,T.access,l?.generation),s=e(l,Q);else h.refreshMain(l?.quotaKey,T.access,l?.generation).then(()=>{W4().catch(()=>{}),U1()}).catch(()=>{});w$(Q,{activeId:"main",route:"main",mainAccessToken:T.access});let Z0=S1(a,Q)&&x4(a,P0);if(I.mark("main_quota_for_routing",{ms:A0(J0()-q),passes:Z0,model:P0,modelScopedExhausted:M4(a,P0)}),!Z0){let t=J0();h0=await a0(Q,{includeApiRoutes:Boolean(s&&s.refreshAfter>Date.now()&&e1(s.quota)),modelId:P0}),I.mark("preselect_fallback_accounts",{ms:A0(J0()-t),accounts:h0.length});let i=await X1(D,B,h0,Q,void 0,I,{onSuccess:(l0)=>y0(l0.id,"fallback"),mainAccessToken:T.access,mainQuotaIdentity:l,fableRequest:$0,laneStartRequest:g});if(i)return I.done("return_preselected_fallback",{status:i.status}),P(i)}}catch(q){if(I.mark("main_quota_for_routing_error",{error:q instanceof Error?q.message:String(q)}),O1(q))throw q}let F$=e(l,Q)?.quota;if(Q?.quota?.failClosedOnUnknownQuota&&(F$===void 0||T.access.startsWith("sk-ant-oat")&&l?.providerAccountUuid===void 0)&&h.isBackedOff()){let q=h.getLastApiError(),s=q?_Z(q,Date.now()):"Quota API unavailable";return q$("[quota] blocked: quota API backed off (failClosed)",{nextRetryAt:q?.nextRetryAt,retryCount:q?.retryCount}),new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:s}}),{status:429,headers:{"content-type":"application/json","retry-after":String(q?.nextRetryAt?Math.max(1,Math.ceil((q.nextRetryAt-Date.now())/1000)):60)}})}if(b$(Q)){if(h.needsRefresh(X9,P0))try{await Promise.all([h.refreshMain(l?.quotaKey,T.access,l?.generation),x1(!1,!0)])}catch(s){q$("[quota] killswitch refresh failed",{error:s instanceof Error?s.message:String(s),backedOff:h.isBackedOff()})}F$=e(l,Q)?.quota}if(b$(Q)&&!N$(F$,Q,void 0,P0)){let s=m(D,B?.body)?await a0(Q,{includeApiRoutes:L$(T.access),modelId:P0}):[];if(s.length>0){q$("[route] skipping main (killswitch), trying fallbacks");let m0=await X1(D,B,s,Q,void 0,I,{onSuccess:(T$)=>y0(T$.id,"fallback"),mainAccessToken:T.access,mainQuotaIdentity:l,laneStartRequest:g});if(m0)return I.done("return_killswitch_fallback",{status:m0.status}),P(m0)}let a=Date.now(),Z0=(Q?.accounts??[]).filter((m0)=>m0.enabled!==!1&&D0(m0)).map((m0)=>({...m0,quota:Y$(m0)})),t=r3({mainQuota:F$,requestModelId:P0,storage:Q}),i=NZ(F$,Z0,a,t.isScopedDriven?t.modelId:void 0),l0=n3({retryAfterSeconds:i,...t.isScopedDriven&&{modelName:t.modelName}});return new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:l0}}),{status:429,headers:{"content-type":"application/json","retry-after":String(i)}})}if(T.modelDenied){let q=M$(),s=n0?await a0(Q,{modelId:p}):[],a=await X1(D,B,s,Q,void 0,I,{onSuccess:(t)=>y0(t.id,"fallback"),fableRequest:$0,laneStartRequest:g,mainAccessToken:T.access,mainQuotaIdentity:l});if(a)return P(a);if(!(y$(Q)!=="sticky-balanced"&&M4(F$,p)&&S1(F$,Q)&&N$(F$,Q,void 0,p)))return P(q);return P(await R0(D,B,"",I,"main",Q,"main",void 0,$0,g,l))}let z4=await R0(D,B,T.access,I,"main",Q,"main",void 0,$0,g,l,I0),b0=!1,G9=await hW(D,B,z4,h0,I,Q,T.access,(q)=>{return b0=!0,y0(q.id,"fallback")},P0,$0,g,l);if(!b0)await y0("main","main");return I.done("return_response",{status:G9.status}),P(G9)}}}return{}},get methods(){return[...xY(h4("opencode").tokenPath)?[DW]:[],{label:"Claude Pro/Max",type:"oauth",authorize:async()=>{if(await K1("opencode",process.env)!=="local")throw Error("Disconnect from the vault first.");if(await C.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(Y)=>{let G=await g9(Y,Z.verifier,Z.redirectUri,Z.state);if(G.type==="failed")return G;X$(),await C.loginOAuth({routeId:"main",replace:!0,credential:{access:G.access,refresh:G.refresh,expires:G.expires}});let z=b9("anthropic");return{type:"success",access:z.access,refresh:z.refresh,expires:z.expires}}}}},{label:"Create an API Key",type:"oauth",authorize:async()=>{let Z=await jZ("console");return{url:Z.url,instructions:"Paste the authorization code here:",method:"code",callback:async(Y)=>{let G=await g9(Y,Z.verifier,Z.redirectUri,Z.state);if(G.type==="failed")return G;return{type:"success",key:(await fetch("https://api.anthropic.com/api/oauth/claude_cli/create_api_key",{method:"POST",headers:{"Content-Type":"application/json",authorization:`Bearer ${G.access}`}}).then((O)=>O.json())).raw_key}}}}},{provider:"anthropic",label:"Manually enter API Key",type:"api"}]}},dispose:TW,__primeManager:N1,__quotaManager:h,__cacheKeepManager:k1,__resolveMainQuotaIdentityForTest:$4,__resolveSidebarQuotaAccessForTest:dZ,__mainProviderAccountUuidForTest:()=>H1,__fallbackRefreshReady:jW,get __scopedRuntime(){return O$(K,$.directory)},__notificationMessageIdBeforeAssistantForTest:t5,__trackDesktopNoticeMessageIdForTest:oZ,__isDesktopNoticeMessageForTest:sZ}},CV=jG;
|
|
42
|
-
export{O4 as a,xJ as b,fJ as c,h1 as d,T0 as e,b3 as f,D9 as g,G7 as h,K7 as i,z7 as j,l1 as k,P4 as l,v9 as m,V8 as n,CV as o};
|
package/dist/index-74r84r5f.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{Ae as g,Be as h,Ce as i,De as j,Ee as k,Fe as l,Ge as m,He as n,Ie as o,Je as p,Ke as q,Le as r,Me as s,Ne as t,Oe as u,Pe as v,Qe as w,ue as a,ve as b,we as c,xe as d,ye as e,ze as f}from"./index-fn0zqnnw.js";import"./index-mge0rw54.js";export{n as verifySafeParentSync,o as verifySafeParent,r as verifyPrivatePath,v as verifyOwnerOnly,t as securePrivatePath,s as readPrivateFile,w as readOwnerOnly,d as isPrivateDescriptor,p as createPrivateFile,q as createPrivateDirectory,u as createOwnerOnly,c as checkPosixOwnerOnlyPathAsync,b as checkPosixOwnerOnlyPath,e as WRONG_OWNER,m as WRITABLE_BY_OTHERS,k as UNSUPPORTED_FILESYSTEM,j as REPARSE_POINT,a as PrivateFilesUnavailableError,h as NULL_DACL,g as NOT_PROTECTED,l as MODE_REFUSAL,f as EXTRA_ACE,i as EMPTY_DACL};
|
package/dist/index-b3mxpp4w.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{existsSync as F,readFileSync as I}from"node:fs";import{homedir as J}from"node:os";import{dirname as X,join as B,resolve as V}from"node:path";import{fileURLToPath as Y}from"node:url";var Z="@cortexkit/opencode-anthropic-auth",L="@cortexkit/pi-anthropic-auth";function $(q=process.env,z=process.platform){return(z==="win32"?q.USERPROFILE||q.HOME:q.HOME)||J()}function K(q=process.env,z=process.platform){let w=q.OPENCODE_CONFIG_DIR?.trim();if(w)return V(w);return B(q.XDG_CONFIG_HOME||B($(q,z),".config"),"opencode")}function S(q=process.env){let z=q.XDG_DATA_HOME?.trim();if(z)return B(V(z),"opencode");return B(J(),".local","share","opencode")}function M(q=process.env){return B(S(q),"auth.json")}function R(q=process.env,z=process.platform){let w=q.PI_CODING_AGENT_DIR?.trim()||q.PI_AGENT_DIR?.trim();if(w)return V(w);return B($(q,z),".pi","agent")}function k(q=process.env){let w=q.PI_CODING_AGENT_DIR||B(J(),".pi","agent");if(w==="~")w=J();else if(w.startsWith("~/")||process.platform==="win32"&&w.startsWith("~\\"))w=B(J(),w.slice(2));if(w.startsWith("file://"))w=Y(w);return B(w,"auth.json")}function x(q){return`${Z}@${q}`}function y(q){return`${Z}@${q}`}function H(q){return`npm:${L}@${q}`}async function N(){let q=X(Y(import.meta.url));for(let z=0;z<5;z++){let w=B(q,"package.json");if(F(w))try{let Q=JSON.parse(I(w,"utf8"));if(typeof Q.version==="string"&&Q.version.trim())return Q.version.trim()}catch{}let W=X(q);if(W===q)break;q=W}return"1.22.0"}
|
|
2
|
-
export{Z as u,L as v,$ as w,K as x,M as y,R as z,k as A,x as B,y as C,H as D,N as E};
|
package/dist/index-fn0zqnnw.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{constants as X}from"node:fs";import{chmod as y,lstat as G,mkdir as v,open as N}from"node:fs/promises";import{createRequire as j}from"node:module";class H extends Error{code="ERR_PRIVATE_FILES_UNAVAILABLE"}function x(_,T){if(_!=="x64"&&_!=="arm64")throw new H(`Windows private files do not support ${_}; use x64 or ARM64 Node 24. No mode-only fallback is safe.`);if(_==="arm64"&&T&&!F(T))throw new H("Windows ARM64 requires Bun >= 1.3.10 with native ARM64 support; use ARM64 Node 24 or upgrade Bun. No mode-only fallback is safe.");return`private-files-win32-${_}.node`}function F(_){let T=/^(\d+)\.(\d+)\.(\d+)$/.exec(_);if(!T)return!1;let L=Number(T[1]),A=Number(T[2]),S=Number(T[3]);return L>1||L===1&&(A>3||A===3&&S>=10)}var z;function M(){if(z)return z;let _=x(process.arch,process.versions.bun);try{if(z=j(import.meta.url)(`../prebuilds/${_}`),!z||["create","read","verify","secure","verifySafeParent"].some((T)=>typeof z?.[T]!=="function"))throw Error("Invalid private-files N-API interface");return z}catch(T){throw new H(`Cannot load ${_}. Install @cortexkit/private-files with the matching Windows N-API v8 prebuild, or rebuild private-files/native with MSVC. Use local NTFS. No mode-only fallback is safe. Cause: ${String(T)}`)}}import*as O from"node:fs";import*as W from"node:fs/promises";import{posix as Q}from"node:path";function*P(_){return yield{kind:"realpath",path:_}}function*J(_,T){return yield{kind:_,path:T}}function*g(_){return yield{kind:"readFile",path:_}}function C(_,T){return{ok:!1,reason:T,path:_}}function $(_){return _?.code==="ENOENT"}function*f(_,T){if(!_||_.includes("\x00"))throw Error("invalid path");let L=T.isAbsolute(_)?_:`${process.cwd()}${T.sep}${_}`,A=[];for(;;)try{let S=yield*P(L);if(A.length&&!(yield*J("stat",S)).isDirectory())throw Error("nearest existing ancestor is not a directory");return{resolved:T.join(S,...A),existing:S,missing:A.length>0}}catch(S){if(!$(S))throw S;try{yield*J("lstat",L)}catch(R){if(!$(R))throw R;let E=T.dirname(L);if(E===L)throw S;A.unshift(T.basename(L)),L=E;continue}throw S}}function b(_,T){let L=new TextDecoder("utf-8",{fatal:!0}).decode(_),A=(S)=>S!==void 0&&/^\d+$/.test(S)&&Number.isSafeInteger(Number(S))&&Number(S)<=4294967295;return L.split(`
|
|
2
|
-
`).filter((S)=>S.trim()!==""&&!S.trimStart().startsWith("#")).map((S)=>{let R=S.split(":");if(R.length!==T||!R[0]||/\s/.test(R[0])||!A(R[2])||T===7&&!A(R[3]))throw Error("malformed account record");if(T===4&&R[3]!==""&&R[3].split(",").some((E)=>!E||/\s/.test(E)))throw Error("malformed group members");return R})}function*k(_,T){let L=[];for(let[D,K]of[["/etc/passwd",7],["/etc/group",4]]){let I;try{I=yield*g(D)}catch{return`could not read ${D} to establish a user-private group`}try{L.push(b(I,K))}catch{return`could not parse ${D} to establish a user-private group`}}let[A,S]=L,R=A.filter((D)=>Number(D[2])===_),E=S.filter((D)=>Number(D[2])===T);if(R.length!==1||E.length!==1)return"group-writable ancestor (effective user or group is absent or ambiguous in account files)";let Y=R[0][0];if(E[0][3]!==""&&E[0][3].split(",").some((D)=>D!==Y))return"group-writable ancestor (other group members)";if(A.some((D)=>Number(D[2])!==_&&Number(D[3])===T))return"group-writable ancestor (another user's primary group)";return}function*m(_,T,L,A=!1){if(T==null)return C(_,"could not determine effective uid");let S;try{let D=yield*f(_,Q);if(A&&(D.missing||!(yield*J("stat",D.existing)).isDirectory()))return C(_,"ancestor is not a directory");S=D.missing||(yield*J("stat",D.existing)).isDirectory()?D.existing:Q.dirname(D.existing)}catch{return C(_,"could not resolve target or its nearest existing ancestor")}let R,E,Y=!1;for(;;){let D;try{D=[yield*J("lstat",S),yield*J("stat",S)]}catch{return C(S,"could not inspect ancestor")}for(let I of D){if(!I.isDirectory())return C(S,"ancestor is not a directory");if(I.uid!==T&&I.uid!==0)return C(S,"foreign owner");if((I.mode&18)===0)continue;if(I.uid===0&&(I.mode&512)!==0){if(R?.every((Z)=>Z.uid===T&&(Z.mode&18)===0))continue;return C(S,"sticky ancestor without an owner-only child")}if((I.mode&2)!==0)return C(S,"world-writable ancestor");if((I.mode&512)!==0||I.uid!==T||L==null||I.gid!==L)return C(S,"group-writable ancestor (not a non-sticky user-private group)");if(!Y)E=yield*k(T,L),Y=!0;if(E)return C(S,E)}let K=Q.dirname(S);if(K===S)return{ok:!0};R=D,S=K}}function q(_,T){return m(_,T.euid===void 0?process.geteuid?.():T.euid,T.egid===void 0?process.getegid?.():T.egid,T.directoryOnly)}function w(_,T={}){let L={realpathSync:O.realpathSync.native,lstatSync:O.lstatSync,statSync:O.statSync,readFileSync:O.readFileSync,...T.fs},A=q(_,T),S=A.next();while(!S.done){let{kind:R,path:E}=S.value,Y;try{switch(R){case"realpath":Y=L.realpathSync(E);break;case"lstat":Y=L.lstatSync(E);break;case"stat":Y=L.statSync(E);break;case"readFile":Y=L.readFileSync(E);break}}catch(D){S=A.throw(D);continue}S=A.next(Y)}return S.value}async function B(_,T={}){let L={realpath:W.realpath,lstat:W.lstat,stat:W.stat,readFile:W.readFile,...T.fs},A=q(_,T),S=A.next();while(!S.done){let{kind:R,path:E}=S.value,Y;try{Y=await L[R](E)}catch(D){S=A.throw(D);continue}S=A.next(Y)}return S.value}function U(_,T){let L=_.aces?.[0];return(_.owner===_.currentUser||_.owner==="S-1-5-32-544"||_.owner==="S-1-5-18")&&_.kind===T&&!_.reparse&&_.daclPresent&&(_.daclProtected&&L?.flags===(T==="directory"?3:0)||T==="file"&&!_.daclProtected&&L?.flags===16&&!!_.parent&&_.parent.currentUser===_.currentUser&&U(_.parent,"directory"))&&_.aces?.length===1&&L?.type===0&&L.mask===2032127&&L.sid===_.currentUser}var n="wrong-owner",r="extra-ace",i="not-protected",a="null-dacl",t="empty-dacl",e="reparse-point",__="unsupported-filesystem",T_="mode",L_="writable-by-others";function V(_,T){if(T.ok)return T;return{ok:!1,reason:/writable|sticky|user-private group/.test(T.reason)?"writable-by-others":T.reason==="foreign owner"?"wrong-owner":T.reason==="ancestor is not a directory"?"wrong-kind":"io-error",path:_,level:T.path}}function Y_(_,T={}){if(process.platform==="win32")return{ok:!1,reason:"unsupported-filesystem",path:_};return V(_,w(_,{...T,directoryOnly:!0}))}async function I_(_,T={}){if(process.platform!=="win32")return V(_,await B(_,{...T,directoryOnly:!0}));try{return await M().verifySafeParent(_),{ok:!0}}catch(L){if(L instanceof H)return{ok:!1,reason:"unsupported-filesystem",path:_};let A=L;if(A.code!=="ERR_PRIVATE_FILES_SECURITY")throw L;return{ok:!1,reason:A.reason??"io-error",path:_,...A.level?{level:A.level}:{},...A.sid||A.ownerSid?{sid:A.sid??A.ownerSid}:{},...A.mask!==void 0?{mask:A.mask}:{}}}}async function c(_,T=""){if(process.platform==="win32")return M().create(_,"file",typeof T==="string"?Buffer.from(T):T);let L=await N(_,"wx",384);try{await L.writeFile(T)}finally{await L.close()}}async function l(_){if(process.platform==="win32")return M().create(_,"directory",Buffer.alloc(0));await v(_,{mode:448})}async function C_(_,T){if(process.platform==="win32")return M().verify(_,T);let L=await G(_);if((T==="file"?!L.isFile():!L.isDirectory())||(L.mode&511)!==(T==="file"?384:448)||L.uid!==process.getuid?.())throw Error(`Private ${T} requires current-user ownership and ${T==="file"?"0600":"0700"}: ${_}`)}async function h(_){if(process.platform==="win32")return M().read(_);let T=await N(_,X.O_RDONLY|X.O_NOFOLLOW|X.O_NONBLOCK);try{let L=await T.stat();if(!L.isFile()||(L.mode&511)!==384||L.uid!==process.getuid?.())throw Error(`Private file requires current-user ownership and 0600: ${_}`);return await T.readFile()}finally{await T.close()}}async function H_(_,T){if(process.platform==="win32")return M().secure(_,T);await y(_,T==="file"?384:448)}async function M_(_,T){if(T.kind==="dir")return l(_);return c(_)}async function O_(_){if(process.platform!=="win32"){let T=await G(_),L=T.isDirectory()?448:384;if(!T.isFile()&&!T.isDirectory())return{ok:!1,refusal:{reason:"wrong-kind",message:"Expected a regular file or directory"}};if(T.uid!==process.getuid?.())return{ok:!1,refusal:{reason:"wrong-owner",ownerSid:`uid:${T.uid}`}};let A=T.mode&511;return A===L?{ok:!0}:{ok:!1,refusal:{reason:"mode",actual:A,expected:L}}}try{return await M().verify(_,"auto"),{ok:!0}}catch(T){if(T instanceof H)return{ok:!1,refusal:{reason:"unsupported-filesystem",message:T.message}};let L=T;if(L.code!=="ERR_PRIVATE_FILES_SECURITY")throw T;if(L.reason==="wrong-owner")return{ok:!1,refusal:{reason:"wrong-owner",ownerSid:L.ownerSid??"unknown"}};if(L.reason==="extra-ace")return{ok:!1,refusal:{reason:"extra-ace",sid:L.sid??"unknown",mask:L.mask??0}};return{ok:!1,refusal:{reason:L.reason&&L.reason!=="mode"?L.reason:"io-error",message:L.message}}}}var W_=h;
|
|
3
|
-
export{H as ue,w as ve,B as we,U as xe,n as ye,r as ze,i as Ae,a as Be,t as Ce,e as De,__ as Ee,T_ as Fe,L_ as Ge,Y_ as He,I_ as Ie,c as Je,l as Ke,C_ as Le,h as Me,H_ as Ne,M_ as Oe,O_ as Pe,W_ as Qe};
|