@thelioo/opencode-balancer 0.2.2 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,10 +1,10 @@
1
1
  // @bun
2
- var P=import.meta.require;import{createComponent as re}from"solid-js";function c(){return Date.now()}var ht=["api","oauth","wellknown"];function N(e){return e.trim().toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")}function F(e){return`${e.provider_id}/${e.alias}`}function ge(e){return ht.includes(e)}function yt(e){let t=F(e),n;try{n=JSON.parse(e.auth_json)}catch{throw Error(`Invalid account row for ${t}: auth_json is invalid`)}if(!n||typeof n!=="object"||!("type"in n)||typeof n.type!=="string")throw Error(`Invalid account row for ${t}: auth_json type is invalid`);if(!ge(n.type))throw Error(`Invalid account row for ${t}: auth_json type ${n.type} is invalid`);return n}function At(e){if(!ge(e.auth_type))throw Error(`Invalid account row for ${F(e)}: auth_type ${e.auth_type} is invalid`);return e.auth_type}function vt(e){if(e.disabled!==0&&e.disabled!==1)throw Error(`Invalid account row for ${F(e)}: disabled ${e.disabled} is invalid`);return Boolean(e.disabled)}function me(e){let t=yt(e),n=At(e);if(t.type!==n)throw Error(`Invalid account row for ${F(e)}: auth_type ${n} does not match auth_json type ${t.type}`);return{alias:e.alias,auth:t,authType:n,createdAt:e.created_at,disabled:vt(e),failures:e.failures,lastUsedAt:e.last_used_at??void 0,providerID:e.provider_id,rateLimitedUntil:e.rate_limited_until??void 0,updatedAt:e.updated_at}}function he(e,t,n){e.query(`INSERT INTO provider_state (provider_id, active_alias, updated_at, metadata_json)
2
+ var S=import.meta.require;import{createComponent as ae}from"solid-js";function c(){return Date.now()}var kt=["api","oauth","wellknown"];function O(e){return e.trim().toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")}function z(e){return`${e.provider_id}/${e.alias}`}function ve(e){return kt.includes(e)}function Rt(e){let t=z(e),n;try{n=JSON.parse(e.auth_json)}catch{throw Error(`Invalid account row for ${t}: auth_json is invalid`)}if(!n||typeof n!=="object"||!("type"in n)||typeof n.type!=="string")throw Error(`Invalid account row for ${t}: auth_json type is invalid`);if(!ve(n.type))throw Error(`Invalid account row for ${t}: auth_json type ${n.type} is invalid`);return n}function Dt(e){if(!ve(e.auth_type))throw Error(`Invalid account row for ${z(e)}: auth_type ${e.auth_type} is invalid`);return e.auth_type}function wt(e){if(e.disabled!==0&&e.disabled!==1)throw Error(`Invalid account row for ${z(e)}: disabled ${e.disabled} is invalid`);return Boolean(e.disabled)}function Ae(e){let t=Rt(e),n=Dt(e);if(t.type!==n)throw Error(`Invalid account row for ${z(e)}: auth_type ${n} does not match auth_json type ${t.type}`);return{alias:e.alias,auth:t,authType:n,createdAt:e.created_at,disabled:wt(e),failures:e.failures,lastUsedAt:e.last_used_at??void 0,providerID:e.provider_id,rateLimitedUntil:e.rate_limited_until??void 0,updatedAt:e.updated_at}}function _e(e,t,n){e.query(`INSERT INTO provider_state (provider_id, active_alias, updated_at, metadata_json)
3
3
  VALUES (?, ?, ?, '{}')
4
4
  ON CONFLICT(provider_id) DO UPDATE SET
5
5
  active_alias = excluded.active_alias,
6
6
  updated_at = excluded.updated_at`).run(t,n,c()),e.query(`INSERT INTO settings (key, value) VALUES ('selected_provider_id', ?)
7
- ON CONFLICT(key) DO UPDATE SET value = excluded.value`).run(t)}function _t(e){if(!e)return{};try{let t=JSON.parse(e);return t&&typeof t==="object"&&!Array.isArray(t)?t:{}}catch{return{}}}function ie(e,t,n,r){let i=N(n);if(!i)throw Error("Invalid alias");return e.transaction(()=>{let a=c();e.query(`INSERT INTO accounts (
7
+ ON CONFLICT(key) DO UPDATE SET value = excluded.value`).run(t)}function It(e){if(!e)return{};try{let t=JSON.parse(e);return t&&typeof t==="object"&&!Array.isArray(t)?t:{}}catch{return{}}}function se(e,t,n,r){let i=O(n);if(!i)throw Error("Invalid alias");return e.transaction(()=>{let a=c();e.query(`INSERT INTO accounts (
8
8
  provider_id,
9
9
  alias,
10
10
  auth_json,
@@ -17,30 +17,30 @@ var P=import.meta.require;import{createComponent as re}from"solid-js";function c
17
17
  ON CONFLICT(provider_id, alias) DO UPDATE SET
18
18
  auth_json = excluded.auth_json,
19
19
  auth_type = excluded.auth_type,
20
- updated_at = excluded.updated_at`).run(t,i,JSON.stringify(r),r.type,a,a,0,0),he(e,t,i);let s=E(e,t,i);if(!s)throw Error(`Account not found: ${t}/${i}`);return s})()}function E(e,t,n){let r=N(n),i=e.query(`SELECT provider_id, alias, auth_json, auth_type, created_at, updated_at,
20
+ updated_at = excluded.updated_at`).run(t,i,JSON.stringify(r),r.type,a,a,0,0),_e(e,t,i);let s=E(e,t,i);if(!s)throw Error(`Account not found: ${t}/${i}`);return s})()}function E(e,t,n){let r=O(n),i=e.query(`SELECT provider_id, alias, auth_json, auth_type, created_at, updated_at,
21
21
  last_used_at, rate_limited_until, failures, disabled
22
22
  FROM accounts
23
- WHERE provider_id = ? AND alias = ?`).get(t,r);return i?me(i):void 0}function h(e,t){return(t?e.query(`SELECT provider_id, alias, auth_json, auth_type, created_at, updated_at,
23
+ WHERE provider_id = ? AND alias = ?`).get(t,r);return i?Ae(i):void 0}function y(e,t){return(t?e.query(`SELECT provider_id, alias, auth_json, auth_type, created_at, updated_at,
24
24
  last_used_at, rate_limited_until, failures, disabled
25
25
  FROM accounts WHERE provider_id = ? ORDER BY alias`).all(t):e.query(`SELECT provider_id, alias, auth_json, auth_type, created_at, updated_at,
26
26
  last_used_at, rate_limited_until, failures, disabled
27
- FROM accounts ORDER BY provider_id, alias`).all()).map(me)}function D(e,t,n){let r=N(n),i=E(e,t,r);if(!i)throw Error(`Account not found: ${t}/${r}`);return he(e,t,r),i}function ye(e,t,n){let r=N(n);return e.transaction(()=>{if(!E(e,t,r))return!1;if(e.query("DELETE FROM accounts WHERE provider_id = ? AND alias = ?").run(t,r),e.query("DELETE FROM usage_snapshots WHERE provider_id = ? AND alias = ?").run(t,r),e.query("SELECT active_alias FROM provider_state WHERE provider_id = ?").get(t)?.active_alias===r){let s=e.query("SELECT alias FROM accounts WHERE provider_id = ? ORDER BY alias LIMIT 1").get(t);e.query(`UPDATE provider_state
27
+ FROM accounts ORDER BY provider_id, alias`).all()).map(Ae)}function R(e,t,n){let r=O(n),i=E(e,t,r);if(!i)throw Error(`Account not found: ${t}/${r}`);return _e(e,t,r),i}function Ee(e,t,n){let r=O(n);return e.transaction(()=>{if(!E(e,t,r))return!1;if(e.query("DELETE FROM accounts WHERE provider_id = ? AND alias = ?").run(t,r),e.query("DELETE FROM usage_snapshots WHERE provider_id = ? AND alias = ?").run(t,r),e.query("SELECT active_alias FROM provider_state WHERE provider_id = ?").get(t)?.active_alias===r){let s=e.query("SELECT alias FROM accounts WHERE provider_id = ? ORDER BY alias LIMIT 1").get(t);e.query(`UPDATE provider_state
28
28
  SET active_alias = ?, updated_at = ?
29
- WHERE provider_id = ?`).run(s?.alias??null,c(),t)}return!0})()}function v(e,t){let n=e.query("SELECT active_alias FROM provider_state WHERE provider_id = ?").get(t);if(!n?.active_alias)return;return E(e,t,n.active_alias)}function O(e){let t=e.query("SELECT value FROM settings WHERE key = 'selected_provider_id'").get();if(t?.value){let r=v(e,t.value);if(r)return r}let n=e.query(`SELECT provider_id, active_alias
29
+ WHERE provider_id = ?`).run(s?.alias??null,c(),t)}return!0})()}function A(e,t){let n=e.query("SELECT active_alias FROM provider_state WHERE provider_id = ?").get(t);if(!n?.active_alias)return;return E(e,t,n.active_alias)}function $(e){let t=e.query("SELECT value FROM settings WHERE key = 'selected_provider_id'").get();if(t?.value){let r=A(e,t.value);if(r)return r}let n=e.query(`SELECT provider_id, active_alias
30
30
  FROM provider_state
31
31
  WHERE active_alias IS NOT NULL
32
32
  ORDER BY updated_at DESC, provider_id
33
- LIMIT 1`).get();if(!n?.active_alias)return;return E(e,n.provider_id,n.active_alias)}function W(e,t){let n=e.query("SELECT metadata_json FROM provider_state WHERE provider_id = ?").get(t),r=_t(n?.metadata_json).selected_model_id;if(typeof r!=="string"||r.length===0)return;return{modelID:r,providerID:t}}function Ae(e){let t=e.query("SELECT provider_id, position, model_id, enabled FROM provider_priority").all();return new Map(t.map((n)=>[n.provider_id,n]))}function Et(e){return[...new Set(h(e).map((t)=>t.providerID))]}function Rt(e){let t=-1;for(let n of e.values())t=Math.max(t,n.position);return t+1}function Dt(e,t,n){let r=Ae(e),i=r.get(t),o=n.position??i?.position??Rt(r),a=n.modelID!==void 0?n.modelID:i?.model_id??null,s=n.enabled!==void 0?n.enabled?1:0:i?.enabled??1;e.query(`INSERT INTO provider_priority (provider_id, position, model_id, enabled, updated_at)
33
+ LIMIT 1`).get();if(!n?.active_alias)return;return E(e,n.provider_id,n.active_alias)}function J(e,t){let n=e.query("SELECT metadata_json FROM provider_state WHERE provider_id = ?").get(t),r=It(n?.metadata_json).selected_model_id;if(typeof r!=="string"||r.length===0)return;return{modelID:r,providerID:t}}function ke(e){let t=e.query("SELECT provider_id, position, model_id, enabled FROM provider_priority").all();return new Map(t.map((n)=>[n.provider_id,n]))}function Pt(e){return[...new Set(y(e).map((t)=>t.providerID))]}function St(e){let t=-1;for(let n of e.values())t=Math.max(t,n.position);return t+1}function bt(e,t,n){let r=ke(e),i=r.get(t),o=n.position??i?.position??St(r),a=n.modelID!==void 0?n.modelID:i?.model_id??null,s=n.enabled!==void 0?n.enabled?1:0:i?.enabled??1;e.query(`INSERT INTO provider_priority (provider_id, position, model_id, enabled, updated_at)
34
34
  VALUES (?, ?, ?, ?, ?)
35
35
  ON CONFLICT(provider_id) DO UPDATE SET
36
36
  position = excluded.position,
37
37
  model_id = excluded.model_id,
38
38
  enabled = excluded.enabled,
39
- updated_at = excluded.updated_at`).run(t,o,a,s,c())}function wt(e){let t=Ae(e);return Et(e).slice().sort((i,o)=>{let a=t.get(i),s=t.get(o);if(a&&s)return a.position-s.position||i.localeCompare(o);if(a)return-1;if(s)return 1;return i.localeCompare(o)}).map((i,o)=>{let a=t.get(i);return{enabled:a?a.enabled===1:!0,modelID:a?.model_id??void 0,position:o,providerID:i}})}function ve(e,t,n){Dt(e,t,{modelID:n})}function w(e){return e.query("SELECT value FROM settings WHERE key = ?").get("balancing_enabled")?.value==="1"}function It(e,t,n){let r=h(e,t).filter((o)=>!o.disabled&&(!o.rateLimitedUntil||o.rateLimitedUntil<=n));if(r.length===0)return;let i=v(e,t);if(i&&r.some((o)=>o.alias===i.alias))return i;return r[0]}function G(e,t=c(),n){let r=wt(e),i=n?r.slice().sort((o,a)=>{if(o.providerID===n)return-1;if(a.providerID===n)return 1;return o.position-a.position}):r;for(let o of i){if(!o.enabled)continue;if(!o.modelID)continue;let a=It(e,o.providerID,t);if(!a)continue;return{account:a,modelID:o.modelID,providerID:o.providerID}}return}function oe(e,t){let n={alias:t.alias,createdAt:c(),id:crypto.randomUUID(),message:t.message,metadata:t.metadata??{},providerID:t.providerID,type:t.type};return e.query(`INSERT INTO events (id, type, provider_id, alias, message, created_at, metadata_json)
40
- VALUES (?, ?, ?, ?, ?, ?, ?)`).run(n.id,n.type,n.providerID??null,n.alias??null,n.message,n.createdAt,JSON.stringify(n.metadata)),n}function _e(e,t=50){return e.query("SELECT * FROM events ORDER BY created_at DESC LIMIT ?").all(t).map((n)=>{let r;try{r=JSON.parse(n.metadata_json)}catch(i){throw Error(`Invalid event metadata JSON for event ${n.id}`,{cause:i})}return{alias:n.alias??void 0,createdAt:n.created_at,id:n.id,message:n.message,metadata:r,providerID:n.provider_id??void 0,type:n.type}})}function kt(e){return`native_auth_suppressed_until:${e}`}function z(e,t,n=1e4){e.query(`INSERT INTO settings (key, value) VALUES (?, ?)
41
- ON CONFLICT(key) DO UPDATE SET value = excluded.value`).run(kt(t),String(c()+n))}var St=["auth-file","http","oauth-callback"],Pt=["new","prompted","dismissed"],Tt=["api","oauth","wellknown"];function Ee(e){return Tt.includes(e)}function xt(e){let t;try{t=JSON.parse(e.auth_json)}catch{throw Error(`Invalid pending connection row ${e.id}: auth_json is invalid`)}if(!t||typeof t!=="object"||!("type"in t)||typeof t.type!=="string")throw Error(`Invalid pending connection row ${e.id}: auth_json type is invalid`);if(!Ee(t.type))throw Error(`Invalid pending connection row ${e.id}: auth_json type ${t.type} is invalid`);return t}function bt(e){if(!Ee(e.auth_type))throw Error(`Invalid pending connection row ${e.id}: auth_type ${e.auth_type} is invalid`);return e.auth_type}function Ct(e){if(!St.includes(e.source))throw Error(`Invalid pending connection row ${e.id}: source ${e.source} is invalid`);return e.source}function Nt(e){if(!Pt.includes(e.prompt_status))throw Error(`Invalid pending connection row ${e.id}: prompt_status ${e.prompt_status} is invalid`);return e.prompt_status}function Ot(e){let t=xt(e),n=bt(e);if(t.type!==n)throw Error(`Invalid pending connection row ${e.id}: auth_type ${n} does not match auth_json type ${t.type}`);return{auth:t,authType:n,capturedAt:e.captured_at,id:e.id,promptStatus:Nt(e),providerID:e.provider_id,source:Ct(e)}}function J(e){return e.query(`SELECT id, provider_id, auth_json, auth_type, source, captured_at, prompt_status
39
+ updated_at = excluded.updated_at`).run(t,o,a,s,c())}function Tt(e){let t=ke(e);return Pt(e).slice().sort((i,o)=>{let a=t.get(i),s=t.get(o);if(a&&s)return a.position-s.position||i.localeCompare(o);if(a)return-1;if(s)return 1;return i.localeCompare(o)}).map((i,o)=>{let a=t.get(i);return{enabled:a?a.enabled===1:!0,modelID:a?.model_id??void 0,position:o,providerID:i}})}function Re(e,t,n){bt(e,t,{modelID:n})}function D(e){return e.query("SELECT value FROM settings WHERE key = ?").get("balancing_enabled")?.value==="1"}function xt(e,t,n){let r=y(e,t).filter((o)=>!o.disabled&&(!o.rateLimitedUntil||o.rateLimitedUntil<=n));if(r.length===0)return;let i=A(e,t);if(i&&r.some((o)=>o.alias===i.alias))return i;return r[0]}function V(e,t=c(),n){let r=Tt(e),i=n?r.slice().sort((o,a)=>{if(o.providerID===n)return-1;if(a.providerID===n)return 1;return o.position-a.position}):r;for(let o of i){if(!o.enabled)continue;if(!o.modelID)continue;let a=xt(e,o.providerID,t);if(!a)continue;return{account:a,modelID:o.modelID,providerID:o.providerID}}return}function ue(e,t){let n={alias:t.alias,createdAt:c(),id:crypto.randomUUID(),message:t.message,metadata:t.metadata??{},providerID:t.providerID,type:t.type};return e.query(`INSERT INTO events (id, type, provider_id, alias, message, created_at, metadata_json)
40
+ VALUES (?, ?, ?, ?, ?, ?, ?)`).run(n.id,n.type,n.providerID??null,n.alias??null,n.message,n.createdAt,JSON.stringify(n.metadata)),n}function De(e,t=50){return e.query("SELECT * FROM events ORDER BY created_at DESC LIMIT ?").all(t).map((n)=>{let r;try{r=JSON.parse(n.metadata_json)}catch(i){throw Error(`Invalid event metadata JSON for event ${n.id}`,{cause:i})}return{alias:n.alias??void 0,createdAt:n.created_at,id:n.id,message:n.message,metadata:r,providerID:n.provider_id??void 0,type:n.type}})}function Ct(e){return`native_auth_suppressed_until:${e}`}function Y(e,t,n=1e4){e.query(`INSERT INTO settings (key, value) VALUES (?, ?)
41
+ ON CONFLICT(key) DO UPDATE SET value = excluded.value`).run(Ct(t),String(c()+n))}var Nt=["auth-file","http","oauth-callback"],Ot=["new","prompted","dismissed"],$t=["api","oauth","wellknown"];function we(e){return $t.includes(e)}function Ut(e){let t;try{t=JSON.parse(e.auth_json)}catch{throw Error(`Invalid pending connection row ${e.id}: auth_json is invalid`)}if(!t||typeof t!=="object"||!("type"in t)||typeof t.type!=="string")throw Error(`Invalid pending connection row ${e.id}: auth_json type is invalid`);if(!we(t.type))throw Error(`Invalid pending connection row ${e.id}: auth_json type ${t.type} is invalid`);return t}function qt(e){if(!we(e.auth_type))throw Error(`Invalid pending connection row ${e.id}: auth_type ${e.auth_type} is invalid`);return e.auth_type}function Lt(e){if(!Nt.includes(e.source))throw Error(`Invalid pending connection row ${e.id}: source ${e.source} is invalid`);return e.source}function jt(e){if(!Ot.includes(e.prompt_status))throw Error(`Invalid pending connection row ${e.id}: prompt_status ${e.prompt_status} is invalid`);return e.prompt_status}function Mt(e){let t=Ut(e),n=qt(e);if(t.type!==n)throw Error(`Invalid pending connection row ${e.id}: auth_type ${n} does not match auth_json type ${t.type}`);return{auth:t,authType:n,capturedAt:e.captured_at,id:e.id,promptStatus:jt(e),providerID:e.provider_id,source:Lt(e)}}function Q(e){return e.query(`SELECT id, provider_id, auth_json, auth_type, source, captured_at, prompt_status
42
42
  FROM pending_connections
43
- ORDER BY captured_at DESC, id DESC`).all().map(Ot)}function Re(e){let t=new Set;if(e.auth.type==="api")t.add(e.auth.key);if(e.auth.type==="oauth")t.add(e.auth.access),t.add(e.auth.refresh);if(e.auth.type==="wellknown")t.add(e.auth.key),t.add(e.auth.token);return t.delete(""),t}function $t(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).filter(Boolean)}function Ut(e){let t=e.toLowerCase(),n=t.replace(/[^a-z0-9]/g,"");if(t.includes("api_key")||n.includes("apikey")||t.includes("access_token")||n.includes("accesstoken")||t.includes("refresh_token")||n.includes("refreshtoken")||t.includes("x-api-key")||n.includes("xapikey")||t.includes("authorization"))return!0;let r=$t(e);return["token","key","secret","password"].some((i)=>t===i||r.includes(i))}function I(e,t){return se(e,Re(t))}function V(e,t){return ae(e,Re(t))}function ae(e,t){let n=e;for(let r of[...t].sort((i,o)=>o.length-i.length))n=n.split(r).join("[redacted]");return n}function se(e,t){if(typeof e==="string")return ae(e,t);if(!e||typeof e!=="object")return e;if(Array.isArray(e))return e.map((r)=>se(r,t));let n={};for(let[r,i]of Object.entries(e))n[ae(r,t)]=Ut(r)?"[redacted]":se(i,t);return n}function $(e,t,n){return{alias:e.alias,confidence:"unavailable",fetchedAt:Date.now(),message:t,providerID:e.providerID,...n?{error:V(n,e)}:{}}}function we(e){return{Accept:"application/vnd.github+json",Authorization:`Bearer ${e.auth.type==="oauth"?e.auth.access:""}`,"X-GitHub-Api-Version":"2026-03-10"}}async function Q(e,t){let n=await fetch(e,{headers:we(t)});if(!n.ok)return{ok:!1,status:n.status};try{return{body:await n.json(),ok:!0}}catch{return{body:void 0,ok:!0}}}function De(e){let t=e?.usageItems;if(!Array.isArray(t))return;let n=0,r=!1;for(let i of t){let o=i?.netQuantity,a=i?.quantity,s=typeof o==="number"?o:typeof a==="number"?a:void 0;if(s===void 0)continue;n+=s,r=!0}return r?n:void 0}function Y(e,t){let n=e;for(let r of t)n=n?.[r];return typeof n==="number"&&Number.isFinite(n)?n:void 0}function qt(e){let t=e?.quota_snapshots,n=t?.premium_interactions??t?.premium_models??t?.chat,r=Y(n,["entitlement"]),i=Y(n,["remaining"])??Y(n,["quota_remaining"]),o=Y(n,["percent_remaining"]);return{entitlement:r,percentRemaining:o,remaining:i,used:r!==void 0&&i!==void 0?Math.max(0,r-i):void 0}}async function Lt(e){let t=await Q("https://api.github.com/copilot_internal/user",e);if(!t.ok)return{ok:!1,status:t.status};let n=typeof t.body?.login==="string"?t.body.login:"GitHub user",r=typeof t.body?.copilot_plan==="string"?t.body.copilot_plan:void 0,i=qt(t.body);if(!r&&i.used===void 0&&i.remaining===void 0)return{ok:!1,status:200};return{ok:!0,snapshot:{alias:e.alias,confidence:"exact",fetchedAt:Date.now(),providerID:e.providerID,...i.used!==void 0?{usedTokens:i.used}:{},...i.remaining!==void 0?{remainingTokens:i.remaining}:{},message:r?`GitHub Copilot personal quota fetched for ${n} (${r}).`:`GitHub Copilot personal quota fetched for ${n}.`,rawRedacted:I(t.body,e)}}}async function Mt(e){let t=await Lt(e);if(t.ok)return t.snapshot;let n=await Q("https://api.github.com/user",e);if(!n.ok)return $(e,`GitHub Copilot personal billing usage requires user API access; /user returned HTTP ${n.status}.`);let r=typeof n.body?.login==="string"?n.body.login:void 0;if(!r)return $(e,"GitHub Copilot personal billing usage requires a GitHub username from /user.");let i=`https://api.github.com/users/${encodeURIComponent(r)}/settings/billing/premium_request/usage`,o=await Q(i,e);if(o.ok)return{alias:e.alias,confidence:"exact",fetchedAt:Date.now(),message:`GitHub Copilot personal premium request usage fetched for ${r}.`,providerID:e.providerID,rawRedacted:I(o.body,e),usedTokens:De(o.body)};let a=`https://api.github.com/users/${encodeURIComponent(r)}/settings/billing/usage/summary?product=copilot`,s=await Q(a,e);if(s.ok)return{alias:e.alias,confidence:"exact",fetchedAt:Date.now(),message:`GitHub Copilot personal billing usage fetched for ${r}.`,providerID:e.providerID,rawRedacted:I(s.body,e),usedTokens:De(s.body)};return $(e,`GitHub Copilot personal billing usage unavailable; copilot_internal/user returned HTTP ${t.status}, premium requests returned HTTP ${o.status}, and billing summary returned HTTP ${s.status}.`)}var Ie={providerID:"github-copilot",async refreshUsage(e){let t=e.auth.metadata?.githubOrg;if(e.auth.type!=="oauth")return $(e,"GitHub Copilot usage requires OAuth auth.");if(!t)return Mt(e);try{let n=await fetch(`https://api.github.com/orgs/${encodeURIComponent(t)}/copilot/billing`,{headers:we(e)});if(!n.ok)return $(e,`GitHub Copilot billing request failed with HTTP ${n.status}.`);let r=await n.json(),i=typeof r?.plan_type==="string"?r.plan_type:void 0;return{alias:e.alias,confidence:"exact",fetchedAt:Date.now(),providerID:e.providerID,...i?{planName:i}:{},message:i?`GitHub Copilot billing fetched for ${t} (${i}).`:`GitHub Copilot billing fetched for ${t}.`,rawRedacted:I(r,e)}}catch(n){return $(e,"GitHub Copilot billing request failed; exact billing data is unavailable.",n instanceof Error?n.message:String(n))}},supports(e){return e==="github-copilot"||e==="copilot"}};function q(e,t,n){return{alias:e.alias,confidence:"unavailable",fetchedAt:Date.now(),message:t,providerID:e.providerID,...n?{error:V(n,e)}:{}}}function U(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function ke(e){return typeof e==="number"&&Number.isFinite(e)?e:void 0}function jt(e){let t=e.split(".")[1];if(!t)return;try{let n=t.replace(/-/g,"+").replace(/_/g,"/"),r=`${n}${"=".repeat((4-n.length%4)%4)}`,i=JSON.parse(Buffer.from(r,"base64").toString("utf8"));return U(i)?i:void 0}catch{return}}function Ht(e){if(e.auth.type!=="oauth")return;if(e.auth.accountId)return e.auth.accountId;let n=jt(e.auth.access)?.["https://api.openai.com/auth"];if(!U(n))return;let r=n.chatgpt_account_id;return typeof r==="string"&&r.trim()?r:void 0}function Bt(e){if(typeof e!=="string"||!e.trim())return;let t=e.trim().toLowerCase();return{enterprise:"ChatGPT Enterprise",plus:"ChatGPT Plus",pro:"ChatGPT Pro",team:"ChatGPT Team"}[t]??e}function Ft(e){let t=ke(e);if(t===void 0||t<0)return;return t>1000000000000?t:t*1000}async function Wt(e){if(e.auth.type!=="oauth")return q(e,"OpenAI ChatGPT usage requires OAuth auth.");try{let t={Authorization:`Bearer ${e.auth.access}`,"User-Agent":"opencode-balancer/0.1.3"},n=Ht(e);if(n)t["ChatGPT-Account-Id"]=n;let r=await fetch("https://chatgpt.com/backend-api/wham/usage",{headers:t});if(!r.ok)return q(e,`OpenAI ChatGPT usage request failed with HTTP ${r.status}.`);let i=await r.json(),o=U(i)&&U(i.rate_limit)?i.rate_limit:void 0,a=o&&U(o.primary_window)?o.primary_window:void 0;return{alias:e.alias,confidence:"exact",fetchedAt:Date.now(),message:"OpenAI ChatGPT usage fetched.",planName:U(i)?Bt(i.plan_type):void 0,providerID:e.providerID,rawRedacted:I(i,e),resetAt:a?Ft(a.reset_at):void 0,usedPercent:a?ke(a.used_percent):void 0}}catch(t){return q(e,"OpenAI ChatGPT usage request failed; exact usage is unavailable.",t instanceof Error?t.message:String(t))}}var Se={providerID:"openai",async refreshUsage(e){if(e.auth.type!=="api")return Wt(e);let t=new URL("https://api.openai.com/v1/organization/usage/completions");t.searchParams.set("start_time",String(Math.floor((Date.now()-86400000)/1000))),t.searchParams.set("bucket_width","1d");try{let n=await fetch(t,{headers:{Authorization:`Bearer ${e.auth.key}`}});if(!n.ok)return q(e,`OpenAI usage request failed with HTTP ${n.status}.`);let r=await n.json();return{alias:e.alias,confidence:"exact",fetchedAt:Date.now(),message:"OpenAI organization usage fetched.",providerID:e.providerID,rawRedacted:I(r,e)}}catch(n){return q(e,"OpenAI usage request failed; exact usage is unavailable.",n instanceof Error?n.message:String(n))}},supports(e){return e==="openai"}};var Gt=[Se,Ie];async function Pe(e){let t=Gt.find((n)=>n.supports(e.providerID));if(t)return t.refreshUsage(e);return{alias:e.alias,confidence:"unavailable",fetchedAt:Date.now(),message:`No usage service registered for ${e.providerID}.`,providerID:e.providerID}}function Te(e,t){let{rawRedacted:n,...r}=t,i=Object.hasOwn(t,"rawRedacted")?JSON.stringify(n):null;if(e.query(`INSERT INTO usage_snapshots (
43
+ ORDER BY captured_at DESC, id DESC`).all().map(Mt)}function Ie(e){let t=new Set;if(e.auth.type==="api")t.add(e.auth.key);if(e.auth.type==="oauth")t.add(e.auth.access),t.add(e.auth.refresh);if(e.auth.type==="wellknown")t.add(e.auth.key),t.add(e.auth.token);return t.delete(""),t}function Ht(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).filter(Boolean)}function Bt(e){let t=e.toLowerCase(),n=t.replace(/[^a-z0-9]/g,"");if(t.includes("api_key")||n.includes("apikey")||t.includes("access_token")||n.includes("accesstoken")||t.includes("refresh_token")||n.includes("refreshtoken")||t.includes("x-api-key")||n.includes("xapikey")||t.includes("authorization"))return!0;let r=Ht(e);return["token","key","secret","password"].some((i)=>t===i||r.includes(i))}function w(e,t){return de(e,Ie(t))}function K(e,t){return ce(e,Ie(t))}function ce(e,t){let n=e;for(let r of[...t].sort((i,o)=>o.length-i.length))n=n.split(r).join("[redacted]");return n}function de(e,t){if(typeof e==="string")return ce(e,t);if(!e||typeof e!=="object")return e;if(Array.isArray(e))return e.map((r)=>de(r,t));let n={};for(let[r,i]of Object.entries(e))n[ce(r,t)]=Bt(r)?"[redacted]":de(i,t);return n}function U(e,t,n){return{alias:e.alias,confidence:"unavailable",fetchedAt:Date.now(),message:t,providerID:e.providerID,...n?{error:K(n,e)}:{}}}function Se(e){return{Accept:"application/vnd.github+json",Authorization:`Bearer ${e.auth.type==="oauth"?e.auth.access:""}`,"X-GitHub-Api-Version":"2026-03-10"}}async function Z(e,t){let n=await fetch(e,{headers:Se(t)});if(!n.ok)return{ok:!1,status:n.status};try{return{body:await n.json(),ok:!0}}catch{return{body:void 0,ok:!0}}}function Pe(e){let t=e?.usageItems;if(!Array.isArray(t))return;let n=0,r=!1;for(let i of t){let o=i?.netQuantity,a=i?.quantity,s=typeof o==="number"?o:typeof a==="number"?a:void 0;if(s===void 0)continue;n+=s,r=!0}return r?n:void 0}function X(e,t){let n=e;for(let r of t)n=n?.[r];return typeof n==="number"&&Number.isFinite(n)?n:void 0}function Ft(e){let t=e?.quota_snapshots,n=t?.premium_interactions??t?.premium_models??t?.chat,r=X(n,["entitlement"]),i=X(n,["remaining"])??X(n,["quota_remaining"]),o=X(n,["percent_remaining"]);return{entitlement:r,percentRemaining:o,remaining:i,used:r!==void 0&&i!==void 0?Math.max(0,r-i):void 0}}async function Wt(e){let t=await Z("https://api.github.com/copilot_internal/user",e);if(!t.ok)return{ok:!1,status:t.status};let n=typeof t.body?.login==="string"?t.body.login:"GitHub user",r=typeof t.body?.copilot_plan==="string"?t.body.copilot_plan:void 0,i=Ft(t.body);if(!r&&i.used===void 0&&i.remaining===void 0)return{ok:!1,status:200};return{ok:!0,snapshot:{alias:e.alias,confidence:"exact",fetchedAt:Date.now(),providerID:e.providerID,...i.used!==void 0?{usedTokens:i.used}:{},...i.remaining!==void 0?{remainingTokens:i.remaining}:{},message:r?`GitHub Copilot personal quota fetched for ${n} (${r}).`:`GitHub Copilot personal quota fetched for ${n}.`,rawRedacted:w(t.body,e)}}}async function Gt(e){let t=await Wt(e);if(t.ok)return t.snapshot;let n=await Z("https://api.github.com/user",e);if(!n.ok)return U(e,`GitHub Copilot personal billing usage requires user API access; /user returned HTTP ${n.status}.`);let r=typeof n.body?.login==="string"?n.body.login:void 0;if(!r)return U(e,"GitHub Copilot personal billing usage requires a GitHub username from /user.");let i=`https://api.github.com/users/${encodeURIComponent(r)}/settings/billing/premium_request/usage`,o=await Z(i,e);if(o.ok)return{alias:e.alias,confidence:"exact",fetchedAt:Date.now(),message:`GitHub Copilot personal premium request usage fetched for ${r}.`,providerID:e.providerID,rawRedacted:w(o.body,e),usedTokens:Pe(o.body)};let a=`https://api.github.com/users/${encodeURIComponent(r)}/settings/billing/usage/summary?product=copilot`,s=await Z(a,e);if(s.ok)return{alias:e.alias,confidence:"exact",fetchedAt:Date.now(),message:`GitHub Copilot personal billing usage fetched for ${r}.`,providerID:e.providerID,rawRedacted:w(s.body,e),usedTokens:Pe(s.body)};return U(e,`GitHub Copilot personal billing usage unavailable; copilot_internal/user returned HTTP ${t.status}, premium requests returned HTTP ${o.status}, and billing summary returned HTTP ${s.status}.`)}var be={providerID:"github-copilot",async refreshUsage(e){let t=e.auth.metadata?.githubOrg;if(e.auth.type!=="oauth")return U(e,"GitHub Copilot usage requires OAuth auth.");if(!t)return Gt(e);try{let n=await fetch(`https://api.github.com/orgs/${encodeURIComponent(t)}/copilot/billing`,{headers:Se(e)});if(!n.ok)return U(e,`GitHub Copilot billing request failed with HTTP ${n.status}.`);let r=await n.json(),i=typeof r?.plan_type==="string"?r.plan_type:void 0;return{alias:e.alias,confidence:"exact",fetchedAt:Date.now(),providerID:e.providerID,...i?{planName:i}:{},message:i?`GitHub Copilot billing fetched for ${t} (${i}).`:`GitHub Copilot billing fetched for ${t}.`,rawRedacted:w(r,e)}}catch(n){return U(e,"GitHub Copilot billing request failed; exact billing data is unavailable.",n instanceof Error?n.message:String(n))}},supports(e){return e==="github-copilot"||e==="copilot"}};function M(e,t,n){return{alias:e.alias,confidence:"unavailable",fetchedAt:Date.now(),message:t,providerID:e.providerID,...n?{error:K(n,e)}:{}}}function q(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function Te(e){return typeof e==="number"&&Number.isFinite(e)?e:void 0}function zt(e){let t=e.split(".")[1];if(!t)return;try{let n=t.replace(/-/g,"+").replace(/_/g,"/"),r=`${n}${"=".repeat((4-n.length%4)%4)}`,i=JSON.parse(Buffer.from(r,"base64").toString("utf8"));return q(i)?i:void 0}catch{return}}function Jt(e){if(e.auth.type!=="oauth")return;if(e.auth.accountId)return e.auth.accountId;let n=zt(e.auth.access)?.["https://api.openai.com/auth"];if(!q(n))return;let r=n.chatgpt_account_id;return typeof r==="string"&&r.trim()?r:void 0}function Vt(e){if(typeof e!=="string"||!e.trim())return;let t=e.trim().toLowerCase();return{enterprise:"ChatGPT Enterprise",plus:"ChatGPT Plus",pro:"ChatGPT Pro",team:"ChatGPT Team"}[t]??e}function Yt(e){let t=Te(e);if(t===void 0||t<0)return;return t>1000000000000?t:t*1000}async function Qt(e){if(e.auth.type!=="oauth")return M(e,"OpenAI ChatGPT usage requires OAuth auth.");try{let t={Authorization:`Bearer ${e.auth.access}`,"User-Agent":"opencode-balancer/0.1.3"},n=Jt(e);if(n)t["ChatGPT-Account-Id"]=n;let r=await fetch("https://chatgpt.com/backend-api/wham/usage",{headers:t});if(!r.ok)return M(e,`OpenAI ChatGPT usage request failed with HTTP ${r.status}.`);let i=await r.json(),o=q(i)&&q(i.rate_limit)?i.rate_limit:void 0,a=o&&q(o.primary_window)?o.primary_window:void 0;return{alias:e.alias,confidence:"exact",fetchedAt:Date.now(),message:"OpenAI ChatGPT usage fetched.",planName:q(i)?Vt(i.plan_type):void 0,providerID:e.providerID,rawRedacted:w(i,e),resetAt:a?Yt(a.reset_at):void 0,usedPercent:a?Te(a.used_percent):void 0}}catch(t){return M(e,"OpenAI ChatGPT usage request failed; exact usage is unavailable.",t instanceof Error?t.message:String(t))}}var xe={providerID:"openai",async refreshUsage(e){if(e.auth.type!=="api")return Qt(e);let t=new URL("https://api.openai.com/v1/organization/usage/completions");t.searchParams.set("start_time",String(Math.floor((Date.now()-86400000)/1000))),t.searchParams.set("bucket_width","1d");try{let n=await fetch(t,{headers:{Authorization:`Bearer ${e.auth.key}`}});if(!n.ok)return M(e,`OpenAI usage request failed with HTTP ${n.status}.`);let r=await n.json();return{alias:e.alias,confidence:"exact",fetchedAt:Date.now(),message:"OpenAI organization usage fetched.",providerID:e.providerID,rawRedacted:w(r,e)}}catch(n){return M(e,"OpenAI usage request failed; exact usage is unavailable.",n instanceof Error?n.message:String(n))}},supports(e){return e==="openai"}};var Kt=[xe,be];async function Ce(e){let t=Kt.find((n)=>n.supports(e.providerID));if(t)return t.refreshUsage(e);return{alias:e.alias,confidence:"unavailable",fetchedAt:Date.now(),message:`No usage service registered for ${e.providerID}.`,providerID:e.providerID}}function Ne(e,t){let{rawRedacted:n,...r}=t,i=Object.hasOwn(t,"rawRedacted")?JSON.stringify(n):null;if(e.query(`INSERT INTO usage_snapshots (
44
44
  provider_id, alias, fetched_at, confidence, normalized_json, raw_redacted_json, error
45
45
  ) VALUES (?, ?, ?, ?, ?, ?, ?)
46
46
  ON CONFLICT(provider_id, alias) DO UPDATE SET
@@ -51,8 +51,8 @@ var P=import.meta.require;import{createComponent as re}from"solid-js";function c
51
51
  error = excluded.error`).run(t.providerID,t.alias,t.fetchedAt,t.confidence,JSON.stringify(r),i,t.error??null),t.confidence==="exact"&&t.usedPercent!==void 0&&t.usedPercent<100)e.query(`UPDATE accounts
52
52
  SET rate_limited_until = NULL,
53
53
  updated_at = ?
54
- WHERE provider_id = ? AND alias = ?`).run(t.fetchedAt,t.providerID,t.alias)}async function xe(e,t,n,r,i={}){let o=O(t.db)?.providerID,a=D(t.db,n,r)??v(t.db,n);if(a)try{z(t.db,n),await e.client.auth.set({body:a.auth,path:{id:n}})}catch{}if(t.refresh(),(i.sessionProviderID??o)!==n)await i.applyNativeProviderModel?.(n);e.ui?.toast({message:`Activated ${n}/${r}.`,variant:"success"})}async function be(e,t,n,r,i={}){let o=E(t.db,n,r)??t.accounts().find((a)=>{return a.providerID===n&&a.alias===r});if(!o){e.ui.toast({message:`Account not found: ${n}/${r}`,variant:"error"});return}try{let a=await(i.refreshUsage??Pe)(o);if(Te(t.db,a),oe(t.db,{alias:r,message:a.message,providerID:n,type:a.confidence==="unavailable"?"usage_unavailable":"usage_refreshed"}),t.refresh(),!i.silent)e.ui.toast({message:a.message,variant:a.confidence==="unavailable"?"warning":"success"})}catch(a){let s=a instanceof Error?a.message:"Usage refresh failed.";e.ui.toast({message:s,variant:"error"})}}function Ce(e,t,n,r){if(!ye(t.db,n,r)){e.ui.toast({message:`Account not found: ${n}/${r}`,variant:"error"});return}let o=`Removed account ${n}/${r}.`;oe(t.db,{alias:r,message:o,providerID:n,type:"account_removed"}),t.refresh(),t.removeAccountView(n,r),e.ui.toast({message:o,variant:"success"})}function zt(e){let t=e.renderer?.stdin;return t&&typeof t.emit==="function"?t:void 0}function Jt(e,t){let n=zt(e);if(!n)return!1;return n.emit("data",Buffer.from(t)),!0}async function Vt(e,t){let n=e.settleMs??90;if(e.dispatchCommand("model.list"),await e.wait(n),!e.isDialogOpen())return!1;if(!e.feed(t))return!1;if(await e.wait(n),!e.feed("\r"))return!1;if(await e.wait(n),e.isDialogOpen())e.feed("\x1B");return!0}function K(e){return(t,n)=>Vt({dispatchCommand:(r)=>e.keymap.dispatchCommand(r),feed:(r)=>Jt(e,r),isDialogOpen:()=>e.ui.dialog.open,wait:(r)=>new Promise((i)=>setTimeout(i,r))},n)}function Yt(e){let t,n=!1;return{maybeSync:async()=>{if(!e.balancingEnabled())return t=void 0,!1;if(n||e.dialogOpen())return!1;let i=e.activeSelection();if(!i)return!1;let o=`${i.providerID}/${i.modelID}`;if(o===t)return!1;let a=e.modelTitle(i.providerID,i.modelID)??i.modelID;n=!0;try{let s=await e.apply(i,a);if(s)t=o;return s}finally{n=!1}}}}function Ne(e,t){return Yt({activeSelection:()=>G(t.db),apply:K(e),balancingEnabled:()=>w(t.db),dialogOpen:()=>e.ui.dialog.open,modelTitle:(n,r)=>{return e.state.provider.find((o)=>o.id===n)?.models?.[r]?.name}})}var ue="native_connect_until";function Oe(e,t=180000){e.query(`INSERT INTO settings (key, value) VALUES ('native_connect_until', ?)
55
- ON CONFLICT(key) DO UPDATE SET value = excluded.value`).run(String(c()+t))}function $e(e){let t=e.query("SELECT value FROM settings WHERE key = ?").get(ue),n=Number(t?.value??0);if(Number.isFinite(n)&&n>c())return!0;if(t)e.query("DELETE FROM settings WHERE key = ?").run(ue);return!1}function Ue(e){e.query("DELETE FROM settings WHERE key = ?").run(ue)}import{existsSync as nn,readFileSync as rn}from"fs";function T(...e){return e.filter(Boolean).join("/").replace(/\/+/g,"/")}function qe(){return Bun.env.HOME||"/"}function Qt(){return Bun.env.XDG_CONFIG_HOME||T(qe(),".config")}function Kt(){return Bun.env.XDG_DATA_HOME||T(qe(),".local","share")}function Xt(){let e=Bun.env.OPENCODE_CONFIG_DIR;return e?T(e):T(Qt(),"opencode")}function Zt(){return T(Kt(),"opencode")}function X(){return T(Xt(),"balancer.sqlite")}function Le(){return T(Zt(),"auth.json")}var en=new Map;function tn(e,t=2000){en.set(e,c()+t)}async function Z(e,t,n,r){if(r&&$e(r))return;if(tn(t),r)z(r,t);try{await e.auth.set({body:n,path:{id:t}})}catch{}}async function L(e,t,n="info"){try{await e.tui.showToast({body:{duration:15000,message:t,variant:n}})}catch{}}function M(e){return Boolean(e)&&typeof e==="object"&&!Array.isArray(e)}function on(e){if(e===void 0)return{metadata:void 0,ok:!0};if(!M(e))return{ok:!1};let t={};for(let[n,r]of Object.entries(e)){if(typeof r!=="string")return{ok:!1};t[n]=r}return{metadata:t,ok:!0}}function ce(e,t){let n=on(t);if(!n.ok)return;if(n.metadata)e.metadata=n.metadata;return e}function an(e){if(!M(e)||typeof e.type!=="string")return;if(e.type==="api"&&typeof e.key==="string")return ce({key:e.key,type:"api"},e.metadata);if(e.type==="oauth"&&typeof e.refresh==="string"&&typeof e.access==="string"&&typeof e.expires==="number"&&Number.isFinite(e.expires)){let t={access:e.access,expires:e.expires,refresh:e.refresh,type:"oauth"};if(typeof e.accountId==="string")t.accountId=e.accountId;if(typeof e.enterpriseUrl==="string")t.enterpriseUrl=e.enterpriseUrl;return ce(t,e.metadata)}if(e.type==="wellknown"&&typeof e.key==="string"&&typeof e.token==="string")return ce({key:e.key,token:e.token,type:"wellknown"},e.metadata);return}function Me(e){let t;try{t=JSON.parse(e)}catch{return{ok:!1}}if(!M(t))return{ok:!1};let n={};for(let[r,i]of Object.entries(t)){let o=an(i);if(!o)return{ok:!1};n[r]=o}return{auth:n,ok:!0}}function He(){let e=Bun.env.OPENCODE_AUTH_CONTENT;if(e!==void 0)return Me(e);let t=Le();if(!nn(t))return{auth:{},ok:!0};try{return Me(rn(t,"utf8"))}catch{return{ok:!1}}}function sn(e){let t=e.split(".")[1];if(!t)return;try{let n=JSON.parse(Buffer.from(t,"base64url").toString("utf8"));return M(n)?n:void 0}catch{return}}function je(e){if(e.accountId)return e.accountId;let t=sn(e.access)?.["https://api.openai.com/auth"];if(!M(t))return;let n=t.chatgpt_account_id;return typeof n==="string"&&n.length>0?n:void 0}function Be(e,t){if(e.type!==t.type)return!1;if(e.type==="api"&&t.type==="api")return e.key===t.key;if(e.type==="wellknown"&&t.type==="wellknown")return e.key===t.key&&e.token===t.token;if(e.type==="oauth"&&t.type==="oauth"){let n=je(e),r=je(t);if(n&&r)return n===r;return e.refresh===t.refresh}return!1}var Fe="abcdefghijklmnopqrstuvwxyz0123456789";function un(){let e="";for(let t=0;t<5;t++)e+=Fe[Math.floor(Math.random()*Fe.length)];return e}function We(e){return JSON.stringify(e??null)}function cn(e,t){return Object.entries(t).find(([n,r])=>We(e[n])!==We(r))}function dn(e,t,n){for(let r=0;r<100;r++){let i=n();if(!e.query("SELECT alias FROM accounts WHERE provider_id = ? AND alias = ?").get(t,i))return i}throw Error("Could not generate a unique alias")}async function fn(e,t,n){let r=Date.now();while(!0){let i=e();if(t.ok&&i.ok){let o=cn(t.auth,i.auth);if(o)return o}if(Date.now()-r>=n.maxWaitMs)return;await n.wait(n.pollIntervalMs)}}async function Ge(e){if(e.keymap?.dispatchCommand){let t=e.readAuth??He,n=t();if(e.db)Oe(e.db);if(await e.keymap.dispatchCommand("provider.connect"),e.db)try{let r=await fn(t,n,{maxWaitMs:e.maxWaitMs??(e.ui?.dialog?600000:0),pollIntervalMs:e.pollIntervalMs??500,wait:e.wait??((i)=>new Promise((o)=>setTimeout(o,i)))});if(r){let[i,o]=r,s=h(e.db,i).find((l)=>Be(l.auth,o))?.alias??dn(e.db,i,e.generateAlias??un),u=ie(e.db,i,s,o);e.ui?.toast?.({message:`Saved ${u.providerID}/${u.alias}.`,variant:"success"})}}finally{Ue(e.db)}return}e.ui?.toast?.({message:"Native provider connect is unavailable in this opencode build.",variant:"error"})}function ze(e,t){let n=e.find((r)=>r.id===t);if(!n?.models)return[];return Object.entries(n.models).filter(([,r])=>r.status!=="deprecated").map(([r,i])=>({modelID:i.id??r,providerID:n.id,providerName:n.name??n.id,releaseDate:i.release_date??"",title:i.name??i.id??r})).sort((r,i)=>i.releaseDate.localeCompare(r.releaseDate)||r.title.localeCompare(i.title)).map(({releaseDate:r,...i})=>i)}function Je(e){let t=!1,n,r=()=>n??e.currentProvider();return{currentProvider:r,maybeSync:async()=>{if(t||e.dialogOpen())return!1;let i=e.selectedProvider();if(!i||i===r())return!1;t=!0;try{let o=await e.applyProvider(i);if(o)n=i;return o}finally{t=!1}}}}import{createSignal as ne,onCleanup as Tn}from"solid-js";import{Database as pn}from"bun:sqlite";import{chmodSync as ln,mkdirSync as gn}from"fs";import{dirname as mn}from"path";var j=new Map;function hn(e){return e.code==="ENOENT"}function Ve(e){return e instanceof Error&&/closed/i.test(e.message)}function yn(e){try{return e.exec("SELECT 1;"),!0}catch(t){if(Ve(t))return!1;throw t}}function An(e){for(let t of[e,`${e}-wal`,`${e}-shm`])try{ln(t,384)}catch(n){if(!hn(n))throw n}}function ee(e){let t=j.get(e);if(t){if(yn(t))return t;j.delete(e)}gn(mn(e),{recursive:!0});let n=new pn(e);try{return n.exec("PRAGMA journal_mode = WAL; PRAGMA foreign_keys = ON; PRAGMA busy_timeout = 5000;"),An(e),j.set(e,n),n}catch(r){try{n.close()}catch{}throw r}}function Ye(e){let t=j.get(e);if(!t)return;j.delete(e);try{t.close()}catch(n){if(!Ve(n))throw n}}var de=new Set(["api","oauth","wellknown"]);function vn(e,t){let n=e.query("SELECT version FROM schema_migrations WHERE version = ?").get(t);return Boolean(n)}function _n(e,t){let n=e.query("SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?").get(t);return Boolean(n)}function En(e,t){if(!_n(e,t))return new Set;return new Set(e.query(`PRAGMA table_info(${t})`).all().map((n)=>n.name))}function Qe(e){try{let t=JSON.parse(e);if(typeof t.type==="string"&&de.has(t.type))return t.type}catch{}return"api"}function x(e,t,n){let r=En(e,t),i=n.filter((o)=>r.has(o));if(i.length===0)return[];return e.query(`SELECT ${i.join(", ")} FROM ${t}`).all()}function Rn(e){let t=x(e,"accounts",["provider_id","alias","auth_json","auth_type","created_at","updated_at","last_used_at","rate_limited_until","failures","disabled"]);e.exec(`
54
+ WHERE provider_id = ? AND alias = ?`).run(t.fetchedAt,t.providerID,t.alias)}async function Oe(e,t,n,r,i={}){let o=$(t.db)?.providerID,a=R(t.db,n,r)??A(t.db,n);if(a)try{Y(t.db,n),await e.client.auth.set({body:a.auth,path:{id:n}})}catch{}if(t.refresh(),(i.sessionProviderID??o)!==n)await i.applyNativeProviderModel?.(n);e.ui?.toast({message:`Activated ${n}/${r}.`,variant:"success"})}async function $e(e,t,n,r,i={}){let o=E(t.db,n,r)??t.accounts().find((a)=>{return a.providerID===n&&a.alias===r});if(!o){e.ui.toast({message:`Account not found: ${n}/${r}`,variant:"error"});return}try{let a=await(i.refreshUsage??Ce)(o);if(Ne(t.db,a),ue(t.db,{alias:r,message:a.message,providerID:n,type:a.confidence==="unavailable"?"usage_unavailable":"usage_refreshed"}),t.refresh(),!i.silent)e.ui.toast({message:a.message,variant:a.confidence==="unavailable"?"warning":"success"})}catch(a){let s=a instanceof Error?a.message:"Usage refresh failed.";e.ui.toast({message:s,variant:"error"})}}function Ue(e,t,n,r){if(!Ee(t.db,n,r)){e.ui.toast({message:`Account not found: ${n}/${r}`,variant:"error"});return}let o=`Removed account ${n}/${r}.`;ue(t.db,{alias:r,message:o,providerID:n,type:"account_removed"}),t.refresh(),t.removeAccountView(n,r),e.ui.toast({message:o,variant:"success"})}function Xt(e){let t=e.renderer?.stdin;return t&&typeof t.emit==="function"?t:void 0}function Zt(e,t){let n=Xt(e);if(!n)return!1;return n.emit("data",Buffer.from(t)),!0}async function en(e,t){let n=e.settleMs??90;if(e.dispatchCommand("model.list"),await e.wait(n),!e.isDialogOpen())return!1;if(!e.feed(t))return!1;if(await e.wait(n),!e.feed("\r"))return!1;if(await e.wait(n),e.isDialogOpen())e.feed("\x1B");return!0}function ee(e){return(t,n)=>en({dispatchCommand:(r)=>e.keymap.dispatchCommand(r),feed:(r)=>Zt(e,r),isDialogOpen:()=>e.ui.dialog.open,wait:(r)=>new Promise((i)=>setTimeout(i,r))},n)}function tn(e){let t,n=!1;return{maybeSync:async()=>{if(!e.balancingEnabled())return t=void 0,!1;if(n||e.dialogOpen())return!1;let i=e.activeSelection();if(!i)return!1;let o=`${i.providerID}/${i.modelID}`;if(o===t)return!1;let a=e.modelTitle(i.providerID,i.modelID)??i.modelID;n=!0;try{let s=await e.apply(i,a);if(s)t=o;return s}finally{n=!1}}}}function qe(e,t){return tn({activeSelection:()=>V(t.db),apply:ee(e),balancingEnabled:()=>D(t.db),dialogOpen:()=>e.ui.dialog.open,modelTitle:(n,r)=>{return e.state.provider.find((o)=>o.id===n)?.models?.[r]?.name}})}var pe="native_connect_until";function Le(e,t=180000){e.query(`INSERT INTO settings (key, value) VALUES ('native_connect_until', ?)
55
+ ON CONFLICT(key) DO UPDATE SET value = excluded.value`).run(String(c()+t))}function je(e){let t=e.query("SELECT value FROM settings WHERE key = ?").get(pe),n=Number(t?.value??0);if(Number.isFinite(n)&&n>c())return!0;if(t)e.query("DELETE FROM settings WHERE key = ?").run(pe);return!1}function Me(e){e.query("DELETE FROM settings WHERE key = ?").run(pe)}import{existsSync as cn,readFileSync as dn}from"fs";function b(...e){return e.filter(Boolean).join("/").replace(/\/+/g,"/")}function He(){return Bun.env.HOME||"/"}function nn(){return Bun.env.XDG_CONFIG_HOME||b(He(),".config")}function rn(){return Bun.env.XDG_DATA_HOME||b(He(),".local","share")}function on(){let e=Bun.env.OPENCODE_CONFIG_DIR;return e?b(e):b(nn(),"opencode")}function an(){return b(rn(),"opencode")}function te(){return b(on(),"balancer.sqlite")}function Be(){return b(an(),"auth.json")}var sn=new Map;function un(e,t=2000){sn.set(e,c()+t)}async function ne(e,t,n,r){if(r&&je(r))return;if(un(t),r)Y(r,t);try{await e.auth.set({body:n,path:{id:t}})}catch{}}async function L(e,t,n="info"){try{await e.tui.showToast({body:{duration:15000,message:t,variant:n}})}catch{}}function H(e){return Boolean(e)&&typeof e==="object"&&!Array.isArray(e)}function pn(e){if(e===void 0)return{metadata:void 0,ok:!0};if(!H(e))return{ok:!1};let t={};for(let[n,r]of Object.entries(e)){if(typeof r!=="string")return{ok:!1};t[n]=r}return{metadata:t,ok:!0}}function le(e,t){let n=pn(t);if(!n.ok)return;if(n.metadata)e.metadata=n.metadata;return e}function ln(e){if(!H(e)||typeof e.type!=="string")return;if(e.type==="api"&&typeof e.key==="string")return le({key:e.key,type:"api"},e.metadata);if(e.type==="oauth"&&typeof e.refresh==="string"&&typeof e.access==="string"&&typeof e.expires==="number"&&Number.isFinite(e.expires)){let t={access:e.access,expires:e.expires,refresh:e.refresh,type:"oauth"};if(typeof e.accountId==="string")t.accountId=e.accountId;if(typeof e.enterpriseUrl==="string")t.enterpriseUrl=e.enterpriseUrl;return le(t,e.metadata)}if(e.type==="wellknown"&&typeof e.key==="string"&&typeof e.token==="string")return le({key:e.key,token:e.token,type:"wellknown"},e.metadata);return}function Fe(e){let t;try{t=JSON.parse(e)}catch{return{ok:!1}}if(!H(t))return{ok:!1};let n={};for(let[r,i]of Object.entries(t)){let o=ln(i);if(!o)return{ok:!1};n[r]=o}return{auth:n,ok:!0}}function Ge(){let e=Bun.env.OPENCODE_AUTH_CONTENT;if(e!==void 0)return Fe(e);let t=Be();if(!cn(t))return{auth:{},ok:!0};try{return Fe(dn(t,"utf8"))}catch{return{ok:!1}}}function fn(e){let t=e.split(".")[1];if(!t)return;try{let n=JSON.parse(Buffer.from(t,"base64url").toString("utf8"));return H(n)?n:void 0}catch{return}}function We(e){if(e.accountId)return e.accountId;let t=fn(e.access)?.["https://api.openai.com/auth"];if(!H(t))return;let n=t.chatgpt_account_id;return typeof n==="string"&&n.length>0?n:void 0}function ze(e,t){if(e.type!==t.type)return!1;if(e.type==="api"&&t.type==="api")return e.key===t.key;if(e.type==="wellknown"&&t.type==="wellknown")return e.key===t.key&&e.token===t.token;if(e.type==="oauth"&&t.type==="oauth"){let n=We(e),r=We(t);if(n&&r)return n===r;return e.refresh===t.refresh}return!1}var Je="abcdefghijklmnopqrstuvwxyz0123456789";function gn(){let e="";for(let t=0;t<5;t++)e+=Je[Math.floor(Math.random()*Je.length)];return e}function Ve(e){return JSON.stringify(e??null)}function mn(e,t){return Object.entries(t).find(([n,r])=>Ve(e[n])!==Ve(r))}function hn(e,t,n){for(let r=0;r<100;r++){let i=n();if(!e.query("SELECT alias FROM accounts WHERE provider_id = ? AND alias = ?").get(t,i))return i}throw Error("Could not generate a unique alias")}async function yn(e,t,n){let r=Date.now();while(!0){let i=e();if(t.ok&&i.ok){let o=mn(t.auth,i.auth);if(o)return o}if(Date.now()-r>=n.maxWaitMs)return;await n.wait(n.pollIntervalMs)}}async function Ye(e){if(e.keymap?.dispatchCommand){let t=e.readAuth??Ge,n=t();if(e.db)Le(e.db);if(await e.keymap.dispatchCommand("provider.connect"),e.db)try{let r=await yn(t,n,{maxWaitMs:e.maxWaitMs??(e.ui?.dialog?600000:0),pollIntervalMs:e.pollIntervalMs??500,wait:e.wait??((i)=>new Promise((o)=>setTimeout(o,i)))});if(r){let[i,o]=r,s=y(e.db,i).find((p)=>ze(p.auth,o))?.alias??hn(e.db,i,e.generateAlias??gn),u=se(e.db,i,s,o);e.ui?.toast?.({message:`Saved ${u.providerID}/${u.alias}.`,variant:"success"})}}finally{Me(e.db)}return}e.ui?.toast?.({message:"Native provider connect is unavailable in this opencode build.",variant:"error"})}function Qe(e,t){let n=e.find((r)=>r.id===t);if(!n?.models)return[];return Object.entries(n.models).filter(([,r])=>r.status!=="deprecated").map(([r,i])=>({modelID:i.id??r,providerID:n.id,providerName:n.name??n.id,releaseDate:i.release_date??"",title:i.name??i.id??r})).sort((r,i)=>i.releaseDate.localeCompare(r.releaseDate)||r.title.localeCompare(i.title)).map(({releaseDate:r,...i})=>i)}function Ke(e){let t=!1,n,r=()=>n??e.currentProvider();return{currentProvider:r,maybeSync:async()=>{if(t||e.dialogOpen())return!1;let i=e.selectedProvider();if(!i||i===r())return!1;t=!0;try{let o=await e.applyProvider(i);if(o)n=i;return o}finally{t=!1}}}}import{createSignal as oe,onCleanup as $n}from"solid-js";import{Database as vn}from"bun:sqlite";import{chmodSync as An,mkdirSync as _n}from"fs";import{dirname as En}from"path";var B=new Map;function kn(e){return e.code==="ENOENT"}function Xe(e){return e instanceof Error&&/closed/i.test(e.message)}function Rn(e){try{return e.exec("SELECT 1;"),!0}catch(t){if(Xe(t))return!1;throw t}}function Dn(e){for(let t of[e,`${e}-wal`,`${e}-shm`])try{An(t,384)}catch(n){if(!kn(n))throw n}}function re(e){let t=B.get(e);if(t){if(Rn(t))return t;B.delete(e)}_n(En(e),{recursive:!0});let n=new vn(e);try{return n.exec("PRAGMA journal_mode = WAL; PRAGMA foreign_keys = ON; PRAGMA busy_timeout = 5000;"),Dn(e),B.set(e,n),n}catch(r){try{n.close()}catch{}throw r}}function Ze(e){let t=B.get(e);if(!t)return;B.delete(e);try{t.close()}catch(n){if(!Xe(n))throw n}}var fe=new Set(["api","oauth","wellknown"]);function wn(e,t){let n=e.query("SELECT version FROM schema_migrations WHERE version = ?").get(t);return Boolean(n)}function In(e,t){let n=e.query("SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?").get(t);return Boolean(n)}function Pn(e,t){if(!In(e,t))return new Set;return new Set(e.query(`PRAGMA table_info(${t})`).all().map((n)=>n.name))}function et(e){try{let t=JSON.parse(e);if(typeof t.type==="string"&&fe.has(t.type))return t.type}catch{}return"api"}function T(e,t,n){let r=Pn(e,t),i=n.filter((o)=>r.has(o));if(i.length===0)return[];return e.query(`SELECT ${i.join(", ")} FROM ${t}`).all()}function Sn(e){let t=T(e,"accounts",["provider_id","alias","auth_json","auth_type","created_at","updated_at","last_used_at","rate_limited_until","failures","disabled"]);e.exec(`
56
56
  DROP TABLE IF EXISTS accounts_new;
57
57
  CREATE TABLE accounts_new (
58
58
  provider_id TEXT NOT NULL,
@@ -70,10 +70,10 @@ var P=import.meta.require;import{createComponent as re}from"solid-js";function c
70
70
  `);let n=e.query(`INSERT OR REPLACE INTO accounts_new (
71
71
  provider_id, alias, auth_json, auth_type, created_at, updated_at,
72
72
  last_used_at, rate_limited_until, failures, disabled
73
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`);for(let r of t){if(typeof r.provider_id!=="string"||typeof r.alias!=="string"||typeof r.auth_json!=="string")continue;let i=typeof r.auth_type==="string"&&de.has(r.auth_type)?r.auth_type:Qe(r.auth_json);n.run(r.provider_id,r.alias,r.auth_json,i,typeof r.created_at==="number"?r.created_at:Date.now(),typeof r.updated_at==="number"?r.updated_at:Date.now(),typeof r.last_used_at==="number"?r.last_used_at:null,typeof r.rate_limited_until==="number"?r.rate_limited_until:null,typeof r.failures==="number"?r.failures:0,r.disabled===1?1:0)}e.exec(`
73
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`);for(let r of t){if(typeof r.provider_id!=="string"||typeof r.alias!=="string"||typeof r.auth_json!=="string")continue;let i=typeof r.auth_type==="string"&&fe.has(r.auth_type)?r.auth_type:et(r.auth_json);n.run(r.provider_id,r.alias,r.auth_json,i,typeof r.created_at==="number"?r.created_at:Date.now(),typeof r.updated_at==="number"?r.updated_at:Date.now(),typeof r.last_used_at==="number"?r.last_used_at:null,typeof r.rate_limited_until==="number"?r.rate_limited_until:null,typeof r.failures==="number"?r.failures:0,r.disabled===1?1:0)}e.exec(`
74
74
  DROP TABLE IF EXISTS accounts;
75
75
  ALTER TABLE accounts_new RENAME TO accounts;
76
- `)}function Dn(e){let t=x(e,"provider_state",["provider_id","active_alias","updated_at","metadata_json"]);e.exec(`
76
+ `)}function bn(e){let t=T(e,"provider_state",["provider_id","active_alias","updated_at","metadata_json"]);e.exec(`
77
77
  DROP TABLE IF EXISTS provider_state_new;
78
78
  CREATE TABLE provider_state_new (
79
79
  provider_id TEXT PRIMARY KEY,
@@ -85,7 +85,7 @@ var P=import.meta.require;import{createComponent as re}from"solid-js";function c
85
85
  VALUES (?, ?, ?, ?)`);for(let r of t){if(typeof r.provider_id!=="string")continue;n.run(r.provider_id,typeof r.active_alias==="string"?r.active_alias:null,typeof r.updated_at==="number"?r.updated_at:Date.now(),typeof r.metadata_json==="string"?r.metadata_json:"{}")}e.exec(`
86
86
  DROP TABLE IF EXISTS provider_state;
87
87
  ALTER TABLE provider_state_new RENAME TO provider_state;
88
- `)}function wn(e){let t=x(e,"pending_connections",["id","provider_id","auth_json","auth_type","source","captured_at","prompt_status"]);e.exec(`
88
+ `)}function Tn(e){let t=T(e,"pending_connections",["id","provider_id","auth_json","auth_type","source","captured_at","prompt_status"]);e.exec(`
89
89
  DROP TABLE IF EXISTS pending_connections_new;
90
90
  CREATE TABLE pending_connections_new (
91
91
  id TEXT PRIMARY KEY,
@@ -98,10 +98,10 @@ var P=import.meta.require;import{createComponent as re}from"solid-js";function c
98
98
  );
99
99
  `);let n=e.query(`INSERT OR REPLACE INTO pending_connections_new (
100
100
  id, provider_id, auth_json, auth_type, source, captured_at, prompt_status
101
- ) VALUES (?, ?, ?, ?, ?, ?, ?)`);for(let r of t){if(typeof r.id!=="string"||typeof r.provider_id!=="string"||typeof r.auth_json!=="string")continue;let i=typeof r.auth_type==="string"&&de.has(r.auth_type)?r.auth_type:Qe(r.auth_json);n.run(r.id,r.provider_id,r.auth_json,i,typeof r.source==="string"?r.source:"auth-file",typeof r.captured_at==="number"?r.captured_at:Date.now(),typeof r.prompt_status==="string"?r.prompt_status:"new")}e.exec(`
101
+ ) VALUES (?, ?, ?, ?, ?, ?, ?)`);for(let r of t){if(typeof r.id!=="string"||typeof r.provider_id!=="string"||typeof r.auth_json!=="string")continue;let i=typeof r.auth_type==="string"&&fe.has(r.auth_type)?r.auth_type:et(r.auth_json);n.run(r.id,r.provider_id,r.auth_json,i,typeof r.source==="string"?r.source:"auth-file",typeof r.captured_at==="number"?r.captured_at:Date.now(),typeof r.prompt_status==="string"?r.prompt_status:"new")}e.exec(`
102
102
  DROP TABLE IF EXISTS pending_connections;
103
103
  ALTER TABLE pending_connections_new RENAME TO pending_connections;
104
- `)}function In(e){let t=x(e,"usage_snapshots",["provider_id","alias","fetched_at","confidence","normalized_json","raw_redacted_json","error"]);e.exec(`
104
+ `)}function xn(e){let t=T(e,"usage_snapshots",["provider_id","alias","fetched_at","confidence","normalized_json","raw_redacted_json","error"]);e.exec(`
105
105
  DROP TABLE IF EXISTS usage_snapshots_new;
106
106
  CREATE TABLE usage_snapshots_new (
107
107
  provider_id TEXT NOT NULL,
@@ -118,7 +118,7 @@ var P=import.meta.require;import{createComponent as re}from"solid-js";function c
118
118
  ) VALUES (?, ?, ?, ?, ?, ?, ?)`);for(let r of t){if(typeof r.provider_id!=="string"||typeof r.alias!=="string")continue;n.run(r.provider_id,r.alias,typeof r.fetched_at==="number"?r.fetched_at:Date.now(),typeof r.confidence==="string"?r.confidence:"unavailable",typeof r.normalized_json==="string"?r.normalized_json:"{}",typeof r.raw_redacted_json==="string"?r.raw_redacted_json:null,typeof r.error==="string"?r.error:null)}e.exec(`
119
119
  DROP TABLE IF EXISTS usage_snapshots;
120
120
  ALTER TABLE usage_snapshots_new RENAME TO usage_snapshots;
121
- `)}function kn(e){let t=x(e,"events",["id","type","provider_id","alias","message","created_at","metadata_json"]);e.exec(`
121
+ `)}function Cn(e){let t=T(e,"events",["id","type","provider_id","alias","message","created_at","metadata_json"]);e.exec(`
122
122
  DROP TABLE IF EXISTS events_new;
123
123
  CREATE TABLE events_new (
124
124
  id TEXT PRIMARY KEY,
@@ -133,7 +133,7 @@ var P=import.meta.require;import{createComponent as re}from"solid-js";function c
133
133
  VALUES (?, ?, ?, ?, ?, ?, ?)`);for(let r of t){if(typeof r.id!=="string"||typeof r.type!=="string"||typeof r.message!=="string")continue;n.run(r.id,r.type,typeof r.provider_id==="string"?r.provider_id:null,typeof r.alias==="string"?r.alias:null,r.message,typeof r.created_at==="number"?r.created_at:Date.now(),typeof r.metadata_json==="string"?r.metadata_json:"{}")}e.exec(`
134
134
  DROP TABLE IF EXISTS events;
135
135
  ALTER TABLE events_new RENAME TO events;
136
- `)}function Sn(e){let t=x(e,"provider_priority",["provider_id","position","model_id","enabled","updated_at"]);e.exec(`
136
+ `)}function Nn(e){let t=T(e,"provider_priority",["provider_id","position","model_id","enabled","updated_at"]);e.exec(`
137
137
  DROP TABLE IF EXISTS provider_priority_new;
138
138
  CREATE TABLE provider_priority_new (
139
139
  provider_id TEXT PRIMARY KEY,
@@ -146,7 +146,7 @@ var P=import.meta.require;import{createComponent as re}from"solid-js";function c
146
146
  VALUES (?, ?, ?, ?, ?)`);for(let r of t){if(typeof r.provider_id!=="string")continue;n.run(r.provider_id,typeof r.position==="number"?r.position:0,typeof r.model_id==="string"?r.model_id:null,r.enabled===0?0:1,typeof r.updated_at==="number"?r.updated_at:Date.now())}e.exec(`
147
147
  DROP TABLE IF EXISTS provider_priority;
148
148
  ALTER TABLE provider_priority_new RENAME TO provider_priority;
149
- `)}function Pn(e){let t=x(e,"settings",["key","value"]);e.exec(`
149
+ `)}function On(e){let t=T(e,"settings",["key","value"]);e.exec(`
150
150
  DROP TABLE IF EXISTS settings_new;
151
151
  CREATE TABLE settings_new (
152
152
  key TEXT PRIMARY KEY,
@@ -155,19 +155,19 @@ var P=import.meta.require;import{createComponent as re}from"solid-js";function c
155
155
  `);let n=e.query("INSERT OR REPLACE INTO settings_new (key, value) VALUES (?, ?)");for(let r of t){if(typeof r.key!=="string"||typeof r.value!=="string")continue;n.run(r.key,r.value)}e.exec(`
156
156
  DROP TABLE IF EXISTS settings;
157
157
  ALTER TABLE settings_new RENAME TO settings;
158
- `)}function te(e){e.exec(`
158
+ `)}function ie(e){e.exec(`
159
159
  CREATE TABLE IF NOT EXISTS schema_migrations (
160
160
  version INTEGER PRIMARY KEY,
161
161
  applied_at INTEGER NOT NULL
162
162
  );
163
- `),e.transaction(()=>{if(Rn(e),Dn(e),wn(e),In(e),kn(e),Sn(e),Pn(e),!vn(e,1))e.query("INSERT INTO schema_migrations (version, applied_at) VALUES (?, ?)").run(1,Date.now())})()}function Ke(){let e=X(),t=ee(e);te(t);let[n,r]=ne(0),[i,o]=ne([]),[a,s]=ne([]),[u,l]=ne([]),y=()=>{o(h(t)),s(J(t)),l(_e(t,10)),r((k)=>k+1)},A=(k,R)=>{o((S)=>S.filter((B)=>B.providerID!==k||B.alias!==R)),r((S)=>S+1)},g=(k)=>{s((R)=>R.filter((S)=>S.id!==k)),r((R)=>R+1)},f,m=!1,_=()=>{if(m)return;if(m=!0,f)clearInterval(f);f=void 0,Ye(e)};return y(),f=setInterval(y,1000),Tn(_),{accounts:i,db:t,dispose:_,events:u,pending:a,refresh:y,removeAccountView:A,removePendingView:g,version:n}}function Xe(e,t,n={}){let r=n.intervalMs??60000,i=n.promptDebounceMs??30000,o=n.now??Date.now,a=new Set,s=0,u=async(g,f)=>{let m=`${g}/${f}`;if(a.has(m))return;a.add(m);try{await be(e,t,g,f,{refreshUsage:n.refreshUsage,silent:!0})}finally{a.delete(m)}},l=async()=>{let g=h(t.db).filter((f)=>!f.disabled);await Promise.all(g.map((f)=>u(f.providerID,f.alias)))},y=async()=>{let g=o();if(g-s<i)return;s=g,await l()},A=r>0?setInterval(()=>void l(),r):void 0;return l(),{dispose(){if(A)clearInterval(A)},refreshForPrompt:y,refreshNow:l}}function fe(e){let t=e?.model?.providerID;return typeof t==="string"&&t.length>0?t:void 0}function xn(e){return"params"in e&&e.params?{name:e.name,params:{...e.params}}:{name:e.name}}var bn=async(e)=>{await import("@opentui/solid/runtime-plugin-support");let[t,n,r,i,o,a]=await Promise.all([import("./components/dashboard.tsx"),import("./components/priority-screen.tsx"),import("./components/provider-model-dialog.tsx"),import("./components/rename-dialog.tsx"),import("./components/sidebar.tsx"),import("./components/status-indicator.tsx")]),s=Ke(),u=Xe(e,s),l=Ne(e,s),y=K(e),A,g,f,m=async(d)=>{let p=ze(e.state.provider,d),b=W(s.db,d),C=p.find((mt)=>mt.modelID===b?.modelID)??p[0];if(!C)return!1;return y({modelID:C.modelID,providerID:C.providerID},C.title)},_=async(d)=>{let p=await m(d);if(p)g=d;return p},k=Je({applyProvider:_,currentProvider:()=>g??f,dialogOpen:()=>e.ui.dialog.open,selectedProvider:()=>w(s.db)?void 0:O(s.db)?.providerID});e.lifecycle.onDispose(()=>{u.dispose(),s.dispose()});let R=()=>{if(e.route.current.name!=="balancer.dashboard")A=xn(e.route.current);e.route.navigate("balancer.dashboard")},S=()=>{e.route.navigate("balancer.priority")},B=()=>{let d=A;if(A=void 0,d)e.route.navigate(d.name,"params"in d?d.params:void 0);else e.route.navigate("home")},lt=e.route.register([{name:"balancer.dashboard",render:()=>re(t.Dashboard,{api:e,onBack:B,openConnect:()=>Ge({...e,db:s.db}),openPriority:S,removeAccount:(d,p)=>Ce(e,s,d,p),renameAccount:(d,p)=>i.openRenameDialog(e,s,d,p),state:s})},{name:"balancer.priority",render:()=>re(n.PriorityScreen,{api:e,onBack:()=>e.route.navigate("balancer.dashboard"),openModelPicker:(d,p)=>r.openProviderModelDialog(e,s,d,{applyNativeSelection:!1,onComplete:p,onSelected:(b)=>ve(s.db,b.providerID,b.modelID)}),state:s})}]);e.lifecycle.onDispose(lt);let gt=e.keymap.registerLayer({bindings:[{cmd:"balancer.dashboard.open",key:"ctrl+b"}],commands:[{category:"Plugin",name:"balancer.dashboard.open",namespace:"palette",run(){R()},slashName:"balancer",title:"Open Balancer Dashboard"}]});e.lifecycle.onDispose(gt),e.slots.register({slots:{session_prompt_right(d,p){return f=fe(e.state.session.get(p.session_id)),u.refreshForPrompt(),k.maybeSync(),l.maybeSync(),re(a.BalancerStatusIndicator,{api:e,providerID:()=>fe(e.state.session.get(p.session_id)),state:s})},sidebar_content(d,p){return re(o.BalancerSidebar,{activateAccount:(b,C)=>{return xe(e,s,b,C,{applyNativeProviderModel:_,sessionProviderID:g??fe(e.state.session.get(p.session_id))})},api:e,openDashboard:R,state:s})}}})},Ze={id:"opencode-balancer",tui:bn};import{tool as dt}from"@opencode-ai/plugin";function Cn(e){return e.match(/(?:[^\s"]+|"[^"]*")+/g)?.map((t)=>t.replace(/^"|"$/g,""))??[]}function et(e,t){let[n="help",...r]=Cn(t);if(["help","--help","-h"].includes(n))return["Balancer is TUI-first. Use fallback commands only for compatibility or troubleshooting.","Fallback commands: list, status, use <provider> <alias>, active <provider>."].join(`
164
- `);if(n==="list"){let i=h(e);if(i.length===0)return"No accounts saved.";return i.map((o)=>`${o.providerID}/${o.alias}`).join(`
165
- `)}if(n==="status")return`accounts=${h(e).length} pending=${J(e).length}`;if(n==="use"){let[i,o]=r;if(!i||!o)return"Usage: /balancer use <provider> <alias>";try{let a=D(e,i,o);return`Active account changed to ${i}/${a.alias}`}catch(a){return a instanceof Error?a.message:"Account not found."}}if(n==="active"){let[i]=r;if(!i)return"Usage: /balancer active <provider>";let o=v(e,i);if(!o)return"No active account for provider.";return`${i}/${o.alias}`}return`Unknown command: ${n}. Use /balancer help.`}var H="x-opencode-balancer-request",tt="opencodeBalancerCommand",nt=new Set([429,500,502,503,504,529]),pe=new Map;function rt(e,t){pe.set(e,t)}function it(e){let t=pe.get(e);return pe.delete(e),t}function ot(e,t,n,r=60000){let i=E(e,t,n);if(!i)return;let o=c();e.query(`UPDATE accounts
163
+ `),e.transaction(()=>{if(Sn(e),bn(e),Tn(e),xn(e),Cn(e),Nn(e),On(e),!wn(e,1))e.query("INSERT INTO schema_migrations (version, applied_at) VALUES (?, ?)").run(1,Date.now())})()}function tt(){let e=te(),t=re(e);ie(t);let[n,r]=oe(0),[i,o]=oe([]),[a,s]=oe([]),[u,p]=oe([]),l=()=>{o(y(t)),s(Q(t)),p(De(t,10)),r((I)=>I+1)},v=(I,k)=>{o((P)=>P.filter((G)=>G.providerID!==I||G.alias!==k)),r((P)=>P+1)},m=(I)=>{s((k)=>k.filter((P)=>P.id!==I)),r((k)=>k+1)},f,h=!1,_=()=>{if(h)return;if(h=!0,f)clearInterval(f);f=void 0,Ze(e)};return l(),f=setInterval(l,1000),$n(_),{accounts:i,db:t,dispose:_,events:u,pending:a,refresh:l,removeAccountView:v,removePendingView:m,version:n}}function nt(e,t,n={}){let r=n.intervalMs??60000,i=n.promptDebounceMs??30000,o=n.now??Date.now,a=new Set,s=0,u=async(m,f)=>{let h=`${m}/${f}`;if(a.has(h))return;a.add(h);try{await $e(e,t,m,f,{refreshUsage:n.refreshUsage,silent:!0})}finally{a.delete(h)}},p=async()=>{let m=y(t.db).filter((f)=>!f.disabled);await Promise.all(m.map((f)=>u(f.providerID,f.alias)))},l=async()=>{let m=o();if(m-s<i)return;s=m,await p()},v=r>0?setInterval(()=>void p(),r):void 0;return p(),{dispose(){if(v)clearInterval(v)},refreshForPrompt:l,refreshNow:p}}function ge(e){let t=e?.model?.providerID;return typeof t==="string"&&t.length>0?t:void 0}function Un(e){return"params"in e&&e.params?{name:e.name,params:{...e.params}}:{name:e.name}}var qn=async(e)=>{await import("@opentui/solid/runtime-plugin-support");let[t,n,r,i,o,a]=await Promise.all([import("./components/dashboard.tsx"),import("./components/priority-screen.tsx"),import("./components/provider-model-dialog.tsx"),import("./components/rename-dialog.tsx"),import("./components/sidebar.tsx"),import("./components/status-indicator.tsx")]),s=tt(),u=nt(e,s),p=qe(e,s),l=ee(e),v,m,f,h=async(d)=>{let g=Qe(e.state.provider,d),C=J(s.db,d),N=g.find((Et)=>Et.modelID===C?.modelID)??g[0];if(!N)return!1;return l({modelID:N.modelID,providerID:N.providerID},N.title)},_=async(d)=>{let g=await h(d);if(g)m=d;return g},I=Ke({applyProvider:_,currentProvider:()=>m??f,dialogOpen:()=>e.ui.dialog.open,selectedProvider:()=>D(s.db)?void 0:$(s.db)?.providerID});e.lifecycle.onDispose(()=>{u.dispose(),s.dispose()});let k=()=>{if(e.route.current.name!=="balancer.dashboard")v=Un(e.route.current);e.route.navigate("balancer.dashboard")},P=()=>{e.route.navigate("balancer.priority")},G=()=>{let d=v;if(v=void 0,d)e.route.navigate(d.name,"params"in d?d.params:void 0);else e.route.navigate("home")},At=e.route.register([{name:"balancer.dashboard",render:()=>ae(t.Dashboard,{api:e,onBack:G,openConnect:()=>Ye({...e,db:s.db}),openPriority:P,removeAccount:(d,g)=>Ue(e,s,d,g),renameAccount:(d,g)=>i.openRenameDialog(e,s,d,g),state:s})},{name:"balancer.priority",render:()=>ae(n.PriorityScreen,{api:e,onBack:()=>e.route.navigate("balancer.dashboard"),openModelPicker:(d,g)=>r.openProviderModelDialog(e,s,d,{applyNativeSelection:!1,onComplete:g,onSelected:(C)=>Re(s.db,C.providerID,C.modelID)}),state:s})}]);e.lifecycle.onDispose(At);let _t=e.keymap.registerLayer({bindings:[{cmd:"balancer.dashboard.open",key:"ctrl+b"}],commands:[{category:"Plugin",name:"balancer.dashboard.open",namespace:"palette",run(){k()},slashName:"balancer",title:"Open Balancer Dashboard"}]});e.lifecycle.onDispose(_t),e.slots.register({slots:{session_prompt_right(d,g){return f=ge(e.state.session.get(g.session_id)),u.refreshForPrompt(),I.maybeSync(),p.maybeSync(),ae(a.BalancerStatusIndicator,{api:e,providerID:()=>ge(e.state.session.get(g.session_id)),state:s})},sidebar_content(d,g){return ae(o.BalancerSidebar,{activateAccount:(C,N)=>{return Oe(e,s,C,N,{applyNativeProviderModel:_,sessionProviderID:m??ge(e.state.session.get(g.session_id))})},api:e,openDashboard:k,state:s})}}})},rt={id:"opencode-balancer",tui:qn};import{tool as ht}from"@opencode-ai/plugin";var it={bugs:{url:"https://github.com/thelioo/opencode-balancer/issues"},dependencies:{"@opencode-ai/plugin":"^1.14.51","@opentui/solid":"^0.2.16","solid-js":"^1.9.12"},description:"Account balancer plugin for opencode.",devDependencies:{"@biomejs/biome":"^2.4.16","@changesets/cli":"^2.31.0","@types/bun":"^1.3.14","@typescript/native-preview":"7.0.0-dev.20260607.1",concurrently:"^10.0.3",husky:"^9.1.7"},exports:{".":{default:"./dist/index.js"},"./tui":{default:"./dist/tui/tui.tsx"}},files:["dist","README.md","INSTALL.txt","LICENSE"],homepage:"https://github.com/thelioo/opencode-balancer#readme",keywords:["opencode","opencode-plugin","balancer","accounts"],license:"MIT",main:"./dist/index.js",name:"@thelioo/opencode-balancer",repository:{type:"git",url:"git+https://github.com/thelioo/opencode-balancer.git"},scripts:{build:"bun scripts/build.ts",changeset:"changeset",checktypes:"tsgo --noEmit",format:"biome format --write",lint:"biome check .","lint:fix":"biome check . --fix","lint:unsafe":"biome check . --fix --unsafe",prepare:"husky",prepublishOnly:"bun run build",release:"changeset publish",test:"bun test",version:"changeset version"},type:"module",version:"0.2.4"};import{existsSync as jn,readFileSync as Mn,rmSync as Hn}from"fs";import{homedir as me}from"os";import{dirname as F,join as x,sep as j}from"path";import{fileURLToPath as Bn}from"url";function Fn(){if(process.env.XDG_CACHE_HOME)return x(process.env.XDG_CACHE_HOME,"opencode");if(process.platform==="darwin")return x(me(),"Library","Caches","opencode");if(process.platform==="win32")return x(process.env.LOCALAPPDATA??x(me(),"AppData","Local"),"opencode");return x(me(),".cache","opencode")}function Wn(e){try{return JSON.parse(Mn(e,"utf8"))}catch{return}}function Gn(e){return e.split("/").filter(Boolean)}function zn(e,t){let n=Gn(t),r=e;while(r!==F(r)){if(n.every((i,o)=>{let a=r.split(j);return a[a.length-n.length+o]===i})){if(r.split(j).at(-(n.length+1))==="node_modules")return r}r=F(r)}}function Jn(e,t){let n=t.endsWith(j)?t:`${t}${j}`;return e===t||e.startsWith(n)}function Vn(e,t){return e.split(j).join("/").endsWith(`${t}@latest`)}function Yn({cacheDir:e=Fn(),currentVersion:t,latestVersion:n,moduleUrl:r,packageName:i}){if(!t||!n||t===n)return{reason:"up-to-date",removed:[]};let o;try{o=r.startsWith("file://")?Bn(r):r}catch{return{reason:"invalid-module-url",removed:[]}}let a=zn(o,i);if(!a)return{reason:"package-dir-not-found",removed:[]};let s=F(F(a));if(s.split(j).at(-1)!=="node_modules")return{reason:"node-modules-not-found",removed:[]};let u=F(s),p=x(e,"packages");if(!Jn(u,p))return{reason:"outside-opencode-packages-cache",removed:[]};if(!Vn(u,i))return{reason:"not-latest-sandbox",removed:[]};let l=Wn(x(a,"package.json"));if(l?.name!==i||l.version!==t)return{reason:"version-mismatch",removed:[]};if(!jn(u))return{reason:"sandbox-missing",removed:[]};return Hn(u,{force:!0,recursive:!0}),{removed:[u]}}async function Qn(e){try{let t=await fetch(`https://registry.npmjs.org/-/package/${encodeURIComponent(e)}/dist-tags`,{headers:{accept:"application/json"}});if(!t.ok)return;let n=await t.json();return typeof n.latest==="string"?n.latest:void 0}catch{return}}async function ot({fetchLatestVersion:e,notify:t,...n}){let r=await(e??(()=>Qn(n.packageName)))();if(!r)return{reason:"latest-version-unavailable",removed:[]};let i=Yn({...n,latestVersion:r});if(i.removed.length>0)await t?.(`opencode-balancer v${r} is ready. Restart opencode to update from v${n.currentVersion}.`);return i}function Kn(e){return e.match(/(?:[^\s"]+|"[^"]*")+/g)?.map((t)=>t.replace(/^"|"$/g,""))??[]}function at(e,t){let[n="help",...r]=Kn(t);if(["help","--help","-h"].includes(n))return["Balancer is TUI-first. Use fallback commands only for compatibility or troubleshooting.","Fallback commands: list, status, use <provider> <alias>, active <provider>."].join(`
164
+ `);if(n==="list"){let i=y(e);if(i.length===0)return"No accounts saved.";return i.map((o)=>`${o.providerID}/${o.alias}`).join(`
165
+ `)}if(n==="status")return`accounts=${y(e).length} pending=${Q(e).length}`;if(n==="use"){let[i,o]=r;if(!i||!o)return"Usage: /balancer use <provider> <alias>";try{let a=R(e,i,o);return`Active account changed to ${i}/${a.alias}`}catch(a){return a instanceof Error?a.message:"Account not found."}}if(n==="active"){let[i]=r;if(!i)return"Usage: /balancer active <provider>";let o=A(e,i);if(!o)return"No active account for provider.";return`${i}/${o.alias}`}return`Unknown command: ${n}. Use /balancer help.`}var W="x-opencode-balancer-request",st="opencodeBalancerCommand",ut=new Set([429,500,502,503,504,529]),he=new Map;function ct(e,t){he.set(e,t)}function dt(e){let t=he.get(e);return he.delete(e),t}function pt(e,t,n,r=60000){let i=E(e,t,n);if(!i)return;let o=c();e.query(`UPDATE accounts
166
166
  SET failures = failures + 1,
167
167
  rate_limited_until = ?,
168
168
  updated_at = ?
169
- WHERE provider_id = ? AND alias = ?`).run(o+r,o,t,i.alias)}function at(e,t,n){let r=c(),i=N(n);return h(e,t).find((o)=>{if(o.alias===i)return!1;if(o.disabled)return!1;return!o.rateLimitedUntil||o.rateLimitedUntil<=r})}var st=!1;function Nn(e){return Array.from(e.entries()).map(([t,n])=>[t.toLowerCase(),n])}function On(e,t,n={}){let r=t.auth,i=Nn(e);if(r.type==="oauth"){if(n.preserveExistingOAuth&&e.has("authorization"))return;e.set("authorization",`Bearer ${r.access}`);return}if(r.type==="wellknown"){if(e.has("authorization"))e.set("authorization",`Bearer ${r.token}`);else e.set(r.key,r.token);return}let o=["authorization","x-api-key","api-key","x-goog-api-key","x-stainless-api-key","anthropic-api-key","cohere-api-key"],a=!1;for(let s of o){let u=i.find(([l])=>l===s)?.[1];if(!u)continue;e.set(s,s==="authorization"&&u.toLowerCase().startsWith("bearer ")?`Bearer ${r.key}`:r.key),a=!0}if(!a)e.set("authorization",`Bearer ${r.key}`)}function $n(e,t){if(t?.headers)return new Headers(t.headers);if(typeof Request<"u"&&e instanceof Request)return new Headers(e.headers);return new Headers}function ut(e,t,n){if(typeof Request<"u"&&e instanceof Request)return[new Request(e,{...t,headers:n}),void 0];return[e,{...t,headers:n}]}function Un(e){let t=e.headers.get("retry-after");if(!t)return 60000;let n=Number(t);if(Number.isFinite(n))return Math.max(1000,n*1000);let r=Date.parse(t);if(Number.isFinite(r))return Math.max(1000,r-Date.now());return 60000}function ct(e,t){if(st)return;st=!0;let n=globalThis.fetch.bind(globalThis);globalThis.fetch=async(r,i)=>{let o=$n(r,i),a=o.get(H);if(!a)return n(r,i);let s=it(a);if(o.delete(H),!s?.account){let[y,A]=ut(r,i,o);return n(y,A)}let u=s.account,l=3;for(let y=0;y<l;y++){let A=new Headers(o);On(A,u,{preserveExistingOAuth:y===0});let[g,f]=ut(r,i,A),m=await n(g,f);if(!nt.has(m.status))return m;if(ot(e,u.providerID,u.alias,Un(m)),!w(e))return m;if(y===l-1)return m;let _=at(e,u.providerID,u.alias);if(!_)return m;u=D(e,_.providerID,_.alias),await Z(t,u.providerID,u.auth,e),await L(t,`Balancer: ${s.providerID}/${s.account.alias} is rate limited. Switching to ${u.alias}.`,"warning")}throw Error("Balancer retry loop exited unexpectedly")}}function qn(e){if(!e.command?.balancer)return}function ft(e,t){try{return et(e,t)}catch(n){return n instanceof Error?n.message:"Balancer command failed."}}function Ln({db:e,client:t}){return{"chat.headers":async(n,r)=>{let i=n.model.providerID,o=v(e,i);if(!o)return;if(o.auth.type==="oauth")await Z(t,i,o.auth,e);let a=crypto.randomUUID();rt(a,{account:o,providerID:i}),r.headers[H]=a},"chat.message":async(n,r)=>{if(w(e)){let a=G(e,void 0,r.message.model?.providerID);if(!a)return;D(e,a.providerID,a.account.alias),r.message.model={modelID:a.modelID,providerID:a.providerID};return}if(r.message.model?.providerID&&r.message.model?.modelID)return;let i=O(e);if(!i)return;let o=W(e,i.providerID);if(!o)return;r.message.model={modelID:o.modelID,providerID:o.providerID}},"command.execute.before":async(n,r)=>{if(n.command!=="balancer")return;let i=ft(e,n.arguments);throw r.parts.length=0,await L(t,i.split(`
169
+ WHERE provider_id = ? AND alias = ?`).run(o+r,o,t,i.alias)}function lt(e,t,n){let r=c(),i=O(n);return y(e,t).find((o)=>{if(o.alias===i)return!1;if(o.disabled)return!1;return!o.rateLimitedUntil||o.rateLimitedUntil<=r})}var ft=!1;function Xn(e){return Array.from(e.entries()).map(([t,n])=>[t.toLowerCase(),n])}function Zn(e,t,n={}){let r=t.auth,i=Xn(e);if(r.type==="oauth"){if(n.preserveExistingOAuth&&e.has("authorization"))return;e.set("authorization",`Bearer ${r.access}`);return}if(r.type==="wellknown"){if(e.has("authorization"))e.set("authorization",`Bearer ${r.token}`);else e.set(r.key,r.token);return}let o=["authorization","x-api-key","api-key","x-goog-api-key","x-stainless-api-key","anthropic-api-key","cohere-api-key"],a=!1;for(let s of o){let u=i.find(([p])=>p===s)?.[1];if(!u)continue;e.set(s,s==="authorization"&&u.toLowerCase().startsWith("bearer ")?`Bearer ${r.key}`:r.key),a=!0}if(!a)e.set("authorization",`Bearer ${r.key}`)}function er(e,t){if(t?.headers)return new Headers(t.headers);if(typeof Request<"u"&&e instanceof Request)return new Headers(e.headers);return new Headers}function gt(e,t,n){if(typeof Request<"u"&&e instanceof Request)return[new Request(e,{...t,headers:n}),void 0];return[e,{...t,headers:n}]}function tr(e){let t=e.headers.get("retry-after");if(!t)return 60000;let n=Number(t);if(Number.isFinite(n))return Math.max(1000,n*1000);let r=Date.parse(t);if(Number.isFinite(r))return Math.max(1000,r-Date.now());return 60000}function mt(e,t){if(ft)return;ft=!0;let n=globalThis.fetch.bind(globalThis);globalThis.fetch=async(r,i)=>{let o=er(r,i),a=o.get(W);if(!a)return n(r,i);let s=dt(a);if(o.delete(W),!s?.account){let[l,v]=gt(r,i,o);return n(l,v)}let u=s.account,p=3;for(let l=0;l<p;l++){let v=new Headers(o);Zn(v,u,{preserveExistingOAuth:l===0});let[m,f]=gt(r,i,v),h=await n(m,f);if(!ut.has(h.status))return h;if(pt(e,u.providerID,u.alias,tr(h)),!D(e))return h;if(l===p-1)return h;let _=lt(e,u.providerID,u.alias);if(!_)return h;u=R(e,_.providerID,_.alias),await ne(t,u.providerID,u.auth,e),await L(t,`Balancer: ${s.providerID}/${s.account.alias} is rate limited. Switching to ${u.alias}.`,"warning")}throw Error("Balancer retry loop exited unexpectedly")}}var nr="@thelioo/opencode-balancer";function rr(e){if(!e.command?.balancer)return}function yt(e,t){try{return at(e,t)}catch(n){return n instanceof Error?n.message:"Balancer command failed."}}function ir({db:e,client:t}){return{"chat.headers":async(n,r)=>{let i=n.model.providerID,o=A(e,i);if(!o)return;if(o.auth.type==="oauth")await ne(t,i,o.auth,e);let a=crypto.randomUUID();ct(a,{account:o,providerID:i}),r.headers[W]=a},"chat.message":async(n,r)=>{if(D(e)){let a=V(e,void 0,r.message.model?.providerID);if(!a)return;R(e,a.providerID,a.account.alias),r.message.model={modelID:a.modelID,providerID:a.providerID};return}if(r.message.model?.providerID&&r.message.model?.modelID)return;let i=$(e);if(!i)return;let o=J(e,i.providerID);if(!o)return;r.message.model={modelID:o.modelID,providerID:o.providerID}},"command.execute.before":async(n,r)=>{if(n.command!=="balancer")return;let i=yt(e,n.arguments);throw r.parts.length=0,await L(t,i.split(`
170
170
  `)[0]??i,"info"),Error(`[balancer]
171
- ${i}`)},config:async(n)=>{qn(n)},"experimental.chat.messages.transform":async(n,r)=>{r.messages=r.messages.filter((i)=>{return!i.parts.some((o)=>{return o?.metadata?.[tt]===!0})})},tool:{balancer_command:dt({args:{command:dt.schema.string().describe("Command arguments for /balancer.")},description:"Run fallback account balancer commands.",execute:async(n)=>ft(e,n.command)})}}}var pt=async({client:e})=>{let t=ee(X());return te(t),ct(t,e),Ln({client:e,db:t})};var le=pt;le.id="opencode-balancer";le.tui=Ze.tui;var Gi=le;export{Gi as default};
171
+ ${i}`)},config:async(n)=>{rr(n)},"experimental.chat.messages.transform":async(n,r)=>{r.messages=r.messages.filter((i)=>{return!i.parts.some((o)=>{return o?.metadata?.[st]===!0})})},tool:{balancer_command:ht({args:{command:ht.schema.string().describe("Command arguments for /balancer.")},description:"Run fallback account balancer commands.",execute:async(n)=>yt(e,n.command)})}}}var vt=async({client:e})=>{let t=re(te());return ie(t),mt(t,e),ot({currentVersion:it.version,moduleUrl:import.meta.url,notify:(n)=>L(e,n,"success"),packageName:nr}).catch(()=>{}),ir({client:e,db:t})};var ye=vt;ye.id="opencode-balancer";ye.tui=rt.tui;var _o=ye;export{_o as default};
172
172
 
173
- //# debugId=9428C75939233CC164756E2164756E21
173
+ //# debugId=1AC55E9564FB24BE64756E2164756E21
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/tui/tui.tsx","../src/core/time.ts","../src/core/accounts.ts","../src/core/priority.ts","../src/core/events.ts","../src/core/native-auth-suppression.ts","../src/core/pending.ts","../src/core/usage/redact.ts","../src/core/usage/providers/copilot.ts","../src/core/usage/providers/openai.ts","../src/core/usage/index.ts","../src/core/usage/store.ts","../src/tui/actions.ts","../src/tui/native-model-apply.ts","../src/tui/balancer-bar-sync.ts","../src/core/native-connect.ts","../src/server/auth-watcher.ts","../src/core/path.ts","../src/server/native.ts","../src/tui/connect.ts","../src/tui/provider-models.ts","../src/tui/selected-account-bar-sync.ts","../src/tui/state.ts","../src/core/database.ts","../src/core/schema.ts","../src/tui/usage-auto-refresh.ts","../src/server/index.ts","../src/server/commands.ts","../src/server/request-balancer.ts","../src/server/fetch-patch.ts","../src/index.ts"],"mappings":"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","debugId":"9428C75939233CC164756E2164756E21","names":[]}
1
+ {"version":3,"sources":["../src/tui/tui.tsx","../src/core/time.ts","../src/core/accounts.ts","../src/core/priority.ts","../src/core/events.ts","../src/core/native-auth-suppression.ts","../src/core/pending.ts","../src/core/usage/redact.ts","../src/core/usage/providers/copilot.ts","../src/core/usage/providers/openai.ts","../src/core/usage/index.ts","../src/core/usage/store.ts","../src/tui/actions.ts","../src/tui/native-model-apply.ts","../src/tui/balancer-bar-sync.ts","../src/core/native-connect.ts","../src/server/auth-watcher.ts","../src/core/path.ts","../src/server/native.ts","../src/tui/connect.ts","../src/tui/provider-models.ts","../src/tui/selected-account-bar-sync.ts","../src/tui/state.ts","../src/core/database.ts","../src/core/schema.ts","../src/tui/usage-auto-refresh.ts","../src/server/index.ts","../src/server/cache-update.ts","../src/server/commands.ts","../src/server/request-balancer.ts","../src/server/fetch-patch.ts","../src/index.ts"],"mappings":"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","debugId":"1AC55E9564FB24BE64756E2164756E21","names":[]}
@@ -0,0 +1,177 @@
1
+ import { existsSync, readFileSync, rmSync } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import { dirname, join, sep } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+
6
+ type PackageJson = {
7
+ name?: string;
8
+ version?: string;
9
+ };
10
+
11
+ export type CacheInvalidationInput = {
12
+ cacheDir?: string;
13
+ currentVersion: string;
14
+ latestVersion: string;
15
+ moduleUrl: string;
16
+ packageName: string;
17
+ };
18
+
19
+ export type CacheInvalidationResult = {
20
+ removed: string[];
21
+ reason?: string;
22
+ };
23
+
24
+ export type CacheUpdateCheckInput = Omit<
25
+ CacheInvalidationInput,
26
+ "latestVersion"
27
+ > & {
28
+ fetchLatestVersion?: () => Promise<string | undefined>;
29
+ notify?: (message: string) => Promise<unknown>;
30
+ };
31
+
32
+ function opencodeCacheDir() {
33
+ if (process.env.XDG_CACHE_HOME)
34
+ return join(process.env.XDG_CACHE_HOME, "opencode");
35
+ if (process.platform === "darwin") {
36
+ return join(homedir(), "Library", "Caches", "opencode");
37
+ }
38
+ if (process.platform === "win32") {
39
+ return join(
40
+ process.env.LOCALAPPDATA ?? join(homedir(), "AppData", "Local"),
41
+ "opencode",
42
+ );
43
+ }
44
+ return join(homedir(), ".cache", "opencode");
45
+ }
46
+
47
+ function readPackageJson(file: string): PackageJson | undefined {
48
+ try {
49
+ return JSON.parse(readFileSync(file, "utf8")) as PackageJson;
50
+ } catch {
51
+ return;
52
+ }
53
+ }
54
+
55
+ function packagePathSegments(packageName: string) {
56
+ return packageName.split("/").filter(Boolean);
57
+ }
58
+
59
+ function findInstalledPackageDir(file: string, packageName: string) {
60
+ const segments = packagePathSegments(packageName);
61
+ let current = file;
62
+ while (current !== dirname(current)) {
63
+ if (
64
+ segments.every((segment, index) => {
65
+ const parts = current.split(sep);
66
+ return parts[parts.length - segments.length + index] === segment;
67
+ })
68
+ ) {
69
+ if (current.split(sep).at(-(segments.length + 1)) === "node_modules") {
70
+ return current;
71
+ }
72
+ }
73
+ current = dirname(current);
74
+ }
75
+ }
76
+
77
+ function isPathInside(child: string, parent: string) {
78
+ const normalizedParent = parent.endsWith(sep) ? parent : `${parent}${sep}`;
79
+ return child === parent || child.startsWith(normalizedParent);
80
+ }
81
+
82
+ function isLatestSandbox(sandboxRoot: string, packageName: string) {
83
+ return sandboxRoot.split(sep).join("/").endsWith(`${packageName}@latest`);
84
+ }
85
+
86
+ export function invalidateOutdatedPackageCache({
87
+ cacheDir = opencodeCacheDir(),
88
+ currentVersion,
89
+ latestVersion,
90
+ moduleUrl,
91
+ packageName,
92
+ }: CacheInvalidationInput): CacheInvalidationResult {
93
+ if (!currentVersion || !latestVersion || currentVersion === latestVersion) {
94
+ return { reason: "up-to-date", removed: [] };
95
+ }
96
+
97
+ let moduleFile: string;
98
+ try {
99
+ moduleFile = moduleUrl.startsWith("file://")
100
+ ? fileURLToPath(moduleUrl)
101
+ : moduleUrl;
102
+ } catch {
103
+ return { reason: "invalid-module-url", removed: [] };
104
+ }
105
+
106
+ const installedPackageDir = findInstalledPackageDir(moduleFile, packageName);
107
+ if (!installedPackageDir)
108
+ return { reason: "package-dir-not-found", removed: [] };
109
+
110
+ const nodeModulesDir = dirname(dirname(installedPackageDir));
111
+ if (nodeModulesDir.split(sep).at(-1) !== "node_modules") {
112
+ return { reason: "node-modules-not-found", removed: [] };
113
+ }
114
+
115
+ const sandboxRoot = dirname(nodeModulesDir);
116
+ const packagesDir = join(cacheDir, "packages");
117
+ if (!isPathInside(sandboxRoot, packagesDir)) {
118
+ return { reason: "outside-opencode-packages-cache", removed: [] };
119
+ }
120
+ if (!isLatestSandbox(sandboxRoot, packageName)) {
121
+ return { reason: "not-latest-sandbox", removed: [] };
122
+ }
123
+
124
+ const packageJson = readPackageJson(
125
+ join(installedPackageDir, "package.json"),
126
+ );
127
+ if (
128
+ packageJson?.name !== packageName ||
129
+ packageJson.version !== currentVersion
130
+ ) {
131
+ return { reason: "version-mismatch", removed: [] };
132
+ }
133
+
134
+ if (!existsSync(sandboxRoot))
135
+ return { reason: "sandbox-missing", removed: [] };
136
+ rmSync(sandboxRoot, { force: true, recursive: true });
137
+ return { removed: [sandboxRoot] };
138
+ }
139
+
140
+ export async function fetchNpmLatestVersion(packageName: string) {
141
+ try {
142
+ const response = await fetch(
143
+ `https://registry.npmjs.org/-/package/${encodeURIComponent(packageName)}/dist-tags`,
144
+ { headers: { accept: "application/json" } },
145
+ );
146
+ if (!response.ok) return;
147
+ const data = (await response.json()) as { latest?: unknown };
148
+ return typeof data.latest === "string" ? data.latest : undefined;
149
+ } catch {
150
+ return;
151
+ }
152
+ }
153
+
154
+ export async function checkAndInvalidateOutdatedPackageCache({
155
+ fetchLatestVersion,
156
+ notify,
157
+ ...input
158
+ }: CacheUpdateCheckInput): Promise<CacheInvalidationResult> {
159
+ const latestVersion = await (
160
+ fetchLatestVersion ?? (() => fetchNpmLatestVersion(input.packageName))
161
+ )();
162
+ if (!latestVersion)
163
+ return { reason: "latest-version-unavailable", removed: [] };
164
+
165
+ const result = invalidateOutdatedPackageCache({
166
+ ...input,
167
+ latestVersion,
168
+ });
169
+
170
+ if (result.removed.length > 0) {
171
+ await notify?.(
172
+ `opencode-balancer v${latestVersion} is ready. Restart opencode to update from v${input.currentVersion}.`,
173
+ );
174
+ }
175
+
176
+ return result;
177
+ }
@@ -5,6 +5,7 @@ import {
5
5
  type Plugin,
6
6
  tool,
7
7
  } from "@opencode-ai/plugin";
8
+ import packageJson from "../../package.json" with { type: "json" };
8
9
  import {
9
10
  getActiveAccount,
10
11
  getSelectedAccount,
@@ -15,6 +16,7 @@ import { openBalancerDatabase } from "../core/database";
15
16
  import { storePath } from "../core/path";
16
17
  import { getBalancingEnabled, resolveActiveSelection } from "../core/priority";
17
18
  import { migrate } from "../core/schema";
19
+ import { checkAndInvalidateOutdatedPackageCache } from "./cache-update";
18
20
  import { runFallbackBalancerCommand } from "./commands";
19
21
  import { installFetchPatch } from "./fetch-patch";
20
22
  import { setNativeAuth, showToast } from "./native";
@@ -24,6 +26,8 @@ import {
24
26
  setPendingRequest,
25
27
  } from "./request-balancer";
26
28
 
29
+ const PACKAGE_NAME = "@thelioo/opencode-balancer";
30
+
27
31
  export function configureFallbackCommand(cfg: Config) {
28
32
  if (!cfg.command?.balancer) return;
29
33
  }
@@ -129,6 +133,12 @@ export const serverPlugin = (async ({ client }) => {
129
133
  const db = openBalancerDatabase(storePath());
130
134
  migrate(db);
131
135
  installFetchPatch(db, client);
136
+ checkAndInvalidateOutdatedPackageCache({
137
+ currentVersion: packageJson.version,
138
+ moduleUrl: import.meta.url,
139
+ notify: (message) => showToast(client, message, "success"),
140
+ packageName: PACKAGE_NAME,
141
+ }).catch(() => {});
132
142
 
133
143
  return createServerHooks({ client, db });
134
144
  }) satisfies Plugin;
@@ -9,6 +9,7 @@ import {
9
9
  onMount,
10
10
  Show,
11
11
  } from "solid-js";
12
+ import packageJson from "../../../package.json" with { type: "json" };
12
13
  import { listAccounts } from "../../core/accounts";
13
14
  import { getBalancingEnabled, setBalancingEnabled } from "../../core/priority";
14
15
  import { getUsageSnapshot } from "../../core/usage/store";
@@ -314,7 +315,7 @@ export function Dashboard(props: {
314
315
  >
315
316
  <box flexDirection="column" flexShrink={0} gap={0} paddingBottom={1}>
316
317
  <text fg={theme().primary} overflow="hidden" truncate wrapMode="none">
317
- opencode-balancer{compact() ? "" : " control center"}
318
+ opencode-balancer v{packageJson.version}
318
319
  </text>
319
320
  <Show when={!compact()}>
320
321
  <text
package/package.json CHANGED
@@ -59,5 +59,5 @@
59
59
  "version": "changeset version"
60
60
  },
61
61
  "type": "module",
62
- "version": "0.2.2"
62
+ "version": "0.2.4"
63
63
  }