@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.
Files changed (176) hide show
  1. package/INSTALL.txt +53 -25
  2. package/README.md +95 -51
  3. package/dist/core/accounts.ts +404 -0
  4. package/dist/core/database.ts +67 -0
  5. package/dist/core/events.ts +75 -0
  6. package/dist/core/native-auth-suppression.ts +36 -0
  7. package/dist/core/native-connect.ts +31 -0
  8. package/dist/core/path.ts +34 -0
  9. package/dist/core/pending.ts +351 -0
  10. package/dist/core/priority.ts +193 -0
  11. package/dist/core/schema.ts +439 -0
  12. package/dist/core/time.ts +3 -0
  13. package/dist/core/types.ts +72 -0
  14. package/dist/core/usage/index.ts +23 -0
  15. package/dist/core/usage/providers/copilot.ts +243 -0
  16. package/dist/core/usage/providers/openai.ts +179 -0
  17. package/dist/core/usage/redact.ts +80 -0
  18. package/dist/core/usage/store.ts +66 -0
  19. package/dist/core/usage/types.ts +24 -0
  20. package/dist/index.js +173 -4
  21. package/dist/index.js.map +1 -1
  22. package/dist/server/auth-watcher.ts +318 -0
  23. package/dist/server/commands.ts +58 -0
  24. package/dist/server/fetch-patch.ts +162 -0
  25. package/dist/server/index.ts +134 -0
  26. package/dist/server/native.ts +49 -0
  27. package/dist/server/request-balancer.ts +67 -0
  28. package/dist/tui/actions.ts +176 -112
  29. package/dist/tui/balancer-bar-sync.ts +55 -45
  30. package/dist/tui/components/alias-dialog.tsx +71 -56
  31. package/dist/tui/components/dashboard.tsx +530 -358
  32. package/dist/tui/components/priority-screen.tsx +389 -267
  33. package/dist/tui/components/provider-model-dialog.tsx +71 -64
  34. package/dist/tui/components/rename-dialog.tsx +35 -28
  35. package/dist/tui/components/sidebar.tsx +103 -79
  36. package/dist/tui/components/status-indicator.tsx +78 -59
  37. package/dist/tui/components/usage-bar.tsx +18 -7
  38. package/dist/tui/components/usage-display.tsx +32 -16
  39. package/dist/tui/connect.ts +104 -73
  40. package/dist/tui/dashboard-keys.ts +53 -41
  41. package/dist/tui/native-model-apply.ts +45 -36
  42. package/dist/tui/priority-keys.ts +44 -36
  43. package/dist/tui/provider-models.ts +32 -25
  44. package/dist/tui/responsive.ts +10 -7
  45. package/dist/tui/selected-account-bar-sync.ts +23 -23
  46. package/dist/tui/selection-colors.ts +38 -30
  47. package/dist/tui/state.ts +61 -44
  48. package/dist/tui/status-format.ts +24 -20
  49. package/dist/tui/tui.js +165 -153
  50. package/dist/tui/tui.js.map +1 -1
  51. package/dist/tui/tui.tsx +194 -144
  52. package/dist/tui/usage-auto-refresh.ts +52 -45
  53. package/dist/tui/usage-format.ts +9 -9
  54. package/package.json +61 -52
  55. package/dist/core/accounts.d.ts +0 -14
  56. package/dist/core/accounts.js +0 -260
  57. package/dist/core/accounts.js.map +0 -1
  58. package/dist/core/database.d.ts +0 -4
  59. package/dist/core/database.js +0 -69
  60. package/dist/core/database.js.map +0 -1
  61. package/dist/core/events.d.ts +0 -18
  62. package/dist/core/events.js +0 -39
  63. package/dist/core/events.js.map +0 -1
  64. package/dist/core/native-auth-suppression.d.ts +0 -3
  65. package/dist/core/native-auth-suppression.js +0 -19
  66. package/dist/core/native-auth-suppression.js.map +0 -1
  67. package/dist/core/native-connect.d.ts +0 -4
  68. package/dist/core/native-connect.js +0 -19
  69. package/dist/core/native-connect.js.map +0 -1
  70. package/dist/core/path.d.ts +0 -4
  71. package/dist/core/path.js +0 -26
  72. package/dist/core/path.js.map +0 -1
  73. package/dist/core/pending.d.ts +0 -9
  74. package/dist/core/pending.js +0 -237
  75. package/dist/core/pending.js.map +0 -1
  76. package/dist/core/priority.d.ts +0 -20
  77. package/dist/core/priority.js +0 -120
  78. package/dist/core/priority.js.map +0 -1
  79. package/dist/core/schema.d.ts +0 -2
  80. package/dist/core/schema.js +0 -265
  81. package/dist/core/schema.js.map +0 -1
  82. package/dist/core/time.d.ts +0 -1
  83. package/dist/core/time.js +0 -4
  84. package/dist/core/time.js.map +0 -1
  85. package/dist/core/types.d.ts +0 -59
  86. package/dist/core/types.js +0 -2
  87. package/dist/core/types.js.map +0 -1
  88. package/dist/core/usage/index.d.ts +0 -4
  89. package/dist/core/usage/index.js +0 -16
  90. package/dist/core/usage/index.js.map +0 -1
  91. package/dist/core/usage/providers/copilot.d.ts +0 -2
  92. package/dist/core/usage/providers/copilot.js +0 -169
  93. package/dist/core/usage/providers/copilot.js.map +0 -1
  94. package/dist/core/usage/providers/openai.d.ts +0 -2
  95. package/dist/core/usage/providers/openai.js +0 -133
  96. package/dist/core/usage/providers/openai.js.map +0 -1
  97. package/dist/core/usage/redact.d.ts +0 -3
  98. package/dist/core/usage/redact.js +0 -67
  99. package/dist/core/usage/redact.js.map +0 -1
  100. package/dist/core/usage/store.d.ts +0 -4
  101. package/dist/core/usage/store.js +0 -31
  102. package/dist/core/usage/store.js.map +0 -1
  103. package/dist/core/usage/types.d.ts +0 -21
  104. package/dist/core/usage/types.js +0 -2
  105. package/dist/core/usage/types.js.map +0 -1
  106. package/dist/index.d.ts +0 -5
  107. package/dist/server/auth-watcher.d.ts +0 -32
  108. package/dist/server/auth-watcher.js +0 -227
  109. package/dist/server/auth-watcher.js.map +0 -1
  110. package/dist/server/commands.d.ts +0 -2
  111. package/dist/server/commands.js +0 -46
  112. package/dist/server/commands.js.map +0 -1
  113. package/dist/server/fetch-patch.d.ts +0 -3
  114. package/dist/server/fetch-patch.js +0 -118
  115. package/dist/server/fetch-patch.js.map +0 -1
  116. package/dist/server/index.d.ts +0 -8
  117. package/dist/server/index.js +0 -94
  118. package/dist/server/index.js.map +0 -1
  119. package/dist/server/native.d.ts +0 -6
  120. package/dist/server/native.js +0 -35
  121. package/dist/server/native.js.map +0 -1
  122. package/dist/server/request-balancer.d.ts +0 -16
  123. package/dist/server/request-balancer.js +0 -43
  124. package/dist/server/request-balancer.js.map +0 -1
  125. package/dist/tui/actions.d.ts +0 -41
  126. package/dist/tui/actions.js +0 -92
  127. package/dist/tui/actions.js.map +0 -1
  128. package/dist/tui/balancer-bar-sync.d.ts +0 -19
  129. package/dist/tui/balancer-bar-sync.js +0 -45
  130. package/dist/tui/balancer-bar-sync.js.map +0 -1
  131. package/dist/tui/components/alias-dialog.d.ts +0 -4
  132. package/dist/tui/components/dashboard.d.ts +0 -12
  133. package/dist/tui/components/priority-screen.d.ts +0 -9
  134. package/dist/tui/components/provider-model-dialog.d.ts +0 -14
  135. package/dist/tui/components/rename-dialog.d.ts +0 -4
  136. package/dist/tui/components/sidebar.d.ts +0 -10
  137. package/dist/tui/components/status-indicator.d.ts +0 -9
  138. package/dist/tui/components/usage-bar.d.ts +0 -8
  139. package/dist/tui/components/usage-display.d.ts +0 -10
  140. package/dist/tui/connect.d.ts +0 -30
  141. package/dist/tui/connect.js +0 -75
  142. package/dist/tui/connect.js.map +0 -1
  143. package/dist/tui/dashboard-keys.d.ts +0 -45
  144. package/dist/tui/dashboard-keys.js +0 -44
  145. package/dist/tui/dashboard-keys.js.map +0 -1
  146. package/dist/tui/native-model-apply.d.ts +0 -21
  147. package/dist/tui/native-model-apply.js +0 -53
  148. package/dist/tui/native-model-apply.js.map +0 -1
  149. package/dist/tui/priority-keys.d.ts +0 -40
  150. package/dist/tui/priority-keys.js +0 -38
  151. package/dist/tui/priority-keys.js.map +0 -1
  152. package/dist/tui/provider-models.d.ts +0 -19
  153. package/dist/tui/provider-models.js +0 -17
  154. package/dist/tui/provider-models.js.map +0 -1
  155. package/dist/tui/responsive.d.ts +0 -9
  156. package/dist/tui/responsive.js +0 -13
  157. package/dist/tui/responsive.js.map +0 -1
  158. package/dist/tui/selected-account-bar-sync.d.ts +0 -10
  159. package/dist/tui/selected-account-bar-sync.js +0 -26
  160. package/dist/tui/selected-account-bar-sync.js.map +0 -1
  161. package/dist/tui/selection-colors.d.ts +0 -10
  162. package/dist/tui/selection-colors.js +0 -38
  163. package/dist/tui/selection-colors.js.map +0 -1
  164. package/dist/tui/state.d.ts +0 -14
  165. package/dist/tui/state.js +0 -46
  166. package/dist/tui/state.js.map +0 -1
  167. package/dist/tui/status-format.d.ts +0 -15
  168. package/dist/tui/status-format.js +0 -17
  169. package/dist/tui/status-format.js.map +0 -1
  170. package/dist/tui/tui.d.ts +0 -7
  171. package/dist/tui/usage-auto-refresh.d.ts +0 -16
  172. package/dist/tui/usage-auto-refresh.js +0 -46
  173. package/dist/tui/usage-auto-refresh.js.map +0 -1
  174. package/dist/tui/usage-format.d.ts +0 -2
  175. package/dist/tui/usage-format.js +0 -17
  176. package/dist/tui/usage-format.js.map +0 -1
