@cortexkit/opencode-anthropic-auth 1.23.0 → 2.0.0

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