@thelioo/opencode-balancer 0.1.8 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/INSTALL.txt +53 -25
- package/README.md +95 -51
- package/dist/core/accounts.ts +404 -0
- package/dist/core/database.ts +67 -0
- package/dist/core/events.ts +75 -0
- package/dist/core/native-auth-suppression.ts +36 -0
- package/dist/core/native-connect.ts +31 -0
- package/dist/core/path.ts +34 -0
- package/dist/core/pending.ts +351 -0
- package/dist/core/priority.ts +193 -0
- package/dist/core/schema.ts +439 -0
- package/dist/core/time.ts +3 -0
- package/dist/core/types.ts +72 -0
- package/dist/core/usage/index.ts +23 -0
- package/dist/core/usage/providers/copilot.ts +243 -0
- package/dist/core/usage/providers/openai.ts +179 -0
- package/dist/core/usage/redact.ts +80 -0
- package/dist/core/usage/store.ts +66 -0
- package/dist/core/usage/types.ts +24 -0
- package/dist/index.js +173 -4
- package/dist/index.js.map +1 -1
- package/dist/server/auth-watcher.ts +318 -0
- package/dist/server/commands.ts +58 -0
- package/dist/server/fetch-patch.ts +162 -0
- package/dist/server/index.ts +134 -0
- package/dist/server/native.ts +49 -0
- package/dist/server/request-balancer.ts +67 -0
- package/dist/tui/actions.ts +176 -112
- package/dist/tui/balancer-bar-sync.ts +55 -45
- package/dist/tui/components/alias-dialog.tsx +71 -56
- package/dist/tui/components/dashboard.tsx +530 -358
- package/dist/tui/components/priority-screen.tsx +389 -267
- package/dist/tui/components/provider-model-dialog.tsx +71 -64
- package/dist/tui/components/rename-dialog.tsx +35 -28
- package/dist/tui/components/sidebar.tsx +103 -79
- package/dist/tui/components/status-indicator.tsx +78 -59
- package/dist/tui/components/usage-bar.tsx +18 -7
- package/dist/tui/components/usage-display.tsx +32 -16
- package/dist/tui/connect.ts +104 -73
- package/dist/tui/dashboard-keys.ts +53 -41
- package/dist/tui/native-model-apply.ts +45 -36
- package/dist/tui/priority-keys.ts +44 -36
- package/dist/tui/provider-models.ts +32 -25
- package/dist/tui/responsive.ts +10 -7
- package/dist/tui/selected-account-bar-sync.ts +23 -23
- package/dist/tui/selection-colors.ts +38 -30
- package/dist/tui/state.ts +61 -44
- package/dist/tui/status-format.ts +24 -20
- package/dist/tui/tui.js +165 -153
- package/dist/tui/tui.js.map +1 -1
- package/dist/tui/tui.tsx +194 -144
- package/dist/tui/usage-auto-refresh.ts +52 -45
- package/dist/tui/usage-format.ts +9 -9
- package/package.json +61 -52
- package/dist/core/accounts.d.ts +0 -14
- package/dist/core/accounts.js +0 -260
- package/dist/core/accounts.js.map +0 -1
- package/dist/core/database.d.ts +0 -4
- package/dist/core/database.js +0 -69
- package/dist/core/database.js.map +0 -1
- package/dist/core/events.d.ts +0 -18
- package/dist/core/events.js +0 -39
- package/dist/core/events.js.map +0 -1
- package/dist/core/native-auth-suppression.d.ts +0 -3
- package/dist/core/native-auth-suppression.js +0 -19
- package/dist/core/native-auth-suppression.js.map +0 -1
- package/dist/core/native-connect.d.ts +0 -4
- package/dist/core/native-connect.js +0 -19
- package/dist/core/native-connect.js.map +0 -1
- package/dist/core/path.d.ts +0 -4
- package/dist/core/path.js +0 -26
- package/dist/core/path.js.map +0 -1
- package/dist/core/pending.d.ts +0 -9
- package/dist/core/pending.js +0 -237
- package/dist/core/pending.js.map +0 -1
- package/dist/core/priority.d.ts +0 -20
- package/dist/core/priority.js +0 -120
- package/dist/core/priority.js.map +0 -1
- package/dist/core/schema.d.ts +0 -2
- package/dist/core/schema.js +0 -265
- package/dist/core/schema.js.map +0 -1
- package/dist/core/time.d.ts +0 -1
- package/dist/core/time.js +0 -4
- package/dist/core/time.js.map +0 -1
- package/dist/core/types.d.ts +0 -59
- package/dist/core/types.js +0 -2
- package/dist/core/types.js.map +0 -1
- package/dist/core/usage/index.d.ts +0 -4
- package/dist/core/usage/index.js +0 -16
- package/dist/core/usage/index.js.map +0 -1
- package/dist/core/usage/providers/copilot.d.ts +0 -2
- package/dist/core/usage/providers/copilot.js +0 -169
- package/dist/core/usage/providers/copilot.js.map +0 -1
- package/dist/core/usage/providers/openai.d.ts +0 -2
- package/dist/core/usage/providers/openai.js +0 -133
- package/dist/core/usage/providers/openai.js.map +0 -1
- package/dist/core/usage/redact.d.ts +0 -3
- package/dist/core/usage/redact.js +0 -67
- package/dist/core/usage/redact.js.map +0 -1
- package/dist/core/usage/store.d.ts +0 -4
- package/dist/core/usage/store.js +0 -31
- package/dist/core/usage/store.js.map +0 -1
- package/dist/core/usage/types.d.ts +0 -21
- package/dist/core/usage/types.js +0 -2
- package/dist/core/usage/types.js.map +0 -1
- package/dist/index.d.ts +0 -5
- package/dist/server/auth-watcher.d.ts +0 -32
- package/dist/server/auth-watcher.js +0 -227
- package/dist/server/auth-watcher.js.map +0 -1
- package/dist/server/commands.d.ts +0 -2
- package/dist/server/commands.js +0 -46
- package/dist/server/commands.js.map +0 -1
- package/dist/server/fetch-patch.d.ts +0 -3
- package/dist/server/fetch-patch.js +0 -118
- package/dist/server/fetch-patch.js.map +0 -1
- package/dist/server/index.d.ts +0 -8
- package/dist/server/index.js +0 -94
- package/dist/server/index.js.map +0 -1
- package/dist/server/native.d.ts +0 -6
- package/dist/server/native.js +0 -35
- package/dist/server/native.js.map +0 -1
- package/dist/server/request-balancer.d.ts +0 -16
- package/dist/server/request-balancer.js +0 -43
- package/dist/server/request-balancer.js.map +0 -1
- package/dist/tui/actions.d.ts +0 -41
- package/dist/tui/actions.js +0 -92
- package/dist/tui/actions.js.map +0 -1
- package/dist/tui/balancer-bar-sync.d.ts +0 -19
- package/dist/tui/balancer-bar-sync.js +0 -45
- package/dist/tui/balancer-bar-sync.js.map +0 -1
- package/dist/tui/components/alias-dialog.d.ts +0 -4
- package/dist/tui/components/dashboard.d.ts +0 -12
- package/dist/tui/components/priority-screen.d.ts +0 -9
- package/dist/tui/components/provider-model-dialog.d.ts +0 -14
- package/dist/tui/components/rename-dialog.d.ts +0 -4
- package/dist/tui/components/sidebar.d.ts +0 -10
- package/dist/tui/components/status-indicator.d.ts +0 -9
- package/dist/tui/components/usage-bar.d.ts +0 -8
- package/dist/tui/components/usage-display.d.ts +0 -10
- package/dist/tui/connect.d.ts +0 -30
- package/dist/tui/connect.js +0 -75
- package/dist/tui/connect.js.map +0 -1
- package/dist/tui/dashboard-keys.d.ts +0 -45
- package/dist/tui/dashboard-keys.js +0 -44
- package/dist/tui/dashboard-keys.js.map +0 -1
- package/dist/tui/native-model-apply.d.ts +0 -21
- package/dist/tui/native-model-apply.js +0 -53
- package/dist/tui/native-model-apply.js.map +0 -1
- package/dist/tui/priority-keys.d.ts +0 -40
- package/dist/tui/priority-keys.js +0 -38
- package/dist/tui/priority-keys.js.map +0 -1
- package/dist/tui/provider-models.d.ts +0 -19
- package/dist/tui/provider-models.js +0 -17
- package/dist/tui/provider-models.js.map +0 -1
- package/dist/tui/responsive.d.ts +0 -9
- package/dist/tui/responsive.js +0 -13
- package/dist/tui/responsive.js.map +0 -1
- package/dist/tui/selected-account-bar-sync.d.ts +0 -10
- package/dist/tui/selected-account-bar-sync.js +0 -26
- package/dist/tui/selected-account-bar-sync.js.map +0 -1
- package/dist/tui/selection-colors.d.ts +0 -10
- package/dist/tui/selection-colors.js +0 -38
- package/dist/tui/selection-colors.js.map +0 -1
- package/dist/tui/state.d.ts +0 -14
- package/dist/tui/state.js +0 -46
- package/dist/tui/state.js.map +0 -1
- package/dist/tui/status-format.d.ts +0 -15
- package/dist/tui/status-format.js +0 -17
- package/dist/tui/status-format.js.map +0 -1
- package/dist/tui/tui.d.ts +0 -7
- package/dist/tui/usage-auto-refresh.d.ts +0 -16
- package/dist/tui/usage-auto-refresh.js +0 -46
- package/dist/tui/usage-auto-refresh.js.map +0 -1
- package/dist/tui/usage-format.d.ts +0 -2
- package/dist/tui/usage-format.js +0 -17
- package/dist/tui/usage-format.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,4 +1,173 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
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)
|
|
3
|
+
VALUES (?, ?, ?, '{}')
|
|
4
|
+
ON CONFLICT(provider_id) DO UPDATE SET
|
|
5
|
+
active_alias = excluded.active_alias,
|
|
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 (
|
|
8
|
+
provider_id,
|
|
9
|
+
alias,
|
|
10
|
+
auth_json,
|
|
11
|
+
auth_type,
|
|
12
|
+
created_at,
|
|
13
|
+
updated_at,
|
|
14
|
+
failures,
|
|
15
|
+
disabled
|
|
16
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
17
|
+
ON CONFLICT(provider_id, alias) DO UPDATE SET
|
|
18
|
+
auth_json = excluded.auth_json,
|
|
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,
|
|
21
|
+
last_used_at, rate_limited_until, failures, disabled
|
|
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,
|
|
24
|
+
last_used_at, rate_limited_until, failures, disabled
|
|
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
|
+
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
|
|
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
|
|
30
|
+
FROM provider_state
|
|
31
|
+
WHERE active_alias IS NOT NULL
|
|
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)
|
|
34
|
+
VALUES (?, ?, ?, ?, ?)
|
|
35
|
+
ON CONFLICT(provider_id) DO UPDATE SET
|
|
36
|
+
position = excluded.position,
|
|
37
|
+
model_id = excluded.model_id,
|
|
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
|
|
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 jt(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 jt(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 Mt(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=Mt(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 (
|
|
44
|
+
provider_id, alias, fetched_at, confidence, normalized_json, raw_redacted_json, error
|
|
45
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
46
|
+
ON CONFLICT(provider_id, alias) DO UPDATE SET
|
|
47
|
+
fetched_at = excluded.fetched_at,
|
|
48
|
+
confidence = excluded.confidence,
|
|
49
|
+
normalized_json = excluded.normalized_json,
|
|
50
|
+
raw_redacted_json = excluded.raw_redacted_json,
|
|
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
|
+
SET rate_limited_until = NULL,
|
|
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 j(e){return Boolean(e)&&typeof e==="object"&&!Array.isArray(e)}function on(e){if(e===void 0)return{metadata:void 0,ok:!0};if(!j(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(!j(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 je(e){let t;try{t=JSON.parse(e)}catch{return{ok:!1}}if(!j(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 je(e);let t=Le();if(!nn(t))return{auth:{},ok:!0};try{return je(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 j(n)?n:void 0}catch{return}}function Me(e){if(e.accountId)return e.accountId;let t=sn(e.access)?.["https://api.openai.com/auth"];if(!j(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=Me(e),r=Me(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 M=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=M.get(e);if(t){if(yn(t))return t;M.delete(e)}gn(mn(e),{recursive:!0});let n=new pn(e);try{return n.exec("PRAGMA journal_mode = WAL; PRAGMA foreign_keys = ON;"),An(e),M.set(e,n),n}catch(r){try{n.close()}catch{}throw r}}function Ye(e){let t=M.get(e);if(!t)return;M.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(`
|
|
56
|
+
DROP TABLE IF EXISTS accounts_new;
|
|
57
|
+
CREATE TABLE accounts_new (
|
|
58
|
+
provider_id TEXT NOT NULL,
|
|
59
|
+
alias TEXT NOT NULL,
|
|
60
|
+
auth_json TEXT NOT NULL,
|
|
61
|
+
auth_type TEXT NOT NULL,
|
|
62
|
+
created_at INTEGER NOT NULL,
|
|
63
|
+
updated_at INTEGER NOT NULL,
|
|
64
|
+
last_used_at INTEGER,
|
|
65
|
+
rate_limited_until INTEGER,
|
|
66
|
+
failures INTEGER NOT NULL DEFAULT 0,
|
|
67
|
+
disabled INTEGER NOT NULL DEFAULT 0,
|
|
68
|
+
PRIMARY KEY (provider_id, alias)
|
|
69
|
+
);
|
|
70
|
+
`);let n=e.query(`INSERT OR REPLACE INTO accounts_new (
|
|
71
|
+
provider_id, alias, auth_json, auth_type, created_at, updated_at,
|
|
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(`
|
|
74
|
+
DROP TABLE IF EXISTS accounts;
|
|
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(`
|
|
77
|
+
DROP TABLE IF EXISTS provider_state_new;
|
|
78
|
+
CREATE TABLE provider_state_new (
|
|
79
|
+
provider_id TEXT PRIMARY KEY,
|
|
80
|
+
active_alias TEXT,
|
|
81
|
+
updated_at INTEGER NOT NULL,
|
|
82
|
+
metadata_json TEXT NOT NULL DEFAULT '{}'
|
|
83
|
+
);
|
|
84
|
+
`);let n=e.query(`INSERT OR REPLACE INTO provider_state_new (provider_id, active_alias, updated_at, metadata_json)
|
|
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
|
+
DROP TABLE IF EXISTS provider_state;
|
|
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(`
|
|
89
|
+
DROP TABLE IF EXISTS pending_connections_new;
|
|
90
|
+
CREATE TABLE pending_connections_new (
|
|
91
|
+
id TEXT PRIMARY KEY,
|
|
92
|
+
provider_id TEXT NOT NULL,
|
|
93
|
+
auth_json TEXT NOT NULL,
|
|
94
|
+
auth_type TEXT NOT NULL,
|
|
95
|
+
source TEXT NOT NULL,
|
|
96
|
+
captured_at INTEGER NOT NULL,
|
|
97
|
+
prompt_status TEXT NOT NULL
|
|
98
|
+
);
|
|
99
|
+
`);let n=e.query(`INSERT OR REPLACE INTO pending_connections_new (
|
|
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(`
|
|
102
|
+
DROP TABLE IF EXISTS pending_connections;
|
|
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(`
|
|
105
|
+
DROP TABLE IF EXISTS usage_snapshots_new;
|
|
106
|
+
CREATE TABLE usage_snapshots_new (
|
|
107
|
+
provider_id TEXT NOT NULL,
|
|
108
|
+
alias TEXT NOT NULL,
|
|
109
|
+
fetched_at INTEGER NOT NULL,
|
|
110
|
+
confidence TEXT NOT NULL,
|
|
111
|
+
normalized_json TEXT NOT NULL,
|
|
112
|
+
raw_redacted_json TEXT,
|
|
113
|
+
error TEXT,
|
|
114
|
+
PRIMARY KEY (provider_id, alias)
|
|
115
|
+
);
|
|
116
|
+
`);let n=e.query(`INSERT OR REPLACE INTO usage_snapshots_new (
|
|
117
|
+
provider_id, alias, fetched_at, confidence, normalized_json, raw_redacted_json, error
|
|
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
|
+
DROP TABLE IF EXISTS usage_snapshots;
|
|
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(`
|
|
122
|
+
DROP TABLE IF EXISTS events_new;
|
|
123
|
+
CREATE TABLE events_new (
|
|
124
|
+
id TEXT PRIMARY KEY,
|
|
125
|
+
type TEXT NOT NULL,
|
|
126
|
+
provider_id TEXT,
|
|
127
|
+
alias TEXT,
|
|
128
|
+
message TEXT NOT NULL,
|
|
129
|
+
created_at INTEGER NOT NULL,
|
|
130
|
+
metadata_json TEXT NOT NULL DEFAULT '{}'
|
|
131
|
+
);
|
|
132
|
+
`);let n=e.query(`INSERT OR REPLACE INTO events_new (id, type, provider_id, alias, message, created_at, metadata_json)
|
|
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
|
+
DROP TABLE IF EXISTS events;
|
|
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(`
|
|
137
|
+
DROP TABLE IF EXISTS provider_priority_new;
|
|
138
|
+
CREATE TABLE provider_priority_new (
|
|
139
|
+
provider_id TEXT PRIMARY KEY,
|
|
140
|
+
position INTEGER NOT NULL,
|
|
141
|
+
model_id TEXT,
|
|
142
|
+
enabled INTEGER NOT NULL DEFAULT 1,
|
|
143
|
+
updated_at INTEGER NOT NULL
|
|
144
|
+
);
|
|
145
|
+
`);let n=e.query(`INSERT OR REPLACE INTO provider_priority_new (provider_id, position, model_id, enabled, updated_at)
|
|
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
|
+
DROP TABLE IF EXISTS provider_priority;
|
|
148
|
+
ALTER TABLE provider_priority_new RENAME TO provider_priority;
|
|
149
|
+
`)}function Pn(e){let t=x(e,"settings",["key","value"]);e.exec(`
|
|
150
|
+
DROP TABLE IF EXISTS settings_new;
|
|
151
|
+
CREATE TABLE settings_new (
|
|
152
|
+
key TEXT PRIMARY KEY,
|
|
153
|
+
value TEXT NOT NULL
|
|
154
|
+
);
|
|
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
|
+
DROP TABLE IF EXISTS settings;
|
|
157
|
+
ALTER TABLE settings_new RENAME TO settings;
|
|
158
|
+
`)}function te(e){e.exec(`
|
|
159
|
+
CREATE TABLE IF NOT EXISTS schema_migrations (
|
|
160
|
+
version INTEGER PRIMARY KEY,
|
|
161
|
+
applied_at INTEGER NOT NULL
|
|
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
|
|
166
|
+
SET failures = failures + 1,
|
|
167
|
+
rate_limited_until = ?,
|
|
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(`
|
|
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};
|
|
172
|
+
|
|
173
|
+
//# debugId=A57A6095F8678F4764756E2164756E21
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,SAAS,MAAM,WAAW,CAAC;AAElC,eAAe,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC"}
|
|
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":"A57A6095F8678F4764756E2164756E21","names":[]}
|