@cortexkit/opencode-anthropic-auth 1.21.0 → 1.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/README.md +57 -12
  2. package/dist/billing-lineage.d.ts +51 -0
  3. package/dist/claustrum-enrollment-registry.d.ts +4 -0
  4. package/dist/cli.d.ts +2 -1
  5. package/dist/cli.js +89 -6
  6. package/dist/custody-dimensions.d.ts +36 -0
  7. package/dist/custody-enrollment.d.ts +14 -0
  8. package/dist/custody-live.d.ts +111 -0
  9. package/dist/custody-manifest-watcher.d.ts +16 -0
  10. package/dist/custody-mode.d.ts +186 -0
  11. package/dist/effort-history.d.ts +62 -0
  12. package/dist/fable-fallback.d.ts +6 -7
  13. package/dist/{index-w9d41yy9.js → index-0jfsxyn9.js} +1 -1
  14. package/dist/index-1fq7h6yd.js +430 -0
  15. package/dist/{index-y0khnbt6.js → index-1gr8v4fn.js} +1 -1
  16. package/dist/index-797pmamn.js +2 -0
  17. package/dist/{index-1db17bc2.js → index-8y2t4mwz.js} +2 -2
  18. package/dist/index-a5d6v3ba.js +5 -0
  19. package/dist/index-n96q8pks.js +2 -0
  20. package/dist/index-xxhyhp98.js +2 -0
  21. package/dist/index-xzbhzz0a.js +2 -0
  22. package/dist/index-z7gfdyv3.js +1 -0
  23. package/dist/index.js +28 -21
  24. package/dist/local-login.d.ts +64 -0
  25. package/dist/{logger-ftk4bg3p.js → logger-kk9vyem9.js} +1 -1
  26. package/dist/prime-manager-registry.d.ts +5 -1
  27. package/dist/rpc/notifications.d.ts +3 -3
  28. package/dist/rpc/port-file.js +1 -1
  29. package/dist/rpc/protocol.d.ts +23 -1
  30. package/dist/rpc/protocol.js +1 -1
  31. package/dist/rpc/rpc-client.d.ts +1 -1
  32. package/dist/rpc/rpc-client.js +1 -1
  33. package/dist/rpc/rpc-dir.js +1 -1
  34. package/dist/rpc/server-registry.d.ts +10 -0
  35. package/dist/setup/activation.d.ts +7 -0
  36. package/dist/setup/claustrum.d.ts +26 -0
  37. package/dist/setup/command-runner.d.ts +2 -0
  38. package/dist/setup/command.d.ts +8 -0
  39. package/dist/setup/detect.d.ts +5 -0
  40. package/dist/setup/jsonc.d.ts +9 -0
  41. package/dist/setup/opencode-config.d.ts +18 -0
  42. package/dist/setup/paths.d.ts +15 -0
  43. package/dist/setup/pi.d.ts +8 -0
  44. package/dist/setup/process-fence.d.ts +14 -0
  45. package/dist/setup/types.d.ts +37 -0
  46. package/dist/sidebar-state.d.ts +5 -2
  47. package/dist/sidebar-state.js +1 -1
  48. package/dist/transform.d.ts +17 -1
  49. package/dist/tui/command-dialogs.d.ts +28 -9
  50. package/dist/tui-preferences.js +2 -2
  51. package/package.json +10 -5
  52. package/src/rpc/notifications.ts +28 -24
  53. package/src/rpc/protocol.ts +34 -1
  54. package/src/rpc/rpc-client.ts +1 -1
  55. package/src/rpc/rpc-server.ts +18 -5
  56. package/src/rpc/server-registry.ts +61 -0
  57. package/src/sidebar-state.ts +42 -3
  58. package/src/tui/command-dialogs.tsx +301 -97
  59. package/src/tui-compiled/rpc/protocol.ts +34 -1
  60. package/src/tui-compiled/rpc/rpc-client.ts +1 -1
  61. package/src/tui-compiled/sidebar-state.ts +42 -3
  62. package/src/tui-compiled/tui/command-dialogs.tsx +240 -70
  63. package/src/tui-compiled/tui.tsx +8 -3
  64. package/src/tui.tsx +18 -3
  65. package/dist/index-4nz423bt.js +0 -4
  66. package/dist/index-4x20896x.js +0 -2
  67. package/dist/index-wezdyxst.js +0 -2
  68. package/dist/index-yskwj5e6.js +0 -428
package/dist/index.js CHANGED
@@ -1,31 +1,38 @@
1
- import{a as U7,f as z4,h as L7,i as P7}from"./index-wezdyxst.js";import{$ as G3,$a as CJ,$b as k$,A as c1,Aa as m4,Ab as O4,Ac as z7,B as sJ,Ba as k1,Bb as X4,Bc as V4,C as HJ,Ca as y$,Cb as p3,Cc as _7,D as DJ,Da as T1,Db as e4,Dc as E$,E as UJ,Ea as B3,Eb as N$,Ec as K7,F as aJ,Fa as p4,Fb as c3,G as rN,Ga as C3,Gb as $$,H as sN,Ha as T3,Hb as l3,I as U0,Ia as E3,Ib as J$,J as v1,Ja as F3,Jb as YN,K as aN,Ka as c4,Kb as W$,L as eJ,La as A3,Lb as TJ,M as N3,Ma as S3,Mb as UN,N as k0,Na as l4,Nb as u3,O as tN,Oa as d1,Ob as d3,P as x,Pa as i1,Pb as i3,Q as $3,Qa as KN,Qb as n3,Ra as q3,Rb as EJ,S as J3,Sa as W4,Sb as FJ,T as A1,Ta as M3,Tb as AJ,U as W3,Ua as LJ,Ub as SJ,V as Z3,Va as PJ,Vb as s0,W as XN,Wa as Q4,Wb as qJ,X as VN,Xa as HN,Xb as Z$,Y as Y3,Ya as QJ,Yb as o3,Z as j3,Za as wJ,Zb as r3,_ as eN,_a as BJ,_b as s3,aa as N4,ab as u4,ac as a3,ba as O3,bb as Z4,bc as LN,ca as X3,cb as I3,cc as t3,da as V3,db as d4,dc as e3,ea as z3,eb as DN,ec as N7,fa as _3,fb as Y4,fc as $7,ga as K3,gb as i4,gc as J7,ha as zN,hb as x3,hc as W7,ia as k4,ib as f3,ic as Y$,ja as H3,jb as n4,jc as Z7,ka as D3,kb as o4,kc as Y7,la as $4,lb as R3,lc as j$,ma as h4,mb as r4,na as U3,nb as v3,nc as j7,oa as H1,ob as k3,pa as W1,pb as h3,pc as G$,qa as b4,qb as b3,qc as o1,ra as L3,rb as y3,rc as G7,sa as P3,sb as j4,sc as O7,ta as J4,tb as s4,tc as O$,ua as Q3,ub as G4,uc as X$,v as zJ,va as w3,vb as a4,vc as X7,w as _J,wa as b$,wb as g3,wc as V$,x as GN,xa as y4,xb as Z1,xc as d0,y as ON,ya as g4,yb as m3,yc as V7,z as KJ,za as _N,zb as t4,zc as n1}from"./index-yskwj5e6.js";import{Gc as tJ,Pc as I,Qc as L0}from"./index-4nz423bt.js";import{Sc as u$}from"./index-w9d41yy9.js";import{Uc as H7}from"./index-1db17bc2.js";import{Wc as D7}from"./index-y0khnbt6.js";import"./index-4x20896x.js";import{randomUUID as dN}from"node:crypto";var ZN="cache-diagnosis-2026-04-07",r7="MC-CACHE-DIAG ",s7=1000,a7=300000,t7={turn:!1,start:!0,prewarm_cachekeep:!0},e7=1000;class w4{entries=new Map;previousFor(N){return this.entries.get(N)??null}capture(N,$,W){Q4(this.entries,N,{messageId:$,receivedAt:W},s7)}}class B4{hashes=new Map;capture(N,$){if(this.hashes.has(N))return null;return Q4(this.hashes,N,!0,e7),`MC-CACHE-DIAG-BETAS ${JSON.stringify({hash:N,betas:[...$].sort()})}`}}function MN(N,$,W){let Y=N.get($);if(Y)N.set(W,Y)}async function C4(N,$,W,Y,G){let j=new Headers(N.headers);if(j.set("retry-after",String(E$($,W))),Y)return await N.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 _=new Response(N.body,{status:N.status,statusText:N.statusText,headers:j});return MN(G,N,_),_}function IN(N,$){N.diagnostics={previous_message_id:$}}function z1(N){return N!=null&&typeof N==="object"&&!Array.isArray(N)}function NW(N){return z1(N)&&N.type==="ephemeral"}function F$(N,$){if(!NW(N))return;$.push(N.ttl==="1h"?"1h":"5m")}function T$(N,$){if(!Array.isArray(N))return;for(let W of N)if(z1(W))F$(W.cache_control,$)}function xN(N){if(!z1(N))return null;let $=[];if(F$(N.cache_control,$),T$(N.system,$),Array.isArray(N.messages)){for(let W of N.messages)if(z1(W))T$(W.content,$)}return $.at(-1)??null}function $W(N){if(!Object.hasOwn(N,"diagnostics"))return{state:"absent"};let $=N.diagnostics;if($===null)return{state:"server_null"};if(!z1($))return null;if(!Object.hasOwn($,"cache_miss_reason"))return null;let W=$.cache_miss_reason;if(W===null)return{state:"pending"};if(!z1(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 WN(N,$){let W=N[$];return typeof W==="number"&&Number.isFinite(W)&&W>=0?W:null}function A$(N){if(typeof N.source!=="string"||N.source.length===0||typeof N.accountId!=="string"||N.accountId.length===0||typeof N.synthetic!=="boolean"||typeof N.betasHash!=="string"||N.betasHash.length===0)return{};let $=t7[N.source];if($!==void 0&&$!==N.synthetic)N.onWarning?.(`cache diagnostics source/synthetic mismatch: source=${N.source} expected=${$} actual=${N.synthetic}`);let W=Math.trunc(N.receivedAt);if(!Number.isFinite(N.receivedAt)||W!==N.receivedAt)return{};if(!z1(N.message))return{};let Y=N.message.id,G=N.message.model,j=N.message.usage;if(typeof Y!=="string"||Y.length===0)return{};if(typeof G!=="string"||G.length===0||!z1(j))return{};let _=WN(j,"input_tokens"),Q=WN(j,"cache_read_input_tokens"),A=WN(j,"cache_creation_input_tokens"),u=j.cache_creation;if(_===null||Q===null||A===null||!z1(u))return{};let o=WN(u,"ephemeral_5m_input_tokens"),e=WN(u,"ephemeral_1h_input_tokens");if(o===null||e===null)return{};let d=$W(N.message);if(!d)return{};let P0={v:2,source:N.source,account_id:N.accountId,synthetic:N.synthetic,betas_hash:N.betasHash,session_id:N.request.sessionId,ts_ms_received:W,model:G,is_subagent:N.request.isSubagent,ttl_sent:N.request.ttlSent,cache_read:Q,cache_creation:A,input_tokens:_,ephemeral_5m_tokens:o,ephemeral_1h_tokens:e,message_id:Y,previous_message_id:N.request.previousMessageId,diag_state:d.state};if(d.missReason!==void 0)P0.miss_reason=d.missReason;if(d.cacheMissedInputTokens!==void 0)P0.cache_missed_input_tokens=d.cacheMissedInputTokens;if(N.requestedModel!==void 0&&N.requestedModel!==G)P0.requested_model=N.requestedModel;let Q0=d.missReason==="previous_message_not_found"&&N.request.previousMessageId!==null&&N.request.previousMessageReceivedAt!==void 0&&N.receivedAt-N.request.previousMessageReceivedAt<a7&&N.receivedAt>=N.request.previousMessageReceivedAt?{messageId:Y,previousMessageId:N.request.previousMessageId}:void 0;return{record:P0,messageId:Y,...Q0?{canary:Q0}:{}}}function S$(N){return`${r7}${JSON.stringify(N)}`}var q$="claude-opus-4-8",JW=10,WW=128,ZW=86400000;function J1(N){if(typeof N!=="string")return null;if(s0(N))return"opus-5";if(N===YN||N.startsWith(`${YN}-`))return"fable-5";return null}function g1(N){return J1(N)!==null}function YW(N,$){let W=J1($);return W?`${N}\x00${W}`:null}function jW(N){try{let $=JSON.parse(N);return typeof $.model==="string"?{body:$,model:$.model}:null}catch{return null}}class T4{now;recoveries=new Map;nextCycle=1;constructor(N=Date.now){this.now=N}prune(){let N=this.now();for(let[$,W]of this.recoveries)if(N-W.updatedAt>=ZW)this.recoveries.delete($);while(this.recoveries.size>WW){let $=this.recoveries.keys().next().value;if(typeof $!=="string")break;this.recoveries.delete($)}}plan(N,$){if(!N||typeof $!=="string")return null;let W=jW($);if(!W||!g1(W.model))return null;let Y=YW(N,W.model);if(!Y)return null;this.prune();let G=this.recoveries.get(Y);if(!G||G.remaining<=0)return{sessionId:N,recoveryKey:Y,requestedModel:W.model,effectiveModel:W.model,bodyText:$,downgraded:!1,standbyCacheAnchor:G?.standbyCacheAnchor};return G.updatedAt=this.now(),G.nextRequestSequence++,this.recoveries.delete(Y),this.recoveries.set(Y,G),W.body.model=q$,{sessionId:N,recoveryKey:Y,requestedModel:G.model,effectiveModel:q$,bodyText:JSON.stringify(W.body),downgraded:!0,cycle:G.cycle,cacheAccountId:G.cacheAccountId,standbyCacheAnchor:G.standbyCacheAnchor,requestSequence:G.nextRequestSequence}}recoveryAccount(N){if(N.cycle===void 0)return N.cacheAccountId;let $=this.recoveries.get(N.recoveryKey);return $?.cycle===N.cycle?$.cacheAccountId:N.cacheAccountId}bindRecoveryAccount(N,$){if(!N.downgraded||N.cycle===void 0)return!1;let W=this.recoveries.get(N.recoveryKey);if(!W||W.cycle!==N.cycle)return!1;if(W.cacheAccountId===$)return!1;return W.cacheAccountId=$,W.standbyCacheAnchor=void 0,W.standbyAnchorSequence=0,W.updatedAt=this.now(),N.cacheAccountId=$,N.standbyCacheAnchor=void 0,!0}activate(N,$){if(N.downgraded||!g1(N.requestedModel))return this.remaining(N);let W={model:N.requestedModel,remaining:JW,cycle:this.nextCycle++,cacheAccountId:$,standbyCacheAnchor:N.standbyCacheAnchor,nextRequestSequence:0,standbyAnchorSequence:0,updatedAt:this.now()};return this.recoveries.delete(N.recoveryKey),this.recoveries.set(N.recoveryKey,W),this.prune(),W.remaining}complete(N,$){if(!N.downgraded||N.cycle==null||N.completed)return{counted:!1,remaining:this.remaining(N)};N.completed=!0;let W=this.recoveries.get(N.recoveryKey);if(!W||W.cycle!==N.cycle||W.remaining<=0)return{counted:!1,remaining:W?.remaining??0};if(W.remaining--,$&&(!W.cacheAccountId||$.oauthAccountId===W.cacheAccountId)&&N.requestSequence!=null&&N.requestSequence>=W.standbyAnchorSequence)W.standbyCacheAnchor=$,W.standbyAnchorSequence=N.requestSequence;return W.updatedAt=this.now(),this.recoveries.delete(N.recoveryKey),this.recoveries.set(N.recoveryKey,W),{counted:!0,remaining:W.remaining}}remaining(N){return this.prune(),this.recoveries.get(N.recoveryKey)?.remaining??0}}function _1(N){return typeof N==="object"&&N!==null}function GW(N){if(Array.isArray(N))return N;if(_1(N)&&Array.isArray(N.data))return N.data;return[]}function x$(N){if(!_1(N)||!_1(N.info))return;return N.info}function M$(N){let $=x$(N);return typeof $?.role==="string"?$.role:void 0}function OW(N){let $=x$(N);return typeof $?.id==="string"?$.id:void 0}function E4(N){if(!_1(N)||!_1(N.info))return null;let $=N.info,W=_1($.model)?$.model:void 0,Y=typeof $.agent==="string"?$.agent:void 0,G=typeof W?.providerID==="string"?W.providerID:typeof $.providerID==="string"?$.providerID:void 0,j=typeof W?.modelID==="string"?W.modelID:typeof W?.id==="string"?W.id:typeof $.modelID==="string"?$.modelID:void 0,_=typeof W?.variant==="string"?W.variant:typeof $.variant==="string"?$.variant:void 0;if(!Y&&(!G||!j)&&!_)return null;let Q={};if(Y)Q.agent=Y;if(G&&j)Q.model={providerID:G,modelID:j};if(_)Q.variant=_;return Q}function F4(N,$){return{agent:N.agent??$.agent,model:N.model??$.model,variant:N.variant??$.variant,latestAssistantMessageId:N.latestAssistantMessageId??$.latestAssistantMessageId,latestUserMessageId:N.latestUserMessageId??$.latestUserMessageId}}function I$(N){return Boolean(N.agent&&N.model&&N.variant)}async function fN(N,$){if(!N||!$)return null;let W=N,Y=[];if(typeof W.session?.messages==="function")try{Y=GW(await Promise.resolve(W.session.messages({path:{id:$},query:{limit:100}})))}catch{Y=[]}let G,j;for(let Q of Y){let A=OW(Q);if(!A)continue;let u=M$(Q);if(u==="assistant"&&(!G||A>G))G=A;if(u==="user"&&(!j||A>j))j=A}let _={latestAssistantMessageId:G,latestUserMessageId:j};for(let Q=Y.length-1;Q>=0;Q--){if(M$(Y[Q])!=="assistant")continue;let A=E4(Y[Q]);if(!A)continue;if(_=F4(_,A),I$(_))return _}for(let Q=Y.length-1;Q>=0;Q--){let A=E4(Y[Q]);if(!A)continue;if(_=F4(_,A),I$(_))return _}if(typeof W.session?.get==="function")try{let Q=await Promise.resolve(W.session.get({path:{id:$}})),A=_1(Q)&&_1(Q.data)?Q.data:_1(Q)?Q:void 0,u=A?E4({info:A}):null;if(u)_=F4(_,u)}catch{}if(!_.agent&&!_.model&&!_.variant&&!_.latestAssistantMessageId&&!_.latestUserMessageId)return null;return _}var f$="[lane start] — automated cache warm; no response needed.",RN="x-cortexkit-lane-start",XW=1000;function VW(N){if(!N||typeof N!=="object")return!1;let $=N;return $.type==="text"&&$.text===f$&&$.synthetic===!0}async function R$(N,$){let W=N?.session;if(typeof W?.promptAsync!=="function")throw Error("OpenCode plugin client does not support session.promptAsync");let Y=await fN(N,$),G={noReply:!1,parts:[{type:"text",text:f$,synthetic:!0}]};if(Y?.agent)G.agent=Y.agent;if(Y?.model)G.model=Y.model;if(Y?.variant)G.variant=Y.variant;await Promise.resolve(W.promptAsync({path:{id:$},body:G}))}class A4{#N=new Map;observeSyntheticMessage(N){if(!N.parts.some(VW))return!1;let $=`${N.sessionId}\x00${N.messageId}`;if(!this.#N.has($)&&this.#N.size>=XW){let W=this.#N.keys().next().value;if(W!==void 0)this.#N.delete(W)}return this.#N.set($,N.sessionId),!0}markHeaders(N){let $=`${N.sessionId}\x00${N.messageId}`;if(!this.#N.has($))return!1;return this.#N.delete($),N.headers[RN]="1",!0}clearSession(N){for(let[$,W]of this.#N)if(W===N)this.#N.delete($)}}var vN=new Map,v$=new Map;function h$(N,$,W){let Y=k$(N),G=v$.get(W.slot);if(G&&G!==Y){let Q=vN.get(G);if(Q){if(Q.slots.delete(W.slot),Q.slots.size===0)Q.manager.stop(),vN.delete(G)}}v$.set(W.slot,Y);let j=vN.get(Y);if(j)return j.slots.add(W.slot),W.rebind(j.manager),j.manager;let _=$();return vN.set(Y,{manager:_,slots:new Set([W.slot])}),_}function g$(N){let $=Math.floor(N.retryAfterSeconds/60),W=N.retryAfterSeconds%60,Y=`Retry in ${$}m ${W}s.`;return N.modelName?`${N.modelName} weekly limit reached, no routable accounts. ${Y}`:`Killswitch: no routable accounts. ${Y}`}function m$(N){if(!N.requestModelId)return{isScopedDriven:!1};if(!T1(N.mainQuota,N.storage))return{isScopedDriven:!1};let $=b$(N.mainQuota,N.requestModelId);if(!$)return{isScopedDriven:!1};if(!Number.isFinite($.remainingPercent))return{isScopedDriven:!1};let W=y$(N.storage);if($.remainingPercent<=W.scoped)return{isScopedDriven:!0,modelName:$.modelName,modelId:N.requestModelId};return{isScopedDriven:!1}}var E1=[],zW=1,S4=0,p$=new Map;function c$(N,$){if(E1.push({id:zW++,type:"open-dialog",payload:N,sessionId:$}),E1.length>100)E1=E1.slice(E1.length-100)}function l$(N=0,$){let W=Date.now();if(S4=W,$!==void 0)p$.set($,W);let Y=(G)=>$===void 0||G.sessionId===void 0||G.sessionId===$;if(N>0)E1=E1.filter((G)=>{if(G.id>N)return!0;if($===void 0)return!1;return G.sessionId!==$});return E1.filter((G)=>G.id>N&&Y(G))}function q4(N){let $=Date.now();if(N!==void 0){let W=p$.get(N)??0;return W>0&&$-W<3000}return S4>0&&$-S4<3000}import{randomBytes as _W,timingSafeEqual as KW}from"node:crypto";import{unlink as HW}from"node:fs/promises";import{createServer as DW}from"node:http";import{join as UW}from"node:path";function LW(N){return new Promise(($,W)=>{let Y=[],G=0;N.on("data",(j)=>{if(G+=j.length,G>1e6){N.destroy(),W(Error("body too large"));return}Y.push(j)}),N.on("end",()=>$(Buffer.concat(Y).toString("utf8"))),N.on("error",W)})}function PW(N,$){if(!N?.startsWith("Bearer "))return!1;let W=Buffer.from(N.slice(7)),Y=Buffer.from($);return W.length===Y.length&&KW(W,Y)}async function d$(N){let $=_W(32).toString("hex"),W=DW((j,_)=>{Y(j,_)});async function Y(j,_){let Q=(A,u)=>{_.writeHead(A,{"content-type":"application/json"}),_.end(JSON.stringify(u))};try{let A=j.url??"";if(j.method==="GET"&&A==="/health")return Q(200,{ok:!0});if(j.method!=="POST"||!A.startsWith("/rpc/"))return Q(404,{error:"not found"});if(!PW(j.headers.authorization,$))return Q(401,{error:"unauthorized"});let u=A.slice(5),o=JSON.parse(await LW(j)||"{}");if(u==="pending-notifications"){let e=N.drain(Number(o.lastReceivedId??0),typeof o.sessionId==="string"?o.sessionId:void 0);return Q(200,{messages:e})}if(u==="apply"){let e=await N.apply(o);return Q(200,e)}return Q(404,{error:"unknown method"})}catch(A){if(!_.headersSent&&!_.writableEnded&&!_.destroyed)Q(500,{error:A instanceof Error?A.message:String(A)})}}let G=await new Promise((j,_)=>{W.on("error",_),W.listen(0,"127.0.0.1",()=>{let Q=W.address();if(Q&&typeof Q==="object")j(Q.port);else _(Error("no port"))})});W.unref();try{await u$(N.dir,{port:G,token:$,pid:process.pid})}catch(j){throw await new Promise((_)=>W.close(()=>_())),j}return{port:G,token:$,async stop(){await new Promise((j)=>W.close(()=>j())),await HW(UW(N.dir,`port-${process.pid}.json`)).catch(()=>{})}}}var o$="server-side-fallback-2026-07-01",r$="⁠",kN="cortexkit-server-fallback-v1:";function a0(N){return N!==null&&typeof N==="object"&&!Array.isArray(N)?N:void 0}function m1(N,$){let W=N?.[$];return typeof W==="string"?W:void 0}function p1(N){return typeof N==="string"&&N.length>0&&N.length<=128&&/^claude-[a-z0-9-]+$/i.test(N)}function QW(N){return`${kN}${N.fromModel}|${N.toModel}`}function wW(N){if(typeof N!=="string"||!N.startsWith(kN))return null;let $=N.slice(kN.length),W=$.indexOf("|");if(W<=0||W!==$.lastIndexOf("|"))return null;let Y=$.slice(0,W),G=$.slice(W+1);if(!p1(Y)||!p1(G))return null;return{fromModel:Y,toModel:G}}function BW(N){if(N.type!=="fallback")return null;let $=m1(a0(N.from),"model"),W=m1(a0(N.to),"model");if(!p1($)||!p1(W))return null;return{fromModel:$,toModel:W}}function CW(N){return{type:"fallback",from:{model:N.fromModel},to:{model:N.toModel}}}function TW(N,$){let W=0,Y=0;if(!Array.isArray(N.messages))return{restoredMarkers:W,droppedMarkers:Y};for(let G of N.messages){let j=a0(G);if(j?.role!=="assistant"||!Array.isArray(j.content))continue;let _=[];for(let Q of j.content){let A=a0(Q);if(!(A?.type==="thinking"&&(A.thinking===r$||A.thinking==="")&&typeof A.signature==="string"&&A.signature.startsWith(kN))){_.push(Q);continue}let o=wW(A.signature);if($&&o)_.push(CW(o)),W++;else Y++}j.content=_}return{restoredMarkers:W,droppedMarkers:Y}}function s$(N){return N?.trim().toLowerCase()==="legacy"?"legacy":"server"}function a$(N,$){let W=$&&g1(N.model),Y=TW(N,W);if(W)N.fallbacks="default";else if(N.fallbacks==="default")delete N.fallbacks;return{enabled:W,...Y}}function EW(N){let $,W=[];for(let G of N.split(/\r?\n/))if(G.startsWith("event:"))$=G.slice(6).trim();else if(G.startsWith("data:")){let j=G.slice(5);W.push(j.startsWith(" ")?j.slice(1):j)}let Y=W.join(`
2
- `);if(!Y||Y==="[DONE]")return{event:$};try{return{event:$,data:a0(JSON.parse(Y))}}catch{return{event:$}}}function i$(N){let $=N.indexOf(`
1
+ import{a as DV,b as f9,c as BV,d as M4,e as wV,f as _V,g as FV}from"./index-797pmamn.js";import{h as TV,m as cJ,o as qV,p as PV}from"./index-xzbhzz0a.js";import{$b as U5,$d as f5,$e as M$,$f as x8,Aa as n7,Ab as $8,Ag as UZ,Ba as xJ,Bb as X5,Bc as o3,Be as M7,Ca as e0,Cb as m1,Cd as x5,Cf as e5,Db as C1,Dc as S5,De as A8,Df as U4,Eb as J8,Ed as I5,Ee as W3,Fb as G5,Gc as r3,Gd as C5,H as K$,Ha as JJ,Hd as M5,Hf as $V,Ia as Z0,Ic as s3,Ie as ZZ,If as E$,J as l7,Ja as L4,Jb as z5,Jd as T9,Je as c5,Ka as IJ,Kc as a3,Ke as p5,L as _7,La as dZ,Lb as EJ,Lc as U7,Ld as R5,Le as d5,Lf as JV,M as C9,Ma as lZ,Mb as K5,Me as l5,Mf as ZV,Na as uZ,Nb as N5,Nf as VV,O as V1,Oa as o7,Of as WV,Pa as g0,Pb as O3,Pc as I$,Pe as u5,Q as yZ,Qa as S$,Qb as Z8,Qf as jV,R as DJ,Ra as r7,Rb as V8,Rc as t3,Rd as q9,Re as VZ,Rf as q8,S as mZ,Sa as M,Sb as P$,Sd as P9,Se as H4,Ta as s7,Tb as W8,Tc as e3,Te as n1,Tf as YV,U as WJ,Uc as $Z,Ue as i5,Uf as XV,V as PJ,Va as iZ,Vc as JZ,Vf as P8,W as N$,Wa as L0,Wb as D4,We as WZ,Xa as W1,Xb as U3,Xc as G8,Xd as E5,Xe as jZ,Ya as ZJ,Yb as o1,Yd as Q8,Za as a7,Zb as O5,Zc as kJ,Zd as H8,Ze as YZ,Zf as GV,_ as O$,_b as j8,_d as bJ,_e as T1,ab as t7,ac as Q5,ae as v5,af as n5,bb as z1,bc as H5,be as L8,bf as o5,cb as nZ,cc as L5,cd as A5,ce as k5,cf as r5,cg as d4,db as oZ,dc as fJ,df as R$,dg as zV,eb as E4,ec as Y8,ed as z8,ee as h5,ef as XZ,eg as KV,fb as A$,fc as D5,fd as C$,fe as S1,ff as k4,gb as T$,ge as b5,gf as s5,gg as I8,hb as rZ,hc as B5,hd as hJ,hf as GZ,hg as C8,ib as sZ,ic as w5,id as K8,if as zZ,ig as NV,jb as CJ,je as D8,jf as A7,jg as M8,ka as y9,kb as aZ,ke as B8,kf as KZ,kg as p0,la as cZ,lb as MJ,le as gJ,mb as tZ,mc as _5,md as T5,me as yJ,na as m9,nb as eZ,nc as X8,nf as BJ,ng as OV,ob as $5,oc as c4,oe as g5,of as T8,og as B4,pb as J5,pc as p4,pg as UV,qb as Z5,qe as w8,rb as V5,re as _8,sb as q$,sc as x$,sg as mJ,ta as u7,tb as e7,td as q5,te as y5,tg as QV,ub as W5,uc as F5,ud as N8,ue as F8,uf as a5,ug as _9,va as i7,vb as j5,vd as O8,vg as HV,wb as RJ,wc as vJ,wd as P5,we as m5,wg as NZ,xc as K7,xd as U8,xg as LV,yb as Y5,yc as D9,ye as S8,yf as t5,za as pZ,ze as L$,zg as OZ}from"./index-1fq7h6yd.js";import{$g as n3,Jg as p3,Lg as d3,Mg as B$,Ng as w$,Og as l3,Pg as g4,Qg as bZ,Ug as u3,_g as i3,bh as gZ,kh as T,lh as x0}from"./index-a5d6v3ba.js";import{oh as _3}from"./index-0jfsxyn9.js";import{qh as SV}from"./index-8y2t4mwz.js";import{sh as AV}from"./index-1gr8v4fn.js";import"./index-n96q8pks.js";import{randomUUID as SJ}from"node:crypto";import{randomUUID as L9}from"node:crypto";var W$="x-cortexkit-billing-lineage",FW=4096,SW=4096,AW=1024,B9=new Set(["title","summary","compaction"]),TW="[lane start] — automated cache warm; no response needed.";function qW($){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"&&B9.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===TW)return!0}return!1}function K4($,J){while($.size>J){let Z=$.keys().next().value;if(Z===void 0)return;$.delete(Z)}}function N7($){let J=$.get("request-id")??$.get("x-request-id");return J&&K7(J)?J:void 0}class O7{#$;#N;#z;#O;#W;#J=new Map;#V=new Map;#Z=new Map;#j=new Map;#Y=new Map;#X=new Map;#G=new Map;constructor($={}){this.#$=$.createPromptId??L9,this.#N=$.createRequestToken??L9,this.#z=$.maxPrompts??FW,this.#O=$.maxRequests??SW,this.#W=$.maxSessions??AW}observeMessages($){let J;for(let H=$.length-1;H>=0;H-=1)if($[H]?.info?.role==="user"){J=$[H];break}if(!J)return;let Z=qW(J),W=J.info?.id;if(!Z||typeof W!=="string"||W.length===0)return;let X=this.#K(Z,W);if(PW(J)){this.#V.delete(X),this.#V.set(X,!0),K4(this.#V,this.#z),this.#J.delete(X);return}this.#V.delete(X);let K=this.#J.get(X);if(K){this.#J.delete(X),this.#J.set(X,K);return}let N=this.#$();if(!D9(N))return;this.#J.set(X,N),K4(this.#J,this.#z)}markHeaders($){let J=this.#K($.sessionId,$.messageId);if(B9.has($.agent??"")||this.#V.has(J))return!1;let Z=this.#J.get(J);if(!Z)return!1;let W=this.#N();if(!W||/[\r\n]/.test(W))return!1;let X={sessionId:$.sessionId,messageId:$.messageId,promptId:Z,requestToken:W,generation:this.#Y.get($.sessionId)??0,sequence:0};return this.#Z.set(W,X),K4(this.#Z,this.#O),$.headers[W$]=W,!0}resolveHeader($){if(!$)return;let J=this.#Z.get($);if(!J)return;this.#Z.delete($),this.#Z.set($,J);let Z=(this.#X.get(J.sessionId)??0)+1;this.#X.delete(J.sessionId),this.#X.set(J.sessionId,Z),K4(this.#X,this.#W);let W={...J,previousRequestId:this.#j.get(J.sessionId),sequence:Z};if(W.previousRequestId===void 0)delete W.previousRequestId;return W}commit($,J){if(!$||!J||!K7(J))return!1;if((this.#Y.get($.sessionId)??0)!==$.generation)return!1;let Z=this.#Z.get($.requestToken);if(!Z||Z.sessionId!==$.sessionId||Z.messageId!==$.messageId||Z.promptId!==$.promptId||Z.generation!==$.generation)return!1;if(this.#J.get(this.#K($.sessionId,$.messageId))!==$.promptId)return!1;if($.sequence<(this.#G.get($.sessionId)??0))return!1;return this.#G.delete($.sessionId),this.#G.set($.sessionId,$.sequence),K4(this.#G,this.#W),this.#j.delete($.sessionId),this.#j.set($.sessionId,J),K4(this.#j,this.#W),!0}clearSession($){this.#Y.set($,(this.#Y.get($)??0)+1),this.#j.delete($),this.#X.delete($),this.#G.delete($);let J=`${$}\x00`;for(let Z of this.#J.keys())if(Z.startsWith(J))this.#J.delete(Z);for(let Z of this.#V.keys())if(Z.startsWith(J))this.#V.delete(Z);for(let[Z,W]of this.#Z)if(W.sessionId===$)this.#Z.delete(Z);K4(this.#Y,this.#W)}#K($,J){return`${$}\x00${J}`}}var Y$="cache-diagnosis-2026-04-07",xW="MC-CACHE-DIAG ",IW=1000,CW=300000,MW={turn:!1,start:!0,prewarm_cachekeep:!0},RW=1000;class Q7{entries=new Map;previousFor($){return this.entries.get($)??null}capture($,J,Z){U7(this.entries,$,{messageId:J,receivedAt:Z},IW)}}class H7{hashes=new Map;capture($,J){if(this.hashes.has($))return null;return U7(this.hashes,$,!0,RW),`MC-CACHE-DIAG-BETAS ${JSON.stringify({hash:$,betas:[...J].sort()})}`}}function t$($,J,Z){let W=$.get(J);if(W)$.set(Z,W)}async function L7($,J,Z,W,X){let K=new Headers($.headers);if(K.set("retry-after",String(_9(J,Z))),W)return await $.body?.cancel().catch(()=>{}),K.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:K});let N=new Response($.body,{status:$.status,statusText:$.statusText,headers:K});return t$(X,$,N),N}function e$($,J){$.diagnostics={previous_message_id:J}}function h1($){return $!=null&&typeof $==="object"&&!Array.isArray($)}function EW($){return h1($)&&$.type==="ephemeral"}function F9($,J){if(!EW($))return;J.push($.ttl==="1h"?"1h":"5m")}function w9($,J){if(!Array.isArray($))return;for(let Z of $)if(h1(Z))F9(Z.cache_control,J)}function $J($){if(!h1($))return null;let J=[];if(F9($.cache_control,J),w9($.system,J),Array.isArray($.messages)){for(let Z of $.messages)if(h1(Z))w9(Z.content,J)}return J.at(-1)??null}function fW($){if(!Object.hasOwn($,"diagnostics"))return{state:"absent"};let J=$.diagnostics;if(J===null)return{state:"server_null"};if(!h1(J))return null;if(!Object.hasOwn(J,"cache_miss_reason"))return null;let Z=J.cache_miss_reason;if(Z===null)return{state:"pending"};if(!h1(Z)||typeof Z.type!=="string"||!Z.type)return null;let W=Z.cache_missed_input_tokens;if(W!==void 0&&typeof W!=="number")return null;return{state:"populated",missReason:Z.type,cacheMissedInputTokens:W}}function j$($,J){let Z=$[J];return typeof Z==="number"&&Number.isFinite(Z)&&Z>=0?Z:null}function S9($){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=MW[$.source];if(J!==void 0&&J!==$.synthetic)$.onWarning?.(`cache diagnostics source/synthetic mismatch: source=${$.source} expected=${J} actual=${$.synthetic}`);let Z=Math.trunc($.receivedAt);if(!Number.isFinite($.receivedAt)||Z!==$.receivedAt)return{};if(!h1($.message))return{};let W=$.message.id,X=$.message.model,K=$.message.usage;if(typeof W!=="string"||W.length===0)return{};if(typeof X!=="string"||X.length===0||!h1(K))return{};let N=j$(K,"input_tokens"),H=j$(K,"cache_read_input_tokens"),z=j$(K,"cache_creation_input_tokens"),q=K.cache_creation;if(N===null||H===null||z===null||!h1(q))return{};let v=j$(q,"ephemeral_5m_input_tokens"),P=j$(q,"ephemeral_1h_input_tokens");if(v===null||P===null)return{};let b=fW($.message);if(!b)return{};let n={v:2,source:$.source,account_id:$.accountId,synthetic:$.synthetic,betas_hash:$.betasHash,session_id:$.request.sessionId,ts_ms_received:Z,model:X,is_subagent:$.request.isSubagent,ttl_sent:$.request.ttlSent,cache_read:H,cache_creation:z,input_tokens:N,ephemeral_5m_tokens:v,ephemeral_1h_tokens:P,message_id:W,previous_message_id:$.request.previousMessageId,diag_state:b.state};if(b.missReason!==void 0)n.miss_reason=b.missReason;if(b.cacheMissedInputTokens!==void 0)n.cache_missed_input_tokens=b.cacheMissedInputTokens;if($.requestedModel!==void 0&&$.requestedModel!==X)n.requested_model=$.requestedModel;let E=b.missReason==="previous_message_not_found"&&$.request.previousMessageId!==null&&$.request.previousMessageReceivedAt!==void 0&&$.receivedAt-$.request.previousMessageReceivedAt<CW&&$.receivedAt>=$.request.previousMessageReceivedAt?{messageId:W,previousMessageId:$.request.previousMessageId}:void 0;return{record:n,messageId:W,...E?{canary:E}:{}}}function A9($){return`${xW}${JSON.stringify($)}`}function D7($=process.env,J=process.cwd()){return q9("opencode",$,J)}function x9($){return P9({...$,proposedName:T9})}function B7($,J){let Z=J.construction?"unknown":void 0;if(!$)return{fallbacks:"T",evidence:Z??"V"};let W=$.accounts.filter((z)=>z.enabled!==!1&&Z0(z));if(!W.length)return{fallbacks:L0($)==="claustrum"?"T":"R",evidence:Z??"V"};let X=W.every((z)=>V1({type:"oauth",access:z.access,refresh:z.refresh},"anthropic"))?"T":"R";if(L0($)!=="claustrum")return{fallbacks:X,evidence:Z??"V"};if($.claustrum?.scopedRoster===!0)return{fallbacks:W.every((q)=>Boolean(q.claustrumScopedCredentialId&&q.anthropicAccountUuid)&&JJ(q))?"T":"R",evidence:Z??"V"};let K=W.map((z)=>J.resolveAccountCustodyHandle(z,$));if(K.some((z)=>z.status!=="resolved"))return{fallbacks:"M",evidence:Z??"N"};let N=W.every((z,q)=>V1({type:"oauth",access:z.access,refresh:z.refresh},"anthropic")||JJ(z)&&W1($,z,K[q]))?"T":"R";if(J.construction)return{fallbacks:N,evidence:"unknown"};let H=K.every((z)=>{if(z.status!=="resolved")return!1;return Boolean(J.usableAccessToken(J.getCache()?.peek(z.handle),J.now()))})?"V":"N";return{fallbacks:N,evidence:H}}function I9($){if(V1($,"anthropic"))return"T";if($.type==="oauth"&&$.access&&$.refresh)return"R";return"X"}function X$($,J,Z){if(!J||Z.isBlocked?.($))return!1;let W=J.accounts.find((N)=>N.id===$&&Z0(N));if(!W)return!1;if(L0(J)==="claustrum"&&J.claustrum?.scopedRoster===!0)return Boolean(W.claustrumScopedCredentialId&&W.anthropicAccountUuid&&W.claustrumScopedState==="active"&&JJ(W));let X=Z.resolveAccountCustodyHandle(W,J);if(!W1(J,W,X))return!1;if(X.status!=="resolved")return!1;let K=Z.getCache()?.peek(X.handle);if(Z.hasIdentityMismatch(W,K))return!1;return Boolean(K&&Z.usableAccessToken(K,Z.now()))}function w7($,J,Z,W=X$($.id,J,Z)){if($.role==="main"){if(!J||L0(J)!=="claustrum")return"na";if(J.claustrum?.scopedRoster===!0){let P=J.claustrum.primaryAccount;if(!P)return"unknown-identity";if(P.state==="needs_reauth")return"on-vault-reauth";if(P.state==="active")return"on-vault-served";return"on-cold"}let H=Z.getManifest()?.accounts.find((P)=>P.label==="main")?.handle,z=H?Z.getCache()?.peek(H):void 0,q=J.main?.profile?.providerAccountUuid??J.main?.profile?.accountIdentity,v=z?.accountId;if(q===void 0&&v===void 0)return"unknown-identity";if(q===void 0!==(v===void 0))return"unknown-identity";if(q!==void 0&&v!==void 0&&q!==v)return"on-identity-mismatch";if(Z.isReauth("main"))return"on-vault-reauth";if(z&&Z.usableAccessToken(z,Z.now()))return"on-vault-served";return"on-cold"}if(!J)return"off";let X=J.accounts.find((H)=>H.id===$.id&&Z0(H));if(!X)return"off";if(L0(J)==="claustrum"&&J.claustrum?.scopedRoster===!0){if(X.claustrumScopedCredentialId){if(X.claustrumScopedState==="needs_reauth")return"on-vault-reauth";if(X.claustrumScopedState==="active")return"on-vault-served";return"on-cold"}return"off"}let K=Z.resolveAccountCustodyHandle(X,J);if(K.status==="unresolved"&&K.reason==="corrupt-binding")return"on-corrupt-binding";if(K.status==="unresolved"&&K.reason==="unknown-identity")return"on-identity-mismatch";if(!W1(J,X,K))return"off";let N=K.status==="resolved"?K.handle:void 0;if(N&&Z.hasIdentityMismatch(X,Z.getCache()?.peek(N)))return"on-identity-mismatch";if(Z.isReauth($.id))return"on-vault-reauth";if(W)return"on-vault-served";return"on-cold"}import{createHash as vW}from"node:crypto";var kW="main";function hW($){return vW("sha256").update($.label).update("\x00").update($.credentialId).digest("hex")}function M9($,J){if(L0($)!=="claustrum"||!J)return[];let Z=new Map;for(let W of $.accounts){if(!Z0(W))continue;let X=W.label??W.id;Z.set(X,(Z.get(X)??0)+1)}return J.accounts.filter((W)=>{if(W.label===kW||J.corruptLabels?.has(W.label))return!1;return(Z.get(W.label)??0)===0})}function R9($){let J=hW($.binding),Z=$.binding.label,W=$.storage.accounts.some((X)=>X.id===Z)?`claustrum-${J}`:Z;if($.storage.accounts.some((X)=>X.id===W))throw Error(`Cannot materialize Claustrum account "${$.binding.label}": deterministic account id collision`);return{id:W,label:$.binding.label,enabled:!0,addedAt:$.now??Date.now(),authLineageId:`claustrum-${J}`,anthropicAccountUuid:$.providerAccountUuid,...C9("anthropic")}}import{mkdir as dW}from"node:fs/promises";import{dirname as lW}from"node:path";var N4="opencode-main-oauth-refresh",R4=300000;class VJ extends Error{accountId;reason;refusals;code="custody_preflight_refused";constructor($,J,Z=[{label:$,reason:J}]){super(`custody preflight refused for account ${$}: ${J}`);this.accountId=$;this.reason=J;this.refusals=Z}toJSON(){return{ok:!1,code:this.code,accountId:this.accountId,reason:this.reason,refusals:this.refusals}}}class G$ 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}}}class v9 extends Error{lockName;code="lock_busy";constructor($){super(`custody transition lock busy: ${$}`);this.lockName=$}}function bW($){if(!$||typeof $!=="object"||$.type!=="oauth"||V1($,"anthropic"))return;let{access:J,refresh:Z}=$;if(typeof J!=="string"||!J||typeof Z!=="string"||!Z)return;return{access:J,refresh:Z}}function gW($){if(!$||typeof $!=="object"||$.type!=="oauth")return;let{access:J,refresh:Z}=$;if(typeof J!=="string"||typeof Z!=="string")return;return{access:J,refresh:Z}}function k9($,J){if(J||V1($,"anthropic"))return gW($);return bW($)}function yW($,J){return[{...$.main,type:"oauth",local:J},...$.fallbacks].filter((Z)=>Z.type==="oauth"&&Z.enabled!==!1)}function mW($,J){let Z=J.filter((W)=>W.accountId===$.id&&W.label===$.label);return Z.length===1?Z[0]:void 0}function cW($){return $.state==="usable"&&"recordVersion"in $}async function h9($){let J=await $.hostAuth.get(),Z=V1(J,"anthropic"),W=R4,X=[],K=[],N=(z,q)=>{K.push({accountId:z.id,label:z.label??z.id,reason:q,...z.id===$.main.id&&q==="TAKEOVER_INCOMPLETE_MAIN_REAL"?{guidance:"Mint a handle with `ck auth mint-handle`; this plugin then writes the manifest entry."}:{}})};if(!Z)N({...$.main,type:"oauth"},"TAKEOVER_INCOMPLETE_MAIN_REAL");for(let z of yW($,J)){if(z.id===$.main.id&&!Z)continue;let q=mW(z,$.bindings);if(!q){N(z,z.id===$.main.id?"TAKEOVER_INCOMPLETE_MAIN_BINDING":"binding_missing");continue}let v=await $.cache.get(q.handle,{minTtlMs:W});if(v.state==="revoked"){N(z,"credential_revoked");continue}if(v.state==="reauth"){N(z,"credential_reauth");continue}if(v.state==="timeout"){N(z,"credential_timeout");continue}if(!cW(v)||v.expiresAt!==null&&v.expiresAt<$.now+W){N(z,"credential_unusable");continue}if(v.credentialId===void 0){N(z,"credential_identity_mismatch");continue}if(v.credentialId!==q.credentialId){N(z,"credential_identity_mismatch");continue}if(!f9({credentialId:q.credentialId,recordVersion:v.recordVersion},$.storage??{}).ok){N(z,"divergence_fenced");continue}let P=k9(z.local,z.id===$.main.id);if(!P){N(z,z.id===$.main.id?"TAKEOVER_INCOMPLETE_MAIN_SLOT":"local_credential_unavailable");continue}X.push({id:z.id,label:q.label,handle:q.handle,credentialId:q.credentialId,recordVersion:v.recordVersion,bindingPersisted:q.source!=="legacy",localAuthFingerprint:M4(P.access,P.refresh),cacheCredential:v})}let H=K.at(0);if(H)throw new VJ(H.accountId,H.reason,K.map(({accountId:z,...q})=>q));return{accounts:X,toJSON:()=>({accounts:X.map(({id:z,credentialId:q,recordVersion:v,localAuthFingerprint:P})=>({id:z,credentialId:q,recordVersion:v,localAuthFingerprint:P}))}),toString:()=>"ClaustrumTakeoverPlan"}}var E9={"L|R|R|V":"LOCAL_SERVE","L|R|R|N":"LOCAL_SERVE","L|R|T|V":"REMAIN_DARK_PENDING_LOGIN","L|R|T|N":"REMAIN_DARK_PENDING_LOGIN","L|R|M|V":"REMAIN_DARK_PENDING_LOGIN","L|R|M|N":"REMAIN_DARK_PENDING_LOGIN","L|T|R|V":"REMAIN_DARK_PENDING_LOGIN","L|T|R|N":"REMAIN_DARK_PENDING_LOGIN","L|T|T|V":"REMAIN_DARK_PENDING_LOGIN","L|T|T|N":"REMAIN_DARK_PENDING_LOGIN","L|T|M|V":"REMAIN_DARK_PENDING_LOGIN","L|T|M|N":"REMAIN_DARK_PENDING_LOGIN","L|X|R|V":"FAIL_CLOSED","L|X|R|N":"FAIL_CLOSED","L|X|T|V":"FAIL_CLOSED","L|X|T|N":"FAIL_CLOSED","L|X|M|V":"FAIL_CLOSED","L|X|M|N":"FAIL_CLOSED","C|R|R|V":"TAKEOVER_INCOMPLETE_MAIN_REAL","C|R|R|N":"TAKEOVER_INCOMPLETE_VAULT_UNAVAILABLE","C|R|T|V":"TAKEOVER_INCOMPLETE_MAIN_REAL","C|R|T|N":"FAIL_CLOSED","C|R|M|V":"TAKEOVER_INCOMPLETE_MAIN_REAL","C|R|M|N":"FAIL_CLOSED","C|T|R|V":"RESUME_TAKEOVER","C|T|R|N":"FAIL_CLOSED","C|T|T|V":"CLAUSTRUM_SERVE","C|T|T|N":"FAIL_CLOSED","C|T|M|V":"RESUME_TAKEOVER","C|T|M|N":"FAIL_CLOSED","C|X|R|V":"TAKEOVER_INCOMPLETE_SLOT_ABSENT","C|X|R|N":"FAIL_CLOSED","C|X|T|V":"TAKEOVER_INCOMPLETE_SLOT_ABSENT","C|X|T|N":"FAIL_CLOSED","C|X|M|V":"TAKEOVER_INCOMPLETE_SLOT_ABSENT","C|X|M|N":"FAIL_CLOSED"};function z$($){if("mainSlot"in $){let Z=$.evidence==="unknown"?"V":$.evidence,W=new Set(["R","T","X"].map((X)=>E9[`${$.mode}|${X}|${$.fallbacks}|${Z}`]));if(W.size===1){let[X]=W;return{verdict:X??"FAIL_CLOSED",provisional:!0}}return{verdict:"PENDING_MAIN_SLOT",provisional:!0}}let J=E9[`${$.mode}|${$.main}|${$.fallbacks}|${$.evidence}`];if(!J)throw new G$("FAIL_CLOSED",$);if(J==="LOCAL_SERVE"||J==="CLAUSTRUM_SERVE")return{verdict:J};throw new G$(J,$)}async function pW($){let J=[],Z=async(W,X)=>{let K=await X();if(!K)throw new v9(W);J.push(K)};try{await Z("claustrum-mode-transition",()=>$.acquireTransition({name:"claustrum-mode-transition",path:$.storagePath})),await Z("manifest",()=>$.acquireManifest({path:$.manifestPath})),await Z(N4,()=>$.acquireRefresh({name:N4,path:$.storagePath}));for(let W of[...$.fallbackAccountIds].sort())await Z(`${W}-refresh`,()=>$.acquireRefresh({name:`${W}-refresh`,path:$.storagePath}))}catch(W){throw await Promise.all(J.reverse().map((X)=>X.release())),W}return{release:async()=>{for(let W of J.reverse())await W.release()}}}class b1 extends Error{stage;accountId;guidance;code="custody_transition_failed";constructor($,J,Z){super(`${J?`custody transition failed at ${$} for account ${J}`:`custody transition failed at ${$}`}${Z?` — ${Z}`:""}`);this.stage=$;this.accountId=J;this.guidance=Z}toJSON(){return{code:this.code,stage:this.stage,accountId:this.accountId,guidance:this.guidance}}}async function b9($,J){let Z=await pW(J.locks);try{if(await J.isCommitted($))return"unchanged";for(let K of $.accounts){let N=await J.getLocalAuth(K.id),H=k9(N,K.id==="main");if(!H||M4(H.access,H.refresh)!==K.localAuthFingerprint)throw new b1("reverify_fingerprint",K.id)}let W,X=!1;try{try{await J.writeManifestBindings($)}catch{throw new b1("write_manifest")}for(let H of $.accounts){if(H.id==="main")continue;W=H.id,await J.writeSidecarAccount(H)}let K=!1;try{K=await J.verifyTarget($)}catch{}if(!K)throw new b1("readback",W);try{X=await J.setMode("claustrum")==="changed"}catch{throw new b1("mode_commit")}let N=!1;try{N=await J.verifyCommitted($)}catch{}if(!N)throw new b1("post_commit_readback");return"changed"}catch(K){if(X)try{await J.setMode("local")}catch{throw new b1("post_commit_readback",void 0,"mode is claustrum and unverified — run `/claude-account local`")}if(K instanceof b1)throw K;throw new b1("write_sidecar",W)}}finally{await Z.release()}}function g9($){return $.setMode?$.setMode("local"):ZJ("local",$.path)}function uW($){return[...$.filter((Z)=>Z.guidance),...$.filter((Z)=>!Z.guidance)].map(({label:Z,reason:W,guidance:X})=>`${Z}: ${W}${X?` — ${X}`:""}`).join(`
2
+ `)}async function iW($,J){await dW(lW($),{recursive:!0});for(;;){let Z=await E4({name:N4,path:$,ttlMs:300000,now:J,renew:!0});if(Z)return Z;await new Promise((W)=>setTimeout(W,10))}}async function c9($,J){if(J==="local"){let K=await iW($.storagePath,$.now);return{text:await g9({path:$.storagePath}).finally(()=>K.release())==="changed"?"Claustrum mode set to local. Bound credentials remain inert until verified login.":"Claustrum mode already local. Bound credentials remain inert until verified login."}}if(!$.latestGetAuth)return{text:"Custody takeover refused: main auth is unavailable."};let Z=await $.loadStorage()??g0(),W=await $.getCache();if(!W)return{text:"Custody takeover refused: Claustrum is unavailable."};let X=rW({storagePath:$.storagePath,storage:Z,cache:W,latestGetAuth:$.latestGetAuth,now:$.now,fallbackManager:$.fallbackManager,debug:$.debug});try{let K=await h9(await X.preflightInput({id:"main",label:"main",enabled:!0},Z.accounts)),N=await b9(K,X.takeoverDeps(K));await $.refreshManifest();let H=K.accounts.map((z)=>z.label).join(", ");return{text:N==="changed"?`Claustrum custody committed for: ${H}.`:`Claustrum custody already committed for: ${H}.`}}catch(K){if(K instanceof VJ)return{text:`Custody takeover refused:
3
+ ${uW(K.refusals)}`};throw K}}function nW($){return new Promise((J,Z)=>{$(async()=>{await new Promise((W)=>J({release:async()=>W()}))}).catch(Z)})}function oW($,J){return new Promise((Z,W)=>{y9($,async(X,K)=>{await new Promise((N)=>{J({assertLease:X,nonce:K}),Z({release:async()=>{J(void 0),N()}})})}).catch(W)})}function rW($){let J=$.now,Z=typeof J==="function"?J:()=>J,W=$.fallbackManager,X,K=K$($.storage?.claustrum,process.env),N,H,z=()=>X??=Promise.resolve($.storage??M($.storagePath)),q=async()=>{let P=await z(),b=K$(P?.claustrum,process.env);if(!N||b!==K)K=b,N=new O$({path:b,provider:"anthropic",serve:"anthropic-auth"});return N},v=async(P,b)=>{let n=await $.cache.get(P,b);if("state"in n)return n;let E=n.credentialId??n.credential_id,I=typeof E==="string"?E:void 0,y={};try{y=JSON.parse(n.payload)}catch{}return{credentialId:I,recordVersion:n.recordVersion,access:typeof y.access_token==="string"?y.access_token:"",refresh:typeof y.refresh_token==="string"?y.refresh_token:"",expiresAt:n.expiresAtMs===null?null:n.expiresAtMs??0,state:"usable"}};return{hostAuth:{get:$.latestGetAuth},get manifestPath(){return K},async readBindings(P){let b=await(await q()).read(),n=b.status==="ready"?b.manifest:void 0;return P.flatMap((E)=>{let I=N$({account:{id:E.id,label:E.label,type:"oauth",refresh:"",claustrumHandle:E.claustrumHandle},manifest:n});if(I.status!=="resolved")return[];let y=I.source==="manifest"?I.credentialId:WJ(E.label??E.id);return[{accountId:E.id,label:E.label??E.id,handle:I.handle,credentialId:y,source:I.source}]})},cache:{get:(P,b)=>v(P,b.minTtlMs)},async preflightInput(P,b){let n=await z();return{now:Z(),storage:n,main:P,fallbacks:b.map((E)=>({...E,local:E.local??E})),hostAuth:{get:$.latestGetAuth},bindings:await this.readBindings([{...P,type:"oauth"},...b]),cache:this.cache,debug:$.debug}},locks:{storagePath:$.storagePath,get manifestPath(){return K},acquireTransition:({name:P,path:b})=>E4({name:P,path:b,ttlMs:300000,now:Z,renew:!0}),acquireManifest:({path:P})=>oW(P,(b)=>{H=b}),acquireRefresh:({name:P,path:b})=>P===N4||!W?E4({name:P,path:b,ttlMs:300000,now:Z,renew:!0}):nW((n)=>W.withAccountRefreshLock(P.replace(/-refresh$/,""),n)),withFallbackRefreshLock:(P,b)=>{if(W)return W.withAccountRefreshLock(P,b);return b()}},takeoverDeps(P){let b=async(E)=>{let y=await new O$({path:K,provider:"anthropic",serve:"anthropic-auth"}).read(),N0=y.status==="ready"?y.manifest:void 0;return E.accounts.map((J0)=>{let k=N$({account:{id:J0.id,label:J0.label,type:"oauth",refresh:""},manifest:N0});return k.status==="resolved"&&k.source==="manifest"&&k.handle===J0.handle&&k.credentialId===J0.credentialId?k:void 0})},n=async(E,I)=>{let y=await M($.storagePath);if(!y)return!1;let N0=await $.latestGetAuth();if(!V1(N0,"anthropic"))return!1;let J0=await b(E);if(J0.some((k)=>!k))return!1;for(let k of E.accounts){let o=await v(k.handle,R4);if(o.state!=="usable"||o.credentialId!==void 0&&o.credentialId!==k.credentialId||o.recordVersion<k.recordVersion||o.expiresAt!==null&&o.expiresAt<Z()+R4)return!1;if(k.id==="main")continue;let Y0=y.accounts.find((D0)=>D0.id===k.id);if(!Y0||!V1(Y0,"anthropic"))return!1}if(z$({mode:"C",main:"T",fallbacks:"T",evidence:"V"}).verdict!=="CLAUSTRUM_SERVE")return!1;if(!I)return!0;if(L0(y)!=="claustrum")return!1;return E.accounts.every((k,o)=>{let Y0=k.id==="main"?{id:"main",label:k.label,type:"oauth",refresh:_7("anthropic"),enabled:!0}:y.accounts.find((D0)=>D0.id===k.id);return Boolean(Y0&&W1(y,Y0,J0[o]))})};return{locks:{...this.locks,fallbackAccountIds:P.accounts.filter((E)=>E.id!=="main").map((E)=>E.id)},getLocalAuth:async(E)=>{if(E==="main")return $.latestGetAuth();return(await M($.storagePath))?.accounts.find((I)=>I.id===E)},isCommitted:(E)=>n(E,!0),writeManifestBindings:async(E)=>{if(!H)throw Error("custody manifest lock is not held");for(let I of E.accounts){if(I.id==="main"||I.bindingPersisted)continue;let y=await($.writeManifestEntryLocked??m9)({path:K,entry:{label:I.label,handle:I.handle,credentialId:I.credentialId}},H.assertLease,H.nonce);if(y.status!=="written"&&y.status!=="unchanged")throw Error("custody manifest write refused")}},writeSidecarAccount:async(E)=>{let I=await M($.storagePath),y=I?.accounts.find((N0)=>N0.id===E.id&&Z0(N0));if(!I||!y)throw Error("fallback missing");y.access="",y.refresh=_7("anthropic"),y.expires=0,await z1(I,$.storagePath,{accounts:[E.id]})},verifyTarget:(E)=>n(E,!1),verifyCommitted:(E)=>n(E,!0),setMode:(E)=>ZJ(E,$.storagePath)}}}}import{watch as sW}from"node:fs";import{stat as aW}from"node:fs/promises";import{basename as tW,dirname as eW,resolve as $j}from"node:path";var p9=Symbol.for("cortexkit.anthropic-auth.custody-manifest-watchers.v1"),Jj=25,Zj=2000;function d9(){let $=globalThis,J=$[p9];if(!J)J=new Map,$[p9]=J;return J}function Vj($,J){return $===null||$.toString()===J}function F7($){if($.timer)$.clearTimeoutImpl($.timer);$.timer=$.setTimeoutImpl(()=>{$.timer=void 0;for(let J of $.listeners.values())Promise.resolve().then(J).catch((Z)=>$.onError?.(Z))},$.debounceMs),$.timer.unref?.()}async function l9($,J){if(J.pollInFlight)return;J.pollInFlight=!0;try{let Z="missing";try{let W=await aW($,{bigint:!0});Z=`${W.dev}:${W.ino}:${W.size}:${W.mtimeNs}`}catch(W){if(W.code!=="ENOENT")throw W}if(J.signature!==Z)J.signature=Z,F7(J)}catch(Z){J.onError?.(Z)}finally{J.pollInFlight=!1}}function u9($,J){J.pollTimer=J.pollSetTimeoutImpl(async()=>{J.pollTimer=void 0,await l9($,J);let Z=d9().get($);if(Z===J&&Z.listeners.size>0)u9($,Z)},J.pollIntervalMs),J.pollTimer.unref?.()}function i9($,J,Z={}){let W=$j($),X=Symbol(W),K=d9(),N=K.get(W);if(!N){let z=Z.setTimeoutImpl??globalThis.setTimeout,q=Z.clearTimeoutImpl??globalThis.clearTimeout;N={listeners:new Map,pollInFlight:!1,setTimeoutImpl:z,clearTimeoutImpl:q,pollSetTimeoutImpl:Z.pollSetTimeoutImpl??z,pollClearTimeoutImpl:Z.pollClearTimeoutImpl??q,debounceMs:Z.debounceMs??Jj,pollIntervalMs:Z.pollIntervalMs??Zj,onError:Z.onError},K.set(W,N);let v=tW(W);try{let P=(Z.watchImpl??sW)(eW(W),{persistent:!1},(b,n)=>{if(!Vj(n,v))return;let E=K.get(W);if(E)F7(E)});N.watcher=P,P.on("error",(b)=>{let n=K.get(W);if(n?.watcher===P)n.watcher=void 0,P.close();N?.onError?.(b)})}catch(P){N.onError?.(P)}if(l9(W,N),N.pollIntervalMs>0)u9(W,N)}N.listeners.set(X,J),F7(N);let H=!1;return{release(){if(H)return;H=!0;let z=K.get(W);if(!z)return;if(z.listeners.delete(X),z.listeners.size>0)return;if(z.timer)z.clearTimeoutImpl(z.timer);if(z.pollTimer)z.pollClearTimeoutImpl(z.pollTimer);z.watcher?.close(),K.delete(W)}}}import{createHash as Wj}from"node:crypto";var s9=512,jj=1024,U$=32,Q$=32,YJ="[A-Za-z0-9_-]{1,128}",Yj="<cortexkit-internal-effort ",Xj="<cortexkit-internal-effort-plan ",a9=/^\s*(?:§[0-9]+§\s*)+$/,H$={low:"l",medium:"m",high:"h",xhigh:"x",max:"z"},q7=Object.fromEntries(Object.entries(H$).map(([$,J])=>[J,$])),P7="<cortexkit-internal-effort-v2 ",x7="<cortexkit-internal-effort-anchor-v1 ",f4="x-cortexkit-effort-plan";class S0 extends Error{constructor($){super($);this.name="EffortMarkerCorrelationError"}}function O4($){return typeof $==="object"&&$!==null&&!Array.isArray($)}function S7($){return $?.info?.role==="user"&&$.info.model?.providerID==="anthropic"&&n1($.info.model.modelID)}function n9($){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 I7($){return Wj("sha256").update($).digest("hex")}function Gj($){return I7(`scope:${$}`).slice(0,Q$)}function XJ($){return I7(`cortexkit-effort-v2:${$}`).slice(0,U$)}function zj($,J,Z){let W=H$[Z],X=`transition:${$}:${J}:${W}`;return`${P7}scope="${$}" boundary="${J}" effort="${W}" check="${XJ(X)}"/>`}function t9($){let J=$.match(new RegExp(`^${P7}scope="([0-9a-f]{${Q$}})" boundary="(${YJ})" effort="([lmhxz])" check="([0-9a-f]{${U$}})"/>$`));if(!J)return null;let[,Z,W,X,K]=J,N=q7[X??""];if(!Z||!W||!X||!K||!N)return null;let H=`transition:${Z}:${W}:${X}`;if(XJ(H)!==K)return null;return{scope:Z,boundary:W,effort:N,token:$}}function Kj($,J,Z,W){let X=H$[Z],K=`anchor:${$}:${J}:${X}:${W}`;return`${x7}scope="${$}" boundary="${J}" effort="${X}" digest="${W}" check="${XJ(K)}"/>`}function e9($){let J=$.match(new RegExp(`^${x7}scope="([0-9a-f]{${Q$}})" boundary="(${YJ})" effort="([lmhxz])" digest="([0-9a-f]{64})" check="([0-9a-f]{${U$}})"/>$`));if(!J)return null;let[,Z,W,X,K,N]=J,H=q7[X??""];if(!Z||!W||!X||!K||!N||!H)return null;let z=`anchor:${Z}:${W}:${X}:${K}`;if(XJ(z)!==N)return null;return{scope:Z,boundary:W,effort:H,digest:K,token:$}}function T7($){return $.trim()===""||a9.test($)}function o9(){return new RegExp(`(?:${Xj}nonce="[^"]+" baseline="[^"]+" count="[^"]+" sig="[0-9a-f]+"/>|${Yj}nonce="[^"]+" effort="[^"]+" sig="[0-9a-f]+"/>)`,"g")}function Nj(){return new RegExp(`${P7}scope="[0-9a-f]{${Q$}}" boundary="${YJ}" effort="[lmhxz]" check="[0-9a-f]{${U$}}"/>`,"g")}function Oj(){return new RegExp(`${x7}scope="[0-9a-f]{${Q$}}" boundary="${YJ}" effort="[lmhxz]" digest="[0-9a-f]{64}" check="[0-9a-f]{${U$}}"/>`,"g")}function $3($,J,Z){let W=0,X=$,K=$.replace(o9(),"");if(K!==$&&a9.test(K))W+=[...$.matchAll(o9())].length,X=K;return X=X.replace(Nj(),(N)=>{let H=t9(N);if(!H)return N;return J?.(H),W++,""}),X=X.replace(Oj(),(N)=>{let H=e9(N);if(!H)return N;return Z?.(H),W++,""}),{text:X,removed:W}}function Uj($){for(let J of $){if(!Array.isArray(J.parts))continue;J.parts=J.parts.flatMap((Z)=>{if(Z.type!=="text"||typeof Z.text!=="string"||!Z.text.includes("<cortexkit-internal-effort"))return[Z];let W=$3(Z.text);if(W.removed===0)return[Z];if(T7(W.text))return[];return Z.text=W.text,[Z]})}}function jJ($,J,Z,W,X){let K=X?`:${X}`:"",N=`plan:${$}:${H$[J]}:${Z.toString(36)}${K}`;return I7([N,...W].join(`
4
+ `))}function r9($){return["v2",$.scope,H$[$.baseline],$.markerCount.toString(36),$.digest].join(".")}function Qj($){if(!$)return null;let J=$.match(/^v2\.([0-9a-f]{32})\.([lmhxz])\.([0-9a-z]+)\.([0-9a-f]{64})$/);if(!J)return null;let[,Z,W,X,K]=J,N=q7[W??""],H=Number.parseInt(X??"",36);if(!Z||!N||!K||!Number.isSafeInteger(H)||H<0||H>s9)return null;return{scope:Z,baseline:N,markerCount:H,digest:K}}function J3($){let J=$.findLast((b)=>b.info?.role==="user");if(!J||!S7(J))return null;if(Uj($),!Array.isArray(J.parts)||!n9(J))return null;let Z=J.info?.sessionID,W=J.info?.id;if(typeof Z!=="string"||typeof W!=="string")throw new S0("Cannot correlate Fable 5.1 effort markers without session and message IDs");let X=Gj(Z),K=$.findLast((b)=>b.info?.role==="user"&&b.parts?.some((n)=>n.type==="compaction")),N=typeof K?.info?.id==="string"?K.info.id:void 0,H,z;if(K&&S7(K))H=A7(K.info?.model?.variant)??"high",z=H;let q=[];for(let b of $){let n=b.info;if(n?.role!=="user")continue;if(N&&typeof n.id==="string"&&n.id<=N)continue;if(!S7(b)||!n9(b))continue;let E=A7(n.model?.variant)??"high";if(!H){H=E,z=E;continue}if(E===z)continue;if(q.length>=s9)throw new S0("Too many Fable 5.1 effort changes in the active context");if(!Array.isArray(b.parts)||typeof n.id!=="string")throw new S0("Cannot mark a Fable 5.1 effort change without message identity");let I=zj(X,n.id,E);b.parts.push({type:"text",text:I}),q.push(I),z=E}if(!H)return null;let v=jJ(X,H,q.length,q,q.length>0?W:void 0),P=q.length>0?Kj(X,W,z??H,v):void 0;if(P)J.parts.push({type:"text",text:P});return{scope:X,baseline:H,markerCount:q.length,digest:v,transitionTokens:q,anchorToken:P,sessionId:Z,messageId:W}}function Hj($){let J=Array.isArray($.messages)?$.messages:[],Z=[];for(let W of J){let X=[],K=[];if(!O4(W)||W.role!=="user"){Z.push({value:W,transitions:X,anchors:K});continue}let N=(H)=>$3(H,(z)=>X.push(z),(z)=>K.push(z));if(typeof W.content==="string"){let H=N(W.content);W.content=H.removed>0&&T7(H.text)?"":H.text}else if(Array.isArray(W.content))W.content=W.content.flatMap((H)=>{if(!O4(H)||H.type!=="text"||typeof H.text!=="string")return[H];let z=N(H.text);if(z.removed>0&&T7(z.text))return[];return[{...H,text:z.text}]});Z.push({value:W,transitions:X,anchors:K})}return $.messages=Z.map((W)=>W.value),{messages:Z}}function Lj($,J){if(!J)return null;if(J.scope!==$.scope||J.baseline!==$.baseline||J.markerCount!==$.markerCount||J.digest!==$.digest||J.transitionTokens.length!==$.markerCount)throw new S0("Fable 5.1 effort marker request plan mismatch");let Z=J.transitionTokens.map((K)=>t9(K)),W=J.anchorToken?e9(J.anchorToken):null,X=Z.at(-1)?.effort??$.baseline;if(Z.some((K)=>K===null)||Z.some((K)=>K?.scope!==$.scope)||$.markerCount>0&&(!W||W.scope!==$.scope||W.boundary!==J.messageId||W.effort!==X||W.digest!==$.digest)||$.markerCount===0&&W!==null||$.digest!==jJ($.scope,$.baseline,$.markerCount,J.transitionTokens,J.markerCount>0?J.messageId:void 0))throw new S0("Fable 5.1 effort marker request plan mismatch");return{transitions:Z,anchor:W}}function Z3($,J,Z,W){if(!Array.isArray($.messages))return{found:0,inserted:0};let X=Qj(Z);if(Z&&!X)throw new S0("Missing or invalid internal Fable 5.1 effort request plan");let K=X?Lj(X,W):null,N=K?.transitions??null;if(!$.messages.some((k)=>{if(!O4(k)||k.role!=="user")return!1;if(typeof k.content==="string"&&k.content.includes("<cortexkit-internal-effort"))return!0;return Array.isArray(k.content)&&k.content.some((o)=>O4(o)&&o.type==="text"&&typeof o.text==="string"&&o.text.includes("<cortexkit-internal-effort"))})){if(!X)return{found:0,inserted:0};if(X.markerCount!==0)throw new S0(`Fable 5.1 effort marker correlation failed: expected ${X.markerCount}, found 0`);if(!N&&X.digest!==jJ(X.scope,X.baseline,0,[]))throw new S0("Fable 5.1 effort marker request plan mismatch");if(J&&n1($.model)){let k=O4($.output_config)?{...$.output_config}:{};k.effort=N?.at(-1)?.effort??X.baseline,$.output_config=k}return{found:0,inserted:0}}let z=Hj($),q=z.messages.flatMap((k)=>k.transitions),v=z.messages.flatMap((k)=>k.anchors),P=q.length;if(!X){if(P===0)return{found:0,inserted:0};throw new S0("Missing or invalid internal Fable 5.1 effort request plan")}for(let k of z.messages){if(k.transitions.length>1)throw new S0("Multiple internal Fable 5.1 effort markers on one user boundary");let o=k.transitions[0];if(o&&o.scope!==X.scope)throw new S0("Fable 5.1 effort marker scope mismatch");if(k.anchors.length>1)throw new S0("Multiple internal Fable 5.1 effort anchors on one user boundary")}let b=z.messages.findIndex((k)=>k.anchors.length===1),n=z.messages.findLastIndex((k)=>O4(k.value)&&k.value.role==="user"),E=v[0];if(X.markerCount>0&&(v.length!==1||b!==n||!E||E.scope!==X.scope))throw new S0("Missing or invalid internal Fable 5.1 effort anchor");if(X.markerCount===0&&v.length!==0)throw new S0("Unexpected internal Fable 5.1 effort anchor");if(K?.anchor&&E?.token!==K.anchor.token)throw new S0("Missing or invalid internal Fable 5.1 effort anchor");let I=X.baseline;if(N){let k=N.length-P;if(k<0)throw new S0(`Fable 5.1 effort marker correlation failed: expected ${X.markerCount}, found ${P}`);let o=N.slice(k);if(q.some((D0,M1)=>D0.token!==o[M1]?.token))throw new S0("Fable 5.1 effort marker non-prefix loss");let Y0=N.slice(0,k);if(E&&Y0.some((D0)=>D0.boundary===E.boundary))throw new S0("Fable 5.1 effort marker non-prefix loss");I=Y0.at(-1)?.effort??X.baseline}else{if(P!==X.markerCount)throw new S0(`Fable 5.1 effort marker correlation failed: expected ${X.markerCount}, found ${P}`);let k=jJ(X.scope,X.baseline,X.markerCount,q.map((Y0)=>Y0.token),E?.boundary);if(X.digest!==k)throw new S0("Fable 5.1 effort marker request plan mismatch");let o=q.at(-1)?.effort??X.baseline;if(E&&(E.effort!==o||E.digest!==X.digest))throw new S0("Missing or invalid internal Fable 5.1 effort anchor")}let y=J&&n1($.model),N0=0,J0=[];for(let k of z.messages){let o=k.transitions[0];if(o&&y)J0.push({role:"system",content:[],output_config:{effort:o.effort}}),N0++;J0.push(k.value)}if($.messages=J0,y){let k=O4($.output_config)?{...$.output_config}:{};k.effort=I,$.output_config=k}return{found:P,inserted:N0}}class C7{plans=new Map;record($){let J=this.key($.sessionId,$.messageId);this.plans.delete(J),this.plans.set(J,{...$,transitionTokens:[...$.transitionTokens]});while(this.plans.size>jj){let Z=this.plans.keys().next().value;if(typeof Z!=="string")break;this.plans.delete(Z)}}clear($,J){this.plans.delete(this.key($,J))}markHeaders($){let J=this.key($.sessionId,$.messageId),Z=this.plans.get(J);if(!Z)return!1;return $.headers[f4]=r9(Z),this.plans.delete(J),this.plans.set(J,Z),!0}resolveHeader($){if(!$)return;for(let J of this.plans.values())if(r9(J)===$)return J;return}key($,J){return`${$}\x00${J}`}}var V3="claude-opus-4-8",Dj=10,Bj=128,wj=86400000;function q1($){if(typeof $!=="string")return null;let J=W3($);if(k4(J))return"opus-5-5";if(T1(J))return"opus-5";if(J===M7||J.startsWith(`${M7}-`))return"fable-5-1";if(J===L$||J.startsWith(`${L$}-`))return"fable-5";return null}function v4($){return q1($)!==null}function _j($,J){let Z=q1(J);return Z?`${$}\x00${Z}`:null}function Fj($){try{let J=JSON.parse($);return typeof J.model==="string"?{body:J,model:J.model}:null}catch{return null}}class R7{now;recoveries=new Map;nextCycle=1;constructor($=Date.now){this.now=$}prune(){let $=this.now();for(let[J,Z]of this.recoveries)if($-Z.updatedAt>=wj)this.recoveries.delete(J);while(this.recoveries.size>Bj){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 Z=Fj(J);if(!Z||!v4(Z.model))return null;let W=_j($,Z.model);if(!W)return null;this.prune();let X=this.recoveries.get(W);if(!X||X.remaining<=0)return{sessionId:$,recoveryKey:W,requestedModel:Z.model,effectiveModel:Z.model,bodyText:J,downgraded:!1,standbyCacheAnchor:X?.standbyCacheAnchor};return X.updatedAt=this.now(),X.nextRequestSequence++,this.recoveries.delete(W),this.recoveries.set(W,X),Z.body.model=V3,{sessionId:$,recoveryKey:W,requestedModel:X.model,effectiveModel:V3,bodyText:JSON.stringify(Z.body),downgraded:!0,cycle:X.cycle,cacheAccountId:X.cacheAccountId,standbyCacheAnchor:X.standbyCacheAnchor,requestSequence:X.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 Z=this.recoveries.get($.recoveryKey);if(!Z||Z.cycle!==$.cycle)return!1;if(Z.cacheAccountId===J)return!1;return Z.cacheAccountId=J,Z.standbyCacheAnchor=void 0,Z.standbyAnchorSequence=0,Z.updatedAt=this.now(),$.cacheAccountId=J,$.standbyCacheAnchor=void 0,!0}activate($,J){if($.downgraded||!v4($.requestedModel))return this.remaining($);let Z={model:$.requestedModel,remaining:Dj,cycle:this.nextCycle++,cacheAccountId:J,standbyCacheAnchor:$.standbyCacheAnchor,nextRequestSequence:0,standbyAnchorSequence:0,updatedAt:this.now()};return this.recoveries.delete($.recoveryKey),this.recoveries.set($.recoveryKey,Z),this.prune(),Z.remaining}complete($,J){if(!$.downgraded||$.cycle==null||$.completed)return{counted:!1,remaining:this.remaining($)};$.completed=!0;let Z=this.recoveries.get($.recoveryKey);if(!Z||Z.cycle!==$.cycle||Z.remaining<=0)return{counted:!1,remaining:Z?.remaining??0};if(Z.remaining--,J&&(!Z.cacheAccountId||J.oauthAccountId===Z.cacheAccountId)&&$.requestSequence!=null&&$.requestSequence>=Z.standbyAnchorSequence)Z.standbyCacheAnchor=J,Z.standbyAnchorSequence=$.requestSequence;return Z.updatedAt=this.now(),this.recoveries.delete($.recoveryKey),this.recoveries.set($.recoveryKey,Z),{counted:!0,remaining:Z.remaining}}remaining($){return this.prune(),this.recoveries.get($.recoveryKey)?.remaining??0}}function g1($){return typeof $==="object"&&$!==null}function Sj($){if(Array.isArray($))return $;if(g1($)&&Array.isArray($.data))return $.data;return[]}function X3($){if(!g1($)||!g1($.info))return;return $.info}function j3($){let J=X3($);return typeof J?.role==="string"?J.role:void 0}function Aj($){let J=X3($);return typeof J?.id==="string"?J.id:void 0}function E7($){if(!g1($)||!g1($.info))return null;let J=$.info,Z=g1(J.model)?J.model:void 0,W=typeof J.agent==="string"?J.agent:void 0,X=typeof Z?.providerID==="string"?Z.providerID:typeof J.providerID==="string"?J.providerID:void 0,K=typeof Z?.modelID==="string"?Z.modelID:typeof Z?.id==="string"?Z.id:typeof J.modelID==="string"?J.modelID:void 0,N=typeof Z?.variant==="string"?Z.variant:typeof J.variant==="string"?J.variant:void 0;if(!W&&(!X||!K)&&!N)return null;let H={};if(W)H.agent=W;if(X&&K)H.model={providerID:X,modelID:K};if(N)H.variant=N;return H}function f7($,J){return{agent:$.agent??J.agent,model:$.model??J.model,variant:$.variant??J.variant,latestAssistantMessageId:$.latestAssistantMessageId??J.latestAssistantMessageId,latestUserMessageId:$.latestUserMessageId??J.latestUserMessageId}}function Y3($){return Boolean($.agent&&$.model&&$.variant)}async function GJ($,J){if(!$||!J)return null;let Z=$,W=[];if(typeof Z.session?.messages==="function")try{W=Sj(await Promise.resolve(Z.session.messages({path:{id:J},query:{limit:100}})))}catch{W=[]}let X,K;for(let H of W){let z=Aj(H);if(!z)continue;let q=j3(H);if(q==="assistant"&&(!X||z>X))X=z;if(q==="user"&&(!K||z>K))K=z}let N={latestAssistantMessageId:X,latestUserMessageId:K};for(let H=W.length-1;H>=0;H--){if(j3(W[H])!=="assistant")continue;let z=E7(W[H]);if(!z)continue;if(N=f7(N,z),Y3(N))return N}for(let H=W.length-1;H>=0;H--){let z=E7(W[H]);if(!z)continue;if(N=f7(N,z),Y3(N))return N}if(typeof Z.session?.get==="function")try{let H=await Promise.resolve(Z.session.get({path:{id:J}})),z=g1(H)&&g1(H.data)?H.data:g1(H)?H:void 0,q=z?E7({info:z}):null;if(q)N=f7(N,q)}catch{}if(!N.agent&&!N.model&&!N.variant&&!N.latestAssistantMessageId&&!N.latestUserMessageId)return null;return N}var G3="[lane start] — automated cache warm; no response needed.",zJ="x-cortexkit-lane-start",Tj=1000;function qj($){if(!$||typeof $!=="object")return!1;let J=$;return J.type==="text"&&J.text===G3&&J.synthetic===!0}async function z3($,J){let Z=$?.session;if(typeof Z?.promptAsync!=="function")throw Error("OpenCode plugin client does not support session.promptAsync");let W=await GJ($,J),X={noReply:!1,parts:[{type:"text",text:G3,synthetic:!0}]};if(W?.agent)X.agent=W.agent;if(W?.model)X.model=W.model;if(W?.variant)X.variant=W.variant;await Promise.resolve(Z.promptAsync({path:{id:J},body:X}))}class v7{#$=new Map;observeSyntheticMessage($){if(!$.parts.some(qj))return!1;let J=`${$.sessionId}\x00${$.messageId}`;if(!this.#$.has(J)&&this.#$.size>=Tj){let Z=this.#$.keys().next().value;if(Z!==void 0)this.#$.delete(Z)}return this.#$.set(J,$.sessionId),!0}markHeaders($){let J=`${$.sessionId}\x00${$.messageId}`;if(!this.#$.has(J))return!1;return this.#$.delete(J),$.headers[zJ]="1",!0}clearSession($){for(let[J,Z]of this.#$)if(Z===$)this.#$.delete(J)}}var KJ=new Map,NJ=new Map;function K3($,J){let Z=NJ.get($);if(Z?.fingerprint!==J.fingerprint||Z.marker!==J.marker)return;let W=KJ.get(J.fingerprint);if(W?.slots.delete($),W?.slots.size===0)W.manager.stop(),KJ.delete(J.fingerprint);NJ.delete($)}function N3($,J,Z){let W=U4($),X=KJ.get(W),K=X?.manager??J();if(X)Z.rebind(K);let N=NJ.get(Z.slot);if(N&&N.fingerprint!==W)K3(Z.slot,N);let H=X??{manager:K,slots:new Set};if(!X)KJ.set(W,H);let z={fingerprint:W,marker:Symbol(Z.slot)};return H.slots.add(Z.slot),NJ.set(Z.slot,z),{manager:K,release:()=>K3(Z.slot,z)}}function Q3($){let J=Math.floor($.retryAfterSeconds/60),Z=$.retryAfterSeconds%60,W=`Retry in ${J}m ${Z}s.`;return $.modelName?`${$.modelName} weekly limit reached, no routable accounts. ${W}`:`Killswitch: no routable accounts. ${W}`}function H3($){if(!$.requestModelId)return{isScopedDriven:!1};if(!o1($.mainQuota,$.storage))return{isScopedDriven:!1};let J=O3($.mainQuota,$.requestModelId);if(!J)return{isScopedDriven:!1};if(!Number.isFinite(J.remainingPercent))return{isScopedDriven:!1};let Z=U3($.storage);if(J.remainingPercent<=Z.scoped)return{isScopedDriven:!0,modelName:J.modelName,modelId:$.requestModelId};return{isScopedDriven:!1}}var r1=[],Pj=1,L3=new Map;function D3($){if(typeof $!=="string"||$.length===0)throw TypeError("sessionId is required")}function B3($,J){if(D3(J),r1.push({id:Pj++,type:"open-dialog",payload:$,sessionId:J}),r1.length>100)r1=r1.slice(r1.length-100)}function w3($,J){if(D3(J),L3.set(J,Date.now()),$>0)r1=r1.filter((Z)=>Z.id>$||Z.sessionId!==J);return r1.filter((Z)=>Z.id>$&&Z.sessionId===J)}function k7($){let J=Date.now(),Z=L3.get($)??0;return Z>0&&J-Z<3000}import{randomBytes as xj,timingSafeEqual as Ij}from"node:crypto";import{readFile as Cj,unlink as Mj}from"node:fs/promises";import{createServer as Rj}from"node:http";import{join as Ej}from"node:path";function fj($){return new Promise((J,Z)=>{let W=[],X=0;$.on("data",(K)=>{if(X+=K.length,X>1e6){$.destroy(),Z(Error("body too large"));return}W.push(K)}),$.on("end",()=>J(Buffer.concat(W).toString("utf8"))),$.on("error",Z)})}function vj($,J){if(!$?.startsWith("Bearer "))return!1;let Z=Buffer.from($.slice(7)),W=Buffer.from(J);return Z.length===W.length&&Ij(Z,W)}async function F3($){let J=xj(32).toString("hex"),Z=Rj((K,N)=>{W(K,N)});async function W(K,N){let H=(z,q)=>{N.writeHead(z,{"content-type":"application/json"}),N.end(JSON.stringify(q))};try{let z=K.url??"";if(K.method==="GET"&&z==="/health")return H(200,{ok:!0});if(K.method!=="POST"||!z.startsWith("/rpc/"))return H(404,{error:"not found"});if(!vj(K.headers.authorization,J))return H(401,{error:"unauthorized"});let q=z.slice(5),v=JSON.parse(await fj(K)||"{}");if(q==="pending-notifications"){if(typeof v.sessionId!=="string"||v.sessionId.length===0)return H(400,{error:"sessionId is required"});let P=$.drain(Number(v.lastReceivedId??0),v.sessionId);return H(200,{messages:P})}if(q==="apply"){let P=await $.apply(v);return H(200,P)}return H(404,{error:"unknown method"})}catch(z){if(!N.headersSent&&!N.writableEnded&&!N.destroyed)H(500,{error:z instanceof Error?z.message:String(z)})}}let X=await new Promise((K,N)=>{Z.on("error",N),Z.listen(0,"127.0.0.1",()=>{let H=Z.address();if(H&&typeof H==="object")K(H.port);else N(Error("no port"))})});Z.unref();try{await _3($.dir,{port:X,token:J,pid:process.pid})}catch(K){throw await new Promise((N)=>Z.close(()=>N())),K}return{port:X,token:J,async stop(){await new Promise((K)=>Z.close(()=>K()));try{let K=Ej($.dir,`port-${process.pid}.json`),N=JSON.parse(await Cj(K,"utf8"));if(N.port===X&&N.pid===process.pid)await Mj(K)}catch{}}}}async function S3($,J){let Z=globalThis,W=Z.__anthropicAuthRpcServers??new Map,X=Z.__anthropicAuthRpcServersPending??new Map;Z.__anthropicAuthRpcServers=W,Z.__anthropicAuthRpcServersPending=X;let K=X.get($)??Promise.resolve(),N,H=K.catch(()=>{}).then(async()=>{let q=W.get($);if(q){if(await q.stop(),W.get($)===q)W.delete($)}N=await J(),W.set($,N)});X.set($,H);try{await H}finally{if(X.get($)===H)X.delete($)}let z=N;if(!z)throw Error("RPC server failed to start");return{server:z,release:async()=>{if(W.get($)!==z)return;if(await z.stop(),W.get($)===z)W.delete($)}}}var q3="server-side-fallback-2026-07-01",P3="⁠",OJ="cortexkit-server-fallback-v1:";function _1($){return $!==null&&typeof $==="object"&&!Array.isArray($)?$:void 0}function h4($,J){let Z=$?.[J];return typeof Z==="string"?Z:void 0}function b4($){return typeof $==="string"&&$.length>0&&$.length<=128&&/^claude-[a-z0-9-]+$/i.test($)}function kj($){return`${OJ}${$.fromModel}|${$.toModel}`}function hj($){if(typeof $!=="string"||!$.startsWith(OJ))return null;let J=$.slice(OJ.length),Z=J.indexOf("|");if(Z<=0||Z!==J.lastIndexOf("|"))return null;let W=J.slice(0,Z),X=J.slice(Z+1);if(!b4(W)||!b4(X))return null;return{fromModel:W,toModel:X}}function bj($){if($.type!=="fallback")return null;let J=h4(_1($.from),"model"),Z=h4(_1($.to),"model");if(!b4(J)||!b4(Z))return null;return{fromModel:J,toModel:Z}}function gj($){return{type:"fallback",from:{model:$.fromModel},to:{model:$.toModel}}}function yj($,J){let Z=0,W=0;if(!Array.isArray($.messages))return{restoredMarkers:Z,droppedMarkers:W};for(let X of $.messages){let K=_1(X);if(K?.role!=="assistant"||!Array.isArray(K.content))continue;let N=[];for(let H of K.content){let z=_1(H);if(!(z?.type==="thinking"&&(z.thinking===P3||z.thinking==="")&&typeof z.signature==="string"&&z.signature.startsWith(OJ))){N.push(H);continue}let v=hj(z.signature);if(J&&v)N.push(gj(v)),Z++;else W++}K.content=N}return{restoredMarkers:Z,droppedMarkers:W}}function x3($){return $?.trim().toLowerCase()==="legacy"?"legacy":"server"}function I3($,J){let Z=J&&(v4($.model)||n1($.model)),W=yj($,Z);if(Z)$.fallbacks="default";else if($.fallbacks==="default")delete $.fallbacks;return{enabled:Z,...W}}function mj($){let J,Z=[];for(let X of $.split(/\r?\n/))if(X.startsWith("event:"))J=X.slice(6).trim();else if(X.startsWith("data:")){let K=X.slice(5);Z.push(K.startsWith(" ")?K.slice(1):K)}let W=Z.join(`
5
+ `);if(!W||W==="[DONE]")return{event:J};try{return{event:J,data:_1(JSON.parse(W))}}catch{return{event:J}}}function A3($){let J=$.indexOf(`
3
6
 
4
- `),W=N.indexOf(`\r
7
+ `),Z=$.indexOf(`\r
5
8
  \r
6
- `);if($===-1)return W===-1?null:{index:W,length:4};if(W===-1||$<W)return{index:$,length:2};return{index:W,length:4}}function n$(N,$){return`event: ${N}
7
- data: ${JSON.stringify($)}
9
+ `);if(J===-1)return Z===-1?null:{index:Z,length:4};if(Z===-1||J<Z)return{index:J,length:2};return{index:Z,length:4}}function T3($,J){return`event: ${$}
10
+ data: ${JSON.stringify(J)}
8
11
 
9
- `}function FW(N,$){return n$("content_block_start",{type:"content_block_start",index:N,content_block:{type:"thinking",thinking:r$}})+n$("content_block_delta",{type:"content_block_delta",index:N,delta:{type:"signature_delta",signature:QW($)}})}function AW(N,$){let W=J1(N),Y=J1($);if(W&&Y)return W===Y;return N===$}function t$(N){let $="",W=0,Y=!1,G="",j,_,Q,A=!1,u=!1,o=new Set,e=(s)=>{if(!Array.isArray(s?.iterations))return;for(let b of s.iterations){let J0=a0(b);if(J0?.type!=="fallback_message")continue;let i=m1(J0,"model");if(p1(i))Q=i}},d=(s)=>{if(A)return;A=!0;let b=_?.toModel??Q??(j&&!AW(N.requestedModel,j)?j:void 0);N.onOutcome?.({requestedModel:N.requestedModel,servedModel:j,targetModel:b,fallback:Boolean(b),handoff:Boolean(_),stopReason:s})},P0=(s,b)=>{let J0=EW(s),i=J0.data,F0=m1(i,"type")??J0.event;if(F0==="message_start"){let r=a0(i?.message),Y0=m1(r,"model");if(p1(Y0))j=Y0;e(a0(r?.usage))}else if(F0==="content_block_start"){let r=a0(i?.content_block),Y0=i?.index;if(r?.type==="tool_use"&&typeof Y0==="number"&&Number.isInteger(Y0)&&Y0>=0)o.add(Y0);let y0=r?BW(r):null;if(y0){if(_=y0,typeof Y0==="number"&&Number.isInteger(Y0)&&Y0>=0)return FW(Y0,y0)}}else if(F0==="content_block_stop"){let r=i?.index;if(typeof r==="number"&&o.delete(r))u=!0}else if(F0==="message_delta"){e(a0(i?.usage));let r=a0(i?.delta),Y0=m1(r,"stop_reason");if(Y0)d(Y0);if(Y0==="refusal"&&u&&o.size===0&&r&&N.onRefusalAfterToolUse&&N.onRefusalAfterToolUse()!==!1)return r.stop_reason="tool_use",`${J0.event?`event: ${J0.event}
10
- `:""}${i?`data: ${JSON.stringify(i)}
11
- `:""}${b}`}return s+b},Q0=()=>{let s="";while(!0){let b=i$($);if(!b)break;let J0=$.slice(0,b.index),i=$.slice(b.index,b.index+b.length);$=$.slice(b.index+b.length),W=new TextEncoder().encode($).byteLength,s+=P0(J0,i)}return s};return{pendingLength(){return W},push(s){let b="";if(Y){let i=G+s,F0=i$(i);if(!F0)return G=i.slice(-3),s;let r=F0.index+F0.length;b=s.slice(0,Math.max(0,r-G.length)),s=i.slice(r),Y=!1,G=""}if(!s)return b;let J0=new TextEncoder().encode(s).byteLength;if($+=s,W+=J0,b+=Q0(),N.maxPendingBytes!==void 0&&W>N.maxPendingBytes){let i=$;return $="",W=0,Y=!0,G=i.slice(-3),b+i}return b},flush(){if(Y)return G="","";let s=Q0();if(!$)return s;let b=P0($,"");return $="",W=0,s+b}}}import{createHash as SW}from"node:crypto";function e$(N,$){let W=new Map,Y=0,G=0,j=0,_=0,Q=0,A=(e)=>{let d=performance.now(),P0=N(e);return Q+=performance.now()-d,j++,P0};return{call:(e)=>{if(!$.enabled())return A(e);let d=W.get(e);if(d!==void 0)return G++,W.delete(e),W.set(e,d),d;let P0=A(e),Q0=e.length+P0.length;if(Q0>$.maxBytes)return P0;W.set(e,P0),Y+=Q0;while(Y>$.maxBytes&&W.size>1){let s=W.keys().next().value,b=W.get(s)??"";W.delete(s),Y-=s.length+b.length,_++}return P0},stats:()=>({hits:G,misses:j,evictions:_,entries:W.size,cacheBytes:Y,computeMsTotal:Q})}}var K1=8388608;function NJ(N){return`${zJ}${N.charAt(0).toUpperCase()}${N.slice(1)}`}function MJ(N){if(N==="StructuredOutput")return N;return`${N.charAt(0).toLowerCase()}${N.slice(1)}`}var qW=new Set(["callgraph","conflicts","delete","import","inspect","move","navigate","outline","refactor","safety","search","transform","zoom"]);function $J(N){let $=MJ(N);if($.startsWith("aft_"))return $;if(qW.has($))return`aft_${$}`;return null}function mN(N,$){let W=new Headers;if(N instanceof Request)N.headers.forEach((G,j)=>{W.set(j,G)});let Y=$?.headers;if(Y){if(Y instanceof Headers)Y.forEach((G,j)=>{W.set(j,G)});else if(Array.isArray(Y))for(let G of Y){let[j,_]=G;if(typeof _<"u")W.set(j,String(_))}else for(let[G,j]of Object.entries(Y))if(typeof j<"u")W.set(G,String(j))}return W}function pN(N){return N.set("anthropic-beta",GN(N.get("anthropic-beta"),[_J])),N}function u1(N,$,W={}){return BJ(N,$,{...W,extraBetas:W.body?.fallbacks==="default"?[o$]:void 0})}function MW(N){if(N.tools&&Array.isArray(N.tools))N.tools=N.tools.map(($)=>({...$,name:$.name?NJ($.name):$.name}));if(N.messages&&Array.isArray(N.messages))N.messages=N.messages.map(($)=>{if($.content&&Array.isArray($.content))$.content=$.content.map((W)=>{if(W.type==="tool_use"&&W.name)return{...W,name:NJ(W.name)};return W});return $});return JSON.stringify(CJ(N))}function M4(N){return N.replace(/"name"\s*:\s*"(mcp_)?([^"]+)"/g,($,W,Y)=>{if(W)return`"name": "${$J(Y)??MJ(Y)}"`;let G=$J(Y);return G?`"name": "${G}"`:$})}function JJ(N,$=!1){if($)return{ready:M4(N),pending:""};let W=N.length,Y='"name"',G=Math.max(0,N.length-Y.length+1);for(let _=G;_<N.length;_++)if(Y.startsWith(N.slice(_))){W=Math.min(W,_);break}let j=N.lastIndexOf(Y);if(j!==-1){let _=N.slice(j);if(/^"name"\s*(?::\s*(?:"[^"]*)?)?$/.test(_))W=Math.min(W,j)}if(W<N.length)return{ready:M4(N.slice(0,W)),pending:N.slice(W)};return{ready:M4(N),pending:""}}function f4(){if(!process.env.ANTHROPIC_BASE_URL?.trim())return!1;let N=process.env.ANTHROPIC_INSECURE?.trim();return N==="1"||N==="true"}function IJ(N){let $=N?.trim();if(!$)return null;try{let W=new URL($);if(W.protocol!=="http:"&&W.protocol!=="https:"||W.username||W.password)return null;return W}catch{return null}}function IW(){return IJ(process.env.ANTHROPIC_BASE_URL)}function cN(N,$={}){let W=null;try{if(typeof N==="string"||N instanceof URL)W=new URL(N.toString());else if(N instanceof Request)W=new URL(N.url)}catch{W=null}if(!W)return{input:N,url:null};let Y=W.href,G=$.baseURL?IJ($.baseURL):IW();if(G){if(W.protocol=G.protocol,W.host=G.host,$.baseURL)W.pathname=`${G.pathname.replace(/\/$/,"")}${W.pathname}`}if(W.pathname.endsWith("/v1/messages")&&!W.searchParams.has("beta"))W.searchParams.set("beta","true");if(W.href===Y)return{input:N,url:W};return{input:N instanceof Request?new Request(W.toString(),N):W,url:W}}function xW(N){let Y=N.split(/\n\n+/).filter((G)=>{if(G.includes(KJ))return!1;for(let j of DJ)if(G.includes(j))return!1;return!0}).join(`
12
+ `}function cj($,J){return T3("content_block_start",{type:"content_block_start",index:$,content_block:{type:"thinking",thinking:P3}})+T3("content_block_delta",{type:"content_block_delta",index:$,delta:{type:"signature_delta",signature:kj(J)}})}function pj($,J){let Z=q1($),W=q1(J);if(Z&&W)return Z===W;return $===J}function C3($){let J="",Z=0,W=!1,X="",K,N,H,z=!1,q=!1,v=new Set,P=(I)=>{if(!Array.isArray(I?.iterations))return;for(let y of I.iterations){let N0=_1(y);if(N0?.type!=="fallback_message")continue;let J0=h4(N0,"model");if(b4(J0))H=J0}},b=(I)=>{if(z)return;z=!0;let y=N?.toModel??H??(K&&!pj($.requestedModel,K)?K:void 0);$.onOutcome?.({requestedModel:$.requestedModel,servedModel:K,targetModel:y,fallback:Boolean(y),handoff:Boolean(N),stopReason:I})},n=(I,y)=>{let N0=mj(I),J0=N0.data,k=h4(J0,"type")??N0.event;if(k==="message_start"){let o=_1(J0?.message),Y0=h4(o,"model");if(b4(Y0))K=Y0;P(_1(o?.usage))}else if(k==="content_block_start"){let o=_1(J0?.content_block),Y0=J0?.index;if(o?.type==="tool_use"&&typeof Y0==="number"&&Number.isInteger(Y0)&&Y0>=0)v.add(Y0);let D0=o?bj(o):null;if(D0){if(N=D0,typeof Y0==="number"&&Number.isInteger(Y0)&&Y0>=0)return cj(Y0,D0)}}else if(k==="content_block_stop"){let o=J0?.index;if(typeof o==="number"&&v.delete(o))q=!0}else if(k==="message_delta"){P(_1(J0?.usage));let o=_1(J0?.delta),Y0=h4(o,"stop_reason");if(Y0)b(Y0);if(Y0==="refusal"&&q&&v.size===0&&o&&$.onRefusalAfterToolUse&&$.onRefusalAfterToolUse()!==!1)return o.stop_reason="tool_use",`${N0.event?`event: ${N0.event}
13
+ `:""}${J0?`data: ${JSON.stringify(J0)}
14
+ `:""}${y}`}return I+y},E=()=>{let I="";while(!0){let y=A3(J);if(!y)break;let N0=J.slice(0,y.index),J0=J.slice(y.index,y.index+y.length);J=J.slice(y.index+y.length),Z=new TextEncoder().encode(J).byteLength,I+=n(N0,J0)}return I};return{pendingLength(){return Z},push(I){let y="";if(W){let J0=X+I,k=A3(J0);if(!k)return X=J0.slice(-3),I;let o=k.index+k.length;y=I.slice(0,Math.max(0,o-X.length)),I=J0.slice(o),W=!1,X=""}if(!I)return y;let N0=new TextEncoder().encode(I).byteLength;if(J+=I,Z+=N0,y+=E(),$.maxPendingBytes!==void 0&&Z>$.maxPendingBytes){let J0=J;return J="",Z=0,W=!0,X=J0.slice(-3),y+J0}return y},flush(){if(W)return X="","";let I=E();if(!J)return I;let y=n(J,"");return J="",Z=0,I+y}}}import{createHash as dj}from"node:crypto";function M3($,J){let Z=new Map,W=0,X=0,K=0,N=0,H=0,z=(P)=>{let b=performance.now(),n=$(P);return H+=performance.now()-b,K++,n};return{call:(P)=>{if(!J.enabled())return z(P);let b=Z.get(P);if(b!==void 0)return X++,Z.delete(P),Z.set(P,b),b;let n=z(P),E=P.length+n.length;if(E>J.maxBytes)return n;Z.set(P,n),W+=E;while(W>J.maxBytes&&Z.size>1){let I=Z.keys().next().value,y=Z.get(I)??"";Z.delete(I),W-=I.length+y.length,N++}return n},stats:()=>({hits:X,misses:K,evictions:N,entries:Z.size,cacheBytes:W,computeMsTotal:H})}}var y1=8388608;function R3($){return`${p3}${$.charAt(0).toUpperCase()}${$.slice(1)}`}function QZ($){if($==="StructuredOutput")return $;return`${$.charAt(0).toLowerCase()}${$.slice(1)}`}var lj=new Set(["callgraph","conflicts","delete","import","inspect","move","navigate","outline","refactor","safety","search","transform","zoom"]);function E3($){let J=QZ($);if(J.startsWith("aft_"))return J;if(lj.has(J))return`aft_${J}`;return null}function _$($,J){let Z=new Headers;if($ instanceof Request)$.headers.forEach((X,K)=>{Z.set(K,X)});let W=J?.headers;if(W){if(W instanceof Headers)W.forEach((X,K)=>{Z.set(K,X)});else if(Array.isArray(W))for(let X of W){let[K,N]=X;if(typeof N<"u")Z.set(K,String(N))}else for(let[X,K]of Object.entries(W))if(typeof K<"u")Z.set(X,String(K))}return Z}function wJ($){return $.set("anthropic-beta",B$($.get("anthropic-beta"),[d3])),$}function m4($,J,Z={}){return DJ(J,"anthropic"),$Z($,J,{...Z,extraBetas:[...Z.body?.fallbacks==="default"?[q3]:[],...Z.body&&UZ(Z.body)?[NZ]:[],...Z.body&&KZ(Z.body)?[zZ]:[]]})}function uj($){if($.tools&&Array.isArray($.tools))$.tools=$.tools.map((J)=>({...J,name:J.name?R3(J.name):J.name}));if($.messages&&Array.isArray($.messages))$.messages=$.messages.map((J)=>{if(J.content&&Array.isArray(J.content))J.content=J.content.map((Z)=>{if(Z.type==="tool_use"&&Z.name)return{...Z,name:R3(Z.name)};return Z});return J});return JSON.stringify(JZ($))}function h7($){return $.replace(/"name"\s*:\s*"(mcp_)?([^"]+)"/g,(J,Z,W)=>{if(Z)return`"name": "${E3(W)??QZ(W)}"`;let X=E3(W);return X?`"name": "${X}"`:J})}function f3($,J=!1){if(J)return{ready:h7($),pending:""};let Z=$.length,W='"name"',X=Math.max(0,$.length-W.length+1);for(let N=X;N<$.length;N++)if(W.startsWith($.slice(N))){Z=Math.min(Z,N);break}let K=$.lastIndexOf(W);if(K!==-1){let N=$.slice(K);if(/^"name"\s*(?::\s*(?:"[^"]*)?)?$/.test(N))Z=Math.min(Z,K)}if(Z<$.length)return{ready:h7($.slice(0,Z)),pending:$.slice(Z)};return{ready:h7($),pending:""}}function y7(){if(!process.env.ANTHROPIC_BASE_URL?.trim())return!1;let $=process.env.ANTHROPIC_INSECURE?.trim();return $==="1"||$==="true"}function HZ($){let J=$?.trim();if(!J)return null;try{let Z=new URL(J);if(Z.protocol!=="http:"&&Z.protocol!=="https:"||Z.username||Z.password)return null;return Z}catch{return null}}function ij(){return HZ(process.env.ANTHROPIC_BASE_URL)}function F$($,J={}){let Z=null;try{if(typeof $==="string"||$ instanceof URL)Z=new URL($.toString());else if($ instanceof Request)Z=new URL($.url)}catch{Z=null}if(!Z)return{input:$,url:null};let W=Z.href,X=J.baseURL?HZ(J.baseURL):ij();if(X){let N=X.pathname.replace(/\/$/,""),H=Z.pathname;if(Z.protocol=X.protocol,Z.host=X.host,!(H===N||N!==""&&H.startsWith(`${N}/`))){let q=/\/v\d[^/]*$/.test(N);if(H==="/messages")Z.pathname=q?`${N}/messages`:`${N}/v1/messages`;else if(H==="/v1/messages"&&q)Z.pathname=`${N}/messages`;else Z.pathname=`${N}${H}`}else if(H===`${N}/messages`){if(!/\/v\d[^/]*$/.test(N))Z.pathname=`${N}/v1/messages`}}if(Z.pathname.endsWith("/v1/messages")&&!Z.searchParams.has("beta"))Z.searchParams.set("beta","true");if(Z.href===W)return{input:$,url:Z};return{input:$ instanceof Request?new Request(Z.toString(),$):Z,url:Z}}function nj($){let W=$.split(/\n\n+/).filter((X)=>{if(X.includes(l3))return!1;for(let K of i3)if(X.includes(K))return!1;return!0}).join(`
12
15
 
13
- `);for(let G of UJ)Y=Y.replace(G.match,G.replacement);return Y.trim()}var fW=8388608;function RW(){return process.env.OPENCODE_ANTHROPIC_AUTH_MEMO!=="0"}var vW=e$(xW,{maxBytes:fW,enabled:RW});function hN(N){return vW.call(N)}function a(N){return N!=null&&typeof N==="object"&&!Array.isArray(N)}function kW(N){let $={type:"text",text:c1};if(N==null)return[$];if(typeof N==="string"){let Y=hN(N);if(Y===c1)return[$];return[$,{type:"text",text:Y}]}if(a(N)){let Y=typeof N.type==="string"?N.type:"text",G=typeof N.text==="string"?N.text:"";return[$,{...N,type:Y,text:hN(G)}]}if(!Array.isArray(N))return[$];let W=N.map((Y)=>{if(typeof Y==="string")return{type:"text",text:hN(Y)};if(a(Y)&&Y.type==="text"&&typeof Y.text==="string")return{...Y,type:"text",text:hN(Y.text)};return{type:"text",text:String(Y)}});if(W[0]?.text===c1)return W;return[$,...W]}var xJ={type:"ephemeral",ttl:"1h"},WJ=20;function fJ(N){if(a(N.cache_control))return N.cache_control;if(a(N.cacheControl))return N.cacheControl;return null}function jN(N,$){if(!a(N))return!1;return delete N.cacheControl,N.cache_control=$?{...xJ}:{type:"ephemeral"},!0}function ZJ(N){if(!a(N))return;delete N.cache_control,delete N.cacheControl}function R4(N){if(Array.isArray(N))return N;if(typeof N==="string")return[{type:"text",text:N}];return null}function x4(N){if(Array.isArray(N))return N.map(x4);if(!a(N))return N;let $={};for(let W of Object.keys(N).sort()){if(W==="cache_control"||W==="cacheControl")continue;$[W]=x4(N[W])}return $}function RJ(N){if(!a(N))return;let $=R4(N.content);if(!$?.length)return;let W=x4({...N,content:$});return SW("sha256").update(JSON.stringify(W)).digest("hex")}function hW(N){if(!a(N))return!1;let $=R4(N.content);return Boolean($?.some((W)=>a(W)&&fJ(W)?.type==="ephemeral"))}function vJ(N){try{let $=JSON.parse(N);if(!Array.isArray($.messages))return;for(let W=$.messages.length-1;W>1;W--){let Y=$.messages[W];if(!a(Y)||Y.role!=="user"||!hW(Y))continue;let G=RJ(Y);if(!G)return;return{fingerprint:G,messageIndex:W,messageCount:$.messages.length}}return}catch{return}}function bN(N,$){if(!a(N))return;let W=fJ(N);if(W?.type!=="ephemeral")return;if($)W.ttl="1h";else delete W.ttl}function YJ(N,$){if(Array.isArray(N.system))for(let W of N.system)bN(W,$);else bN(N.system,$);if(!Array.isArray(N.messages))return;for(let W of N.messages)if(bN(W,$),a(W)&&Array.isArray(W.content))for(let Y of W.content)bN(Y,$)}function bW(N,$){if(Array.isArray(N.system))for(let W of N.system)$(W);else $(N.system);if(!Array.isArray(N.messages))return;for(let W of N.messages)if($(W),a(W)&&Array.isArray(W.content))for(let Y of W.content)$(Y)}function kJ(N){ZJ(N),bW(N,ZJ)}function yW(N){kJ(N),N.cache_control={...xJ}}function gW(N){return a(N)&&N.type!=="thinking"&&N.type!=="redacted_thinking"}function lN(N){let $=R4(N.content);if(!$?.length)return;let W=$.filter(gW);if(!W.length)return;return{content:$,cacheableBlocks:W}}function mW(N){if(!a(N))return!1;let $=lN(N);if(!$)return!1;return N.content=$.content,jN($.cacheableBlocks[0],!0)}function pW(N){if(!a(N))return!1;let $=lN(N);if(!$||$.cacheableBlocks.length<2)return!1;return N.content=$.content,jN($.cacheableBlocks[1],!0)}function yN(N){if(!a(N))return!1;let $=lN(N);if(!$)return!1;let W=$.cacheableBlocks[$.cacheableBlocks.length-1];return N.content=$.content,jN(W,!0)}function cW(N){if(!a(N))return!1;return(lN(N)?.cacheableBlocks.length??0)>1}function lW(N){if(!a(N))return 0;let $=N.content;if(Array.isArray($))return $.length;if($==null)return 0;return 1}function uW(N){let $=[],W=0;return N.forEach((Y,G)=>{let j=lW(Y);if(a(Y)&&Y.role==="user"&&j>0)$.push({index:G,blockPosition:W+j-1});W+=j}),$}function dW(N,$,W,Y){if(!Y)return;let G=[],j=$.find((_)=>_.index===Y.messageIndex&&_.index>1&&_.index<W.index);if(j)G.push(j);for(let _ of[...$].reverse()){if(_.index<=1||_.index>=W.index||_.index===j?.index)continue;G.push(_)}for(let _ of G)if(RJ(N[_.index])===Y.fingerprint)return _;return}function iW(N,$){let W=uW(N),Y=[...W].reverse().find((o)=>o.index>1);if(!Y)return{latest:void 0,bridge:void 0,standbyAnchorMatched:!1,standbyBridgeApplied:!1};let G=dW(N,W,Y,$),j=G?Y.blockPosition-G.blockPosition+1:void 0,_=G&&j!=null&&j>WJ?G:void 0,Q=[...W].reverse().find((o)=>o.index<Y.index),A=Q?Y.blockPosition-Q.blockPosition+1:0,u=Q&&Q.index>1&&A>WJ?Q:void 0;return{latest:Y,bridge:_??u,standbyAnchorMatched:Boolean(G),standbyDistanceBlocks:j,standbyBridgeApplied:Boolean(_)}}function I4(N){return a(N)&&typeof N.text==="string"?N.text:""}function nW(N){if(!Array.isArray(N.system))return;let $=N.system,W=0;if(I4($[W]).startsWith("x-anthropic-billing-header:"))W++;if(I4($[W])===c1)W++;let Y=W+1;if(Y>=$.length-1)return;let G=$[Y];if(!a(G))return;let j=$.slice(Y).map(I4).join(`
14
- `);$.splice(Y,$.length-Y,{...G,type:"text",text:j})}function jJ(N){if(Array.isArray(N.system)){let $=N.system.findIndex((G)=>a(G)&&G.text===c1),W=N.system.slice($>=0?$+1:0).filter(a),Y=W[W.length-1];jN(Y,!0)}else jN(N.system,!0)}function oW(N,$){if(kJ(N),nW(N),!Array.isArray(N.messages))return jJ(N),{standbyAnchorMatched:!1,standbyBridgeApplied:!1};let{latest:W,bridge:Y,standbyAnchorMatched:G,standbyDistanceBlocks:j,standbyBridgeApplied:_}=iW(N.messages,$);if(!Y)jJ(N);if(cW(N.messages[0]))mW(N.messages[0]),pW(N.messages[0]);else yN(N.messages[0]),yN(N.messages[1]);if(Y)yN(N.messages[Y.index]);if(W)yN(N.messages[W.index]);return{standbyAnchorMatched:G,standbyDistanceBlocks:j,standbyBridgeApplied:_,..._&&Y?{standbyBridgeMessageIndex:Y.index}:{}}}function rW(N){if(!Array.isArray(N.messages))return 0;let $=0;return N.messages=N.messages.filter((W)=>{if(!a(W)||!Array.isArray(W.content))return!0;if(W.role!=="assistant")return!0;let Y=W.content.filter((G)=>{if(!a(G)||G.type!=="thinking")return!0;if(!qJ(G.signature))return!0;return $+=1,!1});if(Y.length===W.content.length)return!0;return W.content=Y,Y.length>0}),$}function hJ(N){if(!EJ(N.model))return null;let $=Object.hasOwn(N,"thinking");return N.thinking={...TJ},{replacedExisting:$}}function sW(N){if(!AJ(N.model))return null;let $=Object.hasOwn(N,"thinking"),W=N.thinking;if(a(W)&&W.type==="disabled")return N.thinking={type:"disabled"},{replacedExisting:$,display:"disabled"};return N.thinking={...FJ},{replacedExisting:$,display:"summarized"}}function bJ(N){if(!s0(N.model))return null;let $=Object.hasOwn(N,"thinking"),W=N.thinking;if(a(W)&&W.type==="disabled"){N.thinking={type:"disabled"};let Y=N.output_config;if(a(Y)&&Y.effort==="xhigh")Y.effort="high";else if(a(Y)&&Y.effort==="max")Y.effort="high";return{replacedExisting:$,display:"disabled"}}return N.thinking={...SJ},{replacedExisting:$,display:"summarized"}}function yJ(N,$=YN){try{let W=JSON.parse(N);return W.model=$,delete W.speed,delete W.fallbacks,hJ(W),bJ(W),{ok:!0,bodyText:JSON.stringify(W)}}catch{return{ok:!1,reason:"body is not valid JSON"}}}function aW(N,$){if(!$.enabled)return YJ(N,!1),delete N.cache_control,delete N.cacheControl,{};if($.mode==="automatic")return yW(N),{};if($.mode==="hybrid")return oW(N,$.hybridStandbyAnchor);return YJ(N,!0),delete N.cacheControl,{}}function tW(N){if(!Array.isArray(N.messages))return;while(N.messages.length){let $=N.messages[N.messages.length-1];if(!a($)||$.role!=="assistant")break;N.messages.pop()}}function eW(N){if(!Array.isArray(N.messages))return 0;for(let $=N.messages.length-1;$>=0;$--){let W=N.messages[$];if(!a(W)||W.role!=="assistant")continue;if(!Array.isArray(W.content))return 0;if(!W.content.some((G)=>a(G)&&G.type==="tool_use"))return 0;let Y=0;while(W.content.length){let G=W.content[W.content.length-1];if(!a(G)||G.type!=="text"||typeof G.text!=="string"||G.text.trim())break;W.content.pop(),Y++}return Y}return 0}function O0(){return performance.now()}function u0(N){return Math.round(N*10)/10}function GJ(N){let $=0,W=0,Y=0,G=Array.isArray(N.messages)?N.messages:[];$=G.length;for(let j of G){if(!j||typeof j!=="object")continue;let _=j.content;if(!Array.isArray(_))continue;W+=_.length;for(let Q of _)if(Q&&typeof Q==="object"&&Q.type==="tool_use")Y++}return{messageCount:$,contentBlockCount:W,toolDefinitionCount:Array.isArray(N.tools)?N.tools.length:0,toolUseCount:Y,systemBlockCount:Array.isArray(N.system)?N.system.length:0}}async function uN(N,$={}){try{let W=O0(),Y=JSON.parse(N);$.perf?.("parse",{ms:u0(O0()-W),inputBytes:N.length,...GJ(Y)});let G=O0(),j=Array.isArray(Y.messages)?Y.messages.length:void 0;tW(Y);let _=eW(Y),Q=Array.isArray(Y.messages)?Y.messages.length:void 0;$.perf?.("strip_trailing_assistant",{ms:u0(O0()-G),removedMessages:typeof j==="number"&&typeof Q==="number"?j-Q:void 0,removedWhitespaceBlocks:_});let A=O0(),u=rW(Y),o=a$(Y,$.serverSideFallbackEnabled===!0),e=hJ(Y),d=sW(Y),P0=bJ(Y);if($.perf?.("model_normalize",{ms:u0(O0()-A),model:typeof Y.model==="string"?Y.model:void 0,fableMythosThinkingDisplay:e?"summarized":void 0,replacedFableMythosThinking:e?.replacedExisting??!1,sonnet5ThinkingDisplay:d?.display,replacedSonnet5Thinking:d?.replacedExisting??!1,opus5ThinkingDisplay:P0?.display,replacedOpus5Thinking:P0?.replacedExisting??!1,removedNonAnthropicThinking:u,serverSideFallbackEnabled:o.enabled,serverFallbackMarkersRestored:o.restoredMarkers,serverFallbackMarkersDropped:o.droppedMarkers,hasOutputConfig:Object.hasOwn(Y,"output_config")}),$.laneStart===!0)Y.max_tokens=1,delete Y.thinking;let Q0=O0(),s=Array.isArray(Y.messages)&&Y.messages.some((h1)=>h1.role==="user")?PJ(Y.messages,void 0,HJ):null;$.perf?.("billing_header",{ms:u0(O0()-Q0),hasBillingHeader:Boolean(s)});let b=O0();if(Y.system=kW(Y.system),$.perf?.("system_identity",{ms:u0(O0()-b),systemBlockCount:Array.isArray(Y.system)?Y.system.length:0}),s&&Array.isArray(Y.system))Y.system.unshift({type:"text",text:s});let J0=O0(),i=aW(Y,{enabled:$.cache1hEnabled??!1,mode:$.cache1hMode??"explicit",hybridStandbyAnchor:$.hybridStandbyAnchor});if($.perf?.("cache_strategy",{ms:u0(O0()-J0),enabled:$.cache1hEnabled??!1,mode:$.cache1hMode??"explicit",...i}),$.fastModeEnabled&&ON(Y.model))Y.speed="fast";else if(Y.speed==="fast")delete Y.speed;if($.cacheDiagnosticsPreviousMessageId!==void 0&&wJ(Y).split(",").includes(ZN))IN(Y,$.cacheDiagnosticsPreviousMessageId);let F0=O0();if($.identity)QJ(Y,$.identity);$.perf?.("metadata",{ms:u0(O0()-F0),hasAccountUuid:Boolean($.identity?.accountUuid)});let r=O0(),Y0=MW(Y);$.perf?.("prefix_tools_stringify",{ms:u0(O0()-r),outputBytesBeforeSign:Y0.length,...GJ(Y)});let y0=O0(),E=await LJ(Y0);return $.perf?.("cch_sign",{ms:u0(O0()-y0),outputBytes:E.length}),E}catch{return N}}var gJ=new TextEncoder;function N8(){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 gN(N,$){if(!$)return;N[$]=(N[$]??0)+1}function R1(N){return gJ.encode(N).byteLength}function F1(N){return N&&typeof N==="object"&&!Array.isArray(N)?N:void 0}function f0(N,$){let W=N?.[$];return typeof W==="string"?W:void 0}function $8(N,$){let W=N?.[$];return typeof W==="number"?W:void 0}function v4(N){if(!N.trim())return null;let $,W=[];for(let e of N.split(/\r?\n/)){if(e.startsWith("event:")){$=e.slice(6).trim();continue}if(e.startsWith("data:")){let d=e.slice(5);W.push(d.startsWith(" ")?d.slice(1):d)}}let Y=W.join(`
15
- `),G={event:$,rawBytes:R1(N),dataBytes:R1(Y)};if(!Y||Y==="[DONE]")return G.type=Y==="[DONE]"?"done":void 0,G.event??=G.type,G;let j;try{j=JSON.parse(Y)}catch{return G}let _=F1(j),Q=F1(_?.delta),A=F1(_?.content_block),u=F1(_?.message),o=F1(_?.usage)??F1(u?.usage);if(G.type=f0(_,"type"),G.event??=G.type,G.index=$8(_,"index"),G.contentBlockType=f0(A,"type"),G.deltaType=f0(Q,"type"),G.stopReason=f0(Q,"stop_reason")??f0(_,"stop_reason"),G.deltaType==="text_delta")G.textDeltaBytes=R1(f0(Q,"text")??"");if(G.deltaType==="thinking_delta")G.thinkingDeltaBytes=R1(f0(Q,"thinking")??"");if(G.deltaType==="input_json_delta")G.inputJsonDeltaBytes=R1(f0(Q,"partial_json")??"");if(G.deltaType==="signature_delta")G.signatureDeltaBytes=R1(f0(Q,"signature")??"");if(G.contentBlockType==="redacted_thinking")G.redactedThinkingBytes=R1(f0(A,"data")??"");if(o)G.usage=o,G.stopReason??=f0(u,"stop_reason");if(G.type==="message_start"&&u)G.message=u;return G}function l1(N){let $=N.indexOf(`
16
+ `);for(let X of n3)W=W.replace(X.match,X.replacement);return W.trim()}var oj=8388608;function rj(){return process.env.OPENCODE_ANTHROPIC_AUTH_MEMO!=="0"}var sj=M3(nj,{maxBytes:oj,enabled:rj});function UJ($){return sj.call($)}function z0($){return $!=null&&typeof $==="object"&&!Array.isArray($)}function aj($){let J={type:"text",text:g4};if($==null)return[J];if(typeof $==="string"){let W=UJ($);if(W===g4)return[J];return[J,{type:"text",text:W}]}if(z0($)){let W=typeof $.type==="string"?$.type:"text",X=typeof $.text==="string"?$.text:"";return[J,{...$,type:W,text:UJ(X)}]}if(!Array.isArray($))return[J];let Z=$.map((W)=>{if(typeof W==="string")return{type:"text",text:UJ(W)};if(z0(W)&&W.type==="text"&&typeof W.text==="string")return{...W,type:"text",text:UJ(W.text)};return{type:"text",text:String(W)}});if(Z[0]?.text===g4)return Z;return[J,...Z]}var LZ={type:"ephemeral",ttl:"1h"},v3=20;function DZ($){if(z0($.cache_control))return $.cache_control;if(z0($.cacheControl))return $.cacheControl;return null}function D$($,J){if(!z0($))return!1;return delete $.cacheControl,$.cache_control=J?{...LZ}:{type:"ephemeral"},!0}function k3($){if(!z0($))return;delete $.cache_control,delete $.cacheControl}function m7($){if(Array.isArray($))return $;if(typeof $==="string")return[{type:"text",text:$}];return null}function g7($){if(Array.isArray($))return $.map(g7);if(!z0($))return $;let J={};for(let Z of Object.keys($).sort()){if(Z==="cache_control"||Z==="cacheControl")continue;J[Z]=g7($[Z])}return J}function BZ($){if(!z0($))return;let J=m7($.content);if(!J?.length)return;let Z=g7({...$,content:J});return dj("sha256").update(JSON.stringify(Z)).digest("hex")}function tj($){if(!z0($))return!1;let J=m7($.content);return Boolean(J?.some((Z)=>z0(Z)&&DZ(Z)?.type==="ephemeral"))}function wZ($){try{let J=JSON.parse($);if(!Array.isArray(J.messages))return;for(let Z=J.messages.length-1;Z>1;Z--){let W=J.messages[Z];if(!z0(W)||W.role!=="user"||!tj(W))continue;let X=BZ(W);if(!X)return;return{fingerprint:X,messageIndex:Z,messageCount:J.messages.length}}return}catch{return}}function QJ($,J){if(!z0($))return;let Z=DZ($);if(Z?.type!=="ephemeral")return;if(J)Z.ttl="1h";else delete Z.ttl}function h3($,J){if(Array.isArray($.system))for(let Z of $.system)QJ(Z,J);else QJ($.system,J);if(!Array.isArray($.messages))return;for(let Z of $.messages)if(QJ(Z,J),z0(Z)&&Array.isArray(Z.content))for(let W of Z.content)QJ(W,J)}function ej($,J){if(Array.isArray($.system))for(let Z of $.system)J(Z);else J($.system);if(!Array.isArray($.messages))return;for(let Z of $.messages)if(J(Z),z0(Z)&&Array.isArray(Z.content))for(let W of Z.content)J(W)}function _Z($){k3($),ej($,k3)}function $Y($){_Z($),$.cache_control={...LZ}}function JY($){return z0($)&&$.type!=="thinking"&&$.type!=="redacted_thinking"}function _J($){let J=m7($.content);if(!J?.length)return;let Z=J.filter(JY);if(!Z.length)return;return{content:J,cacheableBlocks:Z}}function ZY($){if(!z0($))return!1;let J=_J($);if(!J)return!1;return $.content=J.content,D$(J.cacheableBlocks[0],!0)}function VY($){if(!z0($))return!1;let J=_J($);if(!J||J.cacheableBlocks.length<2)return!1;return $.content=J.content,D$(J.cacheableBlocks[1],!0)}function HJ($){if(!z0($))return!1;let J=_J($);if(!J)return!1;let Z=J.cacheableBlocks[J.cacheableBlocks.length-1];return $.content=J.content,D$(Z,!0)}function WY($){if(!z0($))return!1;return(_J($)?.cacheableBlocks.length??0)>1}function jY($){if(!z0($))return 0;let J=$.content;if(Array.isArray(J))return J.length;if(J==null)return 0;return 1}function YY($){let J=[],Z=0;return $.forEach((W,X)=>{let K=jY(W);if(z0(W)&&W.role==="user"&&K>0)J.push({index:X,blockPosition:Z+K-1});Z+=K}),J}function XY($,J,Z,W){if(!W)return;let X=[],K=J.find((N)=>N.index===W.messageIndex&&N.index>1&&N.index<Z.index);if(K)X.push(K);for(let N of[...J].reverse()){if(N.index<=1||N.index>=Z.index||N.index===K?.index)continue;X.push(N)}for(let N of X)if(BZ($[N.index])===W.fingerprint)return N;return}function GY($,J){let Z=YY($),W=[...Z].reverse().find((v)=>v.index>1);if(!W)return{latest:void 0,bridge:void 0,standbyAnchorMatched:!1,standbyBridgeApplied:!1};let X=XY($,Z,W,J),K=X?W.blockPosition-X.blockPosition+1:void 0,N=X&&K!=null&&K>v3?X:void 0,H=[...Z].reverse().find((v)=>v.index<W.index),z=H?W.blockPosition-H.blockPosition+1:0,q=H&&H.index>1&&z>v3?H:void 0;return{latest:W,bridge:N??q,standbyAnchorMatched:Boolean(X),standbyDistanceBlocks:K,standbyBridgeApplied:Boolean(N)}}function b7($){return z0($)&&typeof $.text==="string"?$.text:""}function zY($){if(!Array.isArray($.system))return;let J=$.system,Z=0;if(b7(J[Z]).startsWith("x-anthropic-billing-header:"))Z++;if(b7(J[Z])===g4)Z++;let W=Z+1;if(W>=J.length-1)return;let X=J[W];if(!z0(X))return;let K=J.slice(W).map(b7).join(`
17
+ `);J.splice(W,J.length-W,{...X,type:"text",text:K})}function b3($){if(Array.isArray($.system)){let J=$.system.findIndex((X)=>z0(X)&&X.text===g4),Z=$.system.slice(J>=0?J+1:0).filter(z0),W=Z[Z.length-1];D$(W,!0)}else D$($.system,!0)}function KY($,J){if(_Z($),zY($),!Array.isArray($.messages))return b3($),{standbyAnchorMatched:!1,standbyBridgeApplied:!1};let{latest:Z,bridge:W,standbyAnchorMatched:X,standbyDistanceBlocks:K,standbyBridgeApplied:N}=GY($.messages,J);if(!W)b3($);if(WY($.messages[0]))ZY($.messages[0]),VY($.messages[0]);else HJ($.messages[0]),HJ($.messages[1]);if(W)HJ($.messages[W.index]);if(Z)HJ($.messages[Z.index]);return{standbyAnchorMatched:X,standbyDistanceBlocks:K,standbyBridgeApplied:N,...N&&W?{standbyBridgeMessageIndex:W.index}:{}}}function NY($){if(!Array.isArray($.messages))return 0;let J=0;return $.messages=$.messages.filter((Z)=>{if(!z0(Z)||!Array.isArray(Z.content))return!0;if(Z.role!=="assistant")return!0;let W=Z.content.filter((X)=>{if(!z0(X)||X.type!=="thinking")return!0;if(!GZ(X.signature))return!0;return J+=1,!1});if(W.length===Z.content.length)return!0;return Z.content=W,W.length>0}),J}function FZ($){if(!VZ($.model))return null;let J=Object.hasOwn($,"thinking");if($.thinking={...ZZ},H4($.model)){let Z=$.tool_choice;if(z0(Z)&&(Z.type==="any"||Z.type==="tool"))delete $.tool_choice}return{replacedExisting:J}}function OY($){if(!jZ($.model))return null;let J=Object.hasOwn($,"thinking"),Z=$.thinking;if(z0(Z)&&Z.type==="disabled")return $.thinking={type:"disabled"},{replacedExisting:J,display:"disabled"};return $.thinking={...WZ},{replacedExisting:J,display:"summarized"}}function SZ($){if(k4($.model)){let W=Object.hasOwn($,"thinking");return $.thinking={...XZ},{replacedExisting:W,display:"summarized"}}if(!T1($.model))return null;let J=Object.hasOwn($,"thinking"),Z=$.thinking;if(z0(Z)&&Z.type==="disabled"){$.thinking={type:"disabled"};let W=$.output_config;if(z0(W)&&W.effort==="xhigh")W.effort="high";else if(z0(W)&&W.effort==="max")W.effort="high";return{replacedExisting:J,display:"disabled"}}return $.thinking={...YZ},{replacedExisting:J,display:"summarized"}}function AZ($,J=L$){try{let Z=JSON.parse($);return Z.model=J,delete Z.speed,delete Z.fallbacks,a3(Z),FZ(Z),SZ(Z),{ok:!0,bodyText:JSON.stringify(Z)}}catch{return{ok:!1,reason:"body is not valid JSON"}}}function UY($,J){if(!J.enabled)return h3($,!1),delete $.cache_control,delete $.cacheControl,{};if(J.mode==="automatic")return $Y($),{};if(J.mode==="hybrid")return KY($,J.hybridStandbyAnchor);return h3($,!0),delete $.cacheControl,{}}function QY($){if(!Array.isArray($.messages))return;while($.messages.length){let J=$.messages[$.messages.length-1];if(!z0(J)||J.role!=="assistant")break;$.messages.pop()}}function HY($){if(!Array.isArray($.messages))return 0;for(let J=$.messages.length-1;J>=0;J--){let Z=$.messages[J];if(!z0(Z)||Z.role!=="assistant")continue;if(!Array.isArray(Z.content))return 0;if(!Z.content.some((X)=>z0(X)&&X.type==="tool_use"))return 0;let W=0;while(Z.content.length){let X=Z.content[Z.content.length-1];if(!z0(X)||X.type!=="text"||typeof X.text!=="string"||X.text.trim())break;Z.content.pop(),W++}return W}return 0}var LY=1000,DY=new o3(LY);function BY($,J,Z){return DY.resolve($,J,!Z)}function _0(){return performance.now()}function U1($){return Math.round($*10)/10}function g3($){let J=0,Z=0,W=0,X=Array.isArray($.messages)?$.messages:[];J=X.length;for(let K of X){if(!K||typeof K!=="object")continue;let N=K.content;if(!Array.isArray(N))continue;Z+=N.length;for(let H of N)if(H&&typeof H==="object"&&H.type==="tool_use")W++}return{messageCount:J,contentBlockCount:Z,toolDefinitionCount:Array.isArray($.tools)?$.tools.length:0,toolUseCount:W,systemBlockCount:Array.isArray($.system)?$.system.length:0}}async function FJ($,J={}){try{let Z=_0(),W=JSON.parse($);J.perf?.("parse",{ms:U1(_0()-Z),inputBytes:$.length,...g3(W)});let X=_0(),K=Array.isArray(W.messages)?W.messages.length:void 0;QY(W);let N=HY(W),H=Array.isArray(W.messages)?W.messages.length:void 0;J.perf?.("strip_trailing_assistant",{ms:U1(_0()-X),removedMessages:typeof K==="number"&&typeof H==="number"?K-H:void 0,removedWhitespaceBlocks:N});let z=_0(),q=NY(W),v=I3(W,J.serverSideFallbackEnabled===!0),P=FZ(W),b=OY(W),n=SZ(W);if(J.perf?.("model_normalize",{ms:U1(_0()-z),model:typeof W.model==="string"?W.model:void 0,fableMythosThinkingDisplay:P?"summarized":void 0,replacedFableMythosThinking:P?.replacedExisting??!1,sonnet5ThinkingDisplay:b?.display,replacedSonnet5Thinking:b?.replacedExisting??!1,opus5ThinkingDisplay:n?.display,replacedOpus5Thinking:n?.replacedExisting??!1,removedNonAnthropicThinking:q,serverSideFallbackEnabled:v.enabled,serverFallbackMarkersRestored:v.restoredMarkers,serverFallbackMarkersDropped:v.droppedMarkers,hasOutputConfig:Object.hasOwn(W,"output_config")}),J.laneStart===!0)W.max_tokens=1,delete W.thinking;Z3(W,J.midConversationEffortEnabled===!0,J.midConversationEffortPlan,J.midConversationEffortResolvedPlan),OZ(W,J.thinkingPrefixMismatchBehavior??"account-default");let E=_0(),I=Array.isArray(W.messages)&&W.messages.some((c1)=>c1.role==="user")?s3(W.messages,void 0,u3,J.sessionId?BY(J.sessionId,W.messages,J.laneStart===!0):void 0,J.billingLineage):null;J.perf?.("billing_header",{ms:U1(_0()-E),hasBillingHeader:Boolean(I)});let y=_0();if(W.system=aj(W.system),J.perf?.("system_identity",{ms:U1(_0()-y),systemBlockCount:Array.isArray(W.system)?W.system.length:0}),I&&Array.isArray(W.system))W.system.unshift({type:"text",text:I});let N0=_0(),J0=UY(W,{enabled:J.cache1hEnabled??!1,mode:J.cache1hMode??"explicit",hybridStandbyAnchor:J.hybridStandbyAnchor});if(J.perf?.("cache_strategy",{ms:U1(_0()-N0),enabled:J.cache1hEnabled??!1,mode:J.cache1hMode??"explicit",...J0}),J.fastModeEnabled&&w$(W.model))W.speed="fast";else if(W.speed==="fast")delete W.speed;if(J.cacheDiagnosticsPreviousMessageId!==void 0&&e3(W).split(",").includes(Y$))e$(W,J.cacheDiagnosticsPreviousMessageId);let k=_0();if(J.identity)t3(W,J.identity);J.perf?.("metadata",{ms:U1(_0()-k),hasAccountUuid:Boolean(J.identity?.accountUuid)});let o=_0();if(J.modelRemapEnabled===!0)BJ(W);let Y0=uj(W);J.perf?.("prefix_tools_stringify",{ms:U1(_0()-o),outputBytesBeforeSign:Y0.length,...g3(W)});let D0=_0(),M1=await r3(Y0);return J.perf?.("cch_sign",{ms:U1(_0()-D0),outputBytes:M1.length}),M1}catch(Z){if(Z instanceof S0)throw Z;return $}}var TZ=new TextEncoder;function wY(){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 LJ($,J){if(!J)return;$[J]=($[J]??0)+1}function Q4($){return TZ.encode($).byteLength}function P1($){return $&&typeof $==="object"&&!Array.isArray($)?$:void 0}function l0($,J){let Z=$?.[J];return typeof Z==="string"?Z:void 0}function _Y($,J){let Z=$?.[J];return typeof Z==="number"?Z:void 0}function c7($){if(!$.trim())return null;let J,Z=[];for(let P of $.split(/\r?\n/)){if(P.startsWith("event:")){J=P.slice(6).trim();continue}if(P.startsWith("data:")){let b=P.slice(5);Z.push(b.startsWith(" ")?b.slice(1):b)}}let W=Z.join(`
18
+ `),X={event:J,rawBytes:Q4($),dataBytes:Q4(W)};if(!W||W==="[DONE]")return X.type=W==="[DONE]"?"done":void 0,X.event??=X.type,X;let K;try{K=JSON.parse(W)}catch{return X}let N=P1(K),H=P1(N?.delta),z=P1(N?.content_block),q=P1(N?.message),v=P1(N?.usage)??P1(q?.usage);if(X.type=l0(N,"type"),X.event??=X.type,X.index=_Y(N,"index"),X.contentBlockType=l0(z,"type"),X.deltaType=l0(H,"type"),X.stopReason=l0(H,"stop_reason")??l0(N,"stop_reason"),X.deltaType==="text_delta")X.textDeltaBytes=Q4(l0(H,"text")??"");if(X.deltaType==="thinking_delta")X.thinkingDeltaBytes=Q4(l0(H,"thinking")??"");if(X.deltaType==="input_json_delta")X.inputJsonDeltaBytes=Q4(l0(H,"partial_json")??"");if(X.deltaType==="signature_delta")X.signatureDeltaBytes=Q4(l0(H,"signature")??"");if(X.contentBlockType==="redacted_thinking")X.redactedThinkingBytes=Q4(l0(z,"data")??"");if(v)X.usage=v,X.stopReason??=l0(q,"stop_reason");if(X.type==="message_start"&&q)X.message=q;return X}function y4($){let J=$.indexOf(`
16
19
 
17
- `),W=N.indexOf(`\r
20
+ `),Z=$.indexOf(`\r
18
21
  \r
19
- `);if($===-1)return W===-1?null:{index:W,length:4};if(W===-1||$<W)return{index:$,length:2};return{index:W,length:4}}function OJ(N,$,W,Y){if(!$||N.disabled)return;N.pending+=$;while(!0){let G=l1(N.pending);if(!G)break;let j=N.pending.slice(0,G.index);N.pending=N.pending.slice(G.index+G.length);let _=v4(j);if(!_)continue;if(N.events++,gN(N.eventCounts,_.event??"unknown"),gN(N.typeCounts,_.type),gN(N.deltaTypeCounts,_.deltaType),gN(N.contentBlockTypeCounts,_.contentBlockType),N.textDeltaBytes+=_.textDeltaBytes??0,N.thinkingDeltaBytes+=_.thinkingDeltaBytes??0,N.inputJsonDeltaBytes+=_.inputJsonDeltaBytes??0,N.signatureDeltaBytes+=_.signatureDeltaBytes??0,N.redactedThinkingBytes+=_.redactedThinkingBytes??0,N.last=_,Y?.(_),_.dataBytes>0&&!_.type&&!_.event)N.parseErrors++}if(gJ.encode(N.pending).byteLength>W)N.pending="",N.disabled=!0,N.pendingOverflowCount++}function J8(){return{pending:"",completed:!1,disabled:!1,resyncCarry:""}}function W8(N,$,W){if(!$||N.completed)return null;if(N.disabled){let G=N.resyncCarry+$,j=l1(G);if(!j)return N.resyncCarry=G.slice(-3),null;if(N.disabled=!1,N.resyncCarry="",$=G.slice(j.index+j.length),!$)return null}N.pending+=$;let Y=null;while(!0){let G=l1(N.pending);if(!G)break;let j=N.pending.slice(0,G.index);N.pending=N.pending.slice(G.index+G.length);let _=v4(j);if(_?.type!=="message_delta"||!_.stopReason)continue;N.completed=!0,Y??=_.stopReason==="refusal"?{type:"content-filter"}:{type:"complete",finishReason:_.stopReason}}if(new TextEncoder().encode(N.pending).byteLength>W){let G=N.pending;N.pending="",N.disabled=!0,N.resyncCarry=G.slice(-3)}return Y}function Z8(){return{pending:"",disabled:!1}}function XJ(N){let $=v4(N);if($?.type!=="message_delta"||$.stopReason!=="max_tokens")return N;return N.replace(/("stop_reason"\s*:\s*)"max_tokens"/,'$1"end_turn"')}function Y8(N,$,W,Y=!1){if(!$&&!Y)return"";if(N.disabled)return $;if(new TextEncoder().encode(N.pending+$).byteLength>W){let j=N.pending+$;return N.pending="",N.disabled=!0,j}N.pending+=$;let G="";while(!0){let j=l1(N.pending);if(!j)break;let _=N.pending.slice(0,j.index),Q=N.pending.slice(j.index,j.index+j.length);N.pending=N.pending.slice(j.index+j.length),G+=XJ(_),G+=Q}if(Y&&N.pending)G+=XJ(N.pending),N.pending="";return G}function j8(){return{pending:"",disabled:!1,resyncCarry:""}}function G8(N,$){let W=N?.toLowerCase(),Y=$.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 O8(N,$){let W=N?`${N}: ${$}`:$,Y=Error(`Anthropic stream error: ${W}`);if(Y.code="ECONNRESET",Y.syscall="anthropic-sse",N)Y.providerErrorType=N;return Y}function X8(N){let $=s0(N)?"Opus 5":"Fable",W=Error(`${$} 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 V8(N){if(!N.includes("error"))return null;let $,W=[];for(let u of N.split(/\r?\n/)){if(u.startsWith("event:")){$=u.slice(6).trim();continue}if(u.startsWith("data:")){let o=u.slice(5);W.push(o.startsWith(" ")?o.slice(1):o)}}let Y=W.join(`
20
- `);if(!Y||Y==="[DONE]")return null;let G;try{G=JSON.parse(Y)}catch{return null}let j=F1(G);if($!=="error"&&f0(j,"type")!=="error")return null;let _=F1(j?.error),Q=f0(_,"type")??f0(_,"code")??void 0,A=f0(_,"message")??f0(j,"message")??Q??"Anthropic stream error";if(!G8(Q,A))return null;return O8(Q,A)}function VJ(N,$,W){if(!$)return null;if(N.disabled){let G=N.resyncCarry+$,j=l1(G);if(!j)return N.resyncCarry=G.slice(-3),null;if(N.disabled=!1,N.resyncCarry="",$=G.slice(j.index+j.length),!$)return null}N.pending+=$;let Y=null;while(!0){let G=l1(N.pending);if(!G)break;let j=N.pending.slice(0,G.index);N.pending=N.pending.slice(G.index+G.length);let _=V8(j);Y??=_}if(new TextEncoder().encode(N.pending).byteLength>W){let G=N.pending;N.pending="",N.disabled=!0,N.resyncCarry=G.slice(-3)}return Y}function z8(N){return{sseEvents:N.events,ssePendingChars:N.pending.length,ssePendingOverflowCount:N.pendingOverflowCount,sseParseErrors:N.parseErrors,sseEventCounts:{...N.eventCounts},sseTypeCounts:{...N.typeCounts},sseDeltaTypeCounts:{...N.deltaTypeCounts},sseContentBlockTypeCounts:{...N.contentBlockTypeCounts},sseTextDeltaBytes:N.textDeltaBytes,sseThinkingDeltaBytes:N.thinkingDeltaBytes,sseInputJsonDeltaBytes:N.inputJsonDeltaBytes,sseSignatureDeltaBytes:N.signatureDeltaBytes,sseRedactedThinkingBytes:N.redactedThinkingBytes,sseLastEvent:N.last?{...N.last}:void 0}}function mJ(N,$={}){if(!N.body)return N;let W=N.body.getReader(),Y=new TextDecoder,G=new TextEncoder,j=$.responseMode==="json",_="",Q=0,A=0,u=0,o=0,e=0,d=!1,P0=!1,Q0=O0(),s=O0(),b=$.perf||$.onMessageStart||$.onMessageDelta?N8():void 0,J0="",i=0,F0=!1,r=(V0)=>{if(!V0)return;try{V0()}catch{}},Y0=j8(),y0=$.onContentFilter||$.onComplete?J8():void 0,E=$.laneStart&&$.laneStartOAuthServed!==!1?Z8():void 0,h1=!1,S1=!1,b1=(V0=!1)=>{if(!$.onContentFilter)return!1;if(!h1)h1=!0,S1=$.onContentFilter({completedToolUse:V0})!==!1;return S1},i0=$.serverSideFallbackModel?t$({requestedModel:$.serverSideFallbackModel,maxPendingBytes:K1,onOutcome:$.onServerSideFallbackOutcome,onRefusalAfterToolUse:$.onContentFilter?()=>b1(!0):void 0}):void 0,q1=(V0)=>{if(!y0)return null;let n0=W8(y0,V0,K1);if(n0?.type==="content-filter"&&$.onContentFilter)return b1()?X8($.contentFilterModel):null;if(n0?.type==="complete")$.onComplete?.(n0.finishReason);return null},Y1=(V0,n0=!1)=>E?Y8(E,V0,K1,n0):V0,j1=()=>{if(P0)return;P0=!0,W.releaseLock()},PN=async(V0)=>{try{await W.cancel(V0)}catch{}finally{j1()}},K4=(V0={})=>({chunks:Q,pulls:A,inputBytes:u,outputBytes:o,pendingChars:_.length,sseErrorPending:Y0.pending.length,sseFinishPending:y0?.pending.length??0,sseFinishDisabled:y0?.disabled??!1,serverFallbackPending:i0?.pendingLength()??0,rewriteMs:u0(e),totalMs:u0(O0()-s),...b?z8(b):{},...V0}),G1=(V0,n0={})=>{$.perf?.(V0,K4(n0))};$.perf?.("stream_tool_prefix_wrapper_created",{status:N.status,hasBody:!0});let H4=new ReadableStream({async pull(V0){if(A++,!d)d=!0,G1("stream_tool_prefix_first_pull");while(!0){let n0=O0();try{let{done:D1,value:U1}=await W.read(),R0=u0(O0()-n0);if(D1){let H0=Y.decode();if(b&&!j)OJ(b,H0,K1,(w0)=>{let BN=w0.message;if(w0.type==="message_start"&&BN)r(()=>$.onMessageStart?.(BN));if(w0.type==="message_delta"&&(w0.usage||w0.stopReason))r(()=>$.onMessageDelta?.({...w0.usage?{usage:w0.usage}:{},...w0.stopReason?{stopReason:w0.stopReason}:{}}))});if(j){let w0=G.encode(H0).byteLength;if(i+w0<=K1)J0+=H0,i+=w0;else F0=!0}if(j&&!F0)try{let w0=JSON.parse(J0);if(w0&&typeof w0==="object"&&!Array.isArray(w0))r(()=>$.onMessageResponse?.(w0))}catch{}let e0=O0(),r1=i0?i0.push(H0)+i0.flush():H0,P1=Y1(r1,!0),N1=j?q1(P1):VJ(Y0,H0,K1)??q1(P1);if(N1)throw G1("stream_tool_prefix_retryable_error",{error:N1.message,providerErrorType:N1.providerErrorType}),await PN(N1),N1;let Q1=JJ(`${_}${P1}`,!0);if(e+=O0()-e0,Q1.ready){let w0=G.encode(Q1.ready);o+=w0.byteLength,V0.enqueue(w0)}if(G1("stream_tool_prefix_rewrite",{readMs:R0}),j1(),$.onStreamEnd)try{await $.onStreamEnd()}catch{}V0.close();return}Q++,u+=U1.byteLength;let O1=Y.decode(U1,{stream:!0});if(j){let H0=U1.byteLength;if(i+H0<=K1)J0+=O1,i+=H0;else F0=!0}if(b&&!j)OJ(b,O1,K1,(H0)=>{let e0=H0.message;if(H0.type==="message_start"&&e0)r(()=>$.onMessageStart?.(e0));if(H0.type==="message_delta"&&(H0.usage||H0.stopReason))r(()=>$.onMessageDelta?.({...H0.usage?{usage:H0.usage}:{},...H0.stopReason?{stopReason:H0.stopReason}:{}}))});let D4=O0(),t0=i0?i0.push(O1):O1,X1=Y1(t0),L1=j?q1(X1):VJ(Y0,O1,K1)??q1(X1);if(L1)throw G1("stream_tool_prefix_retryable_error",{error:L1.message,providerErrorType:L1.providerErrorType,readMs:R0,lastChunkBytes:U1.byteLength}),j1(),L1;let QN=_+X1,M1=JJ(QN);if(e+=O0()-D4,_=M1.pending,M1.ready){let H0=G.encode(M1.ready);o+=H0.byteLength,V0.enqueue(H0)}let wN=O0();if(Q===1||Q%25===0||wN-Q0>5000)Q0=wN,G1("stream_tool_prefix_progress",{readMs:R0,lastChunkBytes:U1.byteLength});if(M1.ready)return}catch(D1){throw G1("stream_tool_prefix_error",{error:D1 instanceof Error?D1.message:String(D1)}),j1(),D1}}},async cancel(V0){G1("stream_tool_prefix_cancel",{reason:V0 instanceof Error?V0.message:String(V0)});try{await W.cancel(V0)}finally{j1()}}});return new Response(H4,{status:N.status,statusText:N.statusText,headers:N.headers})}var _8="__OPENCODE_ANTHROPIC_AUTH_COMMAND_HANDLED__",pJ="~effect/http/HttpServerResponse",cJ="~effect/http/Cookies",lJ="~effect/http/HttpBody",K8="~effect/ErrorReporter/ignore",H8="https://api.anthropic.com/v1/messages",D8=60000,U8=60000,L8=5000,uJ=200,Q7=240,P8=Q7,Q8=600000,iN=new Map;function w8(N,$){return(N?.accounts??[]).some((W)=>W.id===$&&W.enabled!==!1&&U0(W))}function B8(N){let $=(N?.accounts??[]).find((W)=>W.enabled!==!1&&U0(W));if(o1(N)==="fallback-first"&&$)return{activeId:$.id,route:"fallback-first"};return{activeId:"main",route:"main"}}function dJ(N,$){if(N?.activeId==="main"||N?.activeId&&w8($,N.activeId))return N;return B8($)}function w7(N,$,W){let Y=Date.now()-N.lastUpdated;if(!N.activeId||Y<0||Y>Q8)return dJ(W,$);return dJ(N,$)}async function C8(N,$,W){let Y;try{Y=await $()}catch(G){return I.warn("sidebar","account storage reload failed; routing preserved",{message:G instanceof Error?G.message:String(G)}),{...N.activeId?{activeId:N.activeId,route:N.route}:W??{activeId:"main",route:"main"},freshStorage:null}}return{...w7(N,Y,W),freshStorage:Y}}async function T8(N){await z4()?.beforeStorageLoad?.();let $;try{$=await x(N)}catch{return{activeId:"main",route:"main",freshStorage:null}}finally{await z4()?.afterStorageLoad?.()}await z4()?.beforeSidebarRead?.();let W=await L7();return{...w7(W,$),freshStorage:$}}var E8=4,F8=25,A8=1,iJ=!1;function _4(){return process.env.OPENCODE_ANTHROPIC_AUTH_PERF==="1"}function g(){return performance.now()}function K0(N){return Math.round(N*10)/10}function nJ(N){return Math.floor(Math.random()*Math.max(0,N))}function nN(N){if(typeof N==="string")return N;if(N instanceof URL)return N.toString();return N.url}function oN(N,$){return $?.method??(N instanceof Request?N.method:void 0)}function oJ(N){return N instanceof Error?N.message:String(N)}function S8(){if(iJ||!1||!_4())return;iJ=!0;let N=100,$=250,W=g()+N;setInterval(()=>{let Y=g(),G=Y-W;if(W=Y+N,G<$)return;L0("[perf] opencode event_loop_lag",{lagMs:K0(G),thresholdMs:$})},N).unref?.()}function q8(N){let $=g(),W={requestId:String(A8++),start:$,last:$,mark(Y,G){let j=g();if(_4())L0("[perf] opencode request stage",{requestId:W.requestId,stage:Y,deltaMs:K0(j-W.last),totalMs:K0(j-W.start),...G});W.last=j},done(Y,G){let j=g();if(_4())L0("[perf] opencode request done",{requestId:W.requestId,stage:Y,deltaMs:K0(j-W.last),totalMs:K0(j-W.start),...G});W.last=j}};if(_4())L0("[perf] opencode request start",{requestId:W.requestId,...N});return W}function M8(N,$){let W=/^msg_([0-9a-fA-F]{12})/.exec(N);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)}`;if($&&j<=$)return;return j}async function rJ(N,$,W,Y={}){let G=N.client.session,j=await fN(N.client,$),_={path:{id:$},body:{noReply:Y.noReply??!0,parts:[{type:"text",text:W,ignored:!0}]}};if(Y.beforeActiveAssistant){let Q=j?.latestAssistantMessageId?M8(j.latestAssistantMessageId,j.latestUserMessageId):void 0;if(Q)_.body.messageID=Q}if(j?.agent)_.body.agent=j.agent;if(j?.model)_.body.model=j.model;if(j?.variant)_.body.variant=j.variant;if(Y.canSend&&!Y.canSend())return!1;if(typeof G?.promptAsync==="function")return await G.promptAsync(_),!0;if(typeof G?.prompt==="function")return await Promise.resolve(G.prompt(_)),!0;throw Error("OpenCode session prompt API is unavailable for ignored replies.")}function I8(){let N=Error(_8);throw N[pJ]=pJ,N[K8]=!0,N.status=204,N.statusText=void 0,N.headers={},N.cookies={[cJ]:cJ,cookies:{}},N.body={[lJ]:lJ,_tag:"Empty"},N}function x8(N){if(N.sessionID==null)return!1;let $=N.model;return $?.providerID==="anthropic"||$?.api?.npm==="@ai-sdk/anthropic"||$?.api?.npm==="@ai-sdk/google-vertex/anthropic"}function f8(N){if(N.some(($)=>$.includes("<use_parallel_tool_calls>")))return!1;return N.push(sJ),!0}var R8={input:0,output:0,cache:{read:0,write:0}},v8="Fable content filter detected. Switched to Opus 4.8 for a 10-response recovery window while keeping the Fable cache warm.",k8="Fable recovery window complete. Returning to Fable 5.";function h8(N){if(s0(N))return"Opus 5 content filter detected. Switched to Opus 4.8 for a 10-response recovery window while keeping the Opus 5 cache warm.";return v8}function b8(N){if(s0(N))return"Opus 5 recovery window complete. Returning to Opus 5.";return k8}function z$(N){if(s0(N))return"Opus 5";if(N==="claude-fable-5"||N.startsWith("claude-fable-5-"))return"Fable 5";if(N==="claude-opus-4-8"||N.startsWith("claude-opus-4-8-"))return"Opus 4.8";return N}function y8(N,$){return`Anthropic safety fallback active: ${z$(N)} → ${z$($)}. Follow-up requests may remain on the fallback model for about one hour.`}function g8(N){return`Anthropic safety fallback ended. Returning to ${z$(N)}.`}function m8(N){let $=N["claude-opus-4-8"]??N["claude-opus-4-5"]??Object.values(N)[0];if(!$)return N;return{...N,...Object.fromEntries(Object.values(n3).map((W)=>[W.id,{...$,id:W.id,name:W.name,api:$.api?{...$.api,id:W.id}:void 0,cost:{input:UN.input,output:UN.output,cache:{read:UN.cacheRead,write:UN.cacheWrite5m}},limit:{...$.limit??{},context:u3,output:d3},capabilities:{...$.capabilities??{},reasoning:!0,attachment:!0,toolcall:!0},release_date:i3}]))}}var p8=["low","medium","high","xhigh","max"];function c8(){return Object.fromEntries(p8.map((N)=>[N,{thinking:{type:"adaptive",display:"summarized"},effort:N}]))}function l8(N){return Object.fromEntries(Object.entries(N).map(([$,W])=>{let Y=W.api?.id??W.id??$;return[$,s0(Y)?{...W,variants:c8()}:W]}))}function u8(N){return Object.fromEntries(Object.entries(N).map(([$,W])=>[$,{...W,cost:R8}]))}var d8=async(N,$={})=>{let W={setTimeout:globalThis.setTimeout,setInterval:globalThis.setInterval,clearInterval:globalThis.clearInterval,...$};S8();let{client:Y}=N,G=globalThis.fetch,j=N3(),_=600000,Q=50,A=new Map;function u(){let J=Date.now();for(let[Z,O]of A)if(J-O.createdAt>_)A.delete(Z)}function o(J,Z){if(u(),A.size>=Q){let O="",X=1/0;for(let[V,z]of A)if(z.createdAt<X)X=z.createdAt,O=V;if(O)A.delete(O)}A.set(J,Z)}function e(J){u();let Z=A.get(J);if(!Z)return;if(Date.now()-Z.createdAt>_){A.delete(J);return}return Z}let d;try{d=await x(j)}catch(J){let Z=J instanceof Error?J.message:String(J);throw Error(`Failed to load account store: ${Z}`,{cause:J instanceof Error?J:void 0})}let P0=s$(process.env.OPENCODE_ANTHROPIC_AUTH_FALLBACK_MODE),Q0=new T4,s=new A4,b=new Map,J0=new Map,i=new Map,F0=new Map,r=new Set,Y0=new Map,y0=new K7({path:process.env.OPENCODE_ANTHROPIC_AUTH_ROUTING_STATE_FILE||_7(j)}),E=new W7({storage:d,onMainQuotaFetched:async(J,Z,O,X,V,z)=>{try{let D=await x(j)??k0(),K=w3(D);if(K&&K.checkedAt>=X&&A3(K.quota,D,K.checkedAt)>Date.now()){E.seedMainFromStorage(D,h0);return}D.quota=D.quota??{},D.quota.mainQuota=J,D.quota.mainQuotaCheckedAt=Z,D.quota.mainQuotaToken=O,D.quota.mainLastQuotaApiError=void 0,D.quota.mainQuotaErrorGeneration=V,D.quota.mainQuotaErrorClearedAt=tN(D.quota.mainQuotaErrorClearedAt,z),await A1(D,j,{mainQuota:!0})}catch(D){I.warn("quota","failed to persist main quota",{error:D instanceof Error?D.message:String(D)})}},onApiError:async(J,Z)=>{try{let O=await x(j)??k0();O.quota=O.quota??{},O.quota.mainLastQuotaApiError=J,O.quota.mainQuotaErrorGeneration=Z,await A1(O,j,{mainQuota:!0})}catch(O){I.warn("quota","failed to persist backoff state",{error:O instanceof Error?O.message:String(O)})}}});async function h1(J,Z){if(s1===J&&h0===Z)return;s1=J,h0=Z;let O=E.setMainQuotaAccountIdentity(Z,J.startsWith("sk-ant-oat"));if(Z===void 0)return;let X=await x(j),V=X?.quota?.mainLastQuotaApiError;if(!X||!V||V.accountIdentity===Z||!J.startsWith("sk-ant-oat")&&V.accountIdentity===void 0)return;X.quota=X.quota??{},X.quota.mainLastQuotaApiError=void 0,X.quota.mainQuotaErrorGeneration=Math.max(X.quota.mainQuotaErrorGeneration??0,O??E.getMainQuotaErrorGeneration()),X.quota.mainQuotaErrorClearedAt=tN(X.quota.mainQuotaErrorClearedAt,E.getMainQuotaErrorClearedAt()??Date.now()),await A1(X,j,{mainQuota:!0})}async function S1(J,Z){let O=TN.get(J);if(O)return O;let X=(async()=>{let V=++D$,D=(await HN(J,Z,S0)).accountUuid??(!J.startsWith("sk-ant-oat")?S0:void 0);if(V!==D$){let K=s1!==J||h0!==D;return{accountIdentity:D,generation:E.getMainQuotaIdentityGeneration(),stale:K}}return await h1(J,D),{accountIdentity:D,generation:E.getMainQuotaIdentityGeneration(),stale:!1}})();TN.set(J,X);try{return await X}finally{if(TN.get(J)===X)TN.delete(J)}}let b1=d?.quotaHeaderFeed?.enabled===!0?new e3:null,i0=new Map;async function q1(J,Z,O,X){if(X?.aborted)return;let V=`${Z??J}`,z=i0.get(V);if(!z){let D=y3({accessToken:O,accountIdentity:Z,fetchImpl:G,signal:X}).catch((K)=>{I.debug("quota","failed to hydrate account profile",{account:J,error:K instanceof Error?K.message:String(K)});return}).finally(()=>{if(i0.get(V)===D)i0.delete(V)});z=D,i0.set(V,z)}if(!X)return z;return new Promise((D)=>{let K=!1,B=(t)=>{if(K)return;K=!0,X.removeEventListener("abort",h),D(t)},h=()=>B(void 0);if(X.addEventListener("abort",h,{once:!0}),X.aborted)h();z.then(B)})}async function Y1(J){try{return await W3({accountId:J.accountId,profile:J.profile,accountIdentity:J.accountIdentity},j)}catch(Z){I.debug("quota","failed to persist account profile",{account:J.accountId,error:Z instanceof Error?Z.message:String(Z)});return}}async function j1(J,Z,O){if(process.env.OPENCODE_ANTHROPIC_AUTH_DISABLE_PROFILE_HYDRATION==="1")return J;let X=Date.now(),V=h0;if(Z&&J.main?.profile&&!j4(J.main.profile,V))J.main.profile=void 0,Y1({accountId:"main",accountIdentity:V,accessToken:Z,profile:void 0}).catch(()=>{});if(Z&&J.main?.profile&&V!==void 0&&J.main.profile.accountIdentity===void 0)J.main.profile={...J.main.profile,accountIdentity:V},Y1({accountId:"main",accountIdentity:V,accessToken:Z,profile:J.main.profile}).catch(()=>{});if(Z&&!s4(J.main?.profile,X)){let z=await q1("main",V,Z,O);if(z)J.main={type:"opencode",provider:"anthropic",profile:z},Y1({accountId:"main",accountIdentity:V,accessToken:Z,profile:z}).catch(()=>{})}for(let z of J.accounts){if(O?.aborted)break;if(!U0(z)||!z.access)continue;let D=z.access;if(z.profile&&!j4(z.profile,z.id))z.profile=void 0,Y1({accountId:z.id,accountIdentity:z.id,accessToken:D,profile:void 0}).catch(()=>{});if(z.profile&&z.profile.accountIdentity===void 0)z.profile={...z.profile,accountIdentity:z.id},Y1({accountId:z.id,accountIdentity:z.id,accessToken:D,profile:z.profile}).catch(()=>{});if(s4(z.profile,X))continue;let K=await q1(z.id,z.id,D,O);if(K)z.profile=K,Y1({accountId:z.id,accountIdentity:z.id,accessToken:D,profile:K}).catch(()=>{})}return J}let PN=new Set;async function K4(J,Z){let O=await x(j)??k0();if(J.accountId==="main"){let V=J.mainQuotaIdentity?.accountIdentity;if(!V||Z.quota.accountIdentity!==V)return I.trace("quota","skipped quota persistence without verified main account identity"),null;O.quota=O.quota??{},O.quota.mainQuota={...Z.quota,accountIdentity:V},O.quota.mainQuotaCheckedAt=Z.checkedAt,await A1(O,j,{mainQuota:!0});let z=await x(j),D=z?.quota?.mainQuota,K=Boolean(D&&D.accountIdentity===V),B=K?$3(D,Z.quota):Z.quota;return D?{...Z,quota:B,checkedAt:K?z.quota?.mainQuotaCheckedAt??Z.checkedAt:Z.checkedAt}:Z}let X=O.accounts.find((V)=>V.id===J.accountId&&U0(V));if(!X)return null;if(X.authLineageId!==J.authLineageId){if(I.trace("quota","skipped stale fallback quota persistence after lineage change",{accountId:J.accountId,storedLineage:X.authLineageId,servedLineage:J.authLineageId}),E.getAllFallbacks().get(J.accountId)===Z)E.clearFallback(J.accountId);return null}return X.quota={...Z.quota,accountIdentity:X.id},await A1(O,j,{accounts:[J.accountId]}),Z}function G1(J){I.warn("quota","failed to persist harvested response quota",{error:J instanceof Error?J.message:String(J)})}function H4(J){let Z=J instanceof Error?J.name:typeof J,O=J instanceof Error?J.message:String(J),X=`${Z}:${O}`;if(PN.has(X))return;PN.add(X),I.warn("quota","failed to normalize response quota headers",{error:O})}function V0(J){if(!J||typeof J!=="object")return;let Z=J,O=Z.credential_id;if(typeof O==="string"&&O&&O!=="main")return O;let X=Z.vault;if(X&&typeof X==="object"){let V=X.credential_id;if(typeof V==="string"&&V&&V!=="main")return V}return}async function n0(J,Z){if(!b1)return;if(J.accountId==="main"&&!J.mainQuotaIdentity?.accountIdentity)return;let O=await x(j)??k0(),V=(await C0?.())?.type==="oauth",z=J.accountId==="main"?O.main:O.accounts.find((I0)=>I0.id===J.accountId),D=V0(z),K=t3({storage:O,mainOAuthConfigured:V}),B=Z.checkedAt,h={five_hour:Z.quota.five_hour,seven_day:Z.quota.seven_day,bindingWindow:Z.quota.bindingWindow,fallbackAdvised:Z.quota.fallbackAdvised,scoped:Z.quota.scoped,extraUsage:Z.quota.extraUsage},t=D??(J.accountId==="main"?J.mainQuotaIdentity?.accountIdentity??"main":J.accountId),D0=D?{identity_source:"credential_id",credential_id:D,schema_version:LN,provider:"anthropic",configured_account_count:K,observed_at_ms:B,quota:h,accountKey:t}:J.accountId==="main"&&J.mainQuotaIdentity?.accountIdentity?{identity_source:"account_ref",account_ref:J.mainQuotaIdentity.accountIdentity,schema_version:LN,provider:"anthropic",configured_account_count:K,observed_at_ms:B,quota:h,accountKey:t}:J.accountId==="main"?{identity_source:"none",schema_version:LN,provider:"anthropic",configured_account_count:K,observed_at_ms:B,quota:h,accountKey:t}:{identity_source:"account_ref",account_ref:J.accountId,schema_version:LN,provider:"anthropic",configured_account_count:K,observed_at_ms:B,quota:h,accountKey:t};await b1.publish(D0)}function D1(J){I.debug("quota","failed to publish quota header feed",{error:J instanceof Error?J.message:String(J)})}function U1(J,Z){try{if(!N7(J)){I.trace("quota","skipped non-quota response headers",{account:Z.accountId});return}let O=$7(J),X=Z.accountId==="main"?Z.mainQuotaIdentity:void 0;if(Z.accountId==="main"){if(!X||E.getMainQuotaIdentityGeneration()!==X.generation){I.trace("quota","discarded stale main quota headers",{boundIdentity:X?.accountIdentity,currentGeneration:E.getMainQuotaIdentityGeneration()});return}}let V=Z.accountId==="main"?E.pushMainFromHeaders(X?.accountIdentity,O):E.pushFallbackFromHeaders(Z.accountId,O,{authLineageId:Z.authLineageId});if(!V)return;(async()=>{let z=V;try{let D=await K4(Z,V);if(D===null)return;z=D}catch(D){G1(D)}CN().catch(()=>{}),await n0(Z,z)})().catch(D1),I.debug("quota","harvested response quota",{account:Z.accountId,fiveHourPercent:V.quota.five_hour?.usedPercent,sevenDayPercent:V.quota.seven_day?.usedPercent,source:"headers"})}catch(O){H4(O)}}let R0=new S3({quotaManager:E,setIntervalImpl:W.setInterval,clearIntervalImpl:W.clearInterval,onFallbackStorageChanged:()=>{CN().catch(()=>{})}});R0.startBackgroundRefresh();let O1=new w4,D4=new B4,t0=new WeakMap,X1=new Map;async function L1(J){let Z=(J.get("anthropic-beta")??"").split(",").map((O)=>O.trim()).filter(Boolean).sort();return{betas:Z,betasHash:await M3(Z.join(","))}}function QN(J){try{if(!J.request)return;let Z=A$({request:J.request,source:J.source,accountId:J.accountId,synthetic:J.synthetic,betasHash:J.betasHash,requestedModel:J.requestedModel,onWarning:(X)=>I.warn("cache-diagnostics",X),message:J.message,receivedAt:J.receivedAt});if(!Z.record||!Z.messageId){I.debug("cache-diagnostics","skipped invalid response envelope",{status:J.status});return}I.debug("cache-diagnostics",S$(Z.record));let O=D4.capture(J.betasHash,J.betas);if(O)I.debug("cache-diagnostics",O);if(Z.canary)I.warn("cache-diagnostics","short-gap previous_message_not_found",{message_id:Z.canary.messageId,previous_message_id:Z.canary.previousMessageId});if(J.trackSessionId)O1.capture(J.trackSessionId,Z.messageId,J.receivedAt)}catch(Z){I.debug("cache-diagnostics","response observation failed",{status:J.status,error:Z instanceof Error?Z.message:String(Z)})}}function M1(J,Z,O=!0){let X=t0.get(J);if(!X)return;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&!O)X.messageStart=Z;X.dumpWrite=X.dumpWrite.then(()=>Y4(X.dump,{status:X.status,message:Z,complete:O})).catch(()=>{}),QN({...X,message:Z,receivedAt:Date.now()})}function wN(J,Z){let O=t0.get(J);if(!O)return;let X=O.messageStart??{},V=X.usage&&typeof X.usage==="object"&&!Array.isArray(X.usage)?X.usage:{},z={...X,...Z.usage?{usage:{...V,...Z.usage}}:{},...Z.stopReason?{stop_reason:Z.stopReason}:{}};O.dumpWrite=O.dumpWrite.then(()=>Y4(O.dump,{status:O.status,message:z,complete:!0})).catch(()=>{})}function H0(J,Z){let O=Promise.resolve(Y4(Z.dump,{status:Z.status,message:null,complete:!1})).catch(()=>{});t0.set(J,{...Z,dumpWrite:O})}let e0=null,r1=new b3({directory:process.env.OPENCODE_ANTHROPIC_AUTH_CACHEKEEP_REGISTRY_DIR||h3("opencode")}),P1=[],N1=new k3({loadStorage:()=>x(j),setIntervalImpl:W.setInterval,clearIntervalImpl:W.clearInterval,onTrackedSessionsChanged:async(J)=>{await r1.publish(J),P1=await r1.list(J)},prepareBody:(J,Z)=>{if(!new Headers(Z.headers).get("anthropic-beta")?.split(",").map((O)=>O.trim()).includes(ZN))return J;try{let O=JSON.parse(J),X=O1.previousFor(Z.id),V=X?.messageId??null;return IN(O,V),X1.set(Z.id,{sessionId:Z.id,previousMessageId:V,...X?{previousMessageReceivedAt:X.receivedAt}:{},isSubagent:Z.isSubagent,ttlSent:xN(O),accountId:Z.oauthAccountId??"main",synthetic:!0,requestedModel:typeof O.model==="string"?O.model:void 0}),JSON.stringify(O)}catch{return J}},onResponse:({target:J,bodyText:Z,status:O,data:X,receivedAt:V})=>{let z=X1.get(J.id);if(!z?.betasHash||!z.betas){X1.delete(J.id);return}try{let D=JSON.parse(Z),K=D&&typeof D==="object"&&!Array.isArray(D)?D.diagnostics:void 0,B=K&&typeof K==="object"&&!Array.isArray(K)&&K.previous_message_id===z.previousMessageId?z.previousMessageId:void 0;if(B===void 0)return;QN({source:"prewarm_cachekeep",accountId:z.accountId,synthetic:z.synthetic,betasHash:z.betasHash,betas:z.betas,requestedModel:z.requestedModel,request:{...z,previousMessageId:B,ttlSent:xN(D)},trackSessionId:J.id,status:O,message:X,receivedAt:V})}catch{}finally{X1.delete(J.id)}},prepareHeaders:async(J,Z)=>{let O,X=Z.oauthAccountId;if(X&&X!=="main"){let V=await x(j),z=V?.accounts.find((K)=>K.id===X&&K.enabled!==!1&&U0(K));if(!z||!V)throw Error(`OAuth account ${X} is unavailable for cache prewarm`);let D=z;try{D=await R0.refreshAccount(z,V)}catch(K){I.warn("cachekeep","fallback token refresh failed",{accountId:X,error:K instanceof Error?K.message:String(K)})}if(O=D.access,!O)throw Error(`OAuth account ${X} has no access token for cache prewarm`)}else{if(!C0)return J;let V=await C0();if(V.type!=="oauth")return J;if(!V.access||V.expires&&V.expires<Date.now()){if(!e0)return J;V.access=await e0()}O=V.access}if(!O)return J;try{let V=JSON.parse(Z.bodyText),z=await HN(O,typeof V.model==="string"?V.model:void 0,X==="main"?S0:X);if(J.delete("anthropic-beta"),u1(J,O,{body:V,identity:z}),J.set("anthropic-beta",GN(J.get("anthropic-beta"),[x3])),V.speed==="fast")pN(J);let D=X1.get(Z.id);if(D){let{betas:K,betasHash:B}=await L1(J);D.betas=K,D.betasHash=B}}catch{u1(J,O)}return J}}),Q1=new Map;async function w0(){if(!C0)throw Error("prime: main auth loader is not available");let J=await C0();if(J.type!=="oauth")throw Error("prime: main account is not an OAuth account");if(J.access&&(!J.expires||J.expires>Date.now()))return J.access;if(!e0)throw Error("prime: main token refresh unavailable");try{return await e0()}catch(Z){if(Z instanceof Error)Z.isPrimeTokenRefresh=!0;throw Z}}async function BN(){let J=await w0();await S1(J);let Z=await E.refreshMainWithMetadata(h0,J);return{quota:Z.quota,fresh:Z.fetched}}async function B7(J){let Z=await x(j),O=Z?.accounts.find((V)=>V.id===J&&V.enabled!==!1&&U0(V));if(!O||!Z)throw Error(`prime: OAuth account ${J} is unavailable`);let X=await R0.refreshAccountQuota(O,Z);if(await R0.save(Z,[J]),!X.account.access)throw Error(`prime: OAuth account ${J} has no access token`);return{quota:X.account.quota??{},fresh:X.fetched}}async function C7(J){let Z=performance.now(),O,X;try{if(J==="main"){try{O=await w0()}catch(T0){return{ok:!1,...T0 instanceof Error&&T0.isPrimeTokenRefresh===!0&&{reason:"token-refresh"},error:T0 instanceof Error?T0.message:String(T0)}}X=W$}else{let T0=await x(j),w1=T0?.accounts.find((p0)=>p0.id===J&&p0.enabled!==!1&&U0(p0));if(!w1||!T0)return{ok:!1,error:`prime: OAuth account ${J} is unavailable`};let t1=w1;try{t1=await R0.refreshAccount(w1,T0)}catch(p0){return{ok:!1,reason:"token-refresh",error:p0 instanceof Error?p0.message:String(p0)}}O=t1.access,X=W$}if(!O)return{ok:!1,error:"prime: no access token available"};let V=s3(),z=await HN(O,X,J==="main"?S0:J),D=await uN(JSON.stringify(V),{identity:z}),K=new Headers({"content-type":"application/json"});u1(K,O,{body:JSON.parse(D),identity:z}),K.delete("content-length"),K.delete("transfer-encoding");let B=cN(H8,{baseURL:""}),h=B.url?.toString()??B.input.toString(),t=await fetch(h,{method:"POST",headers:K,body:D,signal:AbortSignal.timeout(30000)}),D0=Math.round(performance.now()-Z);if(!t.ok){let T0=await t.text().catch(()=>"")||`HTTP ${t.status}`;return{ok:!1,status:t.status,ms:D0,error:T0}}let b0=(await t.json().catch(()=>null))?.usage,m0=b0&&(Number.isFinite(b0.input_tokens)||Number.isFinite(b0.output_tokens))?{inputTokens:Number.isFinite(b0.input_tokens)?b0.input_tokens:void 0,outputTokens:Number.isFinite(b0.output_tokens)?b0.output_tokens:void 0}:void 0;return{ok:!0,status:t.status,ms:D0,...m0&&{usage:m0}}}catch(V){return{ok:!1,ms:Math.round(performance.now()-Z),error:V instanceof Error?V.message:String(V)}}}let _$={storagePath:j,loadStorage:()=>x(j),getAccountFingerprint:async(J)=>{let Z=await H3(J,j);return Z?J7(Z):void 0},refreshQuota:async(J)=>{if(J==="main")return BN();return B7(J)},sendPrime:C7,recordSuccess:(J,Z)=>D3(J,Z,j)},I1=h$(j,()=>new a3(_$),{slot:N.directory??"default",rebind:(J)=>J.updateOptions(_$)});if(zN(d))I1.start();function T7(J){let Z=J.plan.sessionId,O=s0(J.plan.requestedModel)?"Opus 5":"Fable",X=async()=>{let K=J.warmTarget;if(!K){I.debug("fable-fallback","cache warm skipped",{session:Z,reason:"Opus response was not served by an OAuth route"});return}let B=yJ(K.bodyText,J.plan.requestedModel);if(!B.ok){I.warn("fable-fallback","cache warm skipped",{session:Z,reason:B.reason});return}try{let h=await N1.prewarmNow({sessionId:Z,url:K.url,headers:K.headers,bodyText:B.bodyText,oauthAccountId:Q0.recoveryAccount(J.plan)??K.oauthAccountId});if(h.ok){I.debug("fable-fallback",`${O} cache warmed`,{session:Z,remaining:Q0.remaining(J.plan),...h.usage&&{usage:h.usage}});return}I.warn("fable-fallback",`${O} cache warm skipped`,{session:Z,status:h.status,reason:h.reason})}catch(h){I.warn("fable-fallback",`${O} cache warm failed`,{session:Z,error:h instanceof Error?h.message:String(h)})}},{recoveryKey:V}=J.plan,D=(Q1.get(V)??Promise.resolve()).then(X,X);return Q1.set(V,D),D.finally(()=>{if(Q1.get(V)===D)Q1.delete(V)}),D}async function E7(){return P1=await r1.list(N1.trackedSessions()),P1}if(KN({enabled:XN(d),mode:VN(d)}),Z4(eN(d)),X4(N4(d)),!process.env.OPENCODE_ANTHROPIC_AUTH_LOG_LEVEL)tJ(J4(d)??"info");let K$=null;if(N.directory){let J=globalThis;if(J.__anthropicAuthRpcServer)await J.__anthropicAuthRpcServer.stop().catch(()=>{}),J.__anthropicAuthRpcServer=void 0;try{K$=await d$({dir:D7(N.directory),drain:l$,apply:u7}),J.__anthropicAuthRpcServer=K$}catch(Z){I.warn("rpc","failed to start",{error:Z instanceof Error?Z.message:String(Z)})}}let M0={activeId:"main",route:"main"},F7=U7(),o0=new Map;function A7(J,Z,O){if(!J||!Z)return J;let X={...J,accounts:J.accounts.map((D)=>{let K=Z.accounts.find((B)=>B.id===D.id);if(!U0(D)||!K||!U0(K)||!D.access||K.access!==D.access)return D;return{...D,profile:K.profile}})},V=J.main?.profile,z=J.main??Z.main;if(O&&z&&(!V||j4(V,S0)))X.main={...z,profile:Z.main?.profile};return X}function H$(J,Z){if(E.updateStorage(J),E.seedMainFromStorage(J,h0),!Z.skipFallbackQuotaSeed)E.seedFallbacksFromAccounts((J?.accounts??[]).filter(U0));let O=E.getMain(h0),X=E.getLastApiError(),V=J?.refresh?.mainLastRefreshError;return{main:{quota:O?.quota??null,tierLabel:G4(J?.main?.profile),quotaBackedOff:E.isBackedOff(),quotaBackoffUntil:X?.nextRetryAt,refreshBackedOff:V?W1(V,S0??J?.mainAccountId,Date.now()):!1,refreshBackoffUntil:V?.nextRetryAt},fallbacks:(J?.accounts??[]).filter((z)=>z.enabled!==!1&&U0(z)).map((z)=>({id:z.id,label:z.label,tierLabel:G4(z.profile),quota:Z.skipFallbackQuotaSeed?null:z.access?E.getFallback(z.id,z)?.quota??null:null,needsReauth:z.lastRefreshError!=null&&W1(z.lastRefreshError,z.id,Date.now())&&H1(z.lastRefreshError),enabled:z.enabled!==!1})),activeId:Z.activeId,route:Z.route,relay:(()=>{let z=j$(J);return z?{enabled:!0,transport:z.transport??"http"}:null})(),fastMode:O4(),cacheKeep:{enabled:r4(J),window:o4(J)?"always":J?.cacheKeep?.startHour!=null&&J?.cacheKeep?.endHour!=null?`${J.cacheKeep.startHour}-${J.cacheKeep.endHour}`:void 0,trackedSessions:P1.length},prime:zN(J)?{enabled:!0,accounts:I1.stats(J)}:void 0,fableRecoveries:o0.size>0?[...o0.values()]:void 0,lastUpdated:Date.now()}}function r0(J,Z){let O=Z.routingAuthoritative!==!1;if(O)M0={activeId:Z.activeId,route:Z.route};let X=H$(J,Z);return P7(X,F7,{routingAuthoritative:O,resolvePreservedRouting:O?void 0:async(V)=>{let z=await C8(V,()=>x(j),{activeId:X.activeId,route:X.route}),D=Z.useHydratedProfiles?A7(z.freshStorage,J,Z.mainAccessToken):z.freshStorage;return{activeId:z.activeId,route:z.route,state:H$(D,{...Z,activeId:z.activeId,route:z.route})}},onRoutingResolved:O?void 0:(V)=>{M0=V}}).catch((V)=>I.warn("sidebar","state write failed",{error:V instanceof Error?V.message:String(V)}))}async function CN(){let J=await x(j),Z;if(C0)try{Z=(await C0()).access}catch{}r0(J,{activeId:M0.activeId,route:M0.route,mainAccessToken:Z,routingAuthoritative:!1})}function S7(J,Z,O){if(!Z)return;if(J?.quota?.enabled!==!0)return;let X=O?.accountIdentity??h0;if(E.getMain(X))return;if(U4)return;U4=!0,E.refreshMain(X,Z,O?.generation).then(()=>CN()).catch(()=>{}).finally(()=>{U4=!1})}let C0=null,S0,h0,s1,D$=0,TN=new Map,U4=!1,y1=null,EN=0;function q7(J){let Z=J?.refresh?.refreshBeforeExpiryMinutes??P8;return Math.max(Q7,Z)*60000}function M7(J){return J?.refresh?.enabled!==!1}async function U$(J){if(!J)return;let Z=await x(j),O=Z?.refresh?.mainLastRefreshError;if(!Z?.refresh||!O)return;if(!O.accountIdentity||O.accountIdentity===J)return;if(Z.refresh.mainLastRefreshError=void 0,!s1?.startsWith("sk-ant-oat")){let X=Z.quota?.mainLastQuotaApiError;if(X&&X.accountIdentity!==h0){let V=E.clearMainBackoff();Z.quota=Z.quota??{},Z.quota.mainLastQuotaApiError=void 0,Z.quota.mainQuotaErrorGeneration=Math.max(Z.quota.mainQuotaErrorGeneration??0,V??E.getMainQuotaErrorGeneration()),Z.quota.mainQuotaErrorClearedAt=tN(Z.quota.mainQuotaErrorClearedAt,E.getMainQuotaErrorClearedAt()??Date.now())}}await A1(Z,j,{mainRefresh:!0,...!s1?.startsWith("sk-ant-oat")&&{mainQuota:!0}}),L0("[refresh] opencode main oauth cleared stale backoff after token rotation",{previousCheckedAt:O.checkedAt,previousNextRetryAt:O.nextRetryAt,previousRetryCount:O.retryCount})}async function I7(){let J=[],Z;if(C0)try{let K=await C0();if(K.type==="oauth"&&K.access){Z=K.access,await S1(K.access);let B=await E.refreshMain(h0,K.access);J.push({name:"OpenCode anthropic",role:"main",quota:B})}else if(K.type==="oauth")J.push({name:"OpenCode anthropic",role:"main",error:"missing access token; send a request first or reconnect auth"})}catch(K){let B=K instanceof Error?K.message:String(K);J.push({name:"OpenCode anthropic",role:"main",error:B.includes("429")?"Usage API rate limited — try again in a moment":B})}let{storage:O,errors:X}=await R0.refreshQuotaForAllAccounts({force:!0}),V=await j1(O??k0(),Z,AbortSignal.timeout(3000)),z=J.find((K)=>K.role==="main");if(z)z.tierLabel=G4(V.main?.profile);let D=new Map(X.map((K)=>[K.accountId,K.message]));if(J.push(...Z7(V,D)),!C0)J.unshift({name:"OpenCode anthropic",role:"main",error:"auth loader has not run yet; send a request first"});return Y7({accounts:J,refreshedAt:Date.now()})}async function L$(J){if(C0)try{let Z=await C0();await r0(J,{activeId:M0.activeId,route:M0.route,mainAccessToken:Z.access,routingAuthoritative:!1})}catch{}}function a1(J,Z,O,X){if(o0.delete(J.sessionId),o0.set(J.sessionId,{...J,changedAt:Date.now()}),o0.size>128){let V=o0.keys().next().value;if(V)o0.delete(V)}if(r0(Z,{activeId:M0.activeId,route:M0.route,mainAccessToken:O.access,routingAuthoritative:!1}),X)P$(J.sessionId,X)}function P$(J,Z){if(q4(J))return;let O=J0.get(J)??[];if(O.push(Z),O.length>4)O.splice(0,O.length-4);J0.delete(J),J0.set(J,O);while(J0.size>128){let X=J0.keys().next().value;if(X)J0.delete(X);else break}if(r.has(J))L4(J)}function L4(J,Z=0){if(!J0.has(J)||Y0.has(J))return;Y0.set(J,Z);let O=()=>{if(Y0.get(J)!==Z)return;Y0.delete(J),x7(J,Z)};if(Z===0)setImmediate(O);else setTimeout(O,F8*Z)}function P4(J,Z){if(Z+1<E8)L4(J,Z+1)}async function x7(J,Z){if(!r.has(J)||!J0.has(J))return;let O=N.client.session;if(typeof O?.status==="function")try{let X=await Promise.resolve(O.status()),V=X!==null&&typeof X==="object"?X:void 0,z=V&&Object.hasOwn(V,"data")?V.data:V;if(z===null||typeof z!=="object"||Array.isArray(z)){P4(J,Z);return}let D=z[J];if(D!==void 0&&(!D||typeof D!=="object"||D.type!=="idle")){P4(J,Z);return}}catch{P4(J,Z);return}if(!r.has(J))return;await f7(J)}function f7(J){let Z=F0.get(J);if(Z)return Z;let O=(async()=>{while(!0){let X=J0.get(J),V=X?.[0];if(!V){J0.delete(J);return}try{if(!await rJ(N,J,V,{noReply:!0,beforeActiveAssistant:!0,canSend:()=>r.has(J)}))return;X.shift()}catch(z){I.warn("fable-fallback","Desktop notification failed",{session:J,error:z instanceof Error?z.message:String(z)})}}})();return F0.set(J,O),O.finally(()=>{if(F0.get(J)===O)F0.delete(J)}),O}function R7(J,Z,O,X){if(Z.fallback&&Z.targetModel){let V=b.get(J.recoveryKey);b.delete(J.recoveryKey),b.set(J.recoveryKey,Z.targetModel);while(b.size>128){let D=b.keys().next().value;if(D)b.delete(D);else break}let z=o0.get(J.sessionId);if(V===Z.targetModel&&z?.mode==="server"&&J1(z.requestedModelId)===J1(J.requestedModel)&&z.targetModelId===Z.targetModel)return;I.info("fable-fallback","Anthropic server-side safety fallback active",{session:J.sessionId,requestedModel:J.requestedModel,targetModel:Z.targetModel,handoff:Z.handoff}),a1({sessionId:J.sessionId,mode:"server",remaining:0,requestedModelId:J.requestedModel,targetModelId:Z.targetModel},O,X,y8(J.requestedModel,Z.targetModel));return}if(Z.stopReason==="refusal"||!b.delete(J.recoveryKey))return;I.info("fable-fallback","Anthropic server-side safety fallback ended",{session:J.sessionId,requestedModel:J.requestedModel}),a1({sessionId:J.sessionId,mode:"fable",remaining:0,requestedModelId:J.requestedModel},O,X,g8(J.requestedModel))}function v7(J,Z,O){if(!J)return;for(let X of b.keys())if(X.startsWith(`${J}\x00`))b.delete(X);if(!o0.delete(J))return;r0(Z,{activeId:M0.activeId,route:M0.route,mainAccessToken:O.access,routingAuthoritative:!1})}async function k7(J){let Z=q3(J);if(Z.type==="enable"||Z.type==="disable"){let z=Z.type==="enable",D=await Y3(z),K=VN(D);return KN({enabled:z,mode:K}),I.info("commands","cache enabled changed",{enabled:z}),W4({argumentsText:J,enabled:z,mode:K})}if(Z.type==="mode"){let z=await j3(Z.mode),D=XN(z);return KN({enabled:D,mode:Z.mode}),I.info("commands","cache mode changed",{mode:Z.mode}),W4({argumentsText:J,enabled:D,mode:Z.mode})}let O=await x(j),X=XN(O),V=VN(O);return KN({enabled:X,mode:V}),W4({argumentsText:J,enabled:X,mode:V})}async function h7(J){let Z=f3(J),O=await x(j);if(Z.type==="window")O=await X3(Z.startHour,Z.endHour),I.info("commands","cachekeep schedule changed",{schedule:`${Z.startHour}-${Z.endHour}`});else if(Z.type==="always")O=await V3(),I.info("commands","cachekeep schedule changed",{schedule:"always"});else if(Z.type==="disable")O=await z3(!1),I.info("commands","cachekeep enabled changed",{enabled:!1});else if(Z.type==="subagents")O=await K3(Z.enabled),I.info("commands","cachekeep subagents changed",{subagents:Z.enabled});let X=n4(O),V=await E7(),z=V.length?Math.min(...V.map((D)=>D.nextPrewarmAt)):void 0;return v3({argumentsText:J,enabled:R3(O),always:o4(O),window:X,hybridActive:r4(O),trackedSessions:V.length,trackedSessionDetails:V,nextPrewarmAt:z})}async function b7(J){let Z=I3(J);if(Z.type==="enable"||Z.type==="disable"){let V=Z.type==="enable";return await G3(V),Z4(V),I.info("commands","dump changed",{enabled:V}),d4({argumentsText:J,enabled:V})}let O=await x(j),X=eN(O);return Z4(X),d4({argumentsText:J,enabled:X})}async function y7(J){let Z=p3(J);if(Z.type==="enable"||Z.type==="disable"){let V=Z.type==="enable";return await O3(V),X4(V),I.info("commands","fast mode changed",{enabled:V}),e4({argumentsText:J,enabled:V})}let O=await x(j),X=N4(O);return X4(X),e4({argumentsText:J,enabled:X})}async function g7(J,Z){if(X7(J).type==="fire"){if(!Z)return`## Claude Start Failed
22
+ `);if(J===-1)return Z===-1?null:{index:Z,length:4};if(Z===-1||J<Z)return{index:J,length:2};return{index:Z,length:4}}function y3($,J,Z,W){if(!J||$.disabled)return;$.pending+=J;while(!0){let X=y4($.pending);if(!X)break;let K=$.pending.slice(0,X.index);$.pending=$.pending.slice(X.index+X.length);let N=c7(K);if(!N)continue;if($.events++,LJ($.eventCounts,N.event??"unknown"),LJ($.typeCounts,N.type),LJ($.deltaTypeCounts,N.deltaType),LJ($.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,W?.(N),N.dataBytes>0&&!N.type&&!N.event)$.parseErrors++}if(TZ.encode($.pending).byteLength>Z)$.pending="",$.disabled=!0,$.pendingOverflowCount++}function FY(){return{pending:"",completed:!1,disabled:!1,resyncCarry:""}}function SY($,J,Z){if(!J||$.completed)return null;if($.disabled){let X=$.resyncCarry+J,K=y4(X);if(!K)return $.resyncCarry=X.slice(-3),null;if($.disabled=!1,$.resyncCarry="",J=X.slice(K.index+K.length),!J)return null}$.pending+=J;let W=null;while(!0){let X=y4($.pending);if(!X)break;let K=$.pending.slice(0,X.index);$.pending=$.pending.slice(X.index+X.length);let N=c7(K);if(N?.type!=="message_delta"||!N.stopReason)continue;$.completed=!0,W??=N.stopReason==="refusal"?{type:"content-filter"}:{type:"complete",finishReason:N.stopReason}}if(new TextEncoder().encode($.pending).byteLength>Z){let X=$.pending;$.pending="",$.disabled=!0,$.resyncCarry=X.slice(-3)}return W}function AY(){return{pending:"",disabled:!1}}function m3($){let J=c7($);if(J?.type!=="message_delta"||J.stopReason!=="max_tokens")return $;return $.replace(/("stop_reason"\s*:\s*)"max_tokens"/,'$1"end_turn"')}function TY($,J,Z,W=!1){if(!J&&!W)return"";if($.disabled)return J;if(new TextEncoder().encode($.pending+J).byteLength>Z){let K=$.pending+J;return $.pending="",$.disabled=!0,K}$.pending+=J;let X="";while(!0){let K=y4($.pending);if(!K)break;let N=$.pending.slice(0,K.index),H=$.pending.slice(K.index,K.index+K.length);$.pending=$.pending.slice(K.index+K.length),X+=m3(N),X+=H}if(W&&$.pending)X+=m3($.pending),$.pending="";return X}function qY(){return{pending:"",disabled:!1,resyncCarry:""}}function PY($,J){let Z=$?.toLowerCase(),W=J.toLowerCase();return Z==="api_error"||Z==="overloaded_error"||Z==="server_error"||Z==="internal_server_error"||W.includes("internal server error")||W.includes("server overloaded")}function xY($,J){let Z=$?`${$}: ${J}`:J,W=Error(`Anthropic stream error: ${Z}`);if(W.code="ECONNRESET",W.syscall="anthropic-sse",$)W.providerErrorType=$;return W}function IY($){let J=T1($)?"Opus 5":"Fable",Z=Error(`${J} response was blocked by the provider content filter; retrying with Opus 4.8`);return Z.code="ECONNRESET",Z.syscall="anthropic-sse",Z.providerErrorType="refusal",Z}function CY($){if(!$.includes("error"))return null;let J,Z=[];for(let q of $.split(/\r?\n/)){if(q.startsWith("event:")){J=q.slice(6).trim();continue}if(q.startsWith("data:")){let v=q.slice(5);Z.push(v.startsWith(" ")?v.slice(1):v)}}let W=Z.join(`
23
+ `);if(!W||W==="[DONE]")return null;let X;try{X=JSON.parse(W)}catch{return null}let K=P1(X);if(J!=="error"&&l0(K,"type")!=="error")return null;let N=P1(K?.error),H=l0(N,"type")??l0(N,"code")??void 0,z=l0(N,"message")??l0(K,"message")??H??"Anthropic stream error";if(!PY(H,z))return null;return xY(H,z)}function MY($){if(!$.includes("relay_upstream_error"))return;let J=[];for(let Z of $.split(/\r?\n/))if(Z.startsWith("data:")){let W=Z.slice(5);J.push(W.startsWith(" ")?W.slice(1):W)}if(!J.length)return;try{let Z=P1(JSON.parse(J.join(`
24
+ `))),W=P1(Z?.error);if(l0(W,"type")!=="relay_upstream_error")return;let X=W?.status;if(typeof X==="number"&&Number.isInteger(X))return{status:X,source:"relay_status_field"};let N=l0(W,"message")?.match(/HTTP\s+(\d{3})\b/i);return N?{status:Number(N[1]),source:"relay_message_parse"}:void 0}catch{return}}function c3($,J,Z,W){if(!J)return null;if($.disabled){let K=$.resyncCarry+J,N=y4(K);if(!N)return $.resyncCarry=K.slice(-3),null;if($.disabled=!1,$.resyncCarry="",J=K.slice(N.index+N.length),!J)return null}$.pending+=J;let X=null;while(!0){let K=y4($.pending);if(!K)break;let N=$.pending.slice(0,K.index);$.pending=$.pending.slice(K.index+K.length);let H=MY(N);if(H!==void 0)W?.(H);let z=CY(N);X??=z}if(new TextEncoder().encode($.pending).byteLength>Z){let K=$.pending;$.pending="",$.disabled=!0,$.resyncCarry=K.slice(-3)}return X}function RY($){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 qZ($,J={}){if(!$.body)return $;let Z=$.body.getReader(),W=new TextDecoder,X=new TextEncoder,K=J.responseMode==="json",N="",H=0,z=0,q=0,v=0,P=0,b=!1,n=!1,E=_0(),I=_0(),y=J.perf||J.onMessageStart||J.onMessageDelta?wY():void 0,N0="",J0=0,k=!1,o=(B0)=>{if(!B0)return;try{B0()}catch{}},Y0=qY(),D0=J.onContentFilter||J.onComplete?FY():void 0,M1=J.laneStart&&J.laneStartOAuthServed!==!1?AY():void 0,c1=!1,K1=!1,w4=(B0=!1)=>{if(!J.onContentFilter)return!1;if(!c1)c1=!0,K1=J.onContentFilter({completedToolUse:B0})!==!1;return K1},N1=J.serverSideFallbackModel?C3({requestedModel:J.serverSideFallbackModel,maxPendingBytes:y1,onOutcome:J.onServerSideFallbackOutcome,onRefusalAfterToolUse:J.onContentFilter?()=>w4(!0):void 0}):void 0,Q1=(B0)=>{if(!D0)return null;let y0=SY(D0,B0,y1);if(y0?.type==="content-filter"&&J.onContentFilter)return w4()?IY(J.contentFilterModel):null;if(y0?.type==="complete")J.onComplete?.(y0.finishReason);return null},X1=(B0,y0=!1)=>M1?TY(M1,B0,y1,y0):B0,u0=()=>{if(n)return;n=!0,Z.releaseLock()},H1=async(B0)=>{try{await Z.cancel(B0)}catch{}finally{u0()}},_4=(B0={})=>({chunks:H,pulls:z,inputBytes:q,outputBytes:v,pendingChars:N.length,sseErrorPending:Y0.pending.length,sseFinishPending:D0?.pending.length??0,sseFinishDisabled:D0?.disabled??!1,serverFallbackPending:N1?.pendingLength()??0,rewriteMs:U1(P),totalMs:U1(_0()-I),...y?RY(y):{},...B0}),M0=(B0,y0={})=>{J.perf?.(B0,_4(y0))};J.perf?.("stream_tool_prefix_wrapper_created",{status:$.status,hasBody:!0});let l4=new ReadableStream({async pull(B0){if(z++,!b)b=!0,M0("stream_tool_prefix_first_pull");while(!0){let y0=_0();try{let{done:O1,value:p1}=await Z.read(),F4=U1(_0()-y0);if(O1){let A0=W.decode();if(y&&!K)y3(y,A0,y1,(R0)=>{let h$=R0.message;if(R0.type==="message_start"&&h$)o(()=>J.onMessageStart?.(h$));if(R0.type==="message_delta"&&(R0.usage||R0.stopReason))o(()=>J.onMessageDelta?.({...R0.usage?{usage:R0.usage}:{},...R0.stopReason?{stopReason:R0.stopReason}:{}}))});if(K){let R0=X.encode(A0).byteLength;if(J0+R0<=y1)N0+=A0,J0+=R0;else k=!0}if(K&&!k)try{let R0=JSON.parse(N0);if(R0&&typeof R0==="object"&&!Array.isArray(R0))o(()=>J.onMessageResponse?.(R0))}catch{}let a1=_0(),v$=N1?N1.push(A0)+N1.flush():A0,u4=X1(v$,!0),t1=K?Q1(u4):c3(Y0,A0,y1,J.onRelayUpstreamError)??Q1(u4);if(t1)throw M0("stream_tool_prefix_retryable_error",{error:t1.message,providerErrorType:t1.providerErrorType}),await H1(t1),t1;let k$=f3(`${N}${u4}`,!0);if(P+=_0()-a1,k$.ready){let R0=X.encode(k$.ready);v+=R0.byteLength,B0.enqueue(R0)}if(M0("stream_tool_prefix_rewrite",{readMs:F4}),u0(),J.onStreamEnd)try{await J.onStreamEnd()}catch{}B0.close();return}H++,q+=p1.byteLength;let f=W.decode(p1,{stream:!0});if(K){let A0=p1.byteLength;if(J0+A0<=y1)N0+=f,J0+=A0;else k=!0}if(y&&!K)y3(y,f,y1,(A0)=>{let a1=A0.message;if(A0.type==="message_start"&&a1)o(()=>J.onMessageStart?.(a1));if(A0.type==="message_delta"&&(A0.usage||A0.stopReason))o(()=>J.onMessageDelta?.({...A0.usage?{usage:A0.usage}:{},...A0.stopReason?{stopReason:A0.stopReason}:{}}))});let dJ=_0(),lJ=N1?N1.push(f):f,R1=X1(lJ),d1=K?Q1(R1):c3(Y0,f,y1,J.onRelayUpstreamError)??Q1(R1);if(d1)throw M0("stream_tool_prefix_retryable_error",{error:d1.message,providerErrorType:d1.providerErrorType,readMs:F4,lastChunkBytes:p1.byteLength}),u0(),d1;let S4=N+R1,s1=f3(S4);if(P+=_0()-dJ,N=s1.pending,s1.ready){let A0=X.encode(s1.ready);v+=A0.byteLength,B0.enqueue(A0)}let E1=_0();if(H===1||H%25===0||E1-E>5000)E=E1,M0("stream_tool_prefix_progress",{readMs:F4,lastChunkBytes:p1.byteLength});if(s1.ready)return}catch(O1){throw M0("stream_tool_prefix_error",{error:O1 instanceof Error?O1.message:String(O1)}),u0(),O1}}},async cancel(B0){M0("stream_tool_prefix_cancel",{reason:B0 instanceof Error?B0.message:String(B0)});try{await Z.cancel(B0)}finally{u0()}}});return new Response(l4,{status:$.status,statusText:$.statusText,headers:$.headers})}var EY="__OPENCODE_ANTHROPIC_AUTH_COMMAND_HANDLED__",PZ="~effect/http/HttpServerResponse",xZ="~effect/http/Cookies",IZ="~effect/http/HttpBody",fY="~effect/ErrorReporter/ignore",vY="https://api.anthropic.com/v1/messages";function CZ($){return new Response(JSON.stringify({type:"error",error:{type:"invalid_request_error",message:$.message}}),{status:400,headers:{"content-type":"application/json"}})}var kY=60000,hY=60000,bY=5000,MZ=200,xV=240,gY=xV,yY=600000,AJ=new Map;function mY($,J){return($?.accounts??[]).some((Z)=>Z.id===J&&Z.enabled!==!1&&Z0(Z))}function cY($){let J=($?.accounts??[]).find((Z)=>Z.enabled!==!1&&Z0(Z));if(d4($)==="fallback-first"&&J)return{activeId:J.id,route:"fallback-first"};return{activeId:"main",route:"main"}}function RZ($,J){if($?.activeId==="main"||$?.activeId&&mY(J,$.activeId))return $;return cY(J)}function IV($,J,Z){let W=Date.now()-$.lastUpdated;if(!$.activeId||W<0||W>yY)return RZ(Z,J);return RZ($,J)}async function pY($,J,Z){let W;try{W=await J()}catch(X){return T.warn("sidebar","account storage reload failed; routing preserved",{message:X instanceof Error?X.message:String(X)}),{...$.activeId?{activeId:$.activeId,route:$.route}:Z??{activeId:"main",route:"main"},freshStorage:null}}return{...IV($,W,Z),freshStorage:W}}async function dY($){await cJ()?.beforeStorageLoad?.();let J;try{J=await M($)}catch{return{activeId:"main",route:"main",freshStorage:null}}finally{await cJ()?.afterStorageLoad?.()}await cJ()?.beforeSidebarRead?.();let Z=await qV();return{...IV(Z,J),freshStorage:J}}var lY=4,uY=25,iY=1,EZ=!1;function pJ(){return process.env.OPENCODE_ANTHROPIC_AUTH_PERF==="1"}function V0(){return performance.now()}function q0($){return Math.round($*10)/10}function fZ($){return Math.floor(Math.random()*Math.max(0,$))}function TJ($){if(typeof $==="string")return $;if($ instanceof URL)return $.toString();return $.url}function qJ($,J){return J?.method??($ instanceof Request?$.method:void 0)}async function p7($,J){if(J?.body!==void 0)return J.body;if(!($ instanceof Request)||$.body===null)return;try{return await $.clone().text()}catch{return}}function vZ($){return $ instanceof Error?$.message:String($)}function nY(){if(EZ||!1||!pJ())return;EZ=!0;let $=100,J=250,Z=V0()+$;setInterval(()=>{let W=V0(),X=W-Z;if(Z=W+$,X<J)return;x0("[perf] opencode event_loop_lag",{lagMs:q0(X),thresholdMs:J})},$).unref?.()}function oY($){let J=V0(),Z={requestId:String(iY++),start:J,last:J,mark(W,X){let K=V0();if(pJ())x0("[perf] opencode request stage",{requestId:Z.requestId,stage:W,deltaMs:q0(K-Z.last),totalMs:q0(K-Z.start),...X});Z.last=K},done(W,X){let K=V0();if(pJ())x0("[perf] opencode request done",{requestId:Z.requestId,stage:W,deltaMs:q0(K-Z.last),totalMs:q0(K-Z.start),...X});Z.last=K}};if(pJ())x0("[perf] opencode request start",{requestId:Z.requestId,...$});return Z}function CV($,J){let Z=/^msg_([0-9a-fA-F]{12})/.exec($);if(!Z)return;let W=BigInt(`0x${Z[1]}`);if(W<=0n)return;let K=`msg_${(W-1n).toString(16).padStart(12,"0")}${"z".repeat(14)}`,N=J&&K<=J?`${J}z`:K;if(N.length>128||N>=$)return;return N}async function kZ($,J,Z,W={}){let X=$.client.session,K=await GJ($.client,J),N={path:{id:J},body:{noReply:W.noReply??!0,parts:[{type:"text",text:Z,ignored:!0}]}};if(W.beforeActiveAssistant){let H=W.latestPreparedMessageId?.(),z=K?.latestUserMessageId,q=H&&(!z||H>z)?H:z,v=K?.latestAssistantMessageId?CV(K.latestAssistantMessageId,q):void 0;if(!v)return!1;N.body.messageID=v}if(K?.agent)N.body.agent=K.agent;if(K?.model)N.body.model=K.model;if(K?.variant)N.body.variant=K.variant;if(W.canSend&&!W.canSend())return!1;if(N.body.messageID)W.onPreparedMessageId?.(N.body.messageID);if(typeof X?.promptAsync==="function")return await X.promptAsync(N),!0;if(typeof X?.prompt==="function")return await Promise.resolve(X.prompt(N)),!0;throw Error("OpenCode session prompt API is unavailable for ignored replies.")}function rY(){let $=Error(EY);throw $[PZ]=PZ,$[fY]=!0,$.status=204,$.statusText=void 0,$.headers={},$.cookies={[xZ]:xZ,cookies:{}},$.body={[IZ]:IZ,_tag:"Empty"},$}function sY($){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 aY($){if($.some((J)=>J.includes("<use_parallel_tool_calls>")))return!1;return $.push(bZ),!0}var tY={input:0,output:0,cache:{read:0,write:0}};function x1($){return $}var eY="Fable content filter detected. Switched to Opus 4.8 for a 10-response recovery window while keeping the Fable cache warm.",$2="Fable recovery window complete. Returning to Fable 5.";function J2($){if(T1($))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(H4($)){let J=f$($);return`${J} content filter detected. Switched to Opus 4.8 for a 10-response recovery window while keeping the ${J} cache warm.`}return eY}function Z2($){if(T1($))return"Opus 5 recovery window complete. Returning to Opus 5.";if(H4($))return`Recovery window complete. Returning to ${f$($)}.`;return $2}function f$($){if(k4($))return"Opus 5.5";if(T1($))return"Opus 5";if(H4($)){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 V2($,J){return`Anthropic safety fallback active: ${f$($)} → ${f$(J)}. Follow-up requests may remain on the fallback model for about one hour.`}function W2($){return`Anthropic safety fallback ended. Returning to ${f$($)}.`}function j2($){let J=$["claude-opus-4-8"]??$["claude-opus-4-5"]??Object.values($)[0];if(!J)return $;return{...$,...Object.fromEntries(Object.values(u5).map((Z)=>{let W=H4(Z.id)?p5:c5;return[Z.id,{...J,id:Z.id,name:Z.name,api:J.api?{...J.api,id:Z.id}:void 0,cost:{input:W.input,output:W.output,cache:{read:W.cacheRead,write:W.cacheWrite5m}},limit:{...J.limit??{},context:d5,output:l5},capabilities:{...J.capabilities??{},reasoning:!0,attachment:!0,toolcall:!0},release_date:i5(Z.id)}]})),...$[M$]?{}:{[M$]:{...J,id:M$,name:"Claude Opus 5.5",api:J.api?{...J.api,id:M$}:void 0,cost:{input:R$.input,output:R$.output,cache:{read:R$.cacheRead,write:R$.cacheWrite5m}},limit:{...J.limit??{},context:o5,output:r5},capabilities:{...J.capabilities??{},reasoning:!0,attachment:!0,toolcall:!0},release_date:n5,variants:MV()}}}}var Y2=["low","medium","high","xhigh","max"];function MV(){return Object.fromEntries(Y2.map(($)=>[$,{thinking:{type:"adaptive",display:"summarized"},effort:$}]))}function X2($){return Object.fromEntries(Object.entries($).map(([J,Z])=>{let W=Z.api?.id??Z.id??J;return[J,s5(W)||n1(W)?{...Z,variants:MV()}:Z]}))}function G2($){return Object.fromEntries(Object.entries($).map(([J,Z])=>[J,{...Z,cost:tY}]))}var d7=100,hZ=5000,z2=lZ;function I1(){return process.env.OPENCODE_ANTHROPIC_AUTH_CLAUSTRUM_CONNECTION_FILE?.trim()||process.env.CLAUSTRUM_SUBC_CONNECTION?.trim()||void 0}function K2($){let J;try{J=JSON.parse($.payload)}catch{return $.payload.trim()||void 0}if(!J||typeof J!=="object")return;let Z=J;if(typeof Z.access_token==="string")return Z.access_token;if(typeof Z.access==="string")return Z.access;return}function F1($,J){if(!$)return;let Z=K2($);if(!Z)return;if($.expiresAtMs!==null&&$.expiresAtMs<=J)return;return Z}var N2=async($,J={})=>{let Z={setTimeout:globalThis.setTimeout,clearTimeout:globalThis.clearTimeout,setInterval:globalThis.setInterval,clearInterval:globalThis.clearInterval,...J},W=J.claustrumNow??Date.now,X=J.clearClaustrumRefreshErrorPersistent??oZ,K=J.authorize??n7;nY();let{client:N}=$,H=globalThis.fetch,z=uZ(),q=600000,v=50,P=new Map;function b(){let V=Date.now();for(let[j,Y]of P)if(V-Y.createdAt>q)P.delete(j)}function n(V,j){if(b(),P.size>=v){let Y="",G=1/0;for(let[O,U]of P)if(U.createdAt<G)G=U.createdAt,Y=O;if(Y)P.delete(Y)}P.set(V,j)}function E(V){b();let j=P.get(V);if(!j)return;if(Date.now()-j.createdAt>q){P.delete(V);return}return j}let I;try{I=await M(z)}catch(V){let j=V instanceof Error?V.message:String(V);throw Error(`Failed to load account store: ${j}`,{cause:V instanceof Error?V:void 0})}let y={state:"idle"},N0=null;function J0(){if(N0)return N0;let V={project_root:$.directory??process.cwd(),harness:"opencode",session:`store-${U4(z)}`};return N0=x9({paths:D7(),connect:()=>J.claustrumEnrollmentConnect?.()??R5({projectRoot:$.directory??process.cwd(),storagePath:z,identity:V,logger:(j)=>T.warn("claustrum","unknown enrollment error class",{errorClass:j}),...I1()&&{connectionFile:I1()}}),setTimeoutImpl:Z.setTimeout,clearTimeoutImpl:Z.clearTimeout,onStatus:(j)=>{let Y=y;if(y=j,j.state==="unavailable"&&(Y.state!=="unavailable"||Y.code!==j.code))T.warn("claustrum","enrollment ceremony unavailable",{error:j.code});else if(j.state==="approved"&&Y.state!=="approved")T.info("claustrum","enrollment ceremony approved",{generation:j.tokenGeneration})},...J.claustrumEnrollmentPollIntervalMs!==void 0&&{pollIntervalMs:J.claustrumEnrollmentPollIntervalMs}}),N0}function k(){N0?.release(),N0=null,y={state:"idle"}}function o(V){return Boolean(V&&L0(V)==="claustrum"&&V.claustrum?.scopedRoster===!0)}let Y0=new Map;function D0(V=z,j=$.directory,Y={}){let G=Y0.get(V);if(!G){let O={project_root:j??process.cwd(),harness:"opencode",session:`store-${U4(V)}`};G=new v5({storagePath:V,tokenPath:D7().tokenPath,connect:()=>J.claustrumScopedConnect?J.claustrumScopedConnect():f5({storagePath:V,identity:O,...I1()&&{connectionFile:I1()}}),pollIntervalMs:J.custodyManifestPollIntervalMs??2000,onRoster:async()=>{await $1.refreshQuotaForDueAccounts().catch(()=>{}),await Z4().catch(()=>{})},...Y}),Y0.set(V,G)}return G}function M1(V=z){Y0.get(V)?.close(),Y0.delete(V)}if(o(I))D0(z,$.directory).start();else if(L0(I)==="claustrum")J0();let c1=x3(process.env.OPENCODE_ANTHROPIC_AUTH_FALLBACK_MODE),K1=new R7,w4=new v7,N1=new C7,Q1=new O7,X1=new Map,u0=new Map,H1=new Map,_4=new Map,M0=new Set,l4=new Map,B0=new Map,y0=new Map,O1=new Map,p1=new HV({path:process.env.OPENCODE_ANTHROPIC_AUTH_ROUTING_STATE_FILE||QV(z)}),F4=async(V,j)=>{try{let Y=await M(z),G=Y?.accounts.find((O)=>O.id===V&&Z0(O));if(!Y||!G)return;if(G.lastQuotaRefreshError?.checkedAt!==void 0&&G.lastQuotaRefreshError.checkedAt>j.checkedAt)return;if(s7(G.quota)>j.checkedAt)return;G.lastQuotaRefreshError=j,await z1(Y,z,{accounts:[V]})}catch(Y){T.warn("quota","failed to persist fallback backoff state",{accountId:V,error:Y instanceof Error?Y.message:String(Y)})}},f=new jV({storage:I,fetchQuotaSnapshot:async(V)=>{let j=await M(z);if(o(j))return D0(z,$.directory).fetchQuota(V.accountId??"main");return D5({accessToken:V.accessToken})},onMainQuotaFetched:async(V,j,Y,G,O,U)=>{try{let Q=await M(z)??g0(),L=N5(Q);if(L&&L.checkedAt>=G&&Y8(L.quota,Q,L.checkedAt)>Date.now()){f.seedMainFromStorage(Q,J1);return}Q.quota=Q.quota??{},Q.quota.mainQuota=V,Q.quota.mainQuotaCheckedAt=j,Q.quota.mainQuotaToken=Y,Q.quota.mainLastQuotaApiError=void 0,Q.quota.mainQuotaErrorGeneration=O,Q.quota.mainQuotaErrorClearedAt=S$(Q.quota.mainQuotaErrorClearedAt,U),await z1(Q,z,{mainQuota:!0})}catch(Q){T.warn("quota","failed to persist main quota",{error:Q instanceof Error?Q.message:String(Q)})}},onApiError:async(V,j)=>{try{let Y=await M(z)??g0();Y.quota=Y.quota??{},Y.quota.mainLastQuotaApiError=V,Y.quota.mainQuotaErrorGeneration=j,await z1(Y,z,{mainQuota:!0})}catch(Y){T.warn("quota","failed to persist backoff state",{error:Y instanceof Error?Y.message:String(Y)})}},onFallbackQuotaFetched:async(V,j,Y,G)=>{try{let O=await M(z),U=O?.accounts.find((L)=>L.id===V&&Z0(L));if(!O||!U)return;let Q=s7(U.quota);if(Q>=G&&Y8(U.quota,O,Q)>Date.now()){f.seedFallbacksFromAccounts(O.accounts.filter(Z0));return}if(U.lastQuotaRefreshError?.checkedAt!==void 0&&U.lastQuotaRefreshError.checkedAt>G)return;U.quota=j,U.lastQuotaRefreshError=void 0,await z1(O,z,{accounts:[V]})}catch(O){T.warn("quota","failed to persist fallback quota",{accountId:V,error:O instanceof Error?O.message:String(O)})}},onFallbackApiError:F4});async function dJ(V,j,Y){if(t4===V&&J1===j)return;let G=W4!==void 0&&Y!==void 0&&W4!==Y;t4=V,J1=j;let O=f.setMainQuotaAccountIdentity(j,V.startsWith("sk-ant-oat"),G);if(j===void 0)return;let U=await M(z),Q=U?.quota?.mainLastQuotaApiError;if(!U||!Q||Q.accountIdentity===j||!V.startsWith("sk-ant-oat")&&Q.accountIdentity===void 0)return;U.quota=U.quota??{},U.quota.mainLastQuotaApiError=void 0,U.quota.mainQuotaErrorGeneration=Math.max(U.quota.mainQuotaErrorGeneration??0,O??f.getMainQuotaErrorGeneration()),U.quota.mainQuotaErrorClearedAt=S$(U.quota.mainQuotaErrorClearedAt,f.getMainQuotaErrorClearedAt()??Date.now()),await z1(U,z,{mainQuota:!0})}async function lJ(V,j){let Y=await M(z),G=Y?.accounts.find((O)=>O.id===V&&Z0(O));if(!Y||!G||G.anthropicAccountUuid===j)return;G.anthropicAccountUuid=j,await z1(Y,z,{accounts:[V]})}async function R1(V,j,Y,G){let O=V,U=n$.get(O);if(U){let L=await U.promise;return G===U.recordVersion?L:{...L,stale:!0}}let Q=(async()=>{let L=++J9,B=i0,S=await I$(V,j,Y??B),x=B,l=await M(z),K0=l?.main?.profile?.providerAccountUuid??l?.main?.profile?.accountIdentity,c0=x1(Y)??x1(S.accountUuid),P0=Y?c0:V.startsWith("sk-ant-oat")?c0??x1(K0):void 0,b0=L0(l)!=="claustrum"?"na":K0===void 0||c0===void 0?"unknown-identity":K0!==void 0&&c0!==void 0&&K0!==c0?"on-identity-mismatch":"on-vault-served";if(L!==J9){let T0=t4!==V||J1!==x;return{quotaKey:x,providerAccountUuid:P0,generation:f.getMainQuotaIdentityGeneration(),stale:T0,state:b0}}if(await dJ(V,x,P0),V.startsWith("sk-ant-oat")&&P0===void 0)f.clearMain();if(W4=P0,V.startsWith("sk-ant-oat"))V4=V;return{quotaKey:x,providerAccountUuid:P0,generation:f.getMainQuotaIdentityGeneration(),stale:!1,state:b0}})();n$.set(O,{promise:Q,recordVersion:G});try{return await Q}finally{if(n$.get(O)?.promise===Q)n$.delete(O)}}let d1=I?.quotaHeaderFeed?.enabled===!0?new ZV:null,S4=new Map;async function s1(V,j,Y,G,O){if(O?.aborted)return;let U=`${j??V}`,Q=S4.get(U);if(!Q){let L=E5({accessToken:Y,accountIdentity:j,providerAccountUuid:G,fetchImpl:H,signal:O}).catch((B)=>{T.debug("quota","failed to hydrate account profile",{account:V,error:B instanceof Error?B.message:String(B)});return}).finally(()=>{if(S4.get(U)===L)S4.delete(U)});Q=L,S4.set(U,Q)}if(!O)return Q;return new Promise((L)=>{let B=!1,S=(l)=>{if(B)return;B=!0,O.removeEventListener("abort",x),L(l)},x=()=>S(void 0);if(O.addEventListener("abort",x,{once:!0}),O.aborted)x();Q.then(S)})}async function E1(V){try{return await nZ({accountId:V.accountId,profile:V.profile,accountIdentity:V.accountIdentity},z)}catch(j){T.debug("quota","failed to persist account profile",{account:V.accountId,error:j instanceof Error?j.message:String(j)});return}}async function A0(V,j,Y,G){if(process.env.OPENCODE_ANTHROPIC_AUTH_DISABLE_PROFILE_HYDRATION==="1")return V;let O=Date.now(),U=J1;if(j&&V.main?.profile&&G&&V.main.profile.providerAccountUuid!==G)V.main.profile=void 0,E1({accountId:"main",accountIdentity:U,providerAccountUuid:G,accessToken:j,profile:void 0}).catch(()=>{});if(j&&V.main?.profile&&U!==void 0&&V.main.profile.accountIdentity===void 0)V.main.profile={...V.main.profile,accountIdentity:U},E1({accountId:"main",accountIdentity:U,providerAccountUuid:G,accessToken:j,profile:V.main.profile}).catch(()=>{});if(j&&!H8(V.main?.profile,O)){let Q=await s1("main",void 0,j,G,Y);if(Q)V.main={type:"opencode",provider:"anthropic",profile:Q},E1({accountId:"main",accountIdentity:U,providerAccountUuid:G,accessToken:j,profile:Q}).catch(()=>{})}for(let Q of V.accounts){if(Y?.aborted)break;if(!Z0(Q))continue;let L=m0(Q,V),B=W1(V,Q,L)&&!f1.has(Q.id),S=B?l1(Q,V):void 0;if(B&&(!S?.accessToken||!S.served))continue;let x=S?.accessToken??Q.access;if(!x)continue;if(Q.profile&&!Q8(Q.profile,Q.id))Q.profile=void 0,E1({accountId:Q.id,accountIdentity:Q.id,accessToken:x,profile:void 0}).catch(()=>{});if(Q.profile&&Q.profile.accountIdentity===void 0)Q.profile={...Q.profile,accountIdentity:Q.id},E1({accountId:Q.id,accountIdentity:Q.id,accessToken:x,profile:Q.profile}).catch(()=>{});if(H8(Q.profile,O))continue;let l=await s1(Q.id,Q.id,x,void 0,Y);if(l)Q.profile=l,E1({accountId:Q.id,accountIdentity:Q.id,accessToken:x,profile:l}).catch(()=>{})}return V}let a1=new Set,v$=new Set;async function u4(V,j){let Y=await M(z)??g0();if(V.accountId==="main"){let O=V.mainQuotaIdentity?.quotaKey;if(!O||j.quota.accountIdentity!==O)return T.trace("quota","skipped quota persistence without verified main account identity"),null;Y.quota=Y.quota??{},Y.quota.mainQuota={...j.quota,accountIdentity:O},Y.quota.mainQuotaCheckedAt=j.checkedAt,await z1(Y,z,{mainQuota:!0});let Q=(await M(z))?.quota?.mainQuota,B=Boolean(Q&&Q.accountIdentity===O)?iZ(Q,j.quota):j.quota;return Q?{...j,quota:B,checkedAt:j.checkedAt}:j}if(!await B5({accountId:V.accountId,authLineageId:V.authLineageId,quota:j.quota,anthropicAccountUuid:V.anthropicAccountUuid??void 0},z)){let O=`${V.accountId}:${V.authLineageId??""}`;if(!v$.has(O))v$.add(O),T.debug("quota","skipped stale fallback quota persistence after lineage change",{accountId:V.accountId,servedLineage:V.authLineageId});if(f.getAllFallbacks().get(V.accountId)===j)f.clearFallback(V.accountId);return null}return j}function t1(V){T.warn("quota","failed to persist harvested response quota",{error:V instanceof Error?V.message:String(V)})}function k$(V){let j=V instanceof Error?V.name:typeof V,Y=V instanceof Error?V.message:String(V),G=`${j}:${Y}`;if(a1.has(G))return;a1.add(G),T.warn("quota","failed to normalize response quota headers",{error:Y})}function R0(V){if(!V||typeof V!=="object")return;let j=V,Y=j.credential_id;if(typeof Y==="string"&&Y&&Y!=="main")return Y;let G=j.vault;if(G&&typeof G==="object"){let O=G.credential_id;if(typeof O==="string"&&O&&O!=="main")return O}return}async function h$(V,j){if(!d1)return;if(V.accountId==="main"&&!V.mainQuotaIdentity?.quotaKey)return;let Y=await M(z)??g0(),O=(await f0?.())?.type==="oauth",U=V.accountId==="main"?Y.main:Y.accounts.find((K0)=>K0.id===V.accountId),Q=R0(U),L=JV({storage:Y,mainOAuthConfigured:O}),B=j.checkedAt,S={five_hour:j.quota.five_hour,seven_day:j.quota.seven_day,bindingWindow:j.quota.bindingWindow,fallbackAdvised:j.quota.fallbackAdvised,scoped:j.quota.scoped,extraUsage:j.quota.extraUsage,fieldSources:j.quota.fieldSources},x=Q??(V.accountId==="main"?V.mainQuotaIdentity?.quotaKey??"main":V.accountId),l=Q?{identity_source:"credential_id",credential_id:Q,schema_version:E$,provider:"anthropic",configured_account_count:L,observed_at_ms:B,anthropic_account_uuid:V.anthropicAccountUuid??null,quota:S,accountKey:x}:V.accountId==="main"&&V.mainQuotaIdentity?.quotaKey?{identity_source:"account_ref",account_ref:V.mainQuotaIdentity.quotaKey,schema_version:E$,provider:"anthropic",configured_account_count:L,observed_at_ms:B,anthropic_account_uuid:V.anthropicAccountUuid??null,quota:S,accountKey:x}:V.accountId==="main"?{identity_source:"none",schema_version:E$,provider:"anthropic",configured_account_count:L,observed_at_ms:B,anthropic_account_uuid:V.anthropicAccountUuid??null,quota:S,accountKey:x}:{identity_source:"account_ref",account_ref:V.accountId,schema_version:E$,provider:"anthropic",configured_account_count:L,observed_at_ms:B,anthropic_account_uuid:V.anthropicAccountUuid??null,quota:S,accountKey:x};await d1.publish(l)}function RV(V){T.debug("quota","failed to publish quota header feed",{error:V instanceof Error?V.message:String(V)})}function R8(V,j){try{if(!VV(V)){T.trace("quota","skipped non-quota response headers",{account:j.accountId});return}let Y=WV(V),G=j.accountId==="main"?j.mainQuotaIdentity:void 0;if(j.accountId==="main"){if(!G||f.getMainQuotaIdentityGeneration()!==G.generation){T.trace("quota","discarded stale main quota headers",{boundIdentity:G?.quotaKey,currentGeneration:f.getMainQuotaIdentityGeneration()});return}}let O=j.accountId==="main"?f.pushMainFromHeaders(G?.quotaKey,Y):f.pushFallbackFromHeaders(j.accountId,Y,{authLineageId:j.authLineageId});if(!O)return;(async()=>{let U=O;try{let Q=await u4(j,O);if(Q===null)return;U=Q}catch(Q){t1(Q)}Z4().catch(()=>{}),await h$(j,U)})().catch(RV),T.debug("quota","harvested response quota",{account:j.accountId,fiveHourPercent:O.quota.five_hour?.usedPercent,sevenDayPercent:O.quota.seven_day?.usedPercent,source:"headers"})}catch(Y){k$(Y)}}let E0=null,b$=new Map,i4=new Map,f1=new Set,g$=new Set,uJ=new Set,y$=new Map,n4=K$(I?.claustrum,process.env),EV=new O$({path:n4,provider:"anthropic",serve:"anthropic-auth"}),m$,c$="absent",E8,A4=new Set,f8=0;function v8(V,j){let Y=`${V}\x00${j}`;if(A4.has(Y))return!1;if(A4.size>=256){let G=A4.values().next().value;if(G)A4.delete(G)}return A4.add(Y),!0}function iJ(V,j){if(!v8(V,j))return;T.warn("claustrum","manifest handle resolution fallback",{id:V,reason:j})}async function o4(){let V=await EV.read();c$=V.status,E8=V.status==="ignored"?V.reason:void 0,m$=V.status==="ready"?V.manifest:void 0}function k8(V){let j=new Map;for(let Y of V.accounts){if(!Z0(Y)||!Y.label)continue;j.set(Y.label,(j.get(Y.label)??0)+1)}return new Set([...j].filter(([,Y])=>Y>1).map(([Y])=>Y))}function m0(V,j){let Y=N$({account:V,manifest:m$,duplicateOAuthLabels:k8(j)});if(Y.status==="resolved"&&Y.source==="manifest")return A4.delete(`${V.id}\x00legacy`),Y;if(c$==="ignored"&&E8==="foreign-serve")return iJ(V.id,"foreign-serve"),{status:"unresolved",reason:"foreign-serve"};else if(c$==="invalid")iJ(V.id,"invalid-manifest");else if(Y.status==="resolved"&&Y.source==="legacy")iJ(V.id,"legacy");return Y}async function fV(V){let j=M9(V,m$);if(j.length===0)return{storage:V,enrolledAccountIds:[]};let Y=await d$();if(!Y)return{storage:V,enrolledAccountIds:[]};let G=[];for(let O of j)try{let U=await Y.get(O.handle,R4);if(U.credentialId!==O.credentialId||!U.accountId||!F1(U,W())){T.warn("claustrum","manifest account enrollment verification failed",{label:O.label,reason:U.credentialId!==O.credentialId?"credential-id-mismatch":!U.accountId?"missing-account-id":"credential-unusable"});continue}let Q=R9({storage:V,binding:O,providerAccountUuid:U.accountId,now:W()});await fJ(Q,z),G.push(Q.id),V=await M(z)??V,await r4(Q.id,O.handle),T.info("claustrum","manifest account enrolled",{id:Q.id,label:Q.label})}catch(U){T4(O.label,U,O.handle),T.warn("claustrum","manifest account enrollment failed",{label:O.label,error:U instanceof u7?U.code:U instanceof Error?U.name:typeof U})}return{storage:V,enrolledAccountIds:G}}function e1(V){return{id:"main",label:"main",type:"oauth",refresh:V.refresh??"",access:V.access,expires:V.expires}}async function vV(V){let j=P4;if(!j)return;let Y=await M(z).catch(()=>null);if(L0(Y)!=="local")return;let G=e1(await V().catch(()=>({}))),O=Y?m0(G,Y):{status:"unresolved",reason:"missing-entry"};if(O.status!=="resolved"||O.source!=="manifest"){P4=void 0;return}let U=20,Q=100;for(let L=0;L<U;L++){let B=await V().catch(()=>{return}),S=await wV(j,B,{manifestPath:n4,entry:{label:"main",handle:O.handle,credentialId:PJ(O,"main")},beforeRemove:async()=>{await _V(o7(z),j.credentialId,i4.get(O.handle)??0,Date.now())},remove:J.removeCustodyHandleManifestEntry});if(S==="cleared"||S==="refused"){if(P4=void 0,S==="cleared")await o4();return}if(S==="refused-transient")return;if(L+1<U)await new Promise((x)=>{let l=Z.setTimeout(x,Q);if(typeof l==="object"&&l&&"unref"in l)l.unref()})}P4=void 0,T.warn("claustrum","local login observation exhausted",{accountId:j.accountId,credentialId:j.credentialId,attempts:U,intervalMs:Q})}function nJ(V,j){return Boolean(V.anthropicAccountUuid&&j?.accountId&&V.anthropicAccountUuid!==j.accountId)}function h8(V){return new Response(JSON.stringify({type:"error",error:{type:"api_error",...V==="reauth"?{code:"claustrum_main_reauth",retryable:!1,message:"Claustrum main credential requires re-import; run ck auth import --replace."}:V==="takeover-incomplete"?{code:"TAKEOVER_INCOMPLETE_MAIN_REAL",retryable:!1,message:"Claustrum main binding is not active while local main material remains; mint a handle with `ck auth mint-handle` so this plugin can write the manifest entry."}:V==="identity-mismatch"?{code:"claustrum_main_identity_mismatch",retryable:!1,message:"Claustrum main credential identity differs from the persisted main identity; run ck auth set-identity."}:{code:"claustrum_main_unavailable",retryable:!0,message:"Claustrum main credential is cold; retry or run /claude-account local to leave custody and sign in again."}}}),{status:503,headers:{"content-type":"application/json"}})}async function b8(V,j){if(j.status!=="resolved"||j.source!=="manifest"||!V.claustrumHandle)return;await a7({id:V.id,path:z}),delete V.claustrumHandle}function g8(V){if(!v8(V,"manifest-state-clear-failed"))return;T.warn("claustrum","failed to clear legacy handle after manifest resolution",{id:V,reason:"manifest-state-clear-failed"})}function kV(V){return V.accounts.filter((j)=>Z0(j)&&W1(V,j,m0(j,V)))}let $4={getCache:()=>E0,now:()=>W(),resolveAccountCustodyHandle:m0,usableAccessToken:F1,hasIdentityMismatch:nJ,isBlocked:(V)=>f1.has(V),isReauth:(V)=>g$.has(V),getManifest:()=>m$},hV=(V,j,Y=X$(V,j,$4))=>{let G=w7({id:V,role:"fallback"},j,$4,Y);return G==="na"?"off":G};function y8(V){let j=y$.get(V);if(j===void 0)return!1;if(W()>=j)return y$.delete(V),!1;return!0}function l1(V,j,Y){if(!j)return{accessToken:V.access};let G=m0(V,j),O=G.status==="resolved"?G.handle:void 0;if(L0(j)==="claustrum"&&!O)return{};if(!O||!W1(j,V,G)||f1.has(V.id))return{accessToken:V.access};let U=E0;if(!U)return{};let Q=U.peek(O);if(nJ(V,Q))return{};let L=F1(Q,W());if(Q&&L){if((i4.get(O)??-1)>=Q.recordVersion){if(!y8(O))m8(V.id,O);return{}}return{accessToken:L,served:{accountId:V.id,handle:O,recordVersion:Q.recordVersion},credentialAccountId:x1(Q.accountId)}}if(Y?.warm!==!1&&!y8(O))m8(V.id,O);return{}}function oJ(V,j,Y){let G=l1(V,j,Y);if(!G.accessToken)return;return{token:G.accessToken,source:G.served?"vault":"sidecar"}}async function bV(V,j){let Y=E0;if(!Y)return;try{let G=await Y.get(j);if(F1(G,W()))await r4(V,j)}catch(G){T4(V,G,j),T.warn("claustrum","credential refresh failed",{accountId:V,error:G instanceof Error?G.message:String(G)})}}function m8(V,j){if(uJ.has(j))return;uJ.add(j),Z.setTimeout(()=>{uJ.delete(j),bV(V,j)},0)}let $1=new _5({quotaManager:f,isFallbackAccountVaultServed:(V,j)=>X$(V,j,$4),resolveFallbackAccessToken:oJ,isFallbackAccountVaultEnabled:(V,j)=>{let Y=j.accounts.find((O)=>O.id===V&&Z0(O));if(!Y)return!1;let G=m0(Y,j);return G.status==="resolved"&&(L0(j)==="claustrum"||G.source==="manifest")},onBackgroundRefresh:u8,setIntervalImpl:Z.setInterval,clearIntervalImpl:Z.clearInterval,onFallbackStorageChanged:()=>{Z4().catch(()=>{})}}),c8=async(V,j)=>{await X(V,j,z)},p8=(V)=>{M(z).then((j)=>{if(!j?.accounts.find((G)=>G.id===V.accountId&&Z0(G))?.lastRefreshError)return;return c8(V.accountId,V.handle)}).catch((j)=>{T.warn("claustrum","failed to clear stale refresh error",{accountId:V.accountId,error:j instanceof Error?j.message:String(j)})})},r4=async(V,j)=>{if(f1.delete(V),g$.delete(V),j)y$.delete(j);if(j)await c8(V,j).catch((Y)=>{T.warn("claustrum","failed to clear stale refresh error",{accountId:V,error:Y instanceof Error?Y.message:String(Y)})})},T4=(V,j,Y)=>{if(!(j instanceof u7))return;if(j.action==="gone")f1.add(V);if(j.action==="reauth")g$.add(V);if(j.action==="reduce_and_retry")E0?.reduceMinTtlMs();if((j.action==="retry"||j.action==="reauth")&&Y)y$.set(Y,W()+(j.action==="reauth"?z2:hZ))};async function p$(V,j="direct",Y){let G=E0;if(!G)return;if(V.recordVersion<=(i4.get(V.handle)??-1))return;if(!Y?.preserveServedVersion){let L=G.peek(V.handle);if(!L||L.recordVersion!==V.recordVersion)return}let O=`${V.handle}\x00${V.recordVersion}`,U=b$.get(O);if(U){await U;return}let Q=(async()=>{try{await G.reportAuthFailure(V.handle,401,{recordVersion:V.recordVersion},j),i4.set(V.handle,V.recordVersion)}catch(L){T4(V.accountId,L,V.handle),T.warn("claustrum","failed to report credential failure",{accountId:V.accountId,error:L instanceof Error?L.message:String(L)})}})();b$.set(O,Q);try{await Q}finally{if(b$.get(O)===Q)b$.delete(O)}}async function d$(){if(E0)return E0;let V=W();if(V<f8)return null;f8=V+hZ;let j={project_root:$.directory??process.cwd(),harness:"opencode",session:`store-${U4(z)}`};try{return E0=await i7({enabled:!0,identity:j,...I1()&&{connectionFile:I1()},...J.claustrumConnector&&{connector:J.claustrumConnector},now:W}),E0}catch(Y){return T.warn("claustrum","credential cache unavailable",{error:Y instanceof Error?Y.message:String(Y)}),E0=null,null}}async function d8(V,j,Y){let G,O=new Promise((Q)=>{G=()=>Q(void 0)}),U=Z.setTimeout(G,d7);if(typeof U==="object"&&U&&"unref"in U)U.unref();try{return await Promise.race([V.get(j,Y),O])}finally{Z.clearTimeout(U)}}async function l8(){await o4();let V=await M(z);if(!V)return{storage:null,enrolledAccountIds:[]};return fV(V)}async function u8(V=!1){let j=await l8(),Y=E0,G=j.storage;if(!G)return;Y=E0;let O=Y5(G)+1800000,U=j.enrolledAccountIds.length>0,Q=L0(G)==="claustrum"&&f0?await f0().catch(()=>{return}):void 0;if(Q?.type==="oauth"){let L=e1(Q),B=m0(L,G);if(W1(G,L,B)){let S=B.status==="resolved"?B.handle:void 0;if(S){if(!Y)Y=await d$();if(Y)try{let x=V?await d8(Y,S,O):await Y.get(S,O);if(F1(x,W()))await r4("main",S)}catch(x){T4("main",x,S)}}}}for(let L of G.accounts){if(L.enabled===!1||!Z0(L))continue;let B=m0(L,G);if(!W1(G,L,B))continue;if(B.status!=="resolved")continue;let S=B.handle;if(!Y)Y=await d$();if(V&&Y&&F1(Y.peek(S),W())){try{await b8(L,B)}catch{g8(L.id)}continue}if(!Y)continue;try{let x=V?await d8(Y,S,O):await Y.get(S,O);if(!F1(x,W()))T.debug("refresh","vault fallback credential unusable",{id:L.id,reason:"unusable"});else{try{await b8(L,B)}catch{g8(L.id)}await r4(L.id,S)}U=!0}catch(x){T4(L.id,x,S),U=!0}}if(U)Z4().catch(()=>{})}await o4();let rJ=I?kV(I):[],i8=I?k8(I):new Set;if(I)for(let V of i8)T.warn("claustrum","skipping legacy handle migration for duplicate label",{label:V});if(rJ.length>0)try{let V={project_root:$.directory??process.cwd(),harness:"opencode",session:`store-${U4(z)}`};E0=await i7({enabled:!0,identity:V,...I1()&&{connectionFile:I1()},...J.claustrumConnector&&{connector:J.claustrumConnector},now:W});let j=E0;if(j){let Y=Promise.all(rJ.map(async(U)=>{let Q=I;if(!Q)return;let L=m0(U,Q);if(L.status!=="resolved")return;let B=L.handle;try{let S=await j.get(B);if(F1(S,W())){if(L.source==="legacy"&&c$==="ready"&&U.label&&!i8.has(U.label)&&mZ(U.label)){let x=await cZ({path:n4,entry:{label:U.label,handle:B,credentialId:WJ(U.label)}});if(x.status==="written")await a7({id:U.id,path:z}),await o4();else if(x.status==="refused")T.warn("commands","manifest write failed",{id:U.id,reason:x.reason})}await r4(U.id,B)}}catch(S){T4(U.id,S,B),T.warn("claustrum","credential warmup failed",{accountId:U.id,error:S instanceof Error?S.message:String(S)})}})),G=!1,O=new Promise((U)=>{let Q=globalThis.setTimeout(()=>{G=!0,U()},d7);if("unref"in Q)Q.unref()});if(await Promise.race([Y,O]),G)T.warn("claustrum","credential warmup timed out",{accounts:rJ.length,timeoutMs:d7})}}catch(V){T.warn("claustrum","credential cache unavailable",{error:V instanceof Error?V.message:String(V)}),E0=null}let sJ=B7(I,{...$4,construction:!0}),gV=z$({mode:L0(I)==="claustrum"?"C":"L",mainSlot:"unknown",...sJ}),yV=L0(I)==="claustrum"&&gV.provisional===!0&&(sJ.fallbacks==="M"||sJ.fallbacks==="R")?Promise.resolve("not-started"):$1.startBackgroundRefresh(),aJ=new Q7,mV=new H7,u1=new WeakMap,l$=new WeakMap,s4=new Map;async function tJ(V){let j=(V.get("anthropic-beta")??"").split(",").map((Y)=>Y.trim()).filter(Boolean).sort();return{betas:j,betasHash:await S5(j.join(","))}}function n8(V){try{if(!V.request)return;let j=S9({request:V.request,source:V.source,accountId:V.accountId,synthetic:V.synthetic,betasHash:V.betasHash,requestedModel:V.requestedModel,onWarning:(G)=>T.warn("cache-diagnostics",G),message:V.message,receivedAt:V.receivedAt});if(!j.record||!j.messageId){T.debug("cache-diagnostics","skipped invalid response envelope",{status:V.status});return}T.debug("cache-diagnostics",A9(j.record));let Y=mV.capture(V.betasHash,V.betas);if(Y)T.debug("cache-diagnostics",Y);if(j.canary)T.warn("cache-diagnostics","short-gap previous_message_not_found",{message_id:j.canary.messageId,previous_message_id:j.canary.previousMessageId});if(V.trackSessionId)aJ.capture(V.trackSessionId,j.messageId,V.receivedAt)}catch(j){T.debug("cache-diagnostics","response observation failed",{status:V.status,error:j instanceof Error?j.message:String(j)})}}function o8(V,j,Y=!0){let G=u1.get(V);if(!G)return;if(j&&typeof j==="object"&&!Array.isArray(j)&&!Y)G.messageStart=j;G.dumpWrite=G.dumpWrite.then(()=>hJ(G.dump,{status:G.status,message:j,complete:Y})).catch(()=>{}),n8({...G,message:j,receivedAt:Date.now()})}function cV(V,j){let Y=u1.get(V);if(!Y)return;let G=Y.messageStart??{},O=G.usage&&typeof G.usage==="object"&&!Array.isArray(G.usage)?G.usage:{},U={...G,...j.usage?{usage:{...O,...j.usage}}:{},...j.stopReason?{stop_reason:j.stopReason}:{}};Y.dumpWrite=Y.dumpWrite.then(()=>hJ(Y.dump,{status:Y.status,message:U,complete:!0})).catch(()=>{})}function r8(V,j){let Y=Promise.resolve(hJ(j.dump,{status:j.status,message:null,complete:!1})).catch(()=>{});u1.set(V,{...j,dumpWrite:Y})}let eJ=null,$7=new M5({directory:process.env.OPENCODE_ANTHROPIC_AUTH_CACHEKEEP_REGISTRY_DIR||C5("opencode")}),u$=[],J7=new Map,q4=new I5({loadStorage:()=>M(z),setIntervalImpl:Z.setInterval,clearIntervalImpl:Z.clearInterval,onTrackedSessionsChanged:async(V)=>{await $7.publish(V),u$=await $7.list(V)},prepareBody:(V,j)=>{if(!new Headers(j.headers).get("anthropic-beta")?.split(",").map((Y)=>Y.trim()).includes(Y$))return V;try{let Y=JSON.parse(V),G=aJ.previousFor(j.id),O=G?.messageId??null;return e$(Y,O),s4.set(j.id,{sessionId:j.id,previousMessageId:O,...G?{previousMessageReceivedAt:G.receivedAt}:{},isSubagent:j.isSubagent,ttlSent:$J(Y),accountId:j.oauthAccountId??"main",synthetic:!0,requestedModel:typeof Y.model==="string"?Y.model:void 0}),JSON.stringify(Y)}catch{return V}},onResponse:async({target:V,bodyText:j,status:Y,data:G,receivedAt:O,attempt:U})=>{let Q=J7.get(U.id);if(Y===401&&Q)await p$(Q,"direct",{preserveServedVersion:!0});let L=s4.get(V.id);if(!L?.betasHash||!L.betas){s4.delete(V.id);return}try{let B=JSON.parse(j),S=B&&typeof B==="object"&&!Array.isArray(B)?B.diagnostics:void 0,x=S&&typeof S==="object"&&!Array.isArray(S)&&S.previous_message_id===L.previousMessageId?L.previousMessageId:void 0;if(x===void 0)return;n8({source:"prewarm_cachekeep",accountId:L.accountId,synthetic:L.synthetic,betasHash:L.betasHash,betas:L.betas,requestedModel:L.requestedModel,request:{...L,previousMessageId:x,ttlSent:$J(B)},trackSessionId:V.id,status:Y,message:G,receivedAt:O})}catch{}finally{s4.delete(V.id)}},onComplete:({attempt:V})=>{J7.delete(V.id)},prepareHeaders:async(V,j,Y)=>{let G,O,U=j.oauthAccountId;if(U&&U!=="main"){let Q=await M(z),L=Q?.accounts.find((B)=>B.id===U&&B.enabled!==!1&&Z0(B));if(!L||!Q)throw Error(`OAuth account ${U} is unavailable for cache prewarm`);if(o(Q)&&L.claustrumScopedCredentialId)G=(await D0(z,$.directory).authorize(U,Y.signal)).accessToken;else{let B=m0(L,Q);if(W1(Q,L,B)&&!f1.has(L.id)){let x=l1(L,Q,{warm:!1});if(!x.accessToken||!x.served)return;G=x.accessToken,O=x.served}else{let x=L;try{x=await $1.refreshAccount(L,Q)}catch(l){T.warn("cachekeep","fallback token refresh failed",{accountId:U,error:l instanceof Error?l.message:String(l)})}G=x.access}}if(!G)throw Error(`OAuth account ${U} has no access token for cache prewarm`)}else{let Q=await Z7();G=Q.accessToken,O=Q.served}if(!G)return V;try{let Q=JSON.parse(j.bodyText),L=await I$(G,typeof Q.model==="string"?Q.model:void 0,U==="main"?i0:U);if(V.delete("anthropic-beta"),m4(V,G,{body:Q,identity:L}),V.set("anthropic-beta",B$(V.get("anthropic-beta"),[T5])),Q.speed==="fast")wJ(V);let B=s4.get(j.id);if(B){let{betas:S,betasHash:x}=await tJ(V);B.betas=S,B.betasHash=x}}catch{m4(V,G)}if(O)J7.set(Y.id,O);return V}}),a4=new Map;async function Z7(){if(!f0)throw Error("prime: main auth loader is not available");let V=await f0();if(V.type!=="oauth")throw Error("prime: main account is not an OAuth account");let j=await M(z);if(L0(j)==="claustrum"){if(j?.claustrum?.scopedRoster){let O=await D0(z,$.directory).authorize("main");return{accessToken:O.accessToken,credentialAccountId:x1(O.accountId)}}let Y=l1(e1(V),j,{warm:!1});if(!Y.accessToken||!Y.served)throw Error("prime: main vault credential is unavailable");return{...Y,accessToken:Y.accessToken}}if(V.access&&(!V.expires||V.expires>Date.now()))return{accessToken:V.access};if(!eJ)throw Error("prime: main token refresh unavailable");try{return{accessToken:await eJ()}}catch(Y){if(Y instanceof Error)Y.isPrimeTokenRefresh=!0;throw Y}}async function pV(){let V=await Z7();await R1(V.accessToken);try{let j=await f.refreshMainWithMetadata(J1,V.accessToken);return{quota:j.quota,fresh:j.fetched}}catch(j){if(V.served&&j.status===401)await p$(V.served,"direct",{preserveServedVersion:!0});throw j}}async function dV(V){let j=await M(z),Y=j?.accounts.find((O)=>O.id===V&&O.enabled!==!1&&Z0(O));if(!Y||!j)throw Error(`prime: OAuth account ${V} is unavailable`);let G=await $1.refreshAccountQuota(Y,j);return await $1.save(j,[V]),{quota:G.account.quota??{},fresh:G.fetched}}async function lV(V){let j=performance.now(),Y,G,O;try{if(V==="main"){try{let T0=await Z7();Y=T0.accessToken,O=T0.served}catch(T0){return{ok:!1,...T0 instanceof Error&&T0.isPrimeTokenRefresh===!0&&{reason:"token-refresh"},error:T0 instanceof Error?T0.message:String(T0)}}G=A8}else{let T0=await M(z),Z1=T0?.accounts.find((j1)=>j1.id===V&&j1.enabled!==!1&&Z0(j1));if(!Z1||!T0)return{ok:!1,error:`prime: OAuth account ${V} is unavailable`};let j4=m0(Z1,T0);if(W1(T0,Z1,j4)&&!f1.has(Z1.id)){let j1=l1(Z1,T0,{warm:!1});if(!j1.accessToken||!j1.served)return{ok:!1,reason:"vault-cold",error:"prime: vault credential is unavailable"};Y=j1.accessToken,O=j1.served}else{let j1=Z1;try{j1=await $1.refreshAccount(Z1,T0)}catch(Y4){return{ok:!1,reason:"token-refresh",error:Y4 instanceof Error?Y4.message:String(Y4)}}Y=j1.access}G=A8}if(!Y)return{ok:!1,error:"prime: no access token available"};let U=e5(),Q=await I$(Y,G,V==="main"?i0:V),L=await FJ(JSON.stringify(U),{identity:Q}),B=new Headers({"content-type":"application/json"});m4(B,Y,{body:JSON.parse(L),identity:Q}),B.delete("content-length"),B.delete("transfer-encoding");let S=F$(vY,{baseURL:""}),x=S.url?.toString()??S.input.toString(),l=await fetch(x,{method:"POST",headers:B,body:L,signal:AbortSignal.timeout(30000)}),K0=Math.round(performance.now()-j);if(!l.ok){let T0=await l.text().catch(()=>"")||`HTTP ${l.status}`;if(l.status===401&&O)await p$(O,"direct",{preserveServedVersion:!0});return{ok:!1,status:l.status,ms:K0,error:T0}}let P0=(await l.json().catch(()=>null))?.usage,b0=P0&&(Number.isFinite(P0.input_tokens)||Number.isFinite(P0.output_tokens))?{inputTokens:Number.isFinite(P0.input_tokens)?P0.input_tokens:void 0,outputTokens:Number.isFinite(P0.output_tokens)?P0.output_tokens:void 0}:void 0;return{ok:!0,status:l.status,ms:K0,...b0&&{usage:b0}}}catch(U){return{ok:!1,ms:Math.round(performance.now()-j),error:U instanceof Error?U.message:String(U)}}}let s8={storagePath:z,loadStorage:()=>M(z),getAccountFingerprint:async(V)=>{let j=await W5(V,z);return j?e0(j):void 0},refreshQuota:async(V)=>{if(V==="main")return pV();return dV(V)},sendPrime:lV,recordSuccess:(V,j)=>j5(V,j,z),setIntervalImpl:Z.setInterval,clearIntervalImpl:Z.clearInterval,setTimeoutImpl:Z.setTimeout,clearTimeoutImpl:Z.clearTimeout},a8=N3(z,()=>new $V(s8),{slot:$.directory??"default",rebind:(V)=>V.updateOptions(s8)}),J4=a8.manager;if(q$(I))J4.start();function uV(V){let j=V.plan.sessionId,Y=T1(V.plan.requestedModel)?"Opus 5":"Fable",G=async()=>{let L=V.warmTarget;if(!L){T.debug("fable-fallback","cache warm skipped",{session:j,reason:"Opus response was not served by an OAuth route"});return}let B=AZ(L.bodyText,V.plan.requestedModel);if(!B.ok){T.warn("fable-fallback","cache warm skipped",{session:j,reason:B.reason});return}try{let S=await q4.prewarmNow({sessionId:j,url:L.url,headers:L.headers,bodyText:B.bodyText,oauthAccountId:K1.recoveryAccount(V.plan)??L.oauthAccountId});if(S.ok){T.debug("fable-fallback",`${Y} cache warmed`,{session:j,remaining:K1.remaining(V.plan),...S.usage&&{usage:S.usage}});return}T.warn("fable-fallback",`${Y} cache warm skipped`,{session:j,status:S.status,reason:S.reason})}catch(S){T.warn("fable-fallback",`${Y} cache warm failed`,{session:j,error:S instanceof Error?S.message:String(S)})}},{recoveryKey:O}=V.plan,Q=(a4.get(O)??Promise.resolve()).then(G,G);return a4.set(O,Q),Q.finally(()=>{if(a4.get(O)===Q)a4.delete(O)}),Q}async function iV(){return u$=await $7.list(q4.trackedSessions()),u$}if(x$({enabled:A$(I),mode:T$(I)}),kJ(CJ(I)),yJ(MJ(I)),!process.env.OPENCODE_ANTHROPIC_AUTH_LOG_LEVEL)gZ(EJ(I)??"info");let t8=null,i$=Promise.resolve(),V7=null;if($.directory){let V=AV($.directory);try{V7=await S3(V,()=>F3({dir:V,drain:w3,apply:UW}))}catch(j){T.warn("rpc","failed to start",{error:j instanceof Error?j.message:String(j)})}}let nV=async()=>{try{M1(z)}catch(V){T.warn("claustrum","failed to close scoped runtime",{error:V instanceof Error?V.message:String(V)})}try{k()}catch(V){T.warn("claustrum","failed to stop enrollment ceremony",{error:V instanceof Error?V.message:String(V)})}try{t8?.release(),await i$.catch(()=>{})}catch(V){T.warn("claustrum","failed to stop manifest watcher",{error:V instanceof Error?V.message:String(V)})}try{f.close()}catch{}try{await d1?.dispose()}catch(V){T.warn("quota-header-feed","failed to dispose",{error:V instanceof Error?V.message:String(V)})}try{E0?.close()}catch(V){T.warn("claustrum","failed to close credential cache",{error:V instanceof Error?V.message:String(V)})}try{if(v1)Z.clearInterval(v1),v1=null}catch(V){T.warn("main-background","failed to stop",{error:V instanceof Error?V.message:String(V)})}try{$1.stopBackgroundRefresh()}catch(V){T.warn("fallback-background","failed to stop",{error:V instanceof Error?V.message:String(V)})}try{q4.stop()}catch(V){T.warn("cachekeep","failed to stop",{error:V instanceof Error?V.message:String(V)})}try{a8.release()}catch(V){T.warn("prime","failed to release slot",{error:V instanceof Error?V.message:String(V)})}if(!V7)return;try{await V7.release()}catch(V){T.warn("rpc","failed to stop",{error:V instanceof Error?V.message:String(V)})}},t0={activeId:"main",route:"main"},oV=TV(),L1=new Map;function rV(V,j,Y){if(!V||!j)return V;let G={...V,accounts:V.accounts.map((Q)=>{let L=j.accounts.find((B)=>B.id===Q.id);if(!Z0(Q)||!L||!Z0(L)||!Q.access||L.access!==Q.access)return Q;return{...Q,profile:L.profile}})},O=V.main?.profile,U=V.main??j.main;if(Y&&U&&(!O||Q8(O,i0)))G.main={...U,profile:j.main?.profile};return G}function e8(V,j){if(f.updateStorage(V),f.seedMainFromStorage(V,J1),!j.skipFallbackQuotaSeed)f.seedFallbacksFromAccounts((V?.accounts??[]).filter(Z0));let Y=f.getMain(J1),G=f.getLastApiError(),O=V?.refresh?.mainLastRefreshError;return{main:{quota:Y?.quota??null,tierLabel:bJ(V?.main?.profile),quotaBackedOff:f.isBackedOff(),quotaBackoffUntil:G?.nextRetryAt,refreshBackedOff:O?C1(O,i0??V?.mainAccountId,Date.now(),j.mainRefreshToken?e0(j.mainRefreshToken):void 0):!1,refreshBackoffUntil:O?.nextRetryAt},fallbacks:(V?.accounts??[]).filter((U)=>U.enabled!==!1&&Z0(U)).map((U)=>{let Q=X$(U.id,V,$4),L=hV(U.id,V,Q);return{id:U.id,label:U.label,tierLabel:bJ(U.profile),quota:j.skipFallbackQuotaSeed?null:U.access||Q?f.getFallback(U.id,U)?.quota??null:null,needsReauth:U.lastRefreshError!=null&&C1(U.lastRefreshError,U.id,Date.now(),e0(U.refresh))&&m1(U.lastRefreshError),vaultReauth:L==="on-vault-reauth",vaultServed:Q,custodyState:L,enabled:U.enabled!==!1}}),activeId:j.activeId,route:j.route,relay:(()=>{let U=P8(V);return U?{enabled:!0,transport:U.transport??"http"}:null})(),fastMode:gJ(),cacheKeep:{enabled:U8(V),window:O8(V)?"always":V?.cacheKeep?.startHour!=null&&V?.cacheKeep?.endHour!=null?`${V.cacheKeep.startHour}-${V.cacheKeep.endHour}`:void 0,trackedSessions:u$.length},prime:q$(V)?{enabled:!0,accounts:J4.stats(V)}:void 0,fableRecoveries:L1.size>0?[...L1.values()]:void 0,lastUpdated:Date.now()}}function D1(V,j){let Y=j.routingAuthoritative!==!1;if(Y)t0={activeId:j.activeId,route:j.route};let G=e8(V,j);return PV(G,oV,{routingAuthoritative:Y,resolvePreservedRouting:Y?void 0:async(O)=>{let U=await pY(O,()=>M(z),{activeId:G.activeId,route:G.route}),Q=j.useHydratedProfiles?rV(U.freshStorage,V,j.mainAccessToken):U.freshStorage;return{activeId:U.activeId,route:U.route,state:e8(Q,{...j,activeId:U.activeId,route:U.route})}},onRoutingResolved:Y?void 0:(O)=>{t0=O}}).catch((O)=>T.warn("sidebar","state write failed",{error:O instanceof Error?O.message:String(O)}))}async function $9(){let V=await M(z),j;if(f0)try{let Y=await f0(),G=Y.type==="oauth"&&L0(V)==="claustrum"&&V?m0(e1(Y),V):void 0;if(G?.status==="resolved")j=F1(E0?.peek(G.handle),W());j??=Y.access}catch{}return j??=V4,{storage:V,access:j}}async function Z4(){let{storage:V,access:j}=await $9();D1(V,{activeId:t0.activeId,route:t0.route,mainAccessToken:j,mainRefreshToken:void 0,routingAuthoritative:!1})}function sV(V,j,Y){if(!j)return;if(V?.quota?.enabled!==!0)return;let G=Y?.quotaKey??J1;if(f.getMain(G))return;if(j7)return;j7=!0,f.refreshMain(G,j,Y?.generation).then(()=>Z4()).catch(()=>{}).finally(()=>{j7=!1})}let f0=null,P4,W7,i0,J1,V4,W4,t4,J9=0,n$=new Map,j7=!1,v1=null,o$=0;function aV(V){let j=V?.refresh?.refreshBeforeExpiryMinutes??gY;return Math.max(xV,j)*60000}function tV(V){return V?.refresh?.enabled!==!1}async function Z9(V,j){if(!V)return;let Y=await M(z),G=Y?.refresh?.mainLastRefreshError;if(!Y?.refresh||!G)return;let O=Boolean(G.accountIdentity)&&G.accountIdentity!==V,U=Boolean(G.refreshTokenFingerprint)&&Boolean(j)&&G.refreshTokenFingerprint!==j;if(!O&&!U)return;if(Y.refresh.mainLastRefreshError=void 0,Y.refresh.mainRefreshErrorClearedAt=r7(Y.refresh.mainRefreshErrorClearedAt,Date.now()),!t4?.startsWith("sk-ant-oat")){let Q=Y.quota?.mainLastQuotaApiError;if(Q&&Q.accountIdentity!==J1){let L=f.clearMainBackoff();Y.quota=Y.quota??{},Y.quota.mainLastQuotaApiError=void 0,Y.quota.mainQuotaErrorGeneration=Math.max(Y.quota.mainQuotaErrorGeneration??0,L??f.getMainQuotaErrorGeneration()),Y.quota.mainQuotaErrorClearedAt=S$(Y.quota.mainQuotaErrorClearedAt,f.getMainQuotaErrorClearedAt()??Date.now())}}await z1(Y,z,{mainRefresh:!0,...!t4?.startsWith("sk-ant-oat")&&{mainQuota:!0}}),x0("[refresh] opencode main oauth cleared stale backoff after token rotation",{previousCheckedAt:G.checkedAt,previousNextRetryAt:G.nextRetryAt,previousRetryCount:G.retryCount})}async function eV(){let V=[],j;if(f0)try{let L=await f0();if(L.type==="oauth"&&L.access){j=V4??L.access,await R1(j);let B=await f.refreshMain(J1,j);V.push({name:"OpenCode anthropic",role:"main",quota:B})}else if(L.type==="oauth")V.push({name:"OpenCode anthropic",role:"main",error:"missing access token; send a request first or reconnect auth"})}catch(L){let B=L instanceof Error?L.message:String(L);V.push({name:"OpenCode anthropic",role:"main",error:B.includes("429")?"Usage API rate limited — try again in a moment":B})}let{storage:Y,errors:G}=await $1.refreshQuotaForAllAccounts({force:!0}),O=await A0(Y??g0(),j,AbortSignal.timeout(3000),W4),U=V.find((L)=>L.role==="main");if(U)U.tierLabel=bJ(O.main?.profile);let Q=new Map(G.map((L)=>[L.accountId,L.message]));if(V.push(...YV(O,Q)),!f0)V.unshift({name:"OpenCode anthropic",role:"main",error:"auth loader has not run yet; send a request first"});return XV({accounts:V,refreshedAt:Date.now()})}async function V9(V){if(f0)try{let j=await f0();await D1(V,{activeId:t0.activeId,route:t0.route,mainAccessToken:j.access,mainRefreshToken:j.refresh,routingAuthoritative:!1})}catch{}}function e4(V,j,Y,G){if(L1.delete(V.sessionId),L1.set(V.sessionId,{...V,changedAt:Date.now()}),L1.size>128){let O=L1.keys().next().value;if(O)L1.delete(O)}if(D1(j,{activeId:t0.activeId,route:t0.route,mainAccessToken:Y.access,mainRefreshToken:Y.refresh,routingAuthoritative:!1}),G)Y9(V.sessionId,G)}function W9(V,j){let Y=y0.get(V)??new Set;Y.delete(j),Y.add(j);while(Y.size>4){let G=Y.values().next().value;if(typeof G!=="string")break;Y.delete(G)}y0.delete(V),y0.set(V,Y);while(y0.size>128){let G=y0.keys().next().value;if(typeof G!=="string")break;y0.delete(G)}}function j9(V,j){return typeof j==="string"&&y0.get(V)?.has(j)===!0}function Y9(V,j){if(k7(V))return;u0.delete(V),u0.set(V,[j]);while(u0.size>128){let Y=u0.keys().next().value;if(Y)u0.delete(Y);else break}if(M0.has(V))Y7(V)}function Y7(V,j=0){if(!u0.has(V)||O1.has(V))return;O1.set(V,j);let Y=()=>{if(O1.get(V)!==j)return;O1.delete(V),$W(V,j)};if(j===0)setImmediate(Y);else setTimeout(Y,uY*j)}function X7(V,j){if(j+1<lY)Y7(V,j+1)}async function $W(V,j){if(!M0.has(V)||!u0.has(V))return;let Y=$.client.session;if(typeof Y?.status==="function")try{let G=await Promise.resolve(Y.status()),O=G!==null&&typeof G==="object"?G:void 0,U=O&&Object.hasOwn(O,"data")?O.data:O;if(U===null||typeof U!=="object"||Array.isArray(U)){X7(V,j);return}let Q=U[V];if(Q!==void 0&&(!Q||typeof Q!=="object"||Q.type!=="idle")){X7(V,j);return}}catch{X7(V,j);return}if(!M0.has(V))return;await JW(V)}function JW(V){let j=_4.get(V);if(j)return j;let Y=(async()=>{while(!0){let G=u0.get(V),O=G?.[0];if(!O){u0.delete(V);return}try{let U=()=>u0.get(V)===G&&G[0]===O;if(!await kZ($,V,O,{noReply:!0,beforeActiveAssistant:!0,canSend:()=>M0.has(V)&&U(),onPreparedMessageId:(L)=>W9(V,L),latestPreparedMessageId:()=>[...y0.get(V)??[]].at(-1)})){if(M0.has(V)&&!U())continue;return}if(U())G.shift()}catch(U){T.warn("fable-fallback","Desktop notification failed",{session:V,error:U instanceof Error?U.message:String(U)})}}})();return _4.set(V,Y),Y.finally(()=>{if(_4.get(V)===Y)_4.delete(V)}),Y}function ZW(V,j,Y,G){if(j.fallback&&j.targetModel){let O=X1.get(V.recoveryKey);X1.delete(V.recoveryKey),X1.set(V.recoveryKey,j.targetModel);while(X1.size>128){let Q=X1.keys().next().value;if(Q)X1.delete(Q);else break}let U=L1.get(V.sessionId);if(O===j.targetModel&&U?.mode==="server"&&q1(U.requestedModelId)===q1(V.requestedModel)&&U.targetModelId===j.targetModel)return;T.info("fable-fallback","Anthropic server-side safety fallback active",{session:V.sessionId,requestedModel:V.requestedModel,targetModel:j.targetModel,handoff:j.handoff}),e4({sessionId:V.sessionId,mode:"server",remaining:0,requestedModelId:V.requestedModel,targetModelId:j.targetModel},Y,G,V2(V.requestedModel,j.targetModel));return}if(j.stopReason==="refusal"||!X1.delete(V.recoveryKey))return;T.info("fable-fallback","Anthropic server-side safety fallback ended",{session:V.sessionId,requestedModel:V.requestedModel}),e4({sessionId:V.sessionId,mode:"fable",remaining:0,requestedModelId:V.requestedModel},Y,G,W2(V.requestedModel))}function VW(V,j,Y){if(!V)return;for(let G of X1.keys())if(G.startsWith(`${V}\x00`))X1.delete(G);if(!L1.delete(V))return;D1(j,{activeId:t0.activeId,route:t0.route,mainAccessToken:Y.access,mainRefreshToken:Y.refresh,routingAuthoritative:!1})}async function WW(V){let j=F5(V);if(j.type==="enable"||j.type==="disable"){let U=j.type==="enable",Q=await rZ(U),L=T$(Q);return x$({enabled:U,mode:L}),T.info("commands","cache enabled changed",{enabled:U}),vJ({argumentsText:V,enabled:U,mode:L})}if(j.type==="mode"){let U=await sZ(j.mode),Q=A$(U);return x$({enabled:Q,mode:j.mode}),T.info("commands","cache mode changed",{mode:j.mode}),vJ({argumentsText:V,enabled:Q,mode:j.mode})}let Y=await M(z),G=A$(Y),O=T$(Y);return x$({enabled:G,mode:O}),vJ({argumentsText:V,enabled:G,mode:O})}async function jW(V){let j=q5(V),Y=await M(z);if(j.type==="window")Y=await eZ(j.startHour,j.endHour),T.info("commands","cachekeep schedule changed",{schedule:`${j.startHour}-${j.endHour}`});else if(j.type==="always")Y=await $5(),T.info("commands","cachekeep schedule changed",{schedule:"always"});else if(j.type==="disable")Y=await J5(!1),T.info("commands","cachekeep enabled changed",{enabled:!1});else if(j.type==="subagents")Y=await V5(j.enabled),T.info("commands","cachekeep subagents changed",{subagents:j.enabled});let G=N8(Y),O=await iV(),U=O.length?Math.min(...O.map((Q)=>Q.nextPrewarmAt)):void 0;return x5({argumentsText:V,enabled:P5(Y),always:O8(Y),window:G,hybridActive:U8(Y),trackedSessions:O.length,trackedSessionDetails:O,nextPrewarmAt:U})}async function YW(V){let j=A5(V);if(j.type==="enable"||j.type==="disable"){let O=j.type==="enable";return await aZ(O),kJ(O),T.info("commands","dump changed",{enabled:O}),z8({argumentsText:V,enabled:O})}let Y=await M(z),G=CJ(Y);return kJ(G),z8({argumentsText:V,enabled:G})}async function XW(V){let j=g5(V);if(j.type==="enable"||j.type==="disable"){let O=j.type==="enable";return await tZ(O),yJ(O),T.info("commands","fast mode changed",{enabled:O}),w8({argumentsText:V,enabled:O})}let Y=await M(z),G=MJ(Y);return yJ(G),w8({argumentsText:V,enabled:G})}async function GW(V,j){if(NV(V).type==="fire"){if(!j)return`## Claude Start Failed
21
25
 
22
- - OpenCode did not provide a session ID.`;try{return await R$(N.client,Z),V$({argumentsText:J}).text}catch(X){return`## Claude Start Failed
26
+ - OpenCode did not provide a session ID.`;try{return await z3($.client,j),M8({argumentsText:V}).text}catch(G){return`## Claude Start Failed
23
27
 
24
- - ${X instanceof Error?X.message:String(X)}`}}return V$({argumentsText:J}).text}async function m7(J,Z){let O=O7(J);if(O.type==="mode")return await G7(O.mode,j),I.info("commands","routing mode changed",{mode:O.mode}),O$({argumentsText:J,mode:O.mode});if(O.type==="reset"&&Z)await y0.clear(Z),I.info("commands","sticky routing assignment reset");let X=await x(j);return O$({argumentsText:J,mode:o1(X)})}async function p7(J){let Z=l3(J);if(Z.type==="level")return await Q3(Z.level),I.info("commands","log level changed",{level:Z.level}),J$({argumentsText:J,level:Z.level});let O=await x(j),X=J4(O)??"info";return J$({argumentsText:J,level:X})}async function c7(J){let Z=o3(J),O=zN(await x(j)),X=O;if(Z.type==="enable"){if(X=!0,!O)await k4(!0,j),I1.start(),I.info("commands","prime changed",{enabled:!0})}else if(Z.type==="disable"){if(X=!1,O)await k4(!1,j),I1.stop(),I.info("commands","prime changed",{enabled:!1})}if(Z.type==="enable"||Z.type==="disable"){let z=await x(j);if(z&&C0)try{let D=await C0().catch(()=>{return});await r0(z,{activeId:M0.activeId,route:M0.route,mainAccessToken:D?.access,routingAuthoritative:!1})}catch(D){I.warn("sidebar","prime-toggle sidebar write failed",{error:D instanceof Error?D.message:String(D)})}}let V=await x(j);return r3({argumentsText:J,enabled:X,accounts:I1.stats(V)}).text}async function l7(J,Z){let O=g3(J);if(O.type==="add-apikey"){if(!O.apiKey)return{text:"API key is required",accounts:Z1(await x(j)??k0())};let K=O.label?.trim()||void 0,B=Date.now(),h=O.baseURL?.trim()||"https://api.kie.ai/claude";if(!aN(h))return{text:"Invalid base URL. Must be an http(s) URL without embedded credentials.",accounts:Z1(await x(j)??k0())};let t=O.authHeader??"authorization-bearer",D0={id:K||dN(),label:K||void 0,type:"api",apiKey:O.apiKey,baseURL:h,authHeader:t,enabled:!0,addedAt:B,lastUsed:B};await c4(D0,j),I.info("commands","account added",{id:D0.id,label:D0.label,type:"apikey"});let I0=await x(j);await L$(I0);let b0=Z1(I0??{version:1,accounts:[]});return{text:`API key account "${D0.label??D0.id}" added.`,accounts:b0}}if(O.type==="add-oauth-start"){let K=await rN("max"),B={state:K.state,verifier:K.verifier,redirectUri:K.redirectUri,createdAt:Date.now()};return o(Z??"default",B),{text:`Open this URL in your browser:
25
- ${K.url}`,knobs:{oauthUrl:K.url},accounts:Z1(await x(j)??k0())}}if(O.type==="add-oauth-finish"){let K=Z??"default",B=e(K);if(!B)return{text:"OAuth session expired. Please start again.",accounts:Z1(await x(j)??k0())};try{let h=await sN(O.code,B.verifier,B.redirectUri,B.state);if(h.type==="failed")return{text:"OAuth authentication failed. Please check the code and try again.",accounts:Z1(await x(j)??k0())};let t=Date.now(),D0={id:dN(),type:"oauth",authLineageId:dN(),label:O.label||void 0,access:h.access,refresh:h.refresh,expires:h.expires,enabled:!0,addedAt:t,lastUsed:t,lastRefreshedAt:t};await c4(D0,j),I.info("commands","account added",{id:D0.id,label:D0.label,type:"oauth"});let I0=await x(j);return await L$(I0),{text:"OAuth account added.",accounts:Z1(I0??k0())}}catch{return{text:"OAuth exchange failed due to a network error. Please try again.",accounts:Z1(await x(j)??k0())}}finally{A.delete(K)}}let X=await x(j);if(O.type==="status"&&X){let K;if(C0)try{let B=await C0();if(B.type==="oauth")K=B.access}catch{}X=await j1(X,K,AbortSignal.timeout(3000))}let V=m3({argumentsText:J,storage:X??{version:1,accounts:[]}});if(V.updated){if(V.updated.action==="enable"||V.updated.action==="disable"){let B=V.updated.action==="enable";await F3(V.updated.id,B,j);let h=V.updated.id,t=X?.accounts.find((D0)=>D0.id===h);I.info("commands",`account ${V.updated.action}d`,{id:h,label:t?.label,enabled:B})}else if(V.updated.action==="remove"){await T3(V.updated.id,j);let B=V.updated.id,h=X?.accounts.find((t)=>t.id===B);I.info("commands","account removed",{id:B,label:h?.label})}else if(V.updated.action==="reorder"){await E3(V.updated.newOrder??V.updated.previousOrder??[],j);let B=V.updated.id,h=X?.accounts.find((t)=>t.id===B);I.info("commands","account reordered",{id:B,label:h?.label})}let K=await x(j);if(C0)try{let B=await C0();r0(K,{activeId:M0.activeId,route:M0.route,mainAccessToken:B.access,routingAuthoritative:!1})}catch{}}let z=await x(j),D=Z1(z??{version:1,accounts:[]});return{text:V.text,accounts:D}}async function Q$(J,Z,O){if(J==="claude-quota")return{command:J,text:await I7(),knobs:{}};if(J==="claude-start"){let K=await g7(Z,O);return{command:J,text:K,knobs:{}}}if(J==="claude-logging"){let K=await p7(Z),B=await x(j);return{command:J,text:K,knobs:{level:J4(B)??"info"}}}if(J==="claude-account"){let K=await l7(Z,O),B={accounts:K.accounts};if("knobs"in K&&K.knobs)Object.assign(B,K.knobs);return{command:J,text:K.text,knobs:B}}if(J==="claude-routing"){let K=await m7(Z,O),B=await x(j);return{command:J,text:K,knobs:{mode:o1(B)}}}if(J==="claude-fast"){let K=await y7(Z),B=await x(j);return{command:J,text:K,knobs:{enabled:N4(B)}}}if(J==="claude-dump"){let K=await b7(Z),B=await x(j);return{command:J,text:K,knobs:{enabled:eN(B)}}}if(J==="claude-cache"){let K=await k7(Z),B=await x(j);return{command:J,text:K,knobs:{enabled:XN(B),mode:VN(B)}}}if(J==="claude-cachekeep"){let K=await h7(Z),B=await x(j);return{command:J,text:K,knobs:{window:n4(B)}}}if(J==="claude-prime"){let K=await c7(Z),B=await x(j),h=zN(B);return{command:J,text:K,knobs:{enabled:h,accounts:I1.stats(B)}}}if(J!=="claude-killswitch")throw Error(`Unhandled command modal: ${J}`);let X=await x(),V=p4(X),z=(X?.accounts??[]).filter((K)=>K.enabled!==!1).map((K)=>K.id),D=c3({argumentsText:Z,config:V,accountIds:z});if(D.updatedConfig){if(await C3(D.updatedConfig),V.enabled!==D.updatedConfig.enabled)I.info("commands","killswitch changed",{enabled:D.updatedConfig.enabled===!0});if(JSON.stringify(V.main)!==JSON.stringify(D.updatedConfig.main)||JSON.stringify(V.accounts)!==JSON.stringify(D.updatedConfig.accounts))I.info("commands","killswitch thresholds changed",{thresholds:D.updatedConfig.main??D.updatedConfig.accounts})}return{command:J,text:D.text,knobs:{config:p4(await x()),accountIds:z}}}async function u7(J){let Z=await Q$(J.command,J.arguments,J.sessionId);return{text:Z.text,knobs:Z.knobs}}function d7(J,Z=10){let O=Math.max(0,Math.min(Math.round(J/100*Z),Z));return"█".repeat(O)+"░".repeat(Z-O)}function FN(J,Z){return`${J} ${d7(Z)} ${String(Math.round(Z)).padStart(3)}%`}function w$(J){if(!J)return"";let Z=new Date(J).getTime();if(Number.isNaN(Z))return"";let O=Z-Date.now();if(O<=0)return"resets now";let X=Math.floor(O/60000);if(X<1)return"resets <1m";if(X<60)return`resets ${X}m`;let V=Math.floor(X/60),z=X%60;return z>0?`resets ${V}h${z}m`:`resets ${V}h`}function i7(J,Z,O){let X=[],V=0;if(J){let{five_hour:K,seven_day:B}=J;if(K||B){let t=O==="main"?"active":"idle",D0=w$(K?.resetsAt),I0=[`main · ${t}${D0?` (${D0})`:""}`];if(K)I0.push(FN("5h",K.usedPercent)),V=Math.max(V,K.usedPercent);if(B)I0.push(FN("7d",B.usedPercent)),V=Math.max(V,B.usedPercent);X.push(I0.join(`
26
- `))}}if(Z?.length)for(let K of Z){let B=K.quota;if(!B)continue;let{five_hour:h,seven_day:t}=B;if(!h&&!t)continue;let D0=K.label||"alt",b0=O===K.id?"active":"idle",m0=w$(h?.resetsAt),T0=[`${D0} · ${b0}${m0?` (${m0})`:""}`];if(h)T0.push(FN("5h",h.usedPercent)),V=Math.max(V,h.usedPercent);if(t)T0.push(FN("7d",t.usedPercent)),V=Math.max(V,t.usedPercent);X.push(T0.join(`
27
- `))}if(!X.length)return;let z=X.join(`
28
+ - ${G instanceof Error?G.message:String(G)}`}}return M8({argumentsText:V}).text}async function zW(V,j){let Y=KV(V);if(Y.type==="mode")return await zV(Y.mode,z),T.info("commands","routing mode changed",{mode:Y.mode}),I8({argumentsText:V,mode:Y.mode});if(Y.type==="reset"&&j)await p1.clear(j),T.info("commands","sticky routing assignment reset");let G=await M(z);return I8({argumentsText:V,mode:d4(G)})}async function KW(V){let j=m5(V);if(j.type==="level")return await K5(j.level),T.info("commands","log level changed",{level:j.level}),S8({argumentsText:V,level:j.level});let Y=await M(z),G=EJ(Y)??"info";return S8({argumentsText:V,level:G})}async function NW(V){let j=a5(V),Y=q$(await M(z)),G=Y;if(j.type==="enable"){if(G=!0,!Y)await e7(!0,z),J4.start(),T.info("commands","prime changed",{enabled:!0})}else if(j.type==="disable"){if(G=!1,Y)await e7(!1,z),J4.stop(),T.info("commands","prime changed",{enabled:!1})}if(j.type==="enable"||j.type==="disable"){let U=await M(z);if(U&&f0)try{let Q=await f0().catch(()=>{return});await D1(U,{activeId:t0.activeId,route:t0.route,mainAccessToken:Q?.access,routingAuthoritative:!1})}catch(Q){T.warn("sidebar","prime-toggle sidebar write failed",{error:Q instanceof Error?Q.message:String(Q)})}}let O=await M(z);return t5({argumentsText:V,enabled:G,accounts:J4.stats(O)}).text}async function OW(V,j){let Y=k5(V);if(Y.type==="add-apikey"){if(!Y.apiKey)return{text:"API key is required",accounts:S1(await M(z)??g0())};let B=Y.label?.trim()||void 0,S=Date.now(),x=Y.baseURL?.trim()||"https://api.kie.ai/claude";if(!IJ(x))return{text:"Invalid base URL. Must be an http(s) URL without embedded credentials.",accounts:S1(await M(z)??g0())};let l=Y.authHeader??"authorization-bearer",K0={id:B||SJ(),label:B||void 0,type:"api",apiKey:Y.apiKey,baseURL:x,authHeader:l,enabled:!0,addedAt:S,lastUsed:S};await fJ(K0,z),T.info("commands","account added",{id:K0.id,label:K0.label,type:"apikey"});let c0=await M(z);await V9(c0);let P0=S1(c0??{version:1,accounts:[]});return{text:`API key account "${K0.label??K0.id}" added.`,accounts:P0}}if(Y.type==="add-oauth-start"){if(L0(await M(z))==="claustrum")throw Error("Exit Claustrum mode first: /claude-account local");let B=await K("max"),S={state:B.state,verifier:B.verifier,redirectUri:B.redirectUri,createdAt:Date.now()};return n(j??"default",S),{text:`Open this URL in your browser:
29
+ ${B.url}`,knobs:{oauthUrl:B.url},accounts:S1(await M(z)??g0())}}if(Y.type==="add-oauth-finish"){let B=j??"default",S=E(B);if(!S)return{text:"OAuth session expired. Please start again.",accounts:S1(await M(z)??g0())};try{let x=await xJ(Y.code,S.verifier,S.redirectUri,S.state);if(x.type==="failed")return{text:"OAuth authentication failed. Please check the code and try again.",accounts:S1(await M(z)??g0())};let l=Date.now(),K0={id:SJ(),type:"oauth",authLineageId:SJ(),label:Y.label||void 0,access:x.access,refresh:x.refresh,expires:x.expires,enabled:!0,addedAt:l,lastUsed:l,lastRefreshedAt:l};await fJ(K0,z);let c0=await M(z),P0=c0?m0(K0,c0):{status:"unresolved",reason:"missing-entry"},b0=P0.status==="resolved"&&P0.source==="manifest"?P0.handle:void 0;await FV({accountId:K0.id,credentialId:PJ(P0,K0.label??K0.id),authFingerprint:M4(x.access,x.refresh),completedAt:l},{accountStoragePath:z,manifestPath:n4,divergence:{statePath:o7(z),lastVaultServedRecordVersion:DV({accountId:K0.id,servedVersion:b0?i4.get(b0):void 0,cacheVersion:b0?E0?.peek(b0)?.recordVersion:void 0,warn:(j4)=>T.warn("claustrum","fallback login had no served vault record",{accountId:j4})})}}),T.info("commands","account added",{id:K0.id,label:K0.label,type:"oauth"});let T0=await M(z);return await V9(T0),{text:"OAuth account added.",accounts:S1(T0??g0())}}catch{return{text:"OAuth exchange failed due to a network error. Please try again.",accounts:S1(await M(z)??g0())}}finally{P.delete(B)}}let G=await M(z);if(Y.type==="status"&&G){let B;if(f0)try{let S=await f0();if(S.type==="oauth")B=V4??S.access}catch{}G=await A0(G,B,AbortSignal.timeout(3000),W4)}let O=Y.type==="status"?await X9(G):void 0,U=await b5({argumentsText:V,storage:G??{version:1,accounts:[]},path:z,claustrum:Y.type==="status"&&!O?await l7(I1()):void 0,statusProjection:O,resolveCustodyBinding:Y.type==="status"?(B)=>Z0(B)?m0(B,G??g0()):{status:"unresolved",reason:"missing-entry"}:void 0,transition:async(B)=>{let S=await c9({storagePath:z,loadStorage:()=>M(z),getCache:async()=>E0??d$(),latestGetAuth:f0??void 0,now:W,fallbackManager:$1,refreshManifest:o4,debug:(l)=>T.debug("claustrum",l)},B),x=await M(z);if(L0(x)==="claustrum")J0();else k();return S},resetEnrollment:async()=>{let B=J0();switch(await B.resetTerminal()){case"reset":return{text:"Claustrum enrollment reset; a new request is being prepared."};case"idle":return await B.reconcileNow(),{text:"Claustrum enrollment request is being prepared."};case"refused-pending":return{text:"Claustrum enrollment is still pending. Deny or approve that request before resetting it."};case"refused-approved":return{text:"Claustrum enrollment is already approved. Revoke it in Claustrum before removing local enrollment state."};case"busy":return{text:"Another plugin process is reconciling Claustrum enrollment; retry shortly."}}}});if(U.updated){if(U.updated.action==="enable"||U.updated.action==="disable"){let S=U.updated.action==="enable";await L5(U.updated.id,S,z);let x=U.updated.id,l=G?.accounts.find((K0)=>K0.id===x);T.info("commands",`account ${U.updated.action}d`,{id:x,label:l?.label,enabled:S})}else if(U.updated.action==="remove"){await Q5(U.updated.id,z);let S=U.updated.id,x=G?.accounts.find((l)=>l.id===S);T.info("commands","account removed",{id:S,label:x?.label})}else if(U.updated.action==="reorder"){await H5(U.updated.newOrder??U.updated.previousOrder??[],z);let S=U.updated.id,x=G?.accounts.find((l)=>l.id===S);T.info("commands","account reordered",{id:S,label:x?.label})}else if(U.updated.action==="reset-backoff"){let S=i0??G?.mainAccountId;G=G??g0(),G.refresh=G.refresh??{},G.refresh.mainLastRefreshError=void 0,G.refresh.mainRefreshErrorClearedAt=r7(G.refresh.mainRefreshErrorClearedAt,Date.now());let x=G.quota?.mainLastQuotaApiError;if(!x?.accountIdentity||!S||x.accountIdentity===S){let l=f.clearMainBackoff();G.quota=G.quota??{},G.quota.mainLastQuotaApiError=void 0,G.quota.mainQuotaErrorGeneration=Math.max(G.quota.mainQuotaErrorGeneration??0,l??f.getMainQuotaErrorGeneration()),G.quota.mainQuotaErrorClearedAt=S$(G.quota.mainQuotaErrorClearedAt,f.getMainQuotaErrorClearedAt()??Date.now())}await z1(G,z,{mainRefresh:!0,mainQuota:!0}),T.info("commands","main OAuth refresh and quota backoff cleared",{mainIdentity:S})}let B=await M(z);if(f0)try{let S=await f0();D1(B,{activeId:t0.activeId,route:t0.route,mainAccessToken:S.access,mainRefreshToken:S.refresh,routingAuthoritative:!1})}catch{}}let Q=await M(z),L=S1(Q??{version:1,accounts:[]});return{text:U.text,accounts:L,statusProjection:O}}async function X9(V){let j=V??await M(z),Y=j??g0(),G=S1(Y).map((Q)=>{let L=Y.accounts.find((x)=>x.id===Q.id),B=Q.role==="main"?"na":L&&Z0(L)&&W1(Y,L,m0(L,Y))?"on":"off",S=w7(Q,j,$4);return{id:Q.id,label:Q.label,role:Q.role,enabled:Q.enabled,quotaPercent:Q.quotaPercent,...Q.tierLabel&&{tierLabel:Q.tierLabel},claustrumGate:B,custodyState:S,vaultServed:S==="on-vault-served",vaultReauth:S==="on-vault-reauth"}}),O=await l7(I1()),U=L0(Y);if(U==="claustrum")J0();return{accounts:G,claustrumDetection:O.status,custodyMode:U,...U==="claustrum"&&{claustrumEnrollment:y}}}async function G9(V,j,Y){if(V==="claude-quota")return{command:V,text:await eV(),knobs:{}};if(V==="claude-start"){let L=await GW(j,Y);return{command:V,text:L,knobs:{}}}if(V==="claude-logging"){let L=await KW(j),B=await M(z);return{command:V,text:L,knobs:{level:EJ(B)??"info"}}}if(V==="claude-account"){let L=await OW(j,Y),B=L.statusProjection??await X9(),S={accounts:B.accounts,claustrumDetection:B.claustrumDetection,custodyMode:B.custodyMode,custodyModeKnown:!0,...B.claustrumEnrollment&&{enrollmentStatus:h5(B.claustrumEnrollment).join(`
30
+ `)}};if("knobs"in L&&L.knobs)Object.assign(S,L.knobs);return{command:V,text:W7?`${L.text}
28
31
 
29
- `),D=V>=90?"error":V>=70?"warning":"info";Y.tui?.showToast?.({body:{title:"Claude Quota",message:z,variant:D,duration:D==="error"?8000:5000}})?.catch?.(()=>{})}return{"chat.message":async({sessionID:J},Z)=>{s.observeSyntheticMessage({sessionId:J,messageId:Z.message.id,parts:Z.parts})},"chat.headers":async({sessionID:J,message:Z},O)=>{s.markHeaders({sessionId:J,messageId:Z.id,headers:O.headers})},event:async({event:J})=>{let Z=J,O=Z.properties?.info,X=Z.properties?.sessionID??O?.sessionID??O?.id;if(!X)return;if(Z.type==="session.status"&&Z.properties?.status?.type!=="idle")r.delete(X);if(Z.type==="session.idle"){r.add(X);while(r.size>128){let V=r.values().next().value;if(V)r.delete(V);else break}L4(X)}if(Z.type==="session.deleted"){s.clearSession(X),o0.delete(X),J0.delete(X),r.delete(X);for(let V of i.keys())if(V.startsWith(`${X}\x00`))i.delete(V);Y0.delete(X)}},config:async(J)=>{J.command={...J.command??{},[l4]:{template:l4,description:"Show or toggle 1-hour Anthropic ephemeral prompt cache TTL."},[a4]:{template:a4,description:"Manage fallback accounts — list, enable/disable, reorder, remove, or add (API key or OAuth)."},[i4]:{template:i4,description:"Keep hybrid Claude cache warm always or during a local time window."},[Z$]:{template:Z$,description:"Start each OAuth account's five-hour quota window after reset."},[X$]:{template:X$,description:"Send a billed one-token synthetic turn to warm and renew the current Claude session cache."},[Y$]:{template:Y$,description:"Show current Claude OAuth quota usage for all accounts."},[u4]:{template:u4,description:"Show or toggle Anthropic request dump capture for debugging."},[t4]:{template:t4,description:"Show or toggle Anthropic fast mode for supported Opus models."},[$$]:{template:$$,description:"Show or set the plugin log level (error, warn, info, debug, trace)."},[G$]:{template:G$,description:"Show or change Claude account routing: main-first, fallback-first, or sticky-balanced."},[N$]:{template:N$,description:"Manage killswitch — hard-block requests when quota drops below per-account thresholds."}}},"experimental.chat.system.transform":async(J,Z)=>{if(!x8(J))return;f8(Z.system)},provider:{id:"anthropic",async models(J,Z){let O=l8(m8(J.models));if(Z.auth?.type!=="oauth"||!eJ(d??{}))return O;return u8(O)}},"command.execute.before":async(J)=>{if(!H7.includes(J.command))return;let Z=J.command,O=await Q$(Z,J.arguments,J.sessionID);if(Z==="claude-quota"){let X=await x(),V=C0?await C0().catch(()=>{return}):void 0;r0(X,{activeId:M0.activeId,route:M0.route,mainAccessToken:V?.access,routingAuthoritative:!1})}if(q4(J.sessionID))c$(O,J.sessionID);else await rJ(N,J.sessionID,O.text);I8()},auth:{provider:"anthropic",async loader(J,Z){C0=J;let O=await J();if(O.type==="oauth"){let V=function(){if(y1)W.clearInterval(y1),y1=null;let U=async()=>{try{let L=await x(j);if(!M7(L))return;let v=await J();if(v.type!=="oauth")return;if(await U$(S0??L?.mainAccountId),!v.expires)return;let y=v.expires-Date.now(),q=q7(L);if(y>q)return;if(L0("[refresh] opencode main oauth background due",{expiresInMs:y,refreshBeforeMs:q}),W1(L?.refresh?.mainLastRefreshError,S0??L?.mainAccountId,Date.now())){L0("[refresh] opencode main oauth background skipped backoff",{nextRetryAt:L?.refresh?.mainLastRefreshError?.nextRetryAt,retryCount:L?.refresh?.mainLastRefreshError?.retryCount,expiresInMs:y});return}if(v.refresh&&L?.refresh?.mainRefreshLeaseUntil&&L.refresh.mainRefreshLeaseUntil>Date.now()&&L.refresh.mainRefreshLeaseTokenHash===h4(v.refresh))return;await X();let f=await J();L0("[refresh] opencode main oauth refreshed in background",{newExpiresInMs:f.expires?f.expires-Date.now():void 0})}catch(L){I.warn("refresh","opencode main oauth refresh failed",{message:L instanceof Error?L.message:String(L)})}};if(y1=W.setInterval(()=>{U()},D8+nJ(U8)),"unref"in y1)y1.unref()},D=function(U,L){if(U instanceof Request&&U.body)return!1;return L==null||typeof L==="string"},K=function(U){if(typeof U!=="string")return;try{let L=JSON.parse(U);return typeof L.model==="string"?L.model:void 0}catch{return}},B=function(U){return U.has("x-parent-session-id")},h=function(U){return U.includes("rate_limit_error")||/exceed your account'?s rate limit/i.test(U)},t=function(U){return U?.quota?.enabled===!0},I0=function(U,L){if(U.delete("authorization"),U.delete("x-api-key"),L.authHeader==="x-api-key")U.set("x-api-key",L.apiKey??"");else U.set("Authorization",`Bearer ${L.apiKey??""}`);U.set("Content-Type","application/json")},T0=function(U){return E.getFallback(U.id,U)?.quota??U.quota},w1=function(U){return["five_hour","seven_day"].some((L)=>(U?.[L]?.remainingPercent??1)<=0)},t1=function(U,L){return U.status===429||L},p0=function(U,L){if(!U)return!1;let v=E.getMain(L?.accountIdentity??h0);return Boolean(v&&v.refreshAfter>Date.now()&&w1(v.quota))};if(S0=await J3(j),O.access)await S1(O.access);async function X(U){if(U){let v=await J();if(v.type==="oauth"&&v.access&&v.access!==U&&(!v.expires||v.expires>Date.now()))return L0("[refresh] opencode main oauth reused concurrently rotated access token",{expiresInMs:v.expires?v.expires-Date.now():void 0}),v.access}let L=iN.get(j);if(!L)L=(async()=>{let q=null,f=null,w=null;async function z0(c){let C=await x(j)??k0();C.refresh=C.refresh??{},c(C),await A1(C,j,{mainRefresh:!0})}async function R(c){let C=Date.now()+L8;while(Date.now()<C){await new Promise((P)=>W.setTimeout(P,uJ+nJ(uJ)));let H=await J();if(H.type!=="oauth"||!H.access)continue;if((H.access!==c.access||H.refresh!==c.refresh||(H.expires??0)>(c.expires??0)+60000)&&(!H.expires||H.expires>Date.now()))return L0("[refresh] opencode main oauth joined concurrent refresh",{expiresInMs:H.expires?H.expires-Date.now():void 0}),H.access}return null}for(let c=0;c<=2;c++){let C=null;try{if(c>0){let M=500*2**(c-1);await new Promise((B0)=>W.setTimeout(B0,M))}if(C=await J(),!C.refresh)throw Error("Token refresh failed: missing refresh token");let H=await x(j),n=h4(C.refresh),P=H?.refresh?.mainLastRefreshError;if(L0("[refresh] opencode main oauth refresh check",{attempt:c,expiresInMs:C.expires?C.expires-Date.now():void 0,hasBackoff:Boolean(P),backoffActive:P?W1(P,S0??H?.mainAccountId,Date.now()):!1,retryCount:P?.retryCount,nextRetryAt:P?.nextRetryAt}),P&&W1(P,S0??H?.mainAccountId,Date.now()))throw L0("[refresh] opencode main oauth refresh skipped backoff",{nextRetryAt:P.nextRetryAt,retryCount:P.retryCount}),Error(b4(P,Date.now()));if(H?.refresh?.mainRefreshLeaseUntil&&H.refresh.mainRefreshLeaseUntil>Date.now()&&H.refresh.mainRefreshLeaseTokenHash===n){L0("[refresh] opencode main oauth refresh skipped lease",{leaseUntil:H.refresh.mainRefreshLeaseUntil});let M=await R(C);if(M)return M;throw Error("Claude OAuth refresh is already in progress")}let F=await Z3({name:"opencode-main-oauth-refresh",ttlMs:120000,renew:!0});if(!F){L0("[refresh] opencode main oauth refresh skipped file lock");let M=await R(C);if(M)return M;throw Error("Claude OAuth refresh is already in progress")}w=F.release,q=dN(),f=n,await z0((M)=>{M.refresh=M.refresh??{},M.refresh.mainRefreshLeaseId=q??void 0,M.refresh.mainRefreshLeaseUntil=Date.now()+120000,M.refresh.mainRefreshLeaseTokenHash=n});let j0=await x(j);if(L0("[refresh] opencode main oauth refresh lease acquired",{attempt:c,leaseUntil:Date.now()+120000}),j0?.refresh?.mainRefreshLeaseId!==q||j0.refresh.mainRefreshLeaseTokenHash!==n)throw Error("Claude OAuth refresh is already in progress");L0("[refresh] opencode main oauth refresh request start",{attempt:c});let T=await aJ({refreshToken:C.refresh,maxRetries:0});return await Y.auth.set({path:{id:"anthropic"},body:{type:"oauth",refresh:T.refresh,access:T.access,expires:T.expires}}),await z0((M)=>{if(!M?.refresh)return;if(M.refresh.mainLastRefreshError=void 0,M.refresh.mainRefreshLeaseId===q)M.refresh.mainRefreshLeaseId=void 0,M.refresh.mainRefreshLeaseUntil=void 0,M.refresh.mainRefreshLeaseTokenHash=void 0}),L0("[refresh] opencode main oauth refresh succeeded",{attempt:c,expiresInMs:T.expires-Date.now()}),T.access}catch(H){let n=H instanceof Error&&(H.message.includes("fetch failed")||("code"in H)&&(H.code==="ECONNRESET"||H.code==="ECONNREFUSED"||H.code==="ETIMEDOUT"||H.code==="UND_ERR_CONNECT_TIMEOUT"));if(c<2&&(n||(()=>{let F=H.status;return typeof F==="number"&&F>=500})()))continue;if(L0("[refresh] opencode main oauth refresh attempt failed",{attempt:c,error:H instanceof Error?H.message:String(H),transient:n}),C?.refresh&&H.isRefreshError)await z0((F)=>{F.refresh=F.refresh??{},F.refresh.mainLastRefreshError=U3({error:H,now:Date.now(),accountIdentity:S0??F.mainAccountId,previous:F.refresh.mainLastRefreshError})});throw H}finally{if(q)await z0((H)=>{if(!H?.refresh)return;if(H.refresh.mainRefreshLeaseId===q&&H.refresh.mainRefreshLeaseTokenHash===f)H.refresh.mainRefreshLeaseId=void 0,H.refresh.mainRefreshLeaseUntil=void 0,H.refresh.mainRefreshLeaseTokenHash=void 0}).catch(()=>{});await w?.().catch(()=>{})}}throw Error("Token refresh exhausted all retries")})(),iN.set(j,L);try{return await L}finally{if(iN.get(j)===L)iN.delete(j)}}e0=X,V(),E.seedFallbacksFromAccounts((d?.accounts??[]).filter(U0));let z=await T8(j);if(await r0(z.freshStorage,{activeId:z.activeId,route:z.route,mainAccessToken:O.access,routingAuthoritative:!1}),process.env.OPENCODE_ANTHROPIC_AUTH_DISABLE_PROFILE_HYDRATION!=="1")j1(d??k0(),O.access).then((U)=>{r0(U,{activeId:"main",route:"main",mainAccessToken:O.access,routingAuthoritative:!1,useHydratedProfiles:!0})}).catch(()=>{});async function D0(U,L){if(!U.body||U.status!==200)return L?.mark("inspect_stream_skip",{status:U.status}),{response:U,rateLimited:!1};if(U.headers.get("x-cortexkit-relay-optimistic")==="true")return L?.mark("inspect_stream_skip",{status:U.status,reason:"optimistic_relay"}),{response:U,rateLimited:!1};let v=g(),y=U.body.getReader(),q=[],f=new TextDecoder,w="",z0=0;while(!w.includes(`
32
+ - Custody startup mismatch: ${W7}`:L.text,knobs:S}}if(V==="claude-routing"){let L=await zW(j,Y),B=await M(z);return{command:V,text:L,knobs:{mode:d4(B)}}}if(V==="claude-fast"){let L=await XW(j),B=await M(z);return{command:V,text:L,knobs:{enabled:MJ(B)}}}if(V==="claude-dump"){let L=await YW(j),B=await M(z);return{command:V,text:L,knobs:{enabled:CJ(B)}}}if(V==="claude-cache"){let L=await WW(j),B=await M(z);return{command:V,text:L,knobs:{enabled:A$(B),mode:T$(B)}}}if(V==="claude-cachekeep"){let L=await jW(j),B=await M(z);return{command:V,text:L,knobs:{window:N8(B)}}}if(V==="claude-prime"){let L=await NW(j),B=await M(z),S=q$(B);return{command:V,text:L,knobs:{enabled:S,accounts:J4.stats(B)}}}if(V!=="claude-killswitch")throw Error(`Unhandled command modal: ${V}`);let G=await M(),O=j8(G),U=(G?.accounts??[]).filter((L)=>L.enabled!==!1).map((L)=>L.id),Q=y5({argumentsText:j,config:O,accountIds:U});if(Q.updatedConfig){if(await U5(Q.updatedConfig),O.enabled!==Q.updatedConfig.enabled)T.info("commands","killswitch changed",{enabled:Q.updatedConfig.enabled===!0});if(JSON.stringify(O.main)!==JSON.stringify(Q.updatedConfig.main)||JSON.stringify(O.accounts)!==JSON.stringify(Q.updatedConfig.accounts))T.info("commands","killswitch thresholds changed",{thresholds:Q.updatedConfig.main??Q.updatedConfig.accounts})}return{command:V,text:Q.text,knobs:{config:j8(await M()),accountIds:U}}}async function UW(V){let j=await G9(V.command,V.arguments,V.sessionId);return{text:j.text,knobs:j.knobs}}function QW(V,j=10){let Y=Math.max(0,Math.min(Math.round(V/100*j),j));return"█".repeat(Y)+"░".repeat(j-Y)}function r$(V,j){return`${V} ${QW(j)} ${String(Math.round(j)).padStart(3)}%`}function z9(V){if(!V)return"";let j=new Date(V).getTime();if(Number.isNaN(j))return"";let Y=j-Date.now();if(Y<=0)return"resets now";let G=Math.floor(Y/60000);if(G<1)return"resets <1m";if(G<60)return`resets ${G}m`;let O=Math.floor(G/60),U=G%60;return U>0?`resets ${O}h${U}m`:`resets ${O}h`}function HW(V,j,Y){let G=[],O=0;if(V){let{five_hour:L,seven_day:B}=V;if(L||B){let x=Y==="main"?"active":"idle",l=z9(L?.resetsAt),K0=[`main · ${x}${l?` (${l})`:""}`];if(L)K0.push(r$("5h",L.usedPercent)),O=Math.max(O,L.usedPercent);if(B)K0.push(r$("7d",B.usedPercent)),O=Math.max(O,B.usedPercent);G.push(K0.join(`
33
+ `))}}if(j?.length)for(let L of j){let B=L.quota;if(!B)continue;let{five_hour:S,seven_day:x}=B;if(!S&&!x)continue;let l=L.label||"alt",c0=Y===L.id?"active":"idle",P0=z9(S?.resetsAt),b0=[`${l} · ${c0}${P0?` (${P0})`:""}`];if(S)b0.push(r$("5h",S.usedPercent)),O=Math.max(O,S.usedPercent);if(x)b0.push(r$("7d",x.usedPercent)),O=Math.max(O,x.usedPercent);G.push(b0.join(`
34
+ `))}if(!G.length)return;let U=G.join(`
30
35
 
31
- `)&&w.length<65536){let{done:C,value:H}=await y.read();if(C)break;if(q.push(H),z0+=H.byteLength,w+=f.decode(H,{stream:!0}),h(w))break}if(h(w)){await y.cancel().catch(()=>{});try{y.releaseLock()}catch{}let C=new ReadableStream({start(n){for(let P of q)n.enqueue(P);n.close()}});L?.mark("inspect_stream_first_event",{ms:K0(g()-v),bytes:z0,rateLimited:!0});let H=new Response(C,{status:U.status,statusText:U.statusText,headers:U.headers});return MN(t0,U,H),{response:H,rateLimited:!0}}let R=new ReadableStream({start(C){for(let H of q)C.enqueue(H)},async pull(C){let{done:H,value:n}=await y.read();if(H){C.close();return}C.enqueue(n)},cancel(C){return y.cancel(C)}});L?.mark("inspect_stream_first_event",{ms:K0(g()-v),bytes:z0,rateLimited:!1});let c=new Response(R,{status:U.status,statusText:U.statusText,headers:U.headers});return MN(t0,U,c),{response:c,rateLimited:!1}}async function b0(U,L,v,y,q="api_fallback",f,w){if(w?.plan.downgraded)w.warmTarget=void 0,w.opusCacheAnchor=void 0;let z0=g(),R=mN(U,L),c=R.get("x-session-affinity")||R.get("x-opencode-session"),C=B(R);R.delete("x-parent-session-id"),R.delete("x-session-affinity"),R.delete("x-opencode-session");let H=L?.body,n=!1,P=null,F=typeof H==="string"?H.length:void 0;if(H&&typeof H==="string"){let $0=g(),W0=(()=>{if(!O4())return!1;try{return ON(JSON.parse(H).model)}catch{return!1}})();if(H=await uN(H,{cache1hEnabled:!C&&d1(),cache1hMode:i1(),fastModeEnabled:W0,perf:(q0,x1)=>y?.mark(`rewrite_body_${q0}`,{route:q,...x1})}),I0(R,v),R.set("anthropic-beta",GN(R.get("anthropic-beta"),[])),W0)pN(R);try{n=JSON.parse(H).stream===!0}catch{}y?.mark("rewrite_body",{route:q,ms:K0(g()-$0),originalBytes:F,rewrittenBytes:H.length,cacheEnabled:!C&&d1(),cacheMode:i1(),fastModeEnabled:W0,subagent:C})}else I0(R,v);let j0=await L1(R),T=cN(U,{baseURL:v.baseURL}),M=g(),B0;try{B0=await fetch(T.input,{...L,body:H,headers:R,...f4()&&{tls:{rejectUnauthorized:!1}}})}catch($0){if(typeof H==="string")await DN({affinity:c,route:q,error:oJ($0),bodyText:H,url:T.url?.toString()??nN(T.input),method:oN(U,L),headers:R});throw $0}if(typeof H==="string")P=await DN({affinity:c,route:q,status:B0.status,bodyText:H,url:T.url?.toString()??nN(T.input),method:oN(U,L),headers:R});return H0(B0,{source:"turn",accountId:v.id,synthetic:!1,...j0,requestedModel:K(H),dump:P,status:B0.status,streaming:n}),y?.mark("send_headers_received",{route:q,ms:K0(g()-M),status:B0.status,relayConfigured:!1,totalSendWithAccessMs:K0(g()-z0),baseURL:v.baseURL}),B0}async function m0(U,L,v,y,q="unknown",f,w="main",z0,R,c=!1,C){let H=g(),n=f,P=async()=>{return n??=await x(j),n},F=mN(U,L),j0=F.get("x-session-affinity")||F.get("x-opencode-session"),T=B(F);F.delete("x-parent-session-id"),F.delete("x-session-affinity"),F.delete("x-opencode-session");let M=L?.body,B0=j0?O1.previousFor(j0):null,$0=B0?.messageId??null,W0,q0=!1,x1=null,B1=null,AN;if(M&&typeof M==="string"){let _0=g();try{let l=JSON.parse(M);if(typeof l.model==="string")AN=l.model}catch{}y?.mark("model_parse_for_identity",{route:q,ms:K0(g()-_0),bodyBytes:M.length})}let SN=g(),f1=await HN(v,AN,w==="main"?S0:w);y?.mark("resolve_claude_code_identity",{route:q,ms:K0(g()-SN),hasAccountUuid:Boolean(f1.accountUuid)});let S=typeof M==="string"?M.length:void 0;if(M&&typeof M==="string"){let _0=g(),l=(()=>{if(!O4())return!1;try{return ON(JSON.parse(M).model)}catch{return!1}})(),E0=!T&&d1(),c0=i1(),qN=R?.plan.downgraded&&R.plan.standbyCacheAnchor?.oauthAccountId===w?R.plan.standbyCacheAnchor:void 0;if(M=await uN(M,{cache1hEnabled:E0,cache1hMode:c0,fastModeEnabled:l,identity:f1,hybridStandbyAnchor:qN,serverSideFallbackEnabled:P0==="server",laneStart:c,cacheDiagnosticsPreviousMessageId:$0,perf:(Z0,l0)=>{if(y?.mark(`rewrite_body_${Z0}`,{route:q,...l0}),Z0==="cache_strategy"&&l0?.standbyBridgeApplied===!0&&R&&!R.standbyBridgeLogged)R.standbyBridgeLogged=!0,I.info("fable-fallback","restored standby Opus cache bridge",{session:R.plan.sessionId,distanceBlocks:l0?.standbyDistanceBlocks})}}),R?.plan.downgraded&&E0&&c0==="hybrid"){let Z0=vJ(M);R.opusCacheAnchor=Z0?{...Z0,oauthAccountId:w}:void 0}let $N=g();try{let Z0=JSON.parse(M);u1(F,v,{body:Z0,identity:f1});let l0=Z0.diagnostics,JN=l0&&typeof l0==="object"&&!Array.isArray(l0)&&l0.previous_message_id===$0?$0:void 0;if(JN!==void 0&&F.get("anthropic-beta")?.split(",").map((X0)=>X0.trim()).includes(ZN))W0={sessionId:j0??"session-unknown",previousMessageId:JN,...B0?{previousMessageReceivedAt:B0.receivedAt}:{},isSubagent:T,ttlSent:xN(Z0)};q0=Z0.stream===!0,y?.mark("set_oauth_headers_body_parse",{route:q,ms:K0(g()-$N),bodyBytes:M.length,parsed:!0})}catch{u1(F,v,{identity:f1}),y?.mark("set_oauth_headers_body_parse",{route:q,ms:K0(g()-$N),bodyBytes:M.length,parsed:!1})}if(l)pN(F);y?.mark("rewrite_body",{route:q,ms:K0(g()-_0),originalBytes:S,rewrittenBytes:M.length,cacheEnabled:!T&&d1(),cacheMode:i1(),fastModeEnabled:l,subagent:T})}let p=await L1(F),k=cN(U);if(R&&typeof M==="string")R.warmTarget={url:k.url?.toString()??k.input.toString(),headers:new Headers(F),bodyText:M,oauthAccountId:w};if(typeof M==="string"&&d1()&&i1()==="hybrid"){let _0=await P();if(!T||_3(_0)){let l=g(),E0=N1.track({sessionId:j0,url:k.url?.toString()??k.input.toString(),headers:F,bodyText:M,storage:_0,cacheMode:"hybrid",oauthAccountId:w,isSubagent:T});y?.mark("cachekeep_track",{session:j0,ms:K0(g()-l),tracked:E0.tracked,reason:E0.tracked?void 0:E0.reason,bodyBytes:M.length})}}let G0=!1,N0=async()=>{G0=!0;try{let _0=await fetch(k.input,{...L,body:M,headers:F,...f4()&&{tls:{rejectUnauthorized:!1}}});if(typeof M==="string")x1=await DN({affinity:j0,route:q,status:_0.status,bodyText:M,url:k.url?.toString()??nN(k.input),method:oN(U,L),headers:F,tag:c?"start":void 0});return _0}catch(_0){if(typeof M==="string")await DN({affinity:j0,route:q,error:oJ(_0),bodyText:M,url:k.url?.toString()??nN(k.input),method:oN(U,L),headers:F,tag:c?"start":void 0});throw _0}},m=j$(await P()),v0={accountId:w,accessToken:v,authLineageId:z0,...w==="main"&&C?{mainQuotaIdentity:C}:{}},g0=g(),V1=await j7({config:m,input:k.input,init:L,headers:F,body:M,fallback:N0,affinity:j0,optimisticResponse:m?.transport==="websocket",onResponseHeaders:(_0)=>U1(_0,v0),onDumpCreated:(_0)=>{B1=_0},dumpTag:c?"start":void 0});if(y?.mark("send_headers_received",{route:q,ms:K0(g()-g0),status:V1.status,relayConfigured:m!=null,totalSendWithAccessMs:K0(g()-H)}),G0)U1(V1.headers,v0);return H0(V1,{source:c?"start":"turn",accountId:w,synthetic:c,...p,requestedModel:K(M),request:W0,trackSessionId:j0??void 0,dump:G0?x1:B1,status:V1.status,streaming:q0}),V1}async function n7(U,L){if(!U)return!1;try{return await E.refreshMain(L?.accountIdentity??h0,U,L?.generation),p0(U,L)}catch{return!1}}async function e1(U,L={}){let v=await R0.getUsableFallbackAccounts(U,{modelId:L.modelId}),y=new Map(v.map((f)=>[f.id,f])),q=[];for(let f of U?.accounts??[]){if(U0(f)){let w=y.get(f.id);if(w)q.push(w);else if(f.access&&(!f.expires||f.expires>Date.now())&&!H1(f.lastRefreshError)&&!W1(f.lastRefreshError,f.id,Date.now())&&U?.quota?.failClosedOnUnknownQuota!==!0&&!m4(T0(f)))q.push(f);continue}if(L.includeApiRoutes===!0&&v1(f)&&f.enabled!==!1&&f.apiKey&&aN(f.baseURL))q.push(f)}if(!k1(U))return q;return q.filter((f)=>U0(f)?T1(T0(f),U,f.id,L.modelId):!0)}async function B$(U){let L=U.mainQuotaIdentity?.accountIdentity,v=E.getMain(L),y=v?.quota;if(!n1(v?.quota,U.storage,Date.now(),U.requestedModelId))try{y=await E.refreshMain(L,U.mainAccessToken,U.mainQuotaIdentity?.generation)}catch{}let q=await R0.getUsableFallbackAccounts(U.storage,{modelId:U.requestedModelId}),f=await x(j)??U.storage,w=new Map(q.map((H)=>[H.id,H])),z0=[];if(!H1(f?.refresh?.mainLastRefreshError))z0.push({id:d0,access:U.mainAccessToken,quota:y,identity:S0?{kind:"known",accountId:S0}:{kind:"unknown"},order:0});for(let[H,n]of(f?.accounts??[]).entries()){if(n.enabled===!1||!U0(n))continue;let P=w.get(n.id)??n;if(!P.access||H1(P.lastRefreshError))continue;let F=T0(P);if(!n1(F,f,Date.now(),U.requestedModelId))try{F=await E.refreshFallback(P.id,P.access,P)}catch{}z0.push({id:P.id,access:P.access,quota:F,identity:{kind:"known",accountId:P.id},order:H+1,account:P})}let R=new Set(z0.flatMap((H)=>{let n=H.id===d0?f?.refresh?.mainLastRefreshError:H.account?.lastRefreshError,P=H.identity.kind==="known"?H.identity.accountId:void 0;if(H1(n))return[];if(W1(n,P,Date.now()))return[];if(n1(H.quota,f,Date.now(),U.requestedModelId)&&V4({quota:H.quota,modelId:U.requestedModelId}).action==="migrate")return[];if(k1(f)&&!T1(H.quota,f,H.id===d0?void 0:H.id,U.requestedModelId))return[];return[H.id]})),c=new Set(q.map((H)=>H.id)),C=z0.flatMap((H)=>{let n=H.id===d0?f?.refresh?.mainLastRefreshError:H.account?.lastRefreshError,P=H.identity.kind==="known"?H.identity.accountId:void 0;if(H1(n)||W1(n,P,Date.now()))return[];let F=H.id===d0?void 0:H.id,j0=m4(H.quota)?H.quota:void 0,T=j0?{kind:"known",quota:j0}:{kind:"unknown"};return(!k1(f)||T1(T.kind==="known"?T.quota:void 0,f,F,U.requestedModelId))&&_N(T.kind==="known"?T.quota:void 0,f)&&(T.kind==="unknown"||g4(T.quota,U.requestedModelId)&&(H.id===d0||c.has(H.id)))?[{accountId:H.id,quota:T,order:H.order}]:[]});return{storage:f,allRoutes:z0,candidates:C,retainAccountIds:R}}let C$=new WeakMap;async function NN(U,L,v,y,q,f,w){if(!v.length)return q??null;let z0=w?.returnLastOnExhausted??!0;await q?.body?.cancel().catch(()=>{});let R=q??null;for(let[c,C]of v.entries()){let H;if(v1(C)){if(!C.apiKey)continue;H=await b0(U,L,C,f,`api_fallback_${c}`,y,w?.fableRequest)}else{let P=C.access;if(!P)continue;H=await m0(U,L,P,f,`fallback_${c}`,y,C.id,C.authLineageId,w?.fableRequest,w?.laneStartRequest)}R=H;let n=$4(H.status,y);if(!n){let P=await D0(H,f);H=P.response,R=H,n=P.rateLimited}if(!n){if(C$.set(H,v1(C)?"api":"oauth"),await R0.markUsed(C),await w?.onSuccess?.(C),U0(C)&&C.access&&E.shouldRefreshOnRequestCount(EN))E.refreshFallback(C.id,C.access,C).then(()=>w?.onSuccess?.(C)).catch(()=>{});return H}if(c<v.length-1||!z0)await H.body?.cancel().catch(()=>{})}return z0?R:null}async function o7(U,L,v,y,q,f,w,z0,R,c,C=!1,H){if(!D(U,L?.body))return v;let n=g(),P=f??await x(j);if(q?.mark("fallback_load_storage",{ms:K0(g()-n),cached:!!f}),!(P?.accounts??[]).some((W0)=>W0.enabled!==!1&&(U0(W0)||v1(W0)&&Boolean(W0.apiKey)&&aN(W0.baseURL))))return v;let j0=v,T=$4(j0.status,P),M=t1(j0,!1);if(!T){let W0=await D0(j0,q);j0=W0.response,T=W0.rateLimited,M=t1(j0,W0.rateLimited)}if(!T)return j0;let B0=!1;if(y)B0=y.some(v1);else if(M)B0=await n7(w,H);let $0=y;if(!$0){let W0=g();$0=await e1(P,{includeApiRoutes:B0,modelId:R}),q?.mark("fallback_get_accounts",{ms:K0(g()-W0),accounts:$0.length})}if(k1(P)){let W0=$0.length;if($0=$0.filter((q0)=>U0(q0)?T1(T0(q0),P,q0.id,R):!0),$0.length<W0)L0("[killswitch] filtered fallbacks",{before:W0,after:$0.length})}return await NN(U,L,$0,P,j0,q,{onSuccess:z0,fableRequest:c,laneStartRequest:C})??j0}return{apiKey:"",async fetch(U,L){let v=mN(U,L),y=v.get(RN)==="1";v.delete(RN),L={...L,headers:v};let q=v.get("x-session-affinity")||v.get("x-opencode-session"),f=K(L?.body),w=Q0.plan(q,L?.body);if(w&&!w.downgraded){let S=Q1.get(w.recoveryKey);if(S)await S,w=Q0.plan(q,L?.body)}let z0=P0==="server"&&g1(w?.effectiveModel??f)?w?.effectiveModel??f:void 0,R=w?{plan:w}:void 0;if(w?.downgraded)L={...L,body:w.bodyText};let c=L?.body,C=q8({bodyBytes:typeof c==="string"?c.length:void 0}),H=(S)=>{let p=t0.get(S);return mJ(S,{perf:(k,G0)=>C.mark(k,G0),laneStart:y,laneStartOAuthServed:C$.get(S)!=="api",...p?p.streaming?{onMessageStart:(k)=>M1(S,k,!1),onMessageDelta:(k)=>wN(S,k),onStreamEnd:()=>p.dumpWrite}:{onMessageResponse:(k)=>M1(S,k),onStreamEnd:()=>p.dumpWrite,responseMode:"json"}:{},contentFilterModel:w?.requestedModel,...!w?.downgraded&&w?{onContentFilter:(k)=>{if(!R?.warmTarget)return I.debug("fable-fallback","content filter recovery unavailable for non-OAuth route",{session:w.sessionId}),!1;let G0=Q0.activate(w,R.warmTarget.oauthAccountId);i.delete(w.recoveryKey),i.set(w.recoveryKey,h8(w.requestedModel));while(i.size>128){let N0=i.keys().next().value;if(N0)i.delete(N0);else break}b.delete(w.recoveryKey),I.info("fable-fallback","content filter detected; switching session to Opus 4.8",{session:w.sessionId,requestedModel:w.requestedModel,completedToolUse:k?.completedToolUse===!0,remaining:G0}),a1({sessionId:w.sessionId,mode:"opus",remaining:G0,requestedModelId:w.requestedModel},T,P)}}:{},...w?.downgraded&&R?{onComplete:(k)=>{let G0=Q0.complete(w,R.opusCacheAnchor);if(!G0.counted)return;let N0=i.get(w.recoveryKey);if(N0)i.delete(w.recoveryKey),r.delete(w.sessionId),P$(w.sessionId,N0);I.info("fable-fallback","Opus 4.8 turn completed",{session:w.sessionId,requestedModel:w.requestedModel,finishReason:k,remaining:G0.remaining}),a1({sessionId:w.sessionId,mode:"opus",remaining:G0.remaining,requestedModelId:w.requestedModel},T,P);let m=T7(R);if(G0.remaining===0){let v0=()=>{if(Q0.remaining(w)!==0)return;a1({sessionId:w.sessionId,mode:"fable",remaining:0,requestedModelId:w.requestedModel},T,P,b8(w.requestedModel))};m.then(v0,v0)}}}:{},...z0?{serverSideFallbackModel:z0,...w?{onServerSideFallbackOutcome:(k)=>R7(w,k,T,P)}:{}}:{}})},n=g(),P=await J();if(C.mark("get_auth",{ms:K0(g()-n),authType:P.type,hasAccess:Boolean(P.access)}),P.type!=="oauth"){let S=await fetch(U,L);return C.done("non_oauth_passthrough",{status:S.status}),S}let F;if(P.access){let S=await S1(P.access,K(L?.body));if(S.stale)throw Error("Main OAuth identity changed while resolving request credentials");F=S}await U$(S0);let j0=g(),T=await x();C.mark("load_storage",{ms:K0(g()-j0)}),E.updateStorage(T),E.seedMainFromStorage(T,h0),E.seedFallbacksFromAccounts((T?.accounts??[]).filter(U0));let M=q?o0.get(q):void 0;if(!w||P0==="server"&&M?.requestedModelId&&J1(M.requestedModelId)!==J1(w.requestedModel))v7(q,T,P);let B0=D(U,L?.body),$0=K(L?.body);if(B0)EN++;if(B0&&P.access&&(!P.expires||P.expires>Date.now()))S7(T,P.access,F);let W0=async(S,p)=>{let k=T,G0=!1;if((T?.accounts??[]).some((N0)=>U0(N0)&&N0.quota))try{let N0=await x(j);if(N0)k=N0;else G0=!0}catch{G0=!0}r0(k,{activeId:S,route:p,mainAccessToken:P.access,skipFallbackQuotaSeed:G0})},q0;if(B0&&q&&o1(T)==="sticky-balanced"&&P.access){let S=w?.effectiveModel??$0,p=z7(S),k=N1.trackedOAuthRoute(q),G0=w?.cacheAccountId??(k?k.oauthAccountId??d0:void 0),N0=!1;try{let m=await B$({storage:T,mainAccessToken:P.access,requestedModelId:S,mainQuotaIdentity:F}),v0=(E0)=>y0.resolve({sessionId:q,family:p,modelId:S,candidates:m.candidates,retainAccountIds:m.retainAccountIds,storage:m.storage,inputBytes:typeof L?.body==="string"?Buffer.byteLength(L.body):1,preferredAccountId:G0,excludeAccountIds:E0}),g0=H1(m.storage?.refresh?.mainLastRefreshError),V1=m.allRoutes.length===0&&!g0||m.allRoutes.some((E0)=>!E0.quota||!n1(E0.quota,m.storage,Date.now(),S)),_0=await v0();if(!_0&&V1)throw Error("Sticky-balanced routing is waiting for current OAuth quota snapshots");if(!_0){let E0=V7({mainRefreshError:m.storage?.refresh?.mainLastRefreshError,fallbackReauthLabels:L3(m.storage),routeQuotas:m.allRoutes.flatMap((c0)=>c0.quota?[c0.quota]:[]),modelId:S});return C.done("return_sticky_no_route",{status:E0.status}),E0}let l=m.allRoutes.find((E0)=>E0.id===_0?.accountId);if(_0&&l){if(N0=!0,w?.downgraded&&Q0.bindRecoveryAccount(w,l.id))I.info("fable-fallback","rebound recovery to migrated sticky account",{accountId:l.id});let E0=(X0)=>m0(U,L,X0.access,C,`sticky:${X0.id}`,m.storage,X0.id,X0.account?.authLineageId,R,y,X0.id===d0?F:void 0),c0=async(X0,A0,x0=!0)=>{if(x0&&X0.account)await R0.markUsed(X0.account);return await W0(X0.id,"sticky-balanced"),C.done("return_sticky_balanced",{status:A0.status,accountId:X0.id,created:_0?.created,migrated:_0?.migrated}),H(A0)},qN=async(X0)=>{let A0=X0,x0=$4(X0.status,m.storage),$1=!1;if(!x0){let C1=await D0(X0,C);A0=C1.response,$1=C1.rateLimited,x0=C1.rateLimited}return{response:A0,routeFailure:x0,streamingRateLimit:$1}},$N=n1(l.quota,m.storage,Date.now(),S)?V4({quota:l.quota,modelId:S}):void 0;if($N?.action==="hold")return c0(l,await C4(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"}}),q,$N.retryAfterSeconds,!1,t0),!1);let Z0=await qN(await E0(l)),l0=!1;if(!Z0.routeFailure)return c0(l,Z0.response);if(Z0.response.status===401){let X0=l.id;try{if(X0===d0)P.access=await X(l.access),l={...l,access:P.access};else if(l.account&&m.storage){let A0=await R0.refreshAccount(l.account,m.storage,{force:!0});if(A0.access)l={...l,access:A0.access,account:A0}}if(await Z0.response.body?.cancel().catch(()=>{}),Z0=await qN(await E0(l)),!Z0.routeFailure)return c0(l,Z0.response);l0=Z0.response.status===401}catch(A0){let x0=await x(j),$1=X0===d0?x0?.refresh?.mainLastRefreshError:x0?.accounts.find((C1)=>C1.id===X0&&U0(C1))?.lastRefreshError;if(!H1($1))throw A0;l0=!0}}let JN=Z0.response.status===403||l0;if(Z0.response.status===429||Z0.streamingRateLimit){let X0;try{X0=l.id===d0?await E.refreshMain(F?.accountIdentity,l.access,F?.generation):await E.refreshFallback(l.id,l.access,l.account)}catch{X0=void 0}let A0=V4({quota:X0,modelId:S});if(C.mark("sticky_quota_failure",{accountId:l.id,action:A0.action,reason:A0.reason}),A0.action==="hold")return c0(l,await C4(Z0.response,q,A0.retryAfterSeconds,Z0.streamingRateLimit,t0));JN=A0.action==="migrate"}if(JN){let X0=l.id;if(m=await B$({storage:m.storage,mainAccessToken:P.access,requestedModelId:S,mainQuotaIdentity:F}),m.candidates.filter((x0)=>x0.accountId!==X0).length>0){await Z0.response.body?.cancel().catch(()=>{}),_0=await v0(new Set([X0]));let x0=m.allRoutes.find(($1)=>$1.id===_0?.accountId);if(_0&&x0){if(l=x0,w?.downgraded)Q0.bindRecoveryAccount(w,l.id);return c0(l,await E0(l))}}else if((Z0.response.status===429||Z0.streamingRateLimit)&&p0(P.access,F)){let x0=(await e1(m.storage,{includeApiRoutes:!0,modelId:S})).filter(v1);if(x0.length>0){let $1=await NN(U,L,x0,m.storage,Z0.response,C,{onSuccess:(C1)=>W0(C1.id,"sticky-balanced"),fableRequest:R,laneStartRequest:y});if($1)return C.done("return_sticky_api_fallback",{status:$1.status}),H($1)}}}return c0(l,Z0.response)}}catch(m){if(C.mark("sticky_balanced_error",{error:m instanceof Error?m.message:String(m)}),N0)throw m;let v0=m instanceof Error?m:Error(String(m));throw Object.assign(v0,{code:"ECONNRESET",syscall:"sticky-routing"}),v0}}if(B0&&o1(T)==="fallback-first")try{let S=g();q0=await e1(T,{includeApiRoutes:p0(P.access,F),modelId:$0}),C.mark("fallback_first_get_accounts",{ms:K0(g()-S),accounts:q0.length});let p=await NN(U,L,q0,T,void 0,C,{returnLastOnExhausted:!1,onSuccess:(k)=>W0(k.id,"fallback-first"),fableRequest:R,laneStartRequest:y});if(p)return C.done("return_fallback_first",{status:p.status}),H(p);q0=void 0}catch(S){C.mark("fallback_first_error",{error:S instanceof Error?S.message:String(S)})}if(!P.access||!P.expires||P.expires<Date.now()){let S=await x(),p=S?.refresh?.mainLastRefreshError;if(p&&W1(p,S0??S?.mainAccountId,Date.now()))throw L0("[refresh] opencode main oauth request skipped backoff",{nextRetryAt:p.nextRetryAt,retryCount:p.retryCount,expiresInMs:P.expires?P.expires-Date.now():void 0}),Error(b4(p,Date.now()));L0("[refresh] opencode main oauth refresh required for request",{hasAccess:Boolean(P.access),expiresInMs:P.expires?P.expires-Date.now():void 0,expiredAgoMs:P.expires&&P.expires<Date.now()?Date.now()-P.expires:void 0});let k=g();P.access=await X(),C.mark("refresh_main_access",{ms:K0(g()-k)})}if(!P.access)throw C.done("missing_access_error"),Error("OAuth access token is missing after refresh");function x1(){if(T?.quota?.showToasts!==!0)return;let S=E.getMain(F?.accountIdentity);if(!S)return;let p=(T?.accounts??[]).filter((N0)=>N0.enabled!==!1&&U0(N0)).map((N0)=>({...N0,quota:E.getFallback(N0.id,N0)?.quota??N0.quota})),k=_N(S.quota,T),G0;if(k)G0="main";else G0=p.find((N0)=>_N(N0.quota,T))?.id??"main";i7(S.quota,p,G0)}if(B0&&t(T))try{let S=g(),p=E.getMain(F?.accountIdentity),k=p?.quota;if(!k)k=await E.refreshMain(F?.accountIdentity,P.access,F?.generation),p=E.getMain(F?.accountIdentity),x1();else if(E.needsRefresh(EN,$0))if(w1(k)||y4(k,$0))k=await E.refreshMain(F?.accountIdentity,P.access,F?.generation),p=E.getMain(F?.accountIdentity);else E.refreshMain(F?.accountIdentity,P.access,F?.generation).then(()=>{CN().catch(()=>{}),x1()}).catch(()=>{});r0(T,{activeId:"main",route:"main",mainAccessToken:P.access});let G0=_N(k,T)&&g4(k,$0);if(C.mark("main_quota_for_routing",{ms:K0(g()-S),passes:G0,model:$0,modelScopedExhausted:y4(k,$0)}),!G0){let N0=g();q0=await e1(T,{includeApiRoutes:Boolean(p&&p.refreshAfter>Date.now()&&w1(p.quota)),modelId:$0}),C.mark("preselect_fallback_accounts",{ms:K0(g()-N0),accounts:q0.length});let m=await NN(U,L,q0,T,void 0,C,{onSuccess:(v0)=>W0(v0.id,"fallback"),fableRequest:R,laneStartRequest:y});if(m)return C.done("return_preselected_fallback",{status:m.status}),H(m)}}catch(S){C.mark("main_quota_for_routing_error",{error:S instanceof Error?S.message:String(S)})}let B1=E.getMain(F?.accountIdentity)?.quota;if(T?.quota?.failClosedOnUnknownQuota&&!B1&&E.isBackedOff()){let S=E.getLastApiError(),p=S?P3(S,Date.now()):"Quota API unavailable";return L0("[quota] blocked: quota API backed off (failClosed)",{nextRetryAt:S?.nextRetryAt,retryCount:S?.retryCount}),new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:p}}),{status:429,headers:{"content-type":"application/json","retry-after":String(S?.nextRetryAt?Math.max(1,Math.ceil((S.nextRetryAt-Date.now())/1000)):60)}})}if(k1(T)){if(E.needsRefresh(EN,$0))try{let p=(T?.accounts??[]).filter((k)=>k.enabled!==!1&&U0(k)&&Boolean(k.access));await Promise.all([E.refreshMain(F?.accountIdentity,P.access,F?.generation),E.refreshAllFallbacks(p)])}catch(p){L0("[quota] killswitch refresh failed",{error:p instanceof Error?p.message:String(p),backedOff:E.isBackedOff()})}B1=E.getMain(F?.accountIdentity)?.quota}if(k1(T)&&!T1(B1,T,void 0,$0)){let p=D(U,L?.body)?await e1(T,{includeApiRoutes:p0(P.access),modelId:$0}):[];if(p.length>0){L0("[route] skipping main (killswitch), trying fallbacks");let g0=await NN(U,L,p,T,void 0,C,{onSuccess:(V1)=>W0(V1.id,"fallback"),laneStartRequest:y});if(g0)return C.done("return_killswitch_fallback",{status:g0.status}),H(g0)}let k=Date.now(),G0=(T?.accounts??[]).filter((g0)=>g0.enabled!==!1&&U0(g0)).map((g0)=>({...g0,quota:T0(g0)})),N0=m$({mainQuota:B1,requestModelId:$0,storage:T}),m=B3(B1,G0,k,N0.isScopedDriven?N0.modelId:void 0),v0=g$({retryAfterSeconds:m,...N0.isScopedDriven&&{modelName:N0.modelName}});return new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:v0}}),{status:429,headers:{"content-type":"application/json","retry-after":String(m)}})}let AN=await m0(U,L,P.access,C,"main",T,"main",void 0,R,y,F),SN=!1,f1=await o7(U,L,AN,q0,C,T,P.access,(S)=>{return SN=!0,W0(S.id,"fallback")},$0,R,y,F);if(!SN)await W0("main","main");return C.done("return_response",{status:f1.status}),H(f1)}}}return{}},dispose:async()=>{await b1?.dispose()},methods:[{label:"Claude Pro/Max",type:"oauth",authorize:async()=>{let J=await rN("max");return{url:J.url,instructions:"Paste the authorization code here:",method:"code",callback:async(Z)=>{return sN(Z,J.verifier,J.redirectUri,J.state)}}}},{label:"Create an API Key",type:"oauth",authorize:async()=>{let J=await rN("console");return{url:J.url,instructions:"Paste the authorization code here:",method:"code",callback:async(Z)=>{let O=await sN(Z,J.verifier,J.redirectUri,J.state);if(O.type==="failed")return O;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 ${O.access}`}}).then((V)=>V.json())).raw_key}}}}},{provider:"anthropic",label:"Manually enter API Key",type:"api"}]},__primeManager:I1,__quotaManager:E}},kZ=d8;export{kZ as AnthropicAuthPlugin};
36
+ `),Q=O>=90?"error":O>=70?"warning":"info";N.tui?.showToast?.({body:{title:"Claude Quota",message:U,variant:Q,duration:Q==="error"?8000:5000}})?.catch?.(()=>{})}return t8=i9(n4,()=>{return i$=i$.catch(()=>{}).then(async()=>{if((await l8()).enrolledAccountIds.length>0)await $1.refreshQuotaForDueAccounts(),await Z4()}),i$},{setTimeoutImpl:Z.setTimeout,clearTimeoutImpl:Z.clearTimeout,pollSetTimeoutImpl:Z.setTimeout,pollClearTimeoutImpl:Z.clearTimeout,pollIntervalMs:J.custodyManifestPollIntervalMs,onError:(V)=>{T.warn("claustrum","manifest watcher failed",{error:V instanceof Error?V.message:String(V)})}}),{"experimental.chat.messages.transform":async(V,j)=>{let Y=j.messages;Q1.observeMessages(Y);let G=J3(Y);if(G){N1.record(G);return}let O=Y.findLast((L)=>L.info?.role==="user"),U=O?.info?.sessionID,Q=O?.info?.id;if(typeof U==="string"&&typeof Q==="string")N1.clear(U,Q)},"chat.message":async({sessionID:V},j)=>{w4.observeSyntheticMessage({sessionId:V,messageId:j.message.id,parts:j.parts})},"chat.headers":async({sessionID:V,message:j},Y)=>{w4.markHeaders({sessionId:V,messageId:j.id,headers:Y.headers}),N1.markHeaders({sessionId:V,messageId:j.id,headers:Y.headers}),Q1.markHeaders({sessionId:V,messageId:j.id,headers:Y.headers})},event:async({event:V})=>{let j=V,Y=j.properties?.info,G=j.properties?.sessionID??Y?.sessionID??Y?.id;if(!G)return;if(j.type==="message.updated"&&Y?.role==="user"&&!j9(G,Y.id))if(typeof Y.id==="string"){if(l4.set(G,Y.id),M0.has(G)&&B0.get(G)!==Y.id)M0.delete(G)}else M0.delete(G);if(j.type==="session.status"&&j.properties?.status?.type!=="idle")M0.delete(G);if(j.type==="session.idle"){let O=l4.get(G);if(O)B0.set(G,O);else B0.delete(G);M0.add(G);while(M0.size>128){let U=M0.values().next().value;if(U)M0.delete(U);else break}Y7(G)}if(j.type==="session.deleted"||j.type==="message.removed")Q1.clearSession(G);if(j.type==="session.deleted"){w4.clearSession(G),L1.delete(G),u0.delete(G),M0.delete(G),l4.delete(G),B0.delete(G),y0.delete(G);for(let O of H1.keys())if(O.startsWith(`${G}\x00`))H1.delete(O);O1.delete(G)}},config:async(V)=>{V.command={...V.command??{},[X8]:{template:X8,description:"Show or toggle 1-hour Anthropic ephemeral prompt cache TTL."},[L8]:{template:L8,description:"Manage fallback accounts — list, enable/disable, reorder, remove, or add (API key or OAuth)."},[K8]:{template:K8,description:"Keep hybrid Claude cache warm always or during a local time window."},[T8]:{template:T8,description:"Start each OAuth account's five-hour quota window after reset."},[C8]:{template:C8,description:"Send a billed one-token synthetic turn to warm and renew the current Claude session cache."},[q8]:{template:q8,description:"Show current Claude OAuth quota usage for all accounts."},[G8]:{template:G8,description:"Show or toggle Anthropic request dump capture for debugging."},[B8]:{template:B8,description:"Show or toggle Anthropic fast mode for supported Opus models."},[F8]:{template:F8,description:"Show or set the plugin log level (error, warn, info, debug, trace)."},[x8]:{template:x8,description:"Show or change Claude account routing: main-first, fallback-first, or sticky-balanced."},[_8]:{template:_8,description:"Manage killswitch — hard-block requests when quota drops below per-account thresholds."}}},"experimental.chat.system.transform":async(V,j)=>{if(!sY(V))return;aY(j.system)},provider:{id:"anthropic",async models(V,j){let Y=X2(j2(V.models));if(j.auth?.type!=="oauth"||!dZ(I??{}))return Y;return G2(Y)}},"command.execute.before":async(V)=>{if(!SV.includes(V.command))return;let j=V.command,Y=await G9(j,V.arguments,V.sessionID);if(j==="claude-quota"){let G=await M(),O=f0?await f0().catch(()=>{return}):void 0;D1(G,{activeId:t0.activeId,route:t0.route,mainAccessToken:O?.access,routingAuthoritative:!1})}if(k7(V.sessionID))B3(Y,V.sessionID);else await kZ($,V.sessionID,Y.text);rY()},auth:{provider:"anthropic",async loader(V,j){f0=V;let Y=await V();if(P4)await vV(V);let G=await M(z);if(L0(G)==="claustrum"&&V1(Y,"anthropic"))await u8(!0),G=await M(z);let O=L0(G),U=I9(Y),Q=B7(G,$4),L=e1(Y),B=O==="claustrum"&&G?m0(L,G):{status:"unresolved"},S=O!=="claustrum"||U!=="T"||o(G)||B.status==="resolved"&&Boolean(F1(E0?.peek(B.handle),W()))?"V":"N",x;if(Y.type==="oauth")try{z$({mode:O==="claustrum"?"C":"L",main:U,fallbacks:Q.fallbacks,evidence:S})}catch(l){if(!(l instanceof G$))throw l;return W7=l.verdict,{apiKey:"",fetch:async()=>{throw l}}}if(Y.type==="oauth"){let P0=function(){if(v1)Z.clearInterval(v1),v1=null;let w=async()=>{try{let F=await M(z);if(!tV(F))return;let p=await V();if(p.type!=="oauth")return;if(await Z9(i0??F?.mainAccountId,p.refresh?e0(p.refresh):void 0),!p.expires)return;let u=p.expires-Date.now(),i=aV(F);if(u>i)return;if(x0("[refresh] opencode main oauth background due",{expiresInMs:u,refreshBeforeMs:i}),C1(F?.refresh?.mainLastRefreshError,i0??F?.mainAccountId,Date.now(),p.refresh?e0(p.refresh):void 0)){x0("[refresh] opencode main oauth background skipped backoff",{nextRetryAt:F?.refresh?.mainLastRefreshError?.nextRetryAt,retryCount:F?.refresh?.mainLastRefreshError?.retryCount,expiresInMs:u});return}if(p.refresh&&F?.refresh?.mainRefreshLeaseUntil&&F.refresh.mainRefreshLeaseUntil>Date.now()&&F.refresh.mainRefreshLeaseTokenHash===$8(p.refresh))return;await c0();let h=await V();x0("[refresh] opencode main oauth refreshed in background",{newExpiresInMs:h.expires?h.expires-Date.now():void 0})}catch(F){T.warn("refresh","opencode main oauth refresh failed",{message:F instanceof Error?F.message:String(F)})}};if(v1=Z.setInterval(()=>{w()},kY+fZ(hY)),"unref"in v1)v1.unref()},T0=function(w,F){if(w instanceof Request&&w.body)return!1;return F==null||typeof F==="string"},Z1=function(w){if(typeof w!=="string")return;try{let F=JSON.parse(w);return typeof F.model==="string"?F.model:void 0}catch{return}},j4=function(w){return w.has("x-parent-session-id")},G7=function(w){return w.includes("rate_limit_error")||/exceed your account'?s rate limit/i.test(w)},j1=function(w){return w?.quota?.enabled===!0},K9=function(w,F){if(w.delete("authorization"),w.delete("x-api-key"),F.authHeader==="x-api-key")w.set("x-api-key",F.apiKey??"");else w.set("Authorization",`Bearer ${F.apiKey??""}`);w.set("Content-Type","application/json"),D8(w)},DW=function(w){return({status:F,source:p})=>{if(F!==401)return;let u=l$.get(w);if(u)x4(u,p)}},C4=function(w){return f.getFallback(w.id,w)?.quota??w.quota},z7=function(w){return["five_hour","seven_day"].some((F)=>(w?.[F]?.remainingPercent??1)<=0)},N9=function(w,F){return w.status===429||F},s$=function(w,F){if(!w)return!1;let p=f.getMain(F?.quotaKey??J1);return Boolean(p&&p.refreshAfter>Date.now()&&z7(p.quota))},O9=function(w,F){let p=m0(w,F);return L0(F)==="local"&&p.status==="resolved"&&p.source==="manifest"},l=e1(Y);l.anthropicAccountUuid=G?.main?.profile?.providerAccountUuid??G?.main?.profile?.accountIdentity;let K0=L0(G)==="claustrum"&&G?m0(l,G):void 0;if(K0?.status==="resolved"&&!V1(Y,"anthropic"))return{apiKey:"",fetch:async()=>h8("takeover-incomplete")};if(V1(Y,"anthropic"))if(i0=await t7(z),L0(G)==="claustrum")x={account:l,handle:K0?.status==="resolved"?K0.handle:void 0};else throw new yZ("anthropic");if(i0=await t7(z),J1??=l.anthropicAccountUuid??i0,Y.access)await R1(Y.access);async function c0(w){if(w){let p=await V();if(p.type==="oauth"&&p.access&&p.access!==w&&(!p.expires||p.expires>Date.now()))return x0("[refresh] opencode main oauth reused concurrently rotated access token",{expiresInMs:p.expires?p.expires-Date.now():void 0}),p.access}let F=AJ.get(z);if(!F)F=(async()=>{let i=null,h=null,A=null;async function I0(W0){let R=await M(z)??g0();R.refresh=R.refresh??{},W0(R),await z1(R,z,{mainRefresh:!0})}async function d(W0){let R=Date.now()+bY;while(Date.now()<R){await new Promise((D)=>Z.setTimeout(D,MZ+fZ(MZ)));let _=await V();if(_.type!=="oauth"||!_.access)continue;if((_.access!==W0.access||_.refresh!==W0.refresh||(_.expires??0)>(W0.expires??0)+60000)&&(!_.expires||_.expires>Date.now()))return x0("[refresh] opencode main oauth joined concurrent refresh",{expiresInMs:_.expires?_.expires-Date.now():void 0}),_.access}return null}for(let W0=0;W0<=2;W0++){let R=null;try{if(W0>0){let g=500*2**(W0-1);await new Promise((a)=>Z.setTimeout(a,g))}if(R=await V(),!R.refresh)throw Error("Token refresh failed: missing refresh token");let _=await M(z),c=$8(R.refresh),D=_?.refresh?.mainLastRefreshError;if(x0("[refresh] opencode main oauth refresh check",{attempt:W0,expiresInMs:R.expires?R.expires-Date.now():void 0,hasBackoff:Boolean(D),backoffActive:D?C1(D,i0??_?.mainAccountId,Date.now(),e0(R.refresh)):!1,retryCount:D?.retryCount,nextRetryAt:D?.nextRetryAt}),D&&C1(D,i0??_?.mainAccountId,Date.now(),e0(R.refresh)))throw x0("[refresh] opencode main oauth refresh skipped backoff",{nextRetryAt:D.nextRetryAt,retryCount:D.retryCount}),Error(J8(D,Date.now()));if(_?.refresh?.mainRefreshLeaseUntil&&_.refresh.mainRefreshLeaseUntil>Date.now()&&_.refresh.mainRefreshLeaseTokenHash===c){x0("[refresh] opencode main oauth refresh skipped lease",{leaseUntil:_.refresh.mainRefreshLeaseUntil});let g=await d(R);if(g)return g;throw Error("Claude OAuth refresh is already in progress")}let C=await E4({name:N4,ttlMs:120000,renew:!0});if(!C){x0("[refresh] opencode main oauth refresh skipped file lock");let g=await d(R);if(g)return g;throw Error("Claude OAuth refresh is already in progress")}A=C.release,i=SJ(),h=c,await I0((g)=>{g.refresh=g.refresh??{},g.refresh.mainRefreshLeaseId=i??void 0,g.refresh.mainRefreshLeaseUntil=Date.now()+120000,g.refresh.mainRefreshLeaseTokenHash=c});let X0=await M(z);if(x0("[refresh] opencode main oauth refresh lease acquired",{attempt:W0,leaseUntil:Date.now()+120000}),X0?.refresh?.mainRefreshLeaseId!==i||X0.refresh.mainRefreshLeaseTokenHash!==c)throw Error("Claude OAuth refresh is already in progress");x0("[refresh] opencode main oauth refresh request start",{attempt:W0});let O0=await pZ({refreshToken:R.refresh,maxRetries:0});return await N.auth.set({path:{id:"anthropic"},body:{type:"oauth",refresh:O0.refresh,access:O0.access,expires:O0.expires}}),await I0((g)=>{if(!g?.refresh)return;if(g.refresh.mainLastRefreshError=void 0,g.refresh.mainRefreshLeaseId===i)g.refresh.mainRefreshLeaseId=void 0,g.refresh.mainRefreshLeaseUntil=void 0,g.refresh.mainRefreshLeaseTokenHash=void 0}),x0("[refresh] opencode main oauth refresh succeeded",{attempt:W0,expiresInMs:O0.expires-Date.now()}),O0.access}catch(_){let c=_ instanceof Error&&(_.message.includes("fetch failed")||("code"in _)&&(_.code==="ECONNRESET"||_.code==="ECONNREFUSED"||_.code==="ETIMEDOUT"||_.code==="UND_ERR_CONNECT_TIMEOUT"));if(W0<2&&(c||(()=>{let C=_.status;return typeof C==="number"&&C>=500})()))continue;x0("[refresh] opencode main oauth refresh attempt failed",{attempt:W0,error:_ instanceof Error?_.message:String(_),transient:c});let D=R?.refresh;if(D&&_.isRefreshError)await I0((C)=>{C.refresh=C.refresh??{},C.refresh.mainLastRefreshError=X5({error:_,now:Date.now(),accountIdentity:i0??C.mainAccountId,refreshTokenFingerprint:e0(D),previous:C.refresh.mainLastRefreshError})});throw _}finally{if(i)await I0((_)=>{if(!_?.refresh)return;if(_.refresh.mainRefreshLeaseId===i&&_.refresh.mainRefreshLeaseTokenHash===h)_.refresh.mainRefreshLeaseId=void 0,_.refresh.mainRefreshLeaseUntil=void 0,_.refresh.mainRefreshLeaseTokenHash=void 0}).catch(()=>{});await A?.().catch(()=>{})}}throw Error("Token refresh exhausted all retries")})(),AJ.set(z,F);try{return await F}finally{if(AJ.get(z)===F)AJ.delete(z)}}if(eJ=c0,!x)P0();f.seedFallbacksFromAccounts((I?.accounts??[]).filter(Z0));let b0=await dY(z);if(await D1(b0.freshStorage,{activeId:b0.activeId,route:b0.route,mainAccessToken:Y.access,routingAuthoritative:!1}),process.env.OPENCODE_ANTHROPIC_AUTH_DISABLE_PROFILE_HYDRATION!=="1")A0(I??g0(),Y.access).then((w)=>{D1(w,{activeId:"main",route:"main",mainAccessToken:Y.access,routingAuthoritative:!1,useHydratedProfiles:!0})}).catch(()=>{});async function Y4(w,F){if(!w.body||w.status!==200)return F?.mark("inspect_stream_skip",{status:w.status}),{response:w,rateLimited:!1};if(w.headers.get("x-cortexkit-relay-optimistic")==="true")return F?.mark("inspect_stream_skip",{status:w.status,reason:"optimistic_relay"}),{response:w,rateLimited:!1};let p=V0(),u=w.body.getReader(),i=[],h=new TextDecoder,A="",I0=0;while(!A.includes(`
37
+
38
+ `)&&A.length<65536){let{done:R,value:_}=await u.read();if(R)break;if(i.push(_),I0+=_.byteLength,A+=h.decode(_,{stream:!0}),G7(A))break}if(G7(A)){await u.cancel().catch(()=>{});try{u.releaseLock()}catch{}let R=new ReadableStream({start(c){for(let D of i)c.enqueue(D);c.close()}});F?.mark("inspect_stream_first_event",{ms:q0(V0()-p),bytes:I0,rateLimited:!0});let _=new Response(R,{status:w.status,statusText:w.statusText,headers:w.headers});return t$(u1,w,_),{response:_,rateLimited:!0}}let d=new ReadableStream({start(R){for(let _ of i)R.enqueue(_)},async pull(R){let{done:_,value:c}=await u.read();if(_){R.close();return}R.enqueue(c)},cancel(R){return u.cancel(R)}});F?.mark("inspect_stream_first_event",{ms:q0(V0()-p),bytes:I0,rateLimited:!1});let W0=new Response(d,{status:w.status,statusText:w.statusText,headers:w.headers});return t$(u1,w,W0),{response:W0,rateLimited:!1}}async function LW(w,F,p,u,i="api_fallback",h,A){if(A?.plan.downgraded)A.warmTarget=void 0,A.opusCacheAnchor=void 0;let I0=V0(),d=_$(w,F),W0=d.get("x-session-affinity")||d.get("x-opencode-session"),R=j4(d),_=d.get(f4)??void 0,c=N1.resolveHeader(_);d.delete("x-parent-session-id"),d.delete("x-session-affinity"),d.delete("x-opencode-session"),d.delete(f4),d.delete(W$);let D=await p7(w,F),C=!1,X0=null,O0=typeof D==="string"?D.length:void 0;if(D&&typeof D==="string"){let d0=V0(),k0=(()=>{if(!gJ())return!1;try{return w$(JSON.parse(D).model)}catch{return!1}})();try{D=await FJ(D,{cache1hEnabled:!R&&c4(),cache1hMode:p4(),fastModeEnabled:k0,sessionId:W0||void 0,midConversationEffortEnabled:!1,midConversationEffortPlan:_,midConversationEffortResolvedPlan:c,modelRemapEnabled:!0,perf:(n0,Y1)=>u?.mark(`rewrite_body_${n0}`,{route:i,...Y1})})}catch(n0){if(n0 instanceof S0)return CZ(n0);throw n0}if(K9(d,p),d.set("anthropic-beta",B$(d.get("anthropic-beta"),[])),k0)wJ(d);try{C=JSON.parse(D).stream===!0}catch{}u?.mark("rewrite_body",{route:i,ms:q0(V0()-d0),originalBytes:O0,rewrittenBytes:D.length,cacheEnabled:!R&&c4(),cacheMode:p4(),fastModeEnabled:k0,subagent:R})}else K9(d,p);let g=await tJ(d),a=F$(w,{baseURL:p.baseURL}),v0=V0(),F0;try{F0=await fetch(a.input,{...F,body:D,headers:d,...y7()&&{tls:{rejectUnauthorized:!1}}})}catch(d0){if(typeof D==="string")await C$({affinity:W0,route:i,error:vZ(d0),bodyText:D,url:a.url?.toString()??TJ(a.input),method:qJ(w,F),headers:d});throw d0}if(typeof D==="string")X0=await C$({affinity:W0,route:i,status:F0.status,bodyText:D,url:a.url?.toString()??TJ(a.input),method:qJ(w,F),headers:d});return r8(F0,{source:"turn",accountId:p.id,synthetic:!1,...g,requestedModel:Z1(D),dump:X0,status:F0.status,streaming:C}),u?.mark("send_headers_received",{route:i,ms:q0(V0()-v0),status:F0.status,relayConfigured:!1,totalSendWithAccessMs:q0(V0()-I0),baseURL:p.baseURL}),F0}async function x4(w,F="direct",p){return p$(w,F,p)}async function I4(w,F,p,u,i="unknown",h,A="main",I0,d,W0=!1,R,_,c){DJ(p,"anthropic");let D=V0(),C=_?.served,X0=h,O0=async()=>{return X0??=await M(z),X0},g=_$(w,F),a=g.get("x-session-affinity")||g.get("x-opencode-session"),v0=j4(g),F0=g.get(f4)??void 0,d0=N1.resolveHeader(F0),k0=g.get(W$)??void 0,n0=Q1.resolveHeader(k0),Y1=!v0&&!W0?n0:void 0;g.delete("x-parent-session-id"),g.delete("x-session-affinity"),g.delete("x-opencode-session"),g.delete(f4),g.delete(W$);let Q0=await p7(w,F),k1=a?aJ.previousFor(a):null,$$=k1?.messageId??null,J$,Z$=!1,m=null,r=null,s;if(Q0&&typeof Q0==="string"){let H0=V0();try{let $0=JSON.parse(Q0);if(typeof $0.model==="string")s=$0.model}catch{}u?.mark("model_parse_for_identity",{route:i,ms:q0(V0()-H0),bodyBytes:Q0.length})}let G0=V0(),t=await I$(p,s,A==="main"?R?.quotaKey??_?.credentialAccountId??(!p.startsWith("sk-ant-oat")?i0:void 0):A);if(A!=="main"&&t.accountUuid)lJ(A,t.accountUuid).catch((H0)=>{T.warn("claustrum","failed to persist fallback identity",{accountId:A,error:H0 instanceof Error?H0.message:String(H0)})});u?.mark("resolve_claude_code_identity",{route:i,ms:q0(V0()-G0),hasAccountUuid:Boolean(t.accountUuid)});let e=typeof Q0==="string"?Q0.length:void 0;if(Q0&&typeof Q0==="string"){let H0=V0(),$0=(()=>{if(!gJ())return!1;try{return w$(JSON.parse(Q0).model)}catch{return!1}})(),w0=!v0&&c4(),U0=p4(),G1=d?.plan.downgraded&&d.plan.standbyCacheAnchor?.oauthAccountId===A?d.plan.standbyCacheAnchor:void 0;try{Q0=await FJ(Q0,{cache1hEnabled:w0,cache1hMode:U0,fastModeEnabled:$0,identity:t,sessionId:a||void 0,thinkingPrefixMismatchBehavior:LV(await O0()),midConversationEffortEnabled:!0,midConversationEffortPlan:F0,midConversationEffortResolvedPlan:d0,hybridStandbyAnchor:G1,serverSideFallbackEnabled:c1==="server",laneStart:W0,billingLineage:Y1,cacheDiagnosticsPreviousMessageId:$$,perf:(a0,i1)=>{if(u?.mark(`rewrite_body_${a0}`,{route:i,...i1}),a0==="cache_strategy"&&i1?.standbyBridgeApplied===!0&&d&&!d.standbyBridgeLogged)d.standbyBridgeLogged=!0,T.info("fable-fallback","restored standby Opus cache bridge",{session:d.plan.sessionId,distanceBlocks:i1?.standbyDistanceBlocks})}})}catch(a0){if(a0 instanceof S0)return CZ(a0);throw a0}if(d?.plan.downgraded&&w0&&U0==="hybrid"){let a0=wZ(Q0);d.opusCacheAnchor=a0?{...a0,oauthAccountId:A}:void 0}let A1=V0();try{let a0=JSON.parse(Q0);m4(g,p,{body:a0,identity:t});let i1=a0.diagnostics,H9=i1&&typeof i1==="object"&&!Array.isArray(i1)&&i1.previous_message_id===$$?$$:void 0;if(H9!==void 0&&g.get("anthropic-beta")?.split(",").map((_W)=>_W.trim()).includes(Y$))J$={sessionId:a??"session-unknown",previousMessageId:H9,...k1?{previousMessageReceivedAt:k1.receivedAt}:{},isSubagent:v0,ttlSent:$J(a0)};Z$=a0.stream===!0,u?.mark("set_oauth_headers_body_parse",{route:i,ms:q0(V0()-A1),bodyBytes:Q0.length,parsed:!0})}catch{m4(g,p,{identity:t}),u?.mark("set_oauth_headers_body_parse",{route:i,ms:q0(V0()-A1),bodyBytes:Q0.length,parsed:!1})}if($0)wJ(g);u?.mark("rewrite_body",{route:i,ms:q0(V0()-H0),originalBytes:e,rewrittenBytes:Q0.length,cacheEnabled:!v0&&c4(),cacheMode:p4(),fastModeEnabled:$0,subagent:v0})}let o0=await tJ(g),C0=F$(w);if(d&&typeof Q0==="string")d.warmTarget={url:C0.url?.toString()??C0.input.toString(),headers:new Headers(g),bodyText:Q0,oauthAccountId:A};if(typeof Q0==="string"&&c4()&&p4()==="hybrid"){let H0=await O0();if(!v0||Z5(H0)){let $0=V0(),w0=q4.track({sessionId:a,url:C0.url?.toString()??C0.input.toString(),headers:g,bodyText:Q0,storage:H0,cacheMode:"hybrid",oauthAccountId:A,isSubagent:v0});u?.mark("cachekeep_track",{session:a,ms:q0(V0()-$0),tracked:w0.tracked,reason:w0.tracked?void 0:w0.reason,bodyBytes:Q0.length})}}let z4=!1,B1=async()=>{z4=!0;try{let H0=await fetch(C0.input,{...F,body:Q0,headers:g,...y7()&&{tls:{rejectUnauthorized:!1}}});if(typeof Q0==="string")m=await C$({affinity:a,route:i,status:H0.status,bodyText:Q0,url:C0.url?.toString()??TJ(C0.input),method:qJ(w,F),headers:g,tag:W0?"start":void 0});return H0}catch(H0){if(typeof Q0==="string")await C$({affinity:a,route:i,error:vZ(H0),bodyText:Q0,url:C0.url?.toString()??TJ(C0.input),method:qJ(w,F),headers:g,tag:W0?"start":void 0});throw H0}},j0=await O0(),r0=P8(j0),w1=A==="main"?void 0:j0?.accounts.find((H0)=>H0.id===A&&Z0(H0)),a$=w5(w1,I0),V$={accountId:A,accessToken:p,authLineageId:I0,anthropicAccountUuid:x1(c?.accountId)??(A==="main"?R?.providerAccountUuid:_?.credentialAccountId??x1(t.accountUuid)??x1(a$)),...A==="main"&&R?{mainQuotaIdentity:R}:{}},h0=V0(),s0=await GV({config:r0,input:C0.input,init:F,headers:g,body:Q0,fallback:B1,affinity:a,optimisticResponse:r0?.transport==="websocket",authorizeAttempt:c?async()=>{let H0=D0(z,$.directory),$0=await H0.authorize(A,F?.signal instanceof AbortSignal?F.signal:void 0),w0=new Headers(g);return w0.set("authorization",`Bearer ${$0.accessToken}`),{headers:w0,onUpstreamStatus:(U0)=>{if(U0===401)H0.reportFailure($0,401,"relay_status_field").catch(()=>{})}}}:void 0,onResponseHeaders:(H0)=>{R8(H0,V$),Q1.commit(Y1,N7(H0))},onDumpCreated:(H0)=>{r=H0},dumpTag:W0?"start":void 0});if(u?.mark("send_headers_received",{route:i,ms:q0(V0()-h0),status:s0.status,relayConfigured:r0!=null,totalSendWithAccessMs:q0(V0()-D)}),z4)R8(s0.headers,V$),Q1.commit(Y1,N7(s0.headers));if(r8(s0,{source:W0?"start":"turn",accountId:A,synthetic:W0,...o0,requestedModel:Z1(Q0),request:J$,trackSessionId:a??void 0,dump:z4?m:r,status:s0.status,streaming:Z$}),c&&s0.status===401)await D0(z,$.directory).reportFailure(c,401,"direct").catch(()=>{T.warn("claustrum","OpenCode scoped auth-failure report unavailable")});if(C){if(l$.set(s0,C),s0.status===401)await x4(C,"direct")}return s0}async function BW(w,F){if(!w)return!1;try{return await f.refreshMain(F?.quotaKey??J1,w,F?.generation),s$(w,F)}catch{return!1}}async function X4(w,F={}){let p=await $1.getUsableFallbackAccounts(w,{modelId:F.modelId}),u=new Map(p.map((h)=>[h.id,h])),i=[];for(let h of w?.accounts??[]){if(w&&Z0(h)){if(f1.has(h.id))continue;if(O9(h,w))continue;let A=u.get(h.id);if(A)i.push(A);else if(h.access&&(!h.expires||h.expires>Date.now())&&!m1(h.lastRefreshError)&&!C1(h.lastRefreshError,h.id,Date.now(),e0(h.refresh))&&w?.quota?.failClosedOnUnknownQuota!==!0&&!W8(C4(h)))i.push(h);continue}if(F.includeApiRoutes===!0&&L4(h)&&h.enabled!==!1&&h.apiKey&&IJ(h.baseURL))i.push(h)}if(!D4(w))return i;return i.filter((h)=>Z0(h)?o1(C4(h),w,h.id,F.modelId):!0)}async function U9(w){let F=w.mainQuotaIdentity?.quotaKey,p=f.getMain(F),u=p?.quota;if(!B4(p?.quota,w.storage,Date.now(),w.requestedModelId))try{u=await f.refreshMain(F,w.mainAccessToken,w.mainQuotaIdentity?.generation)}catch{}let i=await $1.getUsableFallbackAccounts(w.storage,{modelId:w.requestedModelId}),h=await M(z)??w.storage,A=[],I0=o(h);if(I0){let _=h?.claustrum?.primaryAccount;if(_?.state==="active"&&!h?.claustrum?.disabledAccountIdentities?.includes(_.accountId))A.push({id:p0,access:"",quota:u,identity:_?{kind:"known",accountId:_.accountId}:{kind:"unknown"},order:0,scoped:!0})}else if(!m1(h?.refresh?.mainLastRefreshError))A.push({id:p0,access:w.mainAccessToken,quota:u,identity:F?{kind:"known",accountId:F}:{kind:"unknown"},order:0,claustrum:w.mainClaustrum});if(I0)for(let[_,c]of(h?.accounts??[]).entries()){if(c.enabled===!1||!Z0(c))continue;if(c.claustrumScopedCredentialId&&c.claustrumScopedState==="active"){let D=C4(c);if(!B4(D,h,Date.now(),w.requestedModelId))try{D=await f.refreshFallback(c.id,"",c)}catch{}A.push({id:c.id,access:"",quota:D,identity:{kind:"known",accountId:c.id},order:_+1,account:c,scoped:!0})}}else{let _=new Map(i.map((c)=>[c.id,c]));for(let[c,D]of(h?.accounts??[]).entries()){if(D.enabled===!1||!Z0(D))continue;if(f1.has(D.id))continue;if(h&&O9(D,h))continue;let C=_.get(D.id)??D,X0=l1(C,h),O0=Boolean(X0.served);if(!X0.accessToken||!O0&&m1(C.lastRefreshError))continue;let g=C4(C);if(!B4(g,h,Date.now(),w.requestedModelId))try{g=await f.refreshFallback(C.id,X0.accessToken,C)}catch{}A.push({id:C.id,access:X0.accessToken,quota:g,identity:{kind:"known",accountId:C.id},order:c+1,account:C,claustrum:X0})}}let d=new Set(i.map((_)=>_.id)),W0=new Set(A.flatMap((_)=>{let c=_.id===p0?h?.refresh?.mainLastRefreshError:_.account?.lastRefreshError,D=!_.claustrum?.served&&!_.scoped,C=_.identity.kind==="known"?_.identity.accountId:void 0;if(D&&m1(c))return[];if(D&&C1(c,C,Date.now(),_.id===p0?w.mainRefreshToken?e0(w.mainRefreshToken):void 0:_.account?.refresh?e0(_.account.refresh):void 0)&&(_.id===p0||!d.has(_.id)))return[];if(B4(_.quota,h,Date.now(),w.requestedModelId)&&mJ({quota:_.quota,modelId:w.requestedModelId}).action==="migrate")return[];if(D4(h)&&!o1(_.quota,h,_.id===p0?void 0:_.id,w.requestedModelId))return[];return[_.id]})),R=A.flatMap((_)=>{let c=_.id===p0?h?.refresh?.mainLastRefreshError:_.account?.lastRefreshError,D=!_.claustrum?.served&&!_.scoped,C=_.identity.kind==="known"?_.identity.accountId:void 0;if(D&&m1(c)||D&&C1(c,C,Date.now(),_.id===p0?w.mainRefreshToken?e0(w.mainRefreshToken):void 0:_.account?.refresh?e0(_.account.refresh):void 0)&&(_.id===p0||!d.has(_.id)))return[];let X0=_.id===p0?void 0:_.id,O0=W8(_.quota)?_.quota:void 0,g=O0?{kind:"known",quota:O0}:{kind:"unknown"};return(!D4(h)||o1(g.kind==="known"?g.quota:void 0,h,X0,w.requestedModelId))&&P$(g.kind==="known"?g.quota:void 0,h)&&(g.kind==="unknown"||V8(g.quota,w.requestedModelId)&&(_.id===p0||d.has(_.id)||Boolean(_.claustrum?.served)||Boolean(_.scoped)))?[{accountId:_.id,quota:g,order:_.order}]:[]});return{storage:h,allRoutes:A,candidates:R,retainAccountIds:W0}}let Q9=new WeakMap;async function G4(w,F,p,u,i,h,A){if(!p.length)return i??null;let I0=A?.returnLastOnExhausted??!0,d=i??null,W0=!1,R=async()=>{if(W0)return;W0=!0,await i?.body?.cancel().catch(()=>{})};for(let[_,c]of p.entries()){let D;if(L4(c)){if(!c.apiKey)continue;await R(),D=await LW(w,F,c,h,`api_fallback_${_}`,u,A?.fableRequest)}else if(o(u)&&c.claustrumScopedCredentialId){let g=await D0(z,$.directory).authorize(c.id,F?.signal instanceof AbortSignal?F.signal:void 0);await R(),D=await I4(w,F,g.accessToken,h,`fallback_${_}`,u,c.id,c.authLineageId,A?.fableRequest,A?.laneStartRequest,void 0,void 0,g)}else{let O0=l1(c,u);if(!O0.accessToken)continue;await R(),D=await I4(w,F,O0.accessToken,h,`fallback_${_}`,u,c.id,c.authLineageId,A?.fableRequest,A?.laneStartRequest,void 0,O0)}let C=l$.get(D);if(D.status===401&&C)await x4(C,"direct");d=D;let X0=RJ(D.status,u);if(!X0){let O0=await Y4(D,h);D=O0.response,d=D,X0=O0.rateLimited}if(!X0){if(Q9.set(D,L4(c)?"api":"oauth"),await $1.markUsed(c),C)p8(C);if(await A?.onSuccess?.(c),Z0(c)&&j1(u)&&f.shouldRefreshOnRequestCount(o$)){let O0=oJ(c,u,{warm:!1});if(O0)f.refreshFallback(c.id,O0.token,c).then(()=>A?.onSuccess?.(c)).catch(()=>{})}return D}if(_<p.length-1||!I0)await D.body?.cancel().catch(()=>{})}return I0?d:null}async function wW(w,F,p,u,i,h,A,I0,d,W0,R=!1,_){if(!T0(w,F?.body))return p;let c=V0(),D=h??await M(z);if(i?.mark("fallback_load_storage",{ms:q0(V0()-c),cached:!!h}),!(D?.accounts??[]).some((F0)=>F0.enabled!==!1&&(Z0(F0)||L4(F0)&&Boolean(F0.apiKey)&&IJ(F0.baseURL))))return p;let X0=p,O0=RJ(X0.status,D),g=N9(X0,!1);if(!O0){let F0=await Y4(X0,i);X0=F0.response,O0=F0.rateLimited,g=N9(X0,F0.rateLimited)}if(!O0)return X0;let a=!1;if(u)a=u.some(L4);else if(g)a=await BW(A,_);let v0=u;if(!v0){let F0=V0();v0=await X4(D,{includeApiRoutes:a,modelId:d}),i?.mark("fallback_get_accounts",{ms:q0(V0()-F0),accounts:v0.length})}if(D4(D)){let F0=v0.length;if(v0=v0.filter((d0)=>Z0(d0)?o1(C4(d0),D,d0.id,d):!0),v0.length<F0)x0("[killswitch] filtered fallbacks",{before:F0,after:v0.length})}return await G4(w,F,v0,D,X0,i,{onSuccess:I0,fableRequest:W0,laneStartRequest:R})??X0}return{apiKey:"",__reportClaustrumAuthFailureForTest:x4,async fetch(w,F){let p=_$(w,F),u=p.get(zJ)==="1";p.delete(zJ),F={...F,headers:p};let i=p.get("x-session-affinity")||p.get("x-opencode-session"),h=Z1(F?.body),A=K1.plan(i,F?.body);if(A&&!A.downgraded){let m=a4.get(A.recoveryKey);if(m)await m,A=K1.plan(i,F?.body)}let I0=c1==="server"&&v4(A?.effectiveModel??h)?A?.effectiveModel??h:void 0,d=A?{plan:A}:void 0;if(A?.downgraded)F={...F,body:A.bodyText};let W0=F?.body,R=oY({bodyBytes:typeof W0==="string"?W0.length:void 0}),_=(m)=>{let r=u1.get(m);return qZ(m,{perf:(s,G0)=>R.mark(s,G0),laneStart:u,laneStartOAuthServed:Q9.get(m)!=="api",...r?r.streaming?{onMessageStart:(s)=>o8(m,s,!1),onMessageDelta:(s)=>cV(m,s),onStreamEnd:()=>r.dumpWrite}:{onMessageResponse:(s)=>o8(m,s),onStreamEnd:()=>r.dumpWrite,responseMode:"json"}:{},onRelayUpstreamError:DW(m),contentFilterModel:A?.requestedModel,...!A?.downgraded&&A?{onContentFilter:(s)=>{if(!d?.warmTarget)return T.debug("fable-fallback","content filter recovery unavailable for non-OAuth route",{session:A.sessionId}),!1;let G0=K1.activate(A,d.warmTarget.oauthAccountId);H1.delete(A.recoveryKey),H1.set(A.recoveryKey,J2(A.requestedModel));while(H1.size>128){let t=H1.keys().next().value;if(t)H1.delete(t);else break}X1.delete(A.recoveryKey),T.info("fable-fallback","content filter detected; switching session to Opus 4.8",{session:A.sessionId,requestedModel:A.requestedModel,completedToolUse:s?.completedToolUse===!0,remaining:G0}),e4({sessionId:A.sessionId,mode:"opus",remaining:G0,requestedModelId:A.requestedModel},C,D)}}:{},...A?.downgraded&&d?{onComplete:(s)=>{let G0=K1.complete(A,d.opusCacheAnchor);if(!G0.counted)return;let t=H1.get(A.recoveryKey);if(t)H1.delete(A.recoveryKey),M0.delete(A.sessionId),Y9(A.sessionId,t);T.info("fable-fallback","Opus 4.8 turn completed",{session:A.sessionId,requestedModel:A.requestedModel,finishReason:s,remaining:G0.remaining}),e4({sessionId:A.sessionId,mode:"opus",remaining:G0.remaining,requestedModelId:A.requestedModel},C,D);let e=uV(d);if(G0.remaining===0){let o0=()=>{if(K1.remaining(A)!==0)return;e4({sessionId:A.sessionId,mode:"fable",remaining:0,requestedModelId:A.requestedModel},C,D,Z2(A.requestedModel))};e.then(o0,o0)}}}:{},...I0?{serverSideFallbackModel:I0,...A?{onServerSideFallbackOutcome:(s)=>ZW(A,s,C,D)}:{}}:{}})},c=V0(),D=await V();if(R.mark("get_auth",{ms:q0(V0()-c),authType:D.type,hasAccess:Boolean(D.access)}),D.type!=="oauth"){let m=F$(w),r=_$(w,F);D8(r);let s=await p7(w,F);if(typeof s==="string")try{let t=JSON.parse(s);if(BJ(t))s=JSON.stringify(t)}catch{}let G0=await fetch(m.input,{...F,body:s,headers:r});return R.done("non_oauth_passthrough",{status:G0.status}),G0}let C=await M(),X0,O0,g;if(o(C)){let m=D0(z,$.directory);try{let r=await m.authorize("main",F?.signal instanceof AbortSignal?F.signal:void 0);D.access=r.accessToken,D.expires=r.expiresAtMs,V4=r.accessToken,O0=r,X0={accessToken:r.accessToken,credentialAccountId:x1(r.accountId)}}catch{D.access="",D.expires=0}}else if(x){let{account:m,handle:r}=x,s=r?E0?.peek(r):void 0;if(nJ(m,s))g="identity-mismatch";else{let G0=F1(s,W());if(G0&&s&&r)D.access=G0,D.expires=Number.MAX_SAFE_INTEGER,X0={accessToken:G0,credentialAccountId:x1(s.accountId),served:{accountId:"main",handle:r,recordVersion:s.recordVersion}};else g=g$.has("main")?"reauth":"cold"}if(g)D.access="",D.expires=0}let a;if(D.access){let m=await R1(D.access,Z1(F?.body),X0?.credentialAccountId,X0?.served?.recordVersion);if(m.stale)throw Error("Main OAuth identity changed while resolving request credentials");if(a=m,X0)X0.credentialAccountId=m.providerAccountUuid,V4=D.access,W4=m.providerAccountUuid}await Z9(i0,D.refresh?e0(D.refresh):void 0);let v0=V0();R.mark("load_storage",{ms:q0(V0()-v0)}),f.updateStorage(C),f.seedMainFromStorage(C,J1),f.seedFallbacksFromAccounts((C?.accounts??[]).filter(Z0));let F0=i?L1.get(i):void 0;if(!A||c1==="server"&&F0?.requestedModelId&&q1(F0.requestedModelId)!==q1(A.requestedModel))VW(i,C,D);let d0=T0(w,F?.body),k0=Z1(F?.body);if(d0)o$++;if(d0&&D.access&&(!D.expires||D.expires>Date.now()))sV(C,D.access,a);let n0=async(m,r)=>{let s=C,G0=!1;if((C?.accounts??[]).some((t)=>Z0(t)&&t.quota))try{let t=await M(z);if(t)s=t;else G0=!0}catch{G0=!0}D1(s,{activeId:m,route:r,mainAccessToken:D.access,skipFallbackQuotaSeed:G0})},Y1;if(d0&&i&&d4(C)==="sticky-balanced"&&D.access){let m=A?.effectiveModel??k0,r=UV(m),s=q4.trackedOAuthRoute(i),G0=A?.cacheAccountId??(s?s.oauthAccountId??p0:void 0),t=!1;try{let e=await U9({storage:C,mainAccessToken:D.access,mainRefreshToken:D.refresh,requestedModelId:m,mainQuotaIdentity:a,mainClaustrum:X0}),o0=(r0)=>p1.resolve({sessionId:i,family:r,modelId:m,affinityModelId:h,candidates:e.candidates,retainAccountIds:e.retainAccountIds,storage:e.storage,inputBytes:typeof F?.body==="string"?Buffer.byteLength(F.body):1,preferredAccountId:G0,excludeAccountIds:r0}),C0=m1(e.storage?.refresh?.mainLastRefreshError),z4=e.allRoutes.length===0&&!C0||e.allRoutes.some((r0)=>!r0.quota||!B4(r0.quota,e.storage,Date.now(),m)),B1=await o0();if(!B1&&z4)throw Error("Sticky-balanced routing is waiting for current OAuth quota snapshots");if(!B1){let r0=OV({mainRefreshError:e.storage?.refresh?.mainLastRefreshError,fallbackReauthLabels:G5(e.storage),routeQuotas:e.allRoutes.flatMap((w1)=>w1.quota?[w1.quota]:[]),modelId:m});return R.done("return_sticky_no_route",{status:r0.status}),r0}let j0=e.allRoutes.find((r0)=>r0.id===B1?.accountId);if(B1&&j0){if(t=!0,A?.downgraded&&K1.bindRecoveryAccount(A,j0.id))T.info("fable-fallback","rebound recovery to migrated sticky account",{accountId:j0.id});let r0=async($0)=>{if($0.scoped){let U0=await D0(z,$.directory).authorize($0.id,F?.signal instanceof AbortSignal?F.signal:void 0);return I4(w,F,U0.accessToken,R,`sticky:${$0.id}`,e.storage,$0.id,$0.account?.authLineageId,d,u,$0.id===p0?a:void 0,void 0,U0)}return I4(w,F,$0.access??"",R,`sticky:${$0.id}`,e.storage,$0.id,$0.account?.authLineageId,d,u,$0.id===p0?a:void 0,$0.claustrum)},w1=async($0,w0,U0=!0)=>{if(U0&&$0.account)await $1.markUsed($0.account);if(U0&&$0.claustrum?.served)p8($0.claustrum.served);return await n0($0.id,"sticky-balanced"),R.done("return_sticky_balanced",{status:w0.status,accountId:$0.id,created:B1?.created,migrated:B1?.migrated}),_(w0)},a$=async($0)=>{let w0=$0,U0=RJ($0.status,e.storage),G1=!1;if(!U0){let A1=await Y4($0,R);w0=A1.response,G1=A1.rateLimited,U0=A1.rateLimited}return{response:w0,routeFailure:U0,streamingRateLimit:G1}},V$=B4(j0.quota,e.storage,Date.now(),m)?mJ({quota:j0.quota,modelId:m}):void 0;if(V$?.action==="hold")return w1(j0,await L7(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"}}),i,V$.retryAfterSeconds,!1,u1),!1);let h0=await a$(await r0(j0)),s0=!1;if(!h0.routeFailure)return w1(j0,h0.response);if(h0.response.status===401){let $0=j0.id,w0=l$.get(h0.response);try{if(j0.scoped)s0=!0;else if($0===p0&&w0)await x4(w0,"direct"),s0=!0;else if($0===p0)D.access=await c0(j0.access??""),j0={...j0,access:D.access};else if(w0){await x4(w0,"direct");let U0=j0.account?l1(j0.account,e.storage):void 0;if(U0?.accessToken)j0={...j0,access:U0.accessToken,claustrum:U0};else s0=!0}else if(j0.account&&e.storage){let U0=await $1.refreshAccount(j0.account,e.storage,{force:!0});if(U0.access)j0={...j0,access:U0.access,account:U0}}if(!s0){if(await h0.response.body?.cancel().catch(()=>{}),h0=await a$(await r0(j0)),!h0.routeFailure)return w1(j0,h0.response);s0=h0.response.status===401}}catch(U0){let G1=await M(z),A1=$0===p0?G1?.refresh?.mainLastRefreshError:G1?.accounts.find((a0)=>a0.id===$0&&Z0(a0))?.lastRefreshError;if(!m1(A1))throw U0;s0=!0}}let H0=h0.response.status===403||s0;if(h0.response.status===429||h0.streamingRateLimit){let $0;try{$0=j0.id===p0?await f.refreshMain(a?.quotaKey,j0.access??"",a?.generation):await f.refreshFallback(j0.id,j0.access??"",j0.account)}catch{$0=void 0}let w0=mJ({quota:$0,modelId:m});if(R.mark("sticky_quota_failure",{accountId:j0.id,action:w0.action,reason:w0.reason}),w0.action==="hold")return w1(j0,await L7(h0.response,i,w0.retryAfterSeconds,h0.streamingRateLimit,u1));H0=w0.action==="migrate"}if(H0){let $0=j0.id;if(e=await U9({storage:e.storage,mainAccessToken:D.access,mainRefreshToken:D.refresh,requestedModelId:m,mainQuotaIdentity:a}),e.candidates.filter((U0)=>U0.accountId!==$0).length>0){await h0.response.body?.cancel().catch(()=>{}),B1=await o0(new Set([$0]));let U0=e.allRoutes.find((G1)=>G1.id===B1?.accountId);if(B1&&U0){if(j0=U0,A?.downgraded)K1.bindRecoveryAccount(A,j0.id);return w1(j0,await r0(j0))}}else if((h0.response.status===429||h0.streamingRateLimit)&&s$(D.access,a)){let U0=(await X4(e.storage,{includeApiRoutes:!0,modelId:m})).filter(L4);if(U0.length>0){let G1=await G4(w,F,U0,e.storage,h0.response,R,{onSuccess:(A1)=>n0(A1.id,"sticky-balanced"),fableRequest:d,laneStartRequest:u});if(G1)return R.done("return_sticky_api_fallback",{status:G1.status}),_(G1)}}}return w1(j0,h0.response)}}catch(e){if(R.mark("sticky_balanced_error",{error:e instanceof Error?e.message:String(e)}),t)throw e;let o0=e instanceof Error?e:Error(String(e));throw Object.assign(o0,{code:"ECONNRESET",syscall:"sticky-routing"}),o0}}if(d0&&d4(C)==="fallback-first")try{let m=V0();Y1=await X4(C,{includeApiRoutes:s$(D.access,a),modelId:k0}),R.mark("fallback_first_get_accounts",{ms:q0(V0()-m),accounts:Y1.length});let r=await G4(w,F,Y1,C,void 0,R,{returnLastOnExhausted:!1,onSuccess:(s)=>n0(s.id,"fallback-first"),fableRequest:d,laneStartRequest:u});if(r)return R.done("return_fallback_first",{status:r.status}),_(r);Y1=void 0}catch(m){R.mark("fallback_first_error",{error:m instanceof Error?m.message:String(m)})}if(!D.access||!D.expires||D.expires<Date.now()){if(o(C)){let G0=D0(z,$.directory);try{let t=await G0.authorize("main",F?.signal instanceof AbortSignal?F.signal:void 0);V4=t.accessToken;let e=await I4(w,F,t.accessToken,R,"main",C,"main",void 0,d,u,a,void 0,t);return _(e)}catch(t){let e=d0?await X4(C,{modelId:k0}):[],o0=await G4(w,F,e,C,void 0,R,{onSuccess:(C0)=>n0(C0.id,"fallback"),fableRequest:d,laneStartRequest:u});if(o0)return _(o0);throw t}}if(x){let G0=d0?await X4(C,{modelId:k0}):[],t=await G4(w,F,G0,C,void 0,R,{onSuccess:(e)=>n0(e.id,"fallback"),fableRequest:d,laneStartRequest:u});if(t)return _(t);return h8(g??"cold")}let m=await M(),r=m?.refresh?.mainLastRefreshError;if(r&&C1(r,i0??m?.mainAccountId,Date.now(),D.refresh?e0(D.refresh):void 0))throw x0("[refresh] opencode main oauth request skipped backoff",{nextRetryAt:r.nextRetryAt,retryCount:r.retryCount,expiresInMs:D.expires?D.expires-Date.now():void 0}),Error(J8(r,Date.now()));x0("[refresh] opencode main oauth refresh required for request",{hasAccess:Boolean(D.access),expiresInMs:D.expires?D.expires-Date.now():void 0,expiredAgoMs:D.expires&&D.expires<Date.now()?Date.now()-D.expires:void 0});let s=V0();D.access=await c0(),R.mark("refresh_main_access",{ms:q0(V0()-s)})}if(!D.access)throw R.done("missing_access_error"),Error("OAuth access token is missing after refresh");function Q0(){if(C?.quota?.showToasts!==!0)return;let m=f.getMain(a?.quotaKey);if(!m)return;let r=(C?.accounts??[]).filter((t)=>t.enabled!==!1&&Z0(t)).map((t)=>({...t,quota:f.getFallback(t.id,t)?.quota??t.quota})),s=P$(m.quota,C),G0;if(s)G0="main";else G0=r.find((t)=>P$(t.quota,C))?.id??"main";HW(m.quota,r,G0)}if(d0&&j1(C))try{let m=V0(),r=f.getMain(a?.quotaKey),s=r?.quota;if(!s)s=await f.refreshMain(a?.quotaKey,D.access,a?.generation),r=f.getMain(a?.quotaKey),Q0();else if(f.needsRefresh(o$,k0))if(z7(s)||Z8(s,k0))s=await f.refreshMain(a?.quotaKey,D.access,a?.generation),r=f.getMain(a?.quotaKey);else f.refreshMain(a?.quotaKey,D.access,a?.generation).then(()=>{Z4().catch(()=>{}),Q0()}).catch(()=>{});D1(C,{activeId:"main",route:"main",mainAccessToken:D.access});let G0=P$(s,C)&&V8(s,k0);if(R.mark("main_quota_for_routing",{ms:q0(V0()-m),passes:G0,model:k0,modelScopedExhausted:Z8(s,k0)}),!G0){let t=V0();Y1=await X4(C,{includeApiRoutes:Boolean(r&&r.refreshAfter>Date.now()&&z7(r.quota)),modelId:k0}),R.mark("preselect_fallback_accounts",{ms:q0(V0()-t),accounts:Y1.length});let e=await G4(w,F,Y1,C,void 0,R,{onSuccess:(o0)=>n0(o0.id,"fallback"),fableRequest:d,laneStartRequest:u});if(e)return R.done("return_preselected_fallback",{status:e.status}),_(e)}}catch(m){R.mark("main_quota_for_routing_error",{error:m instanceof Error?m.message:String(m)})}let k1=f.getMain(a?.quotaKey)?.quota;if(C?.quota?.failClosedOnUnknownQuota&&(k1===void 0||D.access.startsWith("sk-ant-oat")&&a?.providerAccountUuid===void 0)&&f.isBackedOff()){let m=f.getLastApiError(),r=m?z5(m,Date.now()):"Quota API unavailable";return x0("[quota] blocked: quota API backed off (failClosed)",{nextRetryAt:m?.nextRetryAt,retryCount:m?.retryCount}),new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:r}}),{status:429,headers:{"content-type":"application/json","retry-after":String(m?.nextRetryAt?Math.max(1,Math.ceil((m.nextRetryAt-Date.now())/1000)):60)}})}if(D4(C)){if(f.needsRefresh(o$,k0))try{let r=(C?.accounts??[]).filter((s)=>s.enabled!==!1&&Z0(s)&&Boolean(s.access));await Promise.all([f.refreshMain(a?.quotaKey,D.access,a?.generation),f.refreshAllFallbacks(r,(s)=>oJ(s,C)?.token)])}catch(r){x0("[quota] killswitch refresh failed",{error:r instanceof Error?r.message:String(r),backedOff:f.isBackedOff()})}k1=f.getMain(a?.quotaKey)?.quota}if(D4(C)&&!o1(k1,C,void 0,k0)){let r=T0(w,F?.body)?await X4(C,{includeApiRoutes:s$(D.access),modelId:k0}):[];if(r.length>0){x0("[route] skipping main (killswitch), trying fallbacks");let C0=await G4(w,F,r,C,void 0,R,{onSuccess:(z4)=>n0(z4.id,"fallback"),laneStartRequest:u});if(C0)return R.done("return_killswitch_fallback",{status:C0.status}),_(C0)}let s=Date.now(),G0=(C?.accounts??[]).filter((C0)=>C0.enabled!==!1&&Z0(C0)).map((C0)=>({...C0,quota:C4(C0)})),t=H3({mainQuota:k1,requestModelId:k0,storage:C}),e=O5(k1,G0,s,t.isScopedDriven?t.modelId:void 0),o0=Q3({retryAfterSeconds:e,...t.isScopedDriven&&{modelName:t.modelName}});return new Response(JSON.stringify({type:"error",error:{type:"rate_limit_error",message:o0}}),{status:429,headers:{"content-type":"application/json","retry-after":String(e)}})}let $$=await I4(w,F,D.access,R,"main",C,"main",void 0,d,u,a,X0,O0),J$=!1,Z$=await wW(w,F,$$,Y1,R,C,D.access,(m)=>{return J$=!0,n0(m.id,"fallback")},k0,d,u,a);if(!J$)await n0("main","main");return R.done("return_response",{status:Z$.status}),_(Z$)}}}return{}},methods:[{label:"Claude Pro/Max",type:"oauth",authorize:async()=>{if(L0(await M(z))==="claustrum")throw Error("Exit Claustrum mode first: /claude-account local");BV(process.env);let V=await K("max");return{url:V.url,instructions:"Paste the authorization code here:",method:"code",callback:async(j)=>{let Y=await xJ(j,V.verifier,V.redirectUri,V.state);if(Y.type==="success"){let G=await M(z).catch(()=>null),O=G?m0(e1({access:Y.access,refresh:Y.refresh}),G):{status:"unresolved",reason:"missing-entry"};P4={accountId:"main",credentialId:PJ(O,"main"),authFingerprint:M4(Y.access,Y.refresh),completedAt:Date.now()}}return Y}}}},{label:"Create an API Key",type:"oauth",authorize:async()=>{let V=await n7("console");return{url:V.url,instructions:"Paste the authorization code here:",method:"code",callback:async(j)=>{let Y=await xJ(j,V.verifier,V.redirectUri,V.state);if(Y.type==="failed")return Y;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 ${Y.access}`}}).then((O)=>O.json())).raw_key}}}}},{provider:"anthropic",label:"Manually enter API Key",type:"api"}]},dispose:nV,__primeManager:J4,__quotaManager:f,__cacheKeepManager:q4,__resolveMainQuotaIdentityForTest:R1,__resolveSidebarQuotaAccessForTest:$9,__mainProviderAccountUuidForTest:()=>W4,__persistFallbackQuotaErrorForTest:F4,__fallbackRefreshReady:yV,get __scopedRuntime(){return D0(z,$.directory)},get __claustrumCredentialCache(){return E0},__notificationMessageIdBeforeAssistantForTest:CV,__trackDesktopNoticeMessageIdForTest:W9,__isDesktopNoticeMessageForTest:j9}},m6=N2;export{m6 as AnthropicAuthPlugin};