@cortexkit/opencode-anthropic-auth 1.23.0 → 2.0.1

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 (88) 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 +103 -80
  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-xzbhzz0a.js → index-04syas8a.js} +2 -2
  9. package/dist/index-1jkyhgyr.js +2 -0
  10. package/dist/{index-8y2t4mwz.js → index-2arfb1y3.js} +1 -1
  11. package/dist/index-3xqv3rw3.js +2 -0
  12. package/dist/{index-0jfsxyn9.js → index-52r2e1h9.js} +1 -1
  13. package/dist/index-b3mxpp4w.js +2 -0
  14. package/dist/index-p4wvcwhh.js +3 -0
  15. package/dist/{index-1gr8v4fn.js → index-rqync0pc.js} +1 -1
  16. package/dist/index-ynq181e8.js +42 -0
  17. package/dist/index-yxtdke11.js +449 -0
  18. package/dist/index-zdgceztz.js +1 -0
  19. package/dist/index.js +1 -38
  20. package/dist/native-command.d.ts +19 -0
  21. package/dist/rpc/notifications.d.ts +2 -1
  22. package/dist/rpc/port-file.js +1 -1
  23. package/dist/rpc/protocol.d.ts +8 -4
  24. package/dist/rpc/protocol.js +1 -1
  25. package/dist/rpc/rpc-client.d.ts +2 -0
  26. package/dist/rpc/rpc-client.js +1 -1
  27. package/dist/rpc/rpc-dir.js +1 -1
  28. package/dist/rpc/rpc-server.d.ts +5 -1
  29. package/dist/setup/command.d.ts +12 -0
  30. package/dist/setup/command.test.d.ts +1 -0
  31. package/dist/setup/detect.d.ts +7 -4
  32. package/dist/setup/host-executable.d.ts +3 -0
  33. package/dist/setup/native-activation.d.ts +29 -0
  34. package/dist/setup/native-enrollment.d.ts +26 -0
  35. package/dist/setup/native-enrollment.test.d.ts +1 -0
  36. package/dist/setup/native-local.d.ts +20 -0
  37. package/dist/setup/native-login.d.ts +3 -0
  38. package/dist/setup/native-paths.d.ts +15 -0
  39. package/dist/setup/native-paths.test.d.ts +1 -0
  40. package/dist/setup/paths.d.ts +3 -2
  41. package/dist/setup/pi.d.ts +14 -4
  42. package/dist/setup/process-fence.d.ts +7 -1
  43. package/dist/setup/process-fence.test.d.ts +1 -0
  44. package/dist/sidebar-state.js +1 -1
  45. package/dist/tui/command-dialogs.d.ts +5 -0
  46. package/dist/tui-preferences.js +2 -2
  47. package/dist/v2/activation.d.ts +7 -0
  48. package/dist/v2/adapter.d.ts +276 -0
  49. package/dist/v2/install.d.ts +13 -0
  50. package/dist/v2/lifecycle.d.ts +8 -0
  51. package/dist/v2/menu-contract.d.ts +8 -0
  52. package/dist/v2/menu.d.ts +10 -0
  53. package/dist/v2/models.d.ts +6 -0
  54. package/dist/v2/ownership.d.ts +11 -0
  55. package/dist/v2/prime.d.ts +12 -0
  56. package/dist/v2/rpc.d.ts +50 -0
  57. package/dist/v2/server.d.ts +8 -0
  58. package/dist/v2/server.js +4 -0
  59. package/dist/v2/setup.d.ts +58 -0
  60. package/dist/v2/source.d.ts +41 -0
  61. package/dist/v2/tui.d.ts +13 -0
  62. package/dist/v2/tui.js +2 -0
  63. package/dist/v2/wire.d.ts +36 -0
  64. package/package.json +20 -5
  65. package/src/rpc/notifications.ts +9 -2
  66. package/src/rpc/protocol.ts +8 -7
  67. package/src/rpc/rpc-client.ts +17 -0
  68. package/src/rpc/rpc-server.ts +20 -3
  69. package/src/tui/command-dialogs.tsx +264 -0
  70. package/src/tui/entry.mjs +44 -18
  71. package/src/tui-compiled/rpc/protocol.ts +8 -7
  72. package/src/tui-compiled/rpc/rpc-client.ts +17 -0
  73. package/src/tui-compiled/tui/command-dialogs.tsx +315 -76
  74. package/src/tui-compiled/tui.tsx +24 -7
  75. package/src/tui.tsx +37 -9
  76. package/dist/claustrum-enrollment-registry.d.ts +0 -4
  77. package/dist/custody-enrollment.d.ts +0 -14
  78. package/dist/custody-live.d.ts +0 -111
  79. package/dist/custody-manifest-watcher.d.ts +0 -16
  80. package/dist/index-1fq7h6yd.js +0 -430
  81. package/dist/index-797pmamn.js +0 -2
  82. package/dist/index-a5d6v3ba.js +0 -5
  83. package/dist/index-n96q8pks.js +0 -2
  84. package/dist/index-xxhyhp98.js +0 -2
  85. package/dist/index-z7gfdyv3.js +0 -1
  86. package/dist/local-login.d.ts +0 -64
  87. package/dist/logger-kk9vyem9.js +0 -1
  88. package/dist/setup/claustrum.d.ts +0 -26
