@cortexkit/opencode-anthropic-auth 2.0.1 → 2.0.3

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