package/dist/tui/tui.js CHANGED
@@ -1,153 +1,165 @@
1
- /** @jsxImportSource @opentui/solid */
2
- import { createComponent } from "solid-js";
3
- import { getSelectedAccount, getSelectedModel } from "../core/accounts";
4
- import { getBalancingEnabled, setProviderModel } from "../core/priority";
5
- import { activateAccount, removeAccountFromTui } from "./actions";
6
- import { createTuiBalancerBarSync } from "./balancer-bar-sync";
7
- import { openNativeConnect } from "./connect";
8
- import { createNativeModelApplier } from "./native-model-apply";
9
- import { providerModelOptions } from "./provider-models";
10
- import { createSelectedAccountBarSync } from "./selected-account-bar-sync";
11
- import { createBalancerTuiState } from "./state";
12
- import { createUsageAutoRefresh } from "./usage-auto-refresh";
13
- function inferProviderID(session) {
14
- const providerID = session?.model?.providerID;
15
- return typeof providerID === "string" && providerID.length > 0 ? providerID : undefined;
16
- }
17
- function copyRoute(route) {
18
- return "params" in route && route.params
19
- ? { name: route.name, params: { ...route.params } }
20
- : { name: route.name };
21
- }
22
- const tui = async (api) => {
23
- await import("@opentui/solid/runtime-plugin" + "-support");
24
- const [dashboardModule, priorityScreenModule, providerModelDialogModule, renameDialogModule, sidebarModule, statusIndicatorModule] = await Promise.all([
25
- import("./components/dashboard" + ".tsx"),
26
- import("./components/priority-screen" + ".tsx"),
27
- import("./components/provider-model-dialog" + ".tsx"),
28
- import("./components/rename-dialog" + ".tsx"),
29
- import("./components/sidebar" + ".tsx"),
30
- import("./components/status-indicator" + ".tsx"),
31
- ]);
32
- const state = createBalancerTuiState();
33
- const usageAutoRefresh = createUsageAutoRefresh(api, state);
34
- const balancerBarSync = createTuiBalancerBarSync(api, state);
35
- const nativeModelApplier = createNativeModelApplier(api);
36
- let dashboardReturnRoute;
37
- let nativeProviderID;
38
- let sessionProviderID;
39
- const applyNativeProviderModel = async (providerID) => {
40
- const modelOptions = providerModelOptions(api.state.provider, providerID);
41
- const selected = getSelectedModel(state.db, providerID);
42
- const option = modelOptions.find((item) => item.modelID === selected?.modelID) ?? modelOptions[0];
43
- if (!option)
44
- return false;
45
- return nativeModelApplier({ providerID: option.providerID, modelID: option.modelID }, option.title);
46
- };
47
- const applyNativeProviderModelAndTrack = async (providerID) => {
48
- const applied = await applyNativeProviderModel(providerID);
49
- if (applied)
50
- nativeProviderID = providerID;
51
- return applied;
52
- };
53
- const selectedAccountBarSync = createSelectedAccountBarSync({
54
- dialogOpen: () => api.ui.dialog.open,
55
- selectedProvider: () => (getBalancingEnabled(state.db) ? undefined : getSelectedAccount(state.db)?.providerID),
56
- currentProvider: () => nativeProviderID ?? sessionProviderID,
57
- applyProvider: applyNativeProviderModelAndTrack,
58
- });
59
- api.lifecycle.onDispose(() => {
60
- usageAutoRefresh.dispose();
61
- state.dispose();
62
- });
63
- const openDashboard = () => {
64
- if (api.route.current.name !== "balancer.dashboard")
65
- dashboardReturnRoute = copyRoute(api.route.current);
66
- api.route.navigate("balancer.dashboard");
67
- };
68
- const openPriority = () => {
69
- api.route.navigate("balancer.priority");
70
- };
71
- const backFromDashboard = () => {
72
- const route = dashboardReturnRoute;
73
- dashboardReturnRoute = undefined;
74
- if (route)
75
- api.route.navigate(route.name, "params" in route ? route.params : undefined);
76
- else
77
- api.route.navigate("home");
78
- };
79
- const unregisterDashboard = api.route.register([
80
- {
81
- name: "balancer.dashboard",
82
- render: () => createComponent(dashboardModule.Dashboard, {
83
- api,
84
- state,
85
- onBack: backFromDashboard,
86
- openPriority,
87
- openConnect: () => openNativeConnect({ ...api, db: state.db }),
88
- renameAccount: (providerID, alias) => renameDialogModule.openRenameDialog(api, state, providerID, alias),
89
- removeAccount: (providerID, alias) => removeAccountFromTui(api, state, providerID, alias),
90
- }),
91
- },
92
- {
93
- name: "balancer.priority",
94
- render: () => createComponent(priorityScreenModule.PriorityScreen, {
95
- api,
96
- state,
97
- onBack: () => api.route.navigate("balancer.dashboard"),
98
- openModelPicker: (providerID, onComplete) => providerModelDialogModule.openProviderModelDialog(api, state, providerID, {
99
- applyNativeSelection: false,
100
- onSelected: (model) => setProviderModel(state.db, model.providerID, model.modelID),
101
- onComplete,
102
- }),
103
- }),
104
- },
105
- ]);
106
- api.lifecycle.onDispose(unregisterDashboard);
107
- const unregisterKeymap = api.keymap.registerLayer({
108
- commands: [
109
- {
110
- name: "balancer.dashboard.open",
111
- title: "Open Balancer Dashboard",
112
- category: "Plugin",
113
- namespace: "palette",
114
- slashName: "balancer",
115
- run() {
116
- openDashboard();
117
- },
118
- },
119
- ],
120
- bindings: [{ key: "ctrl+b", cmd: "balancer.dashboard.open" }],
121
- });
122
- api.lifecycle.onDispose(unregisterKeymap);
123
- api.slots.register({
124
- slots: {
125
- session_prompt_right(_ctx, value) {
126
- sessionProviderID = inferProviderID(api.state.session.get(value.session_id));
127
- void usageAutoRefresh.refreshForPrompt();
128
- void selectedAccountBarSync.maybeSync();
129
- void balancerBarSync.maybeSync();
130
- return createComponent(statusIndicatorModule.BalancerStatusIndicator, {
131
- api,
132
- state,
133
- providerID: () => inferProviderID(api.state.session.get(value.session_id)),
134
- });
135
- },
136
- sidebar_content(_ctx, value) {
137
- return createComponent(sidebarModule.BalancerSidebar, {
138
- api,
139
- state,
140
- openDashboard,
141
- activateAccount: (providerID, alias) => {
142
- return activateAccount(api, state, providerID, alias, {
143
- sessionProviderID: nativeProviderID ?? inferProviderID(api.state.session.get(value.session_id)),
144
- applyNativeProviderModel: applyNativeProviderModelAndTrack,
145
- });
146
- },
147
- });
148
- },
149
- },
150
- });
151
- };
152
- export default { id: "opencode-balancer", tui };
153
- //# sourceMappingURL=tui.js.map
1
+ // @bun
2
+ var S=import.meta.require;import{createComponent as z}from"solid-js";function c(){return Date.now()}var Ke=["api","oauth","wellknown"];function q(e){return e.trim().toLowerCase().replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")}function j(e){return`${e.provider_id}/${e.alias}`}function ne(e){return Ke.includes(e)}function Xe(e){let t=j(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(!ne(n.type))throw Error(`Invalid account row for ${t}: auth_json type ${n.type} is invalid`);return n}function Ze(e){if(!ne(e.auth_type))throw Error(`Invalid account row for ${j(e)}: auth_type ${e.auth_type} is invalid`);return e.auth_type}function et(e){if(e.disabled!==0&&e.disabled!==1)throw Error(`Invalid account row for ${j(e)}: disabled ${e.disabled} is invalid`);return Boolean(e.disabled)}function re(e){let t=Xe(e),n=Ze(e);if(t.type!==n)throw Error(`Invalid account row for ${j(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:et(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 ie(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 tt(e){if(!e)return{};try{let t=JSON.parse(e);return t&&typeof t==="object"&&!Array.isArray(t)?t:{}}catch{return{}}}function V(e,t,n,r){let i=q(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),ie(e,t,i);let s=w(e,t,i);if(!s)throw Error(`Account not found: ${t}/${i}`);return s})()}function w(e,t,n){let r=q(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?re(i):void 0}function g(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(re)}function oe(e,t,n){let r=q(n),i=w(e,t,r);if(!i)throw Error(`Account not found: ${t}/${r}`);return ie(e,t,r),i}function ae(e,t,n){let r=q(n);return e.transaction(()=>{if(!w(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 T(e,t){let n=e.query("SELECT active_alias FROM provider_state WHERE provider_id = ?").get(t);if(!n?.active_alias)return;return w(e,t,n.active_alias)}function M(e){let t=e.query("SELECT value FROM settings WHERE key = 'selected_provider_id'").get();if(t?.value){let r=T(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 w(e,n.provider_id,n.active_alias)}function se(e,t){let n=e.query("SELECT metadata_json FROM provider_state WHERE provider_id = ?").get(t),r=tt(n?.metadata_json).selected_model_id;if(typeof r!=="string"||r.length===0)return;return{modelID:r,providerID:t}}function ue(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 nt(e){return[...new Set(g(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 it(e,t,n){let r=ue(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 ot(e){let t=ue(e);return nt(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 ce(e,t,n){it(e,t,{modelID:n})}function L(e){return e.query("SELECT value FROM settings WHERE key = ?").get("balancing_enabled")?.value==="1"}function at(e,t,n){let r=g(e,t).filter((o)=>!o.disabled&&(!o.rateLimitedUntil||o.rateLimitedUntil<=n));if(r.length===0)return;let i=T(e,t);if(i&&r.some((o)=>o.alias===i.alias))return i;return r[0]}function de(e,t=c(),n){let r=ot(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=at(e,o.providerID,t);if(!a)continue;return{account:a,modelID:o.modelID,providerID:o.providerID}}return}function Q(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 pe(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 st(e){return`native_auth_suppressed_until:${e}`}function B(e,t,n=1e4){e.query(`INSERT INTO settings (key, value) VALUES (?, ?)
41
+ ON CONFLICT(key) DO UPDATE SET value = excluded.value`).run(st(t),String(c()+n))}var ut=["auth-file","http","oauth-callback"],ct=["new","prompted","dismissed"],dt=["api","oauth","wellknown"];function le(e){return dt.includes(e)}function pt(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(!le(t.type))throw Error(`Invalid pending connection row ${e.id}: auth_json type ${t.type} is invalid`);return t}function lt(e){if(!le(e.auth_type))throw Error(`Invalid pending connection row ${e.id}: auth_type ${e.auth_type} is invalid`);return e.auth_type}function ft(e){if(!ut.includes(e.source))throw Error(`Invalid pending connection row ${e.id}: source ${e.source} is invalid`);return e.source}function gt(e){if(!ct.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=pt(e),n=lt(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:gt(e),providerID:e.provider_id,source:ft(e)}}function fe(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(mt)}function ge(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 yt(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).filter(Boolean)}function ht(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=yt(e);return["token","key","secret","password"].some((i)=>t===i||r.includes(i))}function v(e,t){return K(e,ge(t))}function H(e,t){return Y(e,ge(t))}function Y(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 K(e,t){if(typeof e==="string")return Y(e,t);if(!e||typeof e!=="object")return e;if(Array.isArray(e))return e.map((r)=>K(r,t));let n={};for(let[r,i]of Object.entries(e))n[Y(r,t)]=ht(r)?"[redacted]":K(i,t);return n}function b(e,t,n){return{alias:e.alias,confidence:"unavailable",fetchedAt:Date.now(),message:t,providerID:e.providerID,...n?{error:H(n,e)}:{}}}function ye(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 W(e,t){let n=await fetch(e,{headers:ye(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 me(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 F(e,t){let n=e;for(let r of t)n=n?.[r];return typeof n==="number"&&Number.isFinite(n)?n:void 0}function At(e){let t=e?.quota_snapshots,n=t?.premium_interactions??t?.premium_models??t?.chat,r=F(n,["entitlement"]),i=F(n,["remaining"])??F(n,["quota_remaining"]),o=F(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 vt(e){let t=await W("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=At(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:v(t.body,e)}}}async function _t(e){let t=await vt(e);if(t.ok)return t.snapshot;let n=await W("https://api.github.com/user",e);if(!n.ok)return b(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 b(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 W(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:v(o.body,e),usedTokens:me(o.body)};let a=`https://api.github.com/users/${encodeURIComponent(r)}/settings/billing/usage/summary?product=copilot`,s=await W(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:v(s.body,e),usedTokens:me(s.body)};return b(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 he={providerID:"github-copilot",async refreshUsage(e){let t=e.auth.metadata?.githubOrg;if(e.auth.type!=="oauth")return b(e,"GitHub Copilot usage requires OAuth auth.");if(!t)return _t(e);try{let n=await fetch(`https://api.github.com/orgs/${encodeURIComponent(t)}/copilot/billing`,{headers:ye(e)});if(!n.ok)return b(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:v(r,e)}}catch(n){return b(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 N(e,t,n){return{alias:e.alias,confidence:"unavailable",fetchedAt:Date.now(),message:t,providerID:e.providerID,...n?{error:H(n,e)}:{}}}function C(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}function Ae(e){return typeof e==="number"&&Number.isFinite(e)?e:void 0}function Et(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 C(i)?i:void 0}catch{return}}function Dt(e){if(e.auth.type!=="oauth")return;if(e.auth.accountId)return e.auth.accountId;let n=Et(e.auth.access)?.["https://api.openai.com/auth"];if(!C(n))return;let r=n.chatgpt_account_id;return typeof r==="string"&&r.trim()?r:void 0}function St(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 wt(e){let t=Ae(e);if(t===void 0||t<0)return;return t>1000000000000?t:t*1000}async function It(e){if(e.auth.type!=="oauth")return N(e,"OpenAI ChatGPT usage requires OAuth auth.");try{let t={Authorization:`Bearer ${e.auth.access}`,"User-Agent":"opencode-balancer/0.1.3"},n=Dt(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 N(e,`OpenAI ChatGPT usage request failed with HTTP ${r.status}.`);let i=await r.json(),o=C(i)&&C(i.rate_limit)?i.rate_limit:void 0,a=o&&C(o.primary_window)?o.primary_window:void 0;return{alias:e.alias,confidence:"exact",fetchedAt:Date.now(),message:"OpenAI ChatGPT usage fetched.",planName:C(i)?St(i.plan_type):void 0,providerID:e.providerID,rawRedacted:v(i,e),resetAt:a?wt(a.reset_at):void 0,usedPercent:a?Ae(a.used_percent):void 0}}catch(t){return N(e,"OpenAI ChatGPT usage request failed; exact usage is unavailable.",t instanceof Error?t.message:String(t))}}var ve={providerID:"openai",async refreshUsage(e){if(e.auth.type!=="api")return It(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 N(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:v(r,e)}}catch(n){return N(e,"OpenAI usage request failed; exact usage is unavailable.",n instanceof Error?n.message:String(n))}},supports(e){return e==="openai"}};var kt=[ve,he];async function _e(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 Ee(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 De(e,t,n,r,i={}){let o=M(t.db)?.providerID,a=oe(t.db,n,r)??T(t.db,n);if(a)try{B(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 Se(e,t,n,r,i={}){let o=w(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??_e)(o);if(Ee(t.db,a),Q(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 we(e,t,n,r){if(!ae(t.db,n,r)){e.ui.toast({message:`Account not found: ${n}/${r}`,variant:"error"});return}let o=`Removed account ${n}/${r}.`;Q(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 Rt(e){let t=e.renderer?.stdin;return t&&typeof t.emit==="function"?t:void 0}function Pt(e,t){let n=Rt(e);if(!n)return!1;return n.emit("data",Buffer.from(t)),!0}async function Tt(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 G(e){return(t,n)=>Tt({dispatchCommand:(r)=>e.keymap.dispatchCommand(r),feed:(r)=>Pt(e,r),isDialogOpen:()=>e.ui.dialog.open,wait:(r)=>new Promise((i)=>setTimeout(i,r))},n)}function bt(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 Ie(e,t){return bt({activeSelection:()=>de(t.db),apply:G(e),balancingEnabled:()=>L(t.db),dialogOpen:()=>e.ui.dialog.open,modelTitle:(n,r)=>{return e.state.provider.find((o)=>o.id===n)?.models?.[r]?.name}})}var X="native_connect_until";function ke(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 Re(e){let t=e.query("SELECT value FROM settings WHERE key = ?").get(X),n=Number(t?.value??0);if(Number.isFinite(n)&&n>c())return!0;if(t)e.query("DELETE FROM settings WHERE key = ?").run(X);return!1}function Pe(e){e.query("DELETE FROM settings WHERE key = ?").run(X)}import{existsSync as jt,readFileSync as Mt}from"fs";function I(...e){return e.filter(Boolean).join("/").replace(/\/+/g,"/")}function Te(){return Bun.env.HOME||"/"}function Ct(){return Bun.env.XDG_CONFIG_HOME||I(Te(),".config")}function Ot(){return Bun.env.XDG_DATA_HOME||I(Te(),".local","share")}function Nt(){let e=Bun.env.OPENCODE_CONFIG_DIR;return e?I(e):I(Ct(),"opencode")}function xt(){return I(Ot(),"opencode")}function be(){return I(Nt(),"balancer.sqlite")}function Ce(){return I(xt(),"auth.json")}var Ut=new Map;function $t(e,t=2000){Ut.set(e,c()+t)}async function rr(e,t,n,r){if(r&&Re(r))return;if($t(t),r)B(r,t);try{await e.auth.set({body:n,path:{id:t}})}catch{}}async function qt(e,t,n="info"){try{await e.tui.showToast({body:{duration:15000,message:t,variant:n}})}catch{}}function x(e){return Boolean(e)&&typeof e==="object"&&!Array.isArray(e)}function Lt(e){if(e===void 0)return{metadata:void 0,ok:!0};if(!x(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 Z(e,t){let n=Lt(t);if(!n.ok)return;if(n.metadata)e.metadata=n.metadata;return e}function Bt(e){if(!x(e)||typeof e.type!=="string")return;if(e.type==="api"&&typeof e.key==="string")return Z({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 Z(t,e.metadata)}if(e.type==="wellknown"&&typeof e.key==="string"&&typeof e.token==="string")return Z({key:e.key,token:e.token,type:"wellknown"},e.metadata);return}function Oe(e){let t;try{t=JSON.parse(e)}catch{return{ok:!1}}if(!x(t))return{ok:!1};let n={};for(let[r,i]of Object.entries(t)){let o=Bt(i);if(!o)return{ok:!1};n[r]=o}return{auth:n,ok:!0}}function xe(){let e=Bun.env.OPENCODE_AUTH_CONTENT;if(e!==void 0)return Oe(e);let t=Ce();if(!jt(t))return{auth:{},ok:!0};try{return Oe(Mt(t,"utf8"))}catch{return{ok:!1}}}function Ht(e){let t=e.split(".")[1];if(!t)return;try{let n=JSON.parse(Buffer.from(t,"base64url").toString("utf8"));return x(n)?n:void 0}catch{return}}function Ne(e){if(e.accountId)return e.accountId;let t=Ht(e.access)?.["https://api.openai.com/auth"];if(!x(t))return;let n=t.chatgpt_account_id;return typeof n==="string"&&n.length>0?n:void 0}function Ue(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=Ne(e),r=Ne(t);if(n&&r)return n===r;return e.refresh===t.refresh}return!1}var $e="abcdefghijklmnopqrstuvwxyz0123456789";function Ft(){let e="";for(let t=0;t<5;t++)e+=$e[Math.floor(Math.random()*$e.length)];return e}function qe(e){return JSON.stringify(e??null)}function Wt(e,t){return Object.entries(t).find(([n,r])=>qe(e[n])!==qe(r))}function Gt(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 Jt(e,t,n){let r=Date.now();while(!0){let i=e();if(t.ok&&i.ok){let o=Wt(t.auth,i.auth);if(o)return o}if(Date.now()-r>=n.maxWaitMs)return;await n.wait(n.pollIntervalMs)}}async function je(e){if(e.keymap?.dispatchCommand){let t=e.readAuth??xe,n=t();if(e.db)ke(e.db);if(await e.keymap.dispatchCommand("provider.connect"),e.db)try{let r=await Jt(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=g(e.db,i).find((f)=>Ue(f.auth,o))?.alias??Gt(e.db,i,e.generateAlias??Ft),m=V(e.db,i,s,o);e.ui?.toast?.({message:`Saved ${m.providerID}/${m.alias}.`,variant:"success"})}}finally{Pe(e.db)}return}e.ui?.toast?.({message:"Native provider connect is unavailable in this opencode build.",variant:"error"})}function Me(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 Le(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 J,onCleanup as pn}from"solid-js";import{Database as zt}from"bun:sqlite";import{chmodSync as Vt,mkdirSync as Qt}from"fs";import{dirname as Yt}from"path";var U=new Map;function Kt(e){return e.code==="ENOENT"}function Be(e){return e instanceof Error&&/closed/i.test(e.message)}function Xt(e){try{return e.exec("SELECT 1;"),!0}catch(t){if(Be(t))return!1;throw t}}function Zt(e){for(let t of[e,`${e}-wal`,`${e}-shm`])try{Vt(t,384)}catch(n){if(!Kt(n))throw n}}function He(e){let t=U.get(e);if(t){if(Xt(t))return t;U.delete(e)}Qt(Yt(e),{recursive:!0});let n=new zt(e);try{return n.exec("PRAGMA journal_mode = WAL; PRAGMA foreign_keys = ON;"),Zt(e),U.set(e,n),n}catch(r){try{n.close()}catch{}throw r}}function Fe(e){let t=U.get(e);if(!t)return;U.delete(e);try{t.close()}catch(n){if(!Be(n))throw n}}var ee=new Set(["api","oauth","wellknown"]);function en(e,t){let n=e.query("SELECT version FROM schema_migrations WHERE version = ?").get(t);return Boolean(n)}function tn(e,t){let n=e.query("SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?").get(t);return Boolean(n)}function nn(e,t){if(!tn(e,t))return new Set;return new Set(e.query(`PRAGMA table_info(${t})`).all().map((n)=>n.name))}function We(e){try{let t=JSON.parse(e);if(typeof t.type==="string"&&ee.has(t.type))return t.type}catch{}return"api"}function k(e,t,n){let r=nn(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=k(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"&&ee.has(r.auth_type)?r.auth_type:We(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 on(e){let t=k(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 an(e){let t=k(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"&&ee.has(r.auth_type)?r.auth_type:We(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 sn(e){let t=k(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 un(e){let t=k(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 cn(e){let t=k(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 dn(e){let t=k(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 Ge(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),on(e),an(e),sn(e),un(e),cn(e),dn(e),!en(e,1))e.query("INSERT INTO schema_migrations (version, applied_at) VALUES (?, ?)").run(1,Date.now())})()}function Je(){let e=be(),t=He(e);Ge(t);let[n,r]=J(0),[i,o]=J([]),[a,s]=J([]),[m,f]=J([]),_=()=>{o(g(t)),s(fe(t)),f(pe(t,10)),r((E)=>E+1)},y=(E,A)=>{o((D)=>D.filter(($)=>$.providerID!==E||$.alias!==A)),r((D)=>D+1)},l=(E)=>{s((A)=>A.filter((D)=>D.id!==E)),r((A)=>A+1)},p,h=!1,O=()=>{if(h)return;if(h=!0,p)clearInterval(p);p=void 0,Fe(e)};return _(),p=setInterval(_,1000),pn(O),{accounts:i,db:t,dispose:O,events:m,pending:a,refresh:_,removeAccountView:y,removePendingView:l,version:n}}function ze(e,t,n={}){let r=n.intervalMs??60000,i=n.promptDebounceMs??30000,o=n.now??Date.now,a=new Set,s=0,m=async(l,p)=>{let h=`${l}/${p}`;if(a.has(h))return;a.add(h);try{await Se(e,t,l,p,{refreshUsage:n.refreshUsage,silent:!0})}finally{a.delete(h)}},f=async()=>{let l=g(t.db).filter((p)=>!p.disabled);await Promise.all(l.map((p)=>m(p.providerID,p.alias)))},_=async()=>{let l=o();if(l-s<i)return;s=l,await f()},y=r>0?setInterval(()=>void f(),r):void 0;return f(),{dispose(){if(y)clearInterval(y)},refreshForPrompt:_,refreshNow:f}}function te(e){let t=e?.model?.providerID;return typeof t==="string"&&t.length>0?t:void 0}function ln(e){return"params"in e&&e.params?{name:e.name,params:{...e.params}}:{name:e.name}}var fn=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=Je(),m=ze(e,s),f=Ie(e,s),_=G(e),y,l,p,h=async(u)=>{let d=Me(e.state.provider,u),R=se(s.db,u),P=d.find((Ye)=>Ye.modelID===R?.modelID)??d[0];if(!P)return!1;return _({modelID:P.modelID,providerID:P.providerID},P.title)},O=async(u)=>{let d=await h(u);if(d)l=u;return d},E=Le({applyProvider:O,currentProvider:()=>l??p,dialogOpen:()=>e.ui.dialog.open,selectedProvider:()=>L(s.db)?void 0:M(s.db)?.providerID});e.lifecycle.onDispose(()=>{m.dispose(),s.dispose()});let A=()=>{if(e.route.current.name!=="balancer.dashboard")y=ln(e.route.current);e.route.navigate("balancer.dashboard")},D=()=>{e.route.navigate("balancer.priority")},$=()=>{let u=y;if(y=void 0,u)e.route.navigate(u.name,"params"in u?u.params:void 0);else e.route.navigate("home")},Ve=e.route.register([{name:"balancer.dashboard",render:()=>z(t.Dashboard,{api:e,onBack:$,openConnect:()=>je({...e,db:s.db}),openPriority:D,removeAccount:(u,d)=>we(e,s,u,d),renameAccount:(u,d)=>i.openRenameDialog(e,s,u,d),state:s})},{name:"balancer.priority",render:()=>z(n.PriorityScreen,{api:e,onBack:()=>e.route.navigate("balancer.dashboard"),openModelPicker:(u,d)=>r.openProviderModelDialog(e,s,u,{applyNativeSelection:!1,onComplete:d,onSelected:(R)=>ce(s.db,R.providerID,R.modelID)}),state:s})}]);e.lifecycle.onDispose(Ve);let Qe=e.keymap.registerLayer({bindings:[{cmd:"balancer.dashboard.open",key:"ctrl+b"}],commands:[{category:"Plugin",name:"balancer.dashboard.open",namespace:"palette",run(){A()},slashName:"balancer",title:"Open Balancer Dashboard"}]});e.lifecycle.onDispose(Qe),e.slots.register({slots:{session_prompt_right(u,d){return p=te(e.state.session.get(d.session_id)),m.refreshForPrompt(),E.maybeSync(),f.maybeSync(),z(a.BalancerStatusIndicator,{api:e,providerID:()=>te(e.state.session.get(d.session_id)),state:s})},sidebar_content(u,d){return z(o.BalancerSidebar,{activateAccount:(R,P)=>{return De(e,s,R,P,{applyNativeProviderModel:O,sessionProviderID:l??te(e.state.session.get(d.session_id))})},api:e,openDashboard:A,state:s})}}})},Qr={id:"opencode-balancer",tui:fn};export{Qr as default};
164
+
165
+ //# debugId=2BF736048BEC9EFD64756E2164756E21
@@ -1 +1 @@
1
- {"version":3,"file":"tui.js","sourceRoot":"","sources":["../../src/tui/tui.tsx"],"names":[],"mappings":"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"}
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"],"mappings":"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","debugId":"2BF736048BEC9EFD64756E2164756E21","names":[]}