@@ -0,0 +1,42 @@
1
+ import{p as g5}from"./index-2arfb1y3.js";import{r as y5}from"./index-rqync0pc.js";import{y as m5}from"./index-b3mxpp4w.js";import{F as p5,K as n9,M as c5,N as l5}from"./index-04syas8a.js";import{$a as YZ,$b as c9,$c as h1,$d as M5,Aa as U8,Ab as E$,Ac as o8,Ba as I$,Bb as y9,Bc as R7,Ca as c1,Cb as E8,Cc as q7,Da as ZZ,Db as GZ,Dc as k4,Dd as U5,Ea as S$,Eb as I4,Ec as r8,Fa as E4,Fb as m9,Fc as s8,Ga as l1,Gb as P8,Gc as a8,Gd as D5,Ha as f9,Hb as M8,Hc as v4,Hd as w5,Ia as k9,Ib as R8,Ic as I7,Id as B5,Ja as D8,Jc as A9,Jd as Q5,Ka as P4,Kb as x4,Kc as h4,Kd as u3,La as w8,Lb as q8,Lc as t8,Ld as I3,Ma as x$,Mb as I8,Mc as e8,Md as T5,Na as G1,Nb as VZ,Nc as $5,Nd as i9,Oa as B8,Ob as KZ,Oc as J5,Od as F5,Pa as Q8,Pb as x8,Pc as b4,Qa as WZ,Qb as NZ,Qc as g4,Ra as XZ,Rb as f8,Rc as x7,Rd as x3,Sa as v9,Sb as k8,Sc as C9,Sd as S5,Ta as H9,Tb as v8,Tc as f7,Ua as M4,Ub as h8,Uc as M$,Va as R4,Vb as p9,Vc as y4,Vd as A5,Wa as A1,Wc as Z5,Wd as C5,Xa as h9,Xb as f4,Xc as W5,Xd as v3,Ya as f$,Yb as jZ,Yc as X5,Yd as E5,Za as b3,Zb as b8,Zc as m4,Zd as p4,_a as _$,_b as g8,_c as k7,_d as P5,ab as b9,ac as i1,ad as Y5,ae as R5,bb as V1,bc as y8,bd as v7,be as q5,ca as $Z,cb as T8,cc as zZ,cd as h7,ce as I5,da as q9,db as d1,dc as C$,dd as fJ,de as x5,ea as f1,eb as u1,ec as m8,ed as b7,ee as f5,fa as S9,fb as q4,fc as OZ,ga as _7,gb as F8,gc as l9,gd as E9,ge as k5,ha as L7,hb as g9,hc as d9,hd as k$,ia as Q4,ib as AJ,ic as p8,ie as F4,ja as T4,jb as W3,jc as _Z,jd as G5,je as g7,ka as H7,kb as B7,kc as LZ,kd as V5,ke as v$,la as y1,lb as S8,lc as c8,ld as K5,le as v5,ma as _8,mb as Q7,mc as HZ,md as Y1,me as DZ,na as U7,nb as T7,nc as B4,nd as N5,ne as h5,oa as D7,ob as F7,oc as yJ,od as j5,oe as wZ,pa as w7,pb as PJ,pc as UZ,pd as K1,pe as y7,qa as JZ,qb as A8,qc as A3,qe as b5,ra as I9,rc as P7,rd as n0,re as m7,sb as S7,sc as l8,sd as z5,se as p7,tb as A7,tc as d8,td as C1,ua as V9,ub as C7,uc as u8,ud as O5,va as U0,vb as E7,vc as i8,vd as u9,wa as S1,wb as C8,wc as n8,wd as _5,xa as x9,xc as M7,xd as G3,ya as L8,yc as T1,yd as L5,za as H8,zb as f,zc as X1,zd as H5}from"./index-yxtdke11.js";import{Qe as i3}from"./index-52r2e1h9.js";import{randomUUID as tJ}from"node:crypto";import{existsSync as AY}from"node:fs";import{randomUUID as Z3}from"node:crypto";var z4="x-cortexkit-billing-lineage",hW=4096,bW=4096,gW=1024,X3=new Set(["title","summary","compaction"]),yW="[lane start] — automated cache warm; no response needed.";function mW($){let J=$.info?.sessionID??$.info?.sessionId;return typeof J==="string"&&J.length>0?J:void 0}function pW($){if($.info?.synthetic===!0||$.info?.ignored===!0||typeof $.info?.agent==="string"&&X3.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===yW)return!0}return!1}function B1($,J){while($.size>J){let W=$.keys().next().value;if(W===void 0)return;$.delete(W)}}function CJ($){let J=$.get("request-id")??$.get("x-request-id");return J&&AJ(J)?J:void 0}class EJ{#$;#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??Z3,this.#z=$.createRequestToken??Z3,this.#N=$.maxPrompts??hW,this.#O=$.maxRequests??bW,this.#X=$.maxSessions??gW}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=mW(J),Y=J.info?.id;if(!W||typeof Y!=="string"||Y.length===0)return;let V=this.#j(W,Y);if(pW(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(!W3(N))return;this.#J.set(V,N),B1(this.#J,this.#N)}markHeaders($){let J=this.#j($.sessionId,$.messageId);if(X3.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||!AJ(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",cW="MC-CACHE-DIAG ",lW=1000,dW=300000,uW={turn:!1,start:!0,prewarm_cachekeep:!0},iW=1000;class MJ{entries=new Map;previousFor($){return this.entries.get($)??null}capture($,J,W){PJ(this.entries,$,{messageId:J,receivedAt:W},lW)}}class RJ{hashes=new Map;capture($,J){if(this.hashes.has($))return null;return PJ(this.hashes,$,!0,iW),`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 qJ($,J,W,Y,V){let j=new Headers($.headers);if(j.set("retry-after",String(G3(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 nW($){return l$($)&&$.type==="ephemeral"}function V3($,J){if(!nW($))return;J.push($.ttl==="1h"?"1h":"5m")}function Y3($,J){if(!Array.isArray($))return;for(let W of $)if(l$(W))V3(W.cache_control,J)}function G9($){if(!l$($))return null;let J=[];if(V3($.cache_control,J),Y3($.system,J),Array.isArray($.messages)){for(let W of $.messages)if(l$(W))Y3(W.content,J)}return J.at(-1)??null}function oW($){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 K3($){if(typeof $.source!=="string"||$.source.length===0||typeof $.accountId!=="string"||$.accountId.length===0||typeof $.synthetic!=="boolean"||typeof $.betasHash!=="string"||$.betasHash.length===0)return{};let J=uW[$.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=oW($.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<dW&&$.receivedAt>=$.request.previousMessageReceivedAt?{messageId:Y,previousMessageId:$.request.previousMessageId}:void 0;return{record:G0,messageId:Y,...S?{canary:S}:{}}}function N3($){return`${cW}${JSON.stringify($)}`}function L4($,J){if(S$(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 j3($){if(S$($)!=="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 z3($){if(f1($,"anthropic"))return"T";if($.type==="oauth"&&$.access&&$.refresh)return"R";return"X"}function IJ($,J){if($.role==="main"){if(S$(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(S$(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 O3($){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 rW}from"node:crypto";var U3=512,sW=1024,aW=4096,U4=32,D4=32,N9="[A-Za-z0-9_-]{1,128}",tW="<cortexkit-internal-effort ",eW="<cortexkit-internal-effort-plan ",D3=/^\s*(?:§[0-9]+§\s*)+$/,w4={low:"l",medium:"m",high:"h",xhigh:"x",max:"z"},vJ=Object.fromEntries(Object.entries(w4).map(([$,J])=>[J,$])),hJ="<cortexkit-internal-effort-v2 ",bJ="<cortexkit-internal-effort-anchor-v1 ",k1="x-cortexkit-effort-plan";class F0 extends Error{check;details;constructor($,J="unspecified",W={}){super($);this.check=J;this.details=W;this.name="EffortMarkerCorrelationError"}}function u0($){return typeof $==="object"&&$!==null&&!Array.isArray($)}function xJ($){return $?.info?.role==="user"&&$.info.model?.providerID==="anthropic"&&X1($.info.model.modelID)}function _3($){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 rW("sha256").update($).digest("hex")}function $X($){return W1(`scope:${$}`).slice(0,D4)}function j9($){return W1(`cortexkit-effort-v2:${$}`).slice(0,U4)}function JX($,J,W){let Y=w4[W],V=`transition:${$}:${J}:${Y}`;return`${hJ}scope="${$}" boundary="${J}" effort="${Y}" check="${j9(V)}"/>`}function w3($){let J=$.match(new RegExp(`^${hJ}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=vJ[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 ZX($,J,W,Y){let V=w4[W],j=`anchor:${$}:${J}:${V}:${Y}`;return`${bJ}scope="${$}" boundary="${J}" effort="${V}" digest="${Y}" check="${j9(j)}"/>`}function B3($){let J=$.match(new RegExp(`^${bJ}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=vJ[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 kJ($){return $.trim()===""||D3.test($)}function L3(){return new RegExp(`(?:${eW}nonce="[^"]+" baseline="[^"]+" count="[^"]+" sig="[0-9a-f]+"/>|${tW}nonce="[^"]+" effort="[^"]+" sig="[0-9a-f]+"/>)`,"g")}function WX(){return new RegExp(`${hJ}scope="[0-9a-f]{${D4}}" boundary="${N9}" effort="[lmhxz]" check="[0-9a-f]{${U4}}"/>`,"g")}function XX(){return new RegExp(`${bJ}scope="[0-9a-f]{${D4}}" boundary="${N9}" effort="[lmhxz]" digest="[0-9a-f]{64}" check="[0-9a-f]{${U4}}"/>`,"g")}function Q3($,J,W){let Y=0,V=$,j=$.replace(L3(),"");if(j!==$&&D3.test(j))Y+=[...$.matchAll(L3())].length,V=j;return V=V.replace(WX(),(N)=>{let L=w3(N);if(!L)return N;return J?.(L),Y++,""}),V=V.replace(XX(),(N)=>{let L=B3(N);if(!L)return N;return W?.(L),Y++,""}),{text:V,removed:Y}}function YX($){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=Q3(W.text);if(Y.removed===0)return[W];if(kJ(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 GX($){return["v2",$.scope,w4[$.baseline],$.markerCount.toString(36),$.digest].join(".")}function VX($){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=vJ[Y??""],L=Number.parseInt(V??"",36);if(!W||!N||!j||!Number.isSafeInteger(L)||L<0||L>U3)return null;return{scope:W,baseline:N,markerCount:L,digest:j}}function T3($){let J=$.findLast((J0)=>J0.info?.role==="user");if(!J||!xJ(J))return null;if(YX($),!Array.isArray(J.parts)||!_3(J))return null;let W=J.info?.sessionID,Y=J.info?.id;if(typeof W!=="string"||typeof Y!=="string")throw new F0("Cannot correlate Fable 5.1 effort markers without session and message IDs");let V=$X(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&&xJ(j))L=fJ(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(!xJ(J0)||!_3(J0))continue;let S=fJ(G0.model?.variant)??"high";if(!L){L=S,A=S;continue}if(S===A)continue;if(M.length>=U3)throw new F0("Too many Fable 5.1 effort changes in the active context");if(!Array.isArray(J0.parts)||typeof G0.id!=="string")throw new F0("Cannot mark a Fable 5.1 effort change without message identity");let r=JX(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?ZX(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 KX($){let J=Array.isArray($.messages)?$.messages:[],W=[];for(let Y of J){let V=[],j=[];if(!u0(Y)||Y.role!=="user"){W.push({value:Y,transitions:V,anchors:j});continue}let N=(L)=>Q3(L,(A)=>V.push(A),(A)=>j.push(A));if(typeof Y.content==="string"){let L=N(Y.content);Y.content=L.removed>0&&kJ(L.text)?"":L.text}else if(Array.isArray(Y.content))Y.content=Y.content.flatMap((L)=>{if(!u0(L)||L.type!=="text"||typeof L.text!=="string")return[L];let A=N(L.text);if(A.removed>0&&kJ(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 NX($,J){let W=$[J]?.value,Y=$[J-1]?.value;if(!u0(W)||W.role!=="user"||!Array.isArray(W.content)||W.content.length===0||!u0(Y)||Y.role!=="assistant"||!Array.isArray(Y.content))return!1;let V=new Set(Y.content.flatMap((j)=>u0(j)&&j.type==="tool_use"&&typeof j.id==="string"?[j.id]:[]));return W.content.every((j)=>u0(j)&&j.type==="tool_result"&&typeof j.tool_use_id==="string"&&V.has(j.tool_use_id))}function jX($,J){if(J<0)return!1;let W=$.flatMap((Y,V)=>V>J&&u0(Y.value)&&Y.value.role==="user"?[V]:[]);return W.length>0&&W.every((Y)=>NX($,Y))}function H3($){if(!u0($))return null;if(typeof $.id==="string")return $.id;return typeof $.message_id==="string"?$.message_id:null}function zX($,J){if(!J)return null;if(J.scope!==$.scope||J.baseline!==$.baseline||J.markerCount!==$.markerCount||J.digest!==$.digest||J.transitionTokens.length!==$.markerCount)throw new F0("Fable 5.1 effort marker request plan mismatch");let W=J.transitionTokens.map((j)=>w3(j)),Y=J.anchorToken?B3(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 F0("Fable 5.1 effort marker request plan mismatch");return{transitions:W,anchor:Y}}function F3($,J,W,Y){if(!Array.isArray($.messages))return{found:0,inserted:0};let V=VX(W);if(W&&!V)throw new F0("Missing or invalid internal Fable 5.1 effort request plan");let j=V?zX(V,Y):null,N=j?.transitions??null;if(!$.messages.some((h)=>{if(!u0(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)=>u0(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)=>u0(H0)&&H0.role==="user"),K0=$.messages[h],k=u0(K0)&&Array.isArray(K0.content)?K0.content:[];throw new F0(`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)=>u0(H0)&&H0.role==="user").length,lastUserMessageIndex:h,lastUserTextBlockCount:k.filter((H0)=>u0(H0)&&H0.type==="text").length,lastUserToolResultBlockCount:k.filter((H0)=>u0(H0)&&H0.type==="tool_result").length})}if(!N&&V.digest!==K9(V.scope,V.baseline,0,[]))throw new F0("Fable 5.1 effort marker request plan mismatch");if(J&&X1($.model)){let h=u0($.output_config)?{...$.output_config}:{};h.effort=N?.at(-1)?.effort??V.baseline,$.output_config=h}return{found:0,inserted:0}}let A=KX($),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 F0("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 F0("Fable 5.1 effort marker scope mismatch");if(h.anchors.length>1)throw new F0("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)=>u0(h.value)&&h.value.role==="user"),S=d[0],r=A.messages[G0]?.value,a=jX(A.messages,J0);if(V.markerCount>0&&(d.length!==1||J0!==G0&&!a||!S||S.scope!==V.scope))throw new F0("Missing or invalid internal Fable 5.1 effort anchor placement","anchor_placement",{anchorBoundaryId:S?.boundary??null,plannedBoundaryId:j?.anchor?.boundary??null,lastUserMessageId:H3(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 F0("Unexpected internal Fable 5.1 effort anchor");if(j?.anchor&&S?.token!==j.anchor.token)throw new F0("Mismatched internal Fable 5.1 effort anchor token","anchor_token",{anchorBoundaryId:S?.boundary??null,plannedBoundaryId:j.anchor.boundary,lastUserMessageId:H3(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 F0(`Fable 5.1 effort marker correlation failed: expected ${V.markerCount}, found ${n}`);let K0=N.slice(h);if(M.some((H0,n$)=>H0.token!==K0[n$]?.token))throw new F0("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 F0("Fable 5.1 effort marker non-prefix loss");w0=k.at(-1)?.effort??V.baseline}else{if(n!==V.markerCount)throw new F0(`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 F0("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 F0("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=u0($.output_config)?{...$.output_config}:{};h.effort=w0,$.output_config=h}return{found:n,inserted:k0}}class gJ{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>sW){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=GX(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 F0("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>aW){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 S3="claude-opus-4-8",OX=10,_X=128,LX=86400000;function R$($){if(typeof $!=="string")return null;let J=A3($);if(h1(J))return"opus-5-5";if(M$(J))return"opus-5";if(J===yJ||J.startsWith(`${yJ}-`))return"fable-5-1";if(J===B4||J.startsWith(`${B4}-`))return"fable-5";return null}function v1($){return R$($)!==null}function HX($,J){let W=R$(J);return W?`${$}\x00${W}`:null}function UX($){try{let J=JSON.parse($);return typeof J.model==="string"?{body:J,model:J.model}:null}catch{return null}}class mJ{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>=LX)this.recoveries.delete(J);while(this.recoveries.size>_X){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=UX(J);if(!W||!v1(W.model))return null;let Y=HX($,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=S3,{sessionId:$,recoveryKey:Y,requestedModel:V.model,effectiveModel:S3,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:OX,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 DX($){if(Array.isArray($))return $;if(d$($)&&Array.isArray($.data))return $.data;return[]}function P3($){if(!d$($)||!d$($.info))return;return $.info}function C3($){let J=P3($);return typeof J?.role==="string"?J.role:void 0}function wX($){let J=P3($);return typeof J?.id==="string"?J.id:void 0}function pJ($){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 cJ($,J){return{agent:$.agent??J.agent,model:$.model??J.model,variant:$.variant??J.variant,latestAssistantMessageId:$.latestAssistantMessageId??J.latestAssistantMessageId,latestUserMessageId:$.latestUserMessageId??J.latestUserMessageId}}function E3($){return Boolean($.agent&&$.model&&$.variant)}async function z9($,J){if(!$||!J)return null;let W=$,Y=[];if(typeof W.session?.messages==="function")try{Y=DX(await Promise.resolve(W.session.messages({path:{id:J},query:{limit:100}})))}catch{Y=[]}let V,j;for(let L of Y){let A=wX(L);if(!A)continue;let M=C3(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(C3(Y[L])!=="assistant")continue;let A=pJ(Y[L]);if(!A)continue;if(N=cJ(N,A),E3(N))return N}for(let L=Y.length-1;L>=0;L--){let A=pJ(Y[L]);if(!A)continue;if(N=cJ(N,A),E3(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?pJ({info:A}):null;if(M)N=cJ(N,M)}catch{}if(!N.agent&&!N.model&&!N.variant&&!N.latestAssistantMessageId&&!N.latestUserMessageId)return null;return N}var M3="[lane start] — automated cache warm; no response needed.",O9="x-cortexkit-lane-start",BX=1000;function QX($){if(!$||typeof $!=="object")return!1;let J=$;return J.type==="text"&&J.text===M3&&J.synthetic===!0}async function R3($,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:M3,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 lJ{#$=new Map;observeSyntheticMessage($){if(!$.parts.some(QX))return!1;let J=`${$.sessionId}\x00${$.messageId}`;if(!this.#$.has(J)&&this.#$.size>=BX){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 q3($){if(!$?.trim())throw TypeError("sessionId is required");return $}function f3($){if($.host!=="opencode")throw TypeError("OpenCode host is required");let J=I3({...$,readMode:$.readMode??(()=>Y1("opencode",process.env)),disconnectVault:$.disconnectVault??(()=>x3({host:"opencode",env:process.env}))});return{menu:J,open(W){return J.open({sessionId:q3(W),notify(){}})},apply(W){return J.apply(W,{sessionId:q3(W.sessionId),notify(){}})}}}var _9=new Map,L9=new Map;function k3($,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 h3($,J,W){let Y=v3($),V=_9.get(Y),j=V?.manager??J();if(V)W.rebind(j);let N=L9.get(W.slot);if(N&&N.fingerprint!==Y)k3(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:()=>k3(W.slot,A)}}function g3($){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 y3($){if(!$.requestModelId)return{isScopedDriven:!1};if(!_$($.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=b3($.storage);if(J.remainingPercent<=W.scoped)return{isScopedDriven:!0,modelName:J.modelName,modelId:$.requestModelId};return{isScopedDriven:!1}}var u$=[],m3=1,p3=new Map;function c3($){if(typeof $!=="string"||$.length===0)throw TypeError("sessionId is required")}function l3($,J){if(c3(J),"menu"in $){if($.command!=="claude"||$.menu.command!=="claude")throw TypeError("Only the claude menu is supported");u$.push({id:m3++,type:"open-menu",payload:$,sessionId:J})}else u$.push({id:m3++,type:"open-dialog",payload:$,sessionId:J});if(u$.length>100)u$=u$.slice(u$.length-100)}function d3($,J){if(c3(J),p3.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=p3.get($)??0;return W>0&&J-W<3000}import{randomBytes as TX,timingSafeEqual as FX}from"node:crypto";import{readFile as SX,unlink as AX}from"node:fs/promises";import{createServer as CX}from"node:http";import{join as EX}from"node:path";function PX($){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 MX($,J){if(!$?.startsWith("Bearer "))return!1;let W=Buffer.from($.slice(7)),Y=Buffer.from(J);return W.length===Y.length&&FX(W,Y)}async function n3($){let J=TX(32).toString("hex"),W=CX((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(!MX(j.headers.authorization,J))return L(401,{error:"unauthorized"});let M=A.slice(5),d=JSON.parse(await PX(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=u3(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 i3($.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=EX($.dir,`port-${process.pid}.json`),N=JSON.parse(await SX(j,"utf8"));if(N.port===V&&N.pid===process.pid)await AX(j)}catch{}}}}async function o3($,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 a3="server-side-fallback-2026-07-01",t3="⁠",D9="cortexkit-server-fallback-v1:";function A$($){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 RX($){return`${D9}${$.fromModel}|${$.toModel}`}function qX($){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 IX($){if($.type!=="fallback")return null;let J=b1(A$($.from),"model"),W=b1(A$($.to),"model");if(!g1(J)||!g1(W))return null;return{fromModel:J,toModel:W}}function xX($){return{type:"fallback",from:{model:$.fromModel},to:{model:$.toModel}}}function fX($,J){let W=0,Y=0;if(!Array.isArray($.messages))return{restoredMarkers:W,droppedMarkers:Y};for(let V of $.messages){let j=A$(V);if(j?.role!=="assistant"||!Array.isArray(j.content))continue;let N=[];for(let L of j.content){let A=A$(L);if(!(A?.type==="thinking"&&(A.thinking===t3||A.thinking==="")&&typeof A.signature==="string"&&A.signature.startsWith(D9))){N.push(L);continue}let d=qX(A.signature);if(J&&d)N.push(xX(d)),W++;else Y++}j.content=N}return{restoredMarkers:W,droppedMarkers:Y}}function e3($){return $?.trim().toLowerCase()==="legacy"?"legacy":"server"}function $7($,J){let W=J&&(v1($.model)||X1($.model)),Y=fX($,W);if(W)$.fallbacks="default";else if($.fallbacks==="default")delete $.fallbacks;return{enabled:W,...Y}}function kX($){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:A$(JSON.parse(Y))}}catch{return{event:J}}}function r3($){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 s3($,J){return`event: ${$}
8
+ data: ${JSON.stringify(J)}
9
+
10
+ `}function vX($,J){return s3("content_block_start",{type:"content_block_start",index:$,content_block:{type:"thinking",thinking:t3}})+s3("content_block_delta",{type:"content_block_delta",index:$,delta:{type:"signature_delta",signature:RX(J)}})}function hX($,J){let W=R$($),Y=R$(J);if(W&&Y)return W===Y;return $===J}function J7($){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=A$(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&&!hX($.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=kX(r),V0=w0.data,k0=b1(V0,"type")??w0.event;if(k0==="message_start"){let L0=A$(V0?.message),h=b1(L0,"model");if(g1(h))j=h;n(A$(L0?.usage))}else if(k0==="content_block_start"){let L0=A$(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?IX(L0):null;if(K0){if(N=K0,typeof h==="number"&&Number.isInteger(h)&&h>=0)return vX(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(A$(V0?.usage));let L0=A$(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=r3(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=r3(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 bX}from"node:crypto";function Z7($,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 dJ($){return`${_7}${$.charAt(0).toUpperCase()}${$.slice(1)}`}function c7($){if($==="StructuredOutput")return $;return`${$.charAt(0).toLowerCase()}${$.slice(1)}`}var gX=new Set(["callgraph","conflicts","delete","import","inspect","move","navigate","outline","refactor","safety","search","transform","zoom"]);function W7($){let J=c7($);if(J.startsWith("aft_"))return J;if(gX.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"),[L7])),$}function p1($,J,W={}){return S9(J,"anthropic"),C7($,J,{...W,extraBetas:[...W.body?.fallbacks==="default"?[a3]:[],...W.body&&p7(W.body)?[y7]:[],...W.body&&b7(W.body)?[h7]:[]]})}function yX($){if($.tools&&Array.isArray($.tools))$.tools=$.tools.map((W)=>({...W,name:W.name?dJ(W.name):W.name}));let J=$.tool_choice;if(W0(J)&&J.type==="tool"&&typeof J.name==="string")$.tool_choice={...J,name:dJ(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:dJ(Y.name)};return Y});return W});return JSON.stringify(E7($))}function uJ($){return $.replace(/"name"\s*:\s*"(mcp_)?([^"]+)"/g,(J,W,Y)=>{if(W)return`"name": "${W7(Y)??c7(Y)}"`;let V=W7(Y);return V?`"name": "${V}"`:J})}function X7($,J=!1){if(J)return{ready:uJ($),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:uJ($.slice(0,W)),pending:$.slice(W)};return{ready:uJ($),pending:""}}function oJ(){if(!process.env.ANTHROPIC_BASE_URL?.trim())return!1;let $=process.env.ANTHROPIC_INSECURE?.trim();return $==="1"||$==="true"}function l7($){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 mX(){return l7(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?l7(J.baseURL):mX();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 pX($){let Y=$.split(/\n\n+/).filter((V)=>{if(V.includes(H7))return!1;for(let j of D7)if(V.includes(j))return!1;return!0}).join(`
13
+
14
+ `);for(let V of w7)Y=Y.replace(V.match,V.replacement);return Y.trim()}var cX=8388608;function lX(){return process.env.OPENCODE_ANTHROPIC_AUTH_MEMO!=="0"}var dX=Z7(pX,{maxBytes:cX,enabled:lX});function w9($){return dX.call($)}function W0($){return $!=null&&typeof $==="object"&&!Array.isArray($)}function uX($){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 d7={type:"ephemeral",ttl:"1h"},Y7=20;function u7($){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?{...d7}:{type:"ephemeral"},!0}function G7($){if(!W0($))return;delete $.cache_control,delete $.cacheControl}function rJ($){if(Array.isArray($))return $;if(typeof $==="string")return[{type:"text",text:$}];return null}function nJ($){if(Array.isArray($))return $.map(nJ);if(!W0($))return $;let J={};for(let W of Object.keys($).sort()){if(W==="cache_control"||W==="cacheControl")continue;J[W]=nJ($[W])}return J}function i7($){if(!W0($))return;let J=rJ($.content);if(!J?.length)return;let W=nJ({...$,content:J});return bX("sha256").update(JSON.stringify(W)).digest("hex")}function iX($){if(!W0($))return!1;let J=rJ($.content);return Boolean(J?.some((W)=>W0(W)&&u7(W)?.type==="ephemeral"))}function n7($){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"||!iX(Y))continue;let V=i7(Y);if(!V)return;return{fingerprint:V,messageIndex:W,messageCount:J.messages.length}}return}catch{return}}function B9($,J){if(!W0($))return;let W=u7($);if(W?.type!=="ephemeral")return;if(J)W.ttl="1h";else delete W.ttl}function V7($,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 nX($,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 o7($){G7($),nX($,G7)}function oX($){o7($),$.cache_control={...d7}}function rX($){return W0($)&&$.type!=="thinking"&&$.type!=="redacted_thinking"}function r7($){let J=rJ($.content);if(!J?.length)return;let W=J.filter(rX);if(!W.length)return;return{content:J,cacheableBlocks:W}}function sX($){if(!W0($))return!1;let J=r7($);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=r7($);if(!J)return!1;let W=J.cacheableBlocks[J.cacheableBlocks.length-1];return $.content=J.content,F9(W,!0)}function aX($){if(!W0($))return 0;let J=$.content;if(Array.isArray(J))return J.length;if(J==null)return 0;return 1}function tX($){let J=[],W=0;return $.forEach((Y,V)=>{let j=aX(Y);if(W0(Y)&&Y.role==="user"&&j>0)J.push({index:V,blockPosition:W+j-1});W+=j}),J}function eX($,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(i7($[N.index])===Y.fingerprint)return N;return}function $Y($,J){let W=tX($),Y=[...W].reverse().find((d)=>d.index>1);if(!Y)return{latest:void 0,bridge:void 0,standbyAnchorMatched:!1,standbyBridgeApplied:!1};let V=eX($,W,Y,J),j=V?Y.blockPosition-V.blockPosition+1:void 0,N=V&&j!=null&&j>Y7?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>Y7?L:void 0;return{latest:Y,bridge:N??M,standbyAnchorMatched:Boolean(V),standbyDistanceBlocks:j,standbyBridgeApplied:Boolean(N)}}function iJ($){return W0($)&&typeof $.text==="string"?$.text:""}function JY($){if(!Array.isArray($.system))return;let J=$.system,W=0;if(iJ(J[W]).startsWith("x-anthropic-billing-header:"))W++;if(iJ(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(iJ).join(`
15
+ `);J.splice(Y,J.length-Y,{...V,type:"text",text:j})}function K7($){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 ZY($,J){if(o7($),JY($),!Array.isArray($.messages))return K7($),{standbyAnchorMatched:!1,standbyBridgeApplied:!1};let{latest:W,bridge:Y,standbyAnchorMatched:V,standbyDistanceBlocks:j,standbyBridgeApplied:N}=$Y($.messages,J);if(!Y)K7($);if(!sX($.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 WY($){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(!v7(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 sJ($){let J=$.tool_choice;if(W0(J)&&(J.type==="any"||J.type==="tool"))delete $.tool_choice}function s7($){if(!M7($.model))return null;let J=Object.hasOwn($,"thinking");if($.thinking={...P7},T1($.model))sJ($);return{replacedExisting:J}}function XY($){if(A9($.model)){sJ($);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={...I7},{replacedExisting:Y,display:"summarized"}}if(!q7($.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={...R7},{replacedExisting:J,display:"summarized"}}function a7($){if(h1($.model)){sJ($);let Y=Object.hasOwn($,"thinking");return $.thinking={...k7},{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={...f7},{replacedExisting:J,display:"summarized"}}function YY($){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={...x7},{replacedExisting:J,display:"summarized"}}function t7($,J=B4){try{let W=JSON.parse($);return W.model=J,delete W.speed,delete W.fallbacks,F7(W),s7(W),a7(W),{ok:!0,bodyText:JSON.stringify(W)}}catch{return{ok:!1,reason:"body is not valid JSON"}}}function GY($,J){if(!J.enabled)return V7($,!1),delete $.cache_control,delete $.cacheControl,{};if(J.mode==="automatic")return oX($),{};if(J.mode==="hybrid")return ZY($,J.hybridStandbyAnchor);return V7($,!0),delete $.cacheControl,{}}function VY($){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 KY=1000,NY=new B7(KY);function jY($,J,W){return NY.resolve($,J,!W)}function B0(){return performance.now()}function L$($){return Math.round($*10)/10}function N7($){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:L$(B0()-W),inputBytes:$.length,...N7(Y)});let V=B0(),j=Array.isArray(Y.messages)?Y.messages.length:void 0;g7(Y.messages);let N=VY(Y),L=Array.isArray(Y.messages)?Y.messages.length:void 0;J.perf?.("strip_trailing_assistant",{ms:L$(B0()-V),removedMessages:typeof j==="number"&&typeof L==="number"?j-L:void 0,removedWhitespaceBlocks:N});let A=B0(),M=WY(Y),d=$7(Y,J.serverSideFallbackEnabled===!0),n=s7(Y),J0=XY(Y),G0=a7(Y),S=YY(Y);if(J.perf?.("model_normalize",{ms:L$(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;F3(Y,J.midConversationEffortEnabled===!0,J.midConversationEffortPlan,J.midConversationEffortResolvedPlan),m7(Y,J.thinkingPrefixMismatchBehavior??"account-default");let r=B0(),a=Array.isArray(Y.messages)&&Y.messages.some((n$)=>n$.role==="user")?T7(Y.messages,void 0,U7,J.sessionId?jY(J.sessionId,Y.messages,J.laneStart===!0):void 0,J.billingLineage):null;J.perf?.("billing_header",{ms:L$(B0()-r),hasBillingHeader:Boolean(a)});let w0=B0();if(Y.system=uX(Y.system),J.perf?.("system_identity",{ms:L$(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=GY(Y,{enabled:J.cache1hEnabled??!1,mode:J.cache1hMode??"explicit",hybridStandbyAnchor:J.hybridStandbyAnchor});if(J.perf?.("cache_strategy",{ms:L$(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&&A7(Y).split(",").includes(_4))Y9(Y,J.cacheDiagnosticsPreviousMessageId);let L0=B0();if(J.identity)S7(Y,J.identity);J.perf?.("metadata",{ms:L$(B0()-L0),hasAccountUuid:Boolean(J.identity?.accountUuid)});let h=B0();if(J.modelRemapEnabled===!0)E9(Y);let K0=yX(Y);J.perf?.("prefix_tools_stringify",{ms:L$(B0()-h),outputBytesBeforeSign:K0.length,...N7(Y)});let k=B0(),H0=await Q7(K0);return J.perf?.("cch_sign",{ms:L$(B0()-k),outputBytes:H0.length}),H0}catch(W){if(W instanceof F0||W instanceof F4)throw W;return $}}var e7=new TextEncoder;function zY(){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 e7.encode($).byteLength}function q$($){return $&&typeof $==="object"&&!Array.isArray($)?$:void 0}function i0($,J){let W=$?.[J];return typeof W==="string"?W:void 0}function OY($,J){let W=$?.[J];return typeof W==="number"?W:void 0}function aJ($){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=i0(N,"type"),V.event??=V.type,V.index=OY(N,"index"),V.contentBlockType=i0(A,"type"),V.deltaType=i0(L,"type"),V.stopReason=i0(L,"stop_reason")??i0(N,"stop_reason"),V.deltaType==="text_delta")V.textDeltaBytes=Q1(i0(L,"text")??"");if(V.deltaType==="thinking_delta")V.thinkingDeltaBytes=Q1(i0(L,"thinking")??"");if(V.deltaType==="input_json_delta")V.inputJsonDeltaBytes=Q1(i0(L,"partial_json")??"");if(V.deltaType==="signature_delta")V.signatureDeltaBytes=Q1(i0(L,"signature")??"");if(V.contentBlockType==="redacted_thinking")V.redactedThinkingBytes=Q1(i0(A,"data")??"");if(d)V.usage=d,V.stopReason??=i0(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 j7($,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=aJ(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(e7.encode($.pending).byteLength>W)$.pending="",$.disabled=!0,$.pendingOverflowCount++}function _Y(){return{pending:"",completed:!1,disabled:!1,resyncCarry:""}}function LY($,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=aJ(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 HY(){return{pending:"",disabled:!1}}function z7($){let J=aJ($);if(J?.type!=="message_delta"||J.stopReason!=="max_tokens")return $;return $.replace(/("stop_reason"\s*:\s*)"max_tokens"/,'$1"end_turn"')}function UY($,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+=z7(N),V+=L}if(Y&&$.pending)V+=z7($.pending),$.pending="";return V}function DY(){return{pending:"",disabled:!1,resyncCarry:""}}function wY($,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 BY($,J){let W=$?`${$}: ${J}`:J,Y=Error(`Anthropic stream error: ${W}`);if(Y.code="ECONNRESET",Y.syscall="anthropic-sse",$)Y.providerErrorType=$;return Y}function QY($){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 TY($){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"&&i0(j,"type")!=="error")return null;let N=q$(j?.error),L=i0(N,"type")??i0(N,"code")??void 0,A=i0(N,"message")??i0(j,"message")??L??"Anthropic stream error";if(!wY(L,A))return null;return BY(L,A)}function FY($){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(i0(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=i0(Y,"message")?.match(/HTTP\s+(\d{3})\b/i);return N?{status:Number(N[1]),source:"relay_message_parse"}:void 0}catch{return}}function O7($,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=FY(N);if(L!==void 0)Y?.(L);let A=TY(N);V??=A}if(new TextEncoder().encode($.pending).byteLength>W){let j=$.pending;$.pending="",$.disabled=!0,$.resyncCarry=j.slice(-3)}return V}function SY($){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 $8($,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?zY():void 0,w0="",V0=0,k0=!1,L0=(q0)=>{if(!q0)return;try{q0()}catch{}},h=DY(),K0=J.onContentFilter||J.onComplete?_Y():void 0,k=J.laneStart&&J.laneStartOAuthServed!==!1?HY():void 0,H0=!1,n$=!1,l4=(q0=!1)=>{if(!J.onContentFilter)return!1;if(!H0)H0=!0,n$=J.onContentFilter({completedToolUse:q0})!==!1;return n$},o$=J.serverSideFallbackModel?J7({requestedModel:J.serverSideFallbackModel,maxPendingBytes:i$,onOutcome:J.onServerSideFallbackOutcome,onRefusalAfterToolUse:J.onContentFilter?()=>l4(!0):void 0}):void 0,E1=(q0)=>{if(!K0)return null;let U$=LY(K0,q0,i$);if(U$?.type==="content-filter"&&J.onContentFilter)return l4()?QY(J.contentFilterModel):null;if(U$?.type==="complete")J.onComplete?.(U$.finishReason);return null},d4=(q0,U$=!1)=>k?UY(k,q0,i$,U$):q0,N1=()=>{if(G0)return;G0=!0,W.releaseLock()},s9=async(q0)=>{try{await W.cancel(q0)}catch{}finally{N1()}},a9=(q0={})=>({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:o$?.pendingLength()??0,rewriteMs:L$(n),totalMs:L$(B0()-r),...a?SY(a):{},...q0}),h$=(q0,U$={})=>{J.perf?.(q0,a9(U$))};J.perf?.("stream_tool_prefix_wrapper_created",{status:$.status,hasBody:!0});let u4=new ReadableStream({async pull(q0){if(A++,!J0)J0=!0,h$("stream_tool_prefix_first_pull");while(!0){let U$=B0();try{let{done:n1,value:j1}=await W.read(),o1=L$(B0()-U$);if(n1){let S0=Y.decode();if(a&&!j)j7(a,S0,i$,(P0)=>{let L1=P0.message;if(P0.type==="message_start"&&L1)L0(()=>J.onMessageStart?.(L1));if(P0.type==="message_delta"&&(P0.usage||P0.stopReason))L0(()=>J.onMessageDelta?.({...P0.usage?{usage:P0.usage}:{},...P0.stopReason?{stopReason:P0.stopReason}:{}}))});if(j){let P0=V.encode(S0).byteLength;if(V0+P0<=i$)w0+=S0,V0+=P0;else k0=!0}if(j&&!k0)try{let P0=JSON.parse(w0);if(P0&&typeof P0==="object"&&!Array.isArray(P0))L0(()=>J.onMessageResponse?.(P0))}catch{}let Y$=B0(),E0=o$?o$.push(S0)+o$.flush():S0,P1=d4(E0,!0),_1=j?E1(P1):O7(h,S0,i$,J.onRelayUpstreamError)??E1(P1);if(_1)throw h$("stream_tool_prefix_retryable_error",{providerErrorType:_1.providerErrorType}),await s9(_1),_1;let s1=X7(`${N}${P1}`,!0);if(n+=B0()-Y$,s1.ready){let P0=V.encode(s1.ready);d+=P0.byteLength,q0.enqueue(P0)}if(h$("stream_tool_prefix_rewrite",{readMs:o1}),N1(),J.onStreamEnd)try{await J.onStreamEnd()}catch{}q0.close();return}L++,M+=j1.byteLength;let c0=Y.decode(j1,{stream:!0});if(j){let S0=j1.byteLength;if(V0+S0<=i$)w0+=c0,V0+=S0;else k0=!0}if(a&&!j)j7(a,c0,i$,(S0)=>{let Y$=S0.message;if(S0.type==="message_start"&&Y$)L0(()=>J.onMessageStart?.(Y$));if(S0.type==="message_delta"&&(S0.usage||S0.stopReason))L0(()=>J.onMessageDelta?.({...S0.usage?{usage:S0.usage}:{},...S0.stopReason?{stopReason:S0.stopReason}:{}}))});let D$=B0(),t9=o$?o$.push(c0):c0,z1=d4(t9),r1=j?E1(z1):O7(h,c0,i$,J.onRelayUpstreamError)??E1(z1);if(r1)throw h$("stream_tool_prefix_retryable_error",{providerErrorType:r1.providerErrorType,readMs:o1,lastChunkBytes:j1.byteLength}),N1(),r1;let V$=N+z1,b$=X7(V$);if(n+=B0()-D$,N=b$.pending,b$.ready){let S0=V.encode(b$.ready);d+=S0.byteLength,q0.enqueue(S0)}let O1=B0();if(L===1||L%25===0||O1-S>5000)S=O1,h$("stream_tool_prefix_progress",{readMs:o1,lastChunkBytes:j1.byteLength});if(b$.ready)return}catch(n1){throw h$("stream_tool_prefix_error"),N1(),n1}}},async cancel(q0){h$("stream_tool_prefix_cancel");try{await W.cancel(q0)}finally{N1()}}});return new Response(u4,{status:$.status,statusText:$.statusText,headers:$.headers})}var J8="physical send failed before a response",CY="__OPENCODE_ANTHROPIC_AUTH_COMMAND_HANDLED__",Z8="~effect/http/HttpServerResponse",W8="~effect/http/Cookies",X8="~effect/http/HttpBody",EY="~effect/ErrorReporter/ignore",PY="https://api.anthropic.com/v1/messages",d5=new WeakSet;function u5($){let J=new Response(JSON.stringify({type:"error",error:{type:"invalid_request_error",message:$}}),{status:400,headers:{"content-type":"application/json"}});return d5.add(J),J}function eJ($,J){return($.status!==400||!d5.has($))&&w8($.status,J)}function Y8($){return f.warn("effort-history","refused uncorrelated Fable 5.1 request",{check:$.check,...$.details}),u5($.message)}function G8($){return f.warn("transform","refused request ending on assistant history",{check:$.check,...$.details}),u5($.message)}var MY=60000,V8=60000,i5=240,RY=i5,qY=600000;function IY($,J){return($?.accounts??[]).some((W)=>W.id===J&&W.enabled!==!1&&U0(W))}function xY($){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 K8($,J){if($?.activeId==="main"||$?.activeId&&IY(J,$.activeId))return $;return xY(J)}function n5($,J,W){let Y=Date.now()-$.lastUpdated;if(!$.activeId||Y<0||Y>qY)return K8(W,J);return K8($,J)}async function fY($,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{...n5($,Y,W),freshStorage:Y}}async function kY($){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 c5();return{...n5(W,J),freshStorage:J}}var vY=4,hY=25,bY=1,N8=!1;function o9(){return process.env.OPENCODE_ANTHROPIC_AUTH_PERF==="1"}function $0(){return performance.now()}function C0($){return Math.round($*10)/10}function j8($){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 gY(){if(N8||!1||!o9())return;N8=!0;let $=100,J=250,W=$0()+$;setInterval(()=>{let Y=$0(),V=Y-W;if(W=Y+$,V<J)return;E$("[perf] opencode event_loop_lag",{lagMs:C0(V),thresholdMs:J})},$).unref?.()}function yY($){let J=$0(),W={requestId:String(bY++),start:J,last:J,mark(Y,V){let j=$0();if(o9())E$("[perf] opencode request stage",{requestId:W.requestId,stage:Y,deltaMs:C0(j-W.last),totalMs:C0(j-W.start),...V});W.last=j},done(Y,V){let j=$0();if(o9())E$("[perf] opencode request done",{requestId:W.requestId,stage:Y,deltaMs:C0(j-W.last),totalMs:C0(j-W.start),...V});W.last=j}};if(o9())E$("[perf] opencode request start",{requestId:W.requestId,...$});return W}function o5($,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 z8($,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?o5(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 mY(){throw Object.assign(Error(CY),{[Z8]:Z8,[EY]:!0,status:204,statusText:void 0,headers:{},cookies:{[W8]:W8,cookies:{}},body:{[X8]:X8,_tag:"Empty"}})}function pY($){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 cY($){if($.some((J)=>J.includes("<use_parallel_tool_calls>")))return!1;return $.push(_8),!0}var lY={input:0,output:0,cache:{read:0,write:0}},dY=1000;function H$($){return $}var uY="Fable content filter detected. Switched to Opus 4.8 for a 10-response recovery window while keeping the Fable cache warm.",iY="Fable recovery window complete. Returning to Fable 5.";function nY($){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 uY}function oY($){if(M$($))return"Opus 5 recovery window complete. Returning to Opus 5.";if(T1($))return`Recovery window complete. Returning to ${c4($)}.`;return iY}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 rY($,J){return`Anthropic safety fallback active: ${c4($)} → ${c4(J)}. Follow-up requests may remain on the fallback model for about one hour.`}function sY($){return`Anthropic safety fallback ended. Returning to ${c4($)}.`}function aY(){return{input:b4.input,output:b4.output,cache:{read:b4.cacheRead,write:b4.cacheWrite5m},tiers:[{tier:{type:"context",size:J5},input:g4.input,output:g4.output,cache:{read:g4.cacheRead,write:g4.cacheWrite5m}}]}}function tY($){let J=$["claude-opus-4-8"]??$["claude-opus-4-5"]??Object.values($)[0];if(!J)return $;return{...$,...Object.fromEntries(Object.values(n8).map((W)=>{let Y=T1(W.id)?d8:l8;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:u8,output:i8},capabilities:{...J.capabilities??{},reasoning:!0,attachment:!0,toolcall:!0},release_date:o8(W.id)}]})),...$[h4]?{}:{[h4]:{...J,id:h4,name:"Claude Haiku 5.5",api:J.api?{...J.api,id:h4}:void 0,cost:aY(),limit:{...J.limit??{},context:e8,output:$5},capabilities:{...J.capabilities??{},reasoning:!0,attachment:!0,toolcall:!0},release_date:t8,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:s8,output:a8},capabilities:{...J.capabilities??{},reasoning:!0,attachment:!0,toolcall:!0},release_date:r8,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:W5,output:X5},capabilities:{...J.capabilities??{},reasoning:!0,attachment:!0,toolcall:!0},release_date:Z5,variants:r9()}}}}var eY=["low","medium","high","xhigh","max"];function r9(){return Object.fromEntries(eY.map(($)=>[$,{thinking:{type:"adaptive",display:"summarized"},effort:$}]))}function $G($){return Object.fromEntries(Object.entries($).map(([J,W])=>{let Y=W.api?.id??W.id??J;return[J,Y5(Y)||X1(Y)||A9(Y)||C9(Y)?{...W,variants:r9()}:W]}))}function JG($){return Object.fromEntries(Object.entries($).map(([J,W])=>[J,{...W,cost:lY}]))}function O8(){return process.env.OPENCODE_ANTHROPIC_AUTH_CLAUSTRUM_CONNECTION_FILE?.trim()||process.env.CLAUSTRUM_SUBC_CONNECTION?.trim()||void 0}var ZG=async($,J={})=>{let W={setTimeout:globalThis.setTimeout,clearTimeout:globalThis.clearTimeout,setInterval:globalThis.setInterval,clearInterval:globalThis.clearInterval,...J},Y=J.authorize??JZ;gY();let{client:V}=$,j=globalThis.fetch,N=U8(),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 U5(N),S=H5({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=ZZ(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=H$(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)=>B5(G,Z,X)),k()}let n$=async(Z)=>{return await S.updateSettings((X)=>({...X,claudeCache:{...w5(X.claudeCache),enabled:Z,mode:l1({...X,version:1,accounts:[]})}})),k()},l4=(Z)=>H0("claudeCache",{mode:Z}),o$=(Z)=>H0("cacheKeep",{enabled:Z}),E1=async()=>{return await S.updateSettings(Q5),k()},d4=(Z,X)=>H0("cacheKeep",{enabled:!0,always:!1,startHour:Z,endHour:X}),N1=(Z)=>H0("cacheKeep",{subagents:Z}),s9=(Z)=>H0("dump",{enabled:Z}),a9=(Z)=>H0("claudeFast",{enabled:Z}),h$=async(Z)=>{return await S.setLoggingLevel(Z),k()},u4=(Z,X=N)=>H0("prime",{enabled:Z}),q0=(Z,X=N)=>H0("routing",{mode:Z}),U$=(Z)=>H0("killswitch",Z),n1=(Z,X,G=N)=>S.setEnabled(Z,X),j1=(Z,X=N)=>S.remove(Z),o1=(Z,X=N,G)=>S.reorder(Z,G),c0=null;try{c0=await k()}catch{}function D$(Z){return Boolean(Z&&S$(Z)==="claustrum"&&Z.claustrum?.scopedRoster===!0)}function t9(Z=N,X=$.directory){if(Z!==N)throw Error("Native vault storage mismatch");return S.vault}let z1=T5("native-auth");async function r1(Z=N){VJ?.close(),await z1.drain(),S.close()}function V$(){if(process.env.OPENCODE_AUTH_CONTENT!==void 0)throw Error("Native OAuth cannot serve while OPENCODE_AUTH_CONTENT is set")}function b$(Z){let X=H$(Z);if(!X)throw Error("Native wire identity requires an admitted provider account");return A8(X,X)}class O1 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 S0 extends Error{constructor(){super("Native OAuth requires a Claude Pro/Max credential. An API key belongs in OpenCode stock Anthropic authentication.")}}class Y$ 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 E0(Z,X,G,K,z="serve",O){V$(),X?.throwIfAborted();let H=O??await S.read(),_=H.accounts.find((g)=>g.id===Z);if(_?.state==="unsupported-access")throw new S0;if(_?.source==="vault"&&(!_.enabled||_.state!=="active"))throw new Y$(_,"not-active");if(_?.type!=="oauth"||!_.enabled)throw Error("Native OAuth account is unavailable");let Q=(g,N0,j0)=>{let Q0=h(g,N0,j0),D0=z==="last-main"&&Z==="main"&&v$(N0)!=="sticky-balanced";if(K&&(f$(N0)&&!_$(Q0,N0,Z==="main"?void 0:Z,K)||!D0&&!R4(Q0,K)))throw new O1(g,XZ(N0))};Q(_,H.policyStorage);let D;if(_.source==="vault"){let g=await S.authorizeVault(Z,X).catch((N0)=>{if(X?.throwIfAborted(),N0 instanceof K5&&["not-active","route-declined","route-unavailable"].includes(N0.code))throw new Y$(_,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 Y$(_,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 P1(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 _1=new WeakMap,s1=new WeakSet;async function P0(Z,X){if(s1.has(Z))return;s1.add(Z),await S.vault.reportFailure(Z,401,X).catch(()=>{f.warn("claustrum","native auth-failure report unavailable")})}async function L1(Z,X,G){let K=await S.vault.prepareRetry(Z,G,X);return K.retry?K.receipt:void 0}let e9=e3(process.env.OPENCODE_ANTHROPIC_AUTH_FALLBACK_MODE),g$=new mJ,$J=new lJ,a1=new gJ,M1=new EJ,P$=new Map,w$=new Map,y$=new Map,i4=new Map,e0=new Set,JJ=new Map,n4=new Map,m$=new Map,t1=new Map,r5=process.env.OPENCODE_ANTHROPIC_AUTH_ROUTING_STATE_FILE||_5(N),BZ=new Map;async function QZ(){let Z=await S.read(),X=r5,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=BZ.get(X);if(!K)K=new L5({path:X,vaultSeed:Z.routingSeed}),BZ.set(X,K);return K.setVaultSeed(Z.routingSeed),{router:K,...G&&{accountIdentities:G}}}let v=new I5({storage:c0,fetchQuotaSnapshot:(Z,X)=>{V$();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 TZ(Z,X,G=!1){if(!Z||Z.quota?.enabled===!1||!X||v$(Z)==="sticky-balanced"||x$(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:WZ(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+XZ(Z))-K)/1000))}}async function FZ(Z,X,G){if(UJ===Z&&K$===X)return;let K=U1!==void 0&&G!==void 0&&U1!==G;UJ=Z,K$=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 _=++bZ,Q=X4,D=await S.read(),C=D.policyStorage,I=D.accounts.find((r0)=>r0.id==="main")?.accountIdentity,g=b$(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 Q0=I??j0??Q,D0=C?.main?.profile?.providerAccountUuid??C?.main?.profile?.accountIdentity,$$=H$(G)??H$(g.accountUuid),A0=G?$$:Z.startsWith("sk-ant-oat")?$$??H$(D0):void 0,c$=S$(C)!=="claustrum"?"na":D0===void 0||$$===void 0?"unknown-identity":D0!==void 0&&$$!==void 0&&D0!==$$?"on-identity-mismatch":"on-vault-served";if(_!==bZ){let r0=UJ!==Z||K$!==Q0;return{quotaKey:Q0,providerAccountUuid:A0,generation:v.getMainQuotaIdentityGeneration(),stale:r0,state:c$}}if(await FZ(Z,Q0,A0),Z.startsWith("sk-ant-oat")&&A0===void 0)v.clearMain();if(U1=A0,Z.startsWith("sk-ant-oat"))Y4=Z;return{quotaKey:Q0,providerAccountUuid:A0,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 ZJ=c0?.quotaHeaderFeed?.enabled===!0?new M5:null,r$=new Map,s$=new Set,a$=new AbortController,SZ=!1;function WJ(Z,X){return JSON.stringify([Z,X??null])}async function s5(Z,X){if(!Z?.profile||!c9(Z.profile,X)||!await Z.isCurrent?.())return;return Z.persistence==="refused"?void 0:Z.profile}function a5(Z,X,G){V$();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 Q$(I.policyStorage,{...o0,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 t5(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 AZ(Z,X){return c9(Z.profile,X)&&g8(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||AZ(_,G))continue;let Q=WJ(_.id,_.accountIdentity),D=r$.get(Q);if(!D&&_.accountIdentity!==void 0){let C=r$.get(WJ(_.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=a5(_,Q,Z),r$.set(Q,D)}if(_.accountIdentity===void 0)z.set(_.id,D);K.push(t5(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=WJ(_.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(AZ(_,H))continue;let C=await s5(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 e5(Z,X,G,K){if(process.env.OPENCODE_ANTHROPIC_AUTH_DISABLE_PROFILE_HYDRATION==="1")return Z;return(await o4(G)).policyStorage}let CZ=new Set;async function $W(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={...ZZ(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 JW(Z){f.warn("quota","failed to persist harvested response quota",{error:Z instanceof Error?Z.message:String(Z)})}function ZW(Z){let X=Z instanceof Error?Z.name:typeof Z,G=Z instanceof Error?Z.message:String(Z),K=`${X}:${G}`;if(CZ.has(K))return;CZ.add(K),f.warn("quota","failed to normalize response quota headers",{error:G})}function WW(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 XW(Z,X){if(!ZJ)return;if(Z.accountId==="main"&&!Z.mainQuotaIdentity?.quotaKey)return;let G=await k(N)??I$(),z=(await e$?.())?.type==="oauth",O=Z.accountId==="main"?G.main:G.accounts.find((g)=>g.id===Z.accountId),H=WW(O),_=P5({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 ZJ.publish(I)}function YW(Z){f.debug("quota","failed to publish quota header feed",{error:Z instanceof Error?Z.message:String(Z)})}function EZ(Z,X){try{if(!R5(Z)){f.trace("quota","skipped non-quota response headers",{account:X.accountId});return}let G=q5(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>=dY){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 $W(X,{quota:G,checkedAt:O,refreshAfter:O},z)}catch(I){JW(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 XW(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(YW),f.trace("quota","response quota awaiting publication",{account:X.accountId})}catch(G){ZW(G)}}let PZ=Promise.resolve();function R1(Z=!1,X=!1){let G=PZ.then(()=>GW(Z,X));return PZ=G.then(()=>{},()=>{}),G}async function GW(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 XJ={refreshQuotaForDueAccounts:async()=>{await R1()},refreshQuotaForAllAccounts:async(Z)=>{await R1(!0)},refreshAccount:async(Z,X,G)=>{let K=await E0(Z.id,void 0,G?.force?Z.access:void 0);return{...Z,access:K.accessToken,expires:K.expires}},refreshAccountQuota:async(Z,X)=>{V$();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)||f$(Z)&&!_$(_,Z,z.id,X?.modelId))continue;try{let Q=await E0(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 YJ(){V$();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 E0(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()<=gZ(Z.policyStorage)))await E0(X.id,void 0,void 0,void 0,"refresh")}catch{}}await R1()}let GJ=c0!==null&&process.env.OPENCODE_AUTH_CONTENT===void 0,VJ=GJ&&D$(c0)?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,VW=GJ?(VJ?VJ.ready.then(()=>YJ()):YJ()).catch(()=>{}):Promise.resolve(),KJ=GJ?W.setInterval(()=>{YJ().catch(()=>{})},H8+j8(V8)):null;KJ?.unref?.();let KW=(Z,X)=>{let G=IJ({id:Z,role:"fallback"},X);return G==="na"?"off":G},NJ=new MJ,NW=new RJ,t$=new WeakMap,J4=new Map;async function jJ(Z){let X=(Z.get("anthropic-beta")??"").split(",").map((G)=>G.trim()).filter(Boolean).sort();return{betas:X,betasHash:await S8(X.join(","))}}function MZ(Z){try{if(!Z.request)return;let X=K3({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",N3(X.record));let G=NW.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)NJ.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 RZ(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(()=>{}),MZ({...K,message:X,receivedAt:Date.now()})}function jW(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 qZ(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,zJ=null;function zW(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 OW(){if(zJ){let Z=await zJ();return G5("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 D5("opencode",m5())}async function IZ(){if(await Y1("opencode")!=="claustrum")throw Error("This host is not connected to the credential vault; run setup to connect it first");if(await OW()!=="absent")throw Error("OpenCode already holds an Anthropic login; remove it before choosing the vault login")}let _W={label:"Claude via credential vault",type:"oauth",authorize:async()=>{return await IZ(),{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 IZ();let Z=q9("anthropic");return{type:"success",access:Z.access,refresh:Z.refresh,expires:Z.expires}}}}},OJ=new h8({directory:process.env.OPENCODE_ANTHROPIC_AUTH_CACHEKEEP_REGISTRY_DIR||v8("opencode")}),r4=[],q1=new Map,I1=new k8({loadStorage:()=>k(N),setIntervalImpl:W.setInterval,clearIntervalImpl:W.clearInterval,onTrackedSessionsChanged:async(Z)=>{await OJ.publish(Z),r4=await OJ.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=NJ.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 P0(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;MZ({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 L1(K.scopedAttempt,"cachekeep",G.signal))return;let O=await E0(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 E0(K,G.signal,void 0,z),H=O.accessToken;q1.set(G.id,O);try{let Q=JSON.parse(X.bodyText),D=b$(O.accountIdentity);if(Z.delete("anthropic-beta"),p1(Z,H,{body:Q,identity:D}),Z.set("anthropic-beta",Q4(Z.get("anthropic-beta"),[q8])),Q.speed==="fast")P9(Z);let C=J4.get(X.id);if(C){let{betas:I,betasHash:g}=await jJ(Z);C.betas=I,C.betasHash=g}}catch{p1(Z,H)}let _=await E0(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 LW(Z){if(!p$||!(await p$()).active)throw Error("Native main OAuth activation is not available");let X=await E0("main",Z);return{...X,credentialAccountId:H$(X.accountIdentity)}}async function HW(){let Z=await LW();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(K$,Z.accessToken);return{quota:G.quota,fresh:G.fetched}}async function UW(Z){V$();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 XJ.refreshAccountQuota(G,X);return{quota:K.account.quota??{},fresh:K.fetched}}let _J=new Map;async function DW(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 E0(Z,void 0,void 0,UZ);if(G=_.accessToken,z=_.scopedAttempt,K=UZ,!G)return{ok:!1,error:"prime: no access token available"};let Q=C5(),D=b$(_.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(PY,{baseURL:""}),N0=g.url?.toString()??g.input.toString(),j0=AbortSignal.timeout(30000),Q0={method:"POST",headers:I,body:C,signal:j0},D0=await E0(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 $$=async()=>{let l0=x4([O],"http");return H=l0,l0.redactResponse(await fetch(N0,Q0))},A0=await $$();if(A0.status===401&&z&&!j0.aborted){let l0;try{l0=await L1(z,"prime",j0)}catch{}if(l0){H?.dispose(),await A0.body?.cancel().catch(()=>{}),f.info("claustrum","retrying Prime after scoped credential rotation",{accountId:Z,previousVersion:z.recordVersion,newVersion:l0.recordVersion}),D0=await E0(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}`),A0=await $$()}}if(A0.status===401&&!D0.scopedAttempt&&!j0.aborted){let l0=D0.accessToken,t=await E0(Z,j0,l0,K).catch(()=>{return});if(t&&t.accessToken!==l0&&t.accountIdentity===_.accountIdentity&&!t.scopedAttempt){if(H?.dispose(),await A0.body?.cancel().catch(()=>{}),D0=await E0(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}`),A0=await $$()}}let c$=Math.round(performance.now()-X);if(!A0.ok){let l0;try{l0=await A0.text().catch(()=>"")||`HTTP ${A0.status}`}finally{H?.dispose()}if(A0.status===401&&z)await P0(z,"direct");return{ok:!1,status:A0.status,ms:c$,error:l0}}let M0=(await A0.json().catch(()=>null))?.usage,J$=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 _J.set(Z,D0),{ok:!0,status:A0.status,ms:c$,...J$&&{usage:J$}}}catch(_){H?.dispose();let Q=x4([O],"http"),D=Q.redactError(_);return Q.dispose(),{ok:!1,..._ instanceof Y$&&_.tokenRefreshFailed&&{reason:"token-refresh"},ms:Math.round(performance.now()-X),error:D instanceof Error?D.message:String(D)}}}let xZ={storagePath:N,loadStorage:()=>k(N),getAccountFingerprint:async(Z)=>{if(Z==="main"&&(!p$||!(await p$()).active))return;let X=await E0(Z),G=X.scopedAttempt??X.localSubject;if(!G)return;let K=await S.getOrCreateAuthLineage(Z,G);return K?k$(K):void 0},refreshQuota:async(Z)=>{if(Z==="main")return HW();return UW(Z)},sendPrime:DW,recordSuccess:async(Z,X)=>{let G=_J.get(Z);_J.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},fZ=h3(N,()=>new E5(xZ),{slot:$.directory??"default",rebind:(Z)=>Z.updateOptions(xZ)}),H1=fZ.manager;if(P4(c0))H1.start();function wW(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=t7(_.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 OJ.list(I1.trackedSessions()),r4}let kZ=J.cacheKeepAggregateRefreshIntervalMs??1e4,LJ=kZ>0?W.setInterval(()=>{s4().catch(()=>{})},kZ):void 0;if(LJ?.unref?.(),q4({enabled:E4(c0),mode:l1(c0)}),y9(f9(c0)),d9(k9(c0)),!process.env.OPENCODE_ANTHROPIC_AUTH_LOG_LEVEL)C8(v9(c0)??"info");let HJ=null,BW=async()=>{a$.abort();while(s$.size)await Promise.all([...s$]);try{await r1(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 ZJ?.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(KJ)W.clearInterval(KJ)}catch(Z){f.warn("fallback-background","failed to stop",{error:Z instanceof Error?Z.message:String(Z)})}try{if(LJ!==void 0)W.clearInterval(LJ)}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{fZ.release()}catch(Z){f.warn("prime","failed to release slot",{error:Z instanceof Error?Z.message:String(Z)})}if(!HJ)return;try{await HJ.release()}catch(Z){f.warn("rpc","failed to stop",{error:Z instanceof Error?Z.message:String(Z)})}},o0={activeId:"main",route:"main"},QW=p5(),B$=new Map;function vZ(Z,X){if(v.updateStorage(Z),v.seedMainFromStorage(Z,K$),!X.skipFallbackQuotaSeed)v.seedFallbacksFromAccounts((Z?.accounts??[]).filter(U0));let G=v.getMain(K$),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?k$(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),_=KW(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(),k$(O.refresh))&&x$(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:NZ(Z),window:KZ(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:B$.size>0?[...B$.values()]:void 0,lastUpdated:Date.now()}}function Q$(Z,X){let G=X.routingAuthoritative!==!1;if(G)o0={activeId:X.activeId,route:X.route};let K=vZ(Z,X);return l5(K,QW,{routingAuthoritative:G,resolvePreservedRouting:G?void 0:async(z)=>{let O=await fY(z,()=>k(N),{activeId:K.activeId,route:K.route}),H=O.freshStorage;return{activeId:O.activeId,route:O.route,state:vZ(H,{...X,activeId:O.activeId,route:O.route})}},onRoutingResolved:G?void 0:(z)=>{o0=z}}).catch((z)=>f.warn("sidebar","state write failed",{error:z instanceof Error?z.message:String(z)}))}async function hZ(){return{storage:await k(N),access:void 0}}async function W4(){await s4().catch(()=>{});let{storage:Z,access:X}=await hZ();Q$(Z,{activeId:o0.activeId,route:o0.route,mainAccessToken:X,mainRefreshToken:void 0,routingAuthoritative:!1})}function TW(Z,X,G){if(!X)return;if(Z?.quota?.enabled!==!0)return;let K=G?.quotaKey??K$;if(v.getMain(K))return;if(DJ)return;DJ=!0,v.refreshMain(K,X,G?.generation).then(()=>W4()).catch(()=>{}).finally(()=>{DJ=!1})}let e$=null,a4,X4,K$,Y4,U1,UJ,bZ=0,t4=new Map,DJ=!1,D1=null,e4=0;function gZ(Z){let X=Z?.refresh?.refreshBeforeExpiryMinutes??RY;return Math.max(i5,X)*60000}function FW(Z){return Z?.refresh?.enabled!==!1}async function yZ(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,K$),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(...x5(G.policyStorage,X));let O=Math.max(0,...G.accounts.map((H)=>c1(H.quota)));return f5({accounts:K,refreshedAt:O||void 0})}async function wJ(Z){await s4().catch(()=>{}),await Q$(Z,{activeId:o0.activeId,route:o0.route,routingAuthoritative:!1})}function G4(Z,X,G,K){if(B$.delete(Z.sessionId),B$.set(Z.sessionId,{...Z,changedAt:Date.now()}),B$.size>128){let z=B$.keys().next().value;if(z)B$.delete(z)}if(Q$(X,{activeId:o0.activeId,route:o0.route,mainAccessToken:G.access,mainRefreshToken:G.refresh,routingAuthoritative:!1}),K)cZ(Z.sessionId,K)}function mZ(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 pZ(Z,X){return typeof X==="string"&&m$.get(Z)?.has(X)===!0}function cZ(Z,X){if(U9(Z))return;w$.delete(Z),w$.set(Z,[X]);while(w$.size>128){let G=w$.keys().next().value;if(G)w$.delete(G);else break}if(e0.has(Z))BJ(Z)}function BJ(Z,X=0){if(!w$.has(Z)||t1.has(Z))return;t1.set(Z,X);let G=()=>{if(t1.get(Z)!==X)return;t1.delete(Z),SW(Z,X)};if(X===0)setImmediate(G);else setTimeout(G,hY*X)}function QJ(Z,X){if(X+1<vY)BJ(Z,X+1)}async function SW(Z,X){if(!e0.has(Z)||!w$.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)){QJ(Z,X);return}let H=O[Z];if(H!==void 0&&(!H||typeof H!=="object"||H.type!=="idle")){QJ(Z,X);return}}catch{QJ(Z,X);return}if(!e0.has(Z))return;await AW(Z)}function AW(Z){let X=i4.get(Z);if(X)return X;let G=(async()=>{while(!0){let K=w$.get(Z),z=K?.[0];if(!z){w$.delete(Z);return}try{let O=()=>w$.get(Z)===K&&K[0]===z;if(!await z8($,Z,z,{noReply:!0,beforeActiveAssistant:!0,canSend:()=>e0.has(Z)&&O(),onPreparedMessageId:(_)=>mZ(Z,_),latestPreparedMessageId:()=>[...m$.get(Z)??[]].at(-1)})){if(e0.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 CW(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=B$.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,rY(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,sY(Z.requestedModel))}function EW(Z,X,G){if(!Z)return;for(let K of P$.keys())if(K.startsWith(`${Z}\x00`))P$.delete(K);if(!B$.delete(Z))return;Q$(X,{activeId:o0.activeId,route:o0.route,mainAccessToken:G.access,mainRefreshToken:G.refresh,routingAuthoritative:!1})}async function TJ(Z){let X=F8(Z);if(X.type==="enable"||X.type==="disable"){let O=X.type==="enable",H=await n$(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 l4(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=I8(Z),G=await k(N);if(X.type==="window")G=await d4(X.startHour,X.endHour),f.info("commands","cachekeep schedule changed",{schedule:`${X.startHour}-${X.endHour}`});else if(X.type==="always")G=await E1(),f.info("commands","cachekeep schedule changed",{schedule:"always"});else if(X.type==="disable")G=await o$(!1),f.info("commands","cachekeep enabled changed",{enabled:!1});else if(X.type==="subagents")G=await N1(X.enabled),f.info("commands","cachekeep subagents changed",{subagents:X.enabled});let K=VZ(G),z=await s4(),O=z.length?Math.min(...z.map((H)=>H.nextPrewarmAt)):void 0;return f8({argumentsText:Z,enabled:x8(G),always:KZ(G),window:K,hybridActive:NZ(G),trackedSessions:z.length,trackedSessionDetails:z,nextPrewarmAt:O})}async function lZ(Z){let X=E8(Z);if(X.type==="enable"||X.type==="disable"){let z=X.type==="enable";return await s9(z),y9(z),f.info("commands","dump changed",{enabled:z}),GZ({argumentsText:Z,enabled:z})}let G=await k(N),K=f9(G);return y9(K),GZ({argumentsText:Z,enabled:K})}async function dZ(Z){let X=p8(Z);if(X.type==="enable"||X.type==="disable"){let z=X.type==="enable";return await a9(z),d9(z),f.info("commands","fast mode changed",{enabled:z}),_Z({argumentsText:Z,enabled:z})}let G=await k(N),K=k9(G);return d9(K),_Z({argumentsText:Z,enabled:K})}async function uZ(Z,X){if(h5(Z).type==="fire"){if(!X)return`## Claude Start Failed
23
+
24
+ - OpenCode did not provide a session ID.`;try{return await R3($.client,X),wZ({argumentsText:Z}).text}catch(K){return`## Claude Start Failed
25
+
26
+ - ${K instanceof Error?K.message:String(K)}`}}return wZ({argumentsText:Z}).text}async function FJ(Z,X){let G=v5(Z);if(G.type==="mode")return await q0(G.mode,N),f.info("commands","routing mode changed",{mode:G.mode}),DZ({argumentsText:Z,mode:G.mode});if(G.type==="reset"&&X)await(await QZ()).router.clear(X),f.info("commands","sticky routing assignment reset");let K=await k(N);return DZ({argumentsText:Z,mode:v$(K)})}async function iZ(Z){let X=c8(Z);if(X.type==="level")return await h$(X.level),HZ({argumentsText:Z,level:X.level});let G=await k(N),K=v9(G)??"info";return HZ({argumentsText:Z,level:K})}async function nZ(Z){let X=S5(Z),G=P4(await k(N)),K=G;if(X.type==="enable"){if(K=!0,!G)await u4(!0,N),H1.start(),f.info("commands","prime changed",{enabled:!0})}else if(X.type==="disable"){if(K=!1,G)await u4(!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 Q$(O,{activeId:o0.activeId,route:o0.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 A5({argumentsText:Z,enabled:K,accounts:H1.stats(z)}).text}async function K4(Z,X,G){let K=G??y8(Z);if(K.type==="add-apikey"){if(!K.apiKey)return{text:"API key is required",accounts:C$(await k(N)??I$())};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:C$(await k(N)??I$())};let g=K.authHeader??"authorization-bearer",N0={id:D||tJ(),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 wJ(j0);let Q0=C$(j0??{version:1,accounts:[]});return{text:`API key account "${N0.label??N0.id}" added.`,accounts:Q0}}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:C$(await k(N)??I$())}}if(K.type==="add-oauth-finish"){let D=X??"default",C=J0(D);if(!C)return{text:"OAuth session expired. Please start again.",accounts:C$(await k(N)??I$())};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:C$(await k(N)??I$())};let g=Date.now(),N0={id:tJ(),type:"oauth",authLineageId:tJ(),label:K.label||void 0,access:I.access,refresh:I.refresh,expires:I.expires,enabled:!0,addedAt:g,lastUsed:g,lastRefreshedAt:g};V$(),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 wJ(j0),{text:"OAuth account added.",accounts:C$(j0??I$())}}catch{return{text:"OAuth exchange failed due to a network error. Please try again.",accounts:C$(await k(N)??I$())}}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 e5(z,D,AbortSignal.timeout(3000),U1)}let O=K.type==="status"?await oZ(z):void 0,H=await m8({argumentsText:Z,storage:z??{version:1,accounts:[]},path:N,claustrum:K.type==="status"&&!O?await $Z(O8()):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 b8(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 n1(H.updated.id,H.updated.action==="enable",N);else if(H.updated.action==="remove")await j1(H.updated.id,N);else if(H.updated.action==="reorder")await o1(H.updated.newOrder??H.updated.previousOrder??[],N,H.updated.id);else if(H.updated.action==="reset-backoff")await P1("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$();Q$(D,{activeId:o0.activeId,route:o0.route,mainAccessToken:C.access,mainRefreshToken:C.refresh,routingAuthoritative:!1})}catch{}}let _=await k(N),Q=C$(_??{version:1,accounts:[]});return{text:H.text,accounts:Q,statusProjection:O}}async function oZ(Z){let X=Z??await k(N),G=X??I$(),K=C$(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=IJ(_,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 $Z(O8()),O=S$(G),H=O==="claustrum"?await jZ(f4("opencode"),p9):void 0;return{accounts:K,claustrumDetection:z.status,custodyMode:O,...H&&{claustrumEnrollment:H}}}async function PW(Z,X,G){if(Z==="claude-quota")return{command:Z,text:await yZ(),knobs:{}};if(Z==="claude-start"){let _=await uZ(X,G);return{command:Z,text:_,knobs:{}}}if(Z==="claude-logging"){let _=await iZ(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 oZ(),D={accounts:Q.accounts,claustrumDetection:Q.claustrumDetection,custodyMode:Q.custodyMode,custodyModeKnown:!0,...Q.claustrumEnrollment&&{enrollmentStatus:zZ(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 FJ(X,G),Q=await k(N);return{command:Z,text:_,knobs:{mode:v$(Q)}}}if(Z==="claude-fast"){let _=await dZ(X),Q=await k(N);return{command:Z,text:_,knobs:{enabled:k9(Q)}}}if(Z==="claude-dump"){let _=await lZ(X),Q=await k(N);return{command:Z,text:_,knobs:{enabled:f9(Q)}}}if(Z==="claude-cache"){let _=await TJ(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:VZ(Q)}}}if(Z==="claude-prime"){let _=await nZ(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=LZ({argumentsText:X,config:z,accountIds:O});if(H.updatedConfig)await U$(H.updatedConfig);return{command:Z,text:H.text,knobs:{config:b9(await k()),accountIds:O}}}async function MW(Z){return{text:"Open /claude to manage native Claude settings.",knobs:{}}}let RW=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 P1("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 yZ(!0);break;case"routing-mode":G=await FJ(Z.values.mode);break;case"routing-reset":G=await FJ("reset",Z.sessionId);break;case"cache-on":case"cache-off":G=await TJ(Z.action==="cache-on"?"on":"off");break;case"cache-mode":G=await TJ(`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 lZ(Z.action==="dump-on"?"on":"off");break;case"fast-on":case"fast-off":G=await dZ(Z.action==="fast-on"?"on":"off");break;case"prime-on":case"prime-off":G=await nZ(Z.action==="prime-on"?"on":"off");break;case"logging-level":G=await iZ(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=LZ({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 uZ("",Z.sessionId);break;default:throw Error(`Unsupported native menu action: ${Z}`)}return wJ(await k()).catch(()=>{}),{ok:!0,text:G.split(`
31
+ `).filter((K)=>!K.includes("/claude-")).join(`
32
+ `)}},qW=async(Z,X)=>{if(Z==="account"){let z=await o4(AbortSignal.timeout(3000)),O=z.mode==="claustrum"?await jZ(f4("opencode"),p9):void 0;return[`Custody mode: ${z.mode}`,...O?zZ(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?` (${V5(H)})`:""}${i1(H.profile)?` — ${i1(H.profile)}`:""}`)].join(`
33
+ `)}return(await PW({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
+ `)},SJ=new Map;function rZ(Z){let X=U9(Z),G=SJ.get(Z);if(!G||G.interactive!==X)G={interactive:X,command:f3({host:"opencode",dispatch:RW,readStatus:qW,readAccounts:()=>S.read(),interactive:X})},SJ.set(Z,G);return G.command}function IW(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} ${IW(X)} ${String(Math.round(X)).padStart(3)}%`}function sZ(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 xW(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=sZ(_?.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=sZ(D?.resetsAt),Q0=[`${I} · ${N0}${j0?` (${j0})`:""}`];if(D)Q0.push($9("5h",D.usedPercent)),z=Math.max(z,D.usedPercent);if(C)Q0.push($9("7d",C.usedPercent)),z=Math.max(z,C.usedPercent);K.push(Q0.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=y5($.directory);try{HJ=await o3(Z,()=>n3({dir:Z,drain:d3,apply:MW,applyMenu:(X)=>rZ(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=T3(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)=>{$J.observeSyntheticMessage({sessionId:Z,messageId:X.message.id,parts:X.parts})},"chat.headers":async({sessionID:Z,message:X},G)=>{$J.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"&&!pZ(K,G.id))if(typeof G.id==="string"){if(JJ.set(K,G.id),e0.has(K)&&n4.get(K)!==G.id)e0.delete(K)}else e0.delete(K);if(X.type==="session.status"&&X.properties?.status?.type!=="idle")e0.delete(K);if(X.type==="session.idle"){let z=JJ.get(K);if(z)n4.set(K,z);else n4.delete(K);e0.add(K);while(e0.size>128){let O=e0.values().next().value;if(O)e0.delete(O);else break}BJ(K)}if(X.type==="session.deleted"||X.type==="message.removed")M1.clearSession(K);if(X.type==="session.deleted"){SJ.delete(K),M.delete(K),$J.clearSession(K),B$.delete(K),w$.delete(K),e0.delete(K),JJ.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 g5)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(!pY(Z))return;cY(X.system)},provider:{id:"anthropic",async models(Z,X){let G=$G(tY(Z.models));if(X.auth?.type!=="oauth"||!L8(c0??{}))return G;return JG(G)}},"command.execute.before":async(Z)=>{if(Z.command!=="claude")return;let X=await rZ(Z.sessionID).open(Z.sessionID);if(U9(Z.sessionID))l3(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 z8($,Z.sessionID,G)}mY()},auth:{provider:"anthropic",async loader(Z,X){p$=async()=>{let _=await Z();return{type:_.type,active:f1(_,"anthropic")}},zJ=Z;let G=await Z();if(G.type!=="oauth")return{};let K=await Y1("opencode").catch(()=>{return});if(!SZ&&f1(G,"anthropic")&&process.env.OPENCODE_ANTHROPIC_AUTH_DISABLE_PROFILE_HYDRATION!=="1"){SZ=!0;let _=o4(a$.signal).then((Q)=>{if(!a$.signal.aborted)return Q$(Q.policyStorage,{...o0,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"&&!zW(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.");V$();let g=await F5(S,Q);if(z(C),I==="claustrum"&&!g.accounts.some((t)=>t.type==="oauth"&&t.enabled&&t.state==="active"))throw new i9;let N0=j3(g.policyStorage);try{O3({mode:I==="claustrum"?"C":"L",main:z3(C),fallbacks:I==="claustrum"?"T":N0.fallbacks,evidence:"V",authority:I==="claustrum"?"committed":j5(await N5(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"),Q0=j0?.binding,D0=j0?h(j0,g.policyStorage):void 0,$$=D0&&D0!==j0?.quota?{...g.policyStorage,quota:{...g.policyStorage.quota,mainQuota:D0}}:g.policyStorage,A0=k0("main",w0(Q0),j0?.accountIdentity,g.policyStorage),c$=Boolean(Q0&&A0?.lineage===w0(Q0)&&A0?.generalExhausted===!0);if(j0&&Q0&&(!K0||Q0.rowId!==K0.rowId||Q0.credentialEpoch>K0.credentialEpoch))v.clearMain(),v.setMainQuotaAccountIdentity(j0.accountIdentity),K0={rowId:Q0.rowId,credentialEpoch:Q0.credentialEpoch};if(D&&(v$(g.policyStorage)==="fallback-first"||TZ($$,j0?.accountIdentity,c$))){let t=g.accounts.find((N$)=>N$.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 r0,M0,J$,l0;try{r0=await E0("main",Q,void 0,_,"serve",g)}catch(t){if(t instanceof S0)throw t;if(K1(t))throw t;if(t instanceof O1){M0=t.account;let N$=H9(M0.quota,_);if(N$!==void 0&&(!Number.isFinite(N$.checkedAt)||(N$.checkedAt??0)+t.checkIntervalMs<=Date.now())||!h9(M0.quota)&&!M4(M0.quota,_))try{await S.fetchQuota("main",void 0,Q),r0=await E0("main",Q,void 0,_),M0=void 0}catch(s0){if(K1(s0))throw s0;if(s0 instanceof O1)M0=s0.account;else if(s0 instanceof Y$)J$=s0.account,l0=s0}}else if(t instanceof Y$)J$=t.account,l0=t}return Q?.throwIfAborted(),{type:"oauth",access:r0?.accessToken??"",expires:r0?.expires??0,refresh:void 0,nativeRoutingLineage:V0(r0?.localSubject,r0?.scopedAttempt)??(j0?.binding?w0(j0.binding):void 0),nativeAccountIdentity:r0?.accountIdentity??M0?.accountIdentity??J$?.accountIdentity,modelDenied:Boolean(M0),credentialUnavailable:Boolean(J$),credentialFailure:l0,deferred:!1,nativeLocalSource:r0?.localSource,nativeScopedAttempt:r0?.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(!FW(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()>gZ(w))return;await D()}catch{f.warn("refresh","native main OAuth background refresh unavailable")}};D1=W.setInterval(()=>{U()},MY+j8(V8)),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")},Q0=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},A0=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"),OZ(U)},J$=function(U){return v.getFallback(U.id,U)?.quota??U.quota},l0=function(U,w){return U.status===429||w},t=function(U,w=a){return L0("main",U?.routingLineage,U?.providerAccountUuid,v.getMain(U?.quotaKey??K$),w)},N$=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,K$??=Q?.accountIdentity??X4,H.access)await $4(H.access);async function D(U,w,x){z(await Z()),x?.throwIfAborted();let y=await E0("main",x,U,w,"refresh");return z(await Z()),x?.throwIfAborted(),y.accessToken}if(K==="local")C();v.seedFallbacksFromAccounts((c0?.accounts??[]).filter(U0));let I=await kY(()=>k(N)).catch(()=>({freshStorage:null,activeId:void 0,route:"main"}));await Q$(I.freshStorage,{activeId:I.activeId,route:I.route,mainAccessToken:H.access,routingAuthoritative:!1});async function $$(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=P8({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=R8(M8(B,{streamStart:v0}));if(v0=!1,X0.data===void 0)continue;I0=Q0(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:C0($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:C0($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(V$(),!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 E0("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(!N$(w,x))throw Error("API fallback requires fresh general primary OAuth exhaustion");return u}async function r0(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 T$=$0(),j$=(()=>{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:j$,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 F0)return Y8(h0);if(h0 instanceof F4)return G8(h0);throw h0}if(A0(R,x),R.set("anthropic-beta",Q4(R.get("anthropic-beta"),[])),j$)P9(R);try{X0=JSON.parse(B).stream===!0}catch{}y?.mark("rewrite_body",{route:u,ms:C0($0()-T$),originalBytes:l,rewrittenBytes:B.length,cacheEnabled:!b&&d1(),cacheMode:u1(),fastModeEnabled:j$,subagent:b})}else A0(R,x);let a0=await jJ(R),g0=await c$(x.id,I0,e,w?.signal??void 0);x={...x,...g0},A0(R,x);let m0=A4(U,{baseURL:x.baseURL}),y0=$0(),Y0=x4([x.apiKey??""],X0?"event-stream":"http"),Z$;try{Z$=Y0.redactResponse(await fetch(m0.input,{...w,body:B,headers:R,...oJ()&&{tls:{rejectUnauthorized:!1}}}))}catch(T$){let j$=Y0.redactError(T$);if(Y0.dispose(),typeof B==="string")await I4({affinity:E,route:u,error:J8,bodyText:B,url:m0.url?.toString()??R9(m0.input),method:F1(U,w),headers:R});throw j$}if(typeof B==="string")R0=await I4({affinity:E,route:u,status:Z$.status,bodyText:B,url:m0.url?.toString()??R9(m0.input),method:F1(U,w),headers:R});if(qZ(Z$,{source:"turn",accountId:x.id,synthetic:!1,...a0,requestedModel:N0(B),dump:R0,status:Z$.status,streaming:X0}),y?.mark("send_headers_received",{route:u,ms:C0($0()-y0),status:Z$.status,relayConfigured:!1,totalSendWithAccessMs:C0($0()-v0),baseURL:x.baseURL}),Z$.ok)z1.publish(()=>S.publishApi(g0.subject,{lastUsed:Date.now()}));return Z$}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,a0=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),Z$=X0?NJ.previousFor(X0):null,T$=Z$?.messageId??null,j$,h0=!1,G$=null,N4=null,z$;if(Y0&&typeof Y0==="string"){let p=$0();try{let Z0=JSON.parse(Y0);if(typeof Z0.model==="string")z$=Z0.model}catch{}y?.mark("model_parse_for_identity",{route:u,ms:C0($0()-p),bodyBytes:Y0.length})}let p0=await E0(F,w?.signal??void 0,void 0,z$,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=b$(p0.accountIdentity);y?.mark("resolve_claude_code_identity",{route:u,ms:C0($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(),kW=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:b5(await T()),midConversationEffortEnabled:!0,midConversationEffortPlan:l,midConversationEffortResolvedPlan:a0,hybridStandbyAnchor:kW,serverSideFallbackEnabled:e9==="server",laneStart:v0,billingLineage:y0,cacheDiagnosticsPreviousMessageId:T$,perf:(t0,Z1)=>{if(y?.mark(`rewrite_body_${t0}`,{route:u,...Z1}),t0==="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(t0){if(t0 instanceof F0)return Y8(t0);if(t0 instanceof F4)return G8(t0);throw t0}if(e?.plan.downgraded&&b0&&W9==="hybrid"){let t0=n7(Y0);e.opusCacheAnchor=t0?{...t0,oauthAccountId:F}:void 0}let $3=$0();try{let t0=JSON.parse(Y0);p1(B,x,{body:t0,identity:J1});let Z1=t0.diagnostics,J3=Z1&&typeof Z1==="object"&&!Array.isArray(Z1)&&Z1.previous_message_id===T$?T$:void 0;if(J3!==void 0&&B.get("anthropic-beta")?.split(",").map((vW)=>vW.trim()).includes(_4))j$={sessionId:X0??"session-unknown",previousMessageId:J3,...Z$?{previousMessageReceivedAt:Z$.receivedAt}:{},isSubagent:R0,ttlSent:G9(t0)};h0=t0.stream===!0,y?.mark("set_oauth_headers_body_parse",{route:u,ms:C0($0()-$3),bodyBytes:Y0.length,parsed:!0})}catch{p1(B,x,{identity:J1}),y?.mark("set_oauth_headers_body_parse",{route:u,ms:C0($0()-$3),bodyBytes:Y0.length,parsed:!1})}if(Z0)P9(B);y?.mark("rewrite_body",{route:u,ms:C0($0()-p),originalBytes:P,rewrittenBytes:Y0.length,cacheEnabled:!R0&&d1(),cacheMode:u1(),fastModeEnabled:Z0,subagent:R0})}let s=await jJ(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||D8(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:C0($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 E0(F,w?.signal??void 0,p,z$,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,d0=E,w1=async()=>{x0=!0,p0=await o(),d0=p0.scopedAttempt,B.set("authorization",`Bearer ${p0.accessToken}`),O$={...O$,accessToken:p0.accessToken,anthropicAccountUuid:H$(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,...oJ()&&{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:J8,bodyText:Y0,url:c.url?.toString()??R9(c.input),method:F1(U,w),headers:B,tag:v0?"start":void 0});throw b0}},F$=await T(),T0=await S.getRelayConfig(),W$=F==="main"?void 0:F$?.accounts.find((p)=>p.id===F&&U0(p)),X$=T8(W$,I0),O$={accountId:F,accessToken:x,authLineageId:I0,anthropicAccountUuid:H$(E?.accountIdentity)??(F==="main"?R?.providerAccountUuid:H$(J1.accountUuid)??H$(X$)),localSubject:p0.localSubject,scopedAttempt:p0.scopedAttempt,...F==="main"&&R?{mainQuotaIdentity:R}:{}},Z9=$0(),f0,j4=!1,x1=P0,_0=()=>k5({config:T0,input:c.input,init:w,headers:B,body:Y0,fallback:w1,affinity:X0,optimisticResponse:T0?.transport==="websocket",authorizeAttempt:async()=>{let p=await o(),Z0=p.scopedAttempt;p0=p,O$={...O$,accessToken:p.accessToken,anthropicAccountUuid:H$(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)=>{EZ(p,O$),M1.commit(y0,CJ(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 L1(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&&d0&&O0.status===401&&typeof Y0==="string"&&(F1(U,w)??"").toUpperCase()==="POST"&&!w?.signal?.aborted){let p;try{p=await L1(d0,"model",w?.signal??void 0)}catch{}if(p)await O0.body?.cancel().catch(()=>{}),f.info("claustrum","retrying after scoped credential rotation",{accountId:F,previousVersion:d0.recordVersion,newVersion:p.recordVersion,transport:"direct"}),i=d0,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){_1.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:C0($0()-Z9),status:O0.status,relayConfigured:T0!=null,totalSendWithAccessMs:C0($0()-b)}),x0)EZ(O0.headers,O$),M1.commit(y0,CJ(O0.headers));if(qZ(O0,{source:v0?"start":"turn",accountId:F,synthetic:v0,...s,requestedModel:N0(Y0),request:j$,trackSessionId:X0??void 0,dump:x0?G$:N4,status:O0.status,streaming:h0}),x0&&d0&&O0.status===401)await x1(d0,"direct");if(j4=!0,!x0&&f0)await x1(f0,"relay_status_field");if(O0.ok)z1.publish(async()=>{if(O$.scopedAttempt)await S.vault.publish(O$.scopedAttempt,{lastUsed:Date.now()});else if(O$.localSubject)await S.publishLocal(O$.localSubject,{lastUsed:Date.now()})});return O0}async function aZ(U,w){if(!U)return!1;try{return await v.refreshMain(w?.quotaKey??K$,U,w?.generation),N$(U,w)}catch{return!1}}async function s0(U,w={}){if(f$(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)||_$(void 0,U,F.id,w.modelId))}}let x=await XJ.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(D$(U)){if(L4(q.id,U))u.push(q);continue}if(S$(U)!=="local")continue;let F=y.get(q.id);if(F)u.push(F);else if(q.access&&(!q.expires||q.expires>Date.now())&&!x$(q.lastRefreshError)&&!G1(q.lastRefreshError,q.id,Date.now(),k$(q.refresh))&&U?.quota?.failClosedOnUnknownQuota!==!0&&!h9(J$(q)))u.push(q);continue}if(w.includeApiRoutes===!0&&S1(q)&&q.enabled!==!1&&x9(q.baseURL))u.push(q)}if(!f$(U))return u;return u.filter((q)=>U0(q)?_$(J$(q),U,q.id,w.modelId):!0)}async function tZ(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 XJ.getUsableFallbackAccounts(U.storage,{modelId:U.requestedModelId}),q=await k(N)??U.storage,F=[],I0=D$(q);if(I0){let E=q?.claustrum?.primaryAccount;if(E?.state==="active"&&!q?.claustrum?.disabledAccountIdentities?.includes(E.accountId))F.push({id:n0,access:"",quota:y,identity:E?{kind:"known",accountId:E.accountId}:{kind:"unknown"},order:0,scoped:!0})}else if((U.mainAccessToken||U.mainPolicyDenied)&&!x$(q?.refresh?.mainLastRefreshError))F.push({id:n0,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=J$(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(x$(T.lastRefreshError))continue;let B=J$(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===n0?q?.refresh?.mainLastRefreshError:E.account?.lastRefreshError,m=!E.scoped,T=E.identity.kind==="known"?E.identity.accountId:void 0;if(m&&x$(b))return[];if(m&&G1(b,T,Date.now(),E.id===n0?U.mainRefreshToken?k$(U.mainRefreshToken):void 0:E.account?.refresh?k$(E.account.refresh):void 0)&&(E.id===n0||!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(f$(q)&&!_$(E.quota,q,E.id===n0?void 0:E.id,U.requestedModelId))return[];return[E.id]})),R=F.flatMap((E)=>{let b=E.id===n0?q?.refresh?.mainLastRefreshError:E.account?.lastRefreshError,m=!E.scoped,T=E.identity.kind==="known"?E.identity.accountId:void 0;if(m&&x$(b)||m&&G1(b,T,Date.now(),E.id===n0?U.mainRefreshToken?k$(U.mainRefreshToken):void 0:E.account?.refresh?k$(E.account.refresh):void 0)&&(E.id===n0||!e.has(E.id)))return[];let B=E.id===n0?void 0:E.id,X0=h9(E.quota)?E.quota:void 0,R0=X0?{kind:"known",quota:X0}:{kind:"unknown"};return(!f$(q)||_$(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===n0||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 eZ=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 r0(U,w,b,q,`api_fallback_${E}`,y,F?.fableRequest,F?.mainAccessToken,F?.mainQuotaIdentity);else if(D$(y)&&b.claustrumScopedCredentialId){let X0=(await E0(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(S$(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=eJ(m,y);if(!T){let B=await $$(m,q);m=B.response,e=m,T=B.rateLimited}if(!T){if(eZ.set(m,S1(b)?"api":"oauth"),await F?.onSuccess?.(b),U0(b)&&D0(y)&&v.shouldRefreshOnRequestCount(e4)){if(D$(y)||b.access)v.refreshFallback(b.id,D$(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 fW(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:C0($0()-b),cached:!!q}),!(m?.accounts??[]).some((g0)=>g0.enabled!==!1&&(U0(g0)||S1(g0)&&x9(g0.baseURL))))return x;let B=x,X0=eJ(B,m),R0=l0(B,!1);if(!X0){let g0=await $$(B,u);B=g0.response,X0=g0.rateLimited,R0=l0(B,g0.rateLimited)}if(!X0)return B;let l=!1;if(y)l=y.some(S1);else if(R0)l=await aZ(F,E);let a0=y;if(!a0){let g0=$0();a0=await s0(m,{includeApiRoutes:l,modelId:e}),u?.mark("fallback_get_accounts",{ms:C0($0()-g0),accounts:a0.length})}if(f$(m)){let g0=a0.length;if(a0=a0.filter((m0)=>U0(m0)?_$(J$(m0),m,m0.id,e):!0),a0.length<g0)E$("[killswitch] filtered fallbacks",{before:g0,after:a0.length})}return await $1(U,w,a0,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=e9==="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=yY({bodyBytes:typeof v0==="string"?v0.length:void 0}),E=(P)=>{let s=t$.get(P);return $8(P,{perf:(c,z0)=>R.mark(c,z0),laneStart:y,laneStartOAuthServed:eZ.get(P)!=="api",...s?s.streaming?{onMessageStart:(c)=>RZ(P,c,!1),onMessageDelta:(c)=>jW(P,c),onStreamEnd:()=>s.dumpWrite}:{onMessageResponse:(c)=>RZ(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,nY(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),e0.delete(F.sessionId),cZ(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=wW(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,oY(F.requestedModel))};o.then(x0,x0)}}}:{},...I0?{serverSideFallbackModel:I0,...F?{onServerSideFallbackOutcome:(c)=>CW(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:C0($0()-b),authType:T.type,hasAccess:Boolean(T.access)}),T.type!=="oauth"){let P=A4(U),s=S4(U,w);OZ(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=H$(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 FZ("",X0,X0),l={quotaKey:X0,providerAccountUuid:X0,generation:v.getMainQuotaIdentityGeneration(),routingLineage:T.nativeRoutingLineage,stale:!1,state:D$(B)?"on-cold":"na"};let a0=$0();R.mark("load_storage",{ms:C0($0()-a0)}),v.updateStorage(B),v.seedMainFromStorage(B,K$),v.seedFallbacksFromAccounts((B?.accounts??[]).filter(U0));let g0=u?B$.get(u):void 0;if(!F||e9==="server"&&g0?.requestedModelId&&R$(g0.requestedModelId)!==R$(F.requestedModel))EW(u,B,T);let m0=g(U,w?.body),y0=N0(w?.body)??m,Y0=t(l,B),Z$=k0("main",l?.routingLineage,X0,B),T$=T.deferred?TZ(Y0&&B?{...B,accounts:B?.accounts??[],quota:{...B?.quota,mainQuota:Y0.quota}}:B,X0,Z$?.lineage===l?.routingLineage&&Z$?.generalExhausted===!0):void 0;if(T$){let P=m0?await s0(B,{includeApiRoutes:N$(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:T$.message}}),{status:429,headers:{"content-type":"application/json","retry-after":String(T$.retryAfter)}})}let j$=()=>{let P=YZ(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()))TW(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}Q$(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=O5(P),c=I1.trackedOAuthRoute(u),z0=F?.cacheAccountId??(c?c.oauthAccountId??n0:void 0),i=!1;try{let o=await tZ({storage:B,mainAccessToken:T.access,mainRefreshToken:T.refresh,mainPolicyDenied:T.modelDenied||T.credentialUnavailable,requestedModelId:P,mainQuotaIdentity:l}),x0=async(W$)=>{let X$=await QZ();return X$.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:W$,...X$.accountIdentities&&{accountIdentities:X$.accountIdentities}})},d0=x$(o.storage?.refresh?.mainLastRefreshError),w1=o.allRoutes.length===0&&!d0||o.allRoutes.some((W$)=>!W$.quota||!C1(W$.quota,o.storage,Date.now(),P)),F$=await x0();if(!F$&&w1){if(T.modelDenied)return j$();throw Error("Sticky-balanced routing is waiting for current OAuth quota snapshots")}if(!F$){if(T.modelDenied)return j$();if(D$(B))throw new i9;let W$=z5({mainRefreshError:o.storage?.refresh?.mainLastRefreshError,fallbackReauthLabels:Q8(o.storage),routeQuotas:o.allRoutes.flatMap((X$)=>X$.quota?[X$.quota]:[]),modelId:P});return R.done("return_sticky_no_route",{status:W$.status}),W$}let T0=o.allRoutes.find((W$)=>W$.id===F$?.accountId);if(F$&&T0){if(i=!0,F?.downgraded&&g$.bindRecoveryAccount(F,T0.id))f.info("fable-fallback","rebound recovery to migrated sticky account",{accountId:T0.id});let W$=async(_0)=>{if(_0.scoped){let p=(await E0(_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===n0?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===n0?l:void 0)},X$=async(_0,O0,p=!0)=>{return await h0(_0.id,"sticky-balanced"),R.done("return_sticky_balanced",{status:O0.status,accountId:_0.id,created:F$?.created,migrated:F$?.migrated}),E(O0)},O$=async(_0)=>{let O0=_0,p=eJ(_0,o.storage),Z0=!1;if(!p){let b0=await $$(_0,R);O0=b0.response,Z0=b0.rateLimited,p=b0.rateLimited}return{response:O0,routeFailure:p,streamingRateLimit:Z0}},Z9=C1(T0.quota,o.storage,Date.now(),P)?u9({quota:T0.quota,modelId:P}):void 0;if(Z9?.action==="hold")return X$(T0,await qJ(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 O$(await W$(T0)),j4=!1;if(!f0.routeFailure)return X$(T0,f0.response);if(f0.response.status===401){let _0=_1.get(f0.response);if(_0){let O0=await k(N),p=T0.id,Z0=T0.id===n0?O0?.refresh?.mainLastRefreshError:O0?.accounts.find((b0)=>b0.id===p&&U0(b0))?.lastRefreshError;if(!x$(Z0))throw _0}j4=!0}let x1=f0.response.status===403||j4;if(f0.response.status===429||f0.streamingRateLimit){let _0;try{_0=T0.id===n0?await v.refreshMain(l?.quotaKey,T0.access??"",l?.generation):await v.refreshFallback(T0.id,T0.access??"",T0.account)}catch{_0=void 0}let O0=u9({quota:_0,modelId:P});if(R.mark("sticky_quota_failure",{accountId:T0.id,action:O0.action,reason:O0.reason}),O0.action==="hold")return X$(T0,await qJ(f0.response,u,O0.retryAfterSeconds,f0.streamingRateLimit,t$));x1=O0.action==="migrate"}if(x1){let _0=T0.id;if(o=await tZ({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(()=>{}),F$=await x0(new Set([_0]));let p=o.allRoutes.find((Z0)=>Z0.id===F$?.accountId);if(F$&&p){if(T0=p,F?.downgraded)g$.bindRecoveryAccount(F,T0.id);return X$(T0,await W$(T0))}}else if((f0.response.status===429||f0.streamingRateLimit)&&N$(T.access,l)){let p=(await s0(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 X$(T0,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 s0(B,{includeApiRoutes:N$(T.access,l),modelId:y0}),R.mark("fallback_first_get_accounts",{ms:C0($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(D$(B))try{let i=(await E0("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 s0(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 Y$)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?k$(T.refresh):void 0))throw E$("[refresh] opencode main oauth request skipped backoff",{nextRetryAt:s.nextRetryAt,retryCount:s.retryCount,expiresInMs:T.expires?T.expires-Date.now():void 0}),Error(B8(s,Date.now()));E$("[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:C0($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";xW(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(()=>{});Q$(B,{activeId:"main",route:"main",mainAccessToken:T.access});let z0=A1(c,B)&&R4(c,y0);if(R.mark("main_quota_for_routing",{ms:C0($0()-P),passes:z0,model:y0,modelScopedExhausted:M4(c,y0)}),!z0){let i=$0();G$=await s0(B,{includeApiRoutes:Boolean(s&&s.refreshAfter>Date.now()&&e1(s.quota)),modelId:y0}),R.mark("preselect_fallback_accounts",{ms:C0($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 z$=t(l,B)?.quota;if(B?.quota?.failClosedOnUnknownQuota&&(z$===void 0||T.access.startsWith("sk-ant-oat")&&l?.providerAccountUuid===void 0)&&v.isBackedOff()){let P=v.getLastApiError(),s=P?WZ(P,Date.now()):"Quota API unavailable";return E$("[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(f$(B)){if(v.needsRefresh(e4,y0))try{await Promise.all([v.refreshMain(l?.quotaKey,T.access,l?.generation),R1(!1,!0)])}catch(s){E$("[quota] killswitch refresh failed",{error:s instanceof Error?s.message:String(s),backedOff:v.isBackedOff()})}z$=t(l,B)?.quota}if(f$(B)&&!_$(z$,B,void 0,y0)){let s=g(U,w?.body)?await s0(B,{includeApiRoutes:N$(T.access),modelId:y0}):[];if(s.length>0){E$("[route] skipping main (killswitch), trying fallbacks");let d0=await $1(U,w,s,B,void 0,R,{onSuccess:(w1)=>h0(w1.id,"fallback"),mainAccessToken:T.access,mainQuotaIdentity:l,laneStartRequest:y});if(d0)return R.done("return_killswitch_fallback",{status:d0.status}),E(d0)}let c=Date.now(),z0=(B?.accounts??[]).filter((d0)=>d0.enabled!==!1&&U0(d0)).map((d0)=>({...d0,quota:J$(d0)})),i=y3({mainQuota:z$,requestModelId:y0,storage:B}),o=YZ(z$,z0,c,i.isScopedDriven?i.modelId:void 0),x0=g3({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=j$(),s=m0?await s0(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(z$,m)&&A1(z$,B)&&_$(z$,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 fW(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[...AY(f4("opencode").tokenPath)?[_W]:[],{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;V$(),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 JZ("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:BW,__primeManager:H1,__quotaManager:v,__cacheKeepManager:I1,__resolveMainQuotaIdentityForTest:$4,__resolveSidebarQuotaAccessForTest:hZ,__mainProviderAccountUuidForTest:()=>U1,__fallbackRefreshReady:VW,get __scopedRuntime(){return t9(N,$.directory)},__notificationMessageIdBeforeAssistantForTest:o5,__trackDesktopNoticeMessageIdForTest:mZ,__isDesktopNoticeMessageForTest:pZ}},HV=ZG;
42
+ export{z4 as a,CJ as b,EJ as c,k1 as d,F0 as e,M3 as f,O9 as g,a3 as h,e3 as i,$7 as j,p1 as k,A4 as l,M9 as m,$8 as n,HV as